@sapui5/sap.fe.templates 1.101.0 → 1.103.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 (136) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +2 -2
  4. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.ts +1 -1
  5. package/src/sap/fe/templates/Feedback.js +18 -18
  6. package/src/sap/fe/templates/Feedback.ts +12 -12
  7. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +15 -15
  8. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +19 -16
  9. package/src/sap/fe/templates/ListReport/ListReport.view.xml +107 -58
  10. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +180 -70
  11. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +191 -88
  12. package/src/sap/fe/templates/ListReport/ListReportTemplating.js +45 -0
  13. package/src/sap/fe/templates/ListReport/ListReportTemplating.ts +30 -0
  14. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +1 -1
  15. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +2 -2
  16. package/src/sap/fe/templates/ListReport/overrides/Share.js +9 -7
  17. package/src/sap/fe/templates/ListReport/overrides/Share.ts +10 -10
  18. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +13 -6
  19. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +17 -11
  20. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +1 -1
  21. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +1 -1
  22. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +12 -16
  23. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +17 -20
  24. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +167 -20
  25. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +195 -206
  26. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +187 -229
  27. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +861 -0
  28. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +822 -0
  29. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +2 -3
  30. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.ts +4 -4
  31. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
  32. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.ts +1 -1
  33. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
  34. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.ts +1 -1
  35. package/src/sap/fe/templates/ObjectPage/handler/DraftHandler.js +103 -0
  36. package/src/sap/fe/templates/ObjectPage/handler/DraftHandler.ts +97 -0
  37. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
  38. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +5 -5
  39. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
  40. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.ts +2 -2
  41. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
  42. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +2 -2
  43. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
  44. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.ts +1 -1
  45. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +17 -17
  46. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +19 -30
  47. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +2 -2
  48. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +4 -4
  49. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +15 -11
  50. package/src/sap/fe/templates/ObjectPage/view/fragments/CollaborationDraft.fragment.xml +1 -2
  51. package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +25 -17
  52. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +28 -24
  53. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActionButtons.fragment.xml +15 -16
  54. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActions.fragment.xml +1 -5
  55. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +1 -2
  56. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +1 -3
  57. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +3 -17
  58. package/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +16 -17
  59. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +4 -3
  60. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderAddress.fragment.xml +7 -2
  61. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +26 -0
  62. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +4 -4
  63. package/src/sap/fe/templates/ObjectPage/view/fragments/RelatedApps.fragment.xml +7 -4
  64. package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +74 -6
  65. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +118 -94
  66. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContentLazyLoader.fragment.xml +127 -107
  67. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +1 -0
  68. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +1 -0
  69. package/src/sap/fe/templates/ObjectPage/view/fragments/SwitchDraftAndActiveObjectPopOver.fragment.xml +2 -2
  70. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +102 -57
  71. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +96 -61
  72. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +3 -4
  73. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.ts +4 -5
  74. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +140 -52
  75. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +108 -54
  76. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +1 -1
  77. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.ts +3 -3
  78. package/src/sap/fe/templates/TableScroller.js +3 -3
  79. package/src/sap/fe/templates/TableScroller.ts +2 -2
  80. package/src/sap/fe/templates/controls/MacroChart.fragment.xml +1 -0
  81. package/src/sap/fe/templates/controls/Table.fragment.xml +4 -4
  82. package/src/sap/fe/templates/library.js +5 -2
  83. package/src/sap/fe/templates/library.ts +3 -0
  84. package/src/sap/fe/templates/messagebundle.properties +6 -18
  85. package/src/sap/fe/templates/messagebundle_ar.properties +10 -6
  86. package/src/sap/fe/templates/messagebundle_bg.properties +6 -2
  87. package/src/sap/fe/templates/messagebundle_ca.properties +10 -6
  88. package/src/sap/fe/templates/messagebundle_cs.properties +6 -2
  89. package/src/sap/fe/templates/messagebundle_cy.properties +10 -6
  90. package/src/sap/fe/templates/messagebundle_da.properties +10 -6
  91. package/src/sap/fe/templates/messagebundle_de.properties +10 -6
  92. package/src/sap/fe/templates/messagebundle_el.properties +10 -6
  93. package/src/sap/fe/templates/messagebundle_en.properties +6 -2
  94. package/src/sap/fe/templates/messagebundle_en_GB.properties +8 -4
  95. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +13 -5
  96. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +7 -3
  97. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +7 -3
  98. package/src/sap/fe/templates/messagebundle_es.properties +6 -2
  99. package/src/sap/fe/templates/messagebundle_es_MX.properties +10 -6
  100. package/src/sap/fe/templates/messagebundle_et.properties +6 -2
  101. package/src/sap/fe/templates/messagebundle_fi.properties +10 -6
  102. package/src/sap/fe/templates/messagebundle_fr.properties +6 -2
  103. package/src/sap/fe/templates/messagebundle_fr_CA.properties +10 -6
  104. package/src/sap/fe/templates/messagebundle_hi.properties +10 -6
  105. package/src/sap/fe/templates/messagebundle_hr.properties +10 -6
  106. package/src/sap/fe/templates/messagebundle_hu.properties +6 -2
  107. package/src/sap/fe/templates/messagebundle_id.properties +6 -2
  108. package/src/sap/fe/templates/messagebundle_it.properties +10 -6
  109. package/src/sap/fe/templates/messagebundle_iw.properties +10 -6
  110. package/src/sap/fe/templates/messagebundle_ja.properties +6 -2
  111. package/src/sap/fe/templates/messagebundle_kk.properties +10 -6
  112. package/src/sap/fe/templates/messagebundle_ko.properties +6 -2
  113. package/src/sap/fe/templates/messagebundle_lt.properties +6 -2
  114. package/src/sap/fe/templates/messagebundle_lv.properties +6 -2
  115. package/src/sap/fe/templates/messagebundle_ms.properties +10 -6
  116. package/src/sap/fe/templates/messagebundle_nl.properties +6 -2
  117. package/src/sap/fe/templates/messagebundle_no.properties +10 -6
  118. package/src/sap/fe/templates/messagebundle_pl.properties +10 -6
  119. package/src/sap/fe/templates/messagebundle_pt.properties +6 -2
  120. package/src/sap/fe/templates/messagebundle_pt_PT.properties +6 -2
  121. package/src/sap/fe/templates/messagebundle_ro.properties +10 -6
  122. package/src/sap/fe/templates/messagebundle_ru.properties +10 -6
  123. package/src/sap/fe/templates/messagebundle_sh.properties +6 -2
  124. package/src/sap/fe/templates/messagebundle_sk.properties +6 -2
  125. package/src/sap/fe/templates/messagebundle_sl.properties +10 -6
  126. package/src/sap/fe/templates/messagebundle_sv.properties +6 -2
  127. package/src/sap/fe/templates/messagebundle_th.properties +10 -6
  128. package/src/sap/fe/templates/messagebundle_tr.properties +6 -2
  129. package/src/sap/fe/templates/messagebundle_uk.properties +6 -2
  130. package/src/sap/fe/templates/messagebundle_vi.properties +10 -6
  131. package/src/sap/fe/templates/messagebundle_zh_CN.properties +10 -6
  132. package/src/sap/fe/templates/messagebundle_zh_TW.properties +10 -6
  133. package/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +0 -482
  134. package/src/sap/fe/templates/ObjectPage/AnnotationHelper.ts +0 -511
  135. package/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +0 -120
  136. package/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +0 -138
@@ -5,7 +5,7 @@
5
5
  sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/SemanticKeyHelper", "sap/ui/core/routing/HashChanger", "sap/ui/model/Filter", "sap/ui/model/FilterOperator"], function (Log, ModelHelper, SemanticKeyHelper, HashChanger, Filter, FilterOperator) {
6
6
  "use strict";
7
7
 
8
- var bIsStickySupported;
8
+ var bGlobalIsStickySupported;
9
9
 
10
10
  function createFilterToFetchActiveContext(mKeyValues, bIsActiveEntityDefined) {
11
11
  var aKeys = Object.keys(mKeyValues);
@@ -25,12 +25,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
25
25
  aFilters.push(oActiveFilter);
26
26
  }
27
27
 
28
- var oCombinedFilter = new Filter(aFilters, true);
29
- return oCombinedFilter;
28
+ return new Filter(aFilters, true);
30
29
  }
31
30
 
