@sap/open.fe 1.98.0 → 1.99.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 (916) hide show
  1. package/package.json +1 -1
  2. package/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
  3. package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
  4. package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +10 -8
  5. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +1 -1
  6. package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +1 -1
  7. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +2 -2
  8. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +3 -3
  9. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +3 -3
  10. package/packages/sap.fe.common/src/sap/fe/common/library.js +1 -1
  11. package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
  12. package/packages/sap.fe.common/src/sap/fe/common/resources.json +4 -4
  13. package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
  14. package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
  15. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
  16. package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.99.json +18 -0
  17. package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
  18. package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
  19. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +376 -405
  20. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +2 -3
  21. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.ts +385 -0
  22. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +228 -181
  23. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +2 -3
  24. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.ts +171 -0
  25. package/packages/sap.fe.core/src/sap/fe/core/BusyLocker-dbg.js +104 -121
  26. package/packages/sap.fe.core/src/sap/fe/core/BusyLocker.js +2 -3
  27. package/packages/sap.fe.core/src/sap/fe/core/BusyLocker.ts +98 -0
  28. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +2072 -2399
  29. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +2 -3
  30. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.ts +2078 -0
  31. package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +83 -125
  32. package/packages/sap.fe.core/src/sap/fe/core/PageController.js +2 -3
  33. package/packages/sap.fe.core/src/sap/fe/core/PageController.ts +101 -0
  34. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +985 -823
  35. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +2 -3
  36. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.ts +838 -0
  37. package/packages/sap.fe.core/src/sap/fe/core/Synchronization-dbg.js +50 -35
  38. package/packages/sap.fe.core/src/sap/fe/core/Synchronization.js +2 -3
  39. package/packages/sap.fe.core/src/sap/fe/core/Synchronization.ts +29 -0
  40. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +172 -164
  41. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.js +2 -3
  42. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.ts +166 -0
  43. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel-dbg.js +96 -54
  44. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.js +2 -3
  45. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.ts +63 -0
  46. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +1575 -1664
  47. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +2 -3
  48. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.ts +1706 -0
  49. package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +558 -608
  50. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +2 -3
  51. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.ts +593 -0
  52. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +544 -514
  53. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +2 -3
  54. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.ts +532 -0
  55. package/packages/sap.fe.core/src/sap/fe/core/actions/nonDraft-dbg.js +16 -19
  56. package/packages/sap.fe.core/src/sap/fe/core/actions/nonDraft.js +2 -3
  57. package/packages/sap.fe.core/src/sap/fe/core/actions/nonDraft.ts +12 -0
  58. package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +1073 -1215
  59. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +2 -3
  60. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.ts +1162 -0
  61. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky-dbg.js +101 -105
  62. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.js +2 -3
  63. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.ts +102 -0
  64. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +51 -209
  65. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
  66. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +276 -9
  67. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +1 -1
  68. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +5 -4
  69. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  70. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +44 -43
  71. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
  72. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +2 -3
  73. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
  74. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +29 -26
  75. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +98 -6
  76. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
  77. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +14 -6
  78. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
  79. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +2 -2
  80. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
  81. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.ts +12 -8
  82. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +6 -2
  83. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +1 -1
  84. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +3 -3
  85. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  86. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +18 -18
  87. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +8 -20
  88. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +1 -1
  89. package/packages/sap.fe.core/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -0
  90. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +2 -2
  91. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
  92. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +2 -2
  93. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +1 -1
  94. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +4 -3
  95. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -1
  96. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +1 -0
  97. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +39 -26
  98. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  99. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +9 -0
  100. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +11 -8
  101. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  102. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +16 -16
  103. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter-dbg.js +1 -1
  104. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter.ts +2 -2
  105. package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +17 -13
  106. package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
  107. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action-dbg.js +2 -2
  108. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
  109. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.ts +2 -2
  110. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +5 -3
  111. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  112. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -3
  113. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +3 -3
  114. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
  115. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
  116. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +4 -2
  117. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  118. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +16 -2
  119. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +250 -146
  120. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  121. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +300 -167
  122. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +115 -56
  123. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  124. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +120 -74
  125. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +467 -32
  126. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  127. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +483 -54
  128. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +6 -6
  129. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
  130. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +9 -15
  131. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +13 -5
  132. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  133. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.ts +20 -5
  134. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +4 -1
  135. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  136. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager.ts +3 -0
  137. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +4 -4
  138. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  139. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +3 -3
  140. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +13 -6
  141. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  142. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +26 -15
  143. package/packages/sap.fe.core/src/sap/fe/core/formatters/CriticalityFormatter-dbg.js +1 -1
  144. package/packages/sap.fe.core/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
  145. package/packages/sap.fe.core/src/sap/fe/core/formatters/FPMFormatter-dbg.js +1 -1
  146. package/packages/sap.fe.core/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
  147. package/packages/sap.fe.core/src/sap/fe/core/formatters/KPIFormatter-dbg.js +1 -1
  148. package/packages/sap.fe.core/src/sap/fe/core/formatters/KPIFormatter.ts +3 -1
  149. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +39 -28
  150. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  151. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +43 -28
  152. package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter-dbg.js +1 -1
  153. package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter.ts +7 -6
  154. package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
  155. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +2 -2
  156. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
  157. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.ts +7 -4
  158. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +314 -355
  159. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +1 -1
  160. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +317 -391
  161. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport-dbg.js +27 -15
  162. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.js +1 -1
  163. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.ts +31 -20
  164. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +62 -59
  165. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -3
  166. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +56 -0
  167. package/packages/sap.fe.core/src/sap/fe/core/helpers/EditState-dbg.js +80 -84
  168. package/packages/sap.fe.core/src/sap/fe/core/helpers/EditState.js +2 -3
  169. package/packages/sap.fe.core/src/sap/fe/core/helpers/EditState.ts +81 -0
  170. package/packages/sap.fe.core/src/sap/fe/core/helpers/ExcelFormatHelper-dbg.js +61 -48
  171. package/packages/sap.fe.core/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -3
  172. package/packages/sap.fe.core/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
  173. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper-dbg.js +51 -56
  174. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.js +2 -3
  175. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
  176. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +3 -4
  177. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
  178. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.ts +9 -9
  179. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper-dbg.js +24 -16
  180. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
  181. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +228 -225
  182. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +2 -3
  183. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.ts +227 -0
  184. package/packages/sap.fe.core/src/sap/fe/core/helpers/PasteHelper-dbg.js +209 -132
  185. package/packages/sap.fe.core/src/sap/fe/core/helpers/PasteHelper.js +2 -3
  186. package/packages/sap.fe.core/src/sap/fe/core/helpers/PasteHelper.ts +196 -0
  187. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +331 -313
  188. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.js +2 -3
  189. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.ts +330 -0
  190. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +65 -67
  191. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticKeyHelper.js +2 -3
  192. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
  193. package/packages/sap.fe.core/src/sap/fe/core/helpers/StableIdHelper-dbg.js +1 -5
  194. package/packages/sap.fe.core/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  195. package/packages/sap.fe.core/src/sap/fe/core/helpers/StableIdHelper.ts +2 -6
  196. package/packages/sap.fe.core/src/sap/fe/core/jsx-runtime/jsx-dbg.js +1 -1
  197. package/packages/sap.fe.core/src/sap/fe/core/jsx-runtime/jsx.ts +1 -1
  198. package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +1 -1
  199. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +23 -26
  200. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +1 -1
  201. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +630 -649
  202. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +3 -3
  203. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +17 -5
  204. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +2 -2
  205. package/packages/sap.fe.core/src/sap/fe/core/library.js +1 -1
  206. package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
  207. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +1 -1
  208. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +1 -1
  209. package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +23 -10
  210. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +9 -0
  211. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +9 -0
  212. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +9 -0
  213. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +10 -1
  214. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +9 -0
  215. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +9 -0
  216. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +9 -0
  217. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +9 -0
  218. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +9 -0
  219. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +9 -0
  220. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +9 -0
  221. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +9 -0
  222. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +9 -0
  223. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +9 -0
  224. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +9 -0
  225. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +9 -0
  226. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +9 -0
  227. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +13 -4
  228. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +15 -6
  229. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +15 -6
  230. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +15 -6
  231. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +9 -0
  232. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +10 -1
  233. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +9 -0
  234. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +9 -0
  235. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +9 -0
  236. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +15 -6
  237. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +9 -0
  238. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +9 -0
  239. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +15 -6
  240. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +14 -5
  241. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +9 -0
  242. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +9 -0
  243. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +9 -0
  244. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +9 -0
  245. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +9 -0
  246. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +9 -0
  247. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +9 -0
  248. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +11 -2
  249. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +9 -0
  250. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +15 -6
  251. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +9 -0
  252. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +9 -0
  253. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +9 -0
  254. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +9 -0
  255. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +9 -0
  256. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +9 -0
  257. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +15 -6
  258. package/packages/sap.fe.core/src/sap/fe/core/resources.json +427 -341
  259. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
  260. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  261. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +268 -202
  262. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -3
  263. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +212 -0
  264. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -1
  265. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +7 -6
  266. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +405 -300
  267. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.js +2 -3
  268. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.ts +316 -0
  269. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +148 -81
  270. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -3
  271. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.ts +80 -0
  272. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +986 -899
  273. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +2 -3
  274. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.ts +898 -0
  275. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +1 -1
  276. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +15 -10
  277. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +35 -81
  278. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  279. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +46 -94
  280. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +460 -487
  281. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +2 -3
  282. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +453 -0
  283. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +9 -8
  284. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -3
  285. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +8 -0
  286. package/packages/sap.fe.core/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
  287. package/packages/sap.fe.core/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
  288. package/packages/sap.fe.core/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
  289. package/packages/sap.fe.core/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
  290. package/packages/sap.fe.core/src/sap/fe/core/templating/FieldControlHelper-dbg.js +8 -8
  291. package/packages/sap.fe.core/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
  292. package/packages/sap.fe.core/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
  293. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +138 -72
  294. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +1 -1
  295. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +139 -71
  296. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +31 -1
  297. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +1 -1
  298. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +33 -2
  299. package/packages/sap.fe.core/src/sap/fe/core/type/Email-dbg.js +1 -1
  300. package/packages/sap.fe.core/src/sap/fe/core/type/Email.ts +4 -6
  301. package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1 -1
  302. package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
  303. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -1
  304. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -1
  305. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
  306. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/controls/FileEditor.js +15 -1
  307. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +90 -0
  308. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/buildingBlockOverview.md +2 -0
  309. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/Component.js +36 -0
  310. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/chartFilterBar.controller.js +5 -0
  311. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/chartFilterBar.view.xml +22 -0
  312. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/localService/ChildEntity.json +686 -0
  313. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/localService/CreditLimitDetails.json +154 -0
  314. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/localService/RootEntity.json +252 -0
  315. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/localService/service.cds +141 -0
  316. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/localService/status.json +11 -0
  317. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/manifest.json +69 -0
  318. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chartFilterBar.html +37 -0
  319. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/FieldFormatOptions.view.xml +186 -122
  320. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/FieldFormatOptions.cds +5 -0
  321. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/RootEntity.json +2 -1
  322. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/service.cds +15 -1
  323. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/localService/service.cds +36 -5
  324. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/form/formSample/Component.js +33 -0
  325. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/form/formSample/FormSample.view.xml +10 -0
  326. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/form/formSample/localService/FormSample.cds +72 -0
  327. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/form/formSample/localService/RootEntity.json +13 -0
  328. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/form/formSample/manifest.json +68 -0
  329. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formSample.html +37 -0
  330. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/EntryPage.controller.js +72 -43
  331. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/EntryPage.controller.ts +90 -0
  332. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/EntryPage.view.xml +12 -3
  333. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +4 -0
  334. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +9 -3
  335. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/Component.js +36 -0
  336. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/TableFilterBar.controller.js +5 -0
  337. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/TableFilterBar.view.xml +11 -0
  338. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/localService/RootEntity.json +102 -0
  339. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/localService/ValueHelpEntity.js +11 -0
  340. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/localService/service.cds +94 -0
  341. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/manifest.json +79 -0
  342. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableFilterBar.html +37 -0
  343. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.js +694 -0
  344. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.ts +819 -0
  345. package/packages/sap.fe.core/test/sap/fe/core/jest/AppStateHandler.spec.js +51 -0
  346. package/packages/sap.fe.core/test/sap/fe/core/jest/AppStateHandler.spec.ts +40 -0
  347. package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression-AnnotationExpression.spec.js +1 -1
  348. package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression-AnnotationExpression.spec.ts +1 -1
  349. package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression.spec.js +26 -15
  350. package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression.spec.ts +28 -15
  351. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.ts +202 -0
  352. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.js +54 -0
  353. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.ts +35 -0
  354. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.js +5 -11
  355. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.ts +8 -8
  356. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.js +736 -619
  357. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.ts +703 -0
  358. package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +89 -85
  359. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.js +102 -0
  360. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.ts +97 -0
  361. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.js +492 -0
  362. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.ts +509 -0
  363. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.js +895 -0
  364. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.ts +908 -0
  365. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.js +209 -353
  366. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.ts +222 -362
  367. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.js +508 -0
  368. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.ts +440 -0
  369. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.ts +90 -0
  370. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +1 -1
  371. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.ts +10 -10
  372. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.js +286 -0
  373. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.ts +179 -0
  374. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +200 -21
  375. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +168 -17
  376. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.js +40 -0
  377. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.ts +26 -0
  378. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +1 -1
  379. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +1 -1
  380. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.js +355 -0
  381. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.ts +287 -0
  382. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +1 -1
  383. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +1 -1
  384. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.js +542 -0
  385. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.ts +588 -0
  386. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/HeaderFacet.spec.js +1 -2
  387. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/HeaderFacet.spec.ts +1 -2
  388. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +371 -7
  389. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +469 -6
  390. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +2 -2
  391. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +2 -2
  392. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ObjectPageAvatar.spec.js +2 -2
  393. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ObjectPageAvatar.spec.ts +1 -1
  394. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/SubSection.spec.js +12 -8
  395. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/SubSection.spec.ts +8 -7
  396. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +436 -45
  397. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +565 -33
  398. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.js +136 -78
  399. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.ts +315 -199
  400. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Filter.spec.ts.snap +307 -0
  401. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/MetaModelConverter.spec.ts.snap +49 -1
  402. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Table.spec.ts.snap +1 -0
  403. package/packages/sap.fe.core/test/sap/fe/core/jest/data/AnalyticalService.cds +51 -4
  404. package/packages/sap.fe.core/test/sap/fe/core/jest/data/AnalyticalService2.cds +107 -0
  405. package/packages/sap.fe.core/test/sap/fe/core/jest/data/ComplexType.cds +39 -0
  406. package/packages/sap.fe.core/test/sap/fe/core/jest/data/Filter.cds +187 -0
  407. package/packages/sap.fe.core/test/sap/fe/core/jest/data/MassEditHelper.cds +226 -0
  408. package/packages/sap.fe.core/test/sap/fe/core/jest/data/SideEffects.cds +1 -1
  409. package/packages/sap.fe.core/test/sap/fe/core/jest/data/computedDefaultValueService.cds +99 -0
  410. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +25 -5
  411. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +18 -7
  412. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.js +1 -1
  413. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.ts +4 -2
  414. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/DynamicAnnotationPathHelper.spec.js +40 -0
  415. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/DynamicAnnotationPathHelper.spec.ts +39 -0
  416. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ExcelFormatHelper.spec.js +20 -0
  417. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ExcelFormatHelper.spec.ts +13 -0
  418. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.js +1 -1
  419. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.ts +3 -3
  420. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.js +712 -0
  421. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.ts +613 -0
  422. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +344 -225
  423. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.ts +347 -0
  424. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.js +439 -0
  425. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.ts +378 -0
  426. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.js +123 -0
  427. package/packages/sap.fe.core/test/sap/fe/core/{qunit/helpers/SemanticDateOperators.qunit.js → jest/helpers/SemanticDateOperators.spec.ts} +10 -21
  428. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticKeyHelper.spec.js +215 -0
  429. package/packages/sap.fe.core/test/sap/fe/core/{qunit/helpers/SemanticKeyHelper.qunit.js → jest/helpers/SemanticKeyHelper.spec.ts} +58 -55
  430. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.js +125 -0
  431. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.ts +142 -0
  432. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/MassEditHelper.spec.ts.snap +263 -0
  433. package/packages/sap.fe.core/test/sap/fe/core/jest/services/CacheHandlerTest.spec.js +871 -0
  434. package/packages/sap.fe.core/test/sap/fe/core/jest/services/CacheHandlerTest.spec.ts +899 -0
  435. package/packages/sap.fe.core/test/sap/fe/core/jest/services/NavigationServiceFactory.spec.js +46 -0
  436. package/packages/sap.fe.core/test/sap/fe/core/jest/services/NavigationServiceFactory.spec.ts +37 -0
  437. package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.js +120 -3
  438. package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.ts +96 -7
  439. package/packages/sap.fe.core/test/sap/fe/core/jest/services/ShellServicesFactory.spec.js +86 -0
  440. package/packages/sap.fe.core/test/sap/fe/core/jest/services/ShellServicesFactory.spec.ts +72 -0
  441. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +16 -44
  442. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +22 -60
  443. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.js +4 -4
  444. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.ts +9 -3
  445. package/packages/sap.fe.core/test/sap/fe/core/jest/type/ComplexType.spec.js +68 -0
  446. package/packages/sap.fe.core/test/sap/fe/core/jest/type/ComplexType.spec.ts +51 -0
  447. package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +2 -2
  448. package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +0 -105
  449. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.98.json +0 -11
  450. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.99.json +534 -0
  451. package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
  452. package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
  453. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +14 -5
  454. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +1 -1
  455. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI-dbg.js +15 -6
  456. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.js +1 -1
  457. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.ts +9 -1
  458. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +37 -3
  459. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
  460. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +27 -2
  461. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +1 -1
  462. package/packages/sap.fe.macros/src/sap/fe/macros/Field.fragment.xml +4 -0
  463. package/packages/sap.fe.macros/src/sap/fe/macros/Field.metadata-dbg.js +17 -1
  464. package/packages/sap.fe.macros/src/sap/fe/macros/Field.metadata.js +1 -1
  465. package/packages/sap.fe.macros/src/sap/fe/macros/Field.metadata.ts +17 -1
  466. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +1 -1
  467. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +35 -9
  468. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +1 -1
  469. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +41 -10
  470. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +1 -1
  471. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +1 -1
  472. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +1 -1
  473. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +50 -4
  474. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
  475. package/packages/sap.fe.macros/src/sap/fe/macros/Form.fragment.xml +65 -75
  476. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +55 -51
  477. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +1 -1
  478. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI-dbg.js +83 -0
  479. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI.js +5 -0
  480. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI.ts +29 -0
  481. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +11 -10
  482. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.metadata-dbg.js +2 -4
  483. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.metadata.js +1 -1
  484. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI-dbg.js +99 -0
  485. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI.js +5 -0
  486. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI.ts +32 -0
  487. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +67 -7
  488. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +1 -1
  489. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.ts +60 -10
  490. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +26 -34
  491. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
  492. package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +6 -6
  493. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +38 -4
  494. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
  495. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +78 -92
  496. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
  497. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +55 -68
  498. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +41 -39
  499. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
  500. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +125 -31
  501. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
  502. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +16 -42
  503. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
  504. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +13 -39
  505. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +0 -7
  506. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
  507. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper-dbg.js +142 -129
  508. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper.js +1 -1
  509. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +120 -61
  510. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +1 -1
  511. package/packages/sap.fe.macros/src/sap/fe/macros/form/AddressSection.fragment.xml +4 -4
  512. package/packages/sap.fe.macros/src/sap/fe/macros/form/DataFieldCollection.fragment.xml +3 -3
  513. package/packages/sap.fe.macros/src/sap/fe/macros/form/FormHelper-dbg.js +1 -14
  514. package/packages/sap.fe.macros/src/sap/fe/macros/form/FormHelper.js +1 -1
  515. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.fragment.xml +1 -1
  516. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +23 -8
  517. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +1 -1
  518. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +29 -17
  519. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +45 -54
  520. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +16 -22
  521. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +1 -1
  522. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +1 -1
  523. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +14 -5
  524. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +1 -1
  525. package/packages/sap.fe.macros/src/sap/fe/macros/internal/FilterField.fragment.xml +1 -1
  526. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator-dbg.js +3 -2
  527. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.ts +4 -3
  528. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +1 -1
  529. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +3 -1
  530. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +3 -1
  531. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +4 -145
  532. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectStatus.fragment.xml +32 -8
  533. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +1 -1
  534. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +1 -1
  535. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +3 -3
  536. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +1 -1
  537. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +2 -2
  538. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +2 -2
  539. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TextArea.fragment.xml +1 -1
  540. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +1 -1
  541. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/fragments/ObjectIdentifierContent.fragment.xml +81 -0
  542. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +64 -30
  543. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
  544. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +58 -36
  545. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter-dbg.js +4 -2
  546. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter.js +1 -1
  547. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter.ts +19 -20
  548. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime-dbg.js +2 -3
  549. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.js +1 -1
  550. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.ts +13 -5
  551. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpContent.fragment.xml +3 -1
  552. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating-dbg.js +17 -7
  553. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating.js +1 -1
  554. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating.ts +10 -3
  555. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -1
  556. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +53 -62
  557. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
  558. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +2 -2
  559. package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
  560. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +16 -14
  561. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +1 -1
  562. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +157 -178
  563. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
  564. package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
  565. package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
  566. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +1 -1
  567. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +14 -6
  568. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +14 -6
  569. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +14 -6
  570. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +14 -6
  571. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +14 -6
  572. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +14 -6
  573. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +14 -6
  574. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +14 -6
  575. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +14 -6
  576. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +14 -6
  577. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +14 -6
  578. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +14 -6
  579. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +14 -6
  580. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +14 -6
  581. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +14 -6
  582. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +14 -6
  583. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +14 -6
  584. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +14 -6
  585. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +14 -6
  586. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +14 -6
  587. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +14 -6
  588. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +14 -6
  589. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +14 -6
  590. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +14 -6
  591. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +14 -6
  592. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +14 -6
  593. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +14 -6
  594. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +14 -6
  595. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +14 -6
  596. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +14 -6
  597. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +14 -6
  598. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +14 -6
  599. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +14 -6
  600. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +14 -6
  601. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +14 -6
  602. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +14 -6
  603. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +14 -6
  604. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +14 -6
  605. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +14 -6
  606. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +14 -6
  607. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +16 -8
  608. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +14 -6
  609. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +14 -6
  610. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +14 -6
  611. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +14 -6
  612. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +14 -6
  613. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +14 -6
  614. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +14 -6
  615. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/MicroChartHelper-dbg.js +2 -2
  616. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -1
  617. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/BulletMicroChart.fragment.xml +2 -2
  618. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/ComparisonMicroChart.fragment.xml +1 -1
  619. package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +277 -209
  620. package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +5 -16
  621. package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +17 -4
  622. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +0 -2
  623. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
  624. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableRuntime-dbg.js +27 -18
  625. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableRuntime.js +1 -1
  626. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +196 -139
  627. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
  628. package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/InteractiveChartHelper-dbg.js +12 -14
  629. package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +1 -1
  630. package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/VisualFilterRuntime-dbg.js +13 -15
  631. package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +1 -1
  632. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +113 -2
  633. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
  634. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -1
  635. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
  636. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +1 -1
  637. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +1 -1
  638. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartMacro.spec.js +32 -20
  639. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartMacro.spec.ts +24 -12
  640. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CollectionField.spec.js +15 -5
  641. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CollectionField.spec.ts +18 -3
  642. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonHelper.spec.js +69 -0
  643. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonHelper.spec.ts +32 -0
  644. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +6 -180
  645. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +6 -177
  646. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithSemanticKey.spec.js +1 -1
  647. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithSemanticKey.spec.ts +1 -1
  648. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterField.spec.js +1 -1
  649. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterField.spec.ts +1 -2
  650. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.js +51 -0
  651. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.ts +48 -0
  652. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterUtils.spec.js +133 -0
  653. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormContainerAPI.spec.js +34 -0
  654. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormContainerAPI.spec.ts +23 -0
  655. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormMacro.spec.js +49 -0
  656. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormMacro.spec.ts +41 -0
  657. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.js +105 -0
  658. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.ts +53 -0
  659. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroComponent.spec.js +1 -1
  660. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroComponent.spec.ts +1 -1
  661. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MicroChart.spec.js +15 -1
  662. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MicroChart.spec.ts +13 -0
  663. package/packages/sap.fe.macros/test/sap/fe/macros/jest/PhantomUtil.spec.js +1 -1
  664. package/packages/sap.fe.macros/test/sap/fe/macros/jest/PhantomUtil.spec.ts +1 -1
  665. package/packages/sap.fe.macros/test/sap/fe/macros/jest/QuickViewForm.spec.js +2 -3
  666. package/packages/sap.fe.macros/test/sap/fe/macros/jest/QuickViewForm.spec.ts +3 -4
  667. package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +14 -4
  668. package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +18 -4
  669. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.js +140 -0
  670. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.ts +144 -0
  671. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.js +445 -635
  672. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.ts +528 -719
  673. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.js +83 -4
  674. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.ts +101 -3
  675. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ValueHelpMacro.spec.js +1 -1
  676. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ValueHelpMacro.spec.ts +1 -1
  677. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartMacro.spec.ts.snap +75 -7
  678. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/CollectionField.spec.ts.snap +26 -11
  679. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +42 -304
  680. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +6 -6
  681. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterBarMacro.spec.ts.snap +12 -12
  682. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +3 -3
  683. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FormMacro.spec.ts.snap +150 -0
  684. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/KPITag.spec.ts.snap +4 -4
  685. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/MicroChart.spec.ts.snap +39 -3
  686. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +4 -4
  687. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +125 -51
  688. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/Table.spec.ts.snap +1455 -0
  689. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Chart.cds +56 -1
  690. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +12 -59
  691. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Form.cds +129 -0
  692. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/MicroChart.cds +14 -0
  693. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +55 -2
  694. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/simpleFieldMacro.cds +10 -4
  695. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +2 -2
  696. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +15 -8
  697. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +12 -34
  698. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +21 -38
  699. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.js +1 -1
  700. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.ts +2 -2
  701. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/__snapshots__/columnWidth.spec.ts.snap +54 -14
  702. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.js +17 -7
  703. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.ts +18 -11
  704. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/data/columnWidth.cds +26 -3
  705. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +145 -17
  706. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +176 -18
  707. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +813 -111
  708. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/data/tabledelegate.cds +9 -2
  709. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +0 -56
  710. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelperTemplate.qunit.js +0 -321
  711. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormContainerTemplating.qunit.js +1 -0
  712. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplating.qunit.js +10 -5
  713. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +1 -1
  714. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MicroChartHelperForTemplate.qunit.js +1 -2
  715. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableRuntime.qunit.js +1 -1
  716. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +130 -1
  717. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.99.json +343 -0
  718. package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
  719. package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
  720. package/packages/sap.fe.navigation/src/sap/fe/navigation/NavigationHandler-dbg.js +0 -1
  721. package/packages/sap.fe.navigation/src/sap/fe/navigation/NavigationHandler.js +1 -1
  722. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
  723. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
  724. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +3 -3
  725. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +2 -2
  726. package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
  727. package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
  728. package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +4 -4
  729. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
  730. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
  731. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
  732. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
  733. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
  734. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
  735. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
  736. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +2 -2
  737. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
  738. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
  739. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
  740. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
  741. package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
  742. package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
  743. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
  744. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
  745. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
  746. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component-dbg.js +8 -0
  747. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component.js +1 -1
  748. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ExtensionAPI-dbg.js +8 -3
  749. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ExtensionAPI.js +1 -1
  750. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +11 -6
  751. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +114 -29
  752. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  753. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
  754. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation-dbg.js +10 -10
  755. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +1 -1
  756. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/Share-dbg.js +7 -6
  757. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/Share.js +1 -1
  758. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +75 -53
  759. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
  760. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +14 -23
  761. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +8 -0
  762. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +3 -3
  763. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
  764. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +1 -1
  765. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  766. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +8 -45
  767. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +17 -67
  768. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  769. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
  770. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +24 -12
  771. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating-dbg.js +1 -1
  772. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +2 -2
  773. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +5 -1
  774. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +33 -0
  775. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeadingAvatar.fragment.xml +17 -0
  776. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +18 -0
  777. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +3 -3
  778. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +3 -3
  779. package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
  780. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +7 -5
  781. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +1 -1
  782. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +24 -22
  783. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
  784. package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
  785. package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +13 -13
  786. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle.properties +14 -30
  787. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ar.properties +24 -6
  788. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_bg.properties +24 -6
  789. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ca.properties +24 -6
  790. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cs.properties +24 -6
  791. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cy.properties +24 -6
  792. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_da.properties +24 -6
  793. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_de.properties +24 -6
  794. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_el.properties +25 -7
  795. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en.properties +24 -6
  796. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_GB.properties +24 -6
  797. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +24 -6
  798. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +24 -6
  799. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +24 -6
  800. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +24 -6
  801. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es_MX.properties +24 -6
  802. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_et.properties +24 -6
  803. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fi.properties +24 -6
  804. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +24 -6
  805. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr_CA.properties +24 -6
  806. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hi.properties +24 -6
  807. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hr.properties +25 -7
  808. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hu.properties +24 -6
  809. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_id.properties +26 -8
  810. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_it.properties +24 -6
  811. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_iw.properties +24 -6
  812. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +24 -6
  813. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_kk.properties +24 -6
  814. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ko.properties +24 -6
  815. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lt.properties +24 -6
  816. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lv.properties +24 -6
  817. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ms.properties +24 -6
  818. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_nl.properties +24 -6
  819. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_no.properties +24 -6
  820. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pl.properties +24 -6
  821. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt.properties +27 -9
  822. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt_PT.properties +25 -7
  823. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ro.properties +24 -6
  824. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ru.properties +24 -6
  825. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sh.properties +24 -6
  826. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sk.properties +24 -6
  827. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sl.properties +24 -6
  828. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sv.properties +25 -7
  829. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_th.properties +24 -6
  830. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +24 -6
  831. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_uk.properties +25 -7
  832. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_vi.properties +24 -6
  833. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_CN.properties +24 -6
  834. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_TW.properties +24 -6
  835. package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +127 -113
  836. package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
  837. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +1 -1
  838. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
  839. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
  840. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.js +59 -0
  841. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.ts +54 -0
  842. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.js +85 -0
  843. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.ts +89 -0
  844. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.js +482 -259
  845. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.ts +442 -0
  846. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/AnnotationHelper.spec.js +99 -0
  847. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/AnnotationHelper.spec.ts +82 -0
  848. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/Heading.spec.js +50 -0
  849. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/Heading.spec.ts +32 -0
  850. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/Heading.spec.ts.snap +43 -0
  851. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/Sections.spec.ts.snap +9 -7
  852. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.js +2 -2
  853. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.ts +4 -3
  854. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.99.json +335 -0
  855. package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
  856. package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
  857. package/packages/sap.fe.test/src/sap/fe/test/FeMocks-dbg.js +66 -0
  858. package/packages/sap.fe.test/src/sap/fe/test/FeMocks.js +5 -0
  859. package/packages/sap.fe.test/src/sap/fe/test/FeMocks.ts +77 -0
  860. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +78 -22
  861. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
  862. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +66 -22
  863. package/packages/sap.fe.test/src/sap/fe/test/ObjectPage-dbg.js +6 -4
  864. package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +1 -1
  865. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +44 -21
  866. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
  867. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +28 -8
  868. package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +1 -0
  869. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI-dbg.js +14 -2
  870. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI.js +1 -1
  871. package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateActions-dbg.js +1 -1
  872. package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateActions.js +1 -1
  873. package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateAssertions-dbg.js +1 -1
  874. package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateAssertions.js +1 -1
  875. package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageActions-dbg.js +16 -1
  876. package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageActions.js +1 -1
  877. package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageAssertions-dbg.js +1 -1
  878. package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageAssertions.js +1 -1
  879. package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpActions-dbg.js +1 -1
  880. package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpActions.js +1 -1
  881. package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpAssertions-dbg.js +1 -1
  882. package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpAssertions.js +1 -1
  883. package/packages/sap.fe.test/src/sap/fe/test/api/TableActions-dbg.js +0 -19
  884. package/packages/sap.fe.test/src/sap/fe/test/api/TableActions.js +1 -1
  885. package/packages/sap.fe.test/src/sap/fe/test/api/TableAssertions-dbg.js +3 -4
  886. package/packages/sap.fe.test/src/sap/fe/test/api/TableAssertions.js +1 -1
  887. package/packages/sap.fe.test/src/sap/fe/test/builder/MdcTableBuilder-dbg.js +4 -0
  888. package/packages/sap.fe.test/src/sap/fe/test/builder/MdcTableBuilder.js +1 -1
  889. package/packages/sap.fe.test/src/sap/fe/test/internal/FEJourneyRunner-dbg.js +6 -3
  890. package/packages/sap.fe.test/src/sap/fe/test/internal/FEJourneyRunner.js +1 -1
  891. package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
  892. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +3 -2
  893. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +1 -1
  894. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +39 -20
  895. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +4 -4
  896. package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
  897. package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
  898. package/packages/sap.fe.test/src/sap/fe/test/resources.json +65 -28
  899. package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
  900. package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
  901. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.jsmeta.json +1 -1
  902. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
  903. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandling.spec.js +0 -115
  904. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandling.spec.ts +0 -95
  905. package/packages/sap.fe.core/test/sap/fe/core/qunit/helpers/ExcelFormatHelper.qunit.js +0 -19
  906. package/packages/sap.fe.core/test/sap/fe/core/qunit/helpers/StableIdHelper.qunit.js +0 -301
  907. package/packages/sap.fe.core/test/sap/fe/core/qunit/services/CacheHandlerTest.qunit.js +0 -924
  908. package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime-dbg.js +0 -46
  909. package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime.js +0 -6
  910. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.js +0 -94
  911. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.ts +0 -70
  912. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.js +0 -68
  913. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.ts +0 -65
  914. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableFieldLabel.spec.ts.snap +0 -607
  915. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/MassEdit-dbg.js +0 -96
  916. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/MassEdit.js +0 -6
@@ -10,8 +10,6 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
10
10
  var isReadOnlyExpression = FieldControlHelper.isReadOnlyExpression;
11
11
  var getAssociatedTextPropertyPath = PropertyHelper.getAssociatedTextPropertyPath;
12
12
  var hasValueHelp = PropertyHelper.hasValueHelp;
13
- var getAssociatedCurrencyPropertyPath = PropertyHelper.getAssociatedCurrencyPropertyPath;
14
- var getAssociatedUnitPropertyPath = PropertyHelper.getAssociatedUnitPropertyPath;
15
13
  var isProperty = PropertyHelper.isProperty;
16
14
  var getAssociatedCurrencyProperty = PropertyHelper.getAssociatedCurrencyProperty;
17
15
  var getAssociatedUnitProperty = PropertyHelper.getAssociatedUnitProperty;
@@ -243,17 +241,16 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
243
241
 
244
242
  _exports.getValueBinding = getValueBinding;
245
243
 
246
- var getUnitBinding = function (oPropertyDataModelObjectPath, fieldFormatOptions) {
247
- var sUnitPropertyPath = getAssociatedUnitPropertyPath(oPropertyDataModelObjectPath.targetObject);
248
- var sCurrencyPropertyPath = getAssociatedCurrencyPropertyPath(oPropertyDataModelObjectPath.targetObject);
244
+ var getUnitBinding = function (oPropertyDataModelObjectPath) {
245
+ var _oPropertyDefinition$3, _oPropertyDefinition$4, _oPropertyDefinition$5, _oPropertyDefinition$6;
249
246
 
250
- if (sUnitPropertyPath || sCurrencyPropertyPath) {
251
- var targetPropertyPath = sUnitPropertyPath || sCurrencyPropertyPath;
252
- var oUOMPropertyDataModelObjectPath = enhanceDataModelPath(oPropertyDataModelObjectPath, targetPropertyPath);
253
- return getValueBinding(oUOMPropertyDataModelObjectPath, fieldFormatOptions);
254
- }
255
-
256
- return undefined;
247
+ var oPropertyDefinition = oPropertyDataModelObjectPath.targetObject;
248
+ var unit = (_oPropertyDefinition$3 = oPropertyDefinition.annotations) === null || _oPropertyDefinition$3 === void 0 ? void 0 : (_oPropertyDefinition$4 = _oPropertyDefinition$3.Measures) === null || _oPropertyDefinition$4 === void 0 ? void 0 : _oPropertyDefinition$4.Unit;
249
+ var relativeLocation = getPathRelativeLocation(oPropertyDataModelObjectPath.contextLocation, oPropertyDataModelObjectPath.navigationProperties).map(function (np) {
250
+ return np.name;
251
+ });
252
+ unit = unit ? unit : (_oPropertyDefinition$5 = oPropertyDefinition.annotations) === null || _oPropertyDefinition$5 === void 0 ? void 0 : (_oPropertyDefinition$6 = _oPropertyDefinition$5.Measures) === null || _oPropertyDefinition$6 === void 0 ? void 0 : _oPropertyDefinition$6.ISOCurrency;
253
+ return unit ? compileBinding(annotationExpression(unit, relativeLocation)) : undefined;
257
254
  };
258
255
 
259
256
  _exports.getUnitBinding = getUnitBinding;
@@ -312,7 +309,7 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
312
309
  _exports.isRetrieveTextFromValueListEnabled = isRetrieveTextFromValueListEnabled;
313
310
 
314
311
  var getDisplayStyle = function (oPropertyPath, oDataField, oDataModelPath, fieldFormatOptions, semanticObject) {
315
- var _oProperty$annotation4, _oProperty$annotation5, _oProperty$annotation6, _oProperty$annotation7, _oProperty$annotation8, _oProperty$annotation9, _oProperty$annotation10, _oProperty$annotation11, _oDataField$Target, _oDataField$Target$$t, _oDataField$Target2, _oDataField$Target2$$, _oDataModelPath$targe2, _oDataModelPath$targe3, _oDataModelPath$targe4, _oProperty$annotation12, _oProperty$annotation13, _oProperty$annotation14, _oProperty$annotation15, _oProperty$annotation16, _oProperty$annotation17, _oProperty$annotation18, _oProperty$annotation19, _oProperty$annotation20, _oProperty$annotation21, _oProperty$annotation22, _oProperty$annotation23;
312
+ var _oProperty$annotation4, _oProperty$annotation5, _oProperty$annotation6, _oProperty$annotation7, _oProperty$annotation8, _oProperty$annotation9, _oProperty$annotation10, _oProperty$annotation11, _oDataField$Target, _oDataField$Target$$t, _oDataField$Target2, _oDataField$Target2$$, _oDataModelPath$targe2, _oDataModelPath$targe3, _oDataModelPath$targe4, _oProperty$annotation12, _oProperty$annotation13, _oProperty$annotation14, _oProperty$annotation15, _oProperty$annotation16, _oProperty$annotation17, _oProperty$annotation18, _oProperty$annotation19, _oProperty$annotation20, _oProperty$annotation21;
316
313
 
317
314
  // algorithm to determine the field fragment to use
318
315
  var oProperty = isPathExpression(oPropertyPath) && oPropertyPath.$target || oPropertyPath;
@@ -379,7 +376,7 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
379
376
  return "ObjectStatus";
380
377
  }
381
378
 
382
- if ((_oProperty$annotation12 = oProperty.annotations) !== null && _oProperty$annotation12 !== void 0 && (_oProperty$annotation13 = _oProperty$annotation12.Measures) !== null && _oProperty$annotation13 !== void 0 && _oProperty$annotation13.ISOCurrency) {
379
+ if ((_oProperty$annotation12 = oProperty.annotations) !== null && _oProperty$annotation12 !== void 0 && (_oProperty$annotation13 = _oProperty$annotation12.Measures) !== null && _oProperty$annotation13 !== void 0 && _oProperty$annotation13.ISOCurrency && String(fieldFormatOptions.isCurrencyAligned) === "true") {
383
380
  if (fieldFormatOptions.measureDisplayMode === "Hidden") {
384
381
  return "Text";
385
382
  }
@@ -407,7 +404,7 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
407
404
  return "Link";
408
405
  }
409
406
 
410
- if (fieldFormatOptions.retrieveTextFromValueList && !(fieldFormatOptions.displayMode === "Value") && !((_oProperty$annotation22 = oProperty.annotations) !== null && _oProperty$annotation22 !== void 0 && (_oProperty$annotation23 = _oProperty$annotation22.Common) !== null && _oProperty$annotation23 !== void 0 && _oProperty$annotation23.Text) && !oProperty.annotations.Measures && PropertyHelper.hasValueHelp(oProperty) && fieldFormatOptions.textAlignMode === "Form") {
407
+ if (fieldFormatOptions.retrieveTextFromValueList === true) {
411
408
  return "MdcFieldWithValueHelp";
412
409
  }
413
410
 
@@ -417,7 +414,7 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
417
414
  _exports.getDisplayStyle = getDisplayStyle;
418
415
 
419
416
  var getEditStyle = function (oPropertyPath, oDataField, oFieldFormatOptions) {
420
- var _oDataField$Target3, _oDataField$Target3$$, _oDataField$Target4, _oDataField$Target4$$, _oProperty$annotation24, _oProperty$annotation25, _oProperty$annotation26, _oProperty$annotation27, _oProperty$annotation28, _oProperty$annotation29, _oProperty$annotation30;
417
+ var _oDataField$Target3, _oDataField$Target3$$, _oDataField$Target4, _oDataField$Target4$$, _oProperty$annotation22, _oProperty$annotation23, _oProperty$annotation24, _oProperty$annotation25, _oProperty$annotation26, _oProperty$annotation27, _oProperty$annotation28;
421
418
 
422
419
  // algorithm to determine the field fragment to use
423
420
  if (!oPropertyPath || typeof oPropertyPath === "string") {
@@ -464,7 +461,7 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
464
461
  return "InputWithValueHelp";
465
462
  }
466
463
 
467
- if ((_oProperty$annotation24 = oProperty.annotations) !== null && _oProperty$annotation24 !== void 0 && (_oProperty$annotation25 = _oProperty$annotation24.UI) !== null && _oProperty$annotation25 !== void 0 && (_oProperty$annotation26 = _oProperty$annotation25.MultiLineText) !== null && _oProperty$annotation26 !== void 0 && _oProperty$annotation26.valueOf() && oProperty.type === "Edm.String") {
464
+ if ((_oProperty$annotation22 = oProperty.annotations) !== null && _oProperty$annotation22 !== void 0 && (_oProperty$annotation23 = _oProperty$annotation22.UI) !== null && _oProperty$annotation23 !== void 0 && (_oProperty$annotation24 = _oProperty$annotation23.MultiLineText) !== null && _oProperty$annotation24 !== void 0 && _oProperty$annotation24.valueOf() && oProperty.type === "Edm.String") {
468
465
  return "TextArea";
469
466
  }
470
467
 
@@ -484,7 +481,7 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
484
481
  return "CheckBox";
485
482
  }
486
483
 
487
- if ((_oProperty$annotation27 = oProperty.annotations) !== null && _oProperty$annotation27 !== void 0 && (_oProperty$annotation28 = _oProperty$annotation27.Measures) !== null && _oProperty$annotation28 !== void 0 && _oProperty$annotation28.ISOCurrency || (_oProperty$annotation29 = oProperty.annotations) !== null && _oProperty$annotation29 !== void 0 && (_oProperty$annotation30 = _oProperty$annotation29.Measures) !== null && _oProperty$annotation30 !== void 0 && _oProperty$annotation30.Unit) {
484
+ if ((_oProperty$annotation25 = oProperty.annotations) !== null && _oProperty$annotation25 !== void 0 && (_oProperty$annotation26 = _oProperty$annotation25.Measures) !== null && _oProperty$annotation26 !== void 0 && _oProperty$annotation26.ISOCurrency || (_oProperty$annotation27 = oProperty.annotations) !== null && _oProperty$annotation27 !== void 0 && (_oProperty$annotation28 = _oProperty$annotation27.Measures) !== null && _oProperty$annotation28 !== void 0 && _oProperty$annotation28.Unit) {
488
485
  return "InputWithUnit";
489
486
  }
490
487
 
@@ -594,29 +591,6 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
594
591
 
595
592
  _exports.getQuickViewType = getQuickViewType;
596
593
 
597
- var getDataPointStyle = function (oDataModelPath) {
598
- var _oProperty$annotation31, _oProperty$annotation32;
599
-
600
- var oDataPoint = oDataModelPath === null || oDataModelPath === void 0 ? void 0 : oDataModelPath.targetObject;
601
- var oProperty = oDataModelPath === null || oDataModelPath === void 0 ? void 0 : oDataModelPath.targetObject.Value.$target;
602
-
603
- if (oDataPoint.Visualization) {
604
- return undefined;
605
- }
606
-
607
- if (isUsedInNavigationWithQuickViewFacets(oDataModelPath, oProperty)) {
608
- return "LinkWithQuickViewForm";
609
- }
610
-
611
- if ((_oProperty$annotation31 = oProperty.annotations) !== null && _oProperty$annotation31 !== void 0 && (_oProperty$annotation32 = _oProperty$annotation31.Common) !== null && _oProperty$annotation32 !== void 0 && _oProperty$annotation32.SemanticObject) {
612
- return "LinkWrapper";
613
- }
614
-
615
- return undefined;
616
- };
617
-
618
- _exports.getDataPointStyle = getDataPointStyle;
619
-
620
594
  var getSemanticObjectExpressionToResolve = function (oAnnotations) {
621
595
  var aSemObjExprToResolve = [];
622
596
 
@@ -666,4 +640,4 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
666
640
  _exports.getSemanticObjects = getSemanticObjects;
667
641
  return _exports;
668
642
  }, false);
669
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpZWxkVGVtcGxhdGluZy50cyJdLCJuYW1lcyI6WyJhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uIiwiYmluZGluZ0V4cHJlc3Npb24iLCJmdWxsQ29udGV4dFBhdGgiLCJ0cmFuc2Zvcm1SZWN1cnNpdmVseSIsImV4cHJlc3Npb24iLCJvdXRFeHByZXNzaW9uIiwibW9kZWxOYW1lIiwidW5kZWZpbmVkIiwib1Byb3BlcnR5RGF0YU1vZGVsUGF0aCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwicGF0aCIsImdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50IiwicHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiIsImZpZWxkRm9ybWF0T3B0aW9ucyIsInRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUiLCJkaXNwbGF5TW9kZSIsIm9Qcm9wZXJ0eURlZmluaXRpb24iLCJ0YXJnZXRPYmplY3QiLCJ0eXBlIiwiJHRhcmdldCIsInRhcmdldERpc3BsYXlNb2RlIiwiZ2V0RGlzcGxheU1vZGUiLCJjb21tb25UZXh0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwicmVsYXRpdmVMb2NhdGlvbiIsImdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIiwiY29udGV4dExvY2F0aW9uIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJtYXAiLCJucCIsIm5hbWUiLCJmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJ2YWx1ZUZvcm1hdHRlcnMiLCJmb3JtYXRXaXRoQnJhY2tldHMiLCJmb3JtYXRWYWx1ZVJlY3Vyc2l2ZWx5IiwiZ2V0VGV4dEJpbmRpbmciLCJvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwiYXNPYmplY3QiLCIkVHlwZSIsImZpZWxkVmFsdWUiLCJWYWx1ZSIsImNvbXBpbGVCaW5kaW5nIiwiY29uc3RhbnQiLCJpc1BhdGhFeHByZXNzaW9uIiwib05hdlBhdGgiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJ0YXJnZXQiLCJ2aXNpdGVkT2JqZWN0cyIsImZvckVhY2giLCJvTmF2T2JqIiwiX3R5cGUiLCJwdXNoIiwib0JpbmRpbmdFeHByZXNzaW9uIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsIm9UYXJnZXRCaW5kaW5nIiwiTWVhc3VyZXMiLCJVbml0IiwiSVNPQ3VycmVuY3kiLCJnZXRCaW5kaW5nV2l0aFVuaXRPckN1cnJlbmN5IiwibWVhc3VyZURpc3BsYXlNb2RlIiwiZm9ybWF0T3B0aW9ucyIsInNob3dNZWFzdXJlIiwiZ2V0VmFsdWVCaW5kaW5nIiwiaWdub3JlVW5pdCIsImlnbm9yZUZvcm1hdHRpbmciLCJiaW5kaW5nUGFyYW1ldGVycyIsInRhcmdldFR5cGVBbnkiLCJzaG93TWVhc3VyZU9ubHkiLCJpc1Byb3BlcnR5IiwiQ29tbXVuaWNhdGlvbiIsIklzRW1haWxBZGRyZXNzIiwib1Byb3BlcnR5VW5pdCIsImdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkiLCJvUHJvcGVydHlDdXJyZW5jeSIsImdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiaGFzVmFsdWVIZWxwIiwic2hvd051bWJlciIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsImNvbnN0cmFpbnRzIiwicGFyYW1ldGVycyIsInRhcmdldFR5cGUiLCJnZXRVbml0QmluZGluZyIsInNVbml0UHJvcGVydHlQYXRoIiwiZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eVBhdGgiLCJzQ3VycmVuY3lQcm9wZXJ0eVBhdGgiLCJnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eVBhdGgiLCJ0YXJnZXRQcm9wZXJ0eVBhdGgiLCJvVU9NUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0QXNzb2NpYXRlZFRleHRCaW5kaW5nIiwidGV4dFByb3BlcnR5UGF0aCIsImdldEFzc29jaWF0ZWRUZXh0UHJvcGVydHlQYXRoIiwib1RleHRQcm9wZXJ0eVBhdGgiLCJvVmFsdWVCaW5kaW5nIiwiJCRub1BhdGNoIiwiaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyIsIm9EYXRhTW9kZWxQYXRoIiwib1Byb3BlcnR5IiwiYU5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwiYklzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMiLCJvTmF2UHJvcCIsInJlZmVyZW50aWFsQ29uc3RyYWludCIsImxlbmd0aCIsIm9SZWZDb25zdHJhaW50Iiwic291cmNlUHJvcGVydHkiLCJVSSIsIlF1aWNrVmlld0ZhY2V0cyIsImlzUmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdEVuYWJsZWQiLCJvUHJvcGVydHlQYXRoIiwiUHJvcGVydHlIZWxwZXIiLCJ0ZXh0QWxpZ25Nb2RlIiwiZ2V0RGlzcGxheVN0eWxlIiwib0RhdGFGaWVsZCIsInNlbWFudGljT2JqZWN0IiwiSXNJbWFnZVVSTCIsIklzUGhvbmVOdW1iZXIiLCJUYXJnZXQiLCJTZW1hbnRpY0tleSIsImFTZW1hbnRpY0tleXMiLCJiSXNTZW1hbnRpY0tleSIsImV2ZXJ5Iiwib0tleSIsInNlbWFudGljS2V5U3R5bGUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJEcmFmdFJvb3QiLCJDcml0aWNhbGl0eSIsIk11bHRpTGluZVRleHQiLCJTZW1hbnRpY09iamVjdCIsInJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QiLCJnZXRFZGl0U3R5bGUiLCJvRmllbGRGb3JtYXRPcHRpb25zIiwiVmlzdWFsaXphdGlvbiIsInZhbHVlT2YiLCJnZXRWaXNpYmxlRXhwcmVzc2lvbiIsImRhdGFGaWVsZE1vZGVsUGF0aCIsInByb3BlcnR5VmFsdWUiLCJpc0FuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkIiwiaXNBbmFseXRpY3MiLCJJc0V4cGFuZGVkIiwiaXNBbmFseXRpY2FsTGVhZiIsImVxdWFsIiwiTm9kZUxldmVsIiwiYW5kIiwibm90IiwiSGlkZGVuIiwiaWZFbHNlIiwib3IiLCJnZXRJbnB1dERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb25CaW5kaW5nRXhwcmVzc2lvbiIsInVuaXRQcm9wZXJ0eSIsImVkaXRhYmxlRXhwcmVzc2lvbiIsImlzUmVhZE9ubHlFeHByZXNzaW9uIiwiaXNDb21wdXRlZCIsIlFWVGV4dEJpbmRpbmciLCJvUHJvcGVydHlWYWx1ZURhdGFNb2RlbE9iamVjdFBhdGgiLCJyZXR1cm5WYWx1ZSIsImdldFF1aWNrVmlld1R5cGUiLCJnZXREYXRhUG9pbnRTdHlsZSIsIm9EYXRhUG9pbnQiLCJnZXRTZW1hbnRpY09iamVjdEV4cHJlc3Npb25Ub1Jlc29sdmUiLCJvQW5ub3RhdGlvbnMiLCJhU2VtT2JqRXhwclRvUmVzb2x2ZSIsImFTZW1PYmprZXlzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImVsZW1lbnQiLCJzdGFydHNXaXRoIiwiaVNlbU9iakNvdW50Iiwic1NlbU9iakV4cHJlc3Npb24iLCJrZXkiLCJpbmRleE9mIiwic3BsaXQiLCJ2YWx1ZSIsImdldFNlbWFudGljT2JqZWN0cyIsInNDdXN0b21EYXRhS2V5Iiwic0N1c3RvbURhdGFWYWx1ZSIsImFTZW1PYmpDdXN0b21EYXRhIiwib1NlbWFudGljT2JqZWN0c01vZGVsIiwiSlNPTk1vZGVsIiwiJCR2YWx1ZUFzUHJvbWlzZSIsIm9TZW1PYmpCaW5kaW5nQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQSxxQ0FBcUMsR0FBRyxVQUNwREMsaUJBRG9ELEVBRXBEQyxlQUZvRCxFQUdsQztBQUNsQixXQUFPQyxvQkFBb0IsQ0FBQ0YsaUJBQUQsRUFBb0IsU0FBcEIsRUFBK0IsVUFBQ0csVUFBRCxFQUFrRDtBQUMzRyxVQUFJQyxhQUE4QixHQUFHRCxVQUFyQzs7QUFDQSxVQUFJQSxVQUFVLENBQUNFLFNBQVgsS0FBeUJD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QUZlLFNBQXZCO0FBSUE7O0FBQ0QsVUFBTUUscUJBQTBCLEdBQUcsSUFBSUMsU0FBSixDQUFjRixpQkFBZCxDQUFuQztBQUNBQyxNQUFBQSxxQkFBcUIsQ0FBQ0UsZ0JBQXRCLEdBQXlDLElBQXpDO0FBQ0EsVUFBTUMscUJBQTBCLEdBQUdILHFCQUFxQixDQUFDSSxvQkFBdEIsQ0FBMkMsR0FBM0MsQ0FBbkM7QUFDQSxhQUFPRCxxQkFBUDtBQUNBLEtBaEJELE1BZ0JPO0FBQ04sYUFBTyxJQUFJRixTQUFKLENBQWMsRUFBZCxFQUFrQkcsb0JBQWxCLENBQXVDLEdBQXZDLENBQVA7QUFDQTtBQUNELEdBcEJNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRnZXREaXNwbGF5TW9kZSxcblx0UHJvcGVydHlPclBhdGgsXG5cdERpc3BsYXlNb2RlLFxuXHRnZXRCaW5kaW5nV2l0aFVuaXRPckN1cnJlbmN5LFxuXHRmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHtcblx0RGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0ZW5oYW5jZURhdGFNb2RlbFBhdGgsXG5cdGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uLFxuXHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG5cdEV4cHJlc3Npb24sXG5cdGFubm90YXRpb25FeHByZXNzaW9uLFxuXHRmb3JtYXRSZXN1bHQsXG5cdHRyYW5zZm9ybVJlY3Vyc2l2ZWx5LFxuXHRCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb24sXG5cdEJpbmRpbmdFeHByZXNzaW9uLFxuXHRjb21waWxlQmluZGluZyxcblx0Y29uc3RhbnQsXG5cdGJpbmRpbmdFeHByZXNzaW9uLFxuXHRhbmQsXG5cdGlmRWxzZSxcblx0bm90LFxuXHRDb21wbGV4VHlwZUV4cHJlc3Npb24sXG5cdGVxdWFsLFxuXHRvclxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHtcblx0aXNQYXRoRXhwcmVzc2lvbixcblx0Z2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eSxcblx0Z2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHksXG5cdGlzUHJvcGVydHksXG5cdGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHlQYXRoLFxuXHRnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eVBhdGgsXG5cdGhhc1ZhbHVlSGVscCxcblx0Z2V0QXNzb2NpYXRlZFRleHRQcm9wZXJ0eVBhdGhcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCAqIGFzIFByb3BlcnR5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgeyBpc1JlYWRPbmx5RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpZWxkQ29udHJvbEhlbHBlclwiO1xuaW1wb3J0IHsgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgRGF0YUZpZWxkV2l0aFVybCwgRGF0YVBvaW50VHlwZVR5cGVzLCBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB7IEpTT05Nb2RlbCB9IGZyb20gXCJzYXAvdWkvbW9kZWwvanNvblwiO1xuXG5leHBvcnQgdHlwZSBGaWVsZEZvcm1hdE9wdGlvbnMgPSBQYXJ0aWFsPHtcblx0dmFsdWVGb3JtYXQ6IFN0cmluZztcblx0dGV4dEFsaWduTW9kZTogU3RyaW5nO1xuXHRkaXNwbGF5TW9kZTogRGlzcGxheU1vZGU7XG5cdG1lYXN1cmVEaXNwbGF5TW9kZTogU3RyaW5nO1xuXHR0ZXh0TGluZXNFZGl0OiBTdHJpbmc7XG5cdHRleHRNYXhMaW5lczogU3RyaW5nO1xuXHRzaG93RW1wdHlJbmRpY2F0b3I6IGJvb2xlYW47XG5cdHNlbWFudGljS2V5U3R5bGU6IFN0cmluZztcblx0c2hvd0ljb25Vcmw6IGJvb2xlYW47XG5cdGlzQW5hbHl0aWNzOiBib29sZWFuO1xuXHRoYXNEcmFmdEluZGljYXRvcjogYm9vbGVhbjtcblx0c2VtYW50aWNrZXlzOiBzdHJpbmdbXTtcblx0cmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdDogYm9vbGVhbjtcbn0+O1xuXG5leHBvcnQgdHlwZSBFZGl0U3R5bGUgPVxuXHR8IFwiSW5wdXRXaXRoVmFsdWVIZWxwXCJcblx0fCBcIlRleHRBcmVhXCJcblx0fCBcIkZpbGVcIlxuXHR8IFwiRGF0ZVBpY2tlclwiXG5cdHwgXCJUaW1lUGlja2VyXCJcblx0fCBcIkRhdGVUaW1lUGlja2VyXCJcblx0fCBcIkNoZWNrQm94XCJcblx0fCBcIklucHV0V2l0aFVuaXRcIlxuXHR8IFwiSW5wdXRcIlxuXHR8IFwiUmF0aW5nSW5kaWNhdG9yXCI7XG5cbmV4cG9ydCB0eXBlIERpc3BsYXlTdHlsZSA9XG5cdHwgXCJUZXh0XCJcblx0fCBcIk1kY0ZpZWxkV2l0aFZhbHVlSGVscFwiXG5cdHwgXCJBdmF0YXJcIlxuXHR8IFwiRmlsZVwiXG5cdHwgXCJEYXRhUG9pbnRcIlxuXHR8IFwiQ29udGFjdFwiXG5cdHwgXCJCdXR0b25cIlxuXHR8IFwiTGlua1wiXG5cdHwgXCJPYmplY3RTdGF0dXNcIlxuXHR8IFwiQW1vdW50V2l0aEN1cnJlbmN5XCJcblx0fCBcIlNlbWFudGljS2V5V2l0aERyYWZ0SW5kaWNhdG9yXCJcblx0fCBcIk9iamVjdElkZW50aWZpZXJcIlxuXHR8IFwiTGFiZWxTZW1hbnRpY0tleVwiXG5cdHwgXCJMaW5rV2l0aFF1aWNrVmlld0Zvcm1cIlxuXHR8IFwiTGlua1dyYXBwZXJcIlxuXHR8IFwiRXhwYW5kYWJsZVRleHRcIjtcblxuLyoqXG4gKiBSZWN1cnNpdmVseSBhZGQgdGhlIHRleHQgYXJyYW5nZW1lbnQgdG8gYSBiaW5kaW5nIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIGJpbmRpbmdFeHByZXNzaW9uIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gYmUgZW5oYW5jZWRcbiAqIEBwYXJhbSBmdWxsQ29udGV4dFBhdGggVGhlIGN1cnJlbnQgY29udGV4dCBwYXRoIHdlJ3JlIG9uICh0byBwcm9wZXJseSByZXNvbHZlIHRoZSB0ZXh0IGFycmFuZ2VtZW50IHByb3BlcnRpZXMpXG4gKiBAcmV0dXJucyBBbiB1cGRhdGVkIGV4cHJlc3Npb24gY29udGFpbmluZyB0aGUgdGV4dCBhcnJhbmdlbWVudCBiaW5kaW5nLlxuICovXG5leHBvcnQgY29uc3QgYWRkVGV4dEFycmFuZ2VtZW50VG9CaW5kaW5nRXhwcmVzc2lvbiA9IGZ1bmN0aW9uKFxuXHRiaW5kaW5nRXhwcmVzc2lvbjogRXhwcmVzc2lvbjxhbnk+LFxuXHRmdWxsQ29udGV4dFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IEV4cHJlc3Npb248YW55PiB7XG5cdHJldHVybiB0cmFuc2Zvcm1SZWN1cnNpdmVseShiaW5kaW5nRXhwcmVzc2lvbiwgXCJCaW5kaW5nXCIsIChleHByZXNzaW9uOiBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248YW55PikgPT4ge1xuXHRcdGxldCBvdXRFeHByZXNzaW9uOiBFeHByZXNzaW9uPGFueT4gPSBleHByZXNzaW9uO1xuXHRcdGlmIChleHByZXNzaW9uLm1vZGVsTmFtZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBJbiBjYXNlIG9mIGRlZmF1bHQgbW9kZWwgd2UgdGhlbiBuZWVkIHRvIHJlc29sdmUgdGhlIHRleHQgYXJyYW5nZW1lbnQgcHJvcGVydHlcblx0XHRcdGNvbnN0IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChmdWxsQ29udGV4dFBhdGgsIGV4cHJlc3Npb24ucGF0aCk7XG5cdFx0XHRvdXRFeHByZXNzaW9uID0gZ2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCwgZXhwcmVzc2lvbik7XG5cdFx0fVxuXHRcdHJldHVybiBvdXRFeHByZXNzaW9uO1xuXHR9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudCA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uOiBFeHByZXNzaW9uPHN0cmluZz4sXG5cdGZpZWxkRm9ybWF0T3B0aW9ucz86IEZpZWxkRm9ybWF0T3B0aW9uc1xuKTogRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGVPdmVycmlkZSA9IGZpZWxkRm9ybWF0T3B0aW9ucz8uZGlzcGxheU1vZGU7XG5cdGxldCBvdXRFeHByZXNzaW9uID0gcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QudHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIlxuXHRcdFx0PyAob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QuJHRhcmdldCBhcyBQcm9wZXJ0eSlcblx0XHRcdDogKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5KTtcblx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGUgPSB0YXJnZXREaXNwbGF5TW9kZU92ZXJyaWRlIHx8IGdldERpc3BsYXlNb2RlKG9Qcm9wZXJ0eURlZmluaXRpb24sIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpO1xuXHRjb25zdCBjb21tb25UZXh0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0O1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oXG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24sXG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllc1xuXHQpLm1hcChucCA9PiBucC5uYW1lKTtcblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiA9IGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ob1Byb3BlcnR5RGVmaW5pdGlvbiwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbik7XG5cdGlmICh0YXJnZXREaXNwbGF5TW9kZSAhPT0gXCJWYWx1ZVwiICYmIGNvbW1vblRleHQpIHtcblx0XHRzd2l0Y2ggKHRhcmdldERpc3BsYXlNb2RlKSB7XG5cdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0b3V0RXhwcmVzc2lvbiA9IGFubm90YXRpb25FeHByZXNzaW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEV4cHJlc3Npb248c3RyaW5nPjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25WYWx1ZVwiOlxuXHRcdFx0XHRvdXRFeHByZXNzaW9uID0gZm9ybWF0UmVzdWx0KFxuXHRcdFx0XHRcdFthbm5vdGF0aW9uRXhwcmVzc2lvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBFeHByZXNzaW9uPHN0cmluZz4sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb25dLFxuXHRcdFx0XHRcdHZhbHVlRm9ybWF0dGVycy5mb3JtYXRXaXRoQnJhY2tldHNcblx0XHRcdFx0KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRvdXRFeHByZXNzaW9uID0gZm9ybWF0UmVzdWx0KFxuXHRcdFx0XHRcdFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCBhbm5vdGF0aW9uRXhwcmVzc2lvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBFeHByZXNzaW9uPHN0cmluZz5dLFxuXHRcdFx0XHRcdHZhbHVlRm9ybWF0dGVycy5mb3JtYXRXaXRoQnJhY2tldHNcblx0XHRcdFx0KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvdXRFeHByZXNzaW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFZhbHVlUmVjdXJzaXZlbHkgPSBmdW5jdGlvbihiaW5kaW5nRXhwcmVzc2lvbjogRXhwcmVzc2lvbjxhbnk+LCBmdWxsQ29udGV4dFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBFeHByZXNzaW9uPGFueT4ge1xuXHRyZXR1cm4gdHJhbnNmb3JtUmVjdXJzaXZlbHkoYmluZGluZ0V4cHJlc3Npb24sIFwiQmluZGluZ1wiLCAoZXhwcmVzc2lvbjogQmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uPGFueT4pID0+IHtcblx0XHRsZXQgb3V0RXhwcmVzc2lvbjogRXhwcmVzc2lvbjxhbnk+ID0gZXhwcmVzc2lvbjtcblx0XHRpZiAoZXhwcmVzc2lvbi5tb2RlbE5hbWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Ly8gSW4gY2FzZSBvZiBkZWZhdWx0IG1vZGVsIHdlIHRoZW4gbmVlZCB0byByZXNvbHZlIHRoZSB0ZXh0IGFycmFuZ2VtZW50IHByb3BlcnR5XG5cdFx0XHRjb25zdCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoZnVsbENvbnRleHRQYXRoLCBleHByZXNzaW9uLnBhdGgpO1xuXHRcdFx0b3V0RXhwcmVzc2lvbiA9IGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QsIGV4cHJlc3Npb24pO1xuXHRcdH1cblx0XHRyZXR1cm4gb3V0RXhwcmVzc2lvbjtcblx0fSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dEJpbmRpbmcgPSBmdW5jdGlvbihcblx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0ZmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnMsXG5cdGFzT2JqZWN0OiBib29sZWFuID0gZmFsc2Vcbik6IEV4cHJlc3Npb248c3RyaW5nPiB8IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRpZiAoXG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFwiIHx8XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIiB8fFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIiB8fFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoVXJsXCJcblx0KSB7XG5cdFx0Ly8gSWYgdGhlcmUgaXMgbm8gcmVzb2x2ZWQgcHJvcGVydHksIHRoZSB2YWx1ZSBpcyByZXR1cm5lZCBhcyBhIGNvbnN0YW50XG5cdFx0Y29uc3QgZmllbGRWYWx1ZSA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LlZhbHVlIHx8IFwiXCI7XG5cdFx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKGNvbnN0YW50KGZpZWxkVmFsdWUpKTtcblx0fVxuXHRpZiAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiYgb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuJHRhcmdldCkge1xuXHRcdGNvbnN0IG9OYXZQYXRoID0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnBhdGgsIHRydWUpO1xuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ID0gb05hdlBhdGgudGFyZ2V0O1xuXHRcdG9OYXZQYXRoLnZpc2l0ZWRPYmplY3RzLmZvckVhY2goKG9OYXZPYmo6IGFueSkgPT4ge1xuXHRcdFx0aWYgKG9OYXZPYmo/Ll90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKSB7XG5cdFx0XHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChvTmF2T2JqKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRjb25zdCBvQmluZGluZ0V4cHJlc3Npb24gPSBiaW5kaW5nRXhwcmVzc2lvbihnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpKTtcblx0bGV0IG9UYXJnZXRCaW5kaW5nO1xuXHRpZiAoXG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdCB8fFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5XG5cdCkge1xuXHRcdG9UYXJnZXRCaW5kaW5nID0gZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBvQmluZGluZ0V4cHJlc3Npb24pO1xuXHRcdGlmIChmaWVsZEZvcm1hdE9wdGlvbnM/Lm1lYXN1cmVEaXNwbGF5TW9kZSA9PT0gXCJIaWRkZW5cIikge1xuXHRcdFx0Ly8gVE9ETzogUmVmYWN0b3Igb25jZSB0eXBlcyBhcmUgbGVzcyBnZW5lcmljIGhlcmVcblx0XHRcdChvVGFyZ2V0QmluZGluZyBhcyBDb21wbGV4VHlwZUV4cHJlc3Npb248U3RyaW5nPikuZm9ybWF0T3B0aW9ucyA9IHtcblx0XHRcdFx0Li4uKG9UYXJnZXRCaW5kaW5nIGFzIENvbXBsZXhUeXBlRXhwcmVzc2lvbjxTdHJpbmc+KS5mb3JtYXRPcHRpb25zLFxuXHRcdFx0XHRzaG93TWVhc3VyZTogZmFsc2Vcblx0XHRcdH07XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdG9UYXJnZXRCaW5kaW5nID0gZ2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCwgb0JpbmRpbmdFeHByZXNzaW9uLCBmaWVsZEZvcm1hdE9wdGlvbnMpO1xuXHR9XG5cdGlmIChhc09iamVjdCkge1xuXHRcdHJldHVybiBvVGFyZ2V0QmluZGluZztcblx0fVxuXHQvLyBXZSBkb24ndCBpbmNsdWRlICQkbm9wYXRjaCBhbmQgcGFyc2VLZWVwRW1wdHlTdHJpbmcgYXMgdGhleSBtYWtlIG5vIHNlbnNlIGluIHRoZSB0ZXh0IGJpbmRpbmcgY2FzZVxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcob1RhcmdldEJpbmRpbmcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZhbHVlQmluZGluZyA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRmaWVsZEZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucyxcblx0aWdub3JlVW5pdDogYm9vbGVhbiA9IGZhbHNlLFxuXHRpZ25vcmVGb3JtYXR0aW5nOiBib29sZWFuID0gZmFsc2UsXG5cdGJpbmRpbmdQYXJhbWV0ZXJzPzogb2JqZWN0LFxuXHR0YXJnZXRUeXBlQW55PzogYm9vbGVhbixcblx0c2hvd01lYXN1cmVPbmx5OiBib29sZWFuID0gZmFsc2Vcbik6IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRpZiAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiYgb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuJHRhcmdldCkge1xuXHRcdGNvbnN0IG9OYXZQYXRoID0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnBhdGgsIHRydWUpO1xuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ID0gb05hdlBhdGgudGFyZ2V0O1xuXHRcdG9OYXZQYXRoLnZpc2l0ZWRPYmplY3RzLmZvckVhY2goKG9OYXZPYmo6IGFueSkgPT4ge1xuXHRcdFx0aWYgKG9OYXZPYmogJiYgb05hdk9iai5fdHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIikge1xuXHRcdFx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2gob05hdk9iaik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRjb25zdCB0YXJnZXRPYmplY3QgPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0aWYgKGlzUHJvcGVydHkodGFyZ2V0T2JqZWN0KSkge1xuXHRcdGxldCBvQmluZGluZ0V4cHJlc3Npb246IEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxzdHJpbmc+ID0gYmluZGluZ0V4cHJlc3Npb24oXG5cdFx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpXG5cdFx0KSBhcyBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248c3RyaW5nPjtcblx0XHRpZiAodGFyZ2V0T2JqZWN0LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcykge1xuXHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uLnR5cGUgPSBcInNhcC5mZS5jb3JlLnR5cGUuRW1haWxcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgb1Byb3BlcnR5VW5pdCA9IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpO1xuXHRcdFx0Y29uc3Qgb1Byb3BlcnR5Q3VycmVuY3kgPSBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCk7XG5cdFx0XHRpZiAoIWlnbm9yZVVuaXQgJiYgKG9Qcm9wZXJ0eVVuaXQgfHwgb1Byb3BlcnR5Q3VycmVuY3kpKSB7XG5cdFx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbiA9IGdldEJpbmRpbmdXaXRoVW5pdE9yQ3VycmVuY3kob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCwgb0JpbmRpbmdFeHByZXNzaW9uKSBhcyBhbnk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQob1Byb3BlcnR5VW5pdCAmJiAhaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eVVuaXQpKSB8fFxuXHRcdFx0XHRcdChvUHJvcGVydHlDdXJyZW5jeSAmJiAhaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eUN1cnJlbmN5KSkgfHxcblx0XHRcdFx0XHRmaWVsZEZvcm1hdE9wdGlvbnM/Lm1lYXN1cmVEaXNwbGF5TW9kZSA9PT0gXCJIaWRkZW5cIlxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBhIHVuaXQgb3IgY3VycmVuY3kgd2l0aG91dCBhIHZhbHVlIGhlbHAsIG9yIGluIGNhc2UgdGhlIGN1cnJlbmN5IHNob3VsZCBiZSBleHBsaWNpdGx5IGhpZGRlbixcblx0XHRcdFx0XHQvLyB3ZSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgYmluZGluZyB0byBub3Qgc2hvdyB0aGUgbWVhc3VyZSwgb3RoZXJ3aXNlIGl0J3MgbmVlZGVkIGZvciB0aGUgbWRjIGZpZWxkXG5cdFx0XHRcdFx0aWYgKCFvQmluZGluZ0V4cHJlc3Npb24uZm9ybWF0T3B0aW9ucykge1xuXHRcdFx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnMgPSB7fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHNob3dNZWFzdXJlT25seSkge1xuXHRcdFx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnMuc2hvd051bWJlciA9IGZhbHNlO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24uZm9ybWF0T3B0aW9ucy5zaG93TWVhc3VyZSA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbih0YXJnZXRPYmplY3QsIG9CaW5kaW5nRXhwcmVzc2lvbikgYXMgQmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uPHN0cmluZz47XG5cdFx0XHRcdGlmIChvQmluZGluZ0V4cHJlc3Npb24udHlwZSA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJpbmdcIikge1xuXHRcdFx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zID0ge1xuXHRcdFx0XHRcdFx0cGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoaWdub3JlRm9ybWF0dGluZykge1xuXHRcdFx0ZGVsZXRlIG9CaW5kaW5nRXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zO1xuXHRcdFx0ZGVsZXRlIG9CaW5kaW5nRXhwcmVzc2lvbi5jb25zdHJhaW50cztcblx0XHRcdGRlbGV0ZSBvQmluZGluZ0V4cHJlc3Npb24udHlwZTtcblx0XHR9XG5cdFx0aWYgKGJpbmRpbmdQYXJhbWV0ZXJzKSB7XG5cdFx0XHRvQmluZGluZ0V4cHJlc3Npb24ucGFyYW1ldGVycyA9IGJpbmRpbmdQYXJhbWV0ZXJzO1xuXHRcdH1cblx0XHRpZiAodGFyZ2V0VHlwZUFueSkge1xuXHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uLnRhcmdldFR5cGUgPSBcImFueVwiO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tcGlsZUJpbmRpbmcob0JpbmRpbmdFeHByZXNzaW9uKTtcblx0fSBlbHNlIHtcblx0XHRpZiAoXG5cdFx0XHR0YXJnZXRPYmplY3Q/LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsIHx8XG5cdFx0XHR0YXJnZXRPYmplY3Q/LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcblx0XHQpIHtcblx0XHRcdHJldHVybiBjb21waWxlQmluZGluZyhhbm5vdGF0aW9uRXhwcmVzc2lvbigodGFyZ2V0T2JqZWN0IGFzIERhdGFGaWVsZFdpdGhVcmwpLlZhbHVlKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFVuaXRCaW5kaW5nID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3Qgc1VuaXRQcm9wZXJ0eVBhdGggPSBnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5UGF0aChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCk7XG5cdGNvbnN0IHNDdXJyZW5jeVByb3BlcnR5UGF0aCA9IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5UGF0aChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCk7XG5cdGlmIChzVW5pdFByb3BlcnR5UGF0aCB8fCBzQ3VycmVuY3lQcm9wZXJ0eVBhdGgpIHtcblx0XHRjb25zdCB0YXJnZXRQcm9wZXJ0eVBhdGggPSBzVW5pdFByb3BlcnR5UGF0aCB8fCBzQ3VycmVuY3lQcm9wZXJ0eVBhdGg7XG5cdFx0Y29uc3Qgb1VPTVByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIHRhcmdldFByb3BlcnR5UGF0aCk7XG5cdFx0cmV0dXJuIGdldFZhbHVlQmluZGluZyhvVU9NUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBmaWVsZEZvcm1hdE9wdGlvbnMpO1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXNzb2NpYXRlZFRleHRCaW5kaW5nID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGV4dFByb3BlcnR5UGF0aCA9IGdldEFzc29jaWF0ZWRUZXh0UHJvcGVydHlQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KTtcblx0aWYgKHRleHRQcm9wZXJ0eVBhdGgpIHtcblx0XHRjb25zdCBvVGV4dFByb3BlcnR5UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIHRleHRQcm9wZXJ0eVBhdGgpO1xuXHRcdGNvbnN0IG9WYWx1ZUJpbmRpbmcgPSBnZXRWYWx1ZUJpbmRpbmcob1RleHRQcm9wZXJ0eVBhdGgsIGZpZWxkRm9ybWF0T3B0aW9ucywgdHJ1ZSwgdHJ1ZSwgeyAkJG5vUGF0Y2g6IHRydWUgfSk7XG5cdFx0cmV0dXJuIG9WYWx1ZUJpbmRpbmc7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzID0gZnVuY3Rpb24ob0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0Y29uc3QgYU5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gb0RhdGFNb2RlbFBhdGg/LnRhcmdldEVudGl0eVR5cGU/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzIHx8IFtdO1xuXHRsZXQgYklzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMgPSBmYWxzZTtcblx0YU5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2gob05hdlByb3AgPT4ge1xuXHRcdGlmIChvTmF2UHJvcC5yZWZlcmVudGlhbENvbnN0cmFpbnQgJiYgb05hdlByb3AucmVmZXJlbnRpYWxDb25zdHJhaW50Lmxlbmd0aCkge1xuXHRcdFx0b05hdlByb3AucmVmZXJlbnRpYWxDb25zdHJhaW50LmZvckVhY2gob1JlZkNvbnN0cmFpbnQgPT4ge1xuXHRcdFx0XHRpZiAob1JlZkNvbnN0cmFpbnQ/LnNvdXJjZVByb3BlcnR5ID09PSBvUHJvcGVydHkubmFtZSkge1xuXHRcdFx0XHRcdGlmIChvTmF2UHJvcD8udGFyZ2V0VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5RdWlja1ZpZXdGYWNldHMpIHtcblx0XHRcdFx0XHRcdGJJc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBiSXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBpc1JldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3RFbmFibGVkID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0ZmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnNcbik6IGJvb2xlYW4ge1xuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdGlmIChcblx0XHQhKGZpZWxkRm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZSA9PT0gXCJWYWx1ZVwiKSAmJlxuXHRcdCFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCAmJlxuXHRcdCFvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzICYmXG5cdFx0UHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eSkgJiZcblx0XHRmaWVsZEZvcm1hdE9wdGlvbnMudGV4dEFsaWduTW9kZSA9PT0gXCJGb3JtXCJcblx0KSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERpc3BsYXlTdHlsZSA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdG9EYXRhRmllbGQ6IGFueSxcblx0b0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLFxuXHRzZW1hbnRpY09iamVjdDogc3RyaW5nXG4pOiBEaXNwbGF5U3R5bGUge1xuXHQvLyBhbGdvcml0aG0gdG8gZGV0ZXJtaW5lIHRoZSBmaWVsZCBmcmFnbWVudCB0byB1c2Vcblx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRpZiAoXG5cdFx0c2VtYW50aWNPYmplY3QgJiZcblx0XHQhb1Byb3BlcnR5LmFubm90YXRpb25zPy5VST8uSXNJbWFnZVVSTCAmJlxuXHRcdCEob1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmVhbVwiKSAmJlxuXHRcdCEob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcyB8fCBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzUGhvbmVOdW1iZXIpXG5cdCkge1xuXHRcdHJldHVybiBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiO1xuXHR9XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBcIlRleHRcIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmVhbVwiKSB7XG5cdFx0cmV0dXJuIFwiRmlsZVwiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5Jc0ltYWdlVVJMKSB7XG5cdFx0cmV0dXJuIFwiQXZhdGFyXCI7XG5cdH1cblx0c3dpdGNoIChvRGF0YUZpZWxkLiRUeXBlKSB7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIjpcblx0XHRcdHJldHVybiBcIkRhdGFQb2ludFwiO1xuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCI6XG5cdFx0XHRpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIikge1xuXHRcdFx0XHRyZXR1cm4gXCJEYXRhUG9pbnRcIjtcblx0XHRcdH0gZWxzZSBpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFR5cGVcIikge1xuXHRcdFx0XHRyZXR1cm4gXCJDb250YWN0XCI7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCI6XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0cmV0dXJuIFwiQnV0dG9uXCI7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFwiOlxuXHRcdFx0cmV0dXJuIFwiTGlua1wiO1xuXHR9XG5cdGlmIChvRGF0YU1vZGVsUGF0aD8udGFyZ2V0RW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uU2VtYW50aWNLZXkpIHtcblx0XHRjb25zdCBhU2VtYW50aWNLZXlzID0gb0RhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5hbm5vdGF0aW9ucy5Db21tb24uU2VtYW50aWNLZXk7XG5cdFx0Y29uc3QgYklzU2VtYW50aWNLZXkgPSAhYVNlbWFudGljS2V5cy5ldmVyeShmdW5jdGlvbihvS2V5KSB7XG5cdFx0XHRyZXR1cm4gb0tleT8uJHRhcmdldD8ubmFtZSAhPT0gb1Byb3BlcnR5Lm5hbWU7XG5cdFx0fSk7XG5cdFx0aWYgKGJJc1NlbWFudGljS2V5ICYmIGZpZWxkRm9ybWF0T3B0aW9ucy5zZW1hbnRpY0tleVN0eWxlKSB7XG5cdFx0XHRpZiAob0RhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3QpIHtcblx0XHRcdFx0Ly8gJiYgZmllbGRGb3JtYXRPcHRpb25zLmhhc0RyYWZ0SW5kaWNhdG9yKSB7XG5cdFx0XHRcdC8vIHdlIHRoZW4gc3RpbGwgY2hlY2sgd2hldGhlciB0aGlzIGlzIGF2YWlsYWJsZSBhdCBkZXNpZ250aW1lIG9uIHRoZSBlbnRpdHlzZXRcblx0XHRcdFx0cmV0dXJuIFwiU2VtYW50aWNLZXlXaXRoRHJhZnRJbmRpY2F0b3JcIjtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmaWVsZEZvcm1hdE9wdGlvbnMuc2VtYW50aWNLZXlTdHlsZSA9PT0gXCJPYmplY3RJZGVudGlmaWVyXCIgPyBcIk9iamVjdElkZW50aWZpZXJcIiA6IFwiTGFiZWxTZW1hbnRpY0tleVwiO1xuXHRcdH1cblx0fVxuXHRpZiAob0RhdGFGaWVsZC5Dcml0aWNhbGl0eSkge1xuXHRcdHJldHVybiBcIk9iamVjdFN0YXR1c1wiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeSkge1xuXHRcdGlmIChmaWVsZEZvcm1hdE9wdGlvbnMubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIkhpZGRlblwiKSB7XG5cdFx0XHRyZXR1cm4gXCJUZXh0XCI7XG5cdFx0fVxuXHRcdHJldHVybiBcIkFtb3VudFdpdGhDdXJyZW5jeVwiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzRW1haWxBZGRyZXNzIHx8IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbXVuaWNhdGlvbj8uSXNQaG9uZU51bWJlcikge1xuXHRcdHJldHVybiBcIkxpbmtcIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5VST8uTXVsdGlMaW5lVGV4dCkge1xuXHRcdHJldHVybiBcIkV4cGFuZGFibGVUZXh0XCI7XG5cdH1cblxuXHRpZiAoaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyhvRGF0YU1vZGVsUGF0aCwgb1Byb3BlcnR5KSkge1xuXHRcdHJldHVybiBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uU2VtYW50aWNPYmplY3QpIHtcblx0XHRyZXR1cm4gXCJMaW5rV3JhcHBlclwiO1xuXHR9XG5cdGlmIChvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhVcmxcIikge1xuXHRcdHJldHVybiBcIkxpbmtcIjtcblx0fVxuXHRpZiAoXG5cdFx0ZmllbGRGb3JtYXRPcHRpb25zLnJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QgJiZcblx0XHQhKGZpZWxkRm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZSA9PT0gXCJWYWx1ZVwiKSAmJlxuXHRcdCFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCAmJlxuXHRcdCFvUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXMgJiZcblx0XHRQcm9wZXJ0eUhlbHBlci5oYXNWYWx1ZUhlbHAob1Byb3BlcnR5KSAmJlxuXHRcdGZpZWxkRm9ybWF0T3B0aW9ucy50ZXh0QWxpZ25Nb2RlID09PSBcIkZvcm1cIlxuXHQpIHtcblx0XHRyZXR1cm4gXCJNZGNGaWVsZFdpdGhWYWx1ZUhlbHBcIjtcblx0fVxuXHRyZXR1cm4gXCJUZXh0XCI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWRpdFN0eWxlID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0b0RhdGFGaWVsZDogYW55LFxuXHRvRmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnNcbik6IEVkaXRTdHlsZSB8IG51bGwge1xuXHQvLyBhbGdvcml0aG0gdG8gZGV0ZXJtaW5lIHRoZSBmaWVsZCBmcmFnbWVudCB0byB1c2Vcblx0aWYgKCFvUHJvcGVydHlQYXRoIHx8IHR5cGVvZiBvUHJvcGVydHlQYXRoID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRpZiAob1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmVhbVwiKSB7XG5cdFx0cmV0dXJuIFwiRmlsZVwiO1xuXHR9XG5cdHN3aXRjaCAob0RhdGFGaWVsZC4kVHlwZSkge1xuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCI6XG5cdFx0XHRpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFR5cGVcIikge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH0gZWxzZSBpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LlZpc3VhbGl6YXRpb24gPT09IFwiVUkuVmlzdWFsaXphdGlvblR5cGUvUmF0aW5nXCIpIHtcblx0XHRcdFx0cmV0dXJuIFwiUmF0aW5nSW5kaWNhdG9yXCI7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50VHlwZVwiOlxuXHRcdFx0aWYgKG9EYXRhRmllbGQ/LlZpc3VhbGl6YXRpb24gPT09IFwiVUkuVmlzdWFsaXphdGlvblR5cGUvUmF0aW5nXCIpIHtcblx0XHRcdFx0cmV0dXJuIFwiUmF0aW5nSW5kaWNhdG9yXCI7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCI6XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFwiOlxuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIjpcblx0XHRcdHJldHVybiBudWxsO1xuXHR9XG5cdGNvbnN0IG9Qcm9wZXJ0eVVuaXQgPSBnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5KG9Qcm9wZXJ0eSk7XG5cdGNvbnN0IG9Qcm9wZXJ0eUN1cnJlbmN5ID0gZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkob1Byb3BlcnR5KTtcblx0aWYgKFxuXHRcdChQcm9wZXJ0eUhlbHBlci5oYXNWYWx1ZUhlbHAob1Byb3BlcnR5KSAmJiBvUHJvcGVydHkudHlwZSAhPT0gXCJFZG0uQm9vbGVhblwiKSB8fFxuXHRcdChvUHJvcGVydHlVbml0ICYmIFByb3BlcnR5SGVscGVyLmhhc1ZhbHVlSGVscChvUHJvcGVydHlVbml0KSkgfHxcblx0XHQob1Byb3BlcnR5Q3VycmVuY3kgJiYgUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eUN1cnJlbmN5KSlcblx0KSB7XG5cdFx0aWYgKG9GaWVsZEZvcm1hdE9wdGlvbnM/Lm1lYXN1cmVEaXNwbGF5TW9kZSA9PT0gXCJIaWRkZW5cIikge1xuXHRcdFx0cmV0dXJuIFwiSW5wdXRcIjtcblx0XHR9XG5cdFx0cmV0dXJuIFwiSW5wdXRXaXRoVmFsdWVIZWxwXCI7XG5cdH1cblx0aWYgKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQ/LnZhbHVlT2YoKSAmJiBvUHJvcGVydHkudHlwZSA9PT0gXCJFZG0uU3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gXCJUZXh0QXJlYVwiO1xuXHR9XG5cdHN3aXRjaCAob1Byb3BlcnR5LnR5cGUpIHtcblx0XHRjYXNlIFwiRWRtLkRhdGVcIjpcblx0XHRcdHJldHVybiBcIkRhdGVQaWNrZXJcIjtcblx0XHRjYXNlIFwiRWRtLlRpbWVcIjpcblx0XHRjYXNlIFwiRWRtLlRpbWVPZkRheVwiOlxuXHRcdFx0cmV0dXJuIFwiVGltZVBpY2tlclwiO1xuXHRcdGNhc2UgXCJFZG0uRGF0ZVRpbWVcIjpcblx0XHRjYXNlIFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCI6XG5cdFx0XHRyZXR1cm4gXCJEYXRlVGltZVBpY2tlclwiO1xuXHRcdGNhc2UgXCJFZG0uQm9vbGVhblwiOlxuXHRcdFx0cmV0dXJuIFwiQ2hlY2tCb3hcIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgfHwgb1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdCkge1xuXHRcdHJldHVybiBcIklucHV0V2l0aFVuaXRcIjtcblx0fVxuXHRyZXR1cm4gXCJJbnB1dFwiO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gZXZhbHVhdGUgdGhlIHZpc2liaWxpdHkgb2YgYSBEYXRhRmllbGQgb3IgRGF0YVBvaW50IGFubm90YXRpb24uXG4gKlxuICogU0FQIEZpb3JpIGVsZW1lbnRzIHdpbGwgZXZhbHVhdGUgZWl0aGVyIHRoZSBVSS5IaWRkZW4gYW5ub3RhdGlvbiBkZWZpbmVkIG9uIHRoZSBhbm5vdGF0aW9uIGl0c2VsZiBvciBvbiB0aGUgdGFyZ2V0IHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7RGF0YU1vZGVsT2JqZWN0UGF0aH0gZGF0YUZpZWxkTW9kZWxQYXRoIFRoZSBtZXRhcGF0aCByZWZlcnJpbmcgdG8gdGhlIGFubm90YXRpb24gd2UgYXJlIGV2YWx1YXRpbmcuXG4gKiBAcGFyYW0ge0ZpZWxkRm9ybWF0T3B0aW9uc30gW2Zvcm1hdE9wdGlvbnNdIEZvcm1hdE9wdGlvbnMgb3B0aW9uYWwuXG4gKiBAcmV0dXJucyB7QmluZGluZ0V4cHJlc3Npb248c3RyaW5nPn0gQW4gZXhwcmVzc2lvbiB0aGF0IHlvdSBjYW4gYmluZCB0byB0aGUgVUkuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWaXNpYmxlRXhwcmVzc2lvbiA9IGZ1bmN0aW9uKFxuXHRkYXRhRmllbGRNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZvcm1hdE9wdGlvbnM/OiBGaWVsZEZvcm1hdE9wdGlvbnNcbik6IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCB0YXJnZXRPYmplY3Q6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXMgPSBkYXRhRmllbGRNb2RlbFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRsZXQgcHJvcGVydHlWYWx1ZTtcblx0aWYgKHRhcmdldE9iamVjdCkge1xuXHRcdHN3aXRjaCAodGFyZ2V0T2JqZWN0LiRUeXBlKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZDpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aFVybDpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoQWN0aW9uOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlOlxuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlID0gdGFyZ2V0T2JqZWN0LlZhbHVlLiR0YXJnZXQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBbm5vdGF0aW9uOlxuXHRcdFx0XHQvLyBpZiBpdCBpcyBhIERhdGFGaWVsZEZvckFubm90YXRpb24gcG9pbnRpbmcgdG8gYSBEYXRhUG9pbnQgd2UgbG9vayBhdCB0aGUgZGF0YVBvaW50J3MgdmFsdWVcblx0XHRcdFx0aWYgKHRhcmdldE9iamVjdD8uVGFyZ2V0Py4kdGFyZ2V0Py4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZSkge1xuXHRcdFx0XHRcdHByb3BlcnR5VmFsdWUgPSB0YXJnZXRPYmplY3QuVGFyZ2V0LiR0YXJnZXQ/LlZhbHVlLiR0YXJnZXQ7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1mYWxsdGhyb3VnaFxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbjpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHByb3BlcnR5VmFsdWUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdGNvbnN0IGlzQW5hbHl0aWNhbEdyb3VwSGVhZGVyRXhwYW5kZWQgPSBmb3JtYXRPcHRpb25zPy5pc0FuYWx5dGljcyA/IFVJLklzRXhwYW5kZWQgOiBjb25zdGFudChmYWxzZSk7XG5cdGNvbnN0IGlzQW5hbHl0aWNhbExlYWYgPSBmb3JtYXRPcHRpb25zPy5pc0FuYWx5dGljcyA/IGVxdWFsKFVJLk5vZGVMZXZlbCwgMCkgOiBjb25zdGFudChmYWxzZSk7XG5cblx0Ly8gQSBkYXRhIGZpZWxkIGlzIHZpc2libGUgaWY6XG5cdC8vIC0gdGhlIFVJLkhpZGRlbiBleHByZXNzaW9uIGluIHRoZSBvcmlnaW5hbCBhbm5vdGF0aW9uIGRvZXMgbm90IGV2YWx1YXRlIHRvICd0cnVlJ1xuXHQvLyAtIHRoZSBVSS5IaWRkZW4gZXhwcmVzc2lvbiBpbiB0aGUgdGFyZ2V0IHByb3BlcnR5IGRvZXMgbm90IGV2YWx1YXRlIHRvICd0cnVlJ1xuXHQvLyAtIGluIGNhc2Ugb2YgQW5hbHl0aWNzIGl0J3Mgbm90IHZpc2libGUgZm9yIGFuIGV4cGFuZGVkIEdyb3VwSGVhZGVyXG5cdHJldHVybiBjb21waWxlQmluZGluZyhcblx0XHRhbmQoXG5cdFx0XHQuLi5bXG5cdFx0XHRcdG5vdChlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbih0YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5VST8uSGlkZGVuKSwgdHJ1ZSkpLFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0ISFwcm9wZXJ0eVZhbHVlLFxuXHRcdFx0XHRcdHByb3BlcnR5VmFsdWUgJiYgbm90KGVxdWFsKGFubm90YXRpb25FeHByZXNzaW9uKHByb3BlcnR5VmFsdWUuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4pLCB0cnVlKSksXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRvcihub3QoaXNBbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCksIGlzQW5hbHl0aWNhbExlYWYpXG5cdFx0XHRdXG5cdFx0KVxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldElucHV0RGVzY3JpcHRpb24gPSBmdW5jdGlvbihcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRkZXNjcmlwdGlvbkJpbmRpbmdFeHByZXNzaW9uOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+XG4pOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3Qgb1Byb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdGNvbnN0IHVuaXRQcm9wZXJ0eSA9IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5KG9Qcm9wZXJ0eSkgfHwgZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eShvUHJvcGVydHkpO1xuXHRpZiAoIXVuaXRQcm9wZXJ0eSkge1xuXHRcdHJldHVybiBjb21waWxlQmluZGluZyhcIlwiKTtcblx0fVxuXHRjb25zdCBlZGl0YWJsZUV4cHJlc3Npb24gPSBhbmQobm90KGlzUmVhZE9ubHlFeHByZXNzaW9uKHVuaXRQcm9wZXJ0eSkpLCBub3QoUHJvcGVydHlIZWxwZXIuaXNDb21wdXRlZCh1bml0UHJvcGVydHkpKSk7XG5cdHJldHVybiBjb21waWxlQmluZGluZyhpZkVsc2UoZWRpdGFibGVFeHByZXNzaW9uLCBcIlwiLCBkZXNjcmlwdGlvbkJpbmRpbmdFeHByZXNzaW9uKSk7XG59O1xuXG5leHBvcnQgY29uc3QgUVZUZXh0QmluZGluZyA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRvUHJvcGVydHlWYWx1ZURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLFxuXHRhc09iamVjdDogYm9vbGVhbiA9IGZhbHNlXG4pIHtcblx0bGV0IHJldHVyblZhbHVlOiBhbnkgPSBnZXRWYWx1ZUJpbmRpbmcob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCwgZmllbGRGb3JtYXRPcHRpb25zLCBhc09iamVjdCk7XG5cdGlmIChyZXR1cm5WYWx1ZSA9PT0gXCJcIikge1xuXHRcdHJldHVyblZhbHVlID0gZ2V0VGV4dEJpbmRpbmcob1Byb3BlcnR5VmFsdWVEYXRhTW9kZWxPYmplY3RQYXRoLCBmaWVsZEZvcm1hdE9wdGlvbnMsIGFzT2JqZWN0KTtcblx0fVxuXHRyZXR1cm4gcmV0dXJuVmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UXVpY2tWaWV3VHlwZSA9IGZ1bmN0aW9uKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcge1xuXHRjb25zdCB0YXJnZXRPYmplY3QgPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0aWYgKHRhcmdldE9iamVjdD8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzRW1haWxBZGRyZXNzKSB7XG5cdFx0cmV0dXJuIFwiZW1haWxcIjtcblx0fVxuXHRpZiAodGFyZ2V0T2JqZWN0Py4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29tbXVuaWNhdGlvbj8uSXNQaG9uZU51bWJlcikge1xuXHRcdHJldHVybiBcInBob25lXCI7XG5cdH1cblx0cmV0dXJuIFwidGV4dFwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERhdGFQb2ludFN0eWxlID0gZnVuY3Rpb24ob0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBvRGF0YVBvaW50ID0gb0RhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdDtcblx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IG9EYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3QuVmFsdWUuJHRhcmdldDtcblx0aWYgKG9EYXRhUG9pbnQuVmlzdWFsaXphdGlvbikge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0aWYgKGlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMob0RhdGFNb2RlbFBhdGgsIG9Qcm9wZXJ0eSkpIHtcblx0XHRyZXR1cm4gXCJMaW5rV2l0aFF1aWNrVmlld0Zvcm1cIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0KSB7XG5cdFx0cmV0dXJuIFwiTGlua1dyYXBwZXJcIjtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbWFudGljT2JqZWN0RXhwcmVzc2lvblRvUmVzb2x2ZSA9IGZ1bmN0aW9uKG9Bbm5vdGF0aW9uczogYW55KTogYW55W10ge1xuXHRjb25zdCBhU2VtT2JqRXhwclRvUmVzb2x2ZTogYW55W10gPSBbXTtcblx0aWYgKG9Bbm5vdGF0aW9ucykge1xuXHRcdGNvbnN0IGFTZW1PYmprZXlzID0gT2JqZWN0LmtleXMob0Fubm90YXRpb25zKS5maWx0ZXIoZnVuY3Rpb24oZWxlbWVudCkge1xuXHRcdFx0cmV0dXJuIGVsZW1lbnQgPT09IFwiU2VtYW50aWNPYmplY3RcIiB8fCBlbGVtZW50LnN0YXJ0c1dpdGgoXCJTZW1hbnRpY09iamVjdCNcIik7XG5cdFx0fSk7XG5cdFx0Zm9yIChsZXQgaVNlbU9iakNvdW50ID0gMDsgaVNlbU9iakNvdW50IDwgYVNlbU9iamtleXMubGVuZ3RoOyBpU2VtT2JqQ291bnQrKykge1xuXHRcdFx0Y29uc3Qgc1NlbU9iakV4cHJlc3Npb24gPSBjb21waWxlQmluZGluZyhhbm5vdGF0aW9uRXhwcmVzc2lvbihvQW5ub3RhdGlvbnNbYVNlbU9iamtleXNbaVNlbU9iakNvdW50XV0pKTtcblx0XHRcdGFTZW1PYmpFeHByVG9SZXNvbHZlLnB1c2goe1xuXHRcdFx0XHRrZXk6IHNTZW1PYmpFeHByZXNzaW9uPy5pbmRleE9mKFwie1wiKSA9PT0gLTEgPyBzU2VtT2JqRXhwcmVzc2lvbiA6IHNTZW1PYmpFeHByZXNzaW9uPy5zcGxpdChcIntcIilbMV0uc3BsaXQoXCJ9XCIpWzBdLFxuXHRcdFx0XHR2YWx1ZTogc1NlbU9iakV4cHJlc3Npb25cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYVNlbU9iakV4cHJUb1Jlc29sdmU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VtYW50aWNPYmplY3RzID0gZnVuY3Rpb24oYVNlbU9iakV4cHJUb1Jlc29sdmU6IGFueVtdKTogYW55IHtcblx0aWYgKGFTZW1PYmpFeHByVG9SZXNvbHZlLmxlbmd0aCA+IDApIHtcblx0XHRsZXQgc0N1c3RvbURhdGFLZXk6IHN0cmluZyA9IFwiXCI7XG5cdFx0bGV0IHNDdXN0b21EYXRhVmFsdWU6IGFueSA9IFwiXCI7XG5cdFx0Y29uc3QgYVNlbU9iakN1c3RvbURhdGE6IGFueVtdID0gW107XG5cdFx0Zm9yIChsZXQgaVNlbU9iakNvdW50ID0gMDsgaVNlbU9iakNvdW50IDwgYVNlbU9iakV4cHJUb1Jlc29sdmUubGVuZ3RoOyBpU2VtT2JqQ291bnQrKykge1xuXHRcdFx0c0N1c3RvbURhdGFLZXkgPSBhU2VtT2JqRXhwclRvUmVzb2x2ZVtpU2VtT2JqQ291bnRdLmtleTtcblx0XHRcdHNDdXN0b21EYXRhVmFsdWUgPSBjb21waWxlQmluZGluZyhhbm5vdGF0aW9uRXhwcmVzc2lvbihhU2VtT2JqRXhwclRvUmVzb2x2ZVtpU2VtT2JqQ291bnRdLnZhbHVlKSk7XG5cdFx0XHRhU2VtT2JqQ3VzdG9tRGF0YS5wdXNoKHtcblx0XHRcdFx0a2V5OiBzQ3VzdG9tRGF0YUtleSxcblx0XHRcdFx0dmFsdWU6IHNDdXN0b21EYXRhVmFsdWVcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRjb25zdCBvU2VtYW50aWNPYmplY3RzTW9kZWw6IGFueSA9IG5ldyBKU09OTW9kZWwoYVNlbU9iakN1c3RvbURhdGEpO1xuXHRcdG9TZW1hbnRpY09iamVjdHNNb2RlbC4kJHZhbHVlQXNQcm9taXNlID0gdHJ1ZTtcblx0XHRjb25zdCBvU2VtT2JqQmluZGluZ0NvbnRleHQ6IGFueSA9IG9TZW1hbnRpY09iamVjdHNNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIik7XG5cdFx0cmV0dXJuIG9TZW1PYmpCaW5kaW5nQ29udGV4dDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gbmV3IEpTT05Nb2RlbChbXSkuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpO1xuXHR9XG59O1xuIl19
643
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpZWxkVGVtcGxhdGluZy50cyJdLCJuYW1lcyI6WyJhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uIiwiYmluZGluZ0V4cHJlc3Npb24iLCJmdWxsQ29udGV4dFBhdGgiLCJ0cmFuc2Zvcm1SZWN1cnNpdmVseSIsImV4cHJlc3Npb24iLCJvdXRFeHByZXNzaW9uIiwibW9kZWxOYW1lIiwidW5kZWZpbmVkIiwib1Byb3BlcnR5RGF0YU1vZGVsUGF0aCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwicGF0aCIsImdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50IiwicHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiIsImZpZWxkRm9ybWF0T3B0aW9ucyIsInRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUiLCJkaXNwbGF5TW9kZSIsIm9Qcm9wZXJ0eURlZmluaXRpb24iLCJ0YXJnZXRPYmplY3QiLCJ0eXBlIiwiJHRhcmdldCIsInRhcmdldERpc3BsYXlNb2RlIiwiZ2V0RGlzcGxheU1vZGUiLCJjb21tb25UZXh0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwicmVsYXRpdmVMb2NhdGlvbiIsImdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIiwiY29udGV4dExvY2F0aW9uIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJtYXAiLCJucCIsIm5hbWUiLCJmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJ2YWx1ZUZvcm1hdHRlcnMiLCJmb3JtYXRXaXRoQnJhY2tldHMiLCJmb3JtYXRWYWx1ZVJlY3Vyc2l2ZWx5IiwiZ2V0VGV4dEJpbmRpbmciLCJvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwiYXNPYmplY3QiLCIkVHlwZSIsImZpZWxkVmFsdWUiLCJWYWx1ZSIsImNvbXBpbGVCaW5kaW5nIiwiY29uc3RhbnQiLCJpc1BhdGhFeHByZXNzaW9uIiwib05hdlBhdGgiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJ0YXJnZXQiLCJ2aXNpdGVkT2JqZWN0cyIsImZvckVhY2giLCJvTmF2T2JqIiwiX3R5cGUiLCJwdXNoIiwib0JpbmRpbmdFeHByZXNzaW9uIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsIm9UYXJnZXRCaW5kaW5nIiwiTWVhc3VyZXMiLCJVbml0IiwiSVNPQ3VycmVuY3kiLCJnZXRCaW5kaW5nV2l0aFVuaXRPckN1cnJlbmN5IiwibWVhc3VyZURpc3BsYXlNb2RlIiwiZm9ybWF0T3B0aW9ucyIsInNob3dNZWFzdXJlIiwiZ2V0VmFsdWVCaW5kaW5nIiwiaWdub3JlVW5pdCIsImlnbm9yZUZvcm1hdHRpbmciLCJiaW5kaW5nUGFyYW1ldGVycyIsInRhcmdldFR5cGVBbnkiLCJzaG93TWVhc3VyZU9ubHkiLCJpc1Byb3BlcnR5IiwiQ29tbXVuaWNhdGlvbiIsIklzRW1haWxBZGRyZXNzIiwib1Byb3BlcnR5VW5pdCIsImdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkiLCJvUHJvcGVydHlDdXJyZW5jeSIsImdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiaGFzVmFsdWVIZWxwIiwic2hvd051bWJlciIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsImNvbnN0cmFpbnRzIiwicGFyYW1ldGVycyIsInRhcmdldFR5cGUiLCJnZXRVbml0QmluZGluZyIsInVuaXQiLCJnZXRBc3NvY2lhdGVkVGV4dEJpbmRpbmciLCJ0ZXh0UHJvcGVydHlQYXRoIiwiZ2V0QXNzb2NpYXRlZFRleHRQcm9wZXJ0eVBhdGgiLCJvVGV4dFByb3BlcnR5UGF0aCIsIm9WYWx1ZUJpbmRpbmciLCIkJG5vUGF0Y2giLCJpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzIiwib0RhdGFNb2RlbFBhdGgiLCJvUHJvcGVydHkiLCJhTmF2aWdhdGlvblByb3BlcnRpZXMiLCJiSXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyIsIm9OYXZQcm9wIiwicmVmZXJlbnRpYWxDb25zdHJhaW50IiwibGVuZ3RoIiwib1JlZkNvbnN0cmFpbnQiLCJzb3VyY2VQcm9wZXJ0eSIsIlVJIiwiUXVpY2tWaWV3RmFjZXRzIiwiaXNSZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0RW5hYmxlZCIsIm9Qcm9wZXJ0eVBhdGgiLCJQcm9wZXJ0eUhlbHBlciIsInRleHRBbGlnbk1vZGUiLCJnZXREaXNwbGF5U3R5bGUiLCJvRGF0YUZpZWxkIiwic2VtYW50aWNPYmplY3QiLCJJc0ltYWdlVVJMIiwiSXNQaG9uZU51bWJlciIsIlRhcmdldCIsIlNlbWFudGljS2V5IiwiYVNlbWFudGljS2V5cyIsImJJc1NlbWFudGljS2V5IiwiZXZlcnkiLCJvS2V5Iiwic2VtYW50aWNLZXlTdHlsZSIsInRhcmdldEVudGl0eVNldCIsIkRyYWZ0Um9vdCIsIkNyaXRpY2FsaXR5IiwiU3RyaW5nIiwiaXNDdXJyZW5jeUFsaWduZWQiLCJNdWx0aUxpbmVUZXh0IiwiU2VtYW50aWNPYmplY3QiLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0IiwiZ2V0RWRpdFN0eWxlIiwib0ZpZWxkRm9ybWF0T3B0aW9ucyIsIlZpc3VhbGl6YXRpb24iLCJ2YWx1ZU9mIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJkYXRhRmllbGRNb2RlbFBhdGgiLCJwcm9wZXJ0eVZhbHVlIiwiaXNBbmFseXRpY2FsR3JvdXBIZWFkZXJFeHBhbmRlZCIsImlzQW5hbHl0aWNzIiwiSXNFeHBhbmRlZCIsImlzQW5hbHl0aWNhbExlYWYiLCJlcXVhbCIsIk5vZGVMZXZlbCIsImFuZCIsIm5vdCIsIkhpZGRlbiIsImlmRWxzZSIsIm9yIiwiZ2V0SW5wdXREZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uQmluZGluZ0V4cHJlc3Npb24iLCJ1bml0UHJvcGVydHkiLCJlZGl0YWJsZUV4cHJlc3Npb24iLCJpc1JlYWRPbmx5RXhwcmVzc2lvbiIsImlzQ29tcHV0ZWQiLCJRVlRleHRCaW5kaW5nIiwib1Byb3BlcnR5VmFsdWVEYXRhTW9kZWxPYmplY3RQYXRoIiwicmV0dXJuVmFsdWUiLCJnZXRRdWlja1ZpZXdUeXBlIiwiZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlIiwib0Fubm90YXRpb25zIiwiYVNlbU9iakV4cHJUb1Jlc29sdmUiLCJhU2VtT2Jqa2V5cyIsIk9iamVjdCIsImtleXMiLCJmaWx0ZXIiLCJlbGVtZW50Iiwic3RhcnRzV2l0aCIsImlTZW1PYmpDb3VudCIsInNTZW1PYmpFeHByZXNzaW9uIiwia2V5IiwiaW5kZXhPZiIsInNwbGl0IiwidmFsdWUiLCJnZXRTZW1hbnRpY09iamVjdHMiLCJzQ3VzdG9tRGF0YUtleSIsInNDdXN0b21EYXRhVmFsdWUiLCJhU2VtT2JqQ3VzdG9tRGF0YSIsIm9TZW1hbnRpY09iamVjdHNNb2RlbCIsIkpTT05Nb2RlbCIsIiQkdmFsdWVBc1Byb21pc2UiLCJvU2VtT2JqQmluZGluZ0NvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1BLHFDQUFxQyxHQUFHLFVBQ3BEQyxpQkFEb0QsRUFFcERDLGVBRm9ELEVBR2xDO0FBQ2xCLFdBQU9DLG9CQUFvQixDQUFDRixpQkFBRCxFQUFvQixTQUFwQixFQUErQixVQUFDRyxVQUFELEVBQWtEO0FBQzNHLFVBQUlDLGFBQThCLEdBQUdELFVBQXJDOztBQUNBLFVBQUlBLFVBQVUsQ0FBQ0UsU0FBWCxLQUF5QkMsU0FBN0IsRUFBd0M7QUFDdkM7QUFDQSxZQUFNQyxzQkFBc0IsR0FBR0Msb0JBQW9CLENBQUNQLGVBQUQsRUFBa0JFLFVBQVUsQ0FBQ00sSUFBN0IsQ0FBbkQ7QUFDQUwsUUFBQUEsYUFBYSxHQUFHTSw2QkFBNkIsQ0FBQ0gsc0JBQUQsRUFBeUJKLFVBQXpCLENBQTdDO0FBQ0E7O0FBQ0QsYUFB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QXBCLENBQW1DRSxHQUFwRDtBQUNBTSxRQUFBQSxnQkFBZ0IsR0FBR2xJLGNBQWMsQ0FBQ1gsb0JBQW9CLENBQUM4SCxvQkFBb0IsQ0FBQ08sWUFBRCxDQUFwQixDQUFtQ0ssS0FBcEMsQ0FBckIsQ0FBakM7QUFDQUksUUFBQUEsaUJBQWlCLENBQUN4SCxJQUFsQixDQUF1QjtBQUN0QmlILFVBQUFBLEdBQUcsRUFBRUssY0FEaUI7QUFFdEJGLFVBQUFBLEtBQUssRUFBRUc7QUFGZSxTQUF2QjtBQUlBOztBQUNELFVBQU1FLHFCQUEwQixHQUFHLElBQUlDLFNBQUosQ0FBY0YsaUJBQWQsQ0FBbkM7QUFDQUMsTUFBQUEscUJBQXFCLENBQUNFLGdCQUF0QixHQUF5QyxJQUF6QztBQUNBLFVBQU1DLHFCQUEwQixHQUFHSCxxQkFBcUIsQ0FBQ0ksb0JBQXRCLENBQTJDLEdBQTNDLENBQW5DO0FBQ0EsYUFBT0QscUJBQVA7QUFDQSxLQWhCRCxNQWdCTztBQUNOLGFBQU8sSUFBSUYsU0FBSixDQUFjLEVBQWQsRUFBa0JHLG9CQUFsQixDQUF1QyxHQUF2QyxDQUFQO0FBQ0E7QUFDRCxHQXBCTSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Z2V0RGlzcGxheU1vZGUsXG5cdFByb3BlcnR5T3JQYXRoLFxuXHREaXNwbGF5TW9kZSxcblx0Z2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSxcblx0Zm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7XG5cdERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGVuaGFuY2VEYXRhTW9kZWxQYXRoLFxuXHRnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbixcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQge1xuXHRFeHByZXNzaW9uLFxuXHRhbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0Zm9ybWF0UmVzdWx0LFxuXHR0cmFuc2Zvcm1SZWN1cnNpdmVseSxcblx0QmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uLFxuXHRCaW5kaW5nRXhwcmVzc2lvbixcblx0Y29tcGlsZUJpbmRpbmcsXG5cdGNvbnN0YW50LFxuXHRiaW5kaW5nRXhwcmVzc2lvbixcblx0YW5kLFxuXHRpZkVsc2UsXG5cdG5vdCxcblx0Q29tcGxleFR5cGVFeHByZXNzaW9uLFxuXHRlcXVhbCxcblx0b3Jcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7XG5cdGlzUGF0aEV4cHJlc3Npb24sXG5cdGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHksXG5cdGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5LFxuXHRpc1Byb3BlcnR5LFxuXHRoYXNWYWx1ZUhlbHAsXG5cdGdldEFzc29jaWF0ZWRUZXh0UHJvcGVydHlQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgdmFsdWVGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL1ZhbHVlRm9ybWF0dGVyXCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHsgaXNSZWFkT25seUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9GaWVsZENvbnRyb2xIZWxwZXJcIjtcbmltcG9ydCB7IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsIERhdGFGaWVsZFdpdGhVcmwsIERhdGFQb2ludFR5cGVUeXBlcywgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcblxuZXhwb3J0IHR5cGUgRmllbGRGb3JtYXRPcHRpb25zID0gUGFydGlhbDx7XG5cdHZhbHVlRm9ybWF0OiBTdHJpbmc7XG5cdHRleHRBbGlnbk1vZGU6IFN0cmluZztcblx0ZGlzcGxheU1vZGU6IERpc3BsYXlNb2RlO1xuXHRtZWFzdXJlRGlzcGxheU1vZGU6IFN0cmluZztcblx0dGV4dExpbmVzRWRpdDogU3RyaW5nO1xuXHR0ZXh0TWF4TGluZXM6IFN0cmluZztcblx0c2hvd0VtcHR5SW5kaWNhdG9yOiBib29sZWFuO1xuXHRzZW1hbnRpY0tleVN0eWxlOiBTdHJpbmc7XG5cdHNob3dJY29uVXJsOiBib29sZWFuO1xuXHRpc0FuYWx5dGljczogYm9vbGVhbjtcblx0aGFzRHJhZnRJbmRpY2F0b3I6IGJvb2xlYW47XG5cdHNlbWFudGlja2V5czogc3RyaW5nW107XG5cdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IGJvb2xlYW47XG5cdGlzQ3VycmVuY3lBbGlnbmVkOiBib29sZWFuO1xufT47XG5cbmV4cG9ydCB0eXBlIEVkaXRTdHlsZSA9XG5cdHwgXCJJbnB1dFdpdGhWYWx1ZUhlbHBcIlxuXHR8IFwiVGV4dEFyZWFcIlxuXHR8IFwiRmlsZVwiXG5cdHwgXCJEYXRlUGlja2VyXCJcblx0fCBcIlRpbWVQaWNrZXJcIlxuXHR8IFwiRGF0ZVRpbWVQaWNrZXJcIlxuXHR8IFwiQ2hlY2tCb3hcIlxuXHR8IFwiSW5wdXRXaXRoVW5pdFwiXG5cdHwgXCJJbnB1dFwiXG5cdHwgXCJSYXRpbmdJbmRpY2F0b3JcIjtcblxuZXhwb3J0IHR5cGUgRGlzcGxheVN0eWxlID1cblx0fCBcIlRleHRcIlxuXHR8IFwiTWRjRmllbGRXaXRoVmFsdWVIZWxwXCJcblx0fCBcIkF2YXRhclwiXG5cdHwgXCJGaWxlXCJcblx0fCBcIkRhdGFQb2ludFwiXG5cdHwgXCJDb250YWN0XCJcblx0fCBcIkJ1dHRvblwiXG5cdHwgXCJMaW5rXCJcblx0fCBcIk9iamVjdFN0YXR1c1wiXG5cdHwgXCJBbW91bnRXaXRoQ3VycmVuY3lcIlxuXHR8IFwiU2VtYW50aWNLZXlXaXRoRHJhZnRJbmRpY2F0b3JcIlxuXHR8IFwiT2JqZWN0SWRlbnRpZmllclwiXG5cdHwgXCJMYWJlbFNlbWFudGljS2V5XCJcblx0fCBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiXG5cdHwgXCJMaW5rV3JhcHBlclwiXG5cdHwgXCJFeHBhbmRhYmxlVGV4dFwiO1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGFkZCB0aGUgdGV4dCBhcnJhbmdlbWVudCB0byBhIGJpbmRpbmcgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gYmluZGluZ0V4cHJlc3Npb24gVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBiZSBlbmhhbmNlZFxuICogQHBhcmFtIGZ1bGxDb250ZXh0UGF0aCBUaGUgY3VycmVudCBjb250ZXh0IHBhdGggd2UncmUgb24gKHRvIHByb3Blcmx5IHJlc29sdmUgdGhlIHRleHQgYXJyYW5nZW1lbnQgcHJvcGVydGllcylcbiAqIEByZXR1cm5zIEFuIHVwZGF0ZWQgZXhwcmVzc2lvbiBjb250YWluaW5nIHRoZSB0ZXh0IGFycmFuZ2VtZW50IGJpbmRpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uID0gZnVuY3Rpb24oXG5cdGJpbmRpbmdFeHByZXNzaW9uOiBFeHByZXNzaW9uPGFueT4sXG5cdGZ1bGxDb250ZXh0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuKTogRXhwcmVzc2lvbjxhbnk+IHtcblx0cmV0dXJuIHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGJpbmRpbmdFeHByZXNzaW9uLCBcIkJpbmRpbmdcIiwgKGV4cHJlc3Npb246IEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxhbnk+KSA9PiB7XG5cdFx0bGV0IG91dEV4cHJlc3Npb246IEV4cHJlc3Npb248YW55PiA9IGV4cHJlc3Npb247XG5cdFx0aWYgKGV4cHJlc3Npb24ubW9kZWxOYW1lID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIEluIGNhc2Ugb2YgZGVmYXVsdCBtb2RlbCB3ZSB0aGVuIG5lZWQgdG8gcmVzb2x2ZSB0aGUgdGV4dCBhcnJhbmdlbWVudCBwcm9wZXJ0eVxuXHRcdFx0Y29uc3Qgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKGZ1bGxDb250ZXh0UGF0aCwgZXhwcmVzc2lvbi5wYXRoKTtcblx0XHRcdG91dEV4cHJlc3Npb24gPSBnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudChvUHJvcGVydHlEYXRhTW9kZWxQYXRoLCBleHByZXNzaW9uKTtcblx0XHR9XG5cdFx0cmV0dXJuIG91dEV4cHJlc3Npb247XG5cdH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50ID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb246IEV4cHJlc3Npb248c3RyaW5nPixcblx0ZmllbGRGb3JtYXRPcHRpb25zPzogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCB0YXJnZXREaXNwbGF5TW9kZU92ZXJyaWRlID0gZmllbGRGb3JtYXRPcHRpb25zPy5kaXNwbGF5TW9kZTtcblx0bGV0IG91dEV4cHJlc3Npb24gPSBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uO1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID1cblx0XHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiXG5cdFx0XHQ/IChvUHJvcGVydHlEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdC4kdGFyZ2V0IGFzIFByb3BlcnR5KVxuXHRcdFx0OiAob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpO1xuXHRjb25zdCB0YXJnZXREaXNwbGF5TW9kZSA9IHRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUgfHwgZ2V0RGlzcGxheU1vZGUob1Byb3BlcnR5RGVmaW5pdGlvbiwgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cdGNvbnN0IGNvbW1vblRleHQgPSBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5Db21tb24/LlRleHQ7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbixcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzXG5cdCkubWFwKG5wID0+IG5wLm5hbWUpO1xuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0aWYgKHRhcmdldERpc3BsYXlNb2RlICE9PSBcIlZhbHVlXCIgJiYgY29tbW9uVGV4dCkge1xuXHRcdHN3aXRjaCAodGFyZ2V0RGlzcGxheU1vZGUpIHtcblx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRvdXRFeHByZXNzaW9uID0gYW5ub3RhdGlvbkV4cHJlc3Npb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgRXhwcmVzc2lvbjxzdHJpbmc+O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblZhbHVlXCI6XG5cdFx0XHRcdG91dEV4cHJlc3Npb24gPSBmb3JtYXRSZXN1bHQoXG5cdFx0XHRcdFx0W2Fubm90YXRpb25FeHByZXNzaW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEV4cHJlc3Npb248c3RyaW5nPiwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbl0sXG5cdFx0XHRcdFx0dmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFdpdGhCcmFja2V0c1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJWYWx1ZURlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdG91dEV4cHJlc3Npb24gPSBmb3JtYXRSZXN1bHQoXG5cdFx0XHRcdFx0W3Byb3BlcnR5QmluZGluZ0V4cHJlc3Npb24sIGFubm90YXRpb25FeHByZXNzaW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEV4cHJlc3Npb248c3RyaW5nPl0sXG5cdFx0XHRcdFx0dmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFdpdGhCcmFja2V0c1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblx0cmV0dXJuIG91dEV4cHJlc3Npb247XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VmFsdWVSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKGJpbmRpbmdFeHByZXNzaW9uOiBFeHByZXNzaW9uPGFueT4sIGZ1bGxDb250ZXh0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IEV4cHJlc3Npb248YW55PiB7XG5cdHJldHVybiB0cmFuc2Zvcm1SZWN1cnNpdmVseShiaW5kaW5nRXhwcmVzc2lvbiwgXCJCaW5kaW5nXCIsIChleHByZXNzaW9uOiBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248YW55PikgPT4ge1xuXHRcdGxldCBvdXRFeHByZXNzaW9uOiBFeHByZXNzaW9uPGFueT4gPSBleHByZXNzaW9uO1xuXHRcdGlmIChleHByZXNzaW9uLm1vZGVsTmFtZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBJbiBjYXNlIG9mIGRlZmF1bHQgbW9kZWwgd2UgdGhlbiBuZWVkIHRvIHJlc29sdmUgdGhlIHRleHQgYXJyYW5nZW1lbnQgcHJvcGVydHlcblx0XHRcdGNvbnN0IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChmdWxsQ29udGV4dFBhdGgsIGV4cHJlc3Npb24ucGF0aCk7XG5cdFx0XHRvdXRFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCwgZXhwcmVzc2lvbik7XG5cdFx0fVxuXHRcdHJldHVybiBvdXRFeHByZXNzaW9uO1xuXHR9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0QmluZGluZyA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRmaWVsZEZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucyxcblx0YXNPYmplY3Q6IGJvb2xlYW4gPSBmYWxzZVxuKTogRXhwcmVzc2lvbjxzdHJpbmc+IHwgQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGlmIChcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkXCIgfHxcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50VHlwZVwiIHx8XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFwiIHx8XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhVcmxcIlxuXHQpIHtcblx0XHQvLyBJZiB0aGVyZSBpcyBubyByZXNvbHZlZCBwcm9wZXJ0eSwgdGhlIHZhbHVlIGlzIHJldHVybmVkIGFzIGEgY29uc3RhbnRcblx0XHRjb25zdCBmaWVsZFZhbHVlID0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuVmFsdWUgfHwgXCJcIjtcblx0XHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoY29uc3RhbnQoZmllbGRWYWx1ZSkpO1xuXHR9XG5cdGlmIChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSAmJiBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC4kdGFyZ2V0KSB7XG5cdFx0Y29uc3Qgb05hdlBhdGggPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucGF0aCwgdHJ1ZSk7XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgPSBvTmF2UGF0aC50YXJnZXQ7XG5cdFx0b05hdlBhdGgudmlzaXRlZE9iamVjdHMuZm9yRWFjaCgob05hdk9iajogYW55KSA9PiB7XG5cdFx0XHRpZiAob05hdk9iaj8uX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIpIHtcblx0XHRcdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKG9OYXZPYmopO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IG9CaW5kaW5nRXhwcmVzc2lvbiA9IGJpbmRpbmdFeHByZXNzaW9uKGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCkpO1xuXHRsZXQgb1RhcmdldEJpbmRpbmc7XG5cdGlmIChcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0IHx8XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3lcblx0KSB7XG5cdFx0b1RhcmdldEJpbmRpbmcgPSBnZXRCaW5kaW5nV2l0aFVuaXRPckN1cnJlbmN5KG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIG9CaW5kaW5nRXhwcmVzc2lvbik7XG5cdFx0aWYgKGZpZWxkRm9ybWF0T3B0aW9ucz8ubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIkhpZGRlblwiKSB7XG5cdFx0XHQvLyBUT0RPOiBSZWZhY3RvciBvbmNlIHR5cGVzIGFyZSBsZXNzIGdlbmVyaWMgaGVyZVxuXHRcdFx0KG9UYXJnZXRCaW5kaW5nIGFzIENvbXBsZXhUeXBlRXhwcmVzc2lvbjxTdHJpbmc+KS5mb3JtYXRPcHRpb25zID0ge1xuXHRcdFx0XHQuLi4ob1RhcmdldEJpbmRpbmcgYXMgQ29tcGxleFR5cGVFeHByZXNzaW9uPFN0cmluZz4pLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRcdHNob3dNZWFzdXJlOiBmYWxzZVxuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0b1RhcmdldEJpbmRpbmcgPSBnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBvQmluZGluZ0V4cHJlc3Npb24sIGZpZWxkRm9ybWF0T3B0aW9ucyk7XG5cdH1cblx0aWYgKGFzT2JqZWN0KSB7XG5cdFx0cmV0dXJuIG9UYXJnZXRCaW5kaW5nO1xuXHR9XG5cdC8vIFdlIGRvbid0IGluY2x1ZGUgJCRub3BhdGNoIGFuZCBwYXJzZUtlZXBFbXB0eVN0cmluZyBhcyB0aGV5IG1ha2Ugbm8gc2Vuc2UgaW4gdGhlIHRleHQgYmluZGluZyBjYXNlXG5cdHJldHVybiBjb21waWxlQmluZGluZyhvVGFyZ2V0QmluZGluZyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmFsdWVCaW5kaW5nID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLFxuXHRpZ25vcmVVbml0OiBib29sZWFuID0gZmFsc2UsXG5cdGlnbm9yZUZvcm1hdHRpbmc6IGJvb2xlYW4gPSBmYWxzZSxcblx0YmluZGluZ1BhcmFtZXRlcnM/OiBvYmplY3QsXG5cdHRhcmdldFR5cGVBbnk/OiBib29sZWFuLFxuXHRzaG93TWVhc3VyZU9ubHk6IGJvb2xlYW4gPSBmYWxzZVxuKTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGlmIChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSAmJiBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC4kdGFyZ2V0KSB7XG5cdFx0Y29uc3Qgb05hdlBhdGggPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucGF0aCwgdHJ1ZSk7XG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgPSBvTmF2UGF0aC50YXJnZXQ7XG5cdFx0b05hdlBhdGgudmlzaXRlZE9iamVjdHMuZm9yRWFjaCgob05hdk9iajogYW55KSA9PiB7XG5cdFx0XHRpZiAob05hdk9iaiAmJiBvTmF2T2JqLl90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKSB7XG5cdFx0XHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChvTmF2T2JqKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGNvbnN0IHRhcmdldE9iamVjdCA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRpZiAoaXNQcm9wZXJ0eSh0YXJnZXRPYmplY3QpKSB7XG5cdFx0bGV0IG9CaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uPHN0cmluZz4gPSBiaW5kaW5nRXhwcmVzc2lvbihcblx0XHRcdGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aClcblx0XHQpIGFzIEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxzdHJpbmc+O1xuXHRcdGlmICh0YXJnZXRPYmplY3QuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzRW1haWxBZGRyZXNzKSB7XG5cdFx0XHRvQmluZGluZ0V4cHJlc3Npb24udHlwZSA9IFwic2FwLmZlLmNvcmUudHlwZS5FbWFpbFwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBvUHJvcGVydHlVbml0ID0gZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCk7XG5cdFx0XHRjb25zdCBvUHJvcGVydHlDdXJyZW5jeSA9IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5KG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KTtcblx0XHRcdGlmICghaWdub3JlVW5pdCAmJiAob1Byb3BlcnR5VW5pdCB8fCBvUHJvcGVydHlDdXJyZW5jeSkpIHtcblx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uID0gZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBvQmluZGluZ0V4cHJlc3Npb24pIGFzIGFueTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChvUHJvcGVydHlVbml0ICYmICFoYXNWYWx1ZUhlbHAob1Byb3BlcnR5VW5pdCkpIHx8XG5cdFx0XHRcdFx0KG9Qcm9wZXJ0eUN1cnJlbmN5ICYmICFoYXNWYWx1ZUhlbHAob1Byb3BlcnR5Q3VycmVuY3kpKSB8fFxuXHRcdFx0XHRcdGZpZWxkRm9ybWF0T3B0aW9ucz8ubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIkhpZGRlblwiXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdC8vIElmIHRoZXJlIGlzIGEgdW5pdCBvciBjdXJyZW5jeSB3aXRob3V0IGEgdmFsdWUgaGVscCwgb3IgaW4gY2FzZSB0aGUgY3VycmVuY3kgc2hvdWxkIGJlIGV4cGxpY2l0bHkgaGlkZGVuLFxuXHRcdFx0XHRcdC8vIHdlIG5lZWQgdG8gY29uZmlndXJlIHRoZSBiaW5kaW5nIHRvIG5vdCBzaG93IHRoZSBtZWFzdXJlLCBvdGhlcndpc2UgaXQncyBuZWVkZWQgZm9yIHRoZSBtZGMgZmllbGRcblx0XHRcdFx0XHRpZiAoIW9CaW5kaW5nRXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zKSB7XG5cdFx0XHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24uZm9ybWF0T3B0aW9ucyA9IHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoc2hvd01lYXN1cmVPbmx5KSB7XG5cdFx0XHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24uZm9ybWF0T3B0aW9ucy5zaG93TnVtYmVyID0gZmFsc2U7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zLnNob3dNZWFzdXJlID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKHRhcmdldE9iamVjdCwgb0JpbmRpbmdFeHByZXNzaW9uKSBhcyBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248c3RyaW5nPjtcblx0XHRcdFx0aWYgKG9CaW5kaW5nRXhwcmVzc2lvbi50eXBlID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnMgPSB7XG5cdFx0XHRcdFx0XHRwYXJzZUtlZXBzRW1wdHlTdHJpbmc6IHRydWVcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChpZ25vcmVGb3JtYXR0aW5nKSB7XG5cdFx0XHRkZWxldGUgb0JpbmRpbmdFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnM7XG5cdFx0XHRkZWxldGUgb0JpbmRpbmdFeHByZXNzaW9uLmNvbnN0cmFpbnRzO1xuXHRcdFx0ZGVsZXRlIG9CaW5kaW5nRXhwcmVzc2lvbi50eXBlO1xuXHRcdH1cblx0XHRpZiAoYmluZGluZ1BhcmFtZXRlcnMpIHtcblx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbi5wYXJhbWV0ZXJzID0gYmluZGluZ1BhcmFtZXRlcnM7XG5cdFx0fVxuXHRcdGlmICh0YXJnZXRUeXBlQW55KSB7XG5cdFx0XHRvQmluZGluZ0V4cHJlc3Npb24udGFyZ2V0VHlwZSA9IFwiYW55XCI7XG5cdFx0fVxuXHRcdHJldHVybiBjb21waWxlQmluZGluZyhvQmluZGluZ0V4cHJlc3Npb24pO1xuXHR9IGVsc2Uge1xuXHRcdGlmIChcblx0XHRcdHRhcmdldE9iamVjdD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwgfHxcblx0XHRcdHRhcmdldE9iamVjdD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKGFubm90YXRpb25FeHByZXNzaW9uKCh0YXJnZXRPYmplY3QgYXMgRGF0YUZpZWxkV2l0aFVybCkuVmFsdWUpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VW5pdEJpbmRpbmcgPSBmdW5jdGlvbihvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGNvbnN0IG9Qcm9wZXJ0eURlZmluaXRpb24gPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0bGV0IHVuaXQgPSBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdDtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXNcblx0KS5tYXAobnAgPT4gbnAubmFtZSk7XG5cdHVuaXQgPSB1bml0ID8gdW5pdCA6IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0cmV0dXJuIHVuaXQgPyBjb21waWxlQmluZGluZyhhbm5vdGF0aW9uRXhwcmVzc2lvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSkgOiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXNzb2NpYXRlZFRleHRCaW5kaW5nID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGV4dFByb3BlcnR5UGF0aCA9IGdldEFzc29jaWF0ZWRUZXh0UHJvcGVydHlQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KTtcblx0aWYgKHRleHRQcm9wZXJ0eVBhdGgpIHtcblx0XHRjb25zdCBvVGV4dFByb3BlcnR5UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIHRleHRQcm9wZXJ0eVBhdGgpO1xuXHRcdGNvbnN0IG9WYWx1ZUJpbmRpbmcgPSBnZXRWYWx1ZUJpbmRpbmcob1RleHRQcm9wZXJ0eVBhdGgsIGZpZWxkRm9ybWF0T3B0aW9ucywgdHJ1ZSwgdHJ1ZSwgeyAkJG5vUGF0Y2g6IHRydWUgfSk7XG5cdFx0cmV0dXJuIG9WYWx1ZUJpbmRpbmc7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzID0gZnVuY3Rpb24ob0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0Y29uc3QgYU5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gb0RhdGFNb2RlbFBhdGg/LnRhcmdldEVudGl0eVR5cGU/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzIHx8IFtdO1xuXHRsZXQgYklzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMgPSBmYWxzZTtcblx0YU5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2gob05hdlByb3AgPT4ge1xuXHRcdGlmIChvTmF2UHJvcC5yZWZlcmVudGlhbENvbnN0cmFpbnQgJiYgb05hdlByb3AucmVmZXJlbnRpYWxDb25zdHJhaW50Lmxlbmd0aCkge1xuXHRcdFx0b05hdlByb3AucmVmZXJlbnRpYWxDb25zdHJhaW50LmZvckVhY2gob1JlZkNvbnN0cmFpbnQgPT4ge1xuXHRcdFx0XHRpZiAob1JlZkNvbnN0cmFpbnQ/LnNvdXJjZVByb3BlcnR5ID09PSBvUHJvcGVydHkubmFtZSkge1xuXHRcdFx0XHRcdGlmIChvTmF2UHJvcD8udGFyZ2V0VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5RdWlja1ZpZXdGYWNldHMpIHtcblx0XHRcdFx0XHRcdGJJc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBiSXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBpc1JldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3RFbmFibGVkID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0ZmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnNcbik6IGJvb2xlYW4ge1xuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdGlmIChcblx0XHQhKGZpZWxkRm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZSA9PT0gXCJWYWx1ZVwiKSAmJlxuXHRcdCFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCAmJlxuXHRcdCFvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzICYmXG5cdFx0UHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eSkgJiZcblx0XHRmaWVsZEZvcm1hdE9wdGlvbnMudGV4dEFsaWduTW9kZSA9PT0gXCJGb3JtXCJcblx0KSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERpc3BsYXlTdHlsZSA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdG9EYXRhRmllbGQ6IGFueSxcblx0b0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLFxuXHRzZW1hbnRpY09iamVjdDogc3RyaW5nXG4pOiBEaXNwbGF5U3R5bGUge1xuXHQvLyBhbGdvcml0aG0gdG8gZGV0ZXJtaW5lIHRoZSBmaWVsZCBmcmFnbWVudCB0byB1c2Vcblx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRpZiAoXG5cdFx0c2VtYW50aWNPYmplY3QgJiZcblx0XHQhb1Byb3BlcnR5LmFubm90YXRpb25zPy5VST8uSXNJbWFnZVVSTCAmJlxuXHRcdCEob1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmVhbVwiKSAmJlxuXHRcdCEob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcyB8fCBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzUGhvbmVOdW1iZXIpXG5cdCkge1xuXHRcdHJldHVybiBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiO1xuXHR9XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBcIlRleHRcIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmVhbVwiKSB7XG5cdFx0cmV0dXJuIFwiRmlsZVwiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5Jc0ltYWdlVVJMKSB7XG5cdFx0cmV0dXJuIFwiQXZhdGFyXCI7XG5cdH1cblx0c3dpdGNoIChvRGF0YUZpZWxkLiRUeXBlKSB7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIjpcblx0XHRcdHJldHVybiBcIkRhdGFQb2ludFwiO1xuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCI6XG5cdFx0XHRpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIikge1xuXHRcdFx0XHRyZXR1cm4gXCJEYXRhUG9pbnRcIjtcblx0XHRcdH0gZWxzZSBpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFR5cGVcIikge1xuXHRcdFx0XHRyZXR1cm4gXCJDb250YWN0XCI7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCI6XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0cmV0dXJuIFwiQnV0dG9uXCI7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFwiOlxuXHRcdFx0cmV0dXJuIFwiTGlua1wiO1xuXHR9XG5cdGlmIChvRGF0YU1vZGVsUGF0aD8udGFyZ2V0RW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uU2VtYW50aWNLZXkpIHtcblx0XHRjb25zdCBhU2VtYW50aWNLZXlzID0gb0RhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5hbm5vdGF0aW9ucy5Db21tb24uU2VtYW50aWNLZXk7XG5cdFx0Y29uc3QgYklzU2VtYW50aWNLZXkgPSAhYVNlbWFudGljS2V5cy5ldmVyeShmdW5jdGlvbihvS2V5KSB7XG5cdFx0XHRyZXR1cm4gb0tleT8uJHRhcmdldD8ubmFtZSAhPT0gb1Byb3BlcnR5Lm5hbWU7XG5cdFx0fSk7XG5cdFx0aWYgKGJJc1NlbWFudGljS2V5ICYmIGZpZWxkRm9ybWF0T3B0aW9ucy5zZW1hbnRpY0tleVN0eWxlKSB7XG5cdFx0XHRpZiAob0RhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3QpIHtcblx0XHRcdFx0Ly8gJiYgZmllbGRGb3JtYXRPcHRpb25zLmhhc0RyYWZ0SW5kaWNhdG9yKSB7XG5cdFx0XHRcdC8vIHdlIHRoZW4gc3RpbGwgY2hlY2sgd2hldGhlciB0aGlzIGlzIGF2YWlsYWJsZSBhdCBkZXNpZ250aW1lIG9uIHRoZSBlbnRpdHlzZXRcblx0XHRcdFx0cmV0dXJuIFwiU2VtYW50aWNLZXlXaXRoRHJhZnRJbmRpY2F0b3JcIjtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmaWVsZEZvcm1hdE9wdGlvbnMuc2VtYW50aWNLZXlTdHlsZSA9PT0gXCJPYmplY3RJZGVudGlmaWVyXCIgPyBcIk9iamVjdElkZW50aWZpZXJcIiA6IFwiTGFiZWxTZW1hbnRpY0tleVwiO1xuXHRcdH1cblx0fVxuXHRpZiAob0RhdGFGaWVsZC5Dcml0aWNhbGl0eSkge1xuXHRcdHJldHVybiBcIk9iamVjdFN0YXR1c1wiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeSAmJiBTdHJpbmcoZmllbGRGb3JtYXRPcHRpb25zLmlzQ3VycmVuY3lBbGlnbmVkKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRpZiAoZmllbGRGb3JtYXRPcHRpb25zLm1lYXN1cmVEaXNwbGF5TW9kZSA9PT0gXCJIaWRkZW5cIikge1xuXHRcdFx0cmV0dXJuIFwiVGV4dFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJBbW91bnRXaXRoQ3VycmVuY3lcIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcyB8fCBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzUGhvbmVOdW1iZXIpIHtcblx0XHRyZXR1cm4gXCJMaW5rXCI7XG5cdH1cblx0aWYgKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQpIHtcblx0XHRyZXR1cm4gXCJFeHBhbmRhYmxlVGV4dFwiO1xuXHR9XG5cblx0aWYgKGlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMob0RhdGFNb2RlbFBhdGgsIG9Qcm9wZXJ0eSkpIHtcblx0XHRyZXR1cm4gXCJMaW5rV2l0aFF1aWNrVmlld0Zvcm1cIjtcblx0fVxuXHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0KSB7XG5cdFx0cmV0dXJuIFwiTGlua1dyYXBwZXJcIjtcblx0fVxuXHRpZiAob0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoVXJsXCIpIHtcblx0XHRyZXR1cm4gXCJMaW5rXCI7XG5cdH1cblx0aWYgKGZpZWxkRm9ybWF0T3B0aW9ucy5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0ID09PSB0cnVlKSB7XG5cdFx0cmV0dXJuIFwiTWRjRmllbGRXaXRoVmFsdWVIZWxwXCI7XG5cdH1cblx0cmV0dXJuIFwiVGV4dFwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVkaXRTdHlsZSA9IGZ1bmN0aW9uKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdG9EYXRhRmllbGQ6IGFueSxcblx0b0ZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBFZGl0U3R5bGUgfCBudWxsIHtcblx0Ly8gYWxnb3JpdGhtIHRvIGRldGVybWluZSB0aGUgZmllbGQgZnJhZ21lbnQgdG8gdXNlXG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdGNvbnN0IG9Qcm9wZXJ0eTogUHJvcGVydHkgPSAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoKSAmJiBvUHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChvUHJvcGVydHlQYXRoIGFzIFByb3BlcnR5KTtcblx0aWYgKG9Qcm9wZXJ0eS50eXBlID09PSBcIkVkbS5TdHJlYW1cIikge1xuXHRcdHJldHVybiBcIkZpbGVcIjtcblx0fVxuXHRzd2l0Y2ggKG9EYXRhRmllbGQuJFR5cGUpIHtcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQW5ub3RhdGlvblwiOlxuXHRcdFx0aWYgKG9EYXRhRmllbGQuVGFyZ2V0Py4kdGFyZ2V0Py4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkNvbnRhY3RUeXBlXCIpIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuVGFyZ2V0Py4kdGFyZ2V0Py5WaXN1YWxpemF0aW9uID09PSBcIlVJLlZpc3VhbGl6YXRpb25UeXBlL1JhdGluZ1wiKSB7XG5cdFx0XHRcdHJldHVybiBcIlJhdGluZ0luZGljYXRvclwiO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFR5cGVcIjpcblx0XHRcdGlmIChvRGF0YUZpZWxkPy5WaXN1YWxpemF0aW9uID09PSBcIlVJLlZpc3VhbGl6YXRpb25UeXBlL1JhdGluZ1wiKSB7XG5cdFx0XHRcdHJldHVybiBcIlJhdGluZ0luZGljYXRvclwiO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiOlxuXHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIjpcblx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXCI6XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXHRjb25zdCBvUHJvcGVydHlVbml0ID0gZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eShvUHJvcGVydHkpO1xuXHRjb25zdCBvUHJvcGVydHlDdXJyZW5jeSA9IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5KG9Qcm9wZXJ0eSk7XG5cdGlmIChcblx0XHQoUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eSkgJiYgb1Byb3BlcnR5LnR5cGUgIT09IFwiRWRtLkJvb2xlYW5cIikgfHxcblx0XHQob1Byb3BlcnR5VW5pdCAmJiBQcm9wZXJ0eUhlbHBlci5oYXNWYWx1ZUhlbHAob1Byb3BlcnR5VW5pdCkpIHx8XG5cdFx0KG9Qcm9wZXJ0eUN1cnJlbmN5ICYmIFByb3BlcnR5SGVscGVyLmhhc1ZhbHVlSGVscChvUHJvcGVydHlDdXJyZW5jeSkpXG5cdCkge1xuXHRcdGlmIChvRmllbGRGb3JtYXRPcHRpb25zPy5tZWFzdXJlRGlzcGxheU1vZGUgPT09IFwiSGlkZGVuXCIpIHtcblx0XHRcdHJldHVybiBcIklucHV0XCI7XG5cdFx0fVxuXHRcdHJldHVybiBcIklucHV0V2l0aFZhbHVlSGVscFwiO1xuXHR9XG5cdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5NdWx0aUxpbmVUZXh0Py52YWx1ZU9mKCkgJiYgb1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIFwiVGV4dEFyZWFcIjtcblx0fVxuXHRzd2l0Y2ggKG9Qcm9wZXJ0eS50eXBlKSB7XG5cdFx0Y2FzZSBcIkVkbS5EYXRlXCI6XG5cdFx0XHRyZXR1cm4gXCJEYXRlUGlja2VyXCI7XG5cdFx0Y2FzZSBcIkVkbS5UaW1lXCI6XG5cdFx0Y2FzZSBcIkVkbS5UaW1lT2ZEYXlcIjpcblx0XHRcdHJldHVybiBcIlRpbWVQaWNrZXJcIjtcblx0XHRjYXNlIFwiRWRtLkRhdGVUaW1lXCI6XG5cdFx0Y2FzZSBcIkVkbS5EYXRlVGltZU9mZnNldFwiOlxuXHRcdFx0cmV0dXJuIFwiRGF0ZVRpbWVQaWNrZXJcIjtcblx0XHRjYXNlIFwiRWRtLkJvb2xlYW5cIjpcblx0XHRcdHJldHVybiBcIkNoZWNrQm94XCI7XG5cdH1cblx0aWYgKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5IHx8IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQpIHtcblx0XHRyZXR1cm4gXCJJbnB1dFdpdGhVbml0XCI7XG5cdH1cblx0cmV0dXJuIFwiSW5wdXRcIjtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGV2YWx1YXRlIHRoZSB2aXNpYmlsaXR5IG9mIGEgRGF0YUZpZWxkIG9yIERhdGFQb2ludCBhbm5vdGF0aW9uLlxuICpcbiAqIFNBUCBGaW9yaSBlbGVtZW50cyB3aWxsIGV2YWx1YXRlIGVpdGhlciB0aGUgVUkuSGlkZGVuIGFubm90YXRpb24gZGVmaW5lZCBvbiB0aGUgYW5ub3RhdGlvbiBpdHNlbGYgb3Igb24gdGhlIHRhcmdldCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge0RhdGFNb2RlbE9iamVjdFBhdGh9IGRhdGFGaWVsZE1vZGVsUGF0aCBUaGUgbWV0YXBhdGggcmVmZXJyaW5nIHRvIHRoZSBhbm5vdGF0aW9uIHdlIGFyZSBldmFsdWF0aW5nLlxuICogQHBhcmFtIHtGaWVsZEZvcm1hdE9wdGlvbnN9IFtmb3JtYXRPcHRpb25zXSBGb3JtYXRPcHRpb25zIG9wdGlvbmFsLlxuICogQHJldHVybnMge0JpbmRpbmdFeHByZXNzaW9uPHN0cmluZz59IEFuIGV4cHJlc3Npb24gdGhhdCB5b3UgY2FuIGJpbmQgdG8gdGhlIFVJLlxuICovXG5leHBvcnQgY29uc3QgZ2V0VmlzaWJsZUV4cHJlc3Npb24gPSBmdW5jdGlvbihcblx0ZGF0YUZpZWxkTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRmb3JtYXRPcHRpb25zPzogRmllbGRGb3JtYXRPcHRpb25zXG4pOiBCaW5kaW5nRXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGFyZ2V0T2JqZWN0OiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzID0gZGF0YUZpZWxkTW9kZWxQYXRoLnRhcmdldE9iamVjdDtcblx0bGV0IHByb3BlcnR5VmFsdWU7XG5cdGlmICh0YXJnZXRPYmplY3QpIHtcblx0XHRzd2l0Y2ggKHRhcmdldE9iamVjdC4kVHlwZSkge1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGQ6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmw6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbjpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZTpcblx0XHRcdFx0cHJvcGVydHlWYWx1ZSA9IHRhcmdldE9iamVjdC5WYWx1ZS4kdGFyZ2V0O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjpcblx0XHRcdFx0Ly8gaWYgaXQgaXMgYSBEYXRhRmllbGRGb3JBbm5vdGF0aW9uIHBvaW50aW5nIHRvIGEgRGF0YVBvaW50IHdlIGxvb2sgYXQgdGhlIGRhdGFQb2ludCdzIHZhbHVlXG5cdFx0XHRcdGlmICh0YXJnZXRPYmplY3Q/LlRhcmdldD8uJHRhcmdldD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGUpIHtcblx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlID0gdGFyZ2V0T2JqZWN0LlRhcmdldC4kdGFyZ2V0Py5WYWx1ZS4kdGFyZ2V0O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRjb25zdCBpc0FuYWx5dGljYWxHcm91cEhlYWRlckV4cGFuZGVkID0gZm9ybWF0T3B0aW9ucz8uaXNBbmFseXRpY3MgPyBVSS5Jc0V4cGFuZGVkIDogY29uc3RhbnQoZmFsc2UpO1xuXHRjb25zdCBpc0FuYWx5dGljYWxMZWFmID0gZm9ybWF0T3B0aW9ucz8uaXNBbmFseXRpY3MgPyBlcXVhbChVSS5Ob2RlTGV2ZWwsIDApIDogY29uc3RhbnQoZmFsc2UpO1xuXG5cdC8vIEEgZGF0YSBmaWVsZCBpcyB2aXNpYmxlIGlmOlxuXHQvLyAtIHRoZSBVSS5IaWRkZW4gZXhwcmVzc2lvbiBpbiB0aGUgb3JpZ2luYWwgYW5ub3RhdGlvbiBkb2VzIG5vdCBldmFsdWF0ZSB0byAndHJ1ZSdcblx0Ly8gLSB0aGUgVUkuSGlkZGVuIGV4cHJlc3Npb24gaW4gdGhlIHRhcmdldCBwcm9wZXJ0eSBkb2VzIG5vdCBldmFsdWF0ZSB0byAndHJ1ZSdcblx0Ly8gLSBpbiBjYXNlIG9mIEFuYWx5dGljcyBpdCdzIG5vdCB2aXNpYmxlIGZvciBhbiBleHBhbmRlZCBHcm91cEhlYWRlclxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoXG5cdFx0YW5kKFxuXHRcdFx0Li4uW1xuXHRcdFx0XHRub3QoZXF1YWwoYW5ub3RhdGlvbkV4cHJlc3Npb24odGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbiksIHRydWUpKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdCEhcHJvcGVydHlWYWx1ZSxcblx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlICYmIG5vdChlcXVhbChhbm5vdGF0aW9uRXhwcmVzc2lvbihwcm9wZXJ0eVZhbHVlLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0KSxcblx0XHRcdFx0b3Iobm90KGlzQW5hbHl0aWNhbEdyb3VwSGVhZGVyRXhwYW5kZWQpLCBpc0FuYWx5dGljYWxMZWFmKVxuXHRcdFx0XVxuXHRcdClcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJbnB1dERlc2NyaXB0aW9uID0gZnVuY3Rpb24oXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0ZGVzY3JpcHRpb25CaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPlxuKTogQmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB7XG5cdGNvbnN0IG9Qcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCB1bml0UHJvcGVydHkgPSBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eShvUHJvcGVydHkpIHx8IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkob1Byb3BlcnR5KTtcblx0aWYgKCF1bml0UHJvcGVydHkpIHtcblx0XHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoXCJcIik7XG5cdH1cblx0Y29uc3QgZWRpdGFibGVFeHByZXNzaW9uID0gYW5kKG5vdChpc1JlYWRPbmx5RXhwcmVzc2lvbih1bml0UHJvcGVydHkpKSwgbm90KFByb3BlcnR5SGVscGVyLmlzQ29tcHV0ZWQodW5pdFByb3BlcnR5KSkpO1xuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoaWZFbHNlKGVkaXRhYmxlRXhwcmVzc2lvbiwgXCJcIiwgZGVzY3JpcHRpb25CaW5kaW5nRXhwcmVzc2lvbikpO1xufTtcblxuZXhwb3J0IGNvbnN0IFFWVGV4dEJpbmRpbmcgPSBmdW5jdGlvbihcblx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0b1Byb3BlcnR5VmFsdWVEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRmaWVsZEZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucyxcblx0YXNPYmplY3Q6IGJvb2xlYW4gPSBmYWxzZVxuKSB7XG5cdGxldCByZXR1cm5WYWx1ZTogYW55ID0gZ2V0VmFsdWVCaW5kaW5nKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIGZpZWxkRm9ybWF0T3B0aW9ucywgYXNPYmplY3QpO1xuXHRpZiAocmV0dXJuVmFsdWUgPT09IFwiXCIpIHtcblx0XHRyZXR1cm5WYWx1ZSA9IGdldFRleHRCaW5kaW5nKG9Qcm9wZXJ0eVZhbHVlRGF0YU1vZGVsT2JqZWN0UGF0aCwgZmllbGRGb3JtYXRPcHRpb25zLCBhc09iamVjdCk7XG5cdH1cblx0cmV0dXJuIHJldHVyblZhbHVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFF1aWNrVmlld1R5cGUgPSBmdW5jdGlvbihvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogc3RyaW5nIHtcblx0Y29uc3QgdGFyZ2V0T2JqZWN0ID0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q7XG5cdGlmICh0YXJnZXRPYmplY3Q/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcykge1xuXHRcdHJldHVybiBcImVtYWlsXCI7XG5cdH1cblx0aWYgKHRhcmdldE9iamVjdD8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzUGhvbmVOdW1iZXIpIHtcblx0XHRyZXR1cm4gXCJwaG9uZVwiO1xuXHR9XG5cdHJldHVybiBcInRleHRcIjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZW1hbnRpY09iamVjdEV4cHJlc3Npb25Ub1Jlc29sdmUgPSBmdW5jdGlvbihvQW5ub3RhdGlvbnM6IGFueSk6IGFueVtdIHtcblx0Y29uc3QgYVNlbU9iakV4cHJUb1Jlc29sdmU6IGFueVtdID0gW107XG5cdGlmIChvQW5ub3RhdGlvbnMpIHtcblx0XHRjb25zdCBhU2VtT2Jqa2V5cyA9IE9iamVjdC5rZXlzKG9Bbm5vdGF0aW9ucykuZmlsdGVyKGZ1bmN0aW9uKGVsZW1lbnQpIHtcblx0XHRcdHJldHVybiBlbGVtZW50ID09PSBcIlNlbWFudGljT2JqZWN0XCIgfHwgZWxlbWVudC5zdGFydHNXaXRoKFwiU2VtYW50aWNPYmplY3QjXCIpO1xuXHRcdH0pO1xuXHRcdGZvciAobGV0IGlTZW1PYmpDb3VudCA9IDA7IGlTZW1PYmpDb3VudCA8IGFTZW1PYmprZXlzLmxlbmd0aDsgaVNlbU9iakNvdW50KyspIHtcblx0XHRcdGNvbnN0IHNTZW1PYmpFeHByZXNzaW9uID0gY29tcGlsZUJpbmRpbmcoYW5ub3RhdGlvbkV4cHJlc3Npb24ob0Fubm90YXRpb25zW2FTZW1PYmprZXlzW2lTZW1PYmpDb3VudF1dKSk7XG5cdFx0XHRhU2VtT2JqRXhwclRvUmVzb2x2ZS5wdXNoKHtcblx0XHRcdFx0a2V5OiBzU2VtT2JqRXhwcmVzc2lvbj8uaW5kZXhPZihcIntcIikgPT09IC0xID8gc1NlbU9iakV4cHJlc3Npb24gOiBzU2VtT2JqRXhwcmVzc2lvbj8uc3BsaXQoXCJ7XCIpWzFdLnNwbGl0KFwifVwiKVswXSxcblx0XHRcdFx0dmFsdWU6IHNTZW1PYmpFeHByZXNzaW9uXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGFTZW1PYmpFeHByVG9SZXNvbHZlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbWFudGljT2JqZWN0cyA9IGZ1bmN0aW9uKGFTZW1PYmpFeHByVG9SZXNvbHZlOiBhbnlbXSk6IGFueSB7XG5cdGlmIChhU2VtT2JqRXhwclRvUmVzb2x2ZS5sZW5ndGggPiAwKSB7XG5cdFx0bGV0IHNDdXN0b21EYXRhS2V5OiBzdHJpbmcgPSBcIlwiO1xuXHRcdGxldCBzQ3VzdG9tRGF0YVZhbHVlOiBhbnkgPSBcIlwiO1xuXHRcdGNvbnN0IGFTZW1PYmpDdXN0b21EYXRhOiBhbnlbXSA9IFtdO1xuXHRcdGZvciAobGV0IGlTZW1PYmpDb3VudCA9IDA7IGlTZW1PYmpDb3VudCA8IGFTZW1PYmpFeHByVG9SZXNvbHZlLmxlbmd0aDsgaVNlbU9iakNvdW50KyspIHtcblx0XHRcdHNDdXN0b21EYXRhS2V5ID0gYVNlbU9iakV4cHJUb1Jlc29sdmVbaVNlbU9iakNvdW50XS5rZXk7XG5cdFx0XHRzQ3VzdG9tRGF0YVZhbHVlID0gY29tcGlsZUJpbmRpbmcoYW5ub3RhdGlvbkV4cHJlc3Npb24oYVNlbU9iakV4cHJUb1Jlc29sdmVbaVNlbU9iakNvdW50XS52YWx1ZSkpO1xuXHRcdFx0YVNlbU9iakN1c3RvbURhdGEucHVzaCh7XG5cdFx0XHRcdGtleTogc0N1c3RvbURhdGFLZXksXG5cdFx0XHRcdHZhbHVlOiBzQ3VzdG9tRGF0YVZhbHVlXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3Qgb1NlbWFudGljT2JqZWN0c01vZGVsOiBhbnkgPSBuZXcgSlNPTk1vZGVsKGFTZW1PYmpDdXN0b21EYXRhKTtcblx0XHRvU2VtYW50aWNPYmplY3RzTW9kZWwuJCR2YWx1ZUFzUHJvbWlzZSA9IHRydWU7XG5cdFx0Y29uc3Qgb1NlbU9iakJpbmRpbmdDb250ZXh0OiBhbnkgPSBvU2VtYW50aWNPYmplY3RzTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpO1xuXHRcdHJldHVybiBvU2VtT2JqQmluZGluZ0NvbnRleHQ7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG5ldyBKU09OTW9kZWwoW10pLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKTtcblx0fVxufTtcbiJdfQ==
@@ -2,4 +2,4 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/core/templating/UIFormatters","sap/fe/core/templating/DataModelPathHelper","sap/fe/core/helpers/BindingExpression","sap/fe/core/templating/PropertyHelper","sap/fe/core/formatters/ValueFormatter","sap/fe/core/templating/FieldControlHelper","sap/fe/core/converters/helpers/BindingHelper","sap/ui/model/json/JSONModel"],function(U,D,B,P,v,F,a,J){"use strict";var _={};var b=a.UI;var c=F.isReadOnlyExpression;var g=P.getAssociatedTextPropertyPath;var h=P.hasValueHelp;var d=P.getAssociatedCurrencyPropertyPath;var e=P.getAssociatedUnitPropertyPath;var f=P.isProperty;var j=P.getAssociatedCurrencyProperty;var k=P.getAssociatedUnitProperty;var l=P.isPathExpression;var o=B.or;var m=B.equal;var n=B.not;var p=B.ifElse;var q=B.and;var r=B.bindingExpression;var s=B.constant;var t=B.compileBinding;var u=B.transformRecursively;var w=B.formatResult;var x=B.annotationExpression;var y=D.getContextRelativeTargetObjectPath;var z=D.getPathRelativeLocation;var A=D.enhanceDataModelPath;var C=U.formatWithTypeInformation;var E=U.getBindingWithUnitOrCurrency;var G=U.getDisplayMode;function H(i,e1){var f1=Object.keys(i);if(Object.getOwnPropertySymbols){var g1=Object.getOwnPropertySymbols(i);if(e1){g1=g1.filter(function(h1){return Object.getOwnPropertyDescriptor(i,h1).enumerable;});}f1.push.apply(f1,g1);}return f1;}function I(e1){for(var i=1;i<arguments.length;i++){var f1=arguments[i]!=null?arguments[i]:{};if(i%2){H(Object(f1),true).forEach(function(g1){K(e1,g1,f1[g1]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(e1,Object.getOwnPropertyDescriptors(f1));}else{H(Object(f1)).forEach(function(g1){Object.defineProperty(e1,g1,Object.getOwnPropertyDescriptor(f1,g1));});}}return e1;}function K(i,e1,f1){if(e1 in i){Object.defineProperty(i,e1,{value:f1,enumerable:true,configurable:true,writable:true});}else{i[e1]=f1;}return i;}var L=function(r,i){return u(r,"Binding",function(e1){var f1=e1;if(e1.modelName===undefined){var g1=A(i,e1.path);f1=M(g1,e1);}return f1;});};_.addTextArrangementToBindingExpression=L;var M=function(i,e1,f1){var g1,h1;var i1=f1===null||f1===void 0?void 0:f1.displayMode;var j1=e1;var k1=i.targetObject.type==="PropertyPath"?i.targetObject.$target:i.targetObject;var l1=i1||G(k1,i);var m1=(g1=k1.annotations)===null||g1===void 0?void 0:(h1=g1.Common)===null||h1===void 0?void 0:h1.Text;var n1=z(i.contextLocation,i.navigationProperties).map(function(np){return np.name;});e1=C(k1,e1);if(l1!=="Value"&&m1){switch(l1){case"Description":j1=x(m1,n1);break;case"DescriptionValue":j1=w([x(m1,n1),e1],v.formatWithBrackets);break;case"ValueDescription":j1=w([e1,x(m1,n1)],v.formatWithBrackets);break;}}return j1;};_.getBindingWithTextArrangement=M;var N=function(r,i){return u(r,"Binding",function(e1){var f1=e1;if(e1.modelName===undefined){var g1=A(i,e1.path);f1=C(g1.targetObject,e1);}return f1;});};_.formatValueRecursively=N;var O=function(i,e1){var f1,g1,h1,i1,j1,k1,l1,m1,n1,o1;var p1=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(((f1=i.targetObject)===null||f1===void 0?void 0:f1.$Type)==="com.sap.vocabularies.UI.v1.DataField"||((g1=i.targetObject)===null||g1===void 0?void 0:g1.$Type)==="com.sap.vocabularies.UI.v1.DataPointType"||((h1=i.targetObject)===null||h1===void 0?void 0:h1.$Type)==="com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath"||((i1=i.targetObject)===null||i1===void 0?void 0:i1.$Type)==="com.sap.vocabularies.UI.v1.DataFieldWithUrl"){var q1=i.targetObject.Value||"";return t(s(q1));}if(l(i.targetObject)&&i.targetObject.$target){var r1=i.targetEntityType.resolvePath(i.targetObject.path,true);i.targetObject=r1.target;r1.visitedObjects.forEach(function(u1){if((u1===null||u1===void 0?void 0:u1._type)==="NavigationProperty"){i.navigationProperties.push(u1);}});}var s1=r(y(i));var t1;if((j1=i.targetObject)!==null&&j1!==void 0&&(k1=j1.annotations)!==null&&k1!==void 0&&(l1=k1.Measures)!==null&&l1!==void 0&&l1.Unit||(m1=i.targetObject)!==null&&m1!==void 0&&(n1=m1.annotations)!==null&&n1!==void 0&&(o1=n1.Measures)!==null&&o1!==void 0&&o1.ISOCurrency){t1=E(i,s1);if((e1===null||e1===void 0?void 0:e1.measureDisplayMode)==="Hidden"){t1.formatOptions=I(I({},t1.formatOptions),{},{showMeasure:false});}}else{t1=M(i,s1,e1);}if(p1){return t1;}return t(t1);};_.getTextBinding=O;var Q=function(i,e1){var f1=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var g1=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var h1=arguments.length>4?arguments[4]:undefined;var i1=arguments.length>5?arguments[5]:undefined;var j1=arguments.length>6&&arguments[6]!==undefined?arguments[6]:false;if(l(i.targetObject)&&i.targetObject.$target){var k1=i.targetEntityType.resolvePath(i.targetObject.path,true);i.targetObject=k1.target;k1.visitedObjects.forEach(function(r1){if(r1&&r1._type==="NavigationProperty"){i.navigationProperties.push(r1);}});}var l1=i.targetObject;if(f(l1)){var m1,n1;var o1=r(y(i));if((m1=l1.annotations)!==null&&m1!==void 0&&(n1=m1.Communication)!==null&&n1!==void 0&&n1.IsEmailAddress){o1.type="sap.fe.core.type.Email";}else{var p1=k(i.targetObject);var q1=j(i.targetObject);if(!f1&&(p1||q1)){o1=E(i,o1);if(p1&&!h(p1)||q1&&!h(q1)||(e1===null||e1===void 0?void 0:e1.measureDisplayMode)==="Hidden"){if(!o1.formatOptions){o1.formatOptions={};}if(j1){o1.formatOptions.showNumber=false;}else{o1.formatOptions.showMeasure=false;}}}else{o1=C(l1,o1);if(o1.type==="sap.ui.model.odata.type.String"){o1.formatOptions={parseKeepsEmptyString:true};}}}if(g1){delete o1.formatOptions;delete o1.constraints;delete o1.type;}if(h1){o1.parameters=h1;}if(i1){o1.targetType="any";}return t(o1);}else{if((l1===null||l1===void 0?void 0:l1.$Type)==="com.sap.vocabularies.UI.v1.DataFieldWithUrl"||(l1===null||l1===void 0?void 0:l1.$Type)==="com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath"){return t(x(l1.Value));}else{return"";}}};_.getValueBinding=Q;var R=function(i,e1){var f1=e(i.targetObject);var g1=d(i.targetObject);if(f1||g1){var h1=f1||g1;var i1=A(i,h1);return Q(i1,e1);}return undefined;};_.getUnitBinding=R;var S=function(i,e1){var f1=g(i.targetObject);if(f1){var g1=A(i,f1);var h1=Q(g1,e1,true,true,{$$noPatch:true});return h1;}return undefined;};_.getAssociatedTextBinding=S;var T=function(i,e1){var f1;var g1=(i===null||i===void 0?void 0:(f1=i.targetEntityType)===null||f1===void 0?void 0:f1.navigationProperties)||[];var h1=false;g1.forEach(function(i1){if(i1.referentialConstraint&&i1.referentialConstraint.length){i1.referentialConstraint.forEach(function(j1){if((j1===null||j1===void 0?void 0:j1.sourceProperty)===e1.name){var k1,l1,m1;if(i1!==null&&i1!==void 0&&(k1=i1.targetType)!==null&&k1!==void 0&&(l1=k1.annotations)!==null&&l1!==void 0&&(m1=l1.UI)!==null&&m1!==void 0&&m1.QuickViewFacets){h1=true;}}});}});return h1;};_.isUsedInNavigationWithQuickViewFacets=T;var V=function(i,e1){var f1,g1,h1;var i1=l(i)&&i.$target||i;if(!(e1.displayMode==="Value")&&!((f1=i1.annotations)!==null&&f1!==void 0&&(g1=f1.Common)!==null&&g1!==void 0&&g1.Text)&&!((h1=i1.annotations)!==null&&h1!==void 0&&h1.Measures)&&P.hasValueHelp(i1)&&e1.textAlignMode==="Form"){return true;}return false;};_.isRetrieveTextFromValueListEnabled=V;var W=function(i,e1,f1,g1,h1){var i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,u1,v1,w1,x1,y1,z1,A1,B1,C1,D1,E1,F1,G1,H1,I1;var J1=l(i)&&i.$target||i;if(h1&&!((i1=J1.annotations)!==null&&i1!==void 0&&(j1=i1.UI)!==null&&j1!==void 0&&j1.IsImageURL)&&!(J1.type==="Edm.Stream")&&!((k1=J1.annotations)!==null&&k1!==void 0&&(l1=k1.Communication)!==null&&l1!==void 0&&l1.IsEmailAddress||(m1=J1.annotations)!==null&&m1!==void 0&&(n1=m1.Communication)!==null&&n1!==void 0&&n1.IsPhoneNumber)){return"LinkWithQuickViewForm";}if(!i||typeof i==="string"){return"Text";}if(J1.type==="Edm.Stream"){return"File";}if((o1=J1.annotations)!==null&&o1!==void 0&&(p1=o1.UI)!==null&&p1!==void 0&&p1.IsImageURL){return"Avatar";}switch(e1.$Type){case"com.sap.vocabularies.UI.v1.DataPointType":return"DataPoint";case"com.sap.vocabularies.UI.v1.DataFieldForAnnotation":if(((q1=e1.Target)===null||q1===void 0?void 0:(r1=q1.$target)===null||r1===void 0?void 0:r1.$Type)==="com.sap.vocabularies.UI.v1.DataPointType"){return"DataPoint";}else if(((s1=e1.Target)===null||s1===void 0?void 0:(t1=s1.$target)===null||t1===void 0?void 0:t1.$Type)==="com.sap.vocabularies.Communication.v1.ContactType"){return"Contact";}break;case"com.sap.vocabularies.UI.v1.DataFieldForAction":case"com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":return"Button";case"com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":return"Link";}if(f1!==null&&f1!==void 0&&(u1=f1.targetEntityType)!==null&&u1!==void 0&&(v1=u1.annotations)!==null&&v1!==void 0&&(w1=v1.Common)!==null&&w1!==void 0&&w1.SemanticKey){var K1=f1.targetEntityType.annotations.Common.SemanticKey;var L1=!K1.every(function(P1){var Q1;return(P1===null||P1===void 0?void 0:(Q1=P1.$target)===null||Q1===void 0?void 0:Q1.name)!==J1.name;});if(L1&&g1.semanticKeyStyle){var M1,N1,O1;if((M1=f1.targetEntitySet)!==null&&M1!==void 0&&(N1=M1.annotations)!==null&&N1!==void 0&&(O1=N1.Common)!==null&&O1!==void 0&&O1.DraftRoot){return"SemanticKeyWithDraftIndicator";}return g1.semanticKeyStyle==="ObjectIdentifier"?"ObjectIdentifier":"LabelSemanticKey";}}if(e1.Criticality){return"ObjectStatus";}if((x1=J1.annotations)!==null&&x1!==void 0&&(y1=x1.Measures)!==null&&y1!==void 0&&y1.ISOCurrency){if(g1.measureDisplayMode==="Hidden"){return"Text";}return"AmountWithCurrency";}if((z1=J1.annotations)!==null&&z1!==void 0&&(A1=z1.Communication)!==null&&A1!==void 0&&A1.IsEmailAddress||(B1=J1.annotations)!==null&&B1!==void 0&&(C1=B1.Communication)!==null&&C1!==void 0&&C1.IsPhoneNumber){return"Link";}if((D1=J1.annotations)!==null&&D1!==void 0&&(E1=D1.UI)!==null&&E1!==void 0&&E1.MultiLineText){return"ExpandableText";}if(T(f1,J1)){return"LinkWithQuickViewForm";}if((F1=J1.annotations)!==null&&F1!==void 0&&(G1=F1.Common)!==null&&G1!==void 0&&G1.SemanticObject){return"LinkWrapper";}if(e1.$Type==="com.sap.vocabularies.UI.v1.DataFieldWithUrl"){return"Link";}if(g1.retrieveTextFromValueList&&!(g1.displayMode==="Value")&&!((H1=J1.annotations)!==null&&H1!==void 0&&(I1=H1.Common)!==null&&I1!==void 0&&I1.Text)&&!J1.annotations.Measures&&P.hasValueHelp(J1)&&g1.textAlignMode==="Form"){return"MdcFieldWithValueHelp";}return"Text";};_.getDisplayStyle=W;var X=function(i,e1,f1){var g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1;if(!i||typeof i==="string"){return null;}var r1=l(i)&&i.$target||i;if(r1.type==="Edm.Stream"){return"File";}switch(e1.$Type){case"com.sap.vocabularies.UI.v1.DataFieldForAnnotation":if(((g1=e1.Target)===null||g1===void 0?void 0:(h1=g1.$target)===null||h1===void 0?void 0:h1.$Type)==="com.sap.vocabularies.Communication.v1.ContactType"){return null;}else if(((i1=e1.Target)===null||i1===void 0?void 0:(j1=i1.$target)===null||j1===void 0?void 0:j1.Visualization)==="UI.VisualizationType/Rating"){return"RatingIndicator";}break;case"com.sap.vocabularies.UI.v1.DataPointType":if((e1===null||e1===void 0?void 0:e1.Visualization)==="UI.VisualizationType/Rating"){return"RatingIndicator";}break;case"com.sap.vocabularies.UI.v1.DataFieldForAction":case"com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":case"com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":return null;}var s1=k(r1);var t1=j(r1);if(P.hasValueHelp(r1)&&r1.type!=="Edm.Boolean"||s1&&P.hasValueHelp(s1)||t1&&P.hasValueHelp(t1)){if((f1===null||f1===void 0?void 0:f1.measureDisplayMode)==="Hidden"){return"Input";}return"InputWithValueHelp";}if((k1=r1.annotations)!==null&&k1!==void 0&&(l1=k1.UI)!==null&&l1!==void 0&&(m1=l1.MultiLineText)!==null&&m1!==void 0&&m1.valueOf()&&r1.type==="Edm.String"){return"TextArea";}switch(r1.type){case"Edm.Date":return"DatePicker";case"Edm.Time":case"Edm.TimeOfDay":return"TimePicker";case"Edm.DateTime":case"Edm.DateTimeOffset":return"DateTimePicker";case"Edm.Boolean":return"CheckBox";}if((n1=r1.annotations)!==null&&n1!==void 0&&(o1=n1.Measures)!==null&&o1!==void 0&&o1.ISOCurrency||(p1=r1.annotations)!==null&&p1!==void 0&&(q1=p1.Measures)!==null&&q1!==void 0&&q1.Unit){return"InputWithUnit";}return"Input";};_.getEditStyle=X;var Y=function(i,e1){var f1,g1,h1,i1,j1,k1;var l1=i.targetObject;var m1;if(l1){switch(l1.$Type){case"com.sap.vocabularies.UI.v1.DataField":case"com.sap.vocabularies.UI.v1.DataFieldWithUrl":case"com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":case"com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation":case"com.sap.vocabularies.UI.v1.DataFieldWithAction":case"com.sap.vocabularies.UI.v1.DataPointType":m1=l1.Value.$target;break;case"com.sap.vocabularies.UI.v1.DataFieldForAnnotation":if((l1===null||l1===void 0?void 0:(f1=l1.Target)===null||f1===void 0?void 0:(g1=f1.$target)===null||g1===void 0?void 0:g1.$Type)==="com.sap.vocabularies.UI.v1.DataPointType"){var n1;m1=(n1=l1.Target.$target)===null||n1===void 0?void 0:n1.Value.$target;break;}case"com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":case"com.sap.vocabularies.UI.v1.DataFieldForAction":default:m1=undefined;}}var o1=e1!==null&&e1!==void 0&&e1.isAnalytics?b.IsExpanded:s(false);var p1=e1!==null&&e1!==void 0&&e1.isAnalytics?m(b.NodeLevel,0):s(false);return t(q.apply(void 0,[n(m(x(l1===null||l1===void 0?void 0:(h1=l1.annotations)===null||h1===void 0?void 0:(i1=h1.UI)===null||i1===void 0?void 0:i1.Hidden),true)),p(!!m1,m1&&n(m(x((j1=m1.annotations)===null||j1===void 0?void 0:(k1=j1.UI)===null||k1===void 0?void 0:k1.Hidden),true)),true),o(n(o1),p1)]));};_.getVisibleExpression=Y;var Z=function(i,e1){var f1=l(i)&&i.$target||i;var g1=j(f1)||k(f1);if(!g1){return t("");}var h1=q(n(c(g1)),n(P.isComputed(g1)));return t(p(h1,"",e1));};_.getInputDescription=Z;var $=function(i,e1,f1){var g1=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var h1=Q(i,f1,g1);if(h1===""){h1=O(e1,f1,g1);}return h1;};_.QVTextBinding=$;var a1=function(i){var e1,f1,g1,h1,i1,j1;var k1=i.targetObject;if(k1!==null&&k1!==void 0&&(e1=k1.$target)!==null&&e1!==void 0&&(f1=e1.annotations)!==null&&f1!==void 0&&(g1=f1.Communication)!==null&&g1!==void 0&&g1.IsEmailAddress){return"email";}if(k1!==null&&k1!==void 0&&(h1=k1.$target)!==null&&h1!==void 0&&(i1=h1.annotations)!==null&&i1!==void 0&&(j1=i1.Communication)!==null&&j1!==void 0&&j1.IsPhoneNumber){return"phone";}return"text";};_.getQuickViewType=a1;var b1=function(i){var e1,f1;var g1=i===null||i===void 0?void 0:i.targetObject;var h1=i===null||i===void 0?void 0:i.targetObject.Value.$target;if(g1.Visualization){return undefined;}if(T(i,h1)){return"LinkWithQuickViewForm";}if((e1=h1.annotations)!==null&&e1!==void 0&&(f1=e1.Common)!==null&&f1!==void 0&&f1.SemanticObject){return"LinkWrapper";}return undefined;};_.getDataPointStyle=b1;var c1=function(i){var e1=[];if(i){var f1=Object.keys(i).filter(function(i1){return i1==="SemanticObject"||i1.startsWith("SemanticObject#");});for(var g1=0;g1<f1.length;g1++){var h1=t(x(i[f1[g1]]));e1.push({key:(h1===null||h1===void 0?void 0:h1.indexOf("{"))===-1?h1:h1===null||h1===void 0?void 0:h1.split("{")[1].split("}")[0],value:h1});}}return e1;};_.getSemanticObjectExpressionToResolve=c1;var d1=function(i){if(i.length>0){var e1="";var f1="";var g1=[];for(var h1=0;h1<i.length;h1++){e1=i[h1].key;f1=t(x(i[h1].value));g1.push({key:e1,value:f1});}var i1=new J(g1);i1.$$valueAsPromise=true;var j1=i1.createBindingContext("/");return j1;}else{return new J([]).createBindingContext("/");}};_.getSemanticObjects=d1;return _;},false);
5
+ sap.ui.define(["sap/fe/core/templating/UIFormatters","sap/fe/core/templating/DataModelPathHelper","sap/fe/core/helpers/BindingExpression","sap/fe/core/templating/PropertyHelper","sap/fe/core/formatters/ValueFormatter","sap/fe/core/templating/FieldControlHelper","sap/fe/core/converters/helpers/BindingHelper","sap/ui/model/json/JSONModel"],function(U,D,B,P,v,F,a,J){"use strict";var _={};var b=a.UI;var c=F.isReadOnlyExpression;var g=P.getAssociatedTextPropertyPath;var h=P.hasValueHelp;var d=P.isProperty;var e=P.getAssociatedCurrencyProperty;var f=P.getAssociatedUnitProperty;var j=P.isPathExpression;var o=B.or;var k=B.equal;var n=B.not;var l=B.ifElse;var m=B.and;var p=B.bindingExpression;var q=B.constant;var r=B.compileBinding;var t=B.transformRecursively;var s=B.formatResult;var u=B.annotationExpression;var w=D.getContextRelativeTargetObjectPath;var x=D.getPathRelativeLocation;var y=D.enhanceDataModelPath;var z=U.formatWithTypeInformation;var A=U.getBindingWithUnitOrCurrency;var C=U.getDisplayMode;function E(i,b1){var c1=Object.keys(i);if(Object.getOwnPropertySymbols){var d1=Object.getOwnPropertySymbols(i);if(b1){d1=d1.filter(function(e1){return Object.getOwnPropertyDescriptor(i,e1).enumerable;});}c1.push.apply(c1,d1);}return c1;}function G(b1){for(var i=1;i<arguments.length;i++){var c1=arguments[i]!=null?arguments[i]:{};if(i%2){E(Object(c1),true).forEach(function(d1){H(b1,d1,c1[d1]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(b1,Object.getOwnPropertyDescriptors(c1));}else{E(Object(c1)).forEach(function(d1){Object.defineProperty(b1,d1,Object.getOwnPropertyDescriptor(c1,d1));});}}return b1;}function H(i,b1,c1){if(b1 in i){Object.defineProperty(i,b1,{value:c1,enumerable:true,configurable:true,writable:true});}else{i[b1]=c1;}return i;}var I=function(p,i){return t(p,"Binding",function(b1){var c1=b1;if(b1.modelName===undefined){var d1=y(i,b1.path);c1=K(d1,b1);}return c1;});};_.addTextArrangementToBindingExpression=I;var K=function(i,b1,c1){var d1,e1;var f1=c1===null||c1===void 0?void 0:c1.displayMode;var g1=b1;var h1=i.targetObject.type==="PropertyPath"?i.targetObject.$target:i.targetObject;var i1=f1||C(h1,i);var j1=(d1=h1.annotations)===null||d1===void 0?void 0:(e1=d1.Common)===null||e1===void 0?void 0:e1.Text;var k1=x(i.contextLocation,i.navigationProperties).map(function(np){return np.name;});b1=z(h1,b1);if(i1!=="Value"&&j1){switch(i1){case"Description":g1=u(j1,k1);break;case"DescriptionValue":g1=s([u(j1,k1),b1],v.formatWithBrackets);break;case"ValueDescription":g1=s([b1,u(j1,k1)],v.formatWithBrackets);break;}}return g1;};_.getBindingWithTextArrangement=K;var L=function(p,i){return t(p,"Binding",function(b1){var c1=b1;if(b1.modelName===undefined){var d1=y(i,b1.path);c1=z(d1.targetObject,b1);}return c1;});};_.formatValueRecursively=L;var M=function(i,b1){var c1,d1,e1,f1,g1,h1,i1,j1,k1,l1;var m1=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(((c1=i.targetObject)===null||c1===void 0?void 0:c1.$Type)==="com.sap.vocabularies.UI.v1.DataField"||((d1=i.targetObject)===null||d1===void 0?void 0:d1.$Type)==="com.sap.vocabularies.UI.v1.DataPointType"||((e1=i.targetObject)===null||e1===void 0?void 0:e1.$Type)==="com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath"||((f1=i.targetObject)===null||f1===void 0?void 0:f1.$Type)==="com.sap.vocabularies.UI.v1.DataFieldWithUrl"){var n1=i.targetObject.Value||"";return r(q(n1));}if(j(i.targetObject)&&i.targetObject.$target){var o1=i.targetEntityType.resolvePath(i.targetObject.path,true);i.targetObject=o1.target;o1.visitedObjects.forEach(function(r1){if((r1===null||r1===void 0?void 0:r1._type)==="NavigationProperty"){i.navigationProperties.push(r1);}});}var p1=p(w(i));var q1;if((g1=i.targetObject)!==null&&g1!==void 0&&(h1=g1.annotations)!==null&&h1!==void 0&&(i1=h1.Measures)!==null&&i1!==void 0&&i1.Unit||(j1=i.targetObject)!==null&&j1!==void 0&&(k1=j1.annotations)!==null&&k1!==void 0&&(l1=k1.Measures)!==null&&l1!==void 0&&l1.ISOCurrency){q1=A(i,p1);if((b1===null||b1===void 0?void 0:b1.measureDisplayMode)==="Hidden"){q1.formatOptions=G(G({},q1.formatOptions),{},{showMeasure:false});}}else{q1=K(i,p1,b1);}if(m1){return q1;}return r(q1);};_.getTextBinding=M;var N=function(i,b1){var c1=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var d1=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var e1=arguments.length>4?arguments[4]:undefined;var f1=arguments.length>5?arguments[5]:undefined;var g1=arguments.length>6&&arguments[6]!==undefined?arguments[6]:false;if(j(i.targetObject)&&i.targetObject.$target){var h1=i.targetEntityType.resolvePath(i.targetObject.path,true);i.targetObject=h1.target;h1.visitedObjects.forEach(function(o1){if(o1&&o1._type==="NavigationProperty"){i.navigationProperties.push(o1);}});}var i1=i.targetObject;if(d(i1)){var j1,k1;var l1=p(w(i));if((j1=i1.annotations)!==null&&j1!==void 0&&(k1=j1.Communication)!==null&&k1!==void 0&&k1.IsEmailAddress){l1.type="sap.fe.core.type.Email";}else{var m1=f(i.targetObject);var n1=e(i.targetObject);if(!c1&&(m1||n1)){l1=A(i,l1);if(m1&&!h(m1)||n1&&!h(n1)||(b1===null||b1===void 0?void 0:b1.measureDisplayMode)==="Hidden"){if(!l1.formatOptions){l1.formatOptions={};}if(g1){l1.formatOptions.showNumber=false;}else{l1.formatOptions.showMeasure=false;}}}else{l1=z(i1,l1);if(l1.type==="sap.ui.model.odata.type.String"){l1.formatOptions={parseKeepsEmptyString:true};}}}if(d1){delete l1.formatOptions;delete l1.constraints;delete l1.type;}if(e1){l1.parameters=e1;}if(f1){l1.targetType="any";}return r(l1);}else{if((i1===null||i1===void 0?void 0:i1.$Type)==="com.sap.vocabularies.UI.v1.DataFieldWithUrl"||(i1===null||i1===void 0?void 0:i1.$Type)==="com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath"){return r(u(i1.Value));}else{return"";}}};_.getValueBinding=N;var O=function(i){var b1,c1,d1,e1;var f1=i.targetObject;var g1=(b1=f1.annotations)===null||b1===void 0?void 0:(c1=b1.Measures)===null||c1===void 0?void 0:c1.Unit;var h1=x(i.contextLocation,i.navigationProperties).map(function(np){return np.name;});g1=g1?g1:(d1=f1.annotations)===null||d1===void 0?void 0:(e1=d1.Measures)===null||e1===void 0?void 0:e1.ISOCurrency;return g1?r(u(g1,h1)):undefined;};_.getUnitBinding=O;var Q=function(i,b1){var c1=g(i.targetObject);if(c1){var d1=y(i,c1);var e1=N(d1,b1,true,true,{$$noPatch:true});return e1;}return undefined;};_.getAssociatedTextBinding=Q;var R=function(i,b1){var c1;var d1=(i===null||i===void 0?void 0:(c1=i.targetEntityType)===null||c1===void 0?void 0:c1.navigationProperties)||[];var e1=false;d1.forEach(function(f1){if(f1.referentialConstraint&&f1.referentialConstraint.length){f1.referentialConstraint.forEach(function(g1){if((g1===null||g1===void 0?void 0:g1.sourceProperty)===b1.name){var h1,i1,j1;if(f1!==null&&f1!==void 0&&(h1=f1.targetType)!==null&&h1!==void 0&&(i1=h1.annotations)!==null&&i1!==void 0&&(j1=i1.UI)!==null&&j1!==void 0&&j1.QuickViewFacets){e1=true;}}});}});return e1;};_.isUsedInNavigationWithQuickViewFacets=R;var S=function(i,b1){var c1,d1,e1;var f1=j(i)&&i.$target||i;if(!(b1.displayMode==="Value")&&!((c1=f1.annotations)!==null&&c1!==void 0&&(d1=c1.Common)!==null&&d1!==void 0&&d1.Text)&&!((e1=f1.annotations)!==null&&e1!==void 0&&e1.Measures)&&P.hasValueHelp(f1)&&b1.textAlignMode==="Form"){return true;}return false;};_.isRetrieveTextFromValueListEnabled=S;var T=function(i,b1,c1,d1,e1){var f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,u1,v1,w1,x1,y1,z1,A1,B1,C1,D1;var E1=j(i)&&i.$target||i;if(e1&&!((f1=E1.annotations)!==null&&f1!==void 0&&(g1=f1.UI)!==null&&g1!==void 0&&g1.IsImageURL)&&!(E1.type==="Edm.Stream")&&!((h1=E1.annotations)!==null&&h1!==void 0&&(i1=h1.Communication)!==null&&i1!==void 0&&i1.IsEmailAddress||(j1=E1.annotations)!==null&&j1!==void 0&&(k1=j1.Communication)!==null&&k1!==void 0&&k1.IsPhoneNumber)){return"LinkWithQuickViewForm";}if(!i||typeof i==="string"){return"Text";}if(E1.type==="Edm.Stream"){return"File";}if((l1=E1.annotations)!==null&&l1!==void 0&&(m1=l1.UI)!==null&&m1!==void 0&&m1.IsImageURL){return"Avatar";}switch(b1.$Type){case"com.sap.vocabularies.UI.v1.DataPointType":return"DataPoint";case"com.sap.vocabularies.UI.v1.DataFieldForAnnotation":if(((n1=b1.Target)===null||n1===void 0?void 0:(o1=n1.$target)===null||o1===void 0?void 0:o1.$Type)==="com.sap.vocabularies.UI.v1.DataPointType"){return"DataPoint";}else if(((p1=b1.Target)===null||p1===void 0?void 0:(q1=p1.$target)===null||q1===void 0?void 0:q1.$Type)==="com.sap.vocabularies.Communication.v1.ContactType"){return"Contact";}break;case"com.sap.vocabularies.UI.v1.DataFieldForAction":case"com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":return"Button";case"com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":return"Link";}if(c1!==null&&c1!==void 0&&(r1=c1.targetEntityType)!==null&&r1!==void 0&&(s1=r1.annotations)!==null&&s1!==void 0&&(t1=s1.Common)!==null&&t1!==void 0&&t1.SemanticKey){var F1=c1.targetEntityType.annotations.Common.SemanticKey;var G1=!F1.every(function(K1){var L1;return(K1===null||K1===void 0?void 0:(L1=K1.$target)===null||L1===void 0?void 0:L1.name)!==E1.name;});if(G1&&d1.semanticKeyStyle){var H1,I1,J1;if((H1=c1.targetEntitySet)!==null&&H1!==void 0&&(I1=H1.annotations)!==null&&I1!==void 0&&(J1=I1.Common)!==null&&J1!==void 0&&J1.DraftRoot){return"SemanticKeyWithDraftIndicator";}return d1.semanticKeyStyle==="ObjectIdentifier"?"ObjectIdentifier":"LabelSemanticKey";}}if(b1.Criticality){return"ObjectStatus";}if((u1=E1.annotations)!==null&&u1!==void 0&&(v1=u1.Measures)!==null&&v1!==void 0&&v1.ISOCurrency&&String(d1.isCurrencyAligned)==="true"){if(d1.measureDisplayMode==="Hidden"){return"Text";}return"AmountWithCurrency";}if((w1=E1.annotations)!==null&&w1!==void 0&&(x1=w1.Communication)!==null&&x1!==void 0&&x1.IsEmailAddress||(y1=E1.annotations)!==null&&y1!==void 0&&(z1=y1.Communication)!==null&&z1!==void 0&&z1.IsPhoneNumber){return"Link";}if((A1=E1.annotations)!==null&&A1!==void 0&&(B1=A1.UI)!==null&&B1!==void 0&&B1.MultiLineText){return"ExpandableText";}if(R(c1,E1)){return"LinkWithQuickViewForm";}if((C1=E1.annotations)!==null&&C1!==void 0&&(D1=C1.Common)!==null&&D1!==void 0&&D1.SemanticObject){return"LinkWrapper";}if(b1.$Type==="com.sap.vocabularies.UI.v1.DataFieldWithUrl"){return"Link";}if(d1.retrieveTextFromValueList===true){return"MdcFieldWithValueHelp";}return"Text";};_.getDisplayStyle=T;var V=function(i,b1,c1){var d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1;if(!i||typeof i==="string"){return null;}var o1=j(i)&&i.$target||i;if(o1.type==="Edm.Stream"){return"File";}switch(b1.$Type){case"com.sap.vocabularies.UI.v1.DataFieldForAnnotation":if(((d1=b1.Target)===null||d1===void 0?void 0:(e1=d1.$target)===null||e1===void 0?void 0:e1.$Type)==="com.sap.vocabularies.Communication.v1.ContactType"){return null;}else if(((f1=b1.Target)===null||f1===void 0?void 0:(g1=f1.$target)===null||g1===void 0?void 0:g1.Visualization)==="UI.VisualizationType/Rating"){return"RatingIndicator";}break;case"com.sap.vocabularies.UI.v1.DataPointType":if((b1===null||b1===void 0?void 0:b1.Visualization)==="UI.VisualizationType/Rating"){return"RatingIndicator";}break;case"com.sap.vocabularies.UI.v1.DataFieldForAction":case"com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":case"com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":return null;}var p1=f(o1);var q1=e(o1);if(P.hasValueHelp(o1)&&o1.type!=="Edm.Boolean"||p1&&P.hasValueHelp(p1)||q1&&P.hasValueHelp(q1)){if((c1===null||c1===void 0?void 0:c1.measureDisplayMode)==="Hidden"){return"Input";}return"InputWithValueHelp";}if((h1=o1.annotations)!==null&&h1!==void 0&&(i1=h1.UI)!==null&&i1!==void 0&&(j1=i1.MultiLineText)!==null&&j1!==void 0&&j1.valueOf()&&o1.type==="Edm.String"){return"TextArea";}switch(o1.type){case"Edm.Date":return"DatePicker";case"Edm.Time":case"Edm.TimeOfDay":return"TimePicker";case"Edm.DateTime":case"Edm.DateTimeOffset":return"DateTimePicker";case"Edm.Boolean":return"CheckBox";}if((k1=o1.annotations)!==null&&k1!==void 0&&(l1=k1.Measures)!==null&&l1!==void 0&&l1.ISOCurrency||(m1=o1.annotations)!==null&&m1!==void 0&&(n1=m1.Measures)!==null&&n1!==void 0&&n1.Unit){return"InputWithUnit";}return"Input";};_.getEditStyle=V;var W=function(i,b1){var c1,d1,e1,f1,g1,h1;var i1=i.targetObject;var j1;if(i1){switch(i1.$Type){case"com.sap.vocabularies.UI.v1.DataField":case"com.sap.vocabularies.UI.v1.DataFieldWithUrl":case"com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":case"com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation":case"com.sap.vocabularies.UI.v1.DataFieldWithAction":case"com.sap.vocabularies.UI.v1.DataPointType":j1=i1.Value.$target;break;case"com.sap.vocabularies.UI.v1.DataFieldForAnnotation":if((i1===null||i1===void 0?void 0:(c1=i1.Target)===null||c1===void 0?void 0:(d1=c1.$target)===null||d1===void 0?void 0:d1.$Type)==="com.sap.vocabularies.UI.v1.DataPointType"){var k1;j1=(k1=i1.Target.$target)===null||k1===void 0?void 0:k1.Value.$target;break;}case"com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":case"com.sap.vocabularies.UI.v1.DataFieldForAction":default:j1=undefined;}}var l1=b1!==null&&b1!==void 0&&b1.isAnalytics?b.IsExpanded:q(false);var m1=b1!==null&&b1!==void 0&&b1.isAnalytics?k(b.NodeLevel,0):q(false);return r(m.apply(void 0,[n(k(u(i1===null||i1===void 0?void 0:(e1=i1.annotations)===null||e1===void 0?void 0:(f1=e1.UI)===null||f1===void 0?void 0:f1.Hidden),true)),l(!!j1,j1&&n(k(u((g1=j1.annotations)===null||g1===void 0?void 0:(h1=g1.UI)===null||h1===void 0?void 0:h1.Hidden),true)),true),o(n(l1),m1)]));};_.getVisibleExpression=W;var X=function(i,b1){var c1=j(i)&&i.$target||i;var d1=e(c1)||f(c1);if(!d1){return r("");}var e1=m(n(c(d1)),n(P.isComputed(d1)));return r(l(e1,"",b1));};_.getInputDescription=X;var Y=function(i,b1,c1){var d1=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var e1=N(i,c1,d1);if(e1===""){e1=M(b1,c1,d1);}return e1;};_.QVTextBinding=Y;var Z=function(i){var b1,c1,d1,e1,f1,g1;var h1=i.targetObject;if(h1!==null&&h1!==void 0&&(b1=h1.$target)!==null&&b1!==void 0&&(c1=b1.annotations)!==null&&c1!==void 0&&(d1=c1.Communication)!==null&&d1!==void 0&&d1.IsEmailAddress){return"email";}if(h1!==null&&h1!==void 0&&(e1=h1.$target)!==null&&e1!==void 0&&(f1=e1.annotations)!==null&&f1!==void 0&&(g1=f1.Communication)!==null&&g1!==void 0&&g1.IsPhoneNumber){return"phone";}return"text";};_.getQuickViewType=Z;var $=function(i){var b1=[];if(i){var c1=Object.keys(i).filter(function(f1){return f1==="SemanticObject"||f1.startsWith("SemanticObject#");});for(var d1=0;d1<c1.length;d1++){var e1=r(u(i[c1[d1]]));b1.push({key:(e1===null||e1===void 0?void 0:e1.indexOf("{"))===-1?e1:e1===null||e1===void 0?void 0:e1.split("{")[1].split("}")[0],value:e1});}}return b1;};_.getSemanticObjectExpressionToResolve=$;var a1=function(i){if(i.length>0){var b1="";var c1="";var d1=[];for(var e1=0;e1<i.length;e1++){b1=i[e1].key;c1=r(u(i[e1].value));d1.push({key:b1,value:c1});}var f1=new J(d1);f1.$$valueAsPromise=true;var g1=f1.createBindingContext("/");return g1;}else{return new J([]).createBindingContext("/");}};_.getSemanticObjects=a1;return _;},false);
@@ -34,8 +34,6 @@ import {
34
34
  getAssociatedUnitProperty,
35
35
  getAssociatedCurrencyProperty,
36
36
  isProperty,
37
- getAssociatedUnitPropertyPath,
38
- getAssociatedCurrencyPropertyPath,
39
37
  hasValueHelp,
40
38
  getAssociatedTextPropertyPath
41
39
  } from "sap/fe/core/templating/PropertyHelper";
@@ -44,7 +42,7 @@ import * as PropertyHelper from "sap/fe/core/templating/PropertyHelper";
44
42
  import { isReadOnlyExpression } from "sap/fe/core/templating/FieldControlHelper";
45
43
  import { DataFieldAbstractTypes, DataFieldWithUrl, DataPointTypeTypes, UIAnnotationTypes } from "@sap-ux/vocabularies-types";
46
44
  import { UI } from "sap/fe/core/converters/helpers/BindingHelper";
47
- import { JSONModel } from "sap/ui/model/json";
45
+ import JSONModel from "sap/ui/model/json/JSONModel";
48
46
 
49
47
  export type FieldFormatOptions = Partial<{
50
48
  valueFormat: String;
@@ -60,6 +58,7 @@ export type FieldFormatOptions = Partial<{
60
58
  hasDraftIndicator: boolean;
61
59
  semantickeys: string[];
62
60
  retrieveTextFromValueList: boolean;
61
+ isCurrencyAligned: boolean;
63
62
  }>;
64
63
 
65
64
  export type EditStyle =
@@ -294,18 +293,15 @@ export const getValueBinding = function(
294
293
  }
295
294
  };
296
295
 
297
- export const getUnitBinding = function(
298
- oPropertyDataModelObjectPath: DataModelObjectPath,
299
- fieldFormatOptions: FieldFormatOptions
300
- ): BindingExpression<string> {
301
- const sUnitPropertyPath = getAssociatedUnitPropertyPath(oPropertyDataModelObjectPath.targetObject);
302
- const sCurrencyPropertyPath = getAssociatedCurrencyPropertyPath(oPropertyDataModelObjectPath.targetObject);
303
- if (sUnitPropertyPath || sCurrencyPropertyPath) {
304
- const targetPropertyPath = sUnitPropertyPath || sCurrencyPropertyPath;
305
- const oUOMPropertyDataModelObjectPath = enhanceDataModelPath(oPropertyDataModelObjectPath, targetPropertyPath);
306
- return getValueBinding(oUOMPropertyDataModelObjectPath, fieldFormatOptions);
307
- }
308
- return undefined;
296
+ export const getUnitBinding = function(oPropertyDataModelObjectPath: DataModelObjectPath): BindingExpression<string> {
297
+ const oPropertyDefinition = oPropertyDataModelObjectPath.targetObject as Property;
298
+ let unit = oPropertyDefinition.annotations?.Measures?.Unit;
299
+ const relativeLocation = getPathRelativeLocation(
300
+ oPropertyDataModelObjectPath.contextLocation,
301
+ oPropertyDataModelObjectPath.navigationProperties
302
+ ).map(np => np.name);
303
+ unit = unit ? unit : oPropertyDefinition.annotations?.Measures?.ISOCurrency;
304
+ return unit ? compileBinding(annotationExpression(unit, relativeLocation)) : undefined;
309
305
  };
310
306
 
311
307
  export const getAssociatedTextBinding = function(
@@ -414,7 +410,7 @@ export const getDisplayStyle = function(
414
410
  if (oDataField.Criticality) {
415
411
  return "ObjectStatus";
416
412
  }
417
- if (oProperty.annotations?.Measures?.ISOCurrency) {
413
+ if (oProperty.annotations?.Measures?.ISOCurrency && String(fieldFormatOptions.isCurrencyAligned) === "true") {
418
414
  if (fieldFormatOptions.measureDisplayMode === "Hidden") {
419
415
  return "Text";
420
416
  }
@@ -436,14 +432,7 @@ export const getDisplayStyle = function(
436
432
  if (oDataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldWithUrl") {
437
433
  return "Link";
438
434
  }
439
- if (
440
- fieldFormatOptions.retrieveTextFromValueList &&
441
- !(fieldFormatOptions.displayMode === "Value") &&
442
- !oProperty.annotations?.Common?.Text &&
443
- !oProperty.annotations.Measures &&
444
- PropertyHelper.hasValueHelp(oProperty) &&
445
- fieldFormatOptions.textAlignMode === "Form"
446
- ) {
435
+ if (fieldFormatOptions.retrieveTextFromValueList === true) {
447
436
  return "MdcFieldWithValueHelp";
448
437
  }
449
438
  return "Text";
@@ -610,21 +599,6 @@ export const getQuickViewType = function(oPropertyDataModelObjectPath: DataModel
610
599
  return "text";
611
600
  };
612
601
 
613
- export const getDataPointStyle = function(oDataModelPath: DataModelObjectPath): string | undefined {
614
- const oDataPoint = oDataModelPath?.targetObject;
615
- const oProperty: Property = oDataModelPath?.targetObject.Value.$target;
616
- if (oDataPoint.Visualization) {
617
- return undefined;
618
- }
619
- if (isUsedInNavigationWithQuickViewFacets(oDataModelPath, oProperty)) {
620
- return "LinkWithQuickViewForm";
621
- }
622
- if (oProperty.annotations?.Common?.SemanticObject) {
623
- return "LinkWrapper";
624
- }
625
- return undefined;
626
- };
627
-
628
602
  export const getSemanticObjectExpressionToResolve = function(oAnnotations: any): any[] {
629
603
  const aSemObjExprToResolve: any[] = [];
630
604
  if (oAnnotations) {