@sapui5/sap.fe.core 1.135.0 → 1.136.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +3 -2
  4. package/src/sap/fe/core/ActionRuntime.ts +3 -1
  5. package/src/sap/fe/core/AppComponent.js +6 -4
  6. package/src/sap/fe/core/AppComponent.ts +3 -1
  7. package/src/sap/fe/core/AppStateHandler.js +8 -6
  8. package/src/sap/fe/core/AppStateHandler.ts +7 -5
  9. package/src/sap/fe/core/CommonUtils.js +4 -1
  10. package/src/sap/fe/core/CommonUtils.ts +12 -2
  11. package/src/sap/fe/core/ExtensionAPI.js +5 -3
  12. package/src/sap/fe/core/ExtensionAPI.ts +4 -2
  13. package/src/sap/fe/core/PageController.js +13 -1
  14. package/src/sap/fe/core/PageController.ts +13 -0
  15. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +13 -5
  16. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +19 -6
  17. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +4 -2
  18. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +3 -1
  19. package/src/sap/fe/core/controllerextensions/EditFlow.js +58 -14
  20. package/src/sap/fe/core/controllerextensions/EditFlow.ts +71 -11
  21. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +184 -17
  22. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +204 -12
  23. package/src/sap/fe/core/controllerextensions/InternalRouting.js +12 -3
  24. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +11 -1
  25. package/src/sap/fe/core/controllerextensions/MessageHandler.js +35 -5
  26. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +41 -1
  27. package/src/sap/fe/core/controllerextensions/Routing.js +6 -6
  28. package/src/sap/fe/core/controllerextensions/Routing.ts +2 -2
  29. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +3 -11
  30. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +2 -10
  31. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +11 -1
  32. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +12 -0
  33. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +21 -6
  34. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +19 -5
  35. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +17 -14
  36. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +19 -17
  37. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +2 -2
  38. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +4 -1
  39. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +10 -2
  40. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +8 -2
  41. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
  42. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
  43. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +1 -1
  44. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +33 -31
  45. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +2 -2
  46. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +3 -3
  47. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +4 -1
  48. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +2 -1
  49. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +2 -2
  50. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +8 -1
  51. package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +4 -3
  52. package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +7 -2
  53. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +68 -0
  54. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +52 -0
  55. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +144 -0
  56. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.tsx +128 -0
  57. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.js +53 -0
  58. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.tsx +39 -0
  59. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  60. package/src/sap/fe/core/converters/ManifestSettings.ts +18 -8
  61. package/src/sap/fe/core/converters/controls/Common/Action.js +54 -5
  62. package/src/sap/fe/core/converters/controls/Common/Action.ts +59 -3
  63. package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -4
  64. package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -4
  65. package/src/sap/fe/core/converters/controls/Common/Form.js +13 -4
  66. package/src/sap/fe/core/converters/controls/Common/Form.ts +13 -3
  67. package/src/sap/fe/core/converters/controls/Common/Table.js +29 -9
  68. package/src/sap/fe/core/converters/controls/Common/Table.ts +38 -8
  69. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +14 -16
  70. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +61 -96
  71. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +62 -13
  72. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +75 -13
  73. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +4 -33
  74. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +4 -44
  75. package/src/sap/fe/core/converters/controls/ListReport/FilterField.js +106 -0
  76. package/src/sap/fe/core/converters/controls/ListReport/FilterField.ts +129 -0
  77. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +9 -4
  78. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +8 -3
  79. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +7 -2
  80. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +5 -1
  81. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +29 -7
  82. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +40 -16
  83. package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +34 -16
  84. package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +35 -16
  85. package/src/sap/fe/core/designtime/messagebundle_ar.properties +7 -0
  86. package/src/sap/fe/core/designtime/messagebundle_bg.properties +7 -0
  87. package/src/sap/fe/core/designtime/messagebundle_ca.properties +7 -0
  88. package/src/sap/fe/core/designtime/messagebundle_cnr.properties +7 -0
  89. package/src/sap/fe/core/designtime/messagebundle_cs.properties +7 -0
  90. package/src/sap/fe/core/designtime/messagebundle_cy.properties +7 -0
  91. package/src/sap/fe/core/designtime/messagebundle_da.properties +7 -0
  92. package/src/sap/fe/core/designtime/messagebundle_de.properties +7 -0
  93. package/src/sap/fe/core/designtime/messagebundle_el.properties +7 -0
  94. package/src/sap/fe/core/designtime/messagebundle_en.properties +7 -0
  95. package/src/sap/fe/core/designtime/messagebundle_en_GB.properties +7 -0
  96. package/src/sap/fe/core/designtime/messagebundle_es.properties +7 -0
  97. package/src/sap/fe/core/designtime/messagebundle_es_MX.properties +7 -0
  98. package/src/sap/fe/core/designtime/messagebundle_et.properties +7 -0
  99. package/src/sap/fe/core/designtime/messagebundle_fi.properties +7 -0
  100. package/src/sap/fe/core/designtime/messagebundle_fr.properties +7 -0
  101. package/src/sap/fe/core/designtime/messagebundle_fr_CA.properties +7 -0
  102. package/src/sap/fe/core/designtime/messagebundle_hi.properties +7 -0
  103. package/src/sap/fe/core/designtime/messagebundle_hr.properties +7 -0
  104. package/src/sap/fe/core/designtime/messagebundle_hu.properties +7 -0
  105. package/src/sap/fe/core/designtime/messagebundle_id.properties +7 -0
  106. package/src/sap/fe/core/designtime/messagebundle_it.properties +7 -0
  107. package/src/sap/fe/core/designtime/messagebundle_iw.properties +7 -0
  108. package/src/sap/fe/core/designtime/messagebundle_ja.properties +7 -0
  109. package/src/sap/fe/core/designtime/messagebundle_kk.properties +7 -0
  110. package/src/sap/fe/core/designtime/messagebundle_ko.properties +7 -0
  111. package/src/sap/fe/core/designtime/messagebundle_lt.properties +7 -0
  112. package/src/sap/fe/core/designtime/messagebundle_lv.properties +7 -0
  113. package/src/sap/fe/core/designtime/messagebundle_mk.properties +7 -0
  114. package/src/sap/fe/core/designtime/messagebundle_ms.properties +7 -0
  115. package/src/sap/fe/core/designtime/messagebundle_nl.properties +7 -0
  116. package/src/sap/fe/core/designtime/messagebundle_no.properties +7 -0
  117. package/src/sap/fe/core/designtime/messagebundle_pl.properties +7 -0
  118. package/src/sap/fe/core/designtime/messagebundle_pt.properties +7 -0
  119. package/src/sap/fe/core/designtime/messagebundle_pt_PT.properties +7 -0
  120. package/src/sap/fe/core/designtime/messagebundle_ro.properties +7 -0
  121. package/src/sap/fe/core/designtime/messagebundle_ru.properties +7 -0
  122. package/src/sap/fe/core/designtime/messagebundle_sh.properties +7 -0
  123. package/src/sap/fe/core/designtime/messagebundle_sk.properties +7 -0
  124. package/src/sap/fe/core/designtime/messagebundle_sl.properties +7 -0
  125. package/src/sap/fe/core/designtime/messagebundle_sr.properties +7 -0
  126. package/src/sap/fe/core/designtime/messagebundle_sv.properties +7 -0
  127. package/src/sap/fe/core/designtime/messagebundle_th.properties +7 -0
  128. package/src/sap/fe/core/designtime/messagebundle_tr.properties +7 -0
  129. package/src/sap/fe/core/designtime/messagebundle_uk.properties +7 -0
  130. package/src/sap/fe/core/designtime/messagebundle_vi.properties +7 -0
  131. package/src/sap/fe/core/designtime/messagebundle_zh_CN.properties +7 -0
  132. package/src/sap/fe/core/designtime/messagebundle_zh_TW.properties +7 -0
  133. package/src/sap/fe/core/fpm/manifest.json +1 -1
  134. package/src/sap/fe/core/helpers/AppStartupHelper.js +24 -3
  135. package/src/sap/fe/core/helpers/AppStartupHelper.ts +28 -2
  136. package/src/sap/fe/core/helpers/BindingHelper.js +3 -2
  137. package/src/sap/fe/core/helpers/BindingHelper.ts +2 -1
  138. package/src/sap/fe/core/helpers/DeleteHelper.js +4 -9
  139. package/src/sap/fe/core/helpers/DeleteHelper.ts +3 -8
  140. package/src/sap/fe/core/helpers/ModelHelper.js +14 -4
  141. package/src/sap/fe/core/helpers/ModelHelper.ts +15 -4
  142. package/src/sap/fe/core/helpers/PasteHelper.js +38 -39
  143. package/src/sap/fe/core/helpers/PasteHelper.ts +49 -51
  144. package/src/sap/fe/core/helpers/WebSocket.js +10 -1
  145. package/src/sap/fe/core/helpers/WebSocket.ts +8 -0
  146. package/src/sap/fe/core/library.js +1 -1
  147. package/src/sap/fe/core/messagebundle.properties +41 -2
  148. package/src/sap/fe/core/messagebundle_ar.properties +23 -2
  149. package/src/sap/fe/core/messagebundle_bg.properties +23 -2
  150. package/src/sap/fe/core/messagebundle_ca.properties +21 -0
  151. package/src/sap/fe/core/messagebundle_cnr.properties +23 -2
  152. package/src/sap/fe/core/messagebundle_cs.properties +21 -0
  153. package/src/sap/fe/core/messagebundle_cy.properties +21 -0
  154. package/src/sap/fe/core/messagebundle_da.properties +23 -2
  155. package/src/sap/fe/core/messagebundle_de.properties +23 -2
  156. package/src/sap/fe/core/messagebundle_el.properties +21 -0
  157. package/src/sap/fe/core/messagebundle_en.properties +23 -2
  158. package/src/sap/fe/core/messagebundle_en_GB.properties +23 -2
  159. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +23 -2
  160. package/src/sap/fe/core/messagebundle_es.properties +21 -0
  161. package/src/sap/fe/core/messagebundle_es_MX.properties +21 -0
  162. package/src/sap/fe/core/messagebundle_et.properties +21 -0
  163. package/src/sap/fe/core/messagebundle_fi.properties +21 -0
  164. package/src/sap/fe/core/messagebundle_fr.properties +22 -1
  165. package/src/sap/fe/core/messagebundle_fr_CA.properties +21 -0
  166. package/src/sap/fe/core/messagebundle_hi.properties +22 -1
  167. package/src/sap/fe/core/messagebundle_hr.properties +24 -3
  168. package/src/sap/fe/core/messagebundle_hu.properties +21 -0
  169. package/src/sap/fe/core/messagebundle_id.properties +21 -0
  170. package/src/sap/fe/core/messagebundle_it.properties +23 -2
  171. package/src/sap/fe/core/messagebundle_iw.properties +21 -0
  172. package/src/sap/fe/core/messagebundle_ja.properties +21 -0
  173. package/src/sap/fe/core/messagebundle_kk.properties +21 -0
  174. package/src/sap/fe/core/messagebundle_ko.properties +21 -0
  175. package/src/sap/fe/core/messagebundle_lt.properties +21 -0
  176. package/src/sap/fe/core/messagebundle_lv.properties +23 -2
  177. package/src/sap/fe/core/messagebundle_mk.properties +21 -0
  178. package/src/sap/fe/core/messagebundle_ms.properties +22 -1
  179. package/src/sap/fe/core/messagebundle_nl.properties +21 -0
  180. package/src/sap/fe/core/messagebundle_no.properties +21 -0
  181. package/src/sap/fe/core/messagebundle_pl.properties +23 -2
  182. package/src/sap/fe/core/messagebundle_pt.properties +23 -2
  183. package/src/sap/fe/core/messagebundle_pt_PT.properties +21 -0
  184. package/src/sap/fe/core/messagebundle_ro.properties +23 -2
  185. package/src/sap/fe/core/messagebundle_ru.properties +22 -1
  186. package/src/sap/fe/core/messagebundle_sh.properties +23 -2
  187. package/src/sap/fe/core/messagebundle_sk.properties +21 -0
  188. package/src/sap/fe/core/messagebundle_sl.properties +23 -2
  189. package/src/sap/fe/core/messagebundle_sr.properties +23 -2
  190. package/src/sap/fe/core/messagebundle_sv.properties +21 -0
  191. package/src/sap/fe/core/messagebundle_th.properties +21 -0
  192. package/src/sap/fe/core/messagebundle_tr.properties +21 -0
  193. package/src/sap/fe/core/messagebundle_uk.properties +23 -2
  194. package/src/sap/fe/core/messagebundle_vi.properties +23 -2
  195. package/src/sap/fe/core/messagebundle_zh_CN.properties +23 -2
  196. package/src/sap/fe/core/messagebundle_zh_TW.properties +21 -0
  197. package/src/sap/fe/core/rootView/Fcl.controller.js +5 -5
  198. package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -4
  199. package/src/sap/fe/core/rootView/NavContainer.controller.js +2 -2
  200. package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
  201. package/src/sap/fe/core/rootView/RootViewBaseController.js +61 -9
  202. package/src/sap/fe/core/rootView/RootViewBaseController.ts +70 -7
  203. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +28 -12
  204. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.ts +27 -13
  205. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +7 -1
  206. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +6 -0
  207. package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -2
  208. package/src/sap/fe/core/services/RoutingServiceFactory.ts +2 -1
  209. package/src/sap/fe/core/services/ShellServicesFactory.js +4 -3
  210. package/src/sap/fe/core/services/ShellServicesFactory.ts +5 -3
  211. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +27 -3
  212. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +32 -3
  213. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  214. package/src/sap/fe/core/templating/EntitySetHelper.js +198 -58
  215. package/src/sap/fe/core/templating/EntitySetHelper.ts +221 -61
  216. package/src/sap/fe/core/templating/SemanticObjectHelper.js +6 -7
  217. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +9 -7
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/MetaPath", "sap/ui/core/Component", "sap/ui/core/Lib", "sap/fe/core/templating/PropertyHelper", "sap/ui/rta/plugin/annotations/AnnotationTypes"], function (Log, MetaModelConverter, MetaPath, Component, Lib, PropertyHelper, AnnotationTypes) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/MetaPath", "sap/ui/core/Component", "sap/ui/core/Lib", "sap/fe/core/templating/PropertyHelper", "sap/fe/core/CommonUtils", "sap/ui/rta/plugin/annotations/AnnotationTypes"], function (Log, MetaModelConverter, MetaPath, Component, Lib, PropertyHelper, CommonUtils, AnnotationTypes) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
@@ -81,29 +81,43 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
81
81
  }