32
31
  function getActiveContextPath(oController, sPageEntityName, oFilter) {
33
- var oListBinding = oController.getView().getBindingContext().getModel().bindList("/" + sPageEntityName, undefined, undefined, oFilter, {
32
+ var oListBinding = oController.getView().getBindingContext().getModel().bindList("/".concat(sPageEntityName), undefined, undefined, oFilter, {
34
33
  "$$groupId": "$auto.Heroes"
35
34
  });
36
35
  return oListBinding.requestContexts(0, 2).then(function (oContexts) {
@@ -76,7 +75,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
76
75
 
77
76
  if (sKeyAssignment.indexOf("=") === -1) {
78
77
  var oMetaModel = oContext.getModel().getMetaModel();
79
- var aTechnicalKeys = oMetaModel.getObject("/" + aPageHashArray.join("/") + "/$Type/$Key");
78
+ var aTechnicalKeys = oMetaModel.getObject("/".concat(aPageHashArray.join("/"), "/$Type/$Key"));
80
79
  sKeyValue = aParts[0];
81
80
  sKey = aTechnicalKeys[0];
82
81
  oPageMap[sPageHash.split("(")[0]]["bIsActiveEntityDefined"] = false;
@@ -101,7 +100,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
101
100
 
102
101
  if (sPageEntitySetName) {
103
102
  oPageInfo.pageEntityName = oPageEntitySet.$NavigationPropertyBinding[sNavigationPath];
104
- oPageEntitySet = oContext.getModel().getMetaModel().getObject("/" + sPageEntitySetName) || oEntitySet;
103
+ oPageEntitySet = oContext.getModel().getMetaModel().getObject("/".concat(sPageEntitySetName)) || oEntitySet;
105
104
  } else {
106
105
  oPageInfo.pageEntityName = sNavigationPath;
107
106
  }
@@ -118,9 +117,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
118
117
  }
119
118
  /**
120
119
  * Method to fetch active context path's.
121
- * @param {sap.ui.model.odata.v4.Context} oContext The Page Context
120
+ *
121
+ * @param oContext The Page Context
122
122
  * @param oController
123
- * @returns {Promise} Promise which is resolved once the active context's are fetched
123
+ * @returns Promise which is resolved once the active context's are fetched
124
124
  */
125
125
 
126
126
 
@@ -132,7 +132,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
132
132
  sRootEntityName = sRootEntityName.substring(1);
133
133
  }
134
134
 
135
- var oEntitySet = oContext.getModel().getMetaModel().getObject("/" + sRootEntityName);
135
+ var oEntitySet = oContext.getModel().getMetaModel().getObject("/".concat(sRootEntityName));
136
136
  var oPageContext = oContext;
137
137
  var aActiveContextpromises = getActiveContextInstances(oContext, oController, oEntitySet);
138
138
 
@@ -167,7 +167,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
167
167
 
168
168
  if (sNavigatioProperty) {
169
169
  aActiveContextPaths.push(sActiveContextPath.replace(sEntitySetName, sNavigatioProperty));
170
- oPageEntitySet = oPageContext.getModel().getMetaModel().getObject("/" + sEntitySetName) || oEntitySet;
170
+ oPageEntitySet = oPageContext.getModel().getMetaModel().getObject("/".concat(sEntitySetName)) || oEntitySet;
171
171
  } else {
172
172
  aActiveContextPaths.push(sActiveContextPath);
173
173
  }
@@ -189,7 +189,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
189
189
  if (oContext) {
190
190
  var oModel = oContext.getModel();
191
191
  var oMetaModel = oModel.getMetaModel();
192
- bIsStickySupported = ModelHelper.isStickySessionSupported(oMetaModel);
192
+ bGlobalIsStickySupported = ModelHelper.isStickySessionSupported(oMetaModel);
193
193
  var sRootEntityName = sCurrentHashNoParams && sCurrentHashNoParams.substr(0, sCurrentHashNoParams.indexOf("("));
194
194
 
195
195
  if (sRootEntityName.indexOf("/") === 0) {
@@ -204,7 +204,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
204
204
 
205
205
  var oViewData = oController.getView().getViewData();
206
206
 
207
- if (oContext && !bIsStickySupported && (oViewData.viewLevel === 1 && !aSemanticKeys || oViewData.viewLevel >= 2)) {
207
+ if (oContext && !bGlobalIsStickySupported && (oViewData.viewLevel === 1 && !aSemanticKeys || oViewData.viewLevel >= 2)) {
208
208
  oPromise = getActiveContextPaths(oContext, oController);
209
209
  return oPromise;
210
210
  } else {
@@ -284,17 +284,17 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
284
284
  return fetchActiveContextPaths(oContext, this.base.getView().getController()).then(function (aActiveContextPaths) {
285
285
  var oPageTitleInfo = _this.base.getView().getController()._getPageTitleInformation();
286
286
 
287
- return Promise.all([getJamUrl(bIsEditable, bIsStickySupported, aActiveContextPaths), getShareUrl(bIsEditable, bIsStickySupported, aActiveContextPaths), getShareEmailUrl()]).then(function (oData) {
287
+ return Promise.all([getJamUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths), getShareUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths), getShareEmailUrl()]).then(function (oData) {
288
288
  var sTitle = oPageTitleInfo.title;
289
- var sObjectSubtitle = oPageTitleInfo.subtitle.toString();
289
+ var sObjectSubtitle = oPageTitleInfo.subtitle ? oPageTitleInfo.subtitle.toString() : "";
290
290
 
291
291
  if (sObjectSubtitle) {
292
- sTitle = sTitle + " - " + sObjectSubtitle;
292
+ sTitle = "".concat(sTitle, " - ").concat(sObjectSubtitle);
293
293
  }
294
294
 
295
295
  oShareMetadata.tile = {
296
296
  title: oPageTitleInfo.title,
297
- subtitle: oPageTitleInfo.subtitle.toString()
297
+ subtitle: sObjectSubtitle
298
298
  };
299
299
  oShareMetadata.email.title = sTitle;
300
300
  oShareMetadata.title = sTitle;
@@ -310,4 +310,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
310
310
  };
311
311
  return ShareExtensionOverride;
312
312
  }, false);
313
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImJJc1N0aWNreVN1cHBvcnRlZCIsImNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0IiwibUtleVZhbHVlcyIsImJJc0FjdGl2ZUVudGl0eURlZmluZWQiLCJhS2V5cyIsIk9iamVjdCIsImtleXMiLCJhRmlsdGVycyIsIm1hcCIsInNLZXkiLCJzVmFsdWUiLCJ1bmRlZmluZWQiLCJGaWx0ZXIiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwib0FjdGl2ZUZpbHRlciIsImZpbHRlcnMiLCJhbmQiLCJwdXNoIiwib0NvbWJpbmVkRmlsdGVyIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGgiLCJvQ29udHJvbGxlciIsInNQYWdlRW50aXR5TmFtZSIsIm9GaWx0ZXIiLCJvTGlzdEJpbmRpbmciLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRNb2RlbCIsImJpbmRMaXN0IiwicmVxdWVzdENvbnRleHRzIiwidGhlbiIsIm9Db250ZXh0cyIsImxlbmd0aCIsImdldFBhdGgiLCJnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzIiwib0NvbnRleHQiLCJvRW50aXR5U2V0IiwiYUFjdGl2ZUNvbnRleHRwcm9taXNlcyIsImFQYWdlcyIsInNNZXRhUGF0aCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFQYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImFNZXRhUGF0aEFycmF5Iiwic3BsaXQiLCJzQ3VycmVudEhhc2hOb1BhcmFtcyIsIkhhc2hDaGFuZ2VyIiwiZ2V0SW5zdGFuY2UiLCJnZXRIYXNoIiwiYUN1cnJlbnRIYXNoQXJyYXkiLCJvUGFnZU1hcCIsImFQYWdlSGFzaEFycmF5IiwiZm9yRWFjaCIsInNQYWdlSGFzaCIsImFLZXlWYWx1ZXMiLCJzUGFnZUhhc2hOYW1lIiwiaSIsInNLZXlBc3NpZ25tZW50IiwiYVBhcnRzIiwic0tleVZhbHVlIiwib01ldGFNb2RlbCIsImFUZWNobmljYWxLZXlzIiwiZ2V0T2JqZWN0Iiwiam9pbiIsImxhc3RJbmRleE9mIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwib1BhZ2VFbnRpdHlTZXQiLCJzTmF2aWdhdGlvblBhdGgiLCJvUGFnZUluZm8iLCJzUGFnZUVudGl0eVNldE5hbWUiLCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsInBhZ2VFbnRpdHlOYW1lIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGhzIiwic1Jvb3RFbnRpdHlOYW1lIiwic3Vic3RyIiwib1BhZ2VDb250ZXh0IiwiUHJvbWlzZSIsImFsbCIsImFEYXRhIiwiYUFjdGl2ZUNvbnRleHRQYXRocyIsInNBY3RpdmVDb250ZXh0UGF0aCIsInNOYXZpZ2F0aW9Qcm9wZXJ0eSIsInNFbnRpdHlTZXROYW1lIiwidmFsdWVzIiwicmVwbGFjZSIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiaW5mbyIsInJlc29sdmUiLCJmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyIsIm9Qcm9taXNlIiwiYVNlbWFudGljS2V5cyIsIm9Nb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiU2VtYW50aWNLZXlIZWxwZXIiLCJnZXRTZW1hbnRpY0tleXMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInZpZXdMZXZlbCIsImdldFNoYXJlVXJsIiwiYklzRWRpdGFibGUiLCJzU2hhcmVVcmwiLCJzSGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwic0ZMUFVybCIsInNFcnJvciIsImVycm9yIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRKYW1VcmwiLCJiSXNFZGl0TW9kZSIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZUV4dGVuc2lvbk92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJiYXNlIiwib1VJTW9kZWwiLCJnZXRQcm9wZXJ0eSIsImdldENvbnRyb2xsZXIiLCJvUGFnZVRpdGxlSW5mbyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIm9EYXRhIiwic1RpdGxlIiwidGl0bGUiLCJzT2JqZWN0U3VidGl0bGUiLCJzdWJ0aXRsZSIsInRvU3RyaW5nIiwidGlsZSIsImVtYWlsIiwiamFtIiwidXJsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBT0EsTUFBSUEsa0JBQUo7O0FBRUEsV0FBU0MsZ0NBQVQsQ0FBMENDLFVBQTFDLEVBQTJEQyxzQkFBM0QsRUFBd0Y7QUFDdkYsUUFBTUMsS0FBSyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWUosVUFBWixDQUFkO0FBRUEsUUFBTUssUUFBUSxHQUFHSCxLQUFLLENBQUNJLEdBQU4sQ0FBVSxVQUFVQyxJQUFWLEVBQXdCO0FBQ2xELFVBQU1DLE1BQU0sR0FBR1IsVUFBVSxDQUFDTyxJQUFELENBQXpCOztBQUNBLFVBQUlDLE1BQU0sS0FBS0MsU0FBZixFQUEwQjtBQUN6QixlQUFPLElBQUlDLE1BQUosQ0FBV0gsSUFBWCxFQUFpQkksY0FBYyxDQUFDQyxFQUFoQyxFQUFvQ0osTUFBcEMsQ0FBUDtBQUNBO0FBQ0QsS0FMZ0IsQ0FBakI7O0FBT0EsUUFBSVAsc0JBQUosRUFBNEI7QUFDM0IsVUFBTVksYUFBYSxHQUFHLElBQUlILE1BQUosQ0FBVztBQUNoQ0ksUUFBQUEsT0FBTyxFQUFFLENBQUMsSUFBSUosTUFBSixDQUFXLDhCQUFYLEVBQTJDQyxjQUFjLENBQUNDLEVBQTFELEVBQThELElBQTlELENBQUQsQ0FEdUI7QUFFaENHLFFBQUFBLEdBQUcsRUFBRTtBQUYyQixPQUFYLENBQXRCO0FBS0FWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjSCxhQUFkO0FBQ0E7O0FBRUQsUUFBTUksZUFBZSxHQUFH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Q0EsY0FBSUYsZUFBSixFQUFxQjtBQUNwQkYsWUFBQUEsTUFBTSxHQUFHQSxNQUFNLEdBQUcsS0FBVCxHQUFpQkUsZUFBMUI7QUFDQTs7QUFDRFYsVUFBQUEsY0FBYyxDQUFDYSxJQUFmLEdBQXNCO0FBQ3JCSixZQUFBQSxLQUFLLEVBQUVKLGNBQWMsQ0FBQ0ksS0FERDtBQUVyQkUsWUFBQUEsUUFBUSxFQUFFTixjQUFjLENBQUNNLFFBQWYsQ0FBd0JDLFFBQXhCO0FBRlcsV0FBdEI7QUFJQVosVUFBQUEsY0FBYyxDQUFDYyxLQUFmLENBQXFCTCxLQUFyQixHQUE2QkQsTUFBN0I7QUFDQVIsVUFBQUEsY0FBYyxDQUFDUyxLQUFmLEdBQXVCRCxNQUF2QjtBQUNBUixVQUFBQSxjQUFjLENBQUNlLEdBQWYsQ0FBbUJDLEdBQW5CLEdBQXlCVCxLQUFLLENBQUMsQ0FBRCxDQUE5QjtBQUNBUCxVQUFBQSxjQUFjLENBQUNnQixHQUFmLEdBQXFCVCxLQUFLLENBQUMsQ0FBRCxDQUExQjtBQUNBUCxVQUFBQSxjQUFjLENBQUNjLEtBQWYsQ0FBcUJFLEdBQXJCLEdBQTJCVCxLQUFLLENBQUMsQ0FBRCxDQUFoQztBQUVBLGlCQUFPUCxjQUFQO0FBQ0EsU0F0QkssRUF1Qkw5QyxLQXZCSyxDQXVCQyxVQUFVaUMsS0FBVixFQUFzQjtBQUM1Qi9CLFVBQUFBLEdBQUcsQ0FBQytCLEtBQUosQ0FBVUEsS0FBVjtBQUNBLFNBekJLLENBQVA7QUEwQkEsT0E3Qk0sQ0FBUDtBQThCQTtBQW5DNkIsR0FBL0I7U0FzQ2VXLHNCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFNlbWFudGljS2V5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljS2V5SGVscGVyXCI7XG5pbXBvcnQgT2JqZWN0UGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9PYmplY3RQYWdlQ29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgSGFzaENoYW5nZXIgZnJvbSBcInNhcC91aS9jb3JlL3JvdXRpbmcvSGFzaENoYW5nZXJcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5cbmxldCBiSXNTdGlja3lTdXBwb3J0ZWQ6IGJvb2xlYW47XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0KG1LZXlWYWx1ZXM6IGFueSwgYklzQWN0aXZlRW50aXR5RGVmaW5lZDogYW55KSB7XG5cdGNvbnN0IGFLZXlzID0gT2JqZWN0LmtleXMobUtleVZhbHVlcyk7XG5cblx0Y29uc3QgYUZpbHRlcnMgPSBhS2V5cy5tYXAoZnVuY3Rpb24gKHNLZXk6IHN0cmluZykge1xuXHRcdGNvbnN0IHNWYWx1ZSA9IG1LZXlWYWx1ZXNbc0tleV07XG5cdFx0aWYgKHNWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gbmV3IEZpbHRlcihzS2V5LCBGaWx0ZXJPcGVyYXRvci5FUSwgc1ZhbHVlKTtcblx0XHR9XG5cdH0pO1xuXG5cdGlmIChiSXNBY3RpdmVFbnRpdHlEZWZpbmVkKSB7XG5cdFx0Y29uc3Qgb0FjdGl2ZUZpbHRlciA9IG5ldyBGaWx0ZXIoe1xuXHRcdFx0ZmlsdGVyczogW25ldyBGaWx0ZXIoXCJTaWJsaW5nRW50aXR5L0lzQWN0aXZlRW50aXR5XCIsIEZpbHRlck9wZXJhdG9yLkVRLCB0cnVlKV0sXG5cdFx0XHRhbmQ6IGZhbHNlXG5cdFx0fSk7XG5cblx0XHRhRmlsdGVycy5wdXNoKG9BY3RpdmVGaWx0ZXIpO1xuXHR9XG5cblx0Y29uc3Qgb0NvbWJpbmVkRmlsdGVyID0gbmV3IEZpbHRlcihhRmlsdGVycyBhcyBhbnksIHRydWUpO1xuXHRyZXR1cm4gb0NvbWJpbmVkRmlsdGVyO1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGgob0NvbnRyb2xsZXI6IGFueSwgc1BhZ2VFbnRpdHlOYW1lOiBhbnksIG9GaWx0ZXI6IGFueSkge1xuXHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvQ29udHJvbGxlclxuXHRcdC5nZXRWaWV3KClcblx0XHQuZ2V0QmluZGluZ0NvbnRleHQoKVxuXHRcdC5nZXRNb2RlbCgpXG5cdFx0LmJpbmRMaXN0KFwiL1wiICsgc1BhZ2VFbnRpdHlOYW1lLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb0ZpbHRlciwgeyBcIiQkZ3JvdXBJZFwiOiBcIiRhdXRvLkhlcm9lc1wiIH0pO1xuXHRyZXR1cm4gb0xpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygwLCAyKS50aGVuKGZ1bmN0aW9uIChvQ29udGV4dHM6IGFueSkge1xuXHRcdGlmIChvQ29udGV4dHMgJiYgb0NvbnRleHRzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG9Db250ZXh0c1swXS5nZXRQYXRoKCk7XG5cdFx0fVxuXHR9KTtcbn1cbmZ1bmN0aW9uIGdldEFjdGl2ZUNvbnRleHRJbnN0YW5jZXMob0NvbnRleHQ6IGFueSwgb0NvbnRyb2xsZXI6IGFueSwgb0VudGl0eVNldDogYW55KSB7XG5cdGNvbnN0IGFBY3RpdmVDb250ZXh0cHJvbWlzZXM6IGFueVtdID0gW107XG5cdGNvbnN0IGFQYWdlczogYW55W10gPSBbXTtcblx0bGV0IHNNZXRhUGF0aCA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0TWV0YVBhdGgob0NvbnRleHQuZ2V0UGF0aCgpKTtcblx0aWYgKHNNZXRhUGF0aC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdHNNZXRhUGF0aCA9IHNNZXRhUGF0aC5zdWJzdHJpbmcoMSk7XG5cdH1cblx0Y29uc3QgYU1ldGFQYXRoQXJyYXkgPSBzTWV0YVBhdGguc3BsaXQoXCIvXCIpO1xuXHRjb25zdCBzQ3VycmVudEhhc2hOb1BhcmFtcyA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpLnNwbGl0KFwiP1wiKVswXTtcblx0Y29uc3QgYUN1cnJlbnRIYXNoQXJyYXkgPSBzQ3VycmVudEhhc2hOb1BhcmFtcy5zcGxpdChcIi9cIik7XG5cblx0Ly8gb1BhZ2VNYXAgLSBjcmVhdGluZyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBtYXAgb2YgbWV0YXBhdGggbmFtZSBhbmQgaXQncyB0ZWNobmljYWwgZGV0YWlsc1xuXHQvLyB3aGljaCBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBmaWx0ZXIgdG8gZmV0Y2ggdGhlIHJlbGF2YW50L2NvcnJlY3QgYWN0aXZlIGNvbnRleHRcblx0Ly8gRXhhbXBsZToge1NhbGVzT3JkZXJNYW5hZ2U6e3RlY2huaWNhbElEOnRlY2huaWNhbElEVmFsdWV9LCBfSXRlbTp7dGVjaG5pY2FsSUQ6dGVjaG5pY2FsSURWYWx1ZX19IGV0Yy4sXG5cdGNvbnN0IG9QYWdlTWFwOiBhbnkgPSB7fTtcblx0Y29uc3QgYVBhZ2VIYXNoQXJyYXk6IGFueVtdID0gW107XG5cdGFDdXJyZW50SGFzaEFycmF5LmZvckVhY2goZnVuY3Rpb24gKHNQYWdlSGFzaDogYW55KSB7XG5cdFx0Y29uc3QgYUtleVZhbHVlcyA9IHNQYWdlSGFzaC5zdWJzdHJpbmcoc1BhZ2VIYXNoLmluZGV4T2YoXCIoXCIpICsgMSwgc1BhZ2VIYXNoLmxlbmd0aCAtIDEpLnNwbGl0KFwiLFwiKTtcblx0XHRjb25zdCBtS2V5VmFsdWVzOiBhbnkgPSB7fTtcblx0XHRjb25zdCBzUGFnZUhhc2hOYW1lID0gc1BhZ2VIYXNoLnNwbGl0KFwiKFwiKVswXTtcblx0XHRvUGFnZU1hcFtzUGFnZUhhc2hOYW1lXSA9IHt9O1xuXHRcdGFQYWdlSGFzaEFycmF5LnB1c2goc1BhZ2VIYXNoTmFtZSk7XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV1bXCJiSXNBY3RpdmVFbnRpdHlEZWZpbmVkXCJdID0gdHJ1ZTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFLZXlWYWx1ZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHNLZXlBc3NpZ25tZW50ID0gYUtleVZhbHVlc1tpXTtcblx0XHRcdGNvbnN0IGFQYXJ0cyA9IHNLZXlBc3NpZ25tZW50LnNwbGl0KFwiPVwiKTtcblx0XHRcdGxldCBzS2V5VmFsdWUgPSBhUGFydHNbMV07XG5cdFx0XHRsZXQgc0tleSA9IGFQYXJ0c1swXTtcblx0XHRcdC8vIEluIGNhc2UgaWYgb25seSBvbmUgdGVjaG5pY2FsIGtleSBpcyBkZWZpbmVkIHRoZW4gdGhlIHVybCBqdXN0IGNvbnRhaW5zIHRoZSB0ZWNobmljYWxJRFZhbHVlIGJ1dCBub3QgdGhlIHRlY2huaWNhbElEXG5cdFx0XHQvLyBFeGFtcGxlOiBTYWxlc09yZGVyTWFuYWdlKElEPTExMTExMTI5LWFhYWEtYmJiYi1jY2NjLWRkZGRlZWVlZmZmZixJc0FjdGl2ZUVudGl0eT1mYWxzZSkvX0l0ZW0oMTExMTExMjktYWFhYS1iYmJiLWNjY2MtZGRkZGVlZWVmZmZmKVxuXHRcdFx0Ly8gSW4gYWJvdmUgZXhhbXBsZSBTYWxlc09yZGVySXRlbSBoYXMgb25seSBvbmUgdGVjaG5pY2FsIGtleSBkZWZpbmVkLCBoZW5jZSB0ZWNobmljYWxJRCBpbmZvIGlzIG5vdCBwcmVzZW50IGluIHRoZSB1cmxcblx0XHRcdC8vIEhlbmNlIGluIHN1Y2ggY2FzZXMgd2UgZ2V0IHRlY2huaWNhbCBrZXkgYW5kIHVzZSB0aGVtIHRvIGZldGNoIGFjdGl2ZSBjb250ZXh0XG5cdFx0XHRpZiAoc0tleUFzc2lnbm1lbnQuaW5kZXhPZihcIj1cIikgPT09IC0xKSB7XG5cdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0XHRjb25zdCBhVGVjaG5pY2FsS2V5cyA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiICsgYVBhZ2VIYXNoQXJyYXkuam9pbihcIi9cIikgKyBcIi8kVHlwZS8kS2V5XCIpO1xuXHRcdFx0XHRzS2V5VmFsdWUgPSBhUGFydHNbMF07XG5cdFx0XHRcdHNLZXkgPSBhVGVjaG5pY2FsS2V5c1swXTtcblx0XHRcdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoLnNwbGl0KFwiKFwiKVswXV1bXCJiSXNBY3RpdmVFbnRpdHlEZWZpbmVkXCJdID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzS2V5ICE9PSBcIklzQWN0aXZlRW50aXR5XCIpIHtcblx0XHRcdFx0aWYgKHNLZXlWYWx1ZS5pbmRleE9mKFwiJ1wiKSA9PT0gMCAmJiBzS2V5VmFsdWUubGFzdEluZGV4T2YoXCInXCIpID09PSBzS2V5VmFsdWUubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdC8vIFJlbW92ZSB0aGUgcXVvdGVzIGZyb20gdGhlIHZhbHVlIGFuZCBkZWNvZGUgc3BlY2lhbCBjaGFyc1xuXHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChzS2V5VmFsdWUuc3Vic3RyaW5nKDEsIHNLZXlWYWx1ZS5sZW5ndGggLSAxKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bUtleVZhbHVlc1tzS2V5XSA9IHNLZXlWYWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV0ubUtleVZhbHVlcyA9IG1LZXlWYWx1ZXM7XG5cdH0pO1xuXG5cdGxldCBvUGFnZUVudGl0eVNldCA9IG9FbnRpdHlTZXQ7XG5cdGFNZXRhUGF0aEFycmF5LmZvckVhY2goZnVuY3Rpb24gKHNOYXZpZ2F0aW9uUGF0aDogYW55KSB7XG5cdFx0Y29uc3Qgb1BhZ2VJbmZvOiBhbnkgPSB7fTtcblx0XHRjb25zdCBzUGFnZUVudGl0eVNldE5hbWUgPSBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyAmJiBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tzTmF2aWdhdGlvblBhdGhdO1xuXHRcdGlmIChzUGFnZUVudGl0eVNldE5hbWUpIHtcblx0XHRcdG9QYWdlSW5mby5wYWdlRW50aXR5TmFtZSA9IG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3NOYXZpZ2F0aW9uUGF0aF07XG5cdFx0XHRvUGFnZUVudGl0eVNldCA9XG5cdFx0XHRcdG9Db250ZXh0XG5cdFx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0XHQuZ2V0TWV0YU1vZGVsKClcblx0XHRcdFx0XHQuZ2V0T2JqZWN0KFwiL1wiICsgc1BhZ2VFbnRpdHlTZXROYW1lKSB8fCBvRW50aXR5U2V0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUgPSBzTmF2aWdhdGlvblBhdGg7XG5cdFx0fVxuXHRcdG9QYWdlSW5mby5tS2V5VmFsdWVzID0gb1BhZ2VNYXBbc05hdmlnYXRpb25QYXRoXS5tS2V5VmFsdWVzO1xuXHRcdG9QYWdlSW5mby5iSXNBY3RpdmVFbnRpdHlEZWZpbmVkID0gb1BhZ2VNYXBbc05hdmlnYXRpb25QYXRoXS5iSXNBY3RpdmVFbnRpdHlEZWZpbmVkO1xuXHRcdGFQYWdlcy5wdXNoKG9QYWdlSW5mbyk7XG5cdH0pO1xuXG5cdGFQYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChvUGFnZUluZm86IGFueSkge1xuXHRcdGNvbnN0IG9GaWx0ZXIgPSBjcmVhdGVGaWx0ZXJUb0ZldGNoQWN0aXZlQ29udGV4dChvUGFnZUluZm8ubUtleVZhbHVlcywgb1BhZ2VJbmZvLmJJc0FjdGl2ZUVudGl0eURlZmluZWQpO1xuXHRcdGFBY3RpdmVDb250ZXh0cHJvbWlzZXMucHVzaChnZXRBY3RpdmVDb250ZXh0UGF0aChvQ29udHJvbGxlciwgb1BhZ2VJbmZvLnBhZ2VFbnRpdHlOYW1lLCBvRmlsdGVyKSk7XG5cdH0pO1xuXG5cdHJldHVybiBhQWN0aXZlQ29udGV4dHByb21pc2VzO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBmZXRjaCBhY3RpdmUgY29udGV4dCBwYXRoJ3MuXG4gKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0fSBvQ29udGV4dCBUaGUgUGFnZSBDb250ZXh0XG4gKiBAcGFyYW0gb0NvbnRyb2xsZXJcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgdGhlIGFjdGl2ZSBjb250ZXh0J3MgYXJlIGZldGNoZWRcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0c1Jvb3RFbnRpdHlOYW1lID0gc1Jvb3RFbnRpdHlOYW1lLnN1YnN0cmluZygxKTtcblx0fVxuXHRjb25zdCBvRW50aXR5U2V0ID0gb0NvbnRleHRcblx0XHQuZ2V0TW9kZWwoKVxuXHRcdC5nZXRNZXRhTW9kZWwoKVxuXHRcdC5nZXRPYmplY3QoXCIvXCIgKyBzUm9vdEVudGl0eU5hbWUpO1xuXHRjb25zdCBvUGFnZUNvbnRleHQgPSBvQ29udGV4dDtcblx0Y29uc3QgYUFjdGl2ZUNvbnRleHRwcm9taXNlcyA9IGdldEFjdGl2ZUNvbnRleHRJbnN0YW5jZXMob0NvbnRleHQsIG9Db250cm9sbGVyLCBvRW50aXR5U2V0KTtcblx0aWYgKGFBY3RpdmVDb250ZXh0cHJvbWlzZXMubGVuZ3RoID4gMCkge1xuXHRcdHJldHVybiBQcm9taXNlLmFsbChhQWN0aXZlQ29udGV4dHByb21pc2VzKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFEYXRhOiBhbnlbXSkge1xuXHRcdFx0XHRjb25zdCBhQWN0aXZlQ29udGV4dFBhdGhzID0gW107XG5cdFx0XHRcdGxldCBvUGFnZUVudGl0eVNldCA9IG9FbnRpdHlTZXQ7XG5cdFx0XHRcdGlmIChhRGF0YVswXS5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRcdGFBY3RpdmVDb250ZXh0UGF0aHMucHVzaChhRGF0YVswXS5zdWJzdHJpbmcoMSkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFBY3RpdmVDb250ZXh0UGF0aHMucHVzaChhRGF0YVswXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gSW4gdGhlIGFjdGl2ZSBjb250ZXh0IHBhdGhzIGlkZW50aWZ5IGFuZCByZXBsYWNlIHRoZSBlbnRpdHlTZXQgTmFtZSB3aXRoIGNvcnJlc3BvbmRpbmcgbmF2aWdhdGlvbiBwcm9wZXJ0eSBuYW1lXG5cdFx0XHRcdC8vIFJlcXVpcmVkIHRvIGZvcm0gdGhlIHVybCBwb2ludGluZyB0byBhY3RpdmUgY29udGV4dFxuXHRcdFx0XHQvLyBFeGFtcGxlIDogU2FsZXNPcmRlckl0ZW0gLS0+IF9JdGVtLCBNYXRlcmlhbERldGFpbHMgLS0+IF9NYXRlcmlhbERldGFpbHMgZXRjLixcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBhRGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGxldCBzQWN0aXZlQ29udGV4dFBhdGggPSBhRGF0YVtpXTtcblx0XHRcdFx0XHRsZXQgc05hdmlnYXRpb1Byb3BlcnR5ID0gXCJcIjtcblx0XHRcdFx0XHRsZXQgc0VudGl0eVNldE5hbWUgPSBzQWN0aXZlQ29udGV4dFBhdGggJiYgc0FjdGl2ZUNvbnRleHRQYXRoLnN1YnN0cigwLCBzQWN0aXZlQ29udGV4dFBhdGguaW5kZXhPZihcIihcIikpO1xuXHRcdFx0XHRcdGlmIChzRW50aXR5U2V0TmFtZS5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0c0VudGl0eVNldE5hbWUgPSBzRW50aXR5U2V0TmFtZS5zdWJzdHJpbmcoMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChzQWN0aXZlQ29udGV4dFBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRcdHNBY3RpdmVDb250ZXh0UGF0aCA9IHNBY3RpdmVDb250ZXh0UGF0aC5zdWJzdHJpbmcoMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNOYXZpZ2F0aW9Qcm9wZXJ0eSA9IE9iamVjdC5rZXlzKG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKVtcblx0XHRcdFx0XHRcdE9iamVjdC52YWx1ZXMob1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcpLmluZGV4T2Yoc0VudGl0eVNldE5hbWUpXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRpZiAoc05hdmlnYXRpb1Byb3BlcnR5KSB7XG5cdFx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goc0FjdGl2ZUNvbnRleHRQYXRoLnJlcGxhY2Uoc0VudGl0eVNldE5hbWUsIHNOYXZpZ2F0aW9Qcm9wZXJ0eSkpO1xuXHRcdFx0XHRcdFx0b1BhZ2VFbnRpdHlTZXQgPVxuXHRcdFx0XHRcdFx0XHRvUGFnZUNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHQuZ2V0TW9kZWwoKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXRNZXRhTW9kZWwoKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXRPYmplY3QoXCIvXCIgKyBzRW50aXR5U2V0TmFtZSkgfHwgb0VudGl0eVNldDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YUFjdGl2ZUNvbnRleHRQYXRocy5wdXNoKHNBY3RpdmVDb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhQWN0aXZlQ29udGV4dFBhdGhzO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmluZm8oXCJGYWlsZWQgdG8gcmV0cmlldmUgb25lIG9yIG1vcmUgYWN0aXZlIGNvbnRleHQgcGF0aCdzXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cbn1cbmZ1bmN0aW9uIGZldGNoQWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0bGV0IG9Qcm9taXNlLCBhU2VtYW50aWNLZXlzO1xuXHRjb25zdCBzQ3VycmVudEhhc2hOb1BhcmFtcyA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpLnNwbGl0KFwiP1wiKVswXTtcblx0aWYgKG9Db250ZXh0KSB7XG5cdFx0Y29uc3Qgb01vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpO1xuXHRcdGJJc1N0aWNreVN1cHBvcnRlZCA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChvTWV0YU1vZGVsKTtcblx0XHRsZXQgc1Jvb3RFbnRpdHlOYW1lID0gc0N1cnJlbnRIYXNoTm9QYXJhbXMgJiYgc0N1cnJlbnRIYXNoTm9QYXJhbXMuc3Vic3RyKDAsIHNDdXJyZW50SGFzaE5vUGFyYW1zLmluZGV4T2YoXCIoXCIpKTtcblx0XHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRzUm9vdEVudGl0eU5hbWUgPSBzUm9vdEVudGl0eU5hbWUuc3Vic3RyaW5nKDEpO1xuXHRcdH1cblx0XHRhU2VtYW50aWNLZXlzID0gU2VtYW50aWNLZXlIZWxwZXIuZ2V0U2VtYW50aWNLZXlzKG9NZXRhTW9kZWwsIHNSb290RW50aXR5TmFtZSk7XG5cdH1cblx0Ly8gRmV0Y2ggYWN0aXZlIGNvbnRleHQgZGV0YWlscyBpbmNhc2Ugb2YgYmVsb3cgc2NlbmFyaW8ncyh3aGVyZSBwYWdlIGlzIG5vdCBzdGlja3kgc3VwcG9ydGVkKHdlIGRvIG5vdCBoYXZlIGRyYWZ0IGluc3RhbmNlKSlcblx0Ly8gMS4gSW4gY2FzZSBvZiBkcmFmdCBlbmFibGVkIE9iamVjdCBwYWdlIHdoZXJlIHNlbWFudGljIGtleSBiYXNlZCBVUkwgaXMgbm90IHBvc3NpYmxlKGxpa2Ugc2VtYW50aWMga2V5cyBhcmUgbm90IG1vZGVsZWQgaW4gdGhlIGVudGl0eSBzZXQpXG5cdC8vIDIuIEluIGNhc2Ugb2YgZHJhZnQgZW5hYmxlZCBTdWIgT2JqZWN0IFBhZ2VzICh3aGVyZSBzZW1hbnRpYyBib29rbWFya2luZyBpcyBub3Qgc3VwcG9ydGVkKVxuXHRjb25zdCBvVmlld0RhdGEgPSBvQ29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKTtcblx0aWYgKG9Db250ZXh0ICYmICFiSXNTdGlja3lTdXBwb3J0ZWQgJiYgKChvVmlld0RhdGEudmlld0xldmVsID09PSAxICYmICFhU2VtYW50aWNLZXlzKSB8fCBvVmlld0RhdGEudmlld0xldmVsID49IDIpKSB7XG5cdFx0b1Byb21pc2UgPSBnZXRBY3RpdmVDb250ZXh0UGF0aHMob0NvbnRleHQsIG9Db250cm9sbGVyKTtcblx0XHRyZXR1cm4gb1Byb21pc2U7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG59XG5cbi8vIC8qKlxuLy8gICogR2V0IHNoYXJlIFVSTC5cbi8vICAqIEBwYXJhbSBiSXNFZGl0YWJsZVxuLy8gICogQHBhcmFtIGJJc1N0aWNreVN1cHBvcnRlZFxuLy8gICogQHBhcmFtIGFBY3RpdmVDb250ZXh0UGF0aHNcbi8vICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzaGFyZSBVUkxcbi8vICAqIEBwcm90ZWN0ZWRcbi8vICAqIEBzdGF0aWNcbi8vICAqL1xuZnVuY3Rpb24gZ2V0U2hhcmVVcmwoYklzRWRpdGFibGU6IGFueSwgYklzU3RpY2t5U3VwcG9ydGVkOiBhbnksIGFBY3RpdmVDb250ZXh0UGF0aHM6IGFueSkge1xuXHRsZXQgc1NoYXJlVXJsO1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0aWYgKGJJc0VkaXRhYmxlICYmICFiSXNTdGlja3lTdXBwb3J0ZWQgJiYgYUFjdGl2ZUNvbnRleHRQYXRocykge1xuXHRcdHNTaGFyZVVybCA9IHNCYXNlUGF0aCArIGFBY3RpdmVDb250ZXh0UGF0aHMuam9pbihcIi9cIik7XG5cdH0gZWxzZSB7XG5cdFx0c1NoYXJlVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHR9XG5cdHJldHVybiBzU2hhcmVVcmw7XG59XG5mdW5jdGlvbiBnZXRTaGFyZUVtYWlsVXJsKCkge1xuXHRjb25zdCBvVVNoZWxsQ29udGFpbmVyID0gc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lcjtcblx0aWYgKG9VU2hlbGxDb250YWluZXIpIHtcblx0XHRyZXR1cm4gb1VTaGVsbENvbnRhaW5lclxuXHRcdFx0LmdldEZMUFVybEFzeW5jKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc0ZMUFVybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzRkxQVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRvY3VtZW50LlVSTCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0SmFtVXJsKGJJc0VkaXRNb2RlOiBib29sZWFuLCBiSXNTdGlja3lTdXBwb3J0ZWQ6IGFueSwgYUFjdGl2ZUNvbnRleHRQYXRoczogYW55KSB7XG5cdGxldCBzSmFtVXJsOiBzdHJpbmc7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRpZiAoYklzRWRpdE1vZGUgJiYgIWJJc1N0aWNreVN1cHBvcnRlZCAmJiBhQWN0aXZlQ29udGV4dFBhdGhzKSB7XG5cdFx0c0phbVVybCA9IHNCYXNlUGF0aCArIGFBY3RpdmVDb250ZXh0UGF0aHMuam9pbihcIi9cIik7XG5cdH0gZWxzZSB7XG5cdFx0c0phbVVybCA9IHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0fVxuXHQvLyBpbiBjYXNlIHdlIGFyZSBpbiBjRkxQIHNjZW5hcmlvLCB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZ1xuXHQvLyBpbnNpZGUgYW4gaWZyYW1lLCBhbmQgdGhlcmUgZm9yIHdlIG5lZWQgdG8gZ2V0IHRoZSBjRkxQIFVSTFxuXHQvLyBhbmQgbm90ICdkb2N1bWVudC5VUkwnIHRoYXQgcmVwcmVzZW50cyB0aGUgaWZyYW1lIFVSTFxuXHRpZiAoc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lciAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUgJiYgc2FwLnVzaGVsbC5Db250YWluZXIucnVubmluZ0luSWZyYW1lKCkpIHtcblx0XHRzYXAudXNoZWxsLkNvbnRhaW5lci5nZXRGTFBVcmwodHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNVcmwuc3Vic3RyKDAsIHNVcmwuaW5kZXhPZihcIiNcIikpICsgc0phbVVybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKHNFcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNvdWxkIG5vdCByZXRyaWV2ZSBjRkxQIFVSTCBmb3IgdGhlIHNoYXJpbmcgZGlhbG9nIChkaWFsb2cgd2lsbCBub3QgYmUgb3BlbmVkKVwiLCBzRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgc0phbVVybCk7XG5cdH1cbn1cblxuY29uc3QgU2hhcmVFeHRlbnNpb25PdmVycmlkZSA9IHtcblx0YWRhcHRTaGFyZU1ldGFkYXRhOiBmdW5jdGlvbiAodGhpczogU2hhcmUsIG9TaGFyZU1ldGFkYXRhOiBhbnkpIHtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKSxcblx0XHRcdG9VSU1vZGVsID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRNb2RlbChcInVpXCIpLFxuXHRcdFx0YklzRWRpdGFibGUgPSBvVUlNb2RlbC5nZXRQcm9wZXJ0eShcIi9pc0VkaXRhYmxlXCIpO1xuXHRcdHJldHVybiBmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyhvQ29udGV4dCwgdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkpLnRoZW4oKGFBY3RpdmVDb250ZXh0UGF0aHMpID0+IHtcblx0XHRcdGNvbnN0IG9QYWdlVGl0bGVJbmZvID0gKHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyKS5fZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24oKTtcblxuXHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFtcblx0XHRcdFx0Z2V0SmFtVXJsKGJJc0VkaXRhYmxlLCBiSXNTdGlja3lTdXBwb3J0ZWQsIGFBY3RpdmVDb250ZXh0UGF0aHMpLFxuXHRcdFx0XHRnZXRTaGFyZVVybChiSXNFZGl0YWJsZSwgYklzU3RpY2t5U3VwcG9ydGVkLCBhQWN0aXZlQ29udGV4dFBhdGhzKSxcblx0XHRcdFx0Z2V0U2hhcmVFbWFpbFVybCgpXG5cdFx0XHRdKVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAob0RhdGEpIHtcblx0XHRcdFx0XHRsZXQgc1RpdGxlID0gb1BhZ2VUaXRsZUluZm8udGl0bGU7XG5cdFx0XHRcdFx0Y29uc3Qgc09iamVjdFN1YnRpdGxlID0gb1BhZ2VUaXRsZUluZm8uc3VidGl0bGUudG9TdHJpbmcoKTtcblx0XHRcdFx0XHRpZiAoc09iamVjdFN1YnRpdGxlKSB7XG5cdFx0XHRcdFx0XHRzVGl0bGUgPSBzVGl0bGUgKyBcIiAtIFwiICsgc09iamVjdFN1YnRpdGxlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS50aWxlID0ge1xuXHRcdFx0XHRcdFx0dGl0bGU6IG9QYWdlVGl0bGVJbmZvLnRpdGxlLFxuXHRcdFx0XHRcdFx0c3VidGl0bGU6IG9QYWdlVGl0bGVJbmZvLnN1YnRpdGxlLnRvU3RyaW5nKClcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnRpdGxlID0gc1RpdGxlO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnRpdGxlID0gc1RpdGxlO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmphbS51cmwgPSBvRGF0YVswXTtcblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS51cmwgPSBvRGF0YVsxXTtcblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS5lbWFpbC51cmwgPSBvRGF0YVsyXTtcblxuXHRcdFx0XHRcdHJldHVybiBvU2hhcmVNZXRhZGF0YTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNoYXJlRXh0ZW5zaW9uT3ZlcnJpZGU7XG4iXX0=
313
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCIsImNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0IiwibUtleVZhbHVlcyIsImJJc0FjdGl2ZUVudGl0eURlZmluZWQiLCJhS2V5cyIsIk9iamVjdCIsImtleXMiLCJhRmlsdGVycyIsIm1hcCIsInNLZXkiLCJzVmFsdWUiLCJ1bmRlZmluZWQiLCJGaWx0ZXIiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwib0FjdGl2ZUZpbHRlciIsImZpbHRlcnMiLCJhbmQiLCJwdXNoIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGgiLCJvQ29udHJvbGxlciIsInNQYWdlRW50aXR5TmFtZSIsIm9GaWx0ZXIiLCJvTGlzdEJpbmRpbmciLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRNb2RlbCIsImJpbmRMaXN0IiwicmVxdWVzdENvbnRleHRzIiwidGhlbiIsIm9Db250ZXh0cyIsImxlbmd0aCIsImdldFBhdGgiLCJnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzIiwib0NvbnRleHQiLCJvRW50aXR5U2V0IiwiYUFjdGl2ZUNvbnRleHRwcm9taXNlcyIsImFQYWdlcyIsInNNZXRhUGF0aCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFQYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImFNZXRhUGF0aEFycmF5Iiwic3BsaXQiLCJzQ3VycmVudEhhc2hOb1BhcmFtcyIsIkhhc2hDaGFuZ2VyIiwiZ2V0SW5zdGFuY2UiLCJnZXRIYXNoIiwiYUN1cnJlbnRIYXNoQXJyYXkiLCJvUGFnZU1hcCIsImFQYWdlSGFzaEFycmF5IiwiZm9yRWFjaCIsInNQYWdlSGFzaCIsImFLZXlWYWx1ZXMiLCJzUGFnZUhhc2hOYW1lIiwiaSIsInNLZXlBc3NpZ25tZW50IiwiYVBhcnRzIiwic0tleVZhbHVlIiwib01ldGFNb2RlbCIsImFUZWNobmljYWxLZXlzIiwiZ2V0T2JqZWN0Iiwiam9pbiIsImxhc3RJbmRleE9mIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwib1BhZ2VFbnRpdHlTZXQiLCJzTmF2aWdhdGlvblBhdGgiLCJvUGFnZUluZm8iLCJzUGFnZUVudGl0eVNldE5hbWUiLCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsInBhZ2VFbnRpdHlOYW1lIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGhzIiwic1Jvb3RFbnRpdHlOYW1lIiwic3Vic3RyIiwib1BhZ2VDb250ZXh0IiwiUHJvbWlzZSIsImFsbCIsImFEYXRhIiwiYUFjdGl2ZUNvbnRleHRQYXRocyIsInNBY3RpdmVDb250ZXh0UGF0aCIsInNOYXZpZ2F0aW9Qcm9wZXJ0eSIsInNFbnRpdHlTZXROYW1lIiwidmFsdWVzIiwicmVwbGFjZSIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiaW5mbyIsInJlc29sdmUiLCJmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyIsIm9Qcm9taXNlIiwiYVNlbWFudGljS2V5cyIsIm9Nb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiU2VtYW50aWNLZXlIZWxwZXIiLCJnZXRTZW1hbnRpY0tleXMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInZpZXdMZXZlbCIsImdldFNoYXJlVXJsIiwiYklzRWRpdGFibGUiLCJiSXNTdGlja3lTdXBwb3J0ZWQiLCJzU2hhcmVVcmwiLCJzSGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwic0ZMUFVybCIsInNFcnJvciIsImVycm9yIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRKYW1VcmwiLCJiSXNFZGl0TW9kZSIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZUV4dGVuc2lvbk92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJiYXNlIiwib1VJTW9kZWwiLCJnZXRQcm9wZXJ0eSIsImdldENvbnRyb2xsZXIiLCJvUGFnZVRpdGxlSW5mbyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIm9EYXRhIiwic1RpdGxlIiwidGl0bGUiLCJzT2JqZWN0U3VidGl0bGUiLCJzdWJ0aXRsZSIsInRvU3RyaW5nIiwidGlsZSIsImVtYWlsIiwiamFtIiwidXJsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBT0EsTUFBSUEsd0JBQUo7O0FBRUEsV0FBU0MsZ0NBQVQsQ0FBMENDLFVBQTFDLEVBQTJEQyxzQkFBM0QsRUFBd0Y7QUFDdkYsUUFBTUMsS0FBSyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWUosVUFBWixDQUFkO0FBRUEsUUFBTUssUUFBUSxHQUFHSCxLQUFLLENBQUNJLEdBQU4sQ0FBVSxVQUFVQyxJQUFWLEVBQXdCO0FBQ2xELFVBQU1DLE1BQU0sR0FBR1IsVUFBVSxDQUFDTyxJQUFELENBQXpCOztBQUNBLFVBQUlDLE1BQU0sS0FBS0MsU0FBZixFQUEwQjtBQUN6QixlQUFPLElBQUlDLE1BQUosQ0FBV0gsSUFBWCxFQUFpQkksY0FBYyxDQUFDQyxFQUFoQyxFQUFvQ0osTUFBcEMsQ0FBUDtBQUNBO0FBQ0QsS0FMZ0IsQ0FBakI7O0FBT0EsUUFBSVAsc0JBQUosRUFBNEI7QUFDM0IsVUFBTVksYUFBYSxHQUFHLElBQUlILE1BQUosQ0FBVztBQUNoQ0ksUUFBQUEsT0FBTyxFQUFFLENBQUMsSUFBSUosTUFBSixDQUFXLDhCQUFYLEVBQTJDQyxjQUFjLENBQUNDLEVBQTFELEVBQThELElBQTlELENBQUQsQ0FEdUI7QUFFaENHLFFBQUFBLEdBQUcsRUFBRTtBQUYyQixPQUFYLENBQXRCO0FBS0FWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjSCxhQUFkO0FBQ0E7O0FBRUQsV0FBTyxJ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LGVBQUosRUFBcUI7QUFDcEJGLFlBQUFBLE1BQU0sYUFBTUEsTUFBTixnQkFBa0JFLGVBQWxCLENBQU47QUFDQTs7QUFDRFYsVUFBQUEsY0FBYyxDQUFDYSxJQUFmLEdBQXNCO0FBQ3JCSixZQUFBQSxLQUFLLEVBQUVKLGNBQWMsQ0FBQ0ksS0FERDtBQUVyQkUsWUFBQUEsUUFBUSxFQUFFRDtBQUZXLFdBQXRCO0FBSUFWLFVBQUFBLGNBQWMsQ0FBQ2MsS0FBZixDQUFxQkwsS0FBckIsR0FBNkJELE1BQTdCO0FBQ0FSLFVBQUFBLGNBQWMsQ0FBQ1MsS0FBZixHQUF1QkQsTUFBdkI7QUFDQVIsVUFBQUEsY0FBYyxDQUFDZSxHQUFmLENBQW1CQyxHQUFuQixHQUF5QlQsS0FBSyxDQUFDLENBQUQsQ0FBOUI7QUFDQVAsVUFBQUEsY0FBYyxDQUFDZ0IsR0FBZixHQUFxQlQsS0FBSyxDQUFDLENBQUQsQ0FBMUI7QUFDQVAsVUFBQUEsY0FBYyxDQUFDYyxLQUFmLENBQXFCRSxHQUFyQixHQUEyQlQsS0FBSyxDQUFDLENBQUQsQ0FBaEM7QUFFQSxpQkFBT1AsY0FBUDtBQUNBLFNBdEJLLEVBdUJML0MsS0F2QkssQ0F1QkMsVUFBVWtDLEtBQVYsRUFBc0I7QUFDNUJoQyxVQUFBQSxHQUFHLENBQUNnQyxLQUFKLENBQVVBLEtBQVY7QUFDQSxTQXpCSyxDQUFQO0FBMEJBLE9BN0JNLENBQVA7QUE4QkE7QUFuQzZCLEdBQS9CO1NBc0NlVyxzQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFNlbWFudGljS2V5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljS2V5SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBIYXNoQ2hhbmdlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9IYXNoQ2hhbmdlclwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcblxubGV0IGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZDogYm9vbGVhbjtcblxuZnVuY3Rpb24gY3JlYXRlRmlsdGVyVG9GZXRjaEFjdGl2ZUNvbnRleHQobUtleVZhbHVlczogYW55LCBiSXNBY3RpdmVFbnRpdHlEZWZpbmVkOiBhbnkpIHtcblx0Y29uc3QgYUtleXMgPSBPYmplY3Qua2V5cyhtS2V5VmFsdWVzKTtcblxuXHRjb25zdCBhRmlsdGVycyA9IGFLZXlzLm1hcChmdW5jdGlvbiAoc0tleTogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgc1ZhbHVlID0gbUtleVZhbHVlc1tzS2V5XTtcblx0XHRpZiAoc1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBuZXcgRmlsdGVyKHNLZXksIEZpbHRlck9wZXJhdG9yLkVRLCBzVmFsdWUpO1xuXHRcdH1cblx0fSk7XG5cblx0aWYgKGJJc0FjdGl2ZUVudGl0eURlZmluZWQpIHtcblx0XHRjb25zdCBvQWN0aXZlRmlsdGVyID0gbmV3IEZpbHRlcih7XG5cdFx0XHRmaWx0ZXJzOiBbbmV3IEZpbHRlcihcIlNpYmxpbmdFbnRpdHkvSXNBY3RpdmVFbnRpdHlcIiwgRmlsdGVyT3BlcmF0b3IuRVEsIHRydWUpXSxcblx0XHRcdGFuZDogZmFsc2Vcblx0XHR9KTtcblxuXHRcdGFGaWx0ZXJzLnB1c2gob0FjdGl2ZUZpbHRlcik7XG5cdH1cblxuXHRyZXR1cm4gbmV3IEZpbHRlcihhRmlsdGVycyBhcyBhbnksIHRydWUpO1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGgob0NvbnRyb2xsZXI6IGFueSwgc1BhZ2VFbnRpdHlOYW1lOiBhbnksIG9GaWx0ZXI6IGFueSkge1xuXHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvQ29udHJvbGxlclxuXHRcdC5nZXRWaWV3KClcblx0XHQuZ2V0QmluZGluZ0NvbnRleHQoKVxuXHRcdC5nZXRNb2RlbCgpXG5cdFx0LmJpbmRMaXN0KGAvJHtzUGFnZUVudGl0eU5hbWV9YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9GaWx0ZXIsIHsgXCIkJGdyb3VwSWRcIjogXCIkYXV0by5IZXJvZXNcIiB9KTtcblx0cmV0dXJuIG9MaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwgMikudGhlbihmdW5jdGlvbiAob0NvbnRleHRzOiBhbnkpIHtcblx0XHRpZiAob0NvbnRleHRzICYmIG9Db250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBvQ29udGV4dHNbMF0uZ2V0UGF0aCgpO1xuXHRcdH1cblx0fSk7XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnksIG9FbnRpdHlTZXQ6IGFueSkge1xuXHRjb25zdCBhQWN0aXZlQ29udGV4dHByb21pc2VzOiBhbnlbXSA9IFtdO1xuXHRjb25zdCBhUGFnZXM6IGFueVtdID0gW107XG5cdGxldCBzTWV0YVBhdGggPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE1ldGFQYXRoKG9Db250ZXh0LmdldFBhdGgoKSk7XG5cdGlmIChzTWV0YVBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRzTWV0YVBhdGggPSBzTWV0YVBhdGguc3Vic3RyaW5nKDEpO1xuXHR9XG5cdGNvbnN0IGFNZXRhUGF0aEFycmF5ID0gc01ldGFQYXRoLnNwbGl0KFwiL1wiKTtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGNvbnN0IGFDdXJyZW50SGFzaEFycmF5ID0gc0N1cnJlbnRIYXNoTm9QYXJhbXMuc3BsaXQoXCIvXCIpO1xuXG5cdC8vIG9QYWdlTWFwIC0gY3JlYXRpbmcgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgbWFwIG9mIG1ldGFwYXRoIG5hbWUgYW5kIGl0J3MgdGVjaG5pY2FsIGRldGFpbHNcblx0Ly8gd2hpY2ggaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGEgZmlsdGVyIHRvIGZldGNoIHRoZSByZWxhdmFudC9jb3JyZWN0IGFjdGl2ZSBjb250ZXh0XG5cdC8vIEV4YW1wbGU6IHtTYWxlc09yZGVyTWFuYWdlOnt0ZWNobmljYWxJRDp0ZWNobmljYWxJRFZhbHVlfSwgX0l0ZW06e3RlY2huaWNhbElEOnRlY2huaWNhbElEVmFsdWV9fSBldGMuLFxuXHRjb25zdCBvUGFnZU1hcDogYW55ID0ge307XG5cdGNvbnN0IGFQYWdlSGFzaEFycmF5OiBhbnlbXSA9IFtdO1xuXHRhQ3VycmVudEhhc2hBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzUGFnZUhhc2g6IGFueSkge1xuXHRcdGNvbnN0IGFLZXlWYWx1ZXMgPSBzUGFnZUhhc2guc3Vic3RyaW5nKHNQYWdlSGFzaC5pbmRleE9mKFwiKFwiKSArIDEsIHNQYWdlSGFzaC5sZW5ndGggLSAxKS5zcGxpdChcIixcIik7XG5cdFx0Y29uc3QgbUtleVZhbHVlczogYW55ID0ge307XG5cdFx0Y29uc3Qgc1BhZ2VIYXNoTmFtZSA9IHNQYWdlSGFzaC5zcGxpdChcIihcIilbMF07XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV0gPSB7fTtcblx0XHRhUGFnZUhhc2hBcnJheS5wdXNoKHNQYWdlSGFzaE5hbWUpO1xuXHRcdG9QYWdlTWFwW3NQYWdlSGFzaE5hbWVdW1wiYklzQWN0aXZlRW50aXR5RGVmaW5lZFwiXSA9IHRydWU7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhS2V5VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBzS2V5QXNzaWdubWVudCA9IGFLZXlWYWx1ZXNbaV07XG5cdFx0XHRjb25zdCBhUGFydHMgPSBzS2V5QXNzaWdubWVudC5zcGxpdChcIj1cIik7XG5cdFx0XHRsZXQgc0tleVZhbHVlID0gYVBhcnRzWzFdO1xuXHRcdFx0bGV0IHNLZXkgPSBhUGFydHNbMF07XG5cdFx0XHQvLyBJbiBjYXNlIGlmIG9ubHkgb25lIHRlY2huaWNhbCBrZXkgaXMgZGVmaW5lZCB0aGVuIHRoZSB1cmwganVzdCBjb250YWlucyB0aGUgdGVjaG5pY2FsSURWYWx1ZSBidXQgbm90IHRoZSB0ZWNobmljYWxJRFxuXHRcdFx0Ly8gRXhhbXBsZTogU2FsZXNPcmRlck1hbmFnZShJRD0xMTExMTEyOS1hYWFhLWJiYmItY2NjYy1kZGRkZWVlZWZmZmYsSXNBY3RpdmVFbnRpdHk9ZmFsc2UpL19JdGVtKDExMTExMTI5LWFhYWEtYmJiYi1jY2NjLWRkZGRlZWVlZmZmZilcblx0XHRcdC8vIEluIGFib3ZlIGV4YW1wbGUgU2FsZXNPcmRlckl0ZW0gaGFzIG9ubHkgb25lIHRlY2huaWNhbCBrZXkgZGVmaW5lZCwgaGVuY2UgdGVjaG5pY2FsSUQgaW5mbyBpcyBub3QgcHJlc2VudCBpbiB0aGUgdXJsXG5cdFx0XHQvLyBIZW5jZSBpbiBzdWNoIGNhc2VzIHdlIGdldCB0ZWNobmljYWwga2V5IGFuZCB1c2UgdGhlbSB0byBmZXRjaCBhY3RpdmUgY29udGV4dFxuXHRcdFx0aWYgKHNLZXlBc3NpZ25tZW50LmluZGV4T2YoXCI9XCIpID09PSAtMSkge1xuXHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0Y29uc3QgYVRlY2huaWNhbEtleXMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7YVBhZ2VIYXNoQXJyYXkuam9pbihcIi9cIil9LyRUeXBlLyRLZXlgKTtcblx0XHRcdFx0c0tleVZhbHVlID0gYVBhcnRzWzBdO1xuXHRcdFx0XHRzS2V5ID0gYVRlY2huaWNhbEtleXNbMF07XG5cdFx0XHRcdG9QYWdlTWFwW3NQYWdlSGFzaC5zcGxpdChcIihcIilbMF1dW1wiYklzQWN0aXZlRW50aXR5RGVmaW5lZFwiXSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc0tleSAhPT0gXCJJc0FjdGl2ZUVudGl0eVwiKSB7XG5cdFx0XHRcdGlmIChzS2V5VmFsdWUuaW5kZXhPZihcIidcIikgPT09IDAgJiYgc0tleVZhbHVlLmxhc3RJbmRleE9mKFwiJ1wiKSA9PT0gc0tleVZhbHVlLmxlbmd0aCAtIDEpIHtcblx0XHRcdFx0XHQvLyBSZW1vdmUgdGhlIHF1b3RlcyBmcm9tIHRoZSB2YWx1ZSBhbmQgZGVjb2RlIHNwZWNpYWwgY2hhcnNcblx0XHRcdFx0XHRzS2V5VmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoc0tleVZhbHVlLnN1YnN0cmluZygxLCBzS2V5VmFsdWUubGVuZ3RoIC0gMSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1LZXlWYWx1ZXNbc0tleV0gPSBzS2V5VmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdG9QYWdlTWFwW3NQYWdlSGFzaE5hbWVdLm1LZXlWYWx1ZXMgPSBtS2V5VmFsdWVzO1xuXHR9KTtcblxuXHRsZXQgb1BhZ2VFbnRpdHlTZXQgPSBvRW50aXR5U2V0O1xuXHRhTWV0YVBhdGhBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzTmF2aWdhdGlvblBhdGg6IGFueSkge1xuXHRcdGNvbnN0IG9QYWdlSW5mbzogYW55ID0ge307XG5cdFx0Y29uc3Qgc1BhZ2VFbnRpdHlTZXROYW1lID0gb1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgJiYgb1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbc05hdmlnYXRpb25QYXRoXTtcblx0XHRpZiAoc1BhZ2VFbnRpdHlTZXROYW1lKSB7XG5cdFx0XHRvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUgPSBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tzTmF2aWdhdGlvblBhdGhdO1xuXHRcdFx0b1BhZ2VFbnRpdHlTZXQgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChgLyR7c1BhZ2VFbnRpdHlTZXROYW1lfWApIHx8IG9FbnRpdHlTZXQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9QYWdlSW5mby5wYWdlRW50aXR5TmFtZSA9IHNOYXZpZ2F0aW9uUGF0aDtcblx0XHR9XG5cdFx0b1BhZ2VJbmZvLm1LZXlWYWx1ZXMgPSBvUGFnZU1hcFtzTmF2aWdhdGlvblBhdGhdLm1LZXlWYWx1ZXM7XG5cdFx0b1BhZ2VJbmZvLmJJc0FjdGl2ZUVudGl0eURlZmluZWQgPSBvUGFnZU1hcFtzTmF2aWdhdGlvblBhdGhdLmJJc0FjdGl2ZUVudGl0eURlZmluZWQ7XG5cdFx0YVBhZ2VzLnB1c2gob1BhZ2VJbmZvKTtcblx0fSk7XG5cblx0YVBhZ2VzLmZvckVhY2goZnVuY3Rpb24gKG9QYWdlSW5mbzogYW55KSB7XG5cdFx0Y29uc3Qgb0ZpbHRlciA9IGNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0KG9QYWdlSW5mby5tS2V5VmFsdWVzLCBvUGFnZUluZm8uYklzQWN0aXZlRW50aXR5RGVmaW5lZCk7XG5cdFx0YUFjdGl2ZUNvbnRleHRwcm9taXNlcy5wdXNoKGdldEFjdGl2ZUNvbnRleHRQYXRoKG9Db250cm9sbGVyLCBvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUsIG9GaWx0ZXIpKTtcblx0fSk7XG5cblx0cmV0dXJuIGFBY3RpdmVDb250ZXh0cHJvbWlzZXM7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGZldGNoIGFjdGl2ZSBjb250ZXh0IHBhdGgncy5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIFBhZ2UgQ29udGV4dFxuICogQHBhcmFtIG9Db250cm9sbGVyXG4gKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgdGhlIGFjdGl2ZSBjb250ZXh0J3MgYXJlIGZldGNoZWRcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0c1Jvb3RFbnRpdHlOYW1lID0gc1Jvb3RFbnRpdHlOYW1lLnN1YnN0cmluZygxKTtcblx0fVxuXHRjb25zdCBvRW50aXR5U2V0ID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKS5nZXRPYmplY3QoYC8ke3NSb290RW50aXR5TmFtZX1gKTtcblx0Y29uc3Qgb1BhZ2VDb250ZXh0ID0gb0NvbnRleHQ7XG5cdGNvbnN0IGFBY3RpdmVDb250ZXh0cHJvbWlzZXMgPSBnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzKG9Db250ZXh0LCBvQ29udHJvbGxlciwgb0VudGl0eVNldCk7XG5cdGlmIChhQWN0aXZlQ29udGV4dHByb21pc2VzLmxlbmd0aCA+IDApIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYUFjdGl2ZUNvbnRleHRwcm9taXNlcylcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChhRGF0YTogYW55W10pIHtcblx0XHRcdFx0Y29uc3QgYUFjdGl2ZUNvbnRleHRQYXRocyA9IFtdO1xuXHRcdFx0XHRsZXQgb1BhZ2VFbnRpdHlTZXQgPSBvRW50aXR5U2V0O1xuXHRcdFx0XHRpZiAoYURhdGFbMF0uaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goYURhdGFbMF0uc3Vic3RyaW5nKDEpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goYURhdGFbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEluIHRoZSBhY3RpdmUgY29udGV4dCBwYXRocyBpZGVudGlmeSBhbmQgcmVwbGFjZSB0aGUgZW50aXR5U2V0IE5hbWUgd2l0aCBjb3JyZXNwb25kaW5nIG5hdmlnYXRpb24gcHJvcGVydHkgbmFtZVxuXHRcdFx0XHQvLyBSZXF1aXJlZCB0byBmb3JtIHRoZSB1cmwgcG9pbnRpbmcgdG8gYWN0aXZlIGNvbnRleHRcblx0XHRcdFx0Ly8gRXhhbXBsZSA6IFNhbGVzT3JkZXJJdGVtIC0tPiBfSXRlbSwgTWF0ZXJpYWxEZXRhaWxzIC0tPiBfTWF0ZXJpYWxEZXRhaWxzIGV0Yy4sXG5cdFx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgYURhdGEubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRsZXQgc0FjdGl2ZUNvbnRleHRQYXRoID0gYURhdGFbaV07XG5cdFx0XHRcdFx0bGV0IHNOYXZpZ2F0aW9Qcm9wZXJ0eSA9IFwiXCI7XG5cdFx0XHRcdFx0bGV0IHNFbnRpdHlTZXROYW1lID0gc0FjdGl2ZUNvbnRleHRQYXRoICYmIHNBY3RpdmVDb250ZXh0UGF0aC5zdWJzdHIoMCwgc0FjdGl2ZUNvbnRleHRQYXRoLmluZGV4T2YoXCIoXCIpKTtcblx0XHRcdFx0XHRpZiAoc0VudGl0eVNldE5hbWUuaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRcdHNFbnRpdHlTZXROYW1lID0gc0VudGl0eVNldE5hbWUuc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoc0FjdGl2ZUNvbnRleHRQYXRoLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRzQWN0aXZlQ29udGV4dFBhdGggPSBzQWN0aXZlQ29udGV4dFBhdGguc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzTmF2aWdhdGlvUHJvcGVydHkgPSBPYmplY3Qua2V5cyhvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZylbXG5cdFx0XHRcdFx0XHRPYmplY3QudmFsdWVzKG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKS5pbmRleE9mKHNFbnRpdHlTZXROYW1lKVxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0aWYgKHNOYXZpZ2F0aW9Qcm9wZXJ0eSkge1xuXHRcdFx0XHRcdFx0YUFjdGl2ZUNvbnRleHRQYXRocy5wdXNoKHNBY3RpdmVDb250ZXh0UGF0aC5yZXBsYWNlKHNFbnRpdHlTZXROYW1lLCBzTmF2aWdhdGlvUHJvcGVydHkpKTtcblx0XHRcdFx0XHRcdG9QYWdlRW50aXR5U2V0ID0gb1BhZ2VDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX1gKSB8fCBvRW50aXR5U2V0O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goc0FjdGl2ZUNvbnRleHRQYXRoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGFBY3RpdmVDb250ZXh0UGF0aHM7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuaW5mbyhcIkZhaWxlZCB0byByZXRyaWV2ZSBvbmUgb3IgbW9yZSBhY3RpdmUgY29udGV4dCBwYXRoJ3NcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxufVxuZnVuY3Rpb24gZmV0Y2hBY3RpdmVDb250ZXh0UGF0aHMob0NvbnRleHQ6IGFueSwgb0NvbnRyb2xsZXI6IGFueSkge1xuXHRsZXQgb1Byb21pc2UsIGFTZW1hbnRpY0tleXM7XG5cdGNvbnN0IHNDdXJyZW50SGFzaE5vUGFyYW1zID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCkuc3BsaXQoXCI/XCIpWzBdO1xuXHRpZiAob0NvbnRleHQpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Ykdsb2JhbElzU3RpY2t5U3VwcG9ydGVkID0gTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKG9NZXRhTW9kZWwpO1xuXHRcdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRcdGlmIChzUm9vdEVudGl0eU5hbWUuaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdHNSb290RW50aXR5TmFtZSA9IHNSb290RW50aXR5TmFtZS5zdWJzdHJpbmcoMSk7XG5cdFx0fVxuXHRcdGFTZW1hbnRpY0tleXMgPSBTZW1hbnRpY0tleUhlbHBlci5nZXRTZW1hbnRpY0tleXMob01ldGFNb2RlbCwgc1Jvb3RFbnRpdHlOYW1lKTtcblx0fVxuXHQvLyBGZXRjaCBhY3RpdmUgY29udGV4dCBkZXRhaWxzIGluY2FzZSBvZiBiZWxvdyBzY2VuYXJpbydzKHdoZXJlIHBhZ2UgaXMgbm90IHN0aWNreSBzdXBwb3J0ZWQod2UgZG8gbm90IGhhdmUgZHJhZnQgaW5zdGFuY2UpKVxuXHQvLyAxLiBJbiBjYXNlIG9mIGRyYWZ0IGVuYWJsZWQgT2JqZWN0IHBhZ2Ugd2hlcmUgc2VtYW50aWMga2V5IGJhc2VkIFVSTCBpcyBub3QgcG9zc2libGUobGlrZSBzZW1hbnRpYyBrZXlzIGFyZSBub3QgbW9kZWxlZCBpbiB0aGUgZW50aXR5IHNldClcblx0Ly8gMi4gSW4gY2FzZSBvZiBkcmFmdCBlbmFibGVkIFN1YiBPYmplY3QgUGFnZXMgKHdoZXJlIHNlbWFudGljIGJvb2ttYXJraW5nIGlzIG5vdCBzdXBwb3J0ZWQpXG5cdGNvbnN0IG9WaWV3RGF0YSA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpO1xuXHRpZiAob0NvbnRleHQgJiYgIWJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCAmJiAoKG9WaWV3RGF0YS52aWV3TGV2ZWwgPT09IDEgJiYgIWFTZW1hbnRpY0tleXMpIHx8IG9WaWV3RGF0YS52aWV3TGV2ZWwgPj0gMikpIHtcblx0XHRvUHJvbWlzZSA9IGdldEFjdGl2ZUNvbnRleHRQYXRocyhvQ29udGV4dCwgb0NvbnRyb2xsZXIpO1xuXHRcdHJldHVybiBvUHJvbWlzZTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cbn1cblxuLy8gLyoqXG4vLyAgKiBHZXQgc2hhcmUgVVJMLlxuLy8gICogQHBhcmFtIGJJc0VkaXRhYmxlXG4vLyAgKiBAcGFyYW0gYklzU3RpY2t5U3VwcG9ydGVkXG4vLyAgKiBAcGFyYW0gYUFjdGl2ZUNvbnRleHRQYXRoc1xuLy8gICogQHJldHVybnMge3N0cmluZ30gVGhlIHNoYXJlIFVSTFxuLy8gICogQHByb3RlY3RlZFxuLy8gICogQHN0YXRpY1xuLy8gICovXG5mdW5jdGlvbiBnZXRTaGFyZVVybChiSXNFZGl0YWJsZTogYW55LCBiSXNTdGlja3lTdXBwb3J0ZWQ6IGFueSwgYUFjdGl2ZUNvbnRleHRQYXRoczogYW55KSB7XG5cdGxldCBzU2hhcmVVcmw7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRpZiAoYklzRWRpdGFibGUgJiYgIWJJc1N0aWNreVN1cHBvcnRlZCAmJiBhQWN0aXZlQ29udGV4dFBhdGhzKSB7XG5cdFx0c1NoYXJlVXJsID0gc0Jhc2VQYXRoICsgYUFjdGl2ZUNvbnRleHRQYXRocy5qb2luKFwiL1wiKTtcblx0fSBlbHNlIHtcblx0XHRzU2hhcmVVcmwgPSBzSGFzaCA/IHNCYXNlUGF0aCArIHNIYXNoIDogd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdH1cblx0cmV0dXJuIHNTaGFyZVVybDtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlRW1haWxVcmwoKSB7XG5cdGNvbnN0IG9VU2hlbGxDb250YWluZXIgPSBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyO1xuXHRpZiAob1VTaGVsbENvbnRhaW5lcikge1xuXHRcdHJldHVybiBvVVNoZWxsQ29udGFpbmVyXG5cdFx0XHQuZ2V0RkxQVXJsQXN5bmModHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNGTFBVcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZG9jdW1lbnQuVVJMKTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRKYW1VcmwoYklzRWRpdE1vZGU6IGJvb2xlYW4sIGJJc1N0aWNreVN1cHBvcnRlZDogYW55LCBhQWN0aXZlQ29udGV4dFBhdGhzOiBhbnkpIHtcblx0bGV0IHNKYW1Vcmw6IHN0cmluZztcblx0Y29uc3Qgc0hhc2ggPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKTtcblx0Y29uc3Qgc0Jhc2VQYXRoID0gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoXG5cdFx0PyAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2goXCJcIilcblx0XHQ6IFwiXCI7XG5cdGlmIChiSXNFZGl0TW9kZSAmJiAhYklzU3RpY2t5U3VwcG9ydGVkICYmIGFBY3RpdmVDb250ZXh0UGF0aHMpIHtcblx0XHRzSmFtVXJsID0gc0Jhc2VQYXRoICsgYUFjdGl2ZUNvbnRleHRQYXRocy5qb2luKFwiL1wiKTtcblx0fSBlbHNlIHtcblx0XHRzSmFtVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHR9XG5cdC8vIGluIGNhc2Ugd2UgYXJlIGluIGNGTFAgc2NlbmFyaW8sIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nXG5cdC8vIGluc2lkZSBhbiBpZnJhbWUsIGFuZCB0aGVyZSBmb3Igd2UgbmVlZCB0byBnZXQgdGhlIGNGTFAgVVJMXG5cdC8vIGFuZCBub3QgJ2RvY3VtZW50LlVSTCcgdGhhdCByZXByZXNlbnRzIHRoZSBpZnJhbWUgVVJMXG5cdGlmIChzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUoKSkge1xuXHRcdHNhcC51c2hlbGwuQ29udGFpbmVyLmdldEZMUFVybCh0cnVlKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNVcmw6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gc1VybC5zdWJzdHIoMCwgc1VybC5pbmRleE9mKFwiI1wiKSkgKyBzSmFtVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBzSmFtVXJsKTtcblx0fVxufVxuXG5jb25zdCBTaGFyZUV4dGVuc2lvbk92ZXJyaWRlID0ge1xuXHRhZGFwdFNoYXJlTWV0YWRhdGE6IGZ1bmN0aW9uICh0aGlzOiBTaGFyZSwgb1NoYXJlTWV0YWRhdGE6IGFueSkge1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpLFxuXHRcdFx0b1VJTW9kZWwgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKFwidWlcIiksXG5cdFx0XHRiSXNFZGl0YWJsZSA9IG9VSU1vZGVsLmdldFByb3BlcnR5KFwiL2lzRWRpdGFibGVcIik7XG5cdFx0cmV0dXJuIGZldGNoQWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0LCB0aGlzLmJhc2UuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSkudGhlbigoYUFjdGl2ZUNvbnRleHRQYXRocykgPT4ge1xuXHRcdFx0Y29uc3Qgb1BhZ2VUaXRsZUluZm8gPSAodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXIpLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpO1xuXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoW1xuXHRcdFx0XHRnZXRKYW1VcmwoYklzRWRpdGFibGUsIGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCwgYUFjdGl2ZUNvbnRleHRQYXRocyksXG5cdFx0XHRcdGdldFNoYXJlVXJsKGJJc0VkaXRhYmxlLCBiR2xvYmFsSXNTdGlja3lTdXBwb3J0ZWQsIGFBY3RpdmVDb250ZXh0UGF0aHMpLFxuXHRcdFx0XHRnZXRTaGFyZUVtYWlsVXJsKClcblx0XHRcdF0pXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvRGF0YSkge1xuXHRcdFx0XHRcdGxldCBzVGl0bGUgPSBvUGFnZVRpdGxlSW5mby50aXRsZTtcblx0XHRcdFx0XHRjb25zdCBzT2JqZWN0U3VidGl0bGUgPSBvUGFnZVRpdGxlSW5mby5zdWJ0aXRsZSA/IG9QYWdlVGl0bGVJbmZvLnN1YnRpdGxlLnRvU3RyaW5nKCkgOiBcIlwiO1xuXHRcdFx0XHRcdGlmIChzT2JqZWN0U3VidGl0bGUpIHtcblx0XHRcdFx0XHRcdHNUaXRsZSA9IGAke3NUaXRsZX0gLSAke3NPYmplY3RTdWJ0aXRsZX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS50aWxlID0ge1xuXHRcdFx0XHRcdFx0dGl0bGU6IG9QYWdlVGl0bGVJbmZvLnRpdGxlLFxuXHRcdFx0XHRcdFx0c3VidGl0bGU6IHNPYmplY3RTdWJ0aXRsZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuZW1haWwudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuamFtLnVybCA9IG9EYXRhWzBdO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnVybCA9IG9EYXRhWzFdO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCA9IG9EYXRhWzJdO1xuXG5cdFx0XHRcdFx0cmV0dXJuIG9TaGFyZU1ldGFkYXRhO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhcmVFeHRlbnNpb25PdmVycmlkZTtcbiJdfQ==
@@ -1,13 +1,13 @@
1
1
  import Log from "sap/base/Log";
2
- import Share from "sap/fe/core/controllerextensions/Share";
2
+ import type Share from "sap/fe/core/controllerextensions/Share";
3
3
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
4
4
  import SemanticKeyHelper from "sap/fe/core/helpers/SemanticKeyHelper";
5
- import ObjectPageController from "sap/fe/templates/ObjectPage/ObjectPageController.controller";
5
+ import type ObjectPageController from "sap/fe/templates/ObjectPage/ObjectPageController.controller";
6
6
  import HashChanger from "sap/ui/core/routing/HashChanger";
7
7
  import Filter from "sap/ui/model/Filter";
8
8
  import FilterOperator from "sap/ui/model/FilterOperator";
9
9
 
10
- let bIsStickySupported: boolean;
10
+ let bGlobalIsStickySupported: boolean;
11
11
 
12
12
  function createFilterToFetchActiveContext(mKeyValues: any, bIsActiveEntityDefined: any) {
13
13
  const aKeys = Object.keys(mKeyValues);
@@ -28,15 +28,14 @@ function createFilterToFetchActiveContext(mKeyValues: any, bIsActiveEntityDefine
28
28
  aFilters.push(oActiveFilter);
29
29
  }
30
30
 
31
- const oCombinedFilter = new Filter(aFilters as any, true);
32
- return oCombinedFilter;
31
+ return new Filter(aFilters as any, true);
33
32
  }
34
33
  function getActiveContextPath(oController: any, sPageEntityName: any, oFilter: any) {
35
34
  const oListBinding = oController
36
35
  .getView()
37
36
  .getBindingContext()
38
37
  .getModel()
39
- .bindList("/" + sPageEntityName, undefined, undefined, oFilter, { "$$groupId": "$auto.Heroes" });
38
+ .bindList(`/${sPageEntityName}`, undefined, undefined, oFilter, { "$$groupId": "$auto.Heroes" });
40
39
  return oListBinding.requestContexts(0, 2).then(function (oContexts: any) {
41
40
  if (oContexts && oContexts.length) {
42
41
  return oContexts[0].getPath();
@@ -77,7 +76,7 @@ function getActiveContextInstances(oContext: any, oController: any, oEntitySet:
77
76
  // Hence in such cases we get technical key and use them to fetch active context
78
77
  if (sKeyAssignment.indexOf("=") === -1) {
79
78
  const oMetaModel = oContext.getModel().getMetaModel();
80
- const aTechnicalKeys = oMetaModel.getObject("/" + aPageHashArray.join("/") + "/$Type/$Key");
79
+ const aTechnicalKeys = oMetaModel.getObject(`/${aPageHashArray.join("/")}/$Type/$Key`);
81
80
  sKeyValue = aParts[0];
82
81
  sKey = aTechnicalKeys[0];
83
82
  oPageMap[sPageHash.split("(")[0]]["bIsActiveEntityDefined"] = false;
@@ -100,11 +99,7 @@ function getActiveContextInstances(oContext: any, oController: any, oEntitySet:
100
99
  const sPageEntitySetName = oPageEntitySet.$NavigationPropertyBinding && oPageEntitySet.$NavigationPropertyBinding[sNavigationPath];
101
100
  if (sPageEntitySetName) {
102
101
  oPageInfo.pageEntityName = oPageEntitySet.$NavigationPropertyBinding[sNavigationPath];
103
- oPageEntitySet =
104
- oContext
105
- .getModel()
106
- .getMetaModel()
107
- .getObject("/" + sPageEntitySetName) || oEntitySet;
102
+ oPageEntitySet = oContext.getModel().getMetaModel().getObject(`/${sPageEntitySetName}`) || oEntitySet;
108
103
  } else {
109
104
  oPageInfo.pageEntityName = sNavigationPath;
110
105
  }
@@ -123,9 +118,10 @@ function getActiveContextInstances(oContext: any, oController: any, oEntitySet:
123
118
 
124
119
  /**
125
120
  * Method to fetch active context path's.
126
- * @param {sap.ui.model.odata.v4.Context} oContext The Page Context
121
+ *
122
+ * @param oContext The Page Context
127
123
  * @param oController
128
- * @returns {Promise} Promise which is resolved once the active context's are fetched
124
+ * @returns Promise which is resolved once the active context's are fetched
129
125
  */
130
126
  function getActiveContextPaths(oContext: any, oController: any) {
131
127
  const sCurrentHashNoParams = HashChanger.getInstance().getHash().split("?")[0];
@@ -133,10 +129,7 @@ function getActiveContextPaths(oContext: any, oController: any) {
133
129
  if (sRootEntityName.indexOf("/") === 0) {
134
130
  sRootEntityName = sRootEntityName.substring(1);
135
131
  }
136
- const oEntitySet = oContext
137
- .getModel()
138
- .getMetaModel()
139
- .getObject("/" + sRootEntityName);
132
+ const oEntitySet = oContext.getModel().getMetaModel().getObject(`/${sRootEntityName}`);
140
133
  const oPageContext = oContext;
141
134
  const aActiveContextpromises = getActiveContextInstances(oContext, oController, oEntitySet);
142
135
  if (aActiveContextpromises.length > 0) {
@@ -167,11 +160,7 @@ function getActiveContextPaths(oContext: any, oController: any) {
167
160
  ];
168
161
  if (sNavigatioProperty) {
169
162
  aActiveContextPaths.push(sActiveContextPath.replace(sEntitySetName, sNavigatioProperty));
170
- oPageEntitySet =
171
- oPageContext
172
- .getModel()
173
- .getMetaModel()
174
- .getObject("/" + sEntitySetName) || oEntitySet;
163
+ oPageEntitySet = oPageContext.getModel().getMetaModel().getObject(`/${sEntitySetName}`) || oEntitySet;
175
164
  } else {
176
165
  aActiveContextPaths.push(sActiveContextPath);
177
166
  }
@@ -191,7 +180,7 @@ function fetchActiveContextPaths(oContext: any, oController: any) {
191
180
  if (oContext) {
192
181
  const oModel = oContext.getModel();
193
182
  const oMetaModel = oModel.getMetaModel();
194
- bIsStickySupported = ModelHelper.isStickySessionSupported(oMetaModel);
183
+ bGlobalIsStickySupported = ModelHelper.isStickySessionSupported(oMetaModel);
195
184
  let sRootEntityName = sCurrentHashNoParams && sCurrentHashNoParams.substr(0, sCurrentHashNoParams.indexOf("("));
196
185
  if (sRootEntityName.indexOf("/") === 0) {
197
186
  sRootEntityName = sRootEntityName.substring(1);
@@ -202,7 +191,7 @@ function fetchActiveContextPaths(oContext: any, oController: any) {
202
191
  // 1. In case of draft enabled Object page where semantic key based URL is not possible(like semantic keys are not modeled in the entity set)
203
192
  // 2. In case of draft enabled Sub Object Pages (where semantic bookmarking is not supported)
204
193
  const oViewData = oController.getView().getViewData();
205
- if (oContext && !bIsStickySupported && ((oViewData.viewLevel === 1 && !aSemanticKeys) || oViewData.viewLevel >= 2)) {
194
+ if (oContext && !bGlobalIsStickySupported && ((oViewData.viewLevel === 1 && !aSemanticKeys) || oViewData.viewLevel >= 2)) {
206
195
  oPromise = getActiveContextPaths(oContext, oController);
207
196
  return oPromise;
208
197
  } else {
@@ -284,19 +273,19 @@ const ShareExtensionOverride = {
284
273
  const oPageTitleInfo = (this.base.getView().getController() as ObjectPageController)._getPageTitleInformation();
285
274
 
286
275
  return Promise.all([
287
- getJamUrl(bIsEditable, bIsStickySupported, aActiveContextPaths),
288
- getShareUrl(bIsEditable, bIsStickySupported, aActiveContextPaths),
276
+ getJamUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths),
277
+ getShareUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths),
289
278
  getShareEmailUrl()
290
279
  ])
291
280
  .then(function (oData) {
292
281
  let sTitle = oPageTitleInfo.title;
293
- const sObjectSubtitle = oPageTitleInfo.subtitle.toString();
282
+ const sObjectSubtitle = oPageTitleInfo.subtitle ? oPageTitleInfo.subtitle.toString() : "";
294
283
  if (sObjectSubtitle) {
295
- sTitle = sTitle + " - " + sObjectSubtitle;
284
+ sTitle = `${sTitle} - ${sObjectSubtitle}`;
296
285
  }
297
286
  oShareMetadata.tile = {
298
287
  title: oPageTitleInfo.title,
299
- subtitle: oPageTitleInfo.subtitle.toString()
288
+ subtitle: sObjectSubtitle
300
289
  };
301
290
  oShareMetadata.email.title = sTitle;
302
291
  oShareMetadata.title = sTitle;
@@ -26,7 +26,7 @@ sap.ui.define(["sap/fe/core/helpers/KeepAliveHelper", "sap/fe/core/library"], fu
26
26
  break;
27
27
 
28
28
  default:
29
- throw new Error("unhandled variant setting: " + oViewData.getVariantManagement());
29
+ throw new Error("unhandled variant setting: ".concat(oViewData.getVariantManagement()));
30
30
  }
31
31
 
32
32
  oController._findTables().forEach(function (oTable) {
@@ -72,4 +72,4 @@ sap.ui.define(["sap/fe/core/helpers/KeepAliveHelper", "sap/fe/core/library"], fu
72
72
  };
73
73
  return ViewStateExtensionOverride;
74
74
  }, false);
75
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpZXdTdGF0ZS50cyJdLCJuYW1lcyI6WyJWYXJpYW50TWFuYWdlbWVudCIsIkNvcmVMaWJyYXJ5IiwiVmlld1N0YXRlRXh0ZW5zaW9uT3ZlcnJpZGUiLCJhcHBseUluaXRpYWxTdGF0ZU9ubHkiLCJhZGFwdFN0YXRlQ29udHJvbHMiLCJhU3RhdGVDb250cm9scyIsIm9WaWV3IiwiZ2V0VmlldyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsIm9WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwiYkNvbnRyb2xWTSIsInZhcmlhbnRNYW5hZ2VtZW50IiwiQ29udHJvbCIsIlBhZ2UiLCJOb25lIiwiRXJyb3IiLCJnZXRWYXJpYW50TWFuYWdlbWVudCIsIl9maW5kVGFibGVzIiwiZm9yRWFjaCIsIm9UYWJsZSIsIm9RdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwicHVzaCIsImdldFZhcmlhbnQiLCJieUlkIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwic1JlZnJlc2hTdHJhdGVneSIsIktlZXBBbGl2ZUhlbHBlciIsImdldFZpZXdSZWZyZXNoSW5mbyIsImFDb250cm9sc1RvUmVmcmVzaCIsIm9PYmplY3RQYWdlQ29udHJvbCIsIl9nZXRPYmplY3RQYWdlTGF5b3V0Q29udHJvbCIsImFWaWV3Q29udHJvbHMiLCJjb25jYXQiLCJnZXRDb250cm9sc0ZvclJlZnJlc2giLCJyZWR1Y2UiLCJhUHJldkNvbnRyb2xzIiwib0NvbnRyb2wiLCJpbmRleE9mIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBSUEsTUFBTUEsaUJBQWlCLEdBQUdDLFdBQVcsQ0FBQ0QsaUJBQXRDO0FBRUEsTUFBTUUsMEJBQTBCLEdBQUc7QUFDbENDLElBQUFBLHFCQUFxQixFQUFFLFlBQVk7QUFDbEMsYUFBTyxLQUFQO0FBQ0EsS0FIaUM7QUFJbENDLElBQUFBLGtCQUFrQixFQUFFLFVBQTJCQyxjQUEzQixFQUFnRDtBQUNuRSxVQUFNQyxLQUFLLEdBQUcsS0FBS0MsT0FBTCxFQUFkO0FBQUEsVUFDQ0MsV0FBVyxHQUFHRixLQUFLLENBQUNHLGFBQU4sRUFEZjtBQUFBLFVBRUNDLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxXQUFOLEVBRmI7QUFHQSxVQUFJQyxVQUFVLEdBQUcsS0FBakI7O0FBRUEsY0FBUUYsU0FBUyxDQUFDRyxpQkFBbEI7QUFDQyxhQUFLYixpQkFBaUIsQ0FBQ2MsT0FBdkI7QUFDQ0YsVUFBQUEsVUFBVSxHQUFHLElBQWI7QUFDQTs7QUFDRCxhQUFLWixpQkFBaUIsQ0FBQ2UsSUFBdkI7QUFDQSxhQUFLZixpQkFBaUIsQ0FBQ2dCLElBQXZCO0FBQ0M7O0FBQ0Q7QUFDQyxnQkFBTSxJQUFJQyxLQUFKLENBQVUsZ0NBQWdDUCxTQUFTLENBQUNRLG9CQUFWLEVBQTFDLENBQU47QUFSRjs7QUFXQ1YsTUFBQUEsV0FBRCxDQUFzQ1csV0FBdEMsR0FBb0RDLE9BQXBELENBQTRELFVBQVVDLE1BQVYsRUFBdUI7QUFDbEYsWUFBTUMsWUFBWSxHQUFHRCxNQUFNLENBQUNFLGNBQVAsRUFBckI7O0FBQ0EsWUFBSUQsWUFBSixFQUFrQjtBQUNqQmpCLFVBQUFBLGNBQWMsQ0FBQ21CLElBQWYsQ0FBb0JGLFlBQXBCO0FBQ0E7O0FBQ0QsWUFBSVYsVUFBSixFQUFnQjtBQUNmUCxVQUFBQSxjQUFjLENBQUNtQixJQUFmLENBQW9CSCxNQUFNLENBQUNJLFVBQVAsRUFBcEI7QUFDQTtBQUNELE9BUkQ7O0FBVUFwQixNQUFBQSxjQUFjLENBQUNtQixJQUFmLENBQW9CbEIsS0FBSyxDQUFDb0IsSUFBTixDQUFXLGdCQUFYLENBQXBCO0FBQ0EsS0FoQ2lDO0FBaUNsQ0MsSUFBQUEsMkJBQTJCLEVBQUUsVUFBMkJDLFNBQTNCLEVBQTJDO0FBQ3ZFLFVBQU10QixLQUFLLEdBQUcsS0FBS0MsT0FBTCxFQUFkO0FBQUEsVUFDQ3NCLGdCQUFnQixHQUFHQyxlQUFlLENBQUNDLGtCQUFoQixDQUFtQ3pCLEtBQW5DLENBRHBCO0FBQUEsVUFFQ0UsV0FBVyxHQUFHRixLQUFLLENBQUNHLGFBQU4sRUFGZjtBQUdBLFVBQUl1QixrQkFBNkIsR0FBRyxFQUFwQzs7QUFFQSxVQUFJSCxnQkFBSixFQUFzQjtBQUNyQixZQUFNSSxrQkFBa0IsR0FBSXpCLFdBQUQsQ0FBc0MwQiwyQkFBdEMsRUFBM0I7O0FBQ0FGLFFBQUFBLGtCQUFrQixDQUFDUixJQUFuQixDQUF3QlMsa0JBQXhCO0FBQ0E7O0FBQ0QsVUFBSUosZ0JBQWdCLEtBQUsscUJBQXpCLEVBQWdEO0FBQy9DLFlBQU1NLGFBQWEsR0FBSTNCLFdBQUQsQ0FBc0NXLFdBQXRDLEVBQXRCOztBQUNBYSxRQUFBQSxrQkFBa0IsR0FBR0Esa0JBQWtCLENBQUNJLE1BQW5CLENBQTBCTixlQUFlLENBQUNPLHFCQUFoQixDQUFzQy9CLEtBQXRDLEVBQTZDNkIsYUFBN0MsS0FBK0QsRUFBekYsQ0FBckI7QUFDQTs7QUFDRCxhQUFPSCxrQkFBa0IsQ0FBQ00sTUFBbkIsQ0FBMEIsVUFBVUMsYUFBVixFQUE4QkMsUUFBOUIsRUFBNkM7QUFDN0UsWUFBSUQsYUFBYSxDQUFDRSxPQUFkLENBQXNCRCxRQUF0QixNQUFvQyxDQUFDLENBQXpDLEVBQTRDO0FBQzNDRCxVQUFBQSxhQUFhLENBQUNmLElBQWQsQ0FBbUJnQixRQUFuQjtBQUNBOztBQUNELGVBQU9ELGFBQVA7QUFDQSxPQUxNLEVBS0pYLFNBTEksQ0FBUDtBQU1BO0FBckRpQyxHQUFuQztTQXdEZTFCLDBCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgQ29yZUxpYnJhcnkgZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5cbmNvbnN0IFZhcmlhbnRNYW5hZ2VtZW50ID0gQ29yZUxpYnJhcnkuVmFyaWFudE1hbmFnZW1lbnQ7XG5cbmNvbnN0IFZpZXdTdGF0ZUV4dGVuc2lvbk92ZXJyaWRlID0ge1xuXHRhcHBseUluaXRpYWxTdGF0ZU9ubHk6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0sXG5cdGFkYXB0U3RhdGVDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSwgYVN0YXRlQ29udHJvbHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSxcblx0XHRcdG9WaWV3RGF0YSA9IG9WaWV3LmdldFZpZXdEYXRhKCkgYXMgYW55O1xuXHRcdGxldCBiQ29udHJvbFZNID0gZmFsc2U7XG5cblx0XHRzd2l0Y2ggKG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudC5Db250cm9sOlxuXHRcdFx0XHRiQ29udHJvbFZNID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50LlBhZ2U6XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50Lk5vbmU6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwidW5oYW5kbGVkIHZhcmlhbnQgc2V0dGluZzogXCIgKyBvVmlld0RhdGEuZ2V0VmFyaWFudE1hbmFnZW1lbnQoKSk7XG5cdFx0fVxuXG5cdFx0KG9Db250cm9sbGVyIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyKS5fZmluZFRhYmxlcygpLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogYW55KSB7XG5cdFx0XHRjb25zdCBvUXVpY2tGaWx0ZXIgPSBvVGFibGUuZ2V0UXVpY2tGaWx0ZXIoKTtcblx0XHRcdGlmIChvUXVpY2tGaWx0ZXIpIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvUXVpY2tGaWx0ZXIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGJDb250cm9sVk0pIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVGFibGUuZ2V0VmFyaWFudCgpKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1ZpZXcuYnlJZChcImZlOjpPYmplY3RQYWdlXCIpKTtcblx0fSxcblx0YWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBhQ29udHJvbHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRzUmVmcmVzaFN0cmF0ZWd5ID0gS2VlcEFsaXZlSGVscGVyLmdldFZpZXdSZWZyZXNoSW5mbyhvVmlldyksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKTtcblx0XHRsZXQgYUNvbnRyb2xzVG9SZWZyZXNoOiBDb250cm9sW10gPSBbXTtcblxuXHRcdGlmIChzUmVmcmVzaFN0cmF0ZWd5KSB7XG5cdFx0XHRjb25zdCBvT2JqZWN0UGFnZUNvbnRyb2wgPSAob0NvbnRyb2xsZXIgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXIpLl9nZXRPYmplY3RQYWdlTGF5b3V0Q29udHJvbCgpO1xuXHRcdFx0YUNvbnRyb2xzVG9SZWZyZXNoLnB1c2gob09iamVjdFBhZ2VDb250cm9sKTtcblx0XHR9XG5cdFx0aWYgKHNSZWZyZXNoU3RyYXRlZ3kgIT09IFwiaW5jbHVkaW5nRGVwZW5kZW50c1wiKSB7XG5cdFx0XHRjb25zdCBhVmlld0NvbnRyb2xzID0gKG9Db250cm9sbGVyIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyKS5fZmluZFRhYmxlcygpO1xuXHRcdFx0YUNvbnRyb2xzVG9SZWZyZXNoID0gYUNvbnRyb2xzVG9SZWZyZXNoLmNvbmNhdChLZWVwQWxpdmVIZWxwZXIuZ2V0Q29udHJvbHNGb3JSZWZyZXNoKG9WaWV3LCBhVmlld0NvbnRyb2xzKSB8fCBbXSk7XG5cdFx0fVxuXHRcdHJldHVybiBhQ29udHJvbHNUb1JlZnJlc2gucmVkdWNlKGZ1bmN0aW9uIChhUHJldkNvbnRyb2xzOiBhbnksIG9Db250cm9sOiBhbnkpIHtcblx0XHRcdGlmIChhUHJldkNvbnRyb2xzLmluZGV4T2Yob0NvbnRyb2wpID09PSAtMSkge1xuXHRcdFx0XHRhUHJldkNvbnRyb2xzLnB1c2gob0NvbnRyb2wpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFQcmV2Q29udHJvbHM7XG5cdFx0fSwgYUNvbnRyb2xzKTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVmlld1N0YXRlRXh0ZW5zaW9uT3ZlcnJpZGU7XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpZXdTdGF0ZS50cyJdLCJuYW1lcyI6WyJWYXJpYW50TWFuYWdlbWVudCIsIkNvcmVMaWJyYXJ5IiwiVmlld1N0YXRlRXh0ZW5zaW9uT3ZlcnJpZGUiLCJhcHBseUluaXRpYWxTdGF0ZU9ubHkiLCJhZGFwdFN0YXRlQ29udHJvbHMiLCJhU3RhdGVDb250cm9scyIsIm9WaWV3IiwiZ2V0VmlldyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsIm9WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwiYkNvbnRyb2xWTSIsInZhcmlhbnRNYW5hZ2VtZW50IiwiQ29udHJvbCIsIlBhZ2UiLCJOb25lIiwiRXJyb3IiLCJnZXRWYXJpYW50TWFuYWdlbWVudCIsIl9maW5kVGFibGVzIiwiZm9yRWFjaCIsIm9UYWJsZSIsIm9RdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwicHVzaCIsImdldFZhcmlhbnQiLCJieUlkIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwic1JlZnJlc2hTdHJhdGVneSIsIktlZXBBbGl2ZUhlbHBlciIsImdldFZpZXdSZWZyZXNoSW5mbyIsImFDb250cm9sc1RvUmVmcmVzaCIsIm9PYmplY3RQYWdlQ29udHJvbCIsIl9nZXRPYmplY3RQYWdlTGF5b3V0Q29udHJvbCIsImFWaWV3Q29udHJvbHMiLCJjb25jYXQiLCJnZXRDb250cm9sc0ZvclJlZnJlc2giLCJyZWR1Y2UiLCJhUHJldkNvbnRyb2xzIiwib0NvbnRyb2wiLCJpbmRleE9mIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBSUEsTUFBTUEsaUJBQWlCLEdBQUdDLFdBQVcsQ0FBQ0QsaUJBQXRDO0FBRUEsTUFBTUUsMEJBQTBCLEdBQUc7QUFDbENDLElBQUFBLHFCQUFxQixFQUFFLFlBQVk7QUFDbEMsYUFBTyxLQUFQO0FBQ0EsS0FIaUM7QUFJbENDLElBQUFBLGtCQUFrQixFQUFFLFVBQTJCQyxjQUEzQixFQUFnRDtBQUNuRSxVQUFNQyxLQUFLLEdBQUcsS0FBS0MsT0FBTCxFQUFkO0FBQUEsVUFDQ0MsV0FBVyxHQUFHRixLQUFLLENBQUNHLGFBQU4sRUFEZjtBQUFBLFVBRUNDLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxXQUFOLEVBRmI7QUFHQSxVQUFJQyxVQUFVLEdBQUcsS0FBakI7O0FBRUEsY0FBUUYsU0FBUyxDQUFDRyxpQkFBbEI7QUFDQyxhQUFLYixpQkFBaUIsQ0FBQ2MsT0FBdkI7QUFDQ0YsVUFBQUEsVUFBVSxHQUFHLElBQWI7QUFDQTs7QUFDRCxhQUFLWixpQkFBaUIsQ0FBQ2UsSUFBdkI7QUFDQSxhQUFLZixpQkFBaUIsQ0FBQ2dCLElBQXZCO0FBQ0M7O0FBQ0Q7QUFDQyxnQkFBTSxJQUFJQyxLQUFKLHNDQUF3Q1AsU0FBUyxDQUFDUSxvQkFBVixFQUF4QyxFQUFOO0FBUkY7O0FBV0NWLE1BQUFBLFdBQUQsQ0FBc0NXLFdBQXRDLEdBQW9EQyxPQUFwRCxDQUE0RCxVQUFVQyxNQUFWLEVBQXVCO0FBQ2xGLFlBQU1DLFlBQVksR0FBR0QsTUFBTSxDQUFDRSxjQUFQLEVBQXJCOztBQUNBLFlBQUlELFlBQUosRUFBa0I7QUFDakJqQixVQUFBQSxjQUFjLENBQUNtQixJQUFmLENBQW9CRixZQUFwQjtBQUNBOztBQUNELFlBQUlWLFVBQUosRUFBZ0I7QUFDZlAsVUFBQUEsY0FBYyxDQUFDbUIsSUFBZixDQUFvQkgsTUFBTSxDQUFDSSxVQUFQLEVBQXBCO0FBQ0E7QUFDRCxPQVJEOztBQVVBcEIsTUFBQUEsY0FBYyxDQUFDbUIsSUFBZixDQUFvQmxCLEtBQUssQ0FBQ29CLElBQU4sQ0FBVyxnQkFBWCxDQUFwQjtBQUNBLEtBaENpQztBQWlDbENDLElBQUFBLDJCQUEyQixFQUFFLFVBQTJCQyxTQUEzQixFQUEyQztBQUN2RSxVQUFNdEIsS0FBSyxHQUFHLEtBQUtDLE9BQUwsRUFBZDtBQUFBLFVBQ0NzQixnQkFBZ0IsR0FBR0MsZUFBZSxDQUFDQyxrQkFBaEIsQ0FBbUN6QixLQUFuQyxDQURwQjtBQUFBLFVBRUNFLFdBQVcsR0FBR0YsS0FBSyxDQUFDRyxhQUFOLEVBRmY7QUFHQSxVQUFJdUIsa0JBQTZCLEdBQUcsRUFBcEM7O0FBRUEsVUFBSUgsZ0JBQUosRUFBc0I7QUFDckIsWUFBTUksa0JBQWtCLEdBQUl6QixXQUFELENBQXNDMEIsMkJBQXRDLEVBQTNCOztBQUNBRixRQUFBQSxrQkFBa0IsQ0FBQ1IsSUFBbkIsQ0FBd0JTLGtCQUF4QjtBQUNBOztBQUNELFVBQUlKLGdCQUFnQixLQUFLLHFCQUF6QixFQUFnRDtBQUMvQyxZQUFNTSxhQUFhLEdBQUkzQixXQUFELENBQXNDVyxXQUF0QyxFQUF0Qjs7QUFDQWEsUUFBQUEsa0JBQWtCLEdBQUdBLGtCQUFrQixDQUFDSSxNQUFuQixDQUEwQk4sZUFBZSxDQUFDTyxxQkFBaEIsQ0FBc0MvQixLQUF0QyxFQUE2QzZCLGFBQTdDLEtBQStELEVBQXpGLENBQXJCO0FBQ0E7O0FBQ0QsYUFBT0gsa0JBQWtCLENBQUNNLE1BQW5CLENBQTBCLFVBQVVDLGFBQVYsRUFBOEJDLFFBQTlCLEVBQTZDO0FBQzdFLFlBQUlELGFBQWEsQ0FBQ0UsT0FBZCxDQUFzQkQsUUFBdEIsTUFBb0MsQ0FBQyxDQUF6QyxFQUE0QztBQUMzQ0QsVUFBQUEsYUFBYSxDQUFDZixJQUFkLENBQW1CZ0IsUUFBbkI7QUFDQTs7QUFDRCxlQUFPRCxhQUFQO0FBQ0EsT0FMTSxFQUtKWCxTQUxJLENBQVA7QUFNQTtBQXJEaUMsR0FBbkM7U0F3RGUxQiwwQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgQ29yZUxpYnJhcnkgZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL09iamVjdFBhZ2UvT2JqZWN0UGFnZUNvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuXG5jb25zdCBWYXJpYW50TWFuYWdlbWVudCA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50O1xuXG5jb25zdCBWaWV3U3RhdGVFeHRlbnNpb25PdmVycmlkZSA9IHtcblx0YXBwbHlJbml0aWFsU3RhdGVPbmx5OiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXHRhZGFwdFN0YXRlQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFTdGF0ZUNvbnRyb2xzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpIGFzIGFueTtcblx0XHRsZXQgYkNvbnRyb2xWTSA9IGZhbHNlO1xuXG5cdFx0c3dpdGNoIChvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnQuQ29udHJvbDpcblx0XHRcdFx0YkNvbnRyb2xWTSA9IHRydWU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudC5QYWdlOlxuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudC5Ob25lOlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgdW5oYW5kbGVkIHZhcmlhbnQgc2V0dGluZzogJHtvVmlld0RhdGEuZ2V0VmFyaWFudE1hbmFnZW1lbnQoKX1gKTtcblx0XHR9XG5cblx0XHQob0NvbnRyb2xsZXIgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXIpLl9maW5kVGFibGVzKCkuZm9yRWFjaChmdW5jdGlvbiAob1RhYmxlOiBhbnkpIHtcblx0XHRcdGNvbnN0IG9RdWlja0ZpbHRlciA9IG9UYWJsZS5nZXRRdWlja0ZpbHRlcigpO1xuXHRcdFx0aWYgKG9RdWlja0ZpbHRlcikge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9RdWlja0ZpbHRlcik7XG5cdFx0XHR9XG5cdFx0XHRpZiAoYkNvbnRyb2xWTSkge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9UYWJsZS5nZXRWYXJpYW50KCkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVmlldy5ieUlkKFwiZmU6Ok9iamVjdFBhZ2VcIikpO1xuXHR9LFxuXHRhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFDb250cm9sczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdHNSZWZyZXNoU3RyYXRlZ3kgPSBLZWVwQWxpdmVIZWxwZXIuZ2V0Vmlld1JlZnJlc2hJbmZvKG9WaWV3KSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHRcdGxldCBhQ29udHJvbHNUb1JlZnJlc2g6IENvbnRyb2xbXSA9IFtdO1xuXG5cdFx0aWYgKHNSZWZyZXNoU3RyYXRlZ3kpIHtcblx0XHRcdGNvbnN0IG9PYmplY3RQYWdlQ29udHJvbCA9IChvQ29udHJvbGxlciBhcyBPYmplY3RQYWdlQ29udHJvbGxlcikuX2dldE9iamVjdFBhZ2VMYXlvdXRDb250cm9sKCk7XG5cdFx0XHRhQ29udHJvbHNUb1JlZnJlc2gucHVzaChvT2JqZWN0UGFnZUNvbnRyb2wpO1xuXHRcdH1cblx0XHRpZiAoc1JlZnJlc2hTdHJhdGVneSAhPT0gXCJpbmNsdWRpbmdEZXBlbmRlbnRzXCIpIHtcblx0XHRcdGNvbnN0IGFWaWV3Q29udHJvbHMgPSAob0NvbnRyb2xsZXIgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXIpLl9maW5kVGFibGVzKCk7XG5cdFx0XHRhQ29udHJvbHNUb1JlZnJlc2ggPSBhQ29udHJvbHNUb1JlZnJlc2guY29uY2F0KEtlZXBBbGl2ZUhlbHBlci5nZXRDb250cm9sc0ZvclJlZnJlc2gob1ZpZXcsIGFWaWV3Q29udHJvbHMpIHx8IFtdKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFDb250cm9sc1RvUmVmcmVzaC5yZWR1Y2UoZnVuY3Rpb24gKGFQcmV2Q29udHJvbHM6IGFueSwgb0NvbnRyb2w6IGFueSkge1xuXHRcdFx0aWYgKGFQcmV2Q29udHJvbHMuaW5kZXhPZihvQ29udHJvbCkgPT09IC0xKSB7XG5cdFx0XHRcdGFQcmV2Q29udHJvbHMucHVzaChvQ29udHJvbCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYVByZXZDb250cm9scztcblx0XHR9LCBhQ29udHJvbHMpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWaWV3U3RhdGVFeHRlbnNpb25PdmVycmlkZTtcbiJdfQ==
@@ -1,8 +1,8 @@
1
- import ViewState from "sap/fe/core/controllerextensions/ViewState";
1
+ import type ViewState from "sap/fe/core/controllerextensions/ViewState";
2
2
  import KeepAliveHelper from "sap/fe/core/helpers/KeepAliveHelper";
3
3
  import CoreLibrary from "sap/fe/core/library";
4
- import ObjectPageController from "sap/fe/templates/ObjectPage/ObjectPageController.controller";
5
- import Control from "sap/ui/core/Control";
4
+ import type ObjectPageController from "sap/fe/templates/ObjectPage/ObjectPageController.controller";
5
+ import type Control from "sap/ui/core/Control";
6
6
 
7
7
  const VariantManagement = CoreLibrary.VariantManagement;
8
8
 
@@ -24,7 +24,7 @@ const ViewStateExtensionOverride = {
24
24
  case VariantManagement.None:
25
25
  break;
26
26
  default:
27
- throw new Error("unhandled variant setting: " + oViewData.getVariantManagement());
27
+ throw new Error(`unhandled variant setting: ${oViewData.getVariantManagement()}`);
28
28
  }
29
29
 
30
30
  (oController as ObjectPageController)._findTables().forEach(function (oTable: any) {
@@ -7,9 +7,8 @@
7
7
  xmlns:macro="sap.fe.macros.internal"
8
8
  template:require="{
9
9
  ID: 'sap/fe/core/helpers/StableIdHelper',
10
- OP: 'sap/fe/templates/ObjectPage/AnnotationHelper',
10
+ OP: 'sap/fe/templates/ObjectPage/ObjectPageTemplating',
11
11
  MODEL: 'sap/ui/model/odata/v4/AnnotationHelper',
12
- CORE: 'sap/fe/core/AnnotationHelper',
13
12
  UI: 'sap/fe/core/templating/UIFormatters',
14
13
  CRIT: 'sap/fe/core/templating/CriticalityFormatters',
15
14
  COMMON: 'sap/fe/macros/CommonHelper',
@@ -20,6 +19,10 @@
20
19
  <template:repeat list="{converterContext>header/actions}" var="headerAction">
21
20
  <template:if test="{= ${headerAction>type} === 'DraftActions' &amp;&amp; OP.checkDraftState(${entitySet>@}) }">
22
21
  <template:then>
22
+ <core:InvisibleText
23
+ text="{sap.fe.i18n>T_HEADER_DATAPOINT_TITLE_DRAFT_SWITCHER_ARIA_BUTTON}"
24
+ id="fe::StandardAction::SwitchDraftAndActiveObject::AriaTextDraftSwitcher"
25
+ />
23
26
  <Button
24
27
  id="fe::StandardAction::SwitchDraftAndActiveObject"
25
28
  text="{= ( !(${ui>/editMode} === 'Editable') &amp;&amp; !${ui>createMode} &amp;&amp; ${HasDraftEntity} ) ? ${sap.fe.i18n>C_COMMON_OBJECT_PAGE_SAVED_VERSION_BUT} : ${sap.fe.i18n>C_COMMON_OBJECT_PAGE_DRAFT_BUT} }"
@@ -28,11 +31,12 @@
28
31
  iconFirst="false"
29
32
  type="Transparent"
30
33
  press="._showSwitchDraftAndActivePopover($event)"
34
+ ariaDescribedBy="fe::StandardAction::SwitchDraftAndActiveObject::AriaTextDraftSwitcher"
31
35
  />
32
36
  <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.CollaborationDraft" type="XML" />
33
37
  <ToolbarSpacer />
34
38
  </template:then>
35
- <template:elseif test="{= CORE.isManifestAction(${headerAction>}) }">
39
+ <template:elseif test="{= OP.isManifestAction(${headerAction>}) }">
36
40
  <template:if test="{= ${headerAction>type} === 'Menu'}">
37
41
  <template:then>
38
42
  <MenuButton
@@ -51,7 +55,7 @@
51
55
  <MenuItem
52
56
  id="{= ID.generate(['fe', ${dataField>}]) }"
53
57
  text="{dataField>Label}"
54
- press="{= OP.getPressExpressionForEdit(${dataField>}, ${entitySet>@sapui.name}, ${headerAction>}) }"
58
+ press="{= ${menuItemAction>command} ? ('cmd:' + ${menuItemAction>command}) : OP.getPressExpressionForEdit(${dataField>}, ${entitySet>@sapui.name}, ${headerAction>}) }"
55
59
  visible="{menuItemAction>visible}"
56
60
  enabled="{menuItemAction>enabled}"
57
61
  />
@@ -60,7 +64,7 @@
60
64
  <MenuItem
61
65
  id="{= ID.generate(['fe', ${dataField>}]) }"
62
66
  text="{dataField>Label}"
63
- press="{menuItemAction>press}"
67
+ press="{= ${menuItemAction>command} ? ('cmd:' + ${menuItemAction>command}) : ${menuItemAction>press}}"
64
68
  enabled="{menuItemAction>enabled}"
65
69
  visible="{menuItemAction>visible}"
66
70
  macrodata:IBNData="{menuItemAction>customData}"
@@ -71,7 +75,7 @@
71
75
  core:require="{FPM: 'sap/fe/core/helpers/FPMHelper'}"
72
76
  id="{= ID.generate(['fe',${menuItemAction>id}])}"
73
77
  text="{menuItemAction>text}"
74
- press="{= CORE.buildActionWrapper(${menuItemAction>}, ${headerAction>})}"
78
+ press="{= ${menuItemAction>command} ? ('cmd:' + ${menuItemAction>command}) : COMMON.buildActionWrapper(${menuItemAction>}, ${headerAction>})}"
75
79
  visible="{menuItemAction>visible}"
76
80
  enabled="{menuItemAction>enabled}"
77
81
  />
@@ -89,7 +93,7 @@
89
93
  core:require="{FPM: 'sap/fe/core/helpers/FPMHelper'}"
90
94
  id="{= ID.generate(['fe',${headerAction>id}])}"
91
95
  text="{headerAction>text}"
92
- press="{= CORE.buildActionWrapper(${headerAction>})}"
96
+ press="{= ${headerAction>command} ? ('cmd:' + ${headerAction>command}) : COMMON.buildActionWrapper(${headerAction>})}"
93
97
  type="Default"
94
98
  visible="{headerAction>visible}"
95
99
  enabled="{headerAction>enabled}"
@@ -104,7 +108,7 @@
104
108
  <Button
105
109
  unittest:id="EditActionTest"
106
110
  id="fe::StandardAction::Edit"
107
- type="{path: 'entitySet>./@com.sap.vocabularies.UI.v1.Identification', formatter: 'CORE.buildEmphasizedButtonExpression'}"
111
+ type="{path: 'entitySet>./@com.sap.vocabularies.UI.v1.Identification', formatter: 'OP.buildEmphasizedButtonExpression'}"
108
112
  text="{sap.fe.i18n>C_COMMON_OBJECT_PAGE_EDIT}"
109
113
  enabled="{headerAction>enabled}"
110
114
  visible="{headerAction>visible}"
@@ -123,7 +127,7 @@
123
127
  unittest:id="DeleteActionTest"
124
128
  id="fe::StandardAction::Delete"
125
129
  type="Default"
126
- text="{sap.fe.i18n>C_COMMON_OBJECT_PAGE_DELETE}"
130
+ text="{sap.fe.i18n>C_COMMON_DELETE}"
127
131
  visible="{headerAction>visible}"
128
132
  enabled="{headerAction>enabled}"
129
133
  press="cmd:DeleteObject"
@@ -144,7 +148,7 @@
144
148
  id="{= ID.generate(['fe', ${dataField>}]) }"
145
149
  unittest:id="AnnotationActionTest"
146
150
  text="{dataField>Label}"
147
- press="{= OP.getPressExpressionForEdit(${dataField>}, ${entitySet>@sapui.name}, ${headerAction>}) }"
151
+ press="{= ${headerAction>command} ? ('cmd:' + ${headerAction>command}) : OP.getPressExpressionForEdit(${dataField>}, ${entitySet>@sapui.name}, ${headerAction>}) }"
148
152
  visible="{headerAction>visible}"
149
153
  enabled="{headerAction>enabled}"
150
154
  type="{= CRIT.buildExpressionForCriticalityButtonType(${dataField>@@UI.getDataModelObjectPath}) }"
@@ -161,7 +165,7 @@
161
165
  <Button
162
166
  id="{= ID.generate(['fe', ${dataField>}]) }"
163
167
  text="{headerAction>text}"
164
- press="{headerAction>press}"
168
+ press="{= ${headerAction>command} ? ('cmd:' + ${headerAction>command}) : ${headerAction>press}}"
165
169
  enabled="{headerAction>enabled}"
166
170
  type="{headerAction>buttonType}"
167
171
  visible="{headerAction>visible}"
@@ -1,5 +1,4 @@
1
1
  <core:FragmentDefinition
2
- xmlns:f="sap.f"
3
2
  xmlns="sap.m"
4
3
  xmlns:core="sap.ui.core"
5
4
  xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
@@ -20,7 +19,7 @@
20
19
  alignItems="Center"
21
20
  justifyContent="Start"
22
21
  >
23
- <f:Avatar
22
+ <Avatar
24
23
  initials="{internal>initials}"
25
24
  backgroundColor="Accent{internal>color}"
26
25
  displaySize="XS"