@sapui5/sap.fe.core 1.100.0 → 1.102.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 (295) hide show
  1. package/package.json +4 -4
  2. package/src/sap/fe/core/.library +2 -3
  3. package/src/sap/fe/core/AppComponent.js +23 -30
  4. package/src/sap/fe/core/AppComponent.ts +35 -40
  5. package/src/sap/fe/core/AppStateHandler.js +8 -8
  6. package/src/sap/fe/core/AppStateHandler.ts +11 -11
  7. package/src/sap/fe/core/BaseController.js +9 -9
  8. package/src/sap/fe/core/BaseController.ts +3 -4
  9. package/src/sap/fe/core/CommonUtils.js +122 -101
  10. package/src/sap/fe/core/CommonUtils.ts +239 -193
  11. package/src/sap/fe/core/ExtensionAPI.js +12 -13
  12. package/src/sap/fe/core/ExtensionAPI.ts +21 -31
  13. package/src/sap/fe/core/PageController.js +19 -13
  14. package/src/sap/fe/core/PageController.ts +40 -34
  15. package/src/sap/fe/core/TemplateComponent.js +198 -123
  16. package/src/sap/fe/core/TemplateComponent.ts +109 -121
  17. package/src/sap/fe/core/TemplateModel.js +7 -9
  18. package/src/sap/fe/core/TemplateModel.ts +3 -3
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +935 -0
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -0
  25. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
  26. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
  27. package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
  28. package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
  29. package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
  30. package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
  33. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
  34. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
  35. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
  36. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
  37. package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
  38. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
  39. package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
  40. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
  41. package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
  42. package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
  43. package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
  44. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
  45. package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
  46. package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
  47. package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
  48. package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
  49. package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
  50. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  51. package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
  52. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  53. package/src/sap/fe/core/controllerextensions/Share.js +34 -16
  54. package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
  55. package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
  56. package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
  57. package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
  58. package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
  59. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
  60. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
  61. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
  62. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
  63. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
  64. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
  65. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
  66. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
  67. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
  68. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
  69. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
  70. package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
  71. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
  72. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
  73. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
  74. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
  75. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
  76. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
  77. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
  78. package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
  79. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
  80. package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
  81. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
  82. package/src/sap/fe/core/controls/Any.js +28 -0
  83. package/src/sap/fe/core/controls/Any.ts +30 -0
  84. package/src/sap/fe/core/controls/CommandExecution.js +50 -16
  85. package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
  86. package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
  87. package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
  88. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
  89. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
  90. package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
  91. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
  92. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
  93. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
  94. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
  95. package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
  96. package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
  97. package/src/sap/fe/core/controls/FileWrapper.js +360 -0
  98. package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
  99. package/src/sap/fe/core/controls/FilterBar.js +154 -119
  100. package/src/sap/fe/core/controls/FilterBar.ts +128 -123
  101. package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
  102. package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
  103. package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
  104. package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
  105. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
  106. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
  107. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
  108. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
  109. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
  110. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
  111. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
  112. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
  113. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
  114. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
  115. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
  116. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
  117. package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
  118. package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
  119. package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
  120. package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
  121. package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
  122. package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
  123. package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
  124. package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
  125. package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
  126. package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
  127. package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
  128. package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
  129. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  130. package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
  131. package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
  132. package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
  133. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
  135. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
  137. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
  138. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
  139. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +30 -25
  140. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
  141. package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
  142. package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
  143. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  144. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
  145. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  146. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
  147. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +27 -24
  148. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
  149. package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
  150. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
  151. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
  152. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
  153. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
  154. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
  155. package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
  156. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
  157. package/src/sap/fe/core/formatters/TableFormatter.js +74 -13
  158. package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
  159. package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
  160. package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
  161. package/src/sap/fe/core/fpm/Component.js +46 -17
  162. package/src/sap/fe/core/fpm/Component.ts +11 -16
  163. package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
  164. package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
  165. package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
  166. package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
  167. package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
  168. package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
  169. package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
  170. package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
  171. package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
  172. package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
  173. package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
  174. package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
  175. package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
  176. package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
  177. package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -3
  178. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -1
  179. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  180. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
  181. package/src/sap/fe/core/helpers/StableIdHelper.js +5 -7
  182. package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
  183. package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
  184. package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
  185. package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
  186. package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
  187. package/src/sap/fe/core/library.js +13 -5
  188. package/src/sap/fe/core/library.ts +26 -17
  189. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  190. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
  191. package/src/sap/fe/core/messagebundle.properties +135 -180
  192. package/src/sap/fe/core/messagebundle_ar.properties +31 -64
  193. package/src/sap/fe/core/messagebundle_bg.properties +31 -64
  194. package/src/sap/fe/core/messagebundle_ca.properties +31 -64
  195. package/src/sap/fe/core/messagebundle_cs.properties +31 -64
  196. package/src/sap/fe/core/messagebundle_cy.properties +32 -65
  197. package/src/sap/fe/core/messagebundle_da.properties +31 -64
  198. package/src/sap/fe/core/messagebundle_de.properties +29 -62
  199. package/src/sap/fe/core/messagebundle_el.properties +32 -65
  200. package/src/sap/fe/core/messagebundle_en.properties +32 -65
  201. package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
  202. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
  203. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
  204. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
  205. package/src/sap/fe/core/messagebundle_es.properties +31 -64
  206. package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
  207. package/src/sap/fe/core/messagebundle_et.properties +31 -64
  208. package/src/sap/fe/core/messagebundle_fi.properties +29 -62
  209. package/src/sap/fe/core/messagebundle_fr.properties +36 -69
  210. package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
  211. package/src/sap/fe/core/messagebundle_hi.properties +29 -62
  212. package/src/sap/fe/core/messagebundle_hr.properties +32 -65
  213. package/src/sap/fe/core/messagebundle_hu.properties +30 -63
  214. package/src/sap/fe/core/messagebundle_id.properties +32 -65
  215. package/src/sap/fe/core/messagebundle_it.properties +31 -64
  216. package/src/sap/fe/core/messagebundle_iw.properties +31 -64
  217. package/src/sap/fe/core/messagebundle_ja.properties +29 -62
  218. package/src/sap/fe/core/messagebundle_kk.properties +31 -64
  219. package/src/sap/fe/core/messagebundle_ko.properties +31 -64
  220. package/src/sap/fe/core/messagebundle_lt.properties +31 -64
  221. package/src/sap/fe/core/messagebundle_lv.properties +32 -65
  222. package/src/sap/fe/core/messagebundle_ms.properties +31 -64
  223. package/src/sap/fe/core/messagebundle_nl.properties +31 -64
  224. package/src/sap/fe/core/messagebundle_no.properties +31 -64
  225. package/src/sap/fe/core/messagebundle_pl.properties +34 -67
  226. package/src/sap/fe/core/messagebundle_pt.properties +32 -65
  227. package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
  228. package/src/sap/fe/core/messagebundle_ro.properties +33 -66
  229. package/src/sap/fe/core/messagebundle_ru.properties +33 -66
  230. package/src/sap/fe/core/messagebundle_sh.properties +31 -64
  231. package/src/sap/fe/core/messagebundle_sk.properties +31 -64
  232. package/src/sap/fe/core/messagebundle_sl.properties +29 -62
  233. package/src/sap/fe/core/messagebundle_sv.properties +30 -63
  234. package/src/sap/fe/core/messagebundle_th.properties +31 -64
  235. package/src/sap/fe/core/messagebundle_tr.properties +31 -64
  236. package/src/sap/fe/core/messagebundle_uk.properties +32 -65
  237. package/src/sap/fe/core/messagebundle_vi.properties +31 -64
  238. package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
  239. package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
  240. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
  241. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
  242. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
  243. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
  244. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
  245. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
  246. package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
  247. package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
  248. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
  249. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
  250. package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
  251. package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
  252. package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
  253. package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
  254. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
  255. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
  256. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
  257. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
  258. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
  259. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
  260. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  261. package/src/sap/fe/core/support/CommonHelper.ts +0 -3
  262. package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
  263. package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
  264. package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
  265. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
  266. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
  267. package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
  268. package/src/sap/fe/core/templating/FilterHelper.js +4 -4
  269. package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
  270. package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
  271. package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
  272. package/src/sap/fe/core/templating/UIFormatters.js +133 -22
  273. package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
  274. package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
  275. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
  276. package/src/sap/fe/core/type/Email.js +26 -8
  277. package/src/sap/fe/core/type/Email.ts +8 -7
  278. package/src/sap/fe/core/AnnotationHelper.js +0 -312
  279. package/src/sap/fe/core/AnnotationHelper.ts +0 -315
  280. package/src/sap/fe/core/RouterProxy.js +0 -926
  281. package/src/sap/fe/core/TransactionHelper.js +0 -1562
  282. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
  283. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
  284. package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
  285. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
  286. package/src/sap/fe/core/actions/draft.js +0 -523
  287. package/src/sap/fe/core/actions/messageHandling.js +0 -567
  288. package/src/sap/fe/core/actions/nonDraft.js +0 -20
  289. package/src/sap/fe/core/actions/nonDraft.ts +0 -12
  290. package/src/sap/fe/core/actions/operations.js +0 -1096
  291. package/src/sap/fe/core/actions/sticky.js +0 -130
  292. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
  293. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
  294. package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
  295. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.100.0",
3
+ "version": "1.102.0",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "SAP SE (https://www.sap.com)",
7
7
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
8
8
  "scripts": {
9
- "build": "tsc -v && tsc --project tsconfig-build.json",
9
+ "build": "echo 'nothing to do'",
10
10
  "build-local": "tsc --project tsconfig-local.json && copyfiles -u 6 \"../../node_modules/@sap-ux/annotation-converter/ui5-dist/**/*.js\" dist-local/src && copyfiles ui5.yaml dist-local",
11
11
  "copy-dependency": "copyfiles -u 6 \"../../node_modules/@sap-ux/annotation-converter/ui5-dist/**/*.js\" target/classes/META-INF/resources",
12
12
  "prepare-npm-sources": "copyfiles -u 6 \"../../node_modules/@sap-ux/annotation-converter/ui5-dist/**/*.js\" target/npm-sources/src && babel target/npm-sources/src --out-dir target/npm-sources/src --extensions \".ts\" --config-file ../../.babelrc",
@@ -22,9 +22,9 @@
22
22
  "ui5"
23
23
  ],
24
24
  "devDependencies": {
25
- "ts-node": "^9.1.1",
26
25
  "@babel/cli": "^7.14.8",
27
26
  "@ui5/cli": "^2.14.0",
28
- "copyfiles": "2.2.0"
27
+ "copyfiles": "2.2.0",
28
+ "ts-node": "^9.1.1"
29
29
  }
30
30
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.100.0</version>
9
+ <version>1.102.0</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -32,8 +32,7 @@
32
32
  </dependency>
33
33
  <dependency>
34
34
  <libraryName>sap.ui.mdc</libraryName>
35
- <!-- change that to lazy:true if xml view supports require and we get rid of the require in PhantomUtil -->
36
- <lazy>false</lazy>
35
+ <lazy>false</lazy>
37
36
  </dependency>
38
37
  <dependency>
39
38
  <libraryName>sap.ui.fl</libraryName>
@@ -2,21 +2,15 @@
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/ui/core/UIComponent", "sap/fe/core/RouterProxy", "sap/fe/core/AppStateHandler", "sap/base/Log", "sap/fe/core/support/Diagnostics", "sap/ui/model/json/JSONModel", "sap/fe/core/library", "sap/fe/core/helpers/ModelHelper", "sap/fe/macros/internal/valuehelp/ValueListHelper", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/ComponentMetadata", "./converters/MetaModelConverter"], function (UIComponent, RouterProxy, AppStateHandler, Log, Diagnostics, JSONModel, library, ModelHelper, ValueListHelper, ClassSupport, ComponentMetadata, MetaModelConverter) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/AppStateHandler", "sap/fe/core/controllerextensions/routing/RouterProxy", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/library", "sap/fe/core/support/Diagnostics", "sap/fe/macros/internal/valuehelp/ValueListHelper", "sap/ui/core/Core", "sap/ui/core/UIComponent", "sap/ui/model/json/JSONModel", "./converters/MetaModelConverter", "./helpers/SemanticDateOperators"], function (Log, AppStateHandler, RouterProxy, ClassSupport, ModelHelper, library, Diagnostics, ValueListHelper, Core, UIComponent, JSONModel, MetaModelConverter, SemanticDateOperators) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _class, _class2, _temp;
9
9
 
10
10
  var deleteModelCacheData = MetaModelConverter.deleteModelCacheData;
11
- var UI5Class = ClassSupport.UI5Class;
11
+ var defineUI5Class = ClassSupport.defineUI5Class;
12
12
 
13
- function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
14
-
15
- function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
16
-
17
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
18
-
19
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
13
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
20
14
 
21
15
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
22
16
 
@@ -45,7 +39,7 @@ sap.ui.define(["sap/ui/core/UIComponent", "sap/fe/core/RouterProxy", "sap/fe/cor
45
39
  * @name sap.fe.core.AppComponent
46
40
  */
47
41
 
48
- var AppComponent = (_dec = UI5Class("sap.fe.core.AppComponent", ComponentMetadata, {
42
+ var AppComponent = (_dec = defineUI5Class("sap.fe.core.AppComponent", {
49
43
  interfaces: ["sap.ui.core.IAsyncContentCreation"],
50
44
  config: {
51
45
  fullWidth: true
@@ -112,7 +106,7 @@ sap.ui.define(["sap/ui/core/UIComponent", "sap/fe/core/RouterProxy", "sap/fe/cor
112
106
  designtime: "sap/fe/core/designtime/AppComponent.designtime",
113
107
  library: "sap.fe.core"
114
108
  }), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_UIComponent) {
115
- _inherits(AppComponent, _UIComponent);
109
+ _inheritsLoose(AppComponent, _UIComponent);
116
110
 
117
111
  function AppComponent() {
118
112
  return _UIComponent.apply(this, arguments) || this;
@@ -195,18 +189,20 @@ sap.ui.define(["sap/ui/core/UIComponent", "sap/fe/core/RouterProxy", "sap/fe/cor
195
189
  };
196
190
 
197
191
  _proto.init = function init() {
198
- this.setModel(new JSONModel({
192
+ var uiModel = new JSONModel({
199
193
  editMode: library.EditMode.Display,
200
194
  isEditable: false,
201
195
  draftStatus: library.DraftStatus.Clear,
202
196
  busy: false,
203
197
  busyLocal: {},
204
198
  pages: {}
205
- }), "ui");
199
+ });
206
200
  var oInternalModel = new JSONModel({
207
201
  pages: {}
208
202
  });
203
+ ModelHelper.enhanceUiJSONModel(uiModel, library);
209
204
  ModelHelper.enhanceInternalJSONModel(oInternalModel);
205
+ this.setModel(uiModel, "ui");
210
206
  this.setModel(oInternalModel, "internal");
211
207
  this.bInitializeRouting = this.bInitializeRouting !== undefined ? this.bInitializeRouting : true;
212
208
  this._oRouterProxy = new RouterProxy();
@@ -230,18 +226,13 @@ sap.ui.define(["sap/ui/core/UIComponent", "sap/fe/core/RouterProxy", "sap/fe/cor
230
226
  Log.info('Rootcontainer: "' + oManifestUI5.rootView.viewName + '" - Routerclass: "' + NAVCONF.NAVCONTAINER.ROUTERCLASS + '"');
231
227
  } // Adding Semantic Date Operators
232
228
  // Commenting since it is not needed for SingleRange
233
- // SemanticDateOperators.addSemanticDateOperators();
234
- // the init function configures the routing according to the settings above
235
- // it will call the createContent function to instantiate the RootView and add it to the UIComponent aggregations
236
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
237
- // @ts-ignore
238
229
 
239
230
 
240
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
241
- args[_key] = arguments[_key];
242
- }
231
+ SemanticDateOperators.addSemanticDateOperators(); // the init function configures the routing according to the settings above
232
+ // it will call the createContent function to instantiate the RootView and add it to the UIComponent aggregations
233
+
234
+ _UIComponent.prototype.init.call(this);
243
235
 
244
- UIComponent.prototype.init.apply(this, args);
245
236
  AppComponent.instanceMap[this.getId()] = this;
246
237
  };
247
238
 
@@ -260,7 +251,7 @@ sap.ui.define(["sap/ui/core/UIComponent", "sap/fe/core/RouterProxy", "sap/fe/cor
260
251
 
261
252
  _this.getRouterProxy().init(_this, _this._isFclEnabled());
262
253
  }).catch(function (error) {
263
- var oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
254
+ var oResourceBundle = Core.getLibraryResourceBundle("sap.fe.core");
264
255
 
265
256
  _this.getRootViewController().displayMessagePage(oResourceBundle.getText("C_APP_COMPONENT_SAPFE_APPSTART_TECHNICAL_ISSUES"), {
266
257
  title: oResourceBundle.getText("C_COMMON_SAPFE_ERROR"),
@@ -309,6 +300,8 @@ sap.ui.define(["sap/ui/core/UIComponent", "sap/fe/core/RouterProxy", "sap/fe/cor
309
300
  };
310
301
 
311
302
  _proto.destroy = function destroy() {
303
+ var _UIComponent$prototyp;
304
+
312
305
  // LEAKS, with workaround for some Flex / MDC issue
313
306
  try {
314
307
  // // This one is only a leak if you don't go back to the same component in the long run
@@ -334,19 +327,19 @@ sap.ui.define(["sap/ui/core/UIComponent", "sap/fe/core/RouterProxy", "sap/fe/cor
334
327
  var oMainModel = this.oModels[undefined];
335
328
  var oHeaders = jQuery.extend({}, oMainModel.oRequestor.mHeaders); // As we need to cleanup the application / handle the dirty object we need to call our cleanup before the models are destroyed
336
329
 
337
- this.getRoutingService().beforeExit(); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
338
- // @ts-ignore
330
+ this.getRoutingService().beforeExit();
339
331
 
340
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
341
- args[_key2] = arguments[_key2];
332
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
333
+ args[_key] = arguments[_key];
342
334
  }
343
335
 
344
- UIComponent.prototype.destroy.apply(this, [args]);
336
+ (_UIComponent$prototyp = _UIComponent.prototype.destroy).call.apply(_UIComponent$prototyp, [this].concat(args));
337
+
345
338
  oMainModel.oRequestor.mHeaders = oHeaders;
346
339
  };
347
340
 
348
341
  _proto.getComponentData = function getComponentData() {
349
- return _get(_getPrototypeOf(AppComponent.prototype), "getComponentData", this).call(this);
342
+ return _UIComponent.prototype.getComponentData.call(this);
350
343
  };
351
344
 
352
345
  _proto.getRoutingService = function getRoutingService() {
@@ -389,4 +382,4 @@ sap.ui.define(["sap/ui/core/UIComponent", "sap/fe/core/RouterProxy", "sap/fe/cor
389
382
  }(UIComponent), _class2.instanceMap = {}, _temp)) || _class);
390
383
  return AppComponent;
391
384
  }, false);
392
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFwcENvbXBvbmVudC50cyJdLCJuYW1lcyI6WyJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJST1VURVJDTEFTUyIsIk5BVkNPTlRBSU5FUiIsIkFwcENvbXBvbmVudCIsIlVJNUNsYXNzIiwiQ29tcG9uZW50TWV0YWRhdGEiLCJpbnRlcmZhY2VzIiwiY29uZmlnIiwiZnVsbFdpZHRoIiwibWFuaWZlc3QiLCJzZXJ2aWNlcyIsInJlc291cmNlTW9kZWwiLCJmYWN0b3J5TmFtZSIsInJvdXRpbmdTZXJ2aWNlIiwic3RhcnR1cCIsInNoZWxsU2VydmljZXMiLCJTaGVsbFVJU2VydmljZSIsIm5hdmlnYXRpb25TZXJ2aWNlIiwiZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJzaWRlRWZmZWN0c1NlcnZpY2UiLCJhc3luY0NvbXBvbmVudFNlcnZpY2UiLCJyb290VmlldyIsInZpZXdOYW1lIiwidHlwZSIsImFzeW5jIiwiaWQiLCJyb3V0aW5nIiwiY29udHJvbElkIiwicm91dGVyQ2xhc3MiLCJ2aWV3VHlwZSIsImNvbnRyb2xBZ2dyZWdhdGlvbiIsImNvbnRhaW5lck9wdGlvbnMiLCJwcm9wYWdhdGVNb2RlbCIsImRlc2lnbnRpbWUiLCJsaWJyYXJ5IiwiX2lzRmNsRW5hYmxlZCIsIm9NYW5pZmVzdFVJNSIsImdldE1ldGFkYXRhIiwiZ2V0TWFuaWZlc3RFbnRyeSIsImdldFJvdXRlclByb3h5IiwiX29Sb3V0ZXJQcm94eSIsImdldEFwcFN0YXRlSGFuZGxlciIsIl9vQXBwU3RhdGVIYW5kbGVyIiwiZ2V0Um9vdFZpZXdDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRhaW5lciIsImdldENvbnRlbnQiLCJpbml0Iiwic2V0TW9kZWwiLCJKU09OTW9kZWwiLCJlZGl0TW9kZSIsIkVkaXRNb2RlIiwiRGlzcGxheSIsImlzRWRpdGFibGUiLCJkcmFmdFN0YXR1cyIsIkRyYWZ0U3RhdHVzIiwiQ2xlYXIiLCJidXN5IiwiYnVzeUxvY2FsIiwicGFnZXMiLCJvSW50ZXJuYWxNb2RlbCIsIk1vZGVsSGVscGVyIiwiZW5oYW5jZUludGVybmFsSlNPTk1vZGVsIiwiYkluaXRpYWxpemVSb3V0aW5nIiwidW5kZWZpbmVkIiwiUm91dGVyUHJveHkiLCJBcHBTdGF0ZUhhbmRsZXIiLCJfb0RpYWdub3N0aWNzIiwiRGlhZ25vc3RpY3MiLCJvTW9kZWwiLCJnZXRNb2RlbCIsImVudGl0eUNvbnRhaW5lciIsImdldE1ldGFNb2RlbCIsInJlcXVlc3RPYmplY3QiLCJMb2ciLCJpbmZvIiwiaW5kZXhPZiIsIkVycm9yIiwiYXJncyIsIlVJQ29tcG9uZW50IiwicHJvdG90eXBlIiwiYXBwbHkiLCJpbnN0YW5jZU1hcCIsImdldElkIiwib25TZXJ2aWNlc1N0YXJ0ZWQiLCJmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24iLCJ0aGVuIiwiYXR0YWNoUm91dGVNYXRjaGVycyIsImdldFJvdXRlciIsImluaXRpYWxpemUiLCJjYXRjaCIsImVycm9yIiwib1Jlc291cmNlQnVuZGxlIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiZGlzcGxheU1lc3NhZ2VQYWdlIiwiZ2V0VGV4dCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwiRkNMTGV2ZWwiLCJnZXRSb3V0aW5nU2VydmljZSIsImluaXRpYWxpemVSb3V0aW5nIiwiYXR0YWNoQWZ0ZXJJbml0IiwiZXJyIiwiZXhpdCIsImRlc3Ryb3kiLCJkZWxldGVNb2RlbENhY2hlRGF0YSIsImdldERpYWdub3N0aWNzIiwiVmFsdWVMaXN0SGVscGVyIiwiaW5pdGlhbGl6ZUNhY2hlZFZhbHVlSGVscCIsIndpbmRvdyIsIl9yb3V0aW5nIiwiZSIsIm9NYWluTW9kZWwiLCJvTW9kZWxzIiwib0hlYWRlcnMiLCJqUXVlcnkiLCJleHRlbmQiLCJvUmVxdWVzdG9yIiwibUhlYWRlcnMiLCJiZWZvcmVFeGl0IiwiZ2V0Q29tcG9uZW50RGF0YSIsImdldFNoZWxsU2VydmljZXMiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0U3RhcnR1cFBhcmFtZXRlcnMiLCJvQ29tcG9uZW50RGF0YSIsIm9TdGFydFVwUGFyYW1ldGVycyIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXN0b3JlIiwidmlld1N0YXRlIiwib25SZXN0b3JlIiwic3VzcGVuZCIsIm9uU3VzcGVuZCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQSxNQUFNQSxPQUFPLEdBQUc7QUFDZkMsSUFBQUEsR0FBRyxFQUFFO0FBQ0pDLE1BQUFBLFFBQVEsRUFBRSx5Q0FETjtBQUVKQyxNQUFBQSxXQUFXLEVBQUU7QUFGVCxLQURVO0FBS2ZDLElBQUFBLFlBQVksRUFBRTtBQUNiRixNQUFBQSxRQUFRLEVBQUUsa0RBREc7QUFFYkMsTUFBQUEsV0FBVyxFQUFFO0FBRkE7QUFMQyxHQUFoQjtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O01BcUVNRSxZLFdBcEVMQyxRQUFRLENBQUMsMEJBQUQsRUFBNkJDLGlCQUE3QixFQUFnRDtBQUN4REMsSUFBQUEsVUFBVSxFQUFFLENBQUMsbUNBQUQsQ0FENEM7QUFFeERDLElBQUFBLE1BQU0sRUFBRTtBQUNQQyxNQUFBQSxTQUFTLEVBQUU7QUFESixLQUZnRDtBQUt4REMsSUFBQUEsUUFBUSxFQUFFO0FBQ1QsaUJBQVc7QUFDVkMsUUFBQUEsUUFBUSxFQUFFO0FBQ1RDLFVBQUFBLGFBQWEsRUFBRTtBQUNkQyxZQUFBQSxXQUFXLEVBQUUsMkNBREM7QUFFZCx1QkFBVyxTQUZHO0FBR2Qsd0JBQVk7QUFDWCx5QkFBVyxDQUFDLDJCQUFELENBREE7QUFFWCwyQkFBYTtBQUZGO0FBSEUsV0FETjtB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QSxVQUFVLENBQUNLLFVBQVgsQ0FBc0JDLFFBQXRCLEdBQWlDSixRQUFqQztBQUNBLEs7O1dBQ0RNLGdCLEdBQUEsNEJBQXdCO0FBQ3ZCO0FBQ0EsSzs7V0FDRHJCLGlCLEdBQUEsNkJBQW9DO0FBQ25DLGFBQU8sRUFBUCxDQURtQyxDQUNOO0FBQzdCLEs7O1dBQ0RzQixnQixHQUFBLDRCQUFtQztBQUNsQyxhQUFPLEVBQVAsQ0FEa0MsQ0FDTDtBQUM3QixLOztXQUNEQyxvQixHQUFBLGdDQUEwQztBQUN6QyxhQUFPLEVBQVAsQ0FEeUMsQ0FDVDtBQUNoQyxLOztXQUNEQyxxQixHQUFBLGlDQUE0QztBQUMzQyxhQUFPLEVBQVA7QUFDQSxLOztXQUNEQywwQixHQUFBLHNDQUE2RDtBQUM1RCxhQUFPLEVBQVA7QUFDQSxLOztXQUVEQyxvQixHQUFBLGdDQUF1QjtBQUN0QixVQUFNQyxjQUFjLEdBQUcsS0FBS04sZ0JBQUwsRUFBdkI7QUFDQSxVQUFNTyxrQkFBa0IsR0FBSUQsY0FBYyxJQUFJQSxjQUFjLENBQUNFLGlCQUFsQyxJQUF3RCxFQUFuRjtBQUNBLGFBQU9DLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkgsa0JBQWhCLENBQVA7QUFDQSxLOztXQUNESSxPLEdBQUEsbUJBQVU7QUFDVDtBQUNDLFdBQUs3RixxQkFBTCxFQUFELENBQXNDOEYsU0FBdEMsQ0FBZ0RDLFNBQWhEO0FBQ0EsSzs7V0FDREMsTyxHQUFBLG1CQUFVO0FBQ1Q7QUFDQyxXQUFLaEcscUJBQUwsRUFBRCxDQUFzQzhGLFNBQXRDLENBQWdERyxTQUFoRDtBQUNBLEs7OztJQTNSeUI1RCxXLFdBQ25CRyxXLEdBQTRDLEU7U0E2UnJDaEYsWSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFVJQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9VSUNvbXBvbmVudFwiO1xuaW1wb3J0IFJvdXRlclByb3h5IGZyb20gXCJzYXAvZmUvY29yZS9Sb3V0ZXJQcm94eVwiO1xuaW1wb3J0IEFwcFN0YXRlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwU3RhdGVIYW5kbGVyXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBEaWFnbm9zdGljcyBmcm9tIFwic2FwL2ZlL2NvcmUvc3VwcG9ydC9EaWFnbm9zdGljc1wiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgbGlicmFyeSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgVmFsdWVMaXN0SGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUxpc3RIZWxwZXJcIjtcbmltcG9ydCB7IFVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tcG9uZW50TWV0YWRhdGEgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudE1ldGFkYXRhXCI7XG5pbXBvcnQgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXIgZnJvbSBcIi4vQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGRlbGV0ZU1vZGVsQ2FjaGVEYXRhIH0gZnJvbSBcIi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB7IElTaGVsbFNlcnZpY2VzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NoZWxsU2VydmljZXNGYWN0b3J5XCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9OYXZpZ2F0aW9uU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB7IFNpZGVFZmZlY3RzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgeyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvRW52aXJvbm1lbnRTZXJ2aWNlRmFjdG9yeVwiO1xuXG5jb25zdCBOQVZDT05GID0ge1xuXHRGQ0w6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5GY2xcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAuZi5yb3V0aW5nLlJvdXRlclwiXG5cdH0sXG5cdE5BVkNPTlRBSU5FUjoge1xuXHRcdFZJRVdOQU1FOiBcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3Lk5hdkNvbnRhaW5lclwiLFxuXHRcdFJPVVRFUkNMQVNTOiBcInNhcC5tLnJvdXRpbmcuUm91dGVyXCJcblx0fVxufTtcblxuLyoqXG4gKiBNYWluIGNsYXNzIGZvciBjb21wb25lbnRzIHVzZWQgZm9yIGFuIGFwcGxpY2F0aW9uIGluIFNBUCBGaW9yaSBlbGVtZW50cy5cbiAqXG4gKiBBcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHVzaW5nIHRoZSB0ZW1wbGF0ZXMgYW5kIGJ1aWxkaW5nIGJsb2NrcyBwcm92aWRlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMgc2hvdWxkIGNyZWF0ZSB0aGVpciBhcHBzIGJ5IGV4dGVuZGluZyB0aGlzIGNvbXBvbmVudC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IHNlcnZpY2VzIHRoYXQgeW91IG5lZWQgZm9yIHRoZSBidWlsZGluZyBibG9ja3MgYW5kIHRlbXBsYXRlcyB0byB3b3JrIHByb3Blcmx5IGFyZSBzdGFydGVkLlxuICpcbiAqIFdoZW4geW91IHVzZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQgYXMgdGhlIGJhc2UgY29tcG9uZW50LCB5b3UgYWxzbyBuZWVkIHRvIHVzZSBhIHJvb3RWaWV3LiBTQVAgRmlvcmkgZWxlbWVudHMgcHJvdmlkZXMgdHdvIG9wdGlvbnM6IDxici8+XG4gKiAgLSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5OYXZDb250YWluZXIgd2hlbiB1c2luZyBzYXAubS5yb3V0aW5nLlJvdXRlciA8YnIvPlxuICogIC0gc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuRmNsIHdoZW4gdXNpbmcgc2FwLmYucm91dGluZy5Sb3V0ZXIgKEZDTCB1c2UgY2FzZSkgPGJyLz5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcbiAqL1xuQFVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XCIsIENvbXBvbmVudE1ldGFkYXRhLCB7XG5cdGludGVyZmFjZXM6IFtcInNhcC51aS5jb3JlLklBc3luY0NvbnRlbnRDcmVhdGlvblwiXSxcblx0Y29uZmlnOiB7XG5cdFx0ZnVsbFdpZHRoOiB0cnVlXG5cdH0sXG5cdG1hbmlmZXN0OiB7XG5cdFx0XCJzYXAudWk1XCI6IHtcblx0XHRcdHNlcnZpY2VzOiB7XG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5SZXNvdXJjZU1vZGVsU2VydmljZVwiLFxuXHRcdFx0XHRcdFwic3RhcnR1cFwiOiBcIndhaXRGb3JcIixcblx0XHRcdFx0XHRcInNldHRpbmdzXCI6IHtcblx0XHRcdFx0XHRcdFwiYnVuZGxlc1wiOiBbXCJzYXAuZmUuY29yZS5tZXNzYWdlYnVuZGxlXCJdLFxuXHRcdFx0XHRcdFx0XCJtb2RlbE5hbWVcIjogXCJzYXAuZmUuaTE4blwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRyb3V0aW5nU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJvdXRpbmdTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hlbGxTZXJ2aWNlczoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlNoZWxsU2VydmljZXNcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRTaGVsbFVJU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC51c2hlbGwudWk1c2VydmljZS5TaGVsbFVJU2VydmljZVwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuTmF2aWdhdGlvblNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRlbnZpcm9ubWVudENhcGFiaWxpdGllczoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkVudmlyb25tZW50U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNpZGVFZmZlY3RzU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlNpZGVFZmZlY3RzU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFzeW5jQ29tcG9uZW50U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkFzeW5jQ29tcG9uZW50U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRyb290Vmlldzoge1xuXHRcdFx0XHR2aWV3TmFtZTogTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUsXG5cdFx0XHRcdHR5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRpZDogXCJhcHBSb290Vmlld1wiXG5cdFx0XHR9LFxuXHRcdFx0cm91dGluZzoge1xuXHRcdFx0XHRjb25maWc6IHtcblx0XHRcdFx0XHRjb250cm9sSWQ6IFwiYXBwQ29udGVudFwiLFxuXHRcdFx0XHRcdHJvdXRlckNsYXNzOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTUyxcblx0XHRcdFx0XHR2aWV3VHlwZTogXCJYTUxcIixcblx0XHRcdFx0XHRjb250cm9sQWdncmVnYXRpb246IFwicGFnZXNcIixcblx0XHRcdFx0XHRhc3luYzogdHJ1ZSxcblx0XHRcdFx0XHRjb250YWluZXJPcHRpb25zOiB7XG5cdFx0XHRcdFx0XHRwcm9wYWdhdGVNb2RlbDogdHJ1ZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0ZGVzaWdudGltZTogXCJzYXAvZmUvY29yZS9kZXNpZ250aW1lL0FwcENvbXBvbmVudC5kZXNpZ250aW1lXCIsXG5cblx0bGlicmFyeTogXCJzYXAuZmUuY29yZVwiXG59KVxuY2xhc3MgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQge1xuXHRzdGF0aWMgaW5zdGFuY2VNYXA6IFJlY29yZDxzdHJpbmcsIEFwcENvbXBvbmVudD4gPSB7fTtcblx0cHJpdmF0ZSBfb1JvdXRlclByb3h5ITogUm91dGVyUHJveHk7XG5cdHByaXZhdGUgX29BcHBTdGF0ZUhhbmRsZXIhOiBBcHBTdGF0ZUhhbmRsZXI7XG5cdHByaXZhdGUgYkluaXRpYWxpemVSb3V0aW5nPzogYm9vbGVhbjtcblx0cHJpdmF0ZSBfb0RpYWdub3N0aWNzITogRGlhZ25vc3RpY3M7XG5cdHByaXZhdGUgZW50aXR5Q29udGFpbmVyOiBhbnk7XG5cdC8qKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXG5cdF9pc0ZjbEVuYWJsZWQoKSB7XG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldE1hbmlmZXN0RW50cnkoXCIvc2FwLnVpNVwiLCB0cnVlKTtcblx0XHRyZXR1cm4gTkFWQ09ORi5GQ0wuVklFV05BTUUgPT09IG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2dldFJvdXRlclByb3h5XG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMge29PYmplY3R9IEEgUmVmZXJlbmNlIHRvIHRoZSBSb3V0ZXJQcm94eVxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb3V0ZXJQcm94eSgpOiBSb3V0ZXJQcm94eSB7XG5cdFx0cmV0dXJuIHRoaXMuX29Sb3V0ZXJQcm94eTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlci5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNnZXRBcHBTdGF0ZUhhbmRsZXJcblx0ICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudFxuXHQgKiBAcmV0dXJucyB7b09iamVjdH0gQSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlclxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRBcHBTdGF0ZUhhbmRsZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBuYXYvRkNMIENvbnRyb2xsZXIuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQjZ2V0Um9vdFZpZXdDb250cm9sbGVyXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMge29PYmplY3R9IEEgcmVmZXJlbmNlIHRvIHRoZSBGQ0wgQ29udHJvbGxlclxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Vmlld0NvbnRyb2xsZXIoKTogQmFzZUNvbnRyb2xsZXIge1xuXHRcdHJldHVybiAodGhpcy5nZXRSb290Q29udHJvbCgpIGFzIFZpZXcpLmdldENvbnRyb2xsZXIoKSBhcyBCYXNlQ29udHJvbGxlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNnZXRSb290Q29udGFpbmVyXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMge29PYmplY3R9IEEgcmVmZXJlbmNlIHRvIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbFxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Q29udGFpbmVyKCkge1xuXHRcdHJldHVybiAodGhpcy5nZXRSb290Q29udHJvbCgpIGFzIFZpZXcpLmdldENvbnRlbnQoKVswXTtcblx0fVxuXG5cdGluaXQoLi4uYXJnczogYW55W10pIHtcblx0XHR0aGlzLnNldE1vZGVsKFxuXHRcdFx0bmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRcdGVkaXRNb2RlOiBsaWJyYXJ5LkVkaXRNb2RlLkRpc3BsYXksXG5cdFx0XHRcdGlzRWRpdGFibGU6IGZhbHNlLFxuXHRcdFx0XHRkcmFmdFN0YXR1czogbGlicmFyeS5EcmFmdFN0YXR1cy5DbGVhcixcblx0XHRcdFx0YnVzeTogZmFsc2UsXG5cdFx0XHRcdGJ1c3lMb2NhbDoge30sXG5cdFx0XHRcdHBhZ2VzOiB7fVxuXHRcdFx0fSksXG5cdFx0XHRcInVpXCJcblx0XHQpO1xuXG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHtcblx0XHRcdHBhZ2VzOiB7fVxuXHRcdH0pO1xuXG5cdFx0TW9kZWxIZWxwZXIuZW5oYW5jZUludGVybmFsSlNPTk1vZGVsKG9JbnRlcm5hbE1vZGVsKTtcblxuXHRcdHRoaXMuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cblx0XHR0aGlzLmJJbml0aWFsaXplUm91dGluZyA9IHRoaXMuYkluaXRpYWxpemVSb3V0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmJJbml0aWFsaXplUm91dGluZyA6IHRydWU7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5ID0gbmV3IFJvdXRlclByb3h5KCk7XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlciA9IG5ldyBBcHBTdGF0ZUhhbmRsZXIodGhpcyk7XG5cdFx0dGhpcy5fb0RpYWdub3N0aWNzID0gbmV3IERpYWdub3N0aWNzKCk7XG5cdFx0Y29uc3Qgb01vZGVsID0gdGhpcy5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdFx0aWYgKG9Nb2RlbCkge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkucmVxdWVzdE9iamVjdChcIi8kRW50aXR5Q29udGFpbmVyL1wiKTtcblx0XHR9XG5cblx0XHRjb25zdCBvTWFuaWZlc3RVSTUgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0TWFuaWZlc3RFbnRyeShcIi9zYXAudWk1XCIsIHRydWUpO1xuXHRcdGlmIChcblx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5GQ0wuVklFV05BTUUgJiZcblx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nLmNvbmZpZy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1Ncblx0XHQpIHtcblx0XHRcdExvZy5pbmZvKCdSb290Y29udGFpbmVyOiBcIicgKyBOQVZDT05GLkZDTC5WSUVXTkFNRSArICdcIiAtIFJvdXRlcmNsYXNzOiBcIicgKyBOQVZDT05GLkZDTC5ST1VURVJDTEFTUyArICdcIicpO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FICYmXG5cdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZy5jb25maWcucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTXG5cdFx0KSB7XG5cdFx0XHRMb2cuaW5mbygnUm9vdGNvbnRhaW5lcjogXCInICsgTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUgKyAnXCIgLSBSb3V0ZXJjbGFzczogXCInICsgTkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1MgKyAnXCInKTtcblx0XHR9IGVsc2UgaWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZS5pbmRleE9mKFwic2FwLmZlXCIpICE9PSAtMSkge1xuXHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFwiXFxuV3JvbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvdXBsZSAocm9vdFZpZXcvcm91dGVyQ2xhc3MpIGluIG1hbmlmZXN0IGZpbGUuXFxuXCIgK1xuXHRcdFx0XHRcdFwiQ3VycmVudCB2YWx1ZXMgYXJlIDooXCIgK1xuXHRcdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSArXG5cdFx0XHRcdFx0XCIvXCIgK1xuXHRcdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nLmNvbmZpZy5yb3V0ZXJDbGFzcyArXG5cdFx0XHRcdFx0XCIpXFxuXCIgK1xuXHRcdFx0XHRcdFwiRXhwZWN0ZWQgdmFsdWVzIGFyZSBcXG5cIiArXG5cdFx0XHRcdFx0XCJcXHQgLSAoXCIgK1xuXHRcdFx0XHRcdE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FICtcblx0XHRcdFx0XHRcIi9cIiArXG5cdFx0XHRcdFx0TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1MgK1xuXHRcdFx0XHRcdFwiKVxcblwiICtcblx0XHRcdFx0XHRcIlxcdCAtIChcIiArXG5cdFx0XHRcdFx0TkFWQ09ORi5GQ0wuVklFV05BTUUgK1xuXHRcdFx0XHRcdFwiL1wiICtcblx0XHRcdFx0XHROQVZDT05GLkZDTC5ST1VURVJDTEFTUyArXG5cdFx0XHRcdFx0XCIpXCJcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5pbmZvKCdSb290Y29udGFpbmVyOiBcIicgKyBvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgKyAnXCIgLSBSb3V0ZXJjbGFzczogXCInICsgTkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1MgKyAnXCInKTtcblx0XHR9XG5cblx0XHQvLyBBZGRpbmcgU2VtYW50aWMgRGF0ZSBPcGVyYXRvcnNcblx0XHQvLyBDb21tZW50aW5nIHNpbmNlIGl0IGlzIG5vdCBuZWVkZWQgZm9yIFNpbmdsZVJhbmdlXG5cdFx0Ly8gU2VtYW50aWNEYXRlT3BlcmF0b3JzLmFkZFNlbWFudGljRGF0ZU9wZXJhdG9ycygpO1xuXG5cdFx0Ly8gdGhlIGluaXQgZnVuY3Rpb24gY29uZmlndXJlcyB0aGUgcm91dGluZyBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzIGFib3ZlXG5cdFx0Ly8gaXQgd2lsbCBjYWxsIHRoZSBjcmVhdGVDb250ZW50IGZ1bmN0aW9uIHRvIGluc3RhbnRpYXRlIHRoZSBSb290VmlldyBhbmQgYWRkIGl0IHRvIHRoZSBVSUNvbXBvbmVudCBhZ2dyZWdhdGlvbnNcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0VUlDb21wb25lbnQucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcywgYXJncyk7XG5cdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlTWFwW3RoaXMuZ2V0SWQoKV0gPSB0aGlzO1xuXHR9XG5cdG9uU2VydmljZXNTdGFydGVkKCkge1xuXHRcdC8vcm91dGVyIG11c3QgYmUgc3RhcnRlZCBvbmNlIHRoZSByb290Y29udGFpbmVyIGlzIGluaXRpYWxpemVkXG5cdFx0Ly9zdGFydGluZyBvZiB0aGUgcm91dGVyXG5cdFx0Y29uc3QgZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uID0gKCkgPT4ge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXJcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGlmICgodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBhbnkpLmF0dGFjaFJvdXRlTWF0Y2hlcnMpIHtcblx0XHRcdFx0XHRcdCh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIGFueSkuYXR0YWNoUm91dGVNYXRjaGVycygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlcigpLmluaXRpYWxpemUoKTtcblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlclByb3h5KCkuaW5pdCh0aGlzLCB0aGlzLl9pc0ZjbEVuYWJsZWQoKSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IHNhcC51aS5nZXRDb3JlKCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIikgYXMgUmVzb3VyY2VCdW5kbGU7XG5cblx0XHRcdFx0XHQodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBhbnkpLmRpc3BsYXlNZXNzYWdlUGFnZShcblx0XHRcdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19BUFBfQ09NUE9ORU5UX1NBUEZFX0FQUFNUQVJUX1RFQ0hOSUNBTF9JU1NVRVNcIiksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSxcblx0XHRcdFx0XHRcdFx0RkNMTGV2ZWw6IDBcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0aWYgKHRoaXMuYkluaXRpYWxpemVSb3V0aW5nKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRSb3V0aW5nU2VydmljZSgpXG5cdFx0XHRcdC5pbml0aWFsaXplUm91dGluZygpXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQodGhpcy5nZXRSb290Q29udHJvbCgpIGFzIGFueSkuYXR0YWNoQWZ0ZXJJbml0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uKGVycjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiY2Fubm90IGNhbm5vdCBpbml0aWFsaXplIHJvdXRpbmc6IFwiICsgZXJyKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdGV4aXQoKSB7XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlci5kZXN0cm95KCk7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5LmRlc3Ryb3koKTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRlbGV0ZSB0aGlzLl9vQXBwU3RhdGVIYW5kbGVyO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29Sb3V0ZXJQcm94eTtcblx0XHRkZWxldGVNb2RlbENhY2hlRGF0YSh0aGlzLmdldE1ldGFNb2RlbCgpKTtcblx0XHR0aGlzLmdldE1vZGVsKFwidWlcIikuZGVzdHJveSgpO1xuXHR9XG5cdGdldE1ldGFNb2RlbCgpOiBPRGF0YU1ldGFNb2RlbCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0fVxuXHRnZXREaWFnbm9zdGljcygpIHtcblx0XHRyZXR1cm4gdGhpcy5fb0RpYWdub3N0aWNzO1xuXHR9XG5cdGRlc3Ryb3koLi4uYXJnczogYW55W10pIHtcblx0XHQvLyBMRUFLUywgd2l0aCB3b3JrYXJvdW5kIGZvciBzb21lIEZsZXggLyBNREMgaXNzdWVcblx0XHR0cnkge1xuXHRcdFx0Ly8gXHQvLyBUaGlzIG9uZSBpcyBvbmx5IGEgbGVhayBpZiB5b3UgZG9uJ3QgZ28gYmFjayB0byB0aGUgc2FtZSBjb21wb25lbnQgaW4gdGhlIGxvbmcgcnVuXG5cdFx0XHQvL2RlbGV0ZSBzYXAudWkuZmwuRmxleENvbnRyb2xsZXJGYWN0b3J5Ll9jb21wb25lbnRJbnN0YW50aWF0aW9uUHJvbWlzZXNbdGhpcy5nZXRJZCgpXTtcblxuXHRcdFx0VmFsdWVMaXN0SGVscGVyLmluaXRpYWxpemVDYWNoZWRWYWx1ZUhlbHAoKTtcblxuXHRcdFx0ZGVsZXRlIEFwcENvbXBvbmVudC5pbnN0YW5jZU1hcFt0aGlzLmdldElkKCldO1xuXG5cdFx0XHQvLyBcdHZhciBvUmVnaXN0cnkgPSBzYXAudWkubWRjLnAxM24uRW5naW5lLmdldEluc3RhbmNlKCkuX2dldFJlZ2lzdHJ5KCk7XG5cdFx0XHQvLyBcdE9iamVjdC5rZXlzKG9SZWdpc3RyeSkuZm9yRWFjaChmdW5jdGlvbihzS2V5KSB7XG5cdFx0XHQvLyBcdFx0T2JqZWN0LmtleXMob1JlZ2lzdHJ5W3NLZXldLmNvbnRyb2xsZXIpLmZvckVhY2goZnVuY3Rpb24oc0NvbnRyb2xsZXJLZXkpIHtcblx0XHRcdC8vIFx0XHRcdG9SZWdpc3RyeVtzS2V5XS5jb250cm9sbGVyW3NDb250cm9sbGVyS2V5XS5kZXN0cm95KCk7XG5cdFx0XHQvLyBcdFx0fSk7XG5cdFx0XHQvLyBcdH0pO1xuXHRcdFx0Ly8gXHRzYXAudWkubWRjLnAxM24uRW5naW5lLmdldEluc3RhbmNlKCkuZGVzdHJveSgpO1xuXHRcdFx0ZGVsZXRlICh3aW5kb3cgYXMgYW55KS5fcm91dGluZztcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuaW5mbyhlKTtcblx0XHR9XG5cblx0XHQvL1dPUktBUk9VTkQgZm9yIHN0aWNreSBkaXNjYXJkIHJlcXVlc3QgOiBkdWUgdG8gYXN5bmMgY2FsbGJhY2ssIHJlcXVlc3QgdHJpZ2dlcmVkIGJ5IHRoZSBleGl0QXBwbGljYXRpb24gd2lsbCBiZSBzZW5kIGFmdGVyIHRoZSBVSUNvbXBvbmVudC5wcm90b3R5cGUuZGVzdHJveVxuXHRcdC8vc28gd2UgbmVlZCB0byBjb3B5IHRoZSBSZXF1ZXN0b3IgaGVhZGVycyBhcyBpdCB3aWxsIGJlIGRlc3Ryb3lcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Y29uc3Qgb01haW5Nb2RlbCA9ICh0aGlzIGFzIGFueSkub01vZGVsc1t1bmRlZmluZWRdO1xuXHRcdGNvbnN0IG9IZWFkZXJzID0galF1ZXJ5LmV4dGVuZCh7fSwgb01haW5Nb2RlbC5vUmVxdWVzdG9yLm1IZWFkZXJzKTtcblx0XHQvLyBBcyB3ZSBuZWVkIHRvIGNsZWFudXAgdGhlIGFwcGxpY2F0aW9uIC8gaGFuZGxlIHRoZSBkaXJ0eSBvYmplY3Qgd2UgbmVlZCB0byBjYWxsIG91ciBjbGVhbnVwIGJlZm9yZSB0aGUgbW9kZWxzIGFyZSBkZXN0cm95ZWRcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCkuYmVmb3JlRXhpdCgpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0VUlDb21wb25lbnQucHJvdG90eXBlLmRlc3Ryb3kuYXBwbHkodGhpcywgW2FyZ3NdKTtcblx0XHRvTWFpbk1vZGVsLm9SZXF1ZXN0b3IubUhlYWRlcnMgPSBvSGVhZGVycztcblx0fVxuXHRnZXRDb21wb25lbnREYXRhKCk6IGFueSB7XG5cdFx0cmV0dXJuIHN1cGVyLmdldENvbXBvbmVudERhdGEoKTtcblx0fVxuXHRnZXRSb3V0aW5nU2VydmljZSgpOiBSb3V0aW5nU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFJvdXRpbmdTZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cdGdldFNoZWxsU2VydmljZXMoKTogSVNoZWxsU2VydmljZXMge1xuXHRcdHJldHVybiB7fSBhcyBJU2hlbGxTZXJ2aWNlczsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXHRnZXROYXZpZ2F0aW9uU2VydmljZSgpOiBOYXZpZ2F0aW9uU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIE5hdmlnYXRpb25TZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cdGdldFNpZGVFZmZlY3RzU2VydmljZSgpOiBTaWRlRWZmZWN0c1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBTaWRlRWZmZWN0c1NlcnZpY2U7XG5cdH1cblx0Z2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKTogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0U3RhcnR1cFBhcmFtZXRlcnMoKSB7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSB0aGlzLmdldENvbXBvbmVudERhdGEoKSBhcyBhbnk7XG5cdFx0Y29uc3Qgb1N0YXJ0VXBQYXJhbWV0ZXJzID0gKG9Db21wb25lbnREYXRhICYmIG9Db21wb25lbnREYXRhLnN0YXJ0dXBQYXJhbWV0ZXJzKSB8fCB7fTtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG9TdGFydFVwUGFyYW1ldGVycyk7XG5cdH1cblx0cmVzdG9yZSgpIHtcblx0XHQvLyBjYWxsZWQgYnkgRkxQIHdoZW4gYXBwIHNhcC1rZWVwLWFsaXZlIGlzIGVuYWJsZWQgYW5kIGFwcCBpcyByZXN0b3JlZFxuXHRcdCh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIGFueSkudmlld1N0YXRlLm9uUmVzdG9yZSgpO1xuXHR9XG5cdHN1c3BlbmQoKSB7XG5cdFx0Ly8gY2FsbGVkIGJ5IEZMUCB3aGVuIGFwcCBzYXAta2VlcC1hbGl2ZSBpcyBlbmFibGVkIGFuZCBhcHAgaXMgc3VzcGVuZGVkXG5cdFx0KHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgYW55KS52aWV3U3RhdGUub25TdXNwZW5kKCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXBwQ29tcG9uZW50O1xuIl19
385
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFwcENvbXBvbmVudC50cyJdLCJuYW1lcyI6WyJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJST1VURVJDTEFTUyIsIk5BVkNPTlRBSU5FUiIsIkFwcENvbXBvbmVudCIsImRlZmluZVVJNUNsYXNzIiwiaW50ZXJmYWNlcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0Iiwic2VydmljZXMiLCJyZXNvdXJjZU1vZGVsIiwiZmFjdG9yeU5hbWUiLCJyb3V0aW5nU2VydmljZSIsInN0YXJ0dXAiLCJzaGVsbFNlcnZpY2VzIiwiU2hlbGxVSVNlcnZpY2UiLCJuYXZpZ2F0aW9uU2VydmljZSIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiYXN5bmNDb21wb25lbnRTZXJ2aWNlIiwicm9vdFZpZXciLCJ2aWV3TmFtZSIsInR5cGUiLCJhc3luYyIsImlkIiwicm91dGluZyIsImNvbnRyb2xJZCIsInJvdXRlckNsYXNzIiwidmlld1R5cGUiLCJjb250cm9sQWdncmVnYXRpb24iLCJjb250YWluZXJPcHRpb25zIiwicHJvcGFnYXRlTW9kZWwiLCJkZXNpZ250aW1lIiwibGlicmFyeSIsIl9pc0ZjbEVuYWJsZWQiLCJvTWFuaWZlc3RVSTUiLCJnZXRNZXRhZGF0YSIsImdldE1hbmlmZXN0RW50cnkiLCJnZXRSb3V0ZXJQcm94eSIsIl9vUm91dGVyUHJveHkiLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJfb0FwcFN0YXRlSGFuZGxlciIsImdldFJvb3RWaWV3Q29udHJvbGxlciIsImdldFJvb3RDb250cm9sIiwiZ2V0Q29udHJvbGxlciIsImdldFJvb3RDb250YWluZXIiLCJnZXRDb250ZW50IiwiaW5pdCIsInVpTW9kZWwiLCJKU09OTW9kZWwiLCJlZGl0TW9kZSIsIkVkaXRNb2RlIiwiRGlzcGxheSIsImlzRWRpdGFibGUiLCJkcmFmdFN0YXR1cyIsIkRyYWZ0U3RhdHVzIiwiQ2xlYXIiLCJidXN5IiwiYnVzeUxvY2FsIiwicGFnZXMiLCJvSW50ZXJuYWxNb2RlbCIsIk1vZGVsSGVscGVyIiwiZW5oYW5jZVVpSlNPTk1vZGVsIiwiZW5oYW5jZUludGVybmFsSlNPTk1vZGVsIiwic2V0TW9kZWwiLCJiSW5pdGlhbGl6ZVJvdXRpbmciLCJ1bmRlZmluZWQiLCJSb3V0ZXJQcm94eSIsIkFwcFN0YXRlSGFuZGxlciIsIl9vRGlhZ25vc3RpY3MiLCJEaWFnbm9zdGljcyIsIm9Nb2RlbCIsImdldE1vZGVsIiwiZW50aXR5Q29udGFpbmVyIiwiZ2V0TWV0YU1vZGVsIiwicmVxdWVzdE9iamVjdCIsIkxvZyIsImluZm8iLCJpbmRleE9mIiwiRXJyb3IiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJpbnN0YW5jZU1hcCIsImdldElkIiwib25TZXJ2aWNlc1N0YXJ0ZWQiLCJmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24iLCJ0aGVuIiwiYXR0YWNoUm91dGVNYXRjaGVycyIsImdldFJvdXRlciIsImluaXRpYWxpemUiLCJjYXRjaCIsImVycm9yIiwib1Jlc291cmNlQnVuZGxlIiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsImRpc3BsYXlNZXNzYWdlUGFnZSIsImdldFRleHQiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwibWVzc2FnZSIsIkZDTExldmVsIiwiZ2V0Um91dGluZ1NlcnZpY2UiLCJpbml0aWFsaXplUm91dGluZyIsImF0dGFjaEFmdGVySW5pdCIsImVyciIsImV4aXQiLCJkZXN0cm95IiwiZGVsZXRlTW9kZWxDYWNoZURhdGEiLCJnZXREaWFnbm9zdGljcyIsIlZhbHVlTGlzdEhlbHBlciIsImluaXRpYWxpemVDYWNoZWRWYWx1ZUhlbHAiLCJ3aW5kb3ciLCJfcm91dGluZyIsImUiLCJvTWFpbk1vZGVsIiwib01vZGVscyIsIm9IZWFkZXJzIiwialF1ZXJ5IiwiZXh0ZW5kIiwib1JlcXVlc3RvciIsIm1IZWFkZXJzIiwiYmVmb3JlRXhpdCIsImFyZ3MiLCJnZXRDb21wb25lbnREYXRhIiwiZ2V0U2hlbGxTZXJ2aWNlcyIsImdldE5hdmlnYXRpb25TZXJ2aWNlIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJnZXRTdGFydHVwUGFyYW1ldGVycyIsIm9Db21wb25lbnREYXRhIiwib1N0YXJ0VXBQYXJhbWV0ZXJzIiwic3RhcnR1cFBhcmFtZXRlcnMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3RvcmUiLCJ2aWV3U3RhdGUiLCJvblJlc3RvcmUiLCJzdXNwZW5kIiwib25TdXNwZW5kIiwiVUlDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUFzQkEsTUFBTUEsT0FBTyxHQUFHO0FBQ2ZDLElBQUFBLEdBQUcsRUFBRTtBQUNKQyxNQUFBQSxRQUFRLEVBQUUseUNBRE47QUFFSkMsTUFBQUEsV0FBVyxFQUFFO0FBRlQsS0FEVTtBQUtmQyxJQUFBQSxZQUFZLEVBQUU7QUFDYkYsTUFBQUEsUUFBUSxFQUFFLGtEQURHO0FBRWJDLE1BQUFBLFdBQVcsRUFBRTtBQUZBO0FBTEMsR0FBaEI7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztNQXFFTUUsWSxXQXBFTEMsY0FBYyxDQUFDLDBCQUFELEVBQTZCO0FBQzNDQyxJQUFBQSxVQUFVLEVBQUUsQ0FBQyxtQ0FBRCxDQUQrQjtBQUUzQ0MsSUFBQUEsTUFBTSxFQUFFO0FBQ1BDLE1BQUFBLFNBQVMsRUFBRTtBQURKLEtBRm1DO0FBSzNDQyxJQUFBQSxRQUFRLEVBQUU7QUFDVCxpQkFBVztBQUNWQyxRQUFBQSxRQUFRLEVBQUU7QUFDVEMsVUFBQUEsYUFBYSxFQUFFO0FBQ2RDLFlBQUFBLFdBQVcsRUFBRSwyQ0FEQztBQUVkLHVCQUFXLFNBRkc7QUFHZCx3QkFBWTtBQUNYLHlCQUFXLENBQUMsMkJBQUQsQ0FEQTtBQUVYLDJCQUFhO0FB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d0I7QUFDdkIsb0NBQWFBLGdCQUFiO0FBQ0EsSzs7V0FDRHRCLGlCLEdBQUEsNkJBQW9DO0FBQ25DLGFBQU8sRUFBUCxDQURtQyxDQUNOO0FBQzdCLEs7O1dBQ0R1QixnQixHQUFBLDRCQUFtQztBQUNsQyxhQUFPLEVBQVAsQ0FEa0MsQ0FDTDtBQUM3QixLOztXQUNEQyxvQixHQUFBLGdDQUEwQztBQUN6QyxhQUFPLEVBQVAsQ0FEeUMsQ0FDVDtBQUNoQyxLOztXQUNEQyxxQixHQUFBLGlDQUE0QztBQUMzQyxhQUFPLEVBQVA7QUFDQSxLOztXQUNEQywwQixHQUFBLHNDQUE2RDtBQUM1RCxhQUFPLEVBQVA7QUFDQSxLOztXQUVEQyxvQixHQUFBLGdDQUF1QjtBQUN0QixVQUFNQyxjQUFjLEdBQUcsS0FBS04sZ0JBQUwsRUFBdkI7QUFDQSxVQUFNTyxrQkFBa0IsR0FBSUQsY0FBYyxJQUFJQSxjQUFjLENBQUNFLGlCQUFsQyxJQUF3RCxFQUFuRjtBQUNBLGFBQU9DLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkgsa0JBQWhCLENBQVA7QUFDQSxLOztXQUNESSxPLEdBQUEsbUJBQVU7QUFDVDtBQUNDLFdBQUs1RixxQkFBTCxFQUFELENBQXNDNkYsU0FBdEMsQ0FBZ0RDLFNBQWhEO0FBQ0EsSzs7V0FDREMsTyxHQUFBLG1CQUFVO0FBQ1Q7QUFDQyxXQUFLL0YscUJBQUwsRUFBRCxDQUFzQzZGLFNBQXRDLENBQWdERyxTQUFoRDtBQUNBLEs7OztJQXJSeUJDLFcsV0FDbkJ6RCxXLEdBQTRDLEU7U0F1UnJDL0UsWSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQXBwU3RhdGVIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9BcHBTdGF0ZUhhbmRsZXJcIjtcbmltcG9ydCBSb3V0ZXJQcm94eSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvcm91dGluZy9Sb3V0ZXJQcm94eVwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB7IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9FbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9OYXZpZ2F0aW9uU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1JvdXRpbmdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHsgSVNoZWxsU2VydmljZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCB7IFNpZGVFZmZlY3RzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgRGlhZ25vc3RpY3MgZnJvbSBcInNhcC9mZS9jb3JlL3N1cHBvcnQvRGlhZ25vc3RpY3NcIjtcbmltcG9ydCBWYWx1ZUxpc3RIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlTGlzdEhlbHBlclwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IFVJQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9VSUNvbXBvbmVudFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgeyBDb3JlRXggfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXIgZnJvbSBcIi4vQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGRlbGV0ZU1vZGVsQ2FjaGVEYXRhIH0gZnJvbSBcIi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgZnJvbSBcIi4vaGVscGVycy9TZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcblxuY29uc3QgTkFWQ09ORiA9IHtcblx0RkNMOiB7XG5cdFx0VklFV05BTUU6IFwic2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuRmNsXCIsXG5cdFx0Uk9VVEVSQ0xBU1M6IFwic2FwLmYucm91dGluZy5Sb3V0ZXJcIlxuXHR9LFxuXHROQVZDT05UQUlORVI6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5OYXZDb250YWluZXJcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAubS5yb3V0aW5nLlJvdXRlclwiXG5cdH1cbn07XG5cbi8qKlxuICogTWFpbiBjbGFzcyBmb3IgY29tcG9uZW50cyB1c2VkIGZvciBhbiBhcHBsaWNhdGlvbiBpbiBTQVAgRmlvcmkgZWxlbWVudHMuXG4gKlxuICogQXBwbGljYXRpb24gZGV2ZWxvcGVycyB1c2luZyB0aGUgdGVtcGxhdGVzIGFuZCBidWlsZGluZyBibG9ja3MgcHJvdmlkZWQgYnkgU0FQIEZpb3JpIGVsZW1lbnRzIHNob3VsZCBjcmVhdGUgdGhlaXIgYXBwcyBieSBleHRlbmRpbmcgdGhpcyBjb21wb25lbnQuXG4gKiBUaGlzIGVuc3VyZXMgdGhhdCBhbGwgdGhlIG5lY2Vzc2FyeSBzZXJ2aWNlcyB0aGF0IHlvdSBuZWVkIGZvciB0aGUgYnVpbGRpbmcgYmxvY2tzIGFuZCB0ZW1wbGF0ZXMgdG8gd29yayBwcm9wZXJseSBhcmUgc3RhcnRlZC5cbiAqXG4gKiBXaGVuIHlvdSB1c2Ugc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50IGFzIHRoZSBiYXNlIGNvbXBvbmVudCwgeW91IGFsc28gbmVlZCB0byB1c2UgYSByb290Vmlldy4gU0FQIEZpb3JpIGVsZW1lbnRzIHByb3ZpZGVzIHR3byBvcHRpb25zOiA8YnIvPlxuICogIC0gc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuTmF2Q29udGFpbmVyIHdoZW4gdXNpbmcgc2FwLm0ucm91dGluZy5Sb3V0ZXIgPGJyLz5cbiAqICAtIHNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3LkZjbCB3aGVuIHVzaW5nIHNhcC5mLnJvdXRpbmcuUm91dGVyIChGQ0wgdXNlIGNhc2UpIDxici8+XG4gKlxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkFwcENvbXBvbmVudFwiLCB7XG5cdGludGVyZmFjZXM6IFtcInNhcC51aS5jb3JlLklBc3luY0NvbnRlbnRDcmVhdGlvblwiXSxcblx0Y29uZmlnOiB7XG5cdFx0ZnVsbFdpZHRoOiB0cnVlXG5cdH0sXG5cdG1hbmlmZXN0OiB7XG5cdFx0XCJzYXAudWk1XCI6IHtcblx0XHRcdHNlcnZpY2VzOiB7XG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5SZXNvdXJjZU1vZGVsU2VydmljZVwiLFxuXHRcdFx0XHRcdFwic3RhcnR1cFwiOiBcIndhaXRGb3JcIixcblx0XHRcdFx0XHRcInNldHRpbmdzXCI6IHtcblx0XHRcdFx0XHRcdFwiYnVuZGxlc1wiOiBbXCJzYXAuZmUuY29yZS5tZXNzYWdlYnVuZGxlXCJdLFxuXHRcdFx0XHRcdFx0XCJtb2RlbE5hbWVcIjogXCJzYXAuZmUuaTE4blwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRyb3V0aW5nU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJvdXRpbmdTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c2hlbGxTZXJ2aWNlczoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlNoZWxsU2VydmljZXNcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRTaGVsbFVJU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC51c2hlbGwudWk1c2VydmljZS5TaGVsbFVJU2VydmljZVwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuTmF2aWdhdGlvblNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRlbnZpcm9ubWVudENhcGFiaWxpdGllczoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkVudmlyb25tZW50U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNpZGVFZmZlY3RzU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlNpZGVFZmZlY3RzU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFzeW5jQ29tcG9uZW50U2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkFzeW5jQ29tcG9uZW50U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRyb290Vmlldzoge1xuXHRcdFx0XHR2aWV3TmFtZTogTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUsXG5cdFx0XHRcdHR5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRpZDogXCJhcHBSb290Vmlld1wiXG5cdFx0XHR9LFxuXHRcdFx0cm91dGluZzoge1xuXHRcdFx0XHRjb25maWc6IHtcblx0XHRcdFx0XHRjb250cm9sSWQ6IFwiYXBwQ29udGVudFwiLFxuXHRcdFx0XHRcdHJvdXRlckNsYXNzOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTUyxcblx0XHRcdFx0XHR2aWV3VHlwZTogXCJYTUxcIixcblx0XHRcdFx0XHRjb250cm9sQWdncmVnYXRpb246IFwicGFnZXNcIixcblx0XHRcdFx0XHRhc3luYzogdHJ1ZSxcblx0XHRcdFx0XHRjb250YWluZXJPcHRpb25zOiB7XG5cdFx0XHRcdFx0XHRwcm9wYWdhdGVNb2RlbDogdHJ1ZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0ZGVzaWdudGltZTogXCJzYXAvZmUvY29yZS9kZXNpZ250aW1lL0FwcENvbXBvbmVudC5kZXNpZ250aW1lXCIsXG5cblx0bGlicmFyeTogXCJzYXAuZmUuY29yZVwiXG59KVxuY2xhc3MgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQge1xuXHRzdGF0aWMgaW5zdGFuY2VNYXA6IFJlY29yZDxzdHJpbmcsIEFwcENvbXBvbmVudD4gPSB7fTtcblx0cHJpdmF0ZSBfb1JvdXRlclByb3h5ITogUm91dGVyUHJveHk7XG5cdHByaXZhdGUgX29BcHBTdGF0ZUhhbmRsZXIhOiBBcHBTdGF0ZUhhbmRsZXI7XG5cdHByaXZhdGUgYkluaXRpYWxpemVSb3V0aW5nPzogYm9vbGVhbjtcblx0cHJpdmF0ZSBfb0RpYWdub3N0aWNzITogRGlhZ25vc3RpY3M7XG5cdHByaXZhdGUgZW50aXR5Q29udGFpbmVyOiBhbnk7XG5cdC8qKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXG5cdF9pc0ZjbEVuYWJsZWQoKSB7XG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldE1hbmlmZXN0RW50cnkoXCIvc2FwLnVpNVwiLCB0cnVlKTtcblx0XHRyZXR1cm4gTkFWQ09ORi5GQ0wuVklFV05BTUUgPT09IG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2dldFJvdXRlclByb3h5XG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMge29PYmplY3R9IEEgUmVmZXJlbmNlIHRvIHRoZSBSb3V0ZXJQcm94eVxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb3V0ZXJQcm94eSgpOiBSb3V0ZXJQcm94eSB7XG5cdFx0cmV0dXJuIHRoaXMuX29Sb3V0ZXJQcm94eTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlci5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNnZXRBcHBTdGF0ZUhhbmRsZXJcblx0ICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudFxuXHQgKiBAcmV0dXJucyB7b09iamVjdH0gQSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlclxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRBcHBTdGF0ZUhhbmRsZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBuYXYvRkNMIENvbnRyb2xsZXIuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQjZ2V0Um9vdFZpZXdDb250cm9sbGVyXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMge29PYmplY3R9IEEgcmVmZXJlbmNlIHRvIHRoZSBGQ0wgQ29udHJvbGxlclxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Vmlld0NvbnRyb2xsZXIoKTogQmFzZUNvbnRyb2xsZXIge1xuXHRcdHJldHVybiAodGhpcy5nZXRSb290Q29udHJvbCgpIGFzIFZpZXcpLmdldENvbnRyb2xsZXIoKSBhcyBCYXNlQ29udHJvbGxlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNnZXRSb290Q29udGFpbmVyXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMge29PYmplY3R9IEEgcmVmZXJlbmNlIHRvIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbFxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Q29udGFpbmVyKCkge1xuXHRcdHJldHVybiAodGhpcy5nZXRSb290Q29udHJvbCgpIGFzIFZpZXcpLmdldENvbnRlbnQoKVswXTtcblx0fVxuXG5cdGluaXQoKSB7XG5cdFx0Y29uc3QgdWlNb2RlbCA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0ZWRpdE1vZGU6IGxpYnJhcnkuRWRpdE1vZGUuRGlzcGxheSxcblx0XHRcdGlzRWRpdGFibGU6IGZhbHNlLFxuXHRcdFx0ZHJhZnRTdGF0dXM6IGxpYnJhcnkuRHJhZnRTdGF0dXMuQ2xlYXIsXG5cdFx0XHRidXN5OiBmYWxzZSxcblx0XHRcdGJ1c3lMb2NhbDoge30sXG5cdFx0XHRwYWdlczoge31cblx0XHR9KTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbCA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0cGFnZXM6IHt9XG5cdFx0fSk7XG5cblx0XHRNb2RlbEhlbHBlci5lbmhhbmNlVWlKU09OTW9kZWwodWlNb2RlbCwgbGlicmFyeSk7XG5cdFx0TW9kZWxIZWxwZXIuZW5oYW5jZUludGVybmFsSlNPTk1vZGVsKG9JbnRlcm5hbE1vZGVsKTtcblxuXHRcdHRoaXMuc2V0TW9kZWwodWlNb2RlbCwgXCJ1aVwiKTtcblx0XHR0aGlzLnNldE1vZGVsKG9JbnRlcm5hbE1vZGVsLCBcImludGVybmFsXCIpO1xuXG5cdFx0dGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgPSB0aGlzLmJJbml0aWFsaXplUm91dGluZyAhPT0gdW5kZWZpbmVkID8gdGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgOiB0cnVlO1xuXHRcdHRoaXMuX29Sb3V0ZXJQcm94eSA9IG5ldyBSb3V0ZXJQcm94eSgpO1xuXHRcdHRoaXMuX29BcHBTdGF0ZUhhbmRsZXIgPSBuZXcgQXBwU3RhdGVIYW5kbGVyKHRoaXMpO1xuXHRcdHRoaXMuX29EaWFnbm9zdGljcyA9IG5ldyBEaWFnbm9zdGljcygpO1xuXHRcdGNvbnN0IG9Nb2RlbCA9IHRoaXMuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRcdGlmIChvTW9kZWwpIHtcblx0XHRcdHRoaXMuZW50aXR5Q29udGFpbmVyID0gb01vZGVsLmdldE1ldGFNb2RlbCgpLnJlcXVlc3RPYmplY3QoXCIvJEVudGl0eUNvbnRhaW5lci9cIik7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldE1hbmlmZXN0RW50cnkoXCIvc2FwLnVpNVwiLCB0cnVlKTtcblx0XHRpZiAoXG5cdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuRkNMLlZJRVdOQU1FICYmXG5cdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZy5jb25maWcucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuRkNMLlJPVVRFUkNMQVNTXG5cdFx0KSB7XG5cdFx0XHRMb2cuaW5mbygnUm9vdGNvbnRhaW5lcjogXCInICsgTkFWQ09ORi5GQ0wuVklFV05BTUUgKyAnXCIgLSBSb3V0ZXJjbGFzczogXCInICsgTkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1MgKyAnXCInKTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRSAmJlxuXHRcdFx0b01hbmlmZXN0VUk1LnJvdXRpbmcuY29uZmlnLnJvdXRlckNsYXNzID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU1xuXHRcdCkge1xuXHRcdFx0TG9nLmluZm8oJ1Jvb3Rjb250YWluZXI6IFwiJyArIE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FICsgJ1wiIC0gUm91dGVyY2xhc3M6IFwiJyArIE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTICsgJ1wiJyk7XG5cdFx0fSBlbHNlIGlmIChvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUuaW5kZXhPZihcInNhcC5mZVwiKSAhPT0gLTEpIHtcblx0XHRcdHRocm93IEVycm9yKFxuXHRcdFx0XHRcIlxcbldyb25nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb3VwbGUgKHJvb3RWaWV3L3JvdXRlckNsYXNzKSBpbiBtYW5pZmVzdCBmaWxlLlxcblwiICtcblx0XHRcdFx0XHRcIkN1cnJlbnQgdmFsdWVzIGFyZSA6KFwiICtcblx0XHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgK1xuXHRcdFx0XHRcdFwiL1wiICtcblx0XHRcdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZy5jb25maWcucm91dGVyQ2xhc3MgK1xuXHRcdFx0XHRcdFwiKVxcblwiICtcblx0XHRcdFx0XHRcIkV4cGVjdGVkIHZhbHVlcyBhcmUgXFxuXCIgK1xuXHRcdFx0XHRcdFwiXFx0IC0gKFwiICtcblx0XHRcdFx0XHROQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRSArXG5cdFx0XHRcdFx0XCIvXCIgK1xuXHRcdFx0XHRcdE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTICtcblx0XHRcdFx0XHRcIilcXG5cIiArXG5cdFx0XHRcdFx0XCJcXHQgLSAoXCIgK1xuXHRcdFx0XHRcdE5BVkNPTkYuRkNMLlZJRVdOQU1FICtcblx0XHRcdFx0XHRcIi9cIiArXG5cdFx0XHRcdFx0TkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1MgK1xuXHRcdFx0XHRcdFwiKVwiXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuaW5mbygnUm9vdGNvbnRhaW5lcjogXCInICsgb01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lICsgJ1wiIC0gUm91dGVyY2xhc3M6IFwiJyArIE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTICsgJ1wiJyk7XG5cdFx0fVxuXG5cdFx0Ly8gQWRkaW5nIFNlbWFudGljIERhdGUgT3BlcmF0b3JzXG5cdFx0Ly8gQ29tbWVudGluZyBzaW5jZSBpdCBpcyBub3QgbmVlZGVkIGZvciBTaW5nbGVSYW5nZVxuXHRcdFNlbWFudGljRGF0ZU9wZXJhdG9ycy5hZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMoKTtcblxuXHRcdC8vIHRoZSBpbml0IGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIHJvdXRpbmcgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBhYm92ZVxuXHRcdC8vIGl0IHdpbGwgY2FsbCB0aGUgY3JlYXRlQ29udGVudCBmdW5jdGlvbiB0byBpbnN0YW50aWF0ZSB0aGUgUm9vdFZpZXcgYW5kIGFkZCBpdCB0byB0aGUgVUlDb21wb25lbnQgYWdncmVnYXRpb25zXG5cblx0XHRzdXBlci5pbml0KCk7XG5cdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlTWFwW3RoaXMuZ2V0SWQoKV0gPSB0aGlzO1xuXHR9XG5cdG9uU2VydmljZXNTdGFydGVkKCkge1xuXHRcdC8vcm91dGVyIG11c3QgYmUgc3RhcnRlZCBvbmNlIHRoZSByb290Y29udGFpbmVyIGlzIGluaXRpYWxpemVkXG5cdFx0Ly9zdGFydGluZyBvZiB0aGUgcm91dGVyXG5cdFx0Y29uc3QgZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uID0gKCkgPT4ge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXJcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGlmICgodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBhbnkpLmF0dGFjaFJvdXRlTWF0Y2hlcnMpIHtcblx0XHRcdFx0XHRcdCh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIGFueSkuYXR0YWNoUm91dGVNYXRjaGVycygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlcigpLmluaXRpYWxpemUoKTtcblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlclByb3h5KCkuaW5pdCh0aGlzLCB0aGlzLl9pc0ZjbEVuYWJsZWQoKSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIik7XG5cblx0XHRcdFx0XHQodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBhbnkpLmRpc3BsYXlNZXNzYWdlUGFnZShcblx0XHRcdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19BUFBfQ09NUE9ORU5UX1NBUEZFX0FQUFNUQVJUX1RFQ0hOSUNBTF9JU1NVRVNcIiksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSxcblx0XHRcdFx0XHRcdFx0RkNMTGV2ZWw6IDBcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0aWYgKHRoaXMuYkluaXRpYWxpemVSb3V0aW5nKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRSb3V0aW5nU2VydmljZSgpXG5cdFx0XHRcdC5pbml0aWFsaXplUm91dGluZygpXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQodGhpcy5nZXRSb290Q29udHJvbCgpIGFzIGFueSkuYXR0YWNoQWZ0ZXJJbml0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0ZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uKCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJjYW5ub3QgY2Fubm90IGluaXRpYWxpemUgcm91dGluZzogXCIgKyBlcnIpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0ZXhpdCgpIHtcblx0XHR0aGlzLl9vQXBwU3RhdGVIYW5kbGVyLmRlc3Ryb3koKTtcblx0XHR0aGlzLl9vUm91dGVyUHJveHkuZGVzdHJveSgpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb1JvdXRlclByb3h5O1xuXHRcdGRlbGV0ZU1vZGVsQ2FjaGVEYXRhKHRoaXMuZ2V0TWV0YU1vZGVsKCkpO1xuXHRcdHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKS5kZXN0cm95KCk7XG5cdH1cblx0Z2V0TWV0YU1vZGVsKCk6IE9EYXRhTWV0YU1vZGVsIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHR9XG5cdGdldERpYWdub3N0aWNzKCkge1xuXHRcdHJldHVybiB0aGlzLl9vRGlhZ25vc3RpY3M7XG5cdH1cblx0ZGVzdHJveSguLi5hcmdzOiBhbnlbXSkge1xuXHRcdC8vIExFQUtTLCB3aXRoIHdvcmthcm91bmQgZm9yIHNvbWUgRmxleCAvIE1EQyBpc3N1ZVxuXHRcdHRyeSB7XG5cdFx0XHQvLyBcdC8vIFRoaXMgb25lIGlzIG9ubHkgYSBsZWFrIGlmIHlvdSBkb24ndCBnbyBiYWNrIHRvIHRoZSBzYW1lIGNvbXBvbmVudCBpbiB0aGUgbG9uZyBydW5cblx0XHRcdC8vZGVsZXRlIHNhcC51aS5mbC5GbGV4Q29udHJvbGxlckZhY3RvcnkuX2NvbXBvbmVudEluc3RhbnRpYXRpb25Qcm9taXNlc1t0aGlzLmdldElkKCldO1xuXG5cdFx0XHRWYWx1ZUxpc3RIZWxwZXIuaW5pdGlhbGl6ZUNhY2hlZFZhbHVlSGVscCgpO1xuXG5cdFx0XHRkZWxldGUgQXBwQ29tcG9uZW50Lmluc3RhbmNlTWFwW3RoaXMuZ2V0SWQoKV07XG5cblx0XHRcdC8vIFx0dmFyIG9SZWdpc3RyeSA9IHNhcC51aS5tZGMucDEzbi5FbmdpbmUuZ2V0SW5zdGFuY2UoKS5fZ2V0UmVnaXN0cnkoKTtcblx0XHRcdC8vIFx0T2JqZWN0LmtleXMob1JlZ2lzdHJ5KS5mb3JFYWNoKGZ1bmN0aW9uKHNLZXkpIHtcblx0XHRcdC8vIFx0XHRPYmplY3Qua2V5cyhvUmVnaXN0cnlbc0tleV0uY29udHJvbGxlcikuZm9yRWFjaChmdW5jdGlvbihzQ29udHJvbGxlcktleSkge1xuXHRcdFx0Ly8gXHRcdFx0b1JlZ2lzdHJ5W3NLZXldLmNvbnRyb2xsZXJbc0NvbnRyb2xsZXJLZXldLmRlc3Ryb3koKTtcblx0XHRcdC8vIFx0XHR9KTtcblx0XHRcdC8vIFx0fSk7XG5cdFx0XHQvLyBcdHNhcC51aS5tZGMucDEzbi5FbmdpbmUuZ2V0SW5zdGFuY2UoKS5kZXN0cm95KCk7XG5cdFx0XHRkZWxldGUgKHdpbmRvdyBhcyBhbnkpLl9yb3V0aW5nO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5pbmZvKGUgYXMgYW55KTtcblx0XHR9XG5cblx0XHQvL1dPUktBUk9VTkQgZm9yIHN0aWNreSBkaXNjYXJkIHJlcXVlc3QgOiBkdWUgdG8gYXN5bmMgY2FsbGJhY2ssIHJlcXVlc3QgdHJpZ2dlcmVkIGJ5IHRoZSBleGl0QXBwbGljYXRpb24gd2lsbCBiZSBzZW5kIGFmdGVyIHRoZSBVSUNvbXBvbmVudC5wcm90b3R5cGUuZGVzdHJveVxuXHRcdC8vc28gd2UgbmVlZCB0byBjb3B5IHRoZSBSZXF1ZXN0b3IgaGVhZGVycyBhcyBpdCB3aWxsIGJlIGRlc3Ryb3lcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Y29uc3Qgb01haW5Nb2RlbCA9ICh0aGlzIGFzIGFueSkub01vZGVsc1t1bmRlZmluZWRdO1xuXHRcdGNvbnN0IG9IZWFkZXJzID0galF1ZXJ5LmV4dGVuZCh7fSwgb01haW5Nb2RlbC5vUmVxdWVzdG9yLm1IZWFkZXJzKTtcblx0XHQvLyBBcyB3ZSBuZWVkIHRvIGNsZWFudXAgdGhlIGFwcGxpY2F0aW9uIC8gaGFuZGxlIHRoZSBkaXJ0eSBvYmplY3Qgd2UgbmVlZCB0byBjYWxsIG91ciBjbGVhbnVwIGJlZm9yZSB0aGUgbW9kZWxzIGFyZSBkZXN0cm95ZWRcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCkuYmVmb3JlRXhpdCgpO1xuXHRcdHN1cGVyLmRlc3Ryb3koLi4uYXJncyk7XG5cdFx0b01haW5Nb2RlbC5vUmVxdWVzdG9yLm1IZWFkZXJzID0gb0hlYWRlcnM7XG5cdH1cblx0Z2V0Q29tcG9uZW50RGF0YSgpOiBhbnkge1xuXHRcdHJldHVybiBzdXBlci5nZXRDb21wb25lbnREYXRhKCk7XG5cdH1cblx0Z2V0Um91dGluZ1NlcnZpY2UoKTogUm91dGluZ1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBSb3V0aW5nU2VydmljZTsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXHRnZXRTaGVsbFNlcnZpY2VzKCk6IElTaGVsbFNlcnZpY2VzIHtcblx0XHRyZXR1cm4ge30gYXMgSVNoZWxsU2VydmljZXM7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblx0Z2V0TmF2aWdhdGlvblNlcnZpY2UoKTogTmF2aWdhdGlvblNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBOYXZpZ2F0aW9uU2VydmljZTsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXHRnZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTogU2lkZUVmZmVjdHNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgU2lkZUVmZmVjdHNTZXJ2aWNlO1xuXHR9XG5cdGdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCk6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZTtcblx0fVxuXG5cdGdldFN0YXJ0dXBQYXJhbWV0ZXJzKCkge1xuXHRcdGNvbnN0IG9Db21wb25lbnREYXRhID0gdGhpcy5nZXRDb21wb25lbnREYXRhKCkgYXMgYW55O1xuXHRcdGNvbnN0IG9TdGFydFVwUGFyYW1ldGVycyA9IChvQ29tcG9uZW50RGF0YSAmJiBvQ29tcG9uZW50RGF0YS5zdGFydHVwUGFyYW1ldGVycykgfHwge307XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShvU3RhcnRVcFBhcmFtZXRlcnMpO1xuXHR9XG5cdHJlc3RvcmUoKSB7XG5cdFx0Ly8gY2FsbGVkIGJ5IEZMUCB3aGVuIGFwcCBzYXAta2VlcC1hbGl2ZSBpcyBlbmFibGVkIGFuZCBhcHAgaXMgcmVzdG9yZWRcblx0XHQodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBhbnkpLnZpZXdTdGF0ZS5vblJlc3RvcmUoKTtcblx0fVxuXHRzdXNwZW5kKCkge1xuXHRcdC8vIGNhbGxlZCBieSBGTFAgd2hlbiBhcHAgc2FwLWtlZXAtYWxpdmUgaXMgZW5hYmxlZCBhbmQgYXBwIGlzIHN1c3BlbmRlZFxuXHRcdCh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIGFueSkudmlld1N0YXRlLm9uU3VzcGVuZCgpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwcENvbXBvbmVudDtcbiJdfQ==
@@ -1,25 +1,26 @@
1
- import UIComponent from "sap/ui/core/UIComponent";
2
- import RouterProxy from "sap/fe/core/RouterProxy";
3
- import AppStateHandler from "sap/fe/core/AppStateHandler";
4
1
  import Log from "sap/base/Log";
5
- import Diagnostics from "sap/fe/core/support/Diagnostics";
6
- import JSONModel from "sap/ui/model/json/JSONModel";
7
- import library from "sap/fe/core/library";
2
+ import AppStateHandler from "sap/fe/core/AppStateHandler";
3
+ import RouterProxy from "sap/fe/core/controllerextensions/routing/RouterProxy";
4
+ import { defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
8
5
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
6
+ import library from "sap/fe/core/library";
7
+ import { EnvironmentCapabilitiesService } from "sap/fe/core/services/EnvironmentServiceFactory";
8
+ import { NavigationService } from "sap/fe/core/services/NavigationServiceFactory";
9
+ import { RoutingService } from "sap/fe/core/services/RoutingServiceFactory";
10
+ import { IShellServices } from "sap/fe/core/services/ShellServicesFactory";
11
+ import { SideEffectsService } from "sap/fe/core/services/SideEffectsServiceFactory";
12
+ import Diagnostics from "sap/fe/core/support/Diagnostics";
9
13
  import ValueListHelper from "sap/fe/macros/internal/valuehelp/ValueListHelper";
10
- import { UI5Class } from "sap/fe/core/helpers/ClassSupport";
11
- import ComponentMetadata from "sap/ui/core/ComponentMetadata";
14
+ import Core from "sap/ui/core/Core";
12
15
  import View from "sap/ui/core/mvc/View";
16
+ import UIComponent from "sap/ui/core/UIComponent";
17
+ import JSONModel from "sap/ui/model/json/JSONModel";
18
+ import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
13
19
  import ODataModel from "sap/ui/model/odata/v4/ODataModel";
14
- import ResourceBundle from "sap/base/i18n/ResourceBundle";
20
+ import { CoreEx } from "types/extension_types";
15
21
  import BaseController from "./BaseController";
16
22
  import { deleteModelCacheData } from "./converters/MetaModelConverter";
17
- import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
18
- import { RoutingService } from "sap/fe/core/services/RoutingServiceFactory";
19
- import { IShellServices } from "sap/fe/core/services/ShellServicesFactory";
20
- import { NavigationService } from "sap/fe/core/services/NavigationServiceFactory";
21
- import { SideEffectsService } from "sap/fe/core/services/SideEffectsServiceFactory";
22
- import { EnvironmentCapabilitiesService } from "sap/fe/core/services/EnvironmentServiceFactory";
23
+ import SemanticDateOperators from "./helpers/SemanticDateOperators";
23
24
 
24
25
  const NAVCONF = {
25
26
  FCL: {
@@ -46,7 +47,7 @@ const NAVCONF = {
46
47
  * @public
47
48
  * @name sap.fe.core.AppComponent
48
49
  */
49
- @UI5Class("sap.fe.core.AppComponent", ComponentMetadata, {
50
+ @defineUI5Class("sap.fe.core.AppComponent", {
50
51
  interfaces: ["sap.ui.core.IAsyncContentCreation"],
51
52
  config: {
52
53
  fullWidth: true
@@ -192,25 +193,23 @@ class AppComponent extends UIComponent {
192
193
  return (this.getRootControl() as View).getContent()[0];
193
194
  }
194
195
 
195
- init(...args: any[]) {
196
- this.setModel(
197
- new JSONModel({
198
- editMode: library.EditMode.Display,
199
- isEditable: false,
200
- draftStatus: library.DraftStatus.Clear,
201
- busy: false,
202
- busyLocal: {},
203
- pages: {}
204
- }),
205
- "ui"
206
- );
207
-
196
+ init() {
197
+ const uiModel = new JSONModel({
198
+ editMode: library.EditMode.Display,
199
+ isEditable: false,
200
+ draftStatus: library.DraftStatus.Clear,
201
+ busy: false,
202
+ busyLocal: {},
203
+ pages: {}
204
+ });
208
205
  const oInternalModel = new JSONModel({
209
206
  pages: {}
210
207
  });
211
208
 
209
+ ModelHelper.enhanceUiJSONModel(uiModel, library);
212
210
  ModelHelper.enhanceInternalJSONModel(oInternalModel);
213
211
 
212
+ this.setModel(uiModel, "ui");
214
213
  this.setModel(oInternalModel, "internal");
215
214
 
216
215
  this.bInitializeRouting = this.bInitializeRouting !== undefined ? this.bInitializeRouting : true;
@@ -259,14 +258,12 @@ class AppComponent extends UIComponent {
259
258
 
260
259
  // Adding Semantic Date Operators
261
260
  // Commenting since it is not needed for SingleRange
262
- // SemanticDateOperators.addSemanticDateOperators();
261
+ SemanticDateOperators.addSemanticDateOperators();
263
262
 
264
263
  // the init function configures the routing according to the settings above
265
264
  // it will call the createContent function to instantiate the RootView and add it to the UIComponent aggregations
266
265
 
267
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
268
- // @ts-ignore
269
- UIComponent.prototype.init.apply(this, args);
266
+ super.init();
270
267
  AppComponent.instanceMap[this.getId()] = this;
271
268
  }
272
269
  onServicesStarted() {
@@ -282,7 +279,7 @@ class AppComponent extends UIComponent {
282
279
  this.getRouterProxy().init(this, this._isFclEnabled());
283
280
  })
284
281
  .catch((error: any) => {
285
- const oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
282
+ const oResourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
286
283
 
287
284
  (this.getRootViewController() as any).displayMessagePage(
288
285
  oResourceBundle.getText("C_APP_COMPONENT_SAPFE_APPSTART_TECHNICAL_ISSUES"),
@@ -302,12 +299,12 @@ class AppComponent extends UIComponent {
302
299
  if (this.getRootViewController()) {
303
300
  return finalizedRoutingInitialization();
304
301
  } else {
305
- (this.getRootControl() as any).attachAfterInit(function() {
302
+ (this.getRootControl() as any).attachAfterInit(function () {
306
303
  finalizedRoutingInitialization();
307
304
  });
308
305
  }
309
306
  })
310
- .catch(function(err: any) {
307
+ .catch(function (err: any) {
311
308
  Log.error("cannot cannot initialize routing: " + err);
312
309
  });
313
310
  }
@@ -349,7 +346,7 @@ class AppComponent extends UIComponent {
349
346
  // sap.ui.mdc.p13n.Engine.getInstance().destroy();
350
347
  delete (window as any)._routing;
351
348
  } catch (e) {
352
- Log.info(e);
349
+ Log.info(e as any);
353
350
  }
354
351
 
355
352
  //WORKAROUND for sticky discard request : due to async callback, request triggered by the exitApplication will be send after the UIComponent.prototype.destroy
@@ -361,9 +358,7 @@ class AppComponent extends UIComponent {
361
358
  const oHeaders = jQuery.extend({}, oMainModel.oRequestor.mHeaders);
362
359
  // As we need to cleanup the application / handle the dirty object we need to call our cleanup before the models are destroyed
363
360
  this.getRoutingService().beforeExit();
364
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
365
- // @ts-ignore
366
- UIComponent.prototype.destroy.apply(this, [args]);
361
+ super.destroy(...args);
367
362
  oMainModel.oRequestor.mHeaders = oHeaders;
368
363
  }
369
364
  getComponentData(): any {
@@ -2,14 +2,14 @@
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/ui/base/Object", "sap/fe/navigation/library", "sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/ClassSupport", "./BusyLocker", "./helpers/ModelHelper"], function (BaseObject, library, Log, deepEqual, ClassSupport, BusyLocker, ModelHelper) {
5
+ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/ClassSupport", "sap/fe/navigation/library", "sap/ui/base/Object", "./controllerextensions/BusyLocker", "./helpers/ModelHelper"], function (Log, deepEqual, ClassSupport, library, BaseObject, BusyLocker, ModelHelper) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _class;
9
9
 
10
- var UI5Class = ClassSupport.UI5Class;
10
+ var defineUI5Class = ClassSupport.defineUI5Class;
11
11
 
12
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
12
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
13
13
 
14
14
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
15
15
 
@@ -31,8 +31,8 @@ sap.ui.define(["sap/ui/base/Object", "sap/fe/navigation/library", "sap/base/Log"
31
31
  }));
32
32
  }
33
33
 
34
- var AppStateHandler = (_dec = UI5Class("sap.fe.core.AppStateHandler"), _dec(_class = /*#__PURE__*/function (_BaseObject) {
35
- _inherits(AppStateHandler, _BaseObject);
34
+ var AppStateHandler = (_dec = defineUI5Class("sap.fe.core.AppStateHandler"), _dec(_class = /*#__PURE__*/function (_BaseObject) {
35
+ _inheritsLoose(AppStateHandler, _BaseObject);
36
36
 
37
37
  // AppComponent
38
38
  function AppStateHandler(oAppComponent) {
@@ -63,7 +63,7 @@ sap.ui.define(["sap/ui/base/Object", "sap/fe/navigation/library", "sap/base/Log"
63
63
  _proto.createAppState = function createAppState() {
64
64
  var _this2 = this;
65
65
 
66
- if (BusyLocker.isLocked(this)) {
66
+ if (!this.oAppComponent.getEnvironmentCapabilities().getCapabilities().AppState || BusyLocker.isLocked(this)) {
67
67
  return Promise.resolve();
68
68
  }
69
69
 
@@ -124,7 +124,7 @@ sap.ui.define(["sap/ui/base/Object", "sap/fe/navigation/library", "sap/base/Log"
124
124
  _proto.applyAppState = function applyAppState() {
125
125
  var _this3 = this;
126
126
 
127
- if (this.oAppComponent.getModel("internal").getProperty("/uiAdaptation") || BusyLocker.isLocked(this)) {
127
+ if (!this.oAppComponent.getEnvironmentCapabilities().getCapabilities().AppState || BusyLocker.isLocked(this)) {
128
128
  return Promise.resolve();
129
129
  }
130
130
 
@@ -197,4 +197,4 @@ sap.ui.define(["sap/ui/base/Object", "sap/fe/navigation/library", "sap/base/Log"
197
197
 
198
198
  return AppStateHandler;
199
199
  }, true);
200
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFwcFN0YXRlSGFuZGxlci50cyJdLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIl90b0VTNlByb21pc2UiLCJvVGhlbmFibGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJhcmdzIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImNhbGwiLCJjYXRjaCIsIkFwcFN0YXRlSGFuZGxlciIsIlVJNUNsYXNzIiwib0FwcENvbXBvbmVudCIsIl9tQ3VycmVudEFwcFN0YXRlIiwic0lkIiwiZ2V0SWQiLCJiTm9Sb3V0ZUNoYW5nZSIsIkxvZyIsImluZm8iLCJjcmVhdGVBcHBTdGF0ZSIsIkJ1c3lMb2NrZXIiLCJpc0xvY2tlZCIsIm9OYXZpZ2F0aW9uU2VydmljZSIsImdldE5hdmlnYXRpb25TZXJ2aWNlIiwib1JvdXRlclByb3h5IiwiZ2V0Um91dGVyUHJveHkiLCJzSGFzaCIsImdldEhhc2giLCJvQ29udHJvbGxlciIsImdldFJvb3RDb250cm9sIiwiZ2V0Q29udHJvbGxlciIsImJJc1N0aWNreU1vZGUiLCJNb2RlbEhlbHBlciIsImlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCIsImdldE1ldGFNb2RlbCIsInZpZXdTdGF0ZSIsInJlamVjdCIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsInJldHJpZXZlVmlld1N0YXRlIiwibUlubmVyQXBwU3RhdGUiLCJvU3RvcmVEYXRhIiwiYXBwU3RhdGUiLCJkZWVwRXF1YWwiLCJvQXBwU3RhdGUiLCJzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuIiwic0FwcFN0YXRlS2V5IiwiYXBwU3RhdGVLZXkiLCJzTmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwiX2NyZWF0ZU5hdmlnYXRpb25QYXJhbWV0ZXJzIiwib0FwcERhdGEiLCJzTmF2VHlwZSIsIk9iamVjdCIsImFzc2lnbiIsInNlbGVjdGlvblZhcmlhbnREZWZhdWx0cyIsIm9EZWZhdWx0ZWRTZWxlY3Rpb25WYXJpYW50Iiwic2VsZWN0aW9uVmFyaWFudCIsIm9TZWxlY3Rpb25WYXJpYW50IiwicmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQiLCJiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5IiwibmF2aWdhdGlvblR5cGUiLCJhcHBseUFwcFN0YXRlIiwiZ2V0TW9kZWwiLCJnZXRQcm9wZXJ0eSIsImxvY2siLCJwYXJzZU5hdmlnYXRpb24iLCJhRXJyb3JEYXRhIiwid2FybmluZyIsImFSZXN1bHRzIiwiaW5pdGlhbCIsIm9Sb290Q29udHJvbGxlciIsImlBcHBTdGF0ZSIsInVuZGVmaW5lZCIsIkVycm9yIiwiYXBwbHlWaWV3U3RhdGUiLCJvRXJyb3IiLCJlcnJvciIsImZpbmFsbHkiLCJ1bmxvY2siLCJjaGVja0lmUm91dGVDaGFuZ2VkQnlJQXBwIiwicmVzZXRSb3V0ZUNoYW5nZWRCeUlBcHAiLCJfaXNMaXN0QmFzZWRDb21wb25lbnQiLCJvQ29tcG9uZW50IiwiaXNBIiwiQmFzZU9iamVjdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FBTUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUNELE9BQXhCOztBQUNBLFdBQVNFLGFBQVQsQ0FBdUJDLFNBQXZCLEVBQXVDO0FBQ3RDLFdBQU9DLE9BQU8sQ0FBQ0MsT0FBUixDQUNORixTQUFTLENBQ1BHLElBREYsQ0FDTyxZQUF5QjtBQUFBLHdDQUFiQyxJQUFhO0FBQWJBLFFBQUFBLElBQWE7QUFBQTs7QUFDOUIsYUFBT0MsS0FBSyxDQUFDQyxTQUFOLENBQWdCQyxLQUFoQixDQUFzQkMsSUFBdEIsQ0FBMkJKLElBQTNCLENBQVA7QUFDQSxLQUhGLEVBSUVLLEtBSkYsQ0FJUSxZQUF5QjtBQUFBLHlDQUFiTCxJQUFhO0FBQWJBLFFBQUFBLElBQWE7QUFBQTs7QUFDL0IsYUFBT0MsS0FBSyxDQUFDQyxTQUFOLENBQWdCQyxLQUFoQixDQUFzQkMsSUFBdEIsQ0FBMkJKLElBQTNCLENBQVA7QUFDQSxLQU5GLENBRE0sQ0FB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QjtBQUNBLE9BdENLLENBQVA7QUF1Q0E7QUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ29ELHlCLEdBQUEscUNBQTRCO0FBQzNCLGFBQU8sS0FBS2pFLGNBQVo7QUFDQTtBQUNEO0FBQ0Q7QUFDQTs7O1dBQ0NrRSx1QixHQUFBLG1DQUEwQjtBQUN6QixVQUFJLEtBQUtsRSxjQUFULEVBQXlCO0FBQ3hCLGFBQUtBLGNBQUwsR0FBc0IsS0FBdEI7QUFDQTtBQUNELEs7O1dBQ0RtRSxxQixHQUFBLCtCQUFzQkMsVUFBdEIsRUFBdUM7QUFDdEMsYUFBT0EsVUFBVSxDQUFDQyxHQUFYLENBQWUsZ0NBQWYsQ0FBUDtBQUNBLEs7OztJQTlJNEJDLFU7QUFpSjlCO0FBQ0E7QUFDQTs7U0FDZTVFLGUiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwRXF1YWwgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcEVxdWFsXCI7XG5pbXBvcnQgeyBVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcIi4vQnVzeUxvY2tlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCIuL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcblxuY29uc3QgTmF2VHlwZSA9IGxpYnJhcnkuTmF2VHlwZTtcbmZ1bmN0aW9uIF90b0VTNlByb21pc2Uob1RoZW5hYmxlOiBhbnkpIHtcblx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShcblx0XHRvVGhlbmFibGVcblx0XHRcdC50aGVuKGZ1bmN0aW9uKC4uLmFyZ3M6IGFueVtdKSB7XG5cdFx0XHRcdHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24oLi4uYXJnczogYW55W10pIHtcblx0XHRcdFx0cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpO1xuXHRcdFx0fSlcblx0KTtcbn1cblxuQFVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwU3RhdGVIYW5kbGVyXCIpXG5jbGFzcyBBcHBTdGF0ZUhhbmRsZXIgZXh0ZW5kcyBCYXNlT2JqZWN0IHtcblx0cHVibGljIHNJZDogc3RyaW5nO1xuXHRwdWJsaWMgb0FwcENvbXBvbmVudDogYW55OyAvLyBBcHBDb21wb25lbnRcblx0cHVibGljIGJOb1JvdXRlQ2hhbmdlOiBib29sZWFuO1xuXHRwcml2YXRlIF9tQ3VycmVudEFwcFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cdGNvbnN0cnVjdG9yKG9BcHBDb21wb25lbnQ6IGFueSkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5vQXBwQ29tcG9uZW50ID0gb0FwcENvbXBvbmVudDtcblx0XHR0aGlzLnNJZCA9IG9BcHBDb21wb25lbnQuZ2V0SWQoKSArIFwiL0FwcFN0YXRlSGFuZGxlclwiO1xuXG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cdGdldElkKCkge1xuXHRcdHJldHVybiB0aGlzLnNJZDtcblx0fVxuXHQvKipcblx0ICogQ3JlYXRlcy91cGRhdGVzIHRoZSBhcHBzdGF0ZS5cblx0ICpcblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgcHJvbWlzZSByZXNvbHZpbmcgdGhlIHN0b3JlZCBkYXRhXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0Y3JlYXRlQXBwU3RhdGUoKSB7XG5cdFx0aWYgKEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcykpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRjb25zdCBvTmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKSxcblx0XHRcdG9Sb3V0ZXJQcm94eSA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0c0hhc2ggPSBvUm91dGVyUHJveHkuZ2V0SGFzaCgpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRiSXNTdGlja3lNb2RlID0gTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKHRoaXMub0FwcENvbXBvbmVudC5nZXRNZXRhTW9kZWwoKSk7XG5cblx0XHRpZiAoIW9Db250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KFwidmlld1N0YXRlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUgZm9yIGNvbnRyb2xsZXI6IFwiICsgb0NvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkpO1xuXHRcdH1cblxuXHRcdHJldHVybiBvQ29udHJvbGxlci52aWV3U3RhdGUucmV0cmlldmVWaWV3U3RhdGUoKS50aGVuKChtSW5uZXJBcHBTdGF0ZTogYW55KSA9PiB7XG5cdFx0XHRjb25zdCBvU3RvcmVEYXRhID0geyBhcHBTdGF0ZTogbUlubmVyQXBwU3RhdGUgfTtcblx0XHRcdGlmIChtSW5uZXJBcHBTdGF0ZSAmJiAhZGVlcEVxdWFsKHRoaXMuX21DdXJyZW50QXBwU3RhdGUsIG1Jbm5lckFwcFN0YXRlKSkge1xuXHRcdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0gbUlubmVyQXBwU3RhdGU7XG5cdFx0XHRcdGNvbnN0IG9BcHBTdGF0ZSA9IG9OYXZpZ2F0aW9uU2VydmljZS5zdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG9TdG9yZURhdGEsIHRydWUpO1xuXHRcdFx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBBcHBzdGF0ZSBzdG9yZWRcIik7XG5cdFx0XHRcdGNvbnN0IHNBcHBTdGF0ZUtleSA9IG9BcHBTdGF0ZS5hcHBTdGF0ZUtleTtcblx0XHRcdFx0Y29uc3Qgc05ld0hhc2ggPSBvTmF2aWdhdGlvblNlcnZpY2UucmVwbGFjZUlubmVyQXBwU3RhdGVLZXkoc0hhc2gsIHNBcHBTdGF0ZUtleSk7XG5cdFx0XHRcdGlmIChzTmV3SGFzaCAhPT0gc0hhc2gpIHtcblx0XHRcdFx0XHRvUm91dGVyUHJveHkubmF2VG9IYXNoKHNOZXdIYXNoLCBudWxsLCBudWxsLCBudWxsLCAhYklzU3RpY2t5TW9kZSk7XG5cdFx0XHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogbmF2VG9IYXNoXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG9TdG9yZURhdGE7XG5cdFx0fSk7XG5cdH1cblxuXHRfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMob0FwcERhdGE6IGFueSwgc05hdlR5cGU6IGFueSkge1xuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBvQXBwRGF0YSwge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudERlZmF1bHRzOiBvQXBwRGF0YS5vRGVmYXVsdGVkU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHNlbGVjdGlvblZhcmlhbnQ6IG9BcHBEYXRhLm9TZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0cmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ6ICFvQXBwRGF0YS5iTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5LFxuXHRcdFx0bmF2aWdhdGlvblR5cGU6IHNOYXZUeXBlXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyBhbiBhcHBzdGF0ZSBieSBmZXRjaGluZyBhcHBkYXRhIGFuZCBwYXNzaW5nIGl0IHRvIF9hcHBseUFwcHN0YXRlVG9QYWdlLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHN0YXRpY1xuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQXBwU3RhdGVIYW5kbGVyXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgZm9yIGFzeW5jIGhhbmRsaW5nXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiovXG5cdGFwcGx5QXBwU3RhdGUoKSB7XG5cdFx0aWYgKHRoaXMub0FwcENvbXBvbmVudC5nZXRNb2RlbChcImludGVybmFsXCIpLmdldFByb3BlcnR5KFwiL3VpQWRhcHRhdGlvblwiKSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMpKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXHRcdEJ1c3lMb2NrZXIubG9jayh0aGlzKTtcblx0XHQvLyBEb25lIGZvciBidXN5IGluZGljYXRvclxuXHRcdEJ1c3lMb2NrZXIubG9jayh0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSk7XG5cblx0XHRjb25zdCBvTmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKTtcblx0XHQvLyBUT0RPIG9OYXZpZ2F0aW9uU2VydmljZS5wYXJzZU5hdmlnYXRpb24oKSBzaG91bGQgcmV0dXJuIEVTNiBwcm9taXNlIGluc3RlYWQgalF1ZXJ5LnByb21pc2Vcblx0XHRyZXR1cm4gX3RvRVM2UHJvbWlzZShvTmF2aWdhdGlvblNlcnZpY2UucGFyc2VOYXZpZ2F0aW9uKCkpXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24oYUVycm9yRGF0YTogYW55KSB7XG5cdFx0XHRcdGlmICghYUVycm9yRGF0YSkge1xuXHRcdFx0XHRcdGFFcnJvckRhdGEgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRMb2cud2FybmluZyhcIkFQUFNUQVRFOiBQYXJzZSBOYXZpZ2F0aW9uIGZhaWxlZFwiLCBhRXJyb3JEYXRhWzBdKTtcblx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQvKiBhcHAgZGF0YSAqL1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0YUVycm9yRGF0YVsxXSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzJdXG5cdFx0XHRcdF07XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKGFSZXN1bHRzOiBhbnkpID0+IHtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogUGFyc2UgTmF2aWdhdGlvbiBkb25lXCIpO1xuXG5cdFx0XHRcdC8vIGFSZXN1bHRzWzFdID0+IG9TdGFydHVwUGFyYW1ldGVycyAobm90IGV2YWx1YXRlZClcblx0XHRcdFx0Y29uc3Qgb0FwcERhdGEgPSBhUmVzdWx0c1swXSB8fCB7fSxcblx0XHRcdFx0XHRzTmF2VHlwZSA9IGFSZXN1bHRzWzJdIHx8IE5hdlR5cGUuaW5pdGlhbCxcblx0XHRcdFx0XHRvUm9vdENvbnRyb2xsZXIgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cblx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9IHNOYXZUeXBlID09PSBOYXZUeXBlLmlBcHBTdGF0ZSA/IG9BcHBEYXRhICYmIG9BcHBEYXRhLmFwcFN0YXRlIDogdW5kZWZpbmVkO1xuXG5cdFx0XHRcdGlmICghb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcInZpZXdTdGF0ZSBleHRlbnNpb24gcmVxdWlyZWQgZm9yIGNvbnRyb2xsZXIgXCIgKyBvUm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIG9Sb290Q29udHJvbGxlci52aWV3U3RhdGVcblx0XHRcdFx0XHQuYXBwbHlWaWV3U3RhdGUodGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgdGhpcy5fY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMob0FwcERhdGEsIHNOYXZUeXBlKSlcblx0XHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24ob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRcdExvZy5lcnJvcihcImFwcFN0YXRlIGNvdWxkIG5vdCBiZSBhcHBsaWVkXCIsIG9FcnJvcik7XG5cdFx0XHRcdFx0XHR0aHJvdyBvRXJyb3I7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzKTtcblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXHRcdFx0fSk7XG5cdH1cblx0LyoqXG5cdCAqIFRvIGNoZWNrIGlzIHJvdXRlIGlzIGNoYW5nZWQgYnkgY2hhbmdlIGluIHRoZSBpQVBQU3RhdGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKiovXG5cdGNoZWNrSWZSb3V0ZUNoYW5nZWRCeUlBcHAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYk5vUm91dGVDaGFuZ2U7XG5cdH1cblx0LyoqXG5cdCAqIFJlc2V0IHRoZSByb3V0ZSBjaGFuZ2VkIGJ5IGlBUFBTdGF0ZS5cblx0ICoqL1xuXHRyZXNldFJvdXRlQ2hhbmdlZEJ5SUFwcCgpIHtcblx0XHRpZiAodGhpcy5iTm9Sb3V0ZUNoYW5nZSkge1xuXHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXHRfaXNMaXN0QmFzZWRDb21wb25lbnQob0NvbXBvbmVudDogYW55KSB7XG5cdFx0cmV0dXJuIG9Db21wb25lbnQuaXNBKFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0Q29tcG9uZW50XCIpO1xuXHR9XG59XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBBcHBTdGF0ZUhhbmRsZXI7XG4iXX0=
200
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFwcFN0YXRlSGFuZGxlci50cyJdLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIl90b0VTNlByb21pc2UiLCJvVGhlbmFibGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJhcmdzIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImNhbGwiLCJjYXRjaCIsIkFwcFN0YXRlSGFuZGxlciIsImRlZmluZVVJNUNsYXNzIiwib0FwcENvbXBvbmVudCIsIl9tQ3VycmVudEFwcFN0YXRlIiwic0lkIiwiZ2V0SWQiLCJiTm9Sb3V0ZUNoYW5nZSIsIkxvZyIsImluZm8iLCJjcmVhdGVBcHBTdGF0ZSIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiQXBwU3RhdGUiLCJCdXN5TG9ja2VyIiwiaXNMb2NrZWQiLCJvTmF2aWdhdGlvblNlcnZpY2UiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsIm9Sb3V0ZXJQcm94eSIsImdldFJvdXRlclByb3h5Iiwic0hhc2giLCJnZXRIYXNoIiwib0NvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJiSXNTdGlja3lNb2RlIiwiTW9kZWxIZWxwZXIiLCJpc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQiLCJnZXRNZXRhTW9kZWwiLCJ2aWV3U3RhdGUiLCJyZWplY3QiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJyZXRyaWV2ZVZpZXdTdGF0ZSIsIm1Jbm5lckFwcFN0YXRlIiwib1N0b3JlRGF0YSIsImFwcFN0YXRlIiwiZGVlcEVxdWFsIiwib0FwcFN0YXRlIiwic3RvcmVJbm5lckFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybiIsInNBcHBTdGF0ZUtleSIsImFwcFN0YXRlS2V5Iiwic05ld0hhc2giLCJyZXBsYWNlSW5uZXJBcHBTdGF0ZUtleSIsIm5hdlRvSGFzaCIsIl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm9BcHBEYXRhIiwic05hdlR5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJvRGVmYXVsdGVkU2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnQiLCJvU2VsZWN0aW9uVmFyaWFudCIsInJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSIsIm5hdmlnYXRpb25UeXBlIiwiYXBwbHlBcHBTdGF0ZSIsImxvY2siLCJwYXJzZU5hdmlnYXRpb24iLCJhRXJyb3JEYXRhIiwid2FybmluZyIsImFSZXN1bHRzIiwiaW5pdGlhbCIsIm9Sb290Q29udHJvbGxlciIsImlBcHBTdGF0ZSIsInVuZGVmaW5lZCIsIkVycm9yIiwiYXBwbHlWaWV3U3RhdGUiLCJvRXJyb3IiLCJlcnJvciIsImZpbmFsbHkiLCJ1bmxvY2siLCJjaGVja0lmUm91dGVDaGFuZ2VkQnlJQXBwIiwicmVzZXRSb3V0ZUNoYW5nZWRCeUlBcHAiLCJfaXNMaXN0QmFzZWRDb21wb25lbnQiLCJvQ29tcG9uZW50IiwiaXNBIiwiQmFzZU9iamVjdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FBTUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUNELE9BQXhCOztBQUNBLFdBQVNFLGFBQVQsQ0FBdUJDLFNBQXZCLEVBQXVDO0FBQ3RDLFdBQU9DLE9BQU8sQ0FBQ0MsT0FBUixDQUNORixTQUFTLENBQ1BHLElBREYsQ0FDTyxZQUEwQjtBQUFBLHdDQUFiQyxJQUFhO0FBQWJBLFFBQUFBLElBQWE7QUFBQTs7QUFDL0IsYUFBT0MsS0FBSyxDQUFDQyxTQUFOLENBQWdCQyxLQUFoQixDQUFzQkMsSUFBdEIsQ0FBMkJKLElBQTNCLENBQVA7QUFDQSxLQUhGLEVBSUVLLEtBSkYsQ0FJUSxZQUEwQjtBQUFBLHlDQUFiTCxJQUFhO0FBQWJBLFFBQUFBLElBQWE7QUFBQTs7QUFDaEMsYUFBT0MsS0FBSyxDQUFDQyxTQUFOLENBQWdCQyxLQUFoQixDQUFzQkMsSUFB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QUFDMEQsTUFBWCxDQUFrQixNQUFsQjtBQUNBMUQsUUFBQUEsVUFBVSxDQUFDMEQsTUFBWCxDQUFrQixNQUFJLENBQUNyRSxhQUFMLENBQW1Cb0IsY0FBbkIsRUFBbEI7QUFDQSxPQXRDSyxDQUFQO0FBdUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7O1dBQ0NrRCx5QixHQUFBLHFDQUE0QjtBQUMzQixhQUFPLEtBQUtsRSxjQUFaO0FBQ0E7QUFDRDtBQUNEO0FBQ0E7OztXQUNDbUUsdUIsR0FBQSxtQ0FBMEI7QUFDekIsVUFBSSxLQUFLbkUsY0FBVCxFQUF5QjtBQUN4QixhQUFLQSxjQUFMLEdBQXNCLEtBQXRCO0FBQ0E7QUFDRCxLOztXQUNEb0UscUIsR0FBQSwrQkFBc0JDLFVBQXRCLEVBQXVDO0FBQ3RDLGFBQU9BLFVBQVUsQ0FBQ0MsR0FBWCxDQUFlLGdDQUFmLENBQVA7QUFDQSxLOzs7SUE5STRCQyxVO0FBaUo5QjtBQUNBO0FBQ0E7O1NBQ2U3RSxlIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwRXF1YWwgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcEVxdWFsXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL0J1c3lMb2NrZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwiLi9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5cbmNvbnN0IE5hdlR5cGUgPSBsaWJyYXJ5Lk5hdlR5cGU7XG5mdW5jdGlvbiBfdG9FUzZQcm9taXNlKG9UaGVuYWJsZTogYW55KSB7XG5cdHJldHVybiBQcm9taXNlLnJlc29sdmUoXG5cdFx0b1RoZW5hYmxlXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcblx0XHRcdFx0cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcblx0XHRcdFx0cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpO1xuXHRcdFx0fSlcblx0KTtcbn1cblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwU3RhdGVIYW5kbGVyXCIpXG5jbGFzcyBBcHBTdGF0ZUhhbmRsZXIgZXh0ZW5kcyBCYXNlT2JqZWN0IHtcblx0cHVibGljIHNJZDogc3RyaW5nO1xuXHRwdWJsaWMgb0FwcENvbXBvbmVudDogYW55OyAvLyBBcHBDb21wb25lbnRcblx0cHVibGljIGJOb1JvdXRlQ2hhbmdlOiBib29sZWFuO1xuXHRwcml2YXRlIF9tQ3VycmVudEFwcFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cdGNvbnN0cnVjdG9yKG9BcHBDb21wb25lbnQ6IGFueSkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5vQXBwQ29tcG9uZW50ID0gb0FwcENvbXBvbmVudDtcblx0XHR0aGlzLnNJZCA9IG9BcHBDb21wb25lbnQuZ2V0SWQoKSArIFwiL0FwcFN0YXRlSGFuZGxlclwiO1xuXG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cdGdldElkKCkge1xuXHRcdHJldHVybiB0aGlzLnNJZDtcblx0fVxuXHQvKipcblx0ICogQ3JlYXRlcy91cGRhdGVzIHRoZSBhcHBzdGF0ZS5cblx0ICpcblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgcHJvbWlzZSByZXNvbHZpbmcgdGhlIHN0b3JlZCBkYXRhXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0Y3JlYXRlQXBwU3RhdGUoKSB7XG5cdFx0aWYgKCF0aGlzLm9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5BcHBTdGF0ZSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMpKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb05hdmlnYXRpb25TZXJ2aWNlID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCksXG5cdFx0XHRvUm91dGVyUHJveHkgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um91dGVyUHJveHkoKSxcblx0XHRcdHNIYXNoID0gb1JvdXRlclByb3h5LmdldEhhc2goKSxcblx0XHRcdG9Db250cm9sbGVyID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0YklzU3RpY2t5TW9kZSA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCh0aGlzLm9BcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCkpO1xuXG5cdFx0aWYgKCFvQ29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChcInZpZXdTdGF0ZSBjb250cm9sbGVyIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlIGZvciBjb250cm9sbGVyOiBcIiArIG9Db250cm9sbGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gb0NvbnRyb2xsZXIudmlld1N0YXRlLnJldHJpZXZlVmlld1N0YXRlKCkudGhlbigobUlubmVyQXBwU3RhdGU6IGFueSkgPT4ge1xuXHRcdFx0Y29uc3Qgb1N0b3JlRGF0YSA9IHsgYXBwU3RhdGU6IG1Jbm5lckFwcFN0YXRlIH07XG5cdFx0XHRpZiAobUlubmVyQXBwU3RhdGUgJiYgIWRlZXBFcXVhbCh0aGlzLl9tQ3VycmVudEFwcFN0YXRlLCBtSW5uZXJBcHBTdGF0ZSkpIHtcblx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9IG1Jbm5lckFwcFN0YXRlO1xuXHRcdFx0XHRjb25zdCBvQXBwU3RhdGUgPSBvTmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVJbm5lckFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybihvU3RvcmVEYXRhLCB0cnVlKTtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogQXBwc3RhdGUgc3RvcmVkXCIpO1xuXHRcdFx0XHRjb25zdCBzQXBwU3RhdGVLZXkgPSBvQXBwU3RhdGUuYXBwU3RhdGVLZXk7XG5cdFx0XHRcdGNvbnN0IHNOZXdIYXNoID0gb05hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNIYXNoLCBzQXBwU3RhdGVLZXkpO1xuXHRcdFx0XHRpZiAoc05ld0hhc2ggIT09IHNIYXNoKSB7XG5cdFx0XHRcdFx0b1JvdXRlclByb3h5Lm5hdlRvSGFzaChzTmV3SGFzaCwgbnVsbCwgbnVsbCwgbnVsbCwgIWJJc1N0aWNreU1vZGUpO1xuXHRcdFx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IG5hdlRvSGFzaFwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvU3RvcmVEYXRhO1xuXHRcdH0pO1xuXHR9XG5cblx0X2NyZWF0ZU5hdmlnYXRpb25QYXJhbWV0ZXJzKG9BcHBEYXRhOiBhbnksIHNOYXZUeXBlOiBhbnkpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb0FwcERhdGEsIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnREZWZhdWx0czogb0FwcERhdGEub0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50OiBvQXBwRGF0YS5vU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHJlcXVpcmVzU3RhbmRhcmRWYXJpYW50OiAhb0FwcERhdGEuYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSxcblx0XHRcdG5hdmlnYXRpb25UeXBlOiBzTmF2VHlwZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgYW4gYXBwc3RhdGUgYnkgZmV0Y2hpbmcgYXBwZGF0YSBhbmQgcGFzc2luZyBpdCB0byBfYXBwbHlBcHBzdGF0ZVRvUGFnZS5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBzdGF0aWNcblx0ICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkFwcFN0YXRlSGFuZGxlclxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gQSBwcm9taXNlIGZvciBhc3luYyBoYW5kbGluZ1xuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICoqL1xuXHRhcHBseUFwcFN0YXRlKCkge1xuXHRcdGlmICghdGhpcy5vQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuQXBwU3RhdGUgfHwgQnVzeUxvY2tlci5pc0xvY2tlZCh0aGlzKSkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblx0XHRCdXN5TG9ja2VyLmxvY2sodGhpcyk7XG5cdFx0Ly8gRG9uZSBmb3IgYnVzeSBpbmRpY2F0b3Jcblx0XHRCdXN5TG9ja2VyLmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXG5cdFx0Y29uc3Qgb05hdmlnYXRpb25TZXJ2aWNlID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCk7XG5cdFx0Ly8gVE9ETyBvTmF2aWdhdGlvblNlcnZpY2UucGFyc2VOYXZpZ2F0aW9uKCkgc2hvdWxkIHJldHVybiBFUzYgcHJvbWlzZSBpbnN0ZWFkIGpRdWVyeS5wcm9taXNlXG5cdFx0cmV0dXJuIF90b0VTNlByb21pc2Uob05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpKVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChhRXJyb3JEYXRhOiBhbnkpIHtcblx0XHRcdFx0aWYgKCFhRXJyb3JEYXRhKSB7XG5cdFx0XHRcdFx0YUVycm9yRGF0YSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZmFpbGVkXCIsIGFFcnJvckRhdGFbMF0pO1xuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC8qIGFwcCBkYXRhICovXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzFdLFxuXHRcdFx0XHRcdGFFcnJvckRhdGFbMl1cblx0XHRcdFx0XTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoYVJlc3VsdHM6IGFueSkgPT4ge1xuXHRcdFx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBQYXJzZSBOYXZpZ2F0aW9uIGRvbmVcIik7XG5cblx0XHRcdFx0Ly8gYVJlc3VsdHNbMV0gPT4gb1N0YXJ0dXBQYXJhbWV0ZXJzIChub3QgZXZhbHVhdGVkKVxuXHRcdFx0XHRjb25zdCBvQXBwRGF0YSA9IGFSZXN1bHRzWzBdIHx8IHt9LFxuXHRcdFx0XHRcdHNOYXZUeXBlID0gYVJlc3VsdHNbMl0gfHwgTmF2VHlwZS5pbml0aWFsLFxuXHRcdFx0XHRcdG9Sb290Q29udHJvbGxlciA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblxuXHRcdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0gc05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlID8gb0FwcERhdGEgJiYgb0FwcERhdGEuYXBwU3RhdGUgOiB1bmRlZmluZWQ7XG5cblx0XHRcdFx0aWYgKCFvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwidmlld1N0YXRlIGV4dGVuc2lvbiByZXF1aXJlZCBmb3IgY29udHJvbGxlciBcIiArIG9Sb290Q29udHJvbGxlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZVxuXHRcdFx0XHRcdC5hcHBseVZpZXdTdGF0ZSh0aGlzLl9tQ3VycmVudEFwcFN0YXRlLCB0aGlzLl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YSwgc05hdlR5cGUpKVxuXHRcdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRcdExvZy5lcnJvcihcImFwcFN0YXRlIGNvdWxkIG5vdCBiZSBhcHBsaWVkXCIsIG9FcnJvcik7XG5cdFx0XHRcdFx0XHR0aHJvdyBvRXJyb3I7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzKTtcblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXHRcdFx0fSk7XG5cdH1cblx0LyoqXG5cdCAqIFRvIGNoZWNrIGlzIHJvdXRlIGlzIGNoYW5nZWQgYnkgY2hhbmdlIGluIHRoZSBpQVBQU3RhdGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKiovXG5cdGNoZWNrSWZSb3V0ZUNoYW5nZWRCeUlBcHAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYk5vUm91dGVDaGFuZ2U7XG5cdH1cblx0LyoqXG5cdCAqIFJlc2V0IHRoZSByb3V0ZSBjaGFuZ2VkIGJ5IGlBUFBTdGF0ZS5cblx0ICoqL1xuXHRyZXNldFJvdXRlQ2hhbmdlZEJ5SUFwcCgpIHtcblx0XHRpZiAodGhpcy5iTm9Sb3V0ZUNoYW5nZSkge1xuXHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXHRfaXNMaXN0QmFzZWRDb21wb25lbnQob0NvbXBvbmVudDogYW55KSB7XG5cdFx0cmV0dXJuIG9Db21wb25lbnQuaXNBKFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0Q29tcG9uZW50XCIpO1xuXHR9XG59XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBBcHBTdGF0ZUhhbmRsZXI7XG4iXX0=