82
82
  return properties;
83
83
  }
84
+ function getTargetPropertyFromFormElement(oControl) {
85
+ let targetProperty;
86
+ if (oControl.isA("sap.ui.layout.form.FormElement")) {
87
+ const fields = oControl.getFields();
88
+ if (fields?.length > 0 && fields[0].isA("sap.fe.macros.Field")) {
89
+ const targetObject = fields[0];
90
+ targetProperty = targetObject.getMainPropertyRelativePath();
91
+ }
92
+ }
93
+ return targetProperty;
94
+ }
95
+ _exports.getTargetPropertyFromFormElement = getTargetPropertyFromFormElement;
84
96
  function getRenameAction() {
85
- let renameText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "RTA_CONTEXT_ACTIONMENU_RENAME";
86
- let changeLabelText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "RTA_CONTEXT_ACTIONMENU_CHANGELABELS";
87
- let isAtElementLevel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
97
+ let isAtElementLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
88
98
  return {
89
99
  changeType: "renameLabel",
90
- title: () => isAtElementLevel ? getText(renameText) : getText(changeLabelText),
100
+ title: () => isAtElementLevel ? getText("RTA_CONTEXT_ACTIONMENU_RENAME") : getText("RTA_CONTEXT_ACTIONMENU_CHANGELABELS"),
91
101
  icon: "sap-icon://edit",
102
+ singleRename: isAtElementLevel,
103
+ controlBasedRenameChangeType: "renameField",
92
104
  type: AnnotationTypes.StringType,
93
105
  delegate: {
94
106
  getAnnotationsChangeInfo: (oControl, _annotation) => {
95
- const templateComponent = Component.getOwnerComponentFor(oControl);
107
+ let templateComponent = Component.getOwnerComponentFor(oControl);
108
+ if (!templateComponent) {
109
+ const view = CommonUtils.getTargetView(oControl);
110
+ templateComponent = view?.getController().getOwnerComponent();
111
+ }
96
112
  if (templateComponent) {
97
113
  let targetProperty;
98
- if (oControl.isA("sap.ui.layout.form.FormElement")) {
99
- const fields = oControl.getFields();
100
- if (fields.length > 0 && fields[0].isA("sap.fe.macros.Field")) {
101
- // const targetObject = fields[0];
102
- // targetProperty =targetObject.property;
103
- // We could get from the Field the current property / where it comes from, but we need to add an API for that
104
- }
105
- }
106
114
  const properties = collectProperties(templateComponent, oControl, () => true);
115
+ const targetPropertyPath = getTargetPropertyFromFormElement(oControl);
116
+ if (targetPropertyPath) {
117
+ targetProperty = properties?.find(prop => {
118
+ return prop.property.name === targetPropertyPath;
119
+ })?.property;
120
+ }
107
121
  if (properties && properties.length > 0) {
108
122
  return {
109
123
  serviceUrl: oControl.getModel()?.getServiceUrl(),
@@ -133,7 +147,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
133
147
  type: AnnotationTypes.ValueListType,
134
148
  delegate: {
135
149
  getAnnotationsChangeInfo: (oControl, _annotation) => {
136
- const templateComponent = Component.getOwnerComponentFor(oControl);
150
+ let templateComponent = Component.getOwnerComponentFor(oControl);
151
+ if (!templateComponent) {
152
+ const view = CommonUtils.getTargetView(oControl);
153
+ templateComponent = view?.getController().getOwnerComponent();
154
+ }
137
155
  if (templateComponent) {
138
156
  const properties = collectProperties(templateComponent, oControl, filterPropertyWithTextAnnotation);
139
157
  if (properties && properties.length > 0) {
@@ -163,4 +181,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
163
181
  _exports.getTextArrangementChangeAction = getTextArrangementChangeAction;
164
182
  return _exports;
165
183
  }, false);
166
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZURlc2lnbnRpbWUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJrZXkiLCJfZXhwb3J0cyIsIlRFWFRfQVJSQU5HRU1FTlRfTEFCRUxTIiwiZmlsdGVyUHJvcGVydHlXaXRoVGV4dEFubm90YXRpb24iLCJwcm9wIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwidW5kZWZpbmVkIiwiaGFzQ3VycmVuY3kiLCJoYXNVbml0IiwiaXNDdXJyZW5jeSIsImlzVW5pdCIsIl9jb2xsZWN0UHJvcGVydGllcyIsImVudGl0eVR5cGUiLCJwcm9wZXJ0aWVzIiwiZmlsdGVyRm4iLCJ2aXNpdGVkRW50aXR5IiwiZnVsbHlRdWFsaWZpZWROYW1lIiwicHVzaCIsImVudGl0eVByb3BlcnRpZXMiLCJmaWx0ZXIiLCJVSSIsIkhpZGRlbiIsInZhbHVlT2YiLCJ0YXJnZXRUeXBlIiwibWFwIiwicHJvcGVydHkiLCJjb2xsZWN0UHJvcGVydGllcyIsInRlbXBsYXRlQ29tcG9uZW50IiwiY29udHJvbCIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImNvbnRleHRQYXRoVG9Vc2UiLCJnZXRGdWxsQ29udGV4dFBhdGgiLCJidWlsZGluZ0Jsb2NrIiwiaXNBIiwiZ2V0UGFyZW50IiwibWV0YVBhdGgiLCJnZXRQcm9wZXJ0eSIsInRhcmdldEVudGl0eSIsIk1ldGFQYXRoIiwiY29udmVydFR5cGVzIiwiZSIsIkxvZyIsIndhcm5pbmciLCJnZXRDbG9zZXN0RW50aXR5VHlwZSIsImdldFJlbmFtZUFjdGlvbiIsInJlbmFtZVRleHQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJjaGFuZ2VMYWJlbFRleHQiLCJpc0F0RWxlbWVudExldmVsIiwiY2hhbmdlVHlwZSIsInRpdGxlIiwiaWNvbiIsInR5cGUiLCJBbm5vdGF0aW9uVHlwZXMiLCJTdHJpbmdUeXBlIiwiZGVsZWdhdGUiLCJnZXRBbm5vdGF0aW9uc0NoYW5nZUluZm8iLCJvQ29udHJvbCIsIl9hbm5vdGF0aW9uIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJ0YXJnZXRQcm9wZXJ0eSIsImZpZWxkcyIsImdldEZpZWxkcyIsInNlcnZpY2VVcmwiLCJnZXRNb2RlbCIsImdldFNlcnZpY2VVcmwiLCJwcm9wZXJ0eU5hbWUiLCJuYW1lIiwiYW5ub3RhdGlvblBhdGgiLCJjdXJyZW50VmFsdWUiLCJMYWJlbCIsInRvU3RyaW5nIiwicG9zc2libGVWYWx1ZXMiLCJwcmVTZWxlY3RlZFByb3BlcnR5IiwiZ2V0VGV4dEFycmFuZ2VtZW50Q2hhbmdlQWN0aW9uIiwiVmFsdWVMaXN0VHlwZSIsImRlZmF1bHRUeXBlIiwiVGV4dEFycmFuZ2VtZW50IiwiT2JqZWN0Iiwia2V5cyIsInNLZXkiLCJ0ZXh0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBbm5vdGF0aW9uQmFzZWRDaGFuZ2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5VHlwZSwgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IFRleHRBcnJhbmdlbWVudFR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHsgY29udmVydFR5cGVzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgTWV0YVBhdGggZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YVBhdGhcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuLy8gT0sgc2luY2Ugd2UgYXJlIGluIGRlc2lnbnRpbWUgd2UgY2FuIGlnbm9yZSB0aGF0IGRlcGVuZGVuY3lcbmltcG9ydCB7IGhhc0N1cnJlbmN5LCBoYXNVbml0LCBpc0N1cnJlbmN5LCBpc1VuaXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgRmllbGQgZnJvbSBcInNhcC9mZS9tYWNyb3MvRmllbGRcIjtcbmltcG9ydCB0eXBlIEZvcm1FbGVtZW50IGZyb20gXCJzYXAvdWkvbGF5b3V0L2Zvcm0vRm9ybUVsZW1lbnRcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgQW5ub3RhdGlvblR5cGVzIGZyb20gXCJzYXAvdWkvcnRhL3BsdWdpbi9hbm5vdGF0aW9ucy9Bbm5vdGF0aW9uVHlwZXNcIjtcblxuY29uc3QgcmVzb3VyY2VCdW5kbGVEZXNpZ250aW1lID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvcmUuZGVzaWdudGltZVwiKSE7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0ID0gZnVuY3Rpb24gKGtleTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIHJlc291cmNlQnVuZGxlRGVzaWdudGltZS5nZXRUZXh0KGtleSk7XG59O1xuXG50eXBlIEFubm90YXRpb25DaGFuZ2VSZXR1cm5UeXBlID0ge1xuXHRzZXJ2aWNlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHByb3BlcnRpZXM6IHtcblx0XHRwcm9wZXJ0eU5hbWU6IHN0cmluZztcblx0XHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRcdGN1cnJlbnRWYWx1ZTogc3RyaW5nO1xuXHR9W107XG5cdHBvc3NpYmxlVmFsdWVzOiB7IGtleTogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfVtdO1xuXHRwcmVTZWxlY3RlZFByb3BlcnR5OiBzdHJpbmc7IC8vIGlmIHRoZSBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZyb20gYSBjb250cm9sIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBwcm9wZXJ0eSwgb25seSB0aGlzIG9uZSB3aWxsIGJlIHNob3duIGluIHRoZSBEaWFsb2cgaW5pdGlhbGx5IChzZWFyY2ggZmllbGQgcG9wdWxhdGVkIHdpdGggdGhpcyBzdHJpbmcpXG59O1xuXG5jb25zdCBURVhUX0FSUkFOR0VNRU5UX0xBQkVMUyA9IHtcblx0W1RleHRBcnJhbmdlbWVudFR5cGUuVGV4dE9ubHldOiBcIlRleHQgT25seVwiLFxuXHRbVGV4dEFycmFuZ2VtZW50VHlwZS5UZXh0Rmlyc3RdOiBcIlRleHQgRmlyc3RcIixcblx0W1RleHRBcnJhbmdlbWVudFR5cGUuVGV4dExhc3RdOiBcIlRleHQgTGFzdFwiLFxuXHRbVGV4dEFycmFuZ2VtZW50VHlwZS5UZXh0U2VwYXJhdGVdOiBcIklEIE9ubHlcIlxufTtcblxuZnVuY3Rpb24gZmlsdGVyUHJvcGVydHlXaXRoVGV4dEFubm90YXRpb24ocHJvcDogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuIHByb3AuYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0ICE9PSB1bmRlZmluZWQgJiYgIWhhc0N1cnJlbmN5KHByb3ApICYmICFoYXNVbml0KHByb3ApICYmICFpc0N1cnJlbmN5KHByb3ApICYmICFpc1VuaXQocHJvcCk7XG59XG5cbi8qKlxuICogQ29sbGVjdHMgYWxsIHByb3BlcnRpZXMgd2l0aCBhIFRleHQgYW5ub3RhdGlvbiBmcm9tIHRoZSBnaXZlbiBlbnRpdHkgdHlwZSBhbmQgaXRzIG5hdmlnYXRpb24gcHJvcGVydGllcy5cbiAqIEBwYXJhbSBlbnRpdHlUeXBlIFRoZSBlbnRpdHkgdHlwZSB0byBzdGFydCB3aXRoXG4gKiBAcGFyYW0gcHJvcGVydGllcyBUaGUgYXJyYXkgdG8gY29sbGVjdCB0aGUgcHJvcGVydGllcyBpblxuICogQHBhcmFtIGZpbHRlckZuIEEgZmlsdGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGljaCBwcm9wZXJ0aWVzIHRvIGNvbGxlY3RcbiAqIEBwYXJhbSB2aXNpdGVkRW50aXR5IEEgbWFwIHRvIGtlZXAgdHJhY2sgb2YgdmlzaXRlZCBlbnRpdGllc1xuICovXG5mdW5jdGlvbiBfY29sbGVjdFByb3BlcnRpZXMoXG5cdGVudGl0eVR5cGU6IEVudGl0eVR5cGUsXG5cdHByb3BlcnRpZXM6IHsgcHJvcGVydHk6IFByb3BlcnR5OyBlbnRpdHlUeXBlOiBFbnRpdHlUeXBlIH1bXSxcblx0ZmlsdGVyRm46IChwcm9wOiBQcm9wZXJ0eSkgPT4gYm9vbGVhbixcblx0dmlzaXRlZEVudGl0eTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj5cbik6IHZvaWQge1xuXHRpZiAodmlzaXRlZEVudGl0eVtlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZV0pIHtcblx0XHRyZXR1cm47XG5cdH1cblx0dmlzaXRlZEVudGl0eVtlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSB0cnVlO1xuXHRwcm9wZXJ0aWVzLnB1c2goXG5cdFx0Li4uZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzXG5cdFx0XHQuZmlsdGVyKGZpbHRlckZuKVxuXHRcdFx0LmZpbHRlcigocHJvcCkgPT4ge1xuXHRcdFx0XHQvLyBBbHdheXMgZmlsdGVyIG91dCBVSS5IaWRkZW4gPSB0cnVlXG5cdFx0XHRcdC8vIEFsd2F5cyBmaWx0ZXIgb3V0IGNvbXBsZXggdHlwZVxuXHRcdFx0XHRpZiAocHJvcC5hbm5vdGF0aW9ucy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgPT09IHRydWUgfHwgISFwcm9wLnRhcmdldFR5cGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9KVxuXHRcdFx0Lm1hcCgocHJvcDogUHJvcGVydHkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRwcm9wZXJ0eTogcHJvcCxcblx0XHRcdFx0XHRlbnRpdHlUeXBlOiBlbnRpdHlUeXBlXG5cdFx0XHRcdH07XG5cdFx0XHR9KVxuXHQpO1xufVxuXG5mdW5jdGlvbiBjb2xsZWN0UHJvcGVydGllcyhcblx0dGVtcGxhdGVDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50LFxuXHRjb250cm9sOiBNYW5hZ2VkT2JqZWN0LFxuXHRmaWx0ZXJGbjogKHByb3A6IFByb3BlcnR5KSA9PiBib29sZWFuXG4pOiB7IHByb3BlcnR5OiBQcm9wZXJ0eTsgZW50aXR5VHlwZTogRW50aXR5VHlwZSB9W10gfCBudWxsIHtcblx0Y29uc3QgbWV0YU1vZGVsID0gdGVtcGxhdGVDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCk7XG5cdGNvbnN0IGNvbnRleHRQYXRoVG9Vc2UgPSB0ZW1wbGF0ZUNvbXBvbmVudC5nZXRGdWxsQ29udGV4dFBhdGgoKTtcblx0Ly8gRmluZCBjbG9zZXN0IGJ1aWxkaW5nIGJsb2NrXG5cdGxldCBidWlsZGluZ0Jsb2NrOiBNYW5hZ2VkT2JqZWN0IHwgbnVsbCA9IGNvbnRyb2w7XG5cdHdoaWxlIChidWlsZGluZ0Jsb2NrICYmICFidWlsZGluZ0Jsb2NrLmlzQTxCdWlsZGluZ0Jsb2NrPihcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLkJ1aWxkaW5nQmxvY2tcIikpIHtcblx0XHRidWlsZGluZ0Jsb2NrID0gYnVpbGRpbmdCbG9jay5nZXRQYXJlbnQoKTtcblx0fVxuXHRsZXQgbWV0YVBhdGggPSBjb250ZXh0UGF0aFRvVXNlITtcblx0aWYgKGJ1aWxkaW5nQmxvY2spIHtcblx0XHRtZXRhUGF0aCA9IGJ1aWxkaW5nQmxvY2suZ2V0UHJvcGVydHkoXCJtZXRhUGF0aFwiKSA/PyBjb250ZXh0UGF0aFRvVXNlO1xuXHR9XG5cdGNvbnN0IHByb3BlcnRpZXM6IHsgcHJvcGVydHk6IFByb3BlcnR5OyBlbnRpdHlUeXBlOiBFbnRpdHlUeXBlIH1bXSA9IFtdO1xuXHRpZiAobWV0YU1vZGVsICYmIGNvbnRleHRQYXRoVG9Vc2UpIHtcblx0XHRsZXQgdGFyZ2V0RW50aXR5OiBNZXRhUGF0aDxFbnRpdHlUeXBlPjtcblx0XHR0cnkge1xuXHRcdFx0dGFyZ2V0RW50aXR5ID0gbmV3IE1ldGFQYXRoKGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLCBtZXRhUGF0aCwgY29udGV4dFBhdGhUb1VzZSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLndhcm5pbmcoYE5vIG1ldGFtb2RlbCBvciBtZXRhUGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggJHttZXRhUGF0aH0gYW5kICR7Y29udGV4dFBhdGhUb1VzZX1gKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdGNvbnN0IHZpc2l0ZWRFbnRpdHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cdFx0Ly8gQ29sbGVjdCBhbGwgcHJvcGVydGllcywgZG9uJ3QgYXBwbHkgZmlsdGVyc1xuXHRcdF9jb2xsZWN0UHJvcGVydGllcyh0YXJnZXRFbnRpdHkuZ2V0Q2xvc2VzdEVudGl0eVR5cGUoKSwgcHJvcGVydGllcywgZmlsdGVyRm4sIHZpc2l0ZWRFbnRpdHkpO1xuXHR9XG5cdHJldHVybiBwcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVuYW1lQWN0aW9uKFxuXHRyZW5hbWVUZXh0ID0gXCJSVEFfQ09OVEVYVF9BQ1RJT05NRU5VX1JFTkFNRVwiLFxuXHRjaGFuZ2VMYWJlbFRleHQgPSBcIlJUQV9DT05URVhUX0FDVElPTk1FTlVfQ0hBTkdFTEFCRUxTXCIsXG5cdGlzQXRFbGVtZW50TGV2ZWwgPSBmYWxzZVxuKToge1xuXHRjaGFuZ2VUeXBlOiBzdHJpbmc7XG5cdHRpdGxlOiAoKSA9PiBzdHJpbmc7XG5cdGljb246IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRkZWxlZ2F0ZTogeyBnZXRBbm5vdGF0aW9uc0NoYW5nZUluZm86IChvQ29udHJvbDogTWFuYWdlZE9iamVjdCwgX2Fubm90YXRpb246IHN0cmluZykgPT4gQW5ub3RhdGlvbkNoYW5nZVJldHVyblR5cGUgfCBudWxsIH07XG59IHtcblx0cmV0dXJuIHtcblx0XHRjaGFuZ2VUeXBlOiBcInJlbmFtZUxhYmVsXCIsXG5cdFx0dGl0bGU6ICgpOiBzdHJpbmcgPT4gKGlzQXRFbGVtZW50TGV2ZWwgPyBnZXRUZXh0KHJlbmFtZVRleHQpIDogZ2V0VGV4dChjaGFuZ2VMYWJlbFRleHQpKSxcblx0XHRpY29uOiBcInNhcC1pY29uOi8vZWRpdFwiLFxuXHRcdHR5cGU6IEFubm90YXRpb25UeXBlcy5TdHJpbmdUeXBlLFxuXHRcdGRlbGVnYXRlOiB7XG5cdFx0XHRnZXRBbm5vdGF0aW9uc0NoYW5nZUluZm86IChvQ29udHJvbDogTWFuYWdlZE9iamVjdCwgX2Fubm90YXRpb246IHN0cmluZyk6IEFubm90YXRpb25DaGFuZ2VSZXR1cm5UeXBlIHwgbnVsbCA9PiB7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKG9Db250cm9sKSBhcyBUZW1wbGF0ZUNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKHRlbXBsYXRlQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0bGV0IHRhcmdldFByb3BlcnR5OiBQcm9wZXJ0eSB8IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRpZiAob0NvbnRyb2wuaXNBPEZvcm1FbGVtZW50PihcInNhcC51aS5sYXlvdXQuZm9ybS5Gb3JtRWxlbWVudFwiKSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgZmllbGRzID0gb0NvbnRyb2wuZ2V0RmllbGRzKCk7XG5cdFx0XHRcdFx0XHRpZiAoZmllbGRzLmxlbmd0aCA+IDAgJiYgZmllbGRzWzBdLmlzQTxGaWVsZD4oXCJzYXAuZmUubWFjcm9zLkZpZWxkXCIpKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGNvbnN0IHRhcmdldE9iamVjdCA9IGZpZWxkc1swXTtcblx0XHRcdFx0XHRcdFx0Ly8gdGFyZ2V0UHJvcGVydHkgPXRhcmdldE9iamVjdC5wcm9wZXJ0eTtcblx0XHRcdFx0XHRcdFx0Ly8gV2UgY291bGQgZ2V0IGZyb20gdGhlIEZpZWxkIHRoZSBjdXJyZW50IHByb3BlcnR5IC8gd2hlcmUgaXQgY29tZXMgZnJvbSwgYnV0IHdlIG5lZWQgdG8gYWRkIGFuIEFQSSBmb3IgdGhhdFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0aWVzID0gY29sbGVjdFByb3BlcnRpZXModGVtcGxhdGVDb21wb25lbnQsIG9Db250cm9sLCAoKSA9PiB0cnVlKTtcblxuXHRcdFx0XHRcdGlmIChwcm9wZXJ0aWVzICYmIHByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0c2VydmljZVVybDogKG9Db250cm9sLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbCB8IHVuZGVmaW5lZCk/LmdldFNlcnZpY2VVcmwoKSxcblx0XHRcdFx0XHRcdFx0cHJvcGVydGllczogcHJvcGVydGllcy5tYXAoKHByb3A6IHsgcHJvcGVydHk6IFByb3BlcnR5OyBlbnRpdHlUeXBlOiBFbnRpdHlUeXBlIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcGVydHlOYW1lOiBgJHtwcm9wLnByb3BlcnR5Lm5hbWV9YCxcblx0XHRcdFx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcIi9cIiArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByb3AuZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcIi9cIiArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByb3AucHJvcGVydHkubmFtZSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudFZhbHVlOiBwcm9wLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uTGFiZWw/LnRvU3RyaW5nKCkgPz8gcHJvcC5wcm9wZXJ0eS5uYW1lXG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdHBvc3NpYmxlVmFsdWVzOiBbXSxcblx0XHRcdFx0XHRcdFx0cHJlU2VsZWN0ZWRQcm9wZXJ0eTogdGFyZ2V0UHJvcGVydHlcblx0XHRcdFx0XHRcdFx0XHQ/IFwiL1wiICsgdGFyZ2V0UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lICsgXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCJcblx0XHRcdFx0XHRcdFx0XHQ6IFwiXCIgLy8gaWYgdGhlIGFjdGlvbiBpcyB0cmlnZ2VyZWQgZnJvbSBhIGNvbnRyb2wgdGhhdCBjb3JyZXNwb25kcyB0byBhIHByb3BlcnR5LCBvbmx5IHRoaXMgb25lIHdpbGwgYmUgc2hvd24gaW4gdGhlIERpYWxvZyBpbml0aWFsbHkgKHNlYXJjaCBmaWVsZCBwb3B1bGF0ZWQgd2l0aCB0aGlzIHN0cmluZylcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRBcnJhbmdlbWVudENoYW5nZUFjdGlvbihrZXkgPSBcIlJUQV9DT05URVhUX0FDVElPTk1FTlVfVEVYVEFSUkFOR0VcIik6IHtcblx0Y2hhbmdlVHlwZTogc3RyaW5nO1xuXHR0aXRsZTogKCkgPT4gc3RyaW5nO1xuXHR0eXBlOiBzdHJpbmc7XG5cdGRlbGVnYXRlOiB7IGdldEFubm90YXRpb25zQ2hhbmdlSW5mbzogKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0LCBfYW5ub3RhdGlvbjogc3RyaW5nKSA9PiBBbm5vdGF0aW9uQ2hhbmdlUmV0dXJuVHlwZSB8IG51bGwgfTtcbn0ge1xuXHRyZXR1cm4ge1xuXHRcdGNoYW5nZVR5cGU6IFwidGV4dEFycmFuZ2VtZW50X1Rlc3RcIixcblx0XHR0aXRsZTogKCk6IHN0cmluZyA9PiBnZXRUZXh0KGtleSksXG5cdFx0dHlwZTogQW5ub3RhdGlvblR5cGVzLlZhbHVlTGlzdFR5cGUsXG5cdFx0ZGVsZWdhdGU6IHtcblx0XHRcdGdldEFubm90YXRpb25zQ2hhbmdlSW5mbzogKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0LCBfYW5ub3RhdGlvbjogc3RyaW5nKTogQW5ub3RhdGlvbkNoYW5nZVJldHVyblR5cGUgfCBudWxsID0+IHtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3Iob0NvbnRyb2wpIGFzIFRlbXBsYXRlQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRpZiAodGVtcGxhdGVDb21wb25lbnQpIHtcblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0aWVzID0gY29sbGVjdFByb3BlcnRpZXModGVtcGxhdGVDb21wb25lbnQsIG9Db250cm9sLCBmaWx0ZXJQcm9wZXJ0eVdpdGhUZXh0QW5ub3RhdGlvbik7XG5cdFx0XHRcdFx0aWYgKHByb3BlcnRpZXMgJiYgcHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRzZXJ2aWNlVXJsOiAob0NvbnRyb2wuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsIHwgdW5kZWZpbmVkKT8uZ2V0U2VydmljZVVybCgpLFxuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLm1hcCgocHJvcDogeyBwcm9wZXJ0eTogUHJvcGVydHk7IGVudGl0eVR5cGU6IEVudGl0eVR5cGUgfSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRlZmF1bHRUeXBlID1cblx0XHRcdFx0XHRcdFx0XHRcdHByb3AuZW50aXR5VHlwZS5hbm5vdGF0aW9ucy5VST8uVGV4dEFycmFuZ2VtZW50Py50b1N0cmluZygpID8/IFRleHRBcnJhbmdlbWVudFR5cGUuVGV4dEZpcnN0LnRvU3RyaW5nKCk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRcdHByb3BlcnR5TmFtZTogcHJvcC5wcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpID8/IHByb3AucHJvcGVydHkubmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcIi9cIiArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByb3AuZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcIi9cIiArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByb3AucHJvcGVydHkubmFtZSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0QGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlRleHRBcnJhbmdlbWVudFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudFZhbHVlOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9wLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dD8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQ/LnRvU3RyaW5nKCkgPz8gZGVmYXVsdFR5cGVcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0cG9zc2libGVWYWx1ZXM6IE9iamVjdC5rZXlzKFRFWFRfQVJSQU5HRU1FTlRfTEFCRUxTKS5tYXAoKHNLZXkpID0+ICh7XG5cdFx0XHRcdFx0XHRcdFx0a2V5OiBzS2V5LFxuXHRcdFx0XHRcdFx0XHRcdHRleHQ6IFRFWFRfQVJSQU5HRU1FTlRfTEFCRUxTW3NLZXkgYXMgdW5rbm93biBhcyBrZXlvZiB0eXBlb2YgVEVYVF9BUlJBTkdFTUVOVF9MQUJFTFNdXG5cdFx0XHRcdFx0XHRcdH0pKSxcblx0XHRcdFx0XHRcdFx0cHJlU2VsZWN0ZWRQcm9wZXJ0eTogXCJcIiAvLyBpZiB0aGUgYWN0aW9uIGlzIHRyaWdnZXJlZCBmcm9tIGEgY29udHJvbCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgcHJvcGVydHksIG9ubHkgdGhpcyBvbmUgd2lsbCBiZSBzaG93biBpbiB0aGUgRGlhbG9nIGluaXRpYWxseSAoc2VhcmNoIGZpZWxkIHBvcHVsYXRlZCB3aXRoIHRoaXMgc3RyaW5nKVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0VBV0E7RUFJQTtFQUdBLE1BQU1BLHdCQUF3QixHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLHdCQUF3QixDQUFFO0VBRTdFLE1BQU1DLE9BQU8sR0FBRyxTQUFBQSxDQUFVQyxHQUFXLEVBQVU7SUFDckQsT0FBT0osd0JBQXdCLENBQUNHLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDO0VBQzdDLENBQUM7RUFBQ0MsUUFBQSxDQUFBRixPQUFBLEdBQUFBLE9BQUE7RUFhRixNQUFNRyx1QkFBdUIsR0FBRztJQUMvQixxQ0FBZ0MsV0FBVztJQUMzQyxzQ0FBaUMsWUFBWTtJQUM3QyxxQ0FBZ0MsV0FBVztJQUMzQyx5Q0FBb0M7RUFDckMsQ0FBQztFQUVELFNBQVNDLGdDQUFnQ0EsQ0FBQ0MsSUFBYyxFQUFXO0lBQ2xFLE9BQU9BLElBQUksQ0FBQ0Ms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
184
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZURlc2lnbnRpbWUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJrZXkiLCJfZXhwb3J0cyIsIlRFWFRfQVJSQU5HRU1FTlRfTEFCRUxTIiwiZmlsdGVyUHJvcGVydHlXaXRoVGV4dEFubm90YXRpb24iLCJwcm9wIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwidW5kZWZpbmVkIiwiaGFzQ3VycmVuY3kiLCJoYXNVbml0IiwiaXNDdXJyZW5jeSIsImlzVW5pdCIsIl9jb2xsZWN0UHJvcGVydGllcyIsImVudGl0eVR5cGUiLCJwcm9wZXJ0aWVzIiwiZmlsdGVyRm4iLCJ2aXNpdGVkRW50aXR5IiwiZnVsbHlRdWFsaWZpZWROYW1lIiwicHVzaCIsImVudGl0eVByb3BlcnRpZXMiLCJmaWx0ZXIiLCJVSSIsIkhpZGRlbiIsInZhbHVlT2YiLCJ0YXJnZXRUeXBlIiwibWFwIiwicHJvcGVydHkiLCJjb2xsZWN0UHJvcGVydGllcyIsInRlbXBsYXRlQ29tcG9uZW50IiwiY29udHJvbCIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImNvbnRleHRQYXRoVG9Vc2UiLCJnZXRGdWxsQ29udGV4dFBhdGgiLCJidWlsZGluZ0Jsb2NrIiwiaXNBIiwiZ2V0UGFyZW50IiwibWV0YVBhdGgiLCJnZXRQcm9wZXJ0eSIsInRhcmdldEVudGl0eSIsIk1ldGFQYXRoIiwiY29udmVydFR5cGVzIiwiZSIsIkxvZyIsIndhcm5pbmciLCJnZXRDbG9zZXN0RW50aXR5VHlwZSIsImdldFRhcmdldFByb3BlcnR5RnJvbUZvcm1FbGVtZW50Iiwib0NvbnRyb2wiLCJ0YXJnZXRQcm9wZXJ0eSIsImZpZWxkcyIsImdldEZpZWxkcyIsImxlbmd0aCIsInRhcmdldE9iamVjdCIsImdldE1haW5Qcm9wZXJ0eVJlbGF0aXZlUGF0aCIsImdldFJlbmFtZUFjdGlvbiIsImlzQXRFbGVtZW50TGV2ZWwiLCJhcmd1bWVudHMiLCJjaGFuZ2VUeXBlIiwidGl0bGUiLCJpY29uIiwic2luZ2xlUmVuYW1lIiwiY29udHJvbEJhc2VkUmVuYW1lQ2hhbmdlVHlwZSIsInR5cGUiLCJBbm5vdGF0aW9uVHlwZXMiLCJTdHJpbmdUeXBlIiwiZGVsZWdhdGUiLCJnZXRBbm5vdGF0aW9uc0NoYW5nZUluZm8iLCJfYW5ub3RhdGlvbiIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwidmlldyIsIkNvbW1vblV0aWxzIiwiZ2V0VGFyZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJnZXRPd25lckNvbXBvbmVudCIsInRhcmdldFByb3BlcnR5UGF0aCIsImZpbmQiLCJuYW1lIiwic2VydmljZVVybCIsImdldE1vZGVsIiwiZ2V0U2VydmljZVVybCIsInByb3BlcnR5TmFtZSIsImFubm90YXRpb25QYXRoIiwiY3VycmVudFZhbHVlIiwiTGFiZWwiLCJ0b1N0cmluZyIsInBvc3NpYmxlVmFsdWVzIiwicHJlU2VsZWN0ZWRQcm9wZXJ0eSIsImdldFRleHRBcnJhbmdlbWVudENoYW5nZUFjdGlvbiIsIlZhbHVlTGlzdFR5cGUiLCJkZWZhdWx0VHlwZSIsIlRleHRBcnJhbmdlbWVudCIsIk9iamVjdCIsImtleXMiLCJzS2V5IiwidGV4dCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQW5ub3RhdGlvbkJhc2VkQ2hhbmdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVR5cGUsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBUZXh0QXJyYW5nZW1lbnRUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCB7IGNvbnZlcnRUeXBlcyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IE1ldGFQYXRoIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01ldGFQYXRoXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbi8vIE9LIHNpbmNlIHdlIGFyZSBpbiBkZXNpZ250aW1lIHdlIGNhbiBpZ25vcmUgdGhhdCBkZXBlbmRlbmN5XG5pbXBvcnQgeyBoYXNDdXJyZW5jeSwgaGFzVW5pdCwgaXNDdXJyZW5jeSwgaXNVbml0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEZpZWxkIGZyb20gXCJzYXAvZmUvbWFjcm9zL0ZpZWxkXCI7XG5pbXBvcnQgdHlwZSBGb3JtRWxlbWVudCBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL0Zvcm1FbGVtZW50XCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IEFubm90YXRpb25UeXBlcyBmcm9tIFwic2FwL3VpL3J0YS9wbHVnaW4vYW5ub3RhdGlvbnMvQW5ub3RhdGlvblR5cGVzXCI7XG5cbmNvbnN0IHJlc291cmNlQnVuZGxlRGVzaWdudGltZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlLmRlc2lnbnRpbWVcIikhO1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dCA9IGZ1bmN0aW9uIChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiByZXNvdXJjZUJ1bmRsZURlc2lnbnRpbWUuZ2V0VGV4dChrZXkpO1xufTtcblxudHlwZSBBbm5vdGF0aW9uQ2hhbmdlUmV0dXJuVHlwZSA9IHtcblx0c2VydmljZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRwcm9wZXJ0aWVzOiB7XG5cdFx0cHJvcGVydHlOYW1lOiBzdHJpbmc7XG5cdFx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0XHRjdXJyZW50VmFsdWU6IHN0cmluZztcblx0fVtdO1xuXHRwb3NzaWJsZVZhbHVlczogeyBrZXk6IHN0cmluZzsgdGV4dDogc3RyaW5nIH1bXTtcblx0cHJlU2VsZWN0ZWRQcm9wZXJ0eTogc3RyaW5nOyAvLyBpZiB0aGUgYWN0aW9uIGlzIHRyaWdnZXJlZCBmcm9tIGEgY29udHJvbCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgcHJvcGVydHksIG9ubHkgdGhpcyBvbmUgd2lsbCBiZSBzaG93biBpbiB0aGUgRGlhbG9nIGluaXRpYWxseSAoc2VhcmNoIGZpZWxkIHBvcHVsYXRlZCB3aXRoIHRoaXMgc3RyaW5nKVxufTtcblxuY29uc3QgVEVYVF9BUlJBTkdFTUVOVF9MQUJFTFMgPSB7XG5cdFtUZXh0QXJyYW5nZW1lbnRUeXBlLlRleHRPbmx5XTogXCJUZXh0IE9ubHlcIixcblx0W1RleHRBcnJhbmdlbWVudFR5cGUuVGV4dEZpcnN0XTogXCJUZXh0IEZpcnN0XCIsXG5cdFtUZXh0QXJyYW5nZW1lbnRUeXBlLlRleHRMYXN0XTogXCJUZXh0IExhc3RcIixcblx0W1RleHRBcnJhbmdlbWVudFR5cGUuVGV4dFNlcGFyYXRlXTogXCJJRCBPbmx5XCJcbn07XG5cbmZ1bmN0aW9uIGZpbHRlclByb3BlcnR5V2l0aFRleHRBbm5vdGF0aW9uKHByb3A6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiBwcm9wLmFubm90YXRpb25zLkNvbW1vbj8uVGV4dCAhPT0gdW5kZWZpbmVkICYmICFoYXNDdXJyZW5jeShwcm9wKSAmJiAhaGFzVW5pdChwcm9wKSAmJiAhaXNDdXJyZW5jeShwcm9wKSAmJiAhaXNVbml0KHByb3ApO1xufVxuXG4vKipcbiAqIENvbGxlY3RzIGFsbCBwcm9wZXJ0aWVzIHdpdGggYSBUZXh0IGFubm90YXRpb24gZnJvbSB0aGUgZ2l2ZW4gZW50aXR5IHR5cGUgYW5kIGl0cyBuYXZpZ2F0aW9uIHByb3BlcnRpZXMuXG4gKiBAcGFyYW0gZW50aXR5VHlwZSBUaGUgZW50aXR5IHR5cGUgdG8gc3RhcnQgd2l0aFxuICogQHBhcmFtIHByb3BlcnRpZXMgVGhlIGFycmF5IHRvIGNvbGxlY3QgdGhlIHByb3BlcnRpZXMgaW5cbiAqIEBwYXJhbSBmaWx0ZXJGbiBBIGZpbHRlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgd2hpY2ggcHJvcGVydGllcyB0byBjb2xsZWN0XG4gKiBAcGFyYW0gdmlzaXRlZEVudGl0eSBBIG1hcCB0byBrZWVwIHRyYWNrIG9mIHZpc2l0ZWQgZW50aXRpZXNcbiAqL1xuZnVuY3Rpb24gX2NvbGxlY3RQcm9wZXJ0aWVzKFxuXHRlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLFxuXHRwcm9wZXJ0aWVzOiB7IHByb3BlcnR5OiBQcm9wZXJ0eTsgZW50aXR5VHlwZTogRW50aXR5VHlwZSB9W10sXG5cdGZpbHRlckZuOiAocHJvcDogUHJvcGVydHkpID0+IGJvb2xlYW4sXG5cdHZpc2l0ZWRFbnRpdHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+XG4pOiB2b2lkIHtcblx0aWYgKHZpc2l0ZWRFbnRpdHlbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZpc2l0ZWRFbnRpdHlbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdID0gdHJ1ZTtcblx0cHJvcGVydGllcy5wdXNoKFxuXHRcdC4uLmVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllc1xuXHRcdFx0LmZpbHRlcihmaWx0ZXJGbilcblx0XHRcdC5maWx0ZXIoKHByb3ApID0+IHtcblx0XHRcdFx0Ly8gQWx3YXlzIGZpbHRlciBvdXQgVUkuSGlkZGVuID0gdHJ1ZVxuXHRcdFx0XHQvLyBBbHdheXMgZmlsdGVyIG91dCBjb21wbGV4IHR5cGVcblx0XHRcdFx0aWYgKHByb3AuYW5ub3RhdGlvbnMuVUk/LkhpZGRlbj8udmFsdWVPZigpID09PSB0cnVlIHx8ICEhcHJvcC50YXJnZXRUeXBlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSlcblx0XHRcdC5tYXAoKHByb3A6IFByb3BlcnR5KSA9PiB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0cHJvcGVydHk6IHByb3AsXG5cdFx0XHRcdFx0ZW50aXR5VHlwZTogZW50aXR5VHlwZVxuXHRcdFx0XHR9O1xuXHRcdFx0fSlcblx0KTtcbn1cblxuZnVuY3Rpb24gY29sbGVjdFByb3BlcnRpZXMoXG5cdHRlbXBsYXRlQ29tcG9uZW50OiBUZW1wbGF0ZUNvbXBvbmVudCxcblx0Y29udHJvbDogTWFuYWdlZE9iamVjdCxcblx0ZmlsdGVyRm46IChwcm9wOiBQcm9wZXJ0eSkgPT4gYm9vbGVhblxuKTogeyBwcm9wZXJ0eTogUHJvcGVydHk7IGVudGl0eVR5cGU6IEVudGl0eVR5cGUgfVtdIHwgbnVsbCB7XG5cdGNvbnN0IG1ldGFNb2RlbCA9IHRlbXBsYXRlQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRjb25zdCBjb250ZXh0UGF0aFRvVXNlID0gdGVtcGxhdGVDb21wb25lbnQuZ2V0RnVsbENvbnRleHRQYXRoKCk7XG5cdC8vIEZpbmQgY2xvc2VzdCBidWlsZGluZyBibG9ja1xuXHRsZXQgYnVpbGRpbmdCbG9jazogTWFuYWdlZE9iamVjdCB8IG51bGwgPSBjb250cm9sO1xuXHR3aGlsZSAoYnVpbGRpbmdCbG9jayAmJiAhYnVpbGRpbmdCbG9jay5pc0E8QnVpbGRpbmdCbG9jaz4oXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5CdWlsZGluZ0Jsb2NrXCIpKSB7XG5cdFx0YnVpbGRpbmdCbG9jayA9IGJ1aWxkaW5nQmxvY2suZ2V0UGFyZW50KCk7XG5cdH1cblx0bGV0IG1ldGFQYXRoID0gY29udGV4dFBhdGhUb1VzZSE7XG5cdGlmIChidWlsZGluZ0Jsb2NrKSB7XG5cdFx0bWV0YVBhdGggPSBidWlsZGluZ0Jsb2NrLmdldFByb3BlcnR5KFwibWV0YVBhdGhcIikgPz8gY29udGV4dFBhdGhUb1VzZTtcblx0fVxuXHRjb25zdCBwcm9wZXJ0aWVzOiB7IHByb3BlcnR5OiBQcm9wZXJ0eTsgZW50aXR5VHlwZTogRW50aXR5VHlwZSB9W10gPSBbXTtcblx0aWYgKG1ldGFNb2RlbCAmJiBjb250ZXh0UGF0aFRvVXNlKSB7XG5cdFx0bGV0IHRhcmdldEVudGl0eTogTWV0YVBhdGg8RW50aXR5VHlwZT47XG5cdFx0dHJ5IHtcblx0XHRcdHRhcmdldEVudGl0eSA9IG5ldyBNZXRhUGF0aChjb252ZXJ0VHlwZXMobWV0YU1vZGVsKSwgbWV0YVBhdGgsIGNvbnRleHRQYXRoVG9Vc2UpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy53YXJuaW5nKGBObyBtZXRhbW9kZWwgb3IgbWV0YVBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoICR7bWV0YVBhdGh9IGFuZCAke2NvbnRleHRQYXRoVG9Vc2V9YCk7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRjb25zdCB2aXNpdGVkRW50aXR5OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuXHRcdC8vIENvbGxlY3QgYWxsIHByb3BlcnRpZXMsIGRvbid0IGFwcGx5IGZpbHRlcnNcblx0XHRfY29sbGVjdFByb3BlcnRpZXModGFyZ2V0RW50aXR5LmdldENsb3Nlc3RFbnRpdHlUeXBlKCksIHByb3BlcnRpZXMsIGZpbHRlckZuLCB2aXNpdGVkRW50aXR5KTtcblx0fVxuXHRyZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhcmdldFByb3BlcnR5RnJvbUZvcm1FbGVtZW50KG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0bGV0IHRhcmdldFByb3BlcnR5O1xuXHRpZiAob0NvbnRyb2wuaXNBPEZvcm1FbGVtZW50PihcInNhcC51aS5sYXlvdXQuZm9ybS5Gb3JtRWxlbWVudFwiKSkge1xuXHRcdGNvbnN0IGZpZWxkcyA9IG9Db250cm9sLmdldEZpZWxkcygpO1xuXHRcdGlmIChmaWVsZHM/Lmxlbmd0aCA+IDAgJiYgZmllbGRzWzBdLmlzQTxGaWVsZD4oXCJzYXAuZmUubWFjcm9zLkZpZWxkXCIpKSB7XG5cdFx0XHRjb25zdCB0YXJnZXRPYmplY3QgPSBmaWVsZHNbMF07XG5cdFx0XHR0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldE9iamVjdC5nZXRNYWluUHJvcGVydHlSZWxhdGl2ZVBhdGgoKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHRhcmdldFByb3BlcnR5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVuYW1lQWN0aW9uKGlzQXRFbGVtZW50TGV2ZWwgPSBmYWxzZSk6IHtcblx0Y2hhbmdlVHlwZTogc3RyaW5nO1xuXHRzaW5nbGVSZW5hbWU6IGJvb2xlYW47XG5cdGNvbnRyb2xCYXNlZFJlbmFtZUNoYW5nZVR5cGU6IHN0cmluZztcblx0dGl0bGU6ICgpID0+IHN0cmluZztcblx0aWNvbjogc3RyaW5nO1xuXHR0eXBlOiBzdHJpbmc7XG5cdGRlbGVnYXRlOiB7IGdldEFubm90YXRpb25zQ2hhbmdlSW5mbzogKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0LCBfYW5ub3RhdGlvbjogc3RyaW5nKSA9PiBBbm5vdGF0aW9uQ2hhbmdlUmV0dXJuVHlwZSB8IG51bGwgfTtcbn0ge1xuXHRyZXR1cm4ge1xuXHRcdGNoYW5nZVR5cGU6IFwicmVuYW1lTGFiZWxcIixcblx0XHR0aXRsZTogKCk6IHN0cmluZyA9PiAoaXNBdEVsZW1lbnRMZXZlbCA/IGdldFRleHQoXCJSVEFfQ09OVEVYVF9BQ1RJT05NRU5VX1JFTkFNRVwiKSA6IGdldFRleHQoXCJSVEFfQ09OVEVYVF9BQ1RJT05NRU5VX0NIQU5HRUxBQkVMU1wiKSksXG5cdFx0aWNvbjogXCJzYXAtaWNvbjovL2VkaXRcIixcblx0XHRzaW5nbGVSZW5hbWU6IGlzQXRFbGVtZW50TGV2ZWwsXG5cdFx0Y29udHJvbEJhc2VkUmVuYW1lQ2hhbmdlVHlwZTogXCJyZW5hbWVGaWVsZFwiLFxuXHRcdHR5cGU6IEFubm90YXRpb25UeXBlcy5TdHJpbmdUeXBlLFxuXHRcdGRlbGVnYXRlOiB7XG5cdFx0XHRnZXRBbm5vdGF0aW9uc0NoYW5nZUluZm86IChvQ29udHJvbDogTWFuYWdlZE9iamVjdCwgX2Fubm90YXRpb246IHN0cmluZyk6IEFubm90YXRpb25DaGFuZ2VSZXR1cm5UeXBlIHwgbnVsbCA9PiB7XG5cdFx0XHRcdGxldCB0ZW1wbGF0ZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihvQ29udHJvbCkgYXMgVGVtcGxhdGVDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmICghdGVtcGxhdGVDb21wb25lbnQpIHtcblx0XHRcdFx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhvQ29udHJvbCk7XG5cdFx0XHRcdFx0dGVtcGxhdGVDb21wb25lbnQgPSB2aWV3Py5nZXRDb250cm9sbGVyKCkuZ2V0T3duZXJDb21wb25lbnQoKSBhcyBUZW1wbGF0ZUNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGVtcGxhdGVDb21wb25lbnQpIHtcblx0XHRcdFx0XHRsZXQgdGFyZ2V0UHJvcGVydHk6IFByb3BlcnR5IHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnRpZXMgPSBjb2xsZWN0UHJvcGVydGllcyh0ZW1wbGF0ZUNvbXBvbmVudCwgb0NvbnRyb2wsICgpID0+IHRydWUpO1xuXHRcdFx0XHRcdGNvbnN0IHRhcmdldFByb3BlcnR5UGF0aCA9IGdldFRhcmdldFByb3BlcnR5RnJvbUZvcm1FbGVtZW50KG9Db250cm9sKTtcblx0XHRcdFx0XHRpZiAodGFyZ2V0UHJvcGVydHlQYXRoKSB7XG5cdFx0XHRcdFx0XHR0YXJnZXRQcm9wZXJ0eSA9IHByb3BlcnRpZXM/LmZpbmQoKHByb3ApID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHByb3AucHJvcGVydHkubmFtZSA9PT0gdGFyZ2V0UHJvcGVydHlQYXRoO1xuXHRcdFx0XHRcdFx0fSk/LnByb3BlcnR5O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChwcm9wZXJ0aWVzICYmIHByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0c2VydmljZVVybDogKG9Db250cm9sLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbCB8IHVuZGVmaW5lZCk/LmdldFNlcnZpY2VVcmwoKSxcblx0XHRcdFx0XHRcdFx0cHJvcGVydGllczogcHJvcGVydGllcy5tYXAoKHByb3A6IHsgcHJvcGVydHk6IFByb3BlcnR5OyBlbnRpdHlUeXBlOiBFbnRpdHlUeXBlIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcGVydHlOYW1lOiBgJHtwcm9wLnByb3BlcnR5Lm5hbWV9YCxcblx0XHRcdFx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcIi9cIiArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByb3AuZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcIi9cIiArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByb3AucHJvcGVydHkubmFtZSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudFZhbHVlOiBwcm9wLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uTGFiZWw/LnRvU3RyaW5nKCkgPz8gcHJvcC5wcm9wZXJ0eS5uYW1lXG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdHBvc3NpYmxlVmFsdWVzOiBbXSxcblx0XHRcdFx0XHRcdFx0cHJlU2VsZWN0ZWRQcm9wZXJ0eTogdGFyZ2V0UHJvcGVydHlcblx0XHRcdFx0XHRcdFx0XHQ/IFwiL1wiICsgdGFyZ2V0UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lICsgXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCJcblx0XHRcdFx0XHRcdFx0XHQ6IFwiXCIgLy8gaWYgdGhlIGFjdGlvbiBpcyB0cmlnZ2VyZWQgZnJvbSBhIGNvbnRyb2wgdGhhdCBjb3JyZXNwb25kcyB0byBhIHByb3BlcnR5LCBvbmx5IHRoaXMgb25lIHdpbGwgYmUgc2hvd24gaW4gdGhlIERpYWxvZyBpbml0aWFsbHkgKHNlYXJjaCBmaWVsZCBwb3B1bGF0ZWQgd2l0aCB0aGlzIHN0cmluZylcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRBcnJhbmdlbWVudENoYW5nZUFjdGlvbihrZXkgPSBcIlJUQV9DT05URVhUX0FDVElPTk1FTlVfVEVYVEFSUkFOR0VcIik6IHtcblx0Y2hhbmdlVHlwZTogc3RyaW5nO1xuXHR0aXRsZTogKCkgPT4gc3RyaW5nO1xuXHR0eXBlOiBzdHJpbmc7XG5cdGRlbGVnYXRlOiB7IGdldEFubm90YXRpb25zQ2hhbmdlSW5mbzogKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0LCBfYW5ub3RhdGlvbjogc3RyaW5nKSA9PiBBbm5vdGF0aW9uQ2hhbmdlUmV0dXJuVHlwZSB8IG51bGwgfTtcbn0ge1xuXHRyZXR1cm4ge1xuXHRcdGNoYW5nZVR5cGU6IFwidGV4dEFycmFuZ2VtZW50X1Rlc3RcIixcblx0XHR0aXRsZTogKCk6IHN0cmluZyA9PiBnZXRUZXh0KGtleSksXG5cdFx0dHlwZTogQW5ub3RhdGlvblR5cGVzLlZhbHVlTGlzdFR5cGUsXG5cdFx0ZGVsZWdhdGU6IHtcblx0XHRcdGdldEFubm90YXRpb25zQ2hhbmdlSW5mbzogKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0LCBfYW5ub3RhdGlvbjogc3RyaW5nKTogQW5ub3RhdGlvbkNoYW5nZVJldHVyblR5cGUgfCBudWxsID0+IHtcblx0XHRcdFx0bGV0IHRlbXBsYXRlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKG9Db250cm9sKSBhcyBUZW1wbGF0ZUNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKCF0ZW1wbGF0ZUNvbXBvbmVudCkge1xuXHRcdFx0XHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9Db250cm9sKTtcblx0XHRcdFx0XHR0ZW1wbGF0ZUNvbXBvbmVudCA9IHZpZXc/LmdldENvbnRyb2xsZXIoKS5nZXRPd25lckNvbXBvbmVudCgpIGFzIFRlbXBsYXRlQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0ZW1wbGF0ZUNvbXBvbmVudCkge1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnRpZXMgPSBjb2xsZWN0UHJvcGVydGllcyh0ZW1wbGF0ZUNvbXBvbmVudCwgb0NvbnRyb2wsIGZpbHRlclByb3BlcnR5V2l0aFRleHRBbm5vdGF0aW9uKTtcblx0XHRcdFx0XHRpZiAocHJvcGVydGllcyAmJiBwcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdHNlcnZpY2VVcmw6IChvQ29udHJvbC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWwgfCB1bmRlZmluZWQpPy5nZXRTZXJ2aWNlVXJsKCksXG5cdFx0XHRcdFx0XHRcdHByb3BlcnRpZXM6IHByb3BlcnRpZXMubWFwKChwcm9wOiB7IHByb3BlcnR5OiBQcm9wZXJ0eTsgZW50aXR5VHlwZTogRW50aXR5VHlwZSB9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgZGVmYXVsdFR5cGUgPVxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcC5lbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5UZXh0QXJyYW5nZW1lbnQ/LnRvU3RyaW5nKCkgPz8gVGV4dEFycmFuZ2VtZW50VHlwZS5UZXh0Rmlyc3QudG9TdHJpbmcoKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcGVydHlOYW1lOiBwcm9wLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uTGFiZWw/LnRvU3RyaW5nKCkgPz8gcHJvcC5wcm9wZXJ0eS5uYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFwiL1wiICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cHJvcC5lbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSArXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFwiL1wiICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cHJvcC5wcm9wZXJ0eS5uYW1lICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuVGV4dEFycmFuZ2VtZW50XCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VmFsdWU6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByb3AucHJvcGVydHkuYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0Py5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudD8udG9TdHJpbmcoKSA/PyBkZWZhdWx0VHlwZVxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRwb3NzaWJsZVZhbHVlczogT2JqZWN0LmtleXMoVEVYVF9BUlJBTkdFTUVOVF9MQUJFTFMpLm1hcCgoc0tleSkgPT4gKHtcblx0XHRcdFx0XHRcdFx0XHRrZXk6IHNLZXksXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogVEVYVF9BUlJBTkdFTUVOVF9MQUJFTFNbc0tleSBhcyB1bmtub3duIGFzIGtleW9mIHR5cGVvZiBURVhUX0FSUkFOR0VNRU5UX0xBQkVMU11cblx0XHRcdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdFx0XHRwcmVTZWxlY3RlZFByb3BlcnR5OiBcIlwiIC8vIGlmIHRoZSBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZyb20gYSBjb250cm9sIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBwcm9wZXJ0eSwgb25seSB0aGlzIG9uZSB3aWxsIGJlIHNob3duIGluIHRoZSBEaWFsb2cgaW5pdGlhbGx5IChzZWFyY2ggZmllbGQgcG9wdWxhdGVkIHdpdGggdGhpcyBzdHJpbmcpXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7RUFXQTtFQUlBO0VBSUEsTUFBTUEsd0JBQXdCLEdBQUdDLEdBQUcsQ0FBQ0Msb0JBQW9CLENBQUMsd0JBQXdCLENBQUU7RUFFN0UsTUFBTUMsT0FBTyxHQUFHLFNBQUFBLENBQVVDLEdBQVcsRUFBVTtJQUNyRCxPQUFPSix3QkFBd0IsQ0FBQ0csT0FBTyxDQUFDQyxHQUFHLENBQUM7RUFDN0MsQ0FBQztFQUFDQyxRQUFBLENBQUFGLE9BQUEsR0FBQUEsT0FBQTtFQWFGLE1BQU1HLHVCQUF1QixHQUFHO0lBQy9CLHFD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RUFBRTtZQUN0QixNQUFNZCxVQUFVLEdBQUdhLGlCQUFpQixDQUFDQyxpQkFBaUIsRUFBRW1CLFFBQVEsRUFBRTdDLGdDQUFnQyxDQUFDO1lBQ25HLElBQUlZLFVBQVUsSUFBSUEsVUFBVSxDQUFDcUMsTUFBTSxHQUFHLENBQUMsRUFBRTtjQUN4QyxPQUFPO2dCQUNOMkIsVUFBVSxFQUFHL0IsUUFBUSxDQUFDZ0MsUUFBUSxDQUFDLENBQUMsRUFBNkJDLGFBQWEsQ0FBQyxDQUFDO2dCQUM1RWxFLFVBQVUsRUFBRUEsVUFBVSxDQUFDVyxHQUFHLENBQUV0QixJQUFvRCxJQUFLO2tCQUNwRixNQUFNdUYsV0FBVyxHQUNoQnZGLElBQUksQ0FBQ1UsVUFBVSxDQUFDVCxXQUFXLENBQUNpQixFQUFFLEVBQUVzRSxlQUFlLEVBQUVOLFFBQVEsQ0FBQyxDQUFDLElBQUksbUNBQThCQSxRQUFRLENBQUMsQ0FBQztrQkFDeEcsT0FBTztvQkFDTkosWUFBWSxFQUFFOUUsSUFBSSxDQUFDdUIsUUFBUSxDQUFDdEIsV0FBVyxDQUFDQyxNQUFNLEVBQUUrRSxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxDQUFDLElBQUlsRixJQUFJLENBQUN1QixRQUFRLENBQUNtRCxJQUFJO29CQUN2RkssY0FBYyxFQUNiLEdBQUcsR0FDSC9FLElBQUksQ0FBQ1UsVUFBVSxDQUFDSSxrQkFBa0IsR0FDbEMsR0FBRyxHQUNIZCxJQUFJLENBQUN1QixRQUFRLENBQUNtRCxJQUFJLEdBQ2xCLGlGQUFpRjtvQkFDbEZNLFlBQVksRUFDWGhGLElBQUksQ0FBQ3VCLFFBQVEsQ0FBQ3RCLFdBQVcsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLEVBQUVGLFdBQVcsRUFBRWlCLEVBQUUsRUFBRXNFLGVBQWUsRUFBRU4sUUFBUSxDQUFDLENBQUMsSUFBSUs7a0JBQzFGLENBQUM7Z0JBQ0YsQ0FBQyxDQUFDO2dCQUNGSixjQUFjLEVBQUVNLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDNUYsdUJBQXVCLENBQUMsQ0FBQ3dCLEdBQUcsQ0FBRXFFLElBQUksS0FBTTtrQkFDbkUvRixHQUFHLEVBQUUrRixJQUFJO2tCQUNUQyxJQUFJLEVBQUU5Rix1QkFBdUIsQ0FBQzZGLElBQUk7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDO2dCQUNIUCxtQkFBbUIsRUFBRSxFQUFFLENBQUM7Y0FDekIsQ0FBQztZQUNGO1VBQ0Q7VUFDQSxPQUFPLElBQUk7UUFDWjtNQUNEO0lBQ0QsQ0FBQztFQUNGO0VBQUN2RixRQUFBLENBQUF3Riw4QkFBQSxHQUFBQSw4QkFBQTtFQUFBLE9BQUF4RixRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -14,6 +14,7 @@ import { hasCurrency, hasUnit, isCurrency, isUnit } from "sap/fe/core/templating
14
14
  import type Field from "sap/fe/macros/Field";
15
15
  import type FormElement from "sap/ui/layout/form/FormElement";
16
16
  // eslint-disable-next-line @typescript-eslint/no-restricted-imports
17
+ import CommonUtils from "sap/fe/core/CommonUtils";
17
18
  import AnnotationTypes from "sap/ui/rta/plugin/annotations/AnnotationTypes";
18
19
 
19
20
  const resourceBundleDesigntime = Lib.getResourceBundleFor("sap.fe.core.designtime")!;
@@ -114,12 +115,22 @@ function collectProperties(
114
115
  return properties;
115
116
  }
116
117
 
117
- export function getRenameAction(
118
- renameText = "RTA_CONTEXT_ACTIONMENU_RENAME",
119
- changeLabelText = "RTA_CONTEXT_ACTIONMENU_CHANGELABELS",
120
- isAtElementLevel = false
121
- ): {
118
+ export function getTargetPropertyFromFormElement(oControl: ManagedObject): string | undefined {
119
+ let targetProperty;
120
+ if (oControl.isA<FormElement>("sap.ui.layout.form.FormElement")) {
121
+ const fields = oControl.getFields();
122
+ if (fields?.length > 0 && fields[0].isA<Field>("sap.fe.macros.Field")) {
123
+ const targetObject = fields[0];
124
+ targetProperty = targetObject.getMainPropertyRelativePath();
125
+ }
126
+ }
127
+ return targetProperty;
128
+ }
129
+
130
+ export function getRenameAction(isAtElementLevel = false): {
122
131
  changeType: string;
132
+ singleRename: boolean;
133
+ controlBasedRenameChangeType: string;
123
134
  title: () => string;
124
135
  icon: string;
125
136
  type: string;
@@ -127,23 +138,27 @@ export function getRenameAction(
127
138
  } {
128
139
  return {
129
140
  changeType: "renameLabel",
130
- title: (): string => (isAtElementLevel ? getText(renameText) : getText(changeLabelText)),
141
+ title: (): string => (isAtElementLevel ? getText("RTA_CONTEXT_ACTIONMENU_RENAME") : getText("RTA_CONTEXT_ACTIONMENU_CHANGELABELS")),
131
142
  icon: "sap-icon://edit",
143
+ singleRename: isAtElementLevel,
144
+ controlBasedRenameChangeType: "renameField",
132
145
  type: AnnotationTypes.StringType,
133
146
  delegate: {
134
147
  getAnnotationsChangeInfo: (oControl: ManagedObject, _annotation: string): AnnotationChangeReturnType | null => {
135
- const templateComponent = Component.getOwnerComponentFor(oControl) as TemplateComponent | undefined;
148
+ let templateComponent = Component.getOwnerComponentFor(oControl) as TemplateComponent | undefined;
149
+ if (!templateComponent) {
150
+ const view = CommonUtils.getTargetView(oControl);
151
+ templateComponent = view?.getController().getOwnerComponent() as TemplateComponent | undefined;
152
+ }
136
153
  if (templateComponent) {
137
154
  let targetProperty: Property | undefined;
138
- if (oControl.isA<FormElement>("sap.ui.layout.form.FormElement")) {
139
- const fields = oControl.getFields();
140
- if (fields.length > 0 && fields[0].isA<Field>("sap.fe.macros.Field")) {
141
- // const targetObject = fields[0];
142
- // targetProperty =targetObject.property;
143
- // We could get from the Field the current property / where it comes from, but we need to add an API for that
144
- }
145
- }
146
155
  const properties = collectProperties(templateComponent, oControl, () => true);
156
+ const targetPropertyPath = getTargetPropertyFromFormElement(oControl);
157
+ if (targetPropertyPath) {
158
+ targetProperty = properties?.find((prop) => {
159
+ return prop.property.name === targetPropertyPath;
160
+ })?.property;
161
+ }
147
162
 
148
163
  if (properties && properties.length > 0) {
149
164
  return {
@@ -185,7 +200,11 @@ export function getTextArrangementChangeAction(key = "RTA_CONTEXT_ACTIONMENU_TEX
185
200
  type: AnnotationTypes.ValueListType,
186
201
  delegate: {
187
202
  getAnnotationsChangeInfo: (oControl: ManagedObject, _annotation: string): AnnotationChangeReturnType | null => {
188
- const templateComponent = Component.getOwnerComponentFor(oControl) as TemplateComponent | undefined;
203
+ let templateComponent = Component.getOwnerComponentFor(oControl) as TemplateComponent | undefined;
204
+ if (!templateComponent) {
205
+ const view = CommonUtils.getTargetView(oControl);
206
+ templateComponent = view?.getController().getOwnerComponent() as TemplateComponent | undefined;
207
+ }
189
208
  if (templateComponent) {
190
209
  const properties = collectProperties(templateComponent, oControl, filterPropertyWithTextAnnotation);
191
210
  if (properties && properties.length > 0) {
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u0627\u0644\u062A\u0643\u0648\u064A\u0646
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u062A\u063A\u064A\u064A\u0631 \u062A\u0631\u062A\u064A\u0628 \u0627\u0644\u0646\u0635\u0648\u0635
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u0625\u0639\u0627\u062F\u0629 \u062A\u0633\u0645\u064A\u0629
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u062A\u0633\u0645\u064A\u0627\u062A
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u041F\u0440\u043E\u043C\u044F\u043D\u0430 \u043D\u0430 \u043F\u043E\u0434\u0440\u0435\u0436\u0434\u0430\u043D\u0435\u0442\u043E \u043D\u0430 \u0442\u0435\u043A\u0441\u0442\u0430
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u041F\u0440\u0435\u0438\u043C\u0435\u043D\u0443\u0432\u0430\u043D\u0435
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u041F\u0440\u043E\u043C\u044F\u043D\u0430 \u043D\u0430 \u0435\u0442\u0438\u043A\u0435\u0442\u0438\u0442\u0435
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configuraci\u00F3
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Modificar disposici\u00F3 de text
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Canviar nom
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Canviar etiquetes
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfiguracija
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Promijeni raspored teksta
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Preimenuj
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Promijeni etikete
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfigurace
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Zm\u011Bnit uspo\u0159\u00E1d\u00E1n\u00ED textu
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=P\u0159ejmenovat
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Zm\u011Bnit popisky
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Ffurfweddiad
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Newid Trefn y Testun
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Ailenwi
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Newid Labeli
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfiguration
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u00C6ndr tekstplacering
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Omd\u00F8b
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u00C6ndr etiketter
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfiguration
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Textanordnung \u00E4ndern
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Umbenennen
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Bezeichner \u00E4ndern
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u0394\u03B9\u03B1\u03BC\u03CC\u03C1\u03C6\u03C9\u03C3\u03B7
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u0394\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7\u03C2 \u039A\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u039C\u03B5\u03C4\u03BF\u03BD\u03BF\u03BC\u03B1\u03C3\u03AF\u03B1
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u0395\u03C4\u03B9\u03BA\u03B5\u03C4\u03CE\u03BD
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configuration
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Change Text Arrangement
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Rename
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Change Labels
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configuration
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Change Text Arrangement
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Rename
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Change Labels
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configuraci\u00F3n
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Modificar disposici\u00F3n de texto
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Cambiar nombre
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Cambiar etiquetas
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configuraci\u00F3n
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Modificar disposici\u00F3n de texto
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Renombrar
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Cambiar etiquetas
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfiguratsioon
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Muuda teksti paigutust
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Nimeta \u00FCmber
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Muuda silte
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfiguraatio
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Muuta tekstij\u00E4rjestyst\u00E4
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Nime\u00E4 uudelleen
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Muuta nimikkeit\u00E4
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configuration
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Modifier la disposition du texte
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Renommer
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Modifier les \u00E9tiquettes
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configuration
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Modifier la disposition du texte
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Renommer
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Modifier les \u00E9tiquettes
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u0915\u0949\u0928\u094D\u092B\u093C\u093F\u0917\u0930\u0947\u0936\u0928
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u091F\u0947\u0915\u094D\u0938\u094D\u091F \u0935\u094D\u092F\u0935\u0938\u094D\u0925\u093E \u092C\u0926\u0932\u0947\u0902
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u0928\u093E\u092E \u092C\u0926\u0932\u0947\u0902
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u0932\u0947\u092C\u0932 \u092C\u0926\u0932\u0947\u0902
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfiguracija
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Promjena rasporeda teksta
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Preimenuj
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Promjena oznaka
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfigur\u00E1ci\u00F3
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Sz\u00F6vegelrendez\u00E9s m\u00F3dos\u00EDt\u00E1sa
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u00C1tnevez\u00E9s
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=C\u00EDmk\u00E9k m\u00F3dos\u00EDt\u00E1sa
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfigurasi
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Ubah Susunan Teks
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Ganti Nama
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Ubah Label
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configurazione
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Modifica disposizione del testo
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Rinomina
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Modifica etichette
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u05EA\u05E6\u05D5\u05E8\u05D4
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u05E9\u05E0\u05D4 \u05E1\u05D9\u05D3\u05D5\u05E8 \u05D8\u05E7\u05E1\u05D8
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u05E9\u05E0\u05D4 \u05E9\u05DD
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u05E9\u05E0\u05D4 \u05EA\u05D5\u05D5\u05D9\u05D5\u05EA
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u8A2D\u5B9A
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u30C6\u30AD\u30B9\u30C8\u914D\u7F6E\u306E\u5909\u66F4
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u540D\u524D\u306E\u5909\u66F4
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u30E9\u30D9\u30EB\u306E\u5909\u66F4
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u041C\u04D9\u0442\u0456\u043D \u043E\u0440\u043D\u0430\u043B\u0430\u0441\u0443\u044B\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u0410\u0442\u044B\u043D \u04E9\u0437\u0433\u0435\u0440\u0442\u0443
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u0417\u0430\u0442\u0431\u0435\u043B\u0433\u0456\u043B\u0435\u0440\u0434\u0456 \u04E9\u0437\u0433\u0435\u0440\u0442\u0443
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\uAD6C\uC131
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\uD14D\uC2A4\uD2B8 \uBC30\uCE58 \uBCC0\uACBD
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\uC774\uB984 \uBC14\uAFB8\uAE30
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\uB808\uC774\uBE14 \uBCC0\uACBD
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfig\u016Bracija
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Keisti teksto i\u0161d\u0117stym\u0105
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Pervardyti
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Keisti etiketes
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfigur\u0101cija
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Main\u012Bt teksta izk\u0101rtojumu
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=P\u0101rd\u0113v\u0113t
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Main\u012Bt eti\u0137etes
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0458\u0430
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u0418\u0437\u043C\u0435\u043D\u0438 \u0433\u043E \u043F\u043E\u0434\u0440\u0435\u0434\u0443\u0432\u0430\u045A\u0435\u0442\u043E \u043D\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0442
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u041F\u0440\u0435\u0438\u043C\u0435\u043D\u0443\u0432\u0430\u0458
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u041F\u0440\u043E\u043C\u0435\u043D\u0430 \u043D\u0430 \u0435\u0442\u0438\u043A\u0435\u0442\u0430\u0442\u0430
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfigurasi
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Ubah Susunan Teks
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Namakan Semula
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Ubah Label
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configuratie
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Tekstindeling wijzigen
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Hernoemen
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Labels wijzigen
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfigurasjon
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Endre tekstplassering
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Endre navn
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Endre etiketter
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfiguracja
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Zmie\u0144 rozmieszczenie tekstu
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Zmie\u0144 nazw\u0119
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Zmie\u0144 etykiety
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configura\u00E7\u00E3o
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Modificar disposi\u00E7\u00E3o de texto
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Renomear
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Modificar etiquetas
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configura\u00E7\u00E3o
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Alterar disposi\u00E7\u00E3o do texto
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Mudar o nome
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Alterar etiquetas
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Configurare
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Modificare organizare text
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Redenumire
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Modificare etichete
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0443\u043F\u043E\u0440\u044F\u0434\u043E\u0447\u0438\u0432\u0430\u043D\u0438\u0435 \u0442\u0435\u043A\u0441\u0442\u0430
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u041F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u0442\u044C
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043C\u0435\u0442\u043A\u0438
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfiguracija
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Promeni raspored teksta
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Preimenuj
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Promeni etikete
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfigur\u00E1cia
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Zmeni\u0165 usporiadanie textu
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Premenova\u0165
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Zmeni\u0165 ozna\u010Denia