@sapui5/sap.fe.core 1.95.0 → 1.98.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 (207) hide show
  1. package/package.json +5 -5
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +3 -3
  4. package/src/sap/fe/core/AppComponent.js +9 -44
  5. package/src/sap/fe/core/AppStateHandler.js +2 -2
  6. package/src/sap/fe/core/BaseController.js +1 -1
  7. package/src/sap/fe/core/BusyLocker.js +13 -1
  8. package/src/sap/fe/core/CommonUtils.js +129 -219
  9. package/src/sap/fe/core/ExtensionAPI.js +14 -6
  10. package/src/sap/fe/core/PageController.js +9 -35
  11. package/src/sap/fe/core/RouterProxy.js +79 -75
  12. package/src/sap/fe/core/Synchronization.js +1 -1
  13. package/src/sap/fe/core/TemplateComponent.js +16 -7
  14. package/src/sap/fe/core/TemplateModel.js +1 -1
  15. package/src/sap/fe/core/TransactionHelper.js +183 -65
  16. package/src/sap/fe/core/actions/draft.js +50 -23
  17. package/src/sap/fe/core/actions/messageHandling.js +86 -7
  18. package/src/sap/fe/core/actions/nonDraft.js +1 -1
  19. package/src/sap/fe/core/actions/operations.js +75 -33
  20. package/src/sap/fe/core/actions/sticky.js +1 -1
  21. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +1 -1
  22. package/src/sap/fe/core/controllerextensions/EditFlow.js +276 -122
  23. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
  24. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +14 -6
  25. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +90 -46
  26. package/src/sap/fe/core/controllerextensions/InternalRouting.js +234 -232
  27. package/src/sap/fe/core/controllerextensions/KPIManagement.js +539 -209
  28. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +550 -213
  29. package/src/sap/fe/core/controllerextensions/MassEdit.js +79 -0
  30. package/src/sap/fe/core/controllerextensions/MessageHandler.js +227 -103
  31. package/src/sap/fe/core/controllerextensions/PageReady.js +2 -2
  32. package/src/sap/fe/core/controllerextensions/PageReady.ts +3 -7
  33. package/src/sap/fe/core/controllerextensions/Paginator.js +38 -12
  34. package/src/sap/fe/core/controllerextensions/Placeholder.js +16 -19
  35. package/src/sap/fe/core/controllerextensions/Routing.js +17 -2
  36. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  37. package/src/sap/fe/core/controllerextensions/Share.js +20 -7
  38. package/src/sap/fe/core/controllerextensions/SideEffects.js +8 -9
  39. package/src/sap/fe/core/controllerextensions/SideEffects.ts +19 -17
  40. package/src/sap/fe/core/controllerextensions/ViewState.js +54 -9
  41. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +40 -34
  42. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
  43. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  44. package/src/sap/fe/core/controls/ConditionalWrapper.js +1 -1
  45. package/src/sap/fe/core/controls/CustomQuickViewPage.js +110 -109
  46. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +7 -4
  47. package/src/sap/fe/core/controls/FieldWrapper.js +10 -4
  48. package/src/sap/fe/core/controls/FilterBar.js +1 -1
  49. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -6
  50. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
  51. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -1
  52. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +1 -1
  53. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
  54. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +1 -1
  55. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
  56. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
  57. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +78 -0
  58. package/src/sap/fe/core/converters/ConverterContext.js +13 -1
  59. package/src/sap/fe/core/converters/ConverterContext.ts +10 -0
  60. package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
  61. package/src/sap/fe/core/converters/ManifestSettings.ts +7 -1
  62. package/src/sap/fe/core/converters/ManifestWrapper.js +18 -7
  63. package/src/sap/fe/core/converters/ManifestWrapper.ts +15 -6
  64. package/src/sap/fe/core/converters/MetaModelConverter.js +920 -882
  65. package/src/sap/fe/core/converters/MetaModelConverter.ts +829 -853
  66. package/src/sap/fe/core/converters/annotations/DataField.js +54 -4
  67. package/src/sap/fe/core/converters/annotations/DataField.ts +53 -3
  68. package/src/sap/fe/core/converters/common/AnnotationConverter.js +83 -48
  69. package/src/sap/fe/core/converters/controls/Common/Action.js +15 -3
  70. package/src/sap/fe/core/converters/controls/Common/Action.ts +12 -3
  71. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -3
  72. package/src/sap/fe/core/converters/controls/Common/Chart.ts +0 -2
  73. package/src/sap/fe/core/converters/controls/Common/Form.js +68 -21
  74. package/src/sap/fe/core/converters/controls/Common/Form.ts +60 -16
  75. package/src/sap/fe/core/converters/controls/Common/KPI.js +331 -248
  76. package/src/sap/fe/core/converters/controls/Common/KPI.ts +355 -287
  77. package/src/sap/fe/core/converters/controls/Common/Table.js +426 -332
  78. package/src/sap/fe/core/converters/controls/Common/Table.ts +516 -383
  79. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +468 -0
  80. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +609 -0
  81. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +30 -13
  82. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +31 -12
  83. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
  84. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
  85. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +15 -7
  86. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +27 -6
  87. package/src/sap/fe/core/converters/helpers/Aggregation.js +8 -1
  88. package/src/sap/fe/core/converters/helpers/Aggregation.ts +9 -1
  89. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  90. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +2 -2
  91. package/src/sap/fe/core/converters/helpers/ID.js +9 -1
  92. package/src/sap/fe/core/converters/helpers/ID.ts +6 -2
  93. package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -5
  94. package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -4
  95. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +2 -2
  96. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +1 -1
  97. package/src/sap/fe/core/converters/templates/ListReportConverter.js +34 -4
  98. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +36 -7
  99. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +2 -5
  100. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +1 -2
  101. package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -2
  102. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  103. package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
  104. package/src/sap/fe/core/formatters/TableFormatter.js +27 -4
  105. package/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
  106. package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
  107. package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -3
  108. package/src/sap/fe/core/fpm/Component.js +2 -2
  109. package/src/sap/fe/core/helpers/AppStartupHelper.js +359 -0
  110. package/src/sap/fe/core/helpers/AppStartupHelper.ts +388 -0
  111. package/src/sap/fe/core/helpers/BindingExpression.js +199 -111
  112. package/src/sap/fe/core/helpers/BindingExpression.ts +193 -102
  113. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
  114. package/src/sap/fe/core/helpers/EditState.js +1 -1
  115. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -3
  116. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  117. package/src/sap/fe/core/helpers/KeepAliveHelper.js +211 -0
  118. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
  119. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +32 -0
  120. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
  121. package/src/sap/fe/core/helpers/MassEditHelper.js +678 -0
  122. package/src/sap/fe/core/helpers/ModelHelper.js +64 -1
  123. package/src/sap/fe/core/helpers/PasteHelper.js +7 -1
  124. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  125. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  126. package/src/sap/fe/core/helpers/StableIdHelper.js +2 -2
  127. package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
  128. package/src/sap/fe/core/library.js +28 -2
  129. package/src/sap/fe/core/library.support.js +10 -4
  130. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +62 -0
  131. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -0
  132. package/src/sap/fe/core/messagebundle.properties +67 -3
  133. package/src/sap/fe/core/messagebundle_ar.properties +40 -3
  134. package/src/sap/fe/core/messagebundle_bg.properties +40 -3
  135. package/src/sap/fe/core/messagebundle_ca.properties +41 -4
  136. package/src/sap/fe/core/messagebundle_cs.properties +41 -4
  137. package/src/sap/fe/core/messagebundle_cy.properties +40 -3
  138. package/src/sap/fe/core/messagebundle_da.properties +40 -3
  139. package/src/sap/fe/core/messagebundle_de.properties +40 -3
  140. package/src/sap/fe/core/messagebundle_el.properties +40 -3
  141. package/src/sap/fe/core/messagebundle_en.properties +37 -0
  142. package/src/sap/fe/core/messagebundle_en_GB.properties +37 -0
  143. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +37 -0
  144. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +46 -2
  145. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -0
  146. package/src/sap/fe/core/messagebundle_es.properties +40 -3
  147. package/src/sap/fe/core/messagebundle_es_MX.properties +41 -4
  148. package/src/sap/fe/core/messagebundle_et.properties +40 -3
  149. package/src/sap/fe/core/messagebundle_fi.properties +40 -3
  150. package/src/sap/fe/core/messagebundle_fr.properties +41 -4
  151. package/src/sap/fe/core/messagebundle_fr_CA.properties +40 -3
  152. package/src/sap/fe/core/messagebundle_hi.properties +40 -3
  153. package/src/sap/fe/core/messagebundle_hr.properties +40 -3
  154. package/src/sap/fe/core/messagebundle_hu.properties +41 -4
  155. package/src/sap/fe/core/messagebundle_id.properties +42 -5
  156. package/src/sap/fe/core/messagebundle_it.properties +40 -3
  157. package/src/sap/fe/core/messagebundle_iw.properties +40 -3
  158. package/src/sap/fe/core/messagebundle_ja.properties +49 -12
  159. package/src/sap/fe/core/messagebundle_kk.properties +40 -3
  160. package/src/sap/fe/core/messagebundle_ko.properties +40 -3
  161. package/src/sap/fe/core/messagebundle_lt.properties +40 -3
  162. package/src/sap/fe/core/messagebundle_lv.properties +40 -3
  163. package/src/sap/fe/core/messagebundle_ms.properties +40 -3
  164. package/src/sap/fe/core/messagebundle_nl.properties +40 -3
  165. package/src/sap/fe/core/messagebundle_no.properties +40 -3
  166. package/src/sap/fe/core/messagebundle_pl.properties +40 -3
  167. package/src/sap/fe/core/messagebundle_pt.properties +42 -5
  168. package/src/sap/fe/core/messagebundle_pt_PT.properties +40 -3
  169. package/src/sap/fe/core/messagebundle_ro.properties +40 -3
  170. package/src/sap/fe/core/messagebundle_ru.properties +40 -3
  171. package/src/sap/fe/core/messagebundle_sh.properties +40 -3
  172. package/src/sap/fe/core/messagebundle_sk.properties +40 -3
  173. package/src/sap/fe/core/messagebundle_sl.properties +40 -3
  174. package/src/sap/fe/core/messagebundle_sv.properties +41 -4
  175. package/src/sap/fe/core/messagebundle_th.properties +40 -3
  176. package/src/sap/fe/core/messagebundle_tr.properties +40 -3
  177. package/src/sap/fe/core/messagebundle_uk.properties +40 -3
  178. package/src/sap/fe/core/messagebundle_vi.properties +40 -3
  179. package/src/sap/fe/core/messagebundle_zh_CN.properties +40 -3
  180. package/src/sap/fe/core/messagebundle_zh_TW.properties +40 -3
  181. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
  182. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
  183. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +4 -3
  184. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -0
  185. package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  186. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  187. package/src/sap/fe/core/services/RoutingServiceFactory.js +98 -328
  188. package/src/sap/fe/core/services/ShellServicesFactory.js +31 -2
  189. package/src/sap/fe/core/services/ShellServicesFactory.ts +30 -1
  190. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +8 -5
  191. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +11 -6
  192. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +14 -5
  193. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
  194. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
  195. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
  196. package/src/sap/fe/core/templating/DataModelPathHelper.js +8 -37
  197. package/src/sap/fe/core/templating/DataModelPathHelper.ts +13 -33
  198. package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
  199. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
  200. package/src/sap/fe/core/templating/EntitySetHelper.js +86 -3
  201. package/src/sap/fe/core/templating/EntitySetHelper.ts +44 -0
  202. package/src/sap/fe/core/templating/FilterHelper.js +10 -7
  203. package/src/sap/fe/core/templating/FilterHelper.ts +8 -6
  204. package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
  205. package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  206. package/src/sap/fe/core/templating/UIFormatters.js +47 -107
  207. package/src/sap/fe/core/templating/UIFormatters.ts +76 -72
@@ -28,6 +28,7 @@ sap.ui.define([], function () {
28
28
  ActionType["SwitchToDraftObject"] = "SwitchToDraftObject";
29
29
  ActionType["DefaultApply"] = "DefaultApply";
30
30
  ActionType["Menu"] = "Menu";
31
+ ActionType["ShowFormDetails"] = "ShowFormDetails";
31
32
  })(ActionType || (ActionType = {}));
32
33
 
33
34
  _exports.ActionType = ActionType;
@@ -87,4 +88,4 @@ sap.ui.define([], function () {
87
88
  _exports.SelectionMode = SelectionMode;
88
89
  return _exports;
89
90
  }, false);
90
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbmlmZXN0U2V0dGluZ3MudHMiXSwibmFtZXMiOlsiVGVtcGxhdGVUeXBlIiwiQWN0aW9uVHlwZSIsIlZpc3VhbGl6YXRpb25UeXBlIiwiVmFyaWFudE1hbmFnZW1lbnRUeXBlIiwiQ3JlYXRpb25Nb2RlIiwiQXZhaWxhYmlsaXR5VHlwZSIsIkhvcml6b250YWxBbGlnbiIsIlNlbGVjdGlvbk1vZGUiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztNQUdZQSxZOzthQUFBQSxZO0FBQUFBLElBQUFBLFk7QUFBQUEsSUFBQUEsWTtBQUFBQSxJQUFBQSxZO0tBQUFBLFksS0FBQUEsWTs7O01BTUFDLFU7O2FBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7S0FBQUEsVSxLQUFBQSxVOzs7TUFpQkFDLGlCOzthQUFBQSxpQjtBQUFBQSxJQUFBQSxpQjtBQUFBQSxJQUFBQSxpQjtLQUFBQSxpQixLQUFBQSxpQjs7O01BS0FDLHFCOzthQUFBQSxxQjtBQUFBQSxJQUFBQSxxQjtBQUFBQSxJQUFBQSxxQjtBQUFBQSxJQUFBQSxxQjtLQUFBQSxxQixLQUFBQSxxQjs7O01BV0FDLFk7O2FBQUFBLFk7QUFBQUEsSUFBQUEsWTtBQUFBQSxJQUFBQSxZO0FBQUFBLElBQUFBLFk7S0FBQUEsWSxLQUFBQSxZOzs7TUFNQUMsZ0I7O2FBQUFBLGdCO0FBQUFBLElBQUFBLGdCO0FBQUFBLElBQUFBLGdCO0FBQUFBLElBQUFBLGdCO0tBQUFBLGdCLEtBQUFBLGdCOzs7TUFNQUMsZTs7YUFBQUEsZTtBQUFBQSxJQUFBQSxlO0FBQUFBLElBQUFBLGU7QUFBQUEsSUFBQUEsZTtLQUFBQSxlLEtBQUFBLGU7OztNQXVVQUMsYTs7YUFBQUEsYTtBQUFBQSxJQUFBQSxhO0FBQUFBLElBQUFBLGE7QUFBQUEsSUFBQUEsYTtBQUFBQSxJQUFBQSxhO0tBQUFBLGEsS0FBQUEsYSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhYmxlUmVjb3JkLCBQb3NpdGlvbiwgUG9zaXRpb25hYmxlIH0gZnJvbSBcIi4vaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IEZsZXhTZXR0aW5ncywgSGVhZGVyRmFjZXRUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvT2JqZWN0UGFnZS9IZWFkZXJGYWNldFwiO1xuaW1wb3J0IHsgQmluZGluZ0V4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgVGFibGVUeXBlIH0gZnJvbSBcIi4vY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5cbmV4cG9ydCBlbnVtIFRlbXBsYXRlVHlwZSB7XG5cdExpc3RSZXBvcnQgPSBcIkxpc3RSZXBvcnRcIixcblx0T2JqZWN0UGFnZSA9IFwiT2JqZWN0UGFnZVwiLFxuXHRBbmFseXRpY2FsTGlzdFBhZ2UgPSBcIkFuYWx5dGljYWxMaXN0UGFnZVwiXG59XG5cbmV4cG9ydCBlbnVtIEFjdGlvblR5cGUge1xuXHREYXRhRmllbGRGb3JBY3Rpb24gPSBcIkZvckFjdGlvblwiLFxuXHREYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gPSBcIkZvck5hdmlnYXRpb25cIixcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRQcmltYXJ5ID0gXCJQcmltYXJ5XCIsXG5cdFNlY29uZGFyeSA9IFwiU2Vjb25kYXJ5XCIsXG5cdFN3aXRjaFRvQWN0aXZlT2JqZWN0ID0gXCJTd2l0Y2hUb0FjdGl2ZU9iamVjdFwiLFxuXHRTd2l0Y2hUb0RyYWZ0T2JqZWN0ID0gXCJTd2l0Y2hUb0RyYWZ0T2JqZWN0XCIsXG5cdERlZmF1bHRBcHBseSA9IFwiRGVmYXVsdEFwcGx5XCIsXG5cdE1lbnUgPSBcIk1lbnVcIlxufVxuXG5leHBvcnQgdHlwZSBNYW5pZmVzdFNpZGVDb250ZW50ID0ge1xuXHR0ZW1wbGF0ZTogc3RyaW5nO1xuXHRlcXVhbFNwbGl0PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBlbnVtIFZpc3VhbGl6YXRpb25UeXBlIHtcblx0VGFibGUgPSBcIlRhYmxlXCIsXG5cdENoYXJ0ID0gXCJDaGFydFwiXG59XG5cbmV4cG9ydCBlbnVtIFZhcmlhbnRNYW5hZ2VtZW50VHlwZSB7XG5cdFBhZ2UgPSBcIlBhZ2VcIixcblx0Q29udHJvbCA9IFwiQ29udHJvbFwiLFxuXHROb25lID0gXCJOb25lXCJcbn1cblxuZXhwb3J0IHR5cGUgQ29udGVudERlbnNpdGllc1R5cGUgPSB7XG5cdGNvbXBhY3Q/OiBib29sZWFuO1xuXHRjb3p5PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBlbnVtIENyZWF0aW9uTW9kZSB7XG5cdE5ld1BhZ2UgPSBcIk5ld1BhZ2VcIixcblx0SW5saW5lID0gXCJJbmxpbmVcIixcblx0Q3JlYXRpb25Sb3cgPSBcIkNyZWF0aW9uUm93XCJcbn1cblxuZXhwb3J0IGVudW0gQXZhaWxhYmlsaXR5VHlwZSB7XG5cdERlZmF1bHQgPSBcIkRlZmF1bHRcIixcblx0QWRhcHRhdGlvbiA9IFwiQWRhcHRhdGlvblwiLFxuXHRIaWRkZW4gPSBcIkhpZGRlblwiXG59XG5cbmV4cG9ydCBlbnVtIEhvcml6b250YWxBbGlnbiB7XG5cdEVuZCA9IFwiRW5kXCIsXG5cdEJlZ2luID0gXCJCZWdpblwiLFxuXHRDZW50ZXIgPSBcIkNlbnRlclwiXG59XG5cbmV4cG9ydCB0eXBlIFRhYmxlQ29sdW1uU2V0dGluZ3MgPSB7XG5cdG1pY3JvQ2hhcnRTaXplPzogc3RyaW5nO1xuXHRzaG93TWljcm9DaGFydExhYmVsPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBmb3JtYXQgb3B0aW9ucyBmb3IgbXVsdGlsaW5lIHRleHQgZmllbGRzIG9uIGEgZm9ybSBvciBpbiBhIHRhYmxlXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1hdE9wdGlvbnNUeXBlID0ge1xuXHRoYXNEcmFmdEluZGljYXRvcj86IGJvb2xlYW47XG5cdHNlbWFudGlja2V5cz86IHN0cmluZ1tdO1xuXHR0ZXh0TGluZXNFZGl0PzogbnVtYmVyO1xuXHR0ZXh0TWF4Q2hhcmFjdGVyc0Rpc3BsYXk/OiBudW1iZXI7XG5cdHRleHRFeHBhbmRCZWhhdmlvckRpc3BsYXk/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb2YgYSBLUEkgaW4gdGhlIG1hbmlmZXN0XG4gKi9cbmV4cG9ydCB0eXBlIEtQSUNvbmZpZ3VyYXRpb24gPSB7XG5cdG1vZGVsPzogc3RyaW5nO1xuXHRlbnRpdHlTZXQ6IHN0cmluZztcblx0cXVhbGlmaWVyOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIEJhc2VNYW5pZmVzdFNldHRpbmdzXG4gKi9cbmV4cG9ydCB0eXBlIEJhc2VNYW5pZmVzdFNldHRpbmdzID0ge1xuXHRjb250ZW50Pzoge1xuXHRcdGhlYWRlcj86IHtcblx0XHRcdGZhY2V0cz86IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEhlYWRlckZhY2V0Pjtcblx0XHRcdGFjdGlvbnM/OiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+O1xuXHRcdH07XG5cdFx0Zm9vdGVyPzoge1xuXHRcdFx0YWN0aW9ucz86IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEFjdGlvbj47XG5cdFx0fTtcblx0fTtcblx0Y29udHJvbENvbmZpZ3VyYXRpb24/OiB7XG5cdFx0W2Fubm90YXRpb25QYXRoOiBzdHJpbmddOiBDb250cm9sTWFuaWZlc3RDb25maWd1cmF0aW9uO1xuXHR9ICYge1xuXHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCI/OiBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbjtcblx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GYWNldHNcIj86IEZhY2V0c0NvbnRyb2xDb25maWd1cmF0aW9uO1xuXHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckZhY2V0c1wiPzogSGVhZGVyRmFjZXRzQ29udHJvbENvbmZpZ3VyYXRpb247XG5cdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCI/OiBGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb247XG5cdH07XG5cdGNvbnZlcnRlclR5cGU6IFRlbXBsYXRlVHlwZTtcblx0ZW50aXR5U2V0OiBzdHJpbmc7XG5cdG5hdmlnYXRpb24/OiB7XG5cdFx0W25hdmlnYXRpb25QYXRoOiBzdHJpbmddOiBOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uO1xuXHR9O1xuXHR2aWV3TGV2ZWw/OiBudW1iZXI7XG5cdGZjbEVuYWJsZWQ/OiBib29sZWFuO1xuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBWYXJpYW50TWFuYWdlbWVudFR5cGU7XG5cdGRlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRjb250ZW50RGVuc2l0aWVzPzogQ29udGVudERlbnNpdGllc1R5cGU7XG5cdHNoZWxsQ29udGVudERlbnNpdHk/OiBzdHJpbmc7XG5cdGlzRGVza3RvcD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbiA9IHtcblx0b3V0Ym91bmQ/OiBzdHJpbmc7XG5cdG91dGJvdW5kRGV0YWlsPzoge1xuXHRcdHNlbWFudGljT2JqZWN0OiBzdHJpbmc7XG5cdFx0YWN0aW9uOiBzdHJpbmc7XG5cdFx0cGFyYW1ldGVycz86IGFueTtcblx0fTtcblx0cm91dGU/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbiA9IHtcblx0Y3JlYXRlPzogTmF2aWdhdGlvblRhcmdldENvbmZpZ3VyYXRpb247XG5cdGRldGFpbD86IE5hdmlnYXRpb25UYXJnZXRDb25maWd1cmF0aW9uO1xuXHRkaXNwbGF5Pzoge1xuXHRcdG91dGJvdW5kPzogc3RyaW5nO1xuXHRcdHRhcmdldD86IHN0cmluZzsgLy8gZm9yIGNvbXBhdGliaWxpdHlcblx0XHRyb3V0ZT86IHN0cmluZztcblx0fTtcbn07XG5cbnR5cGUgSGVhZGVyRmFjZXRzQ29udHJvbENvbmZpZ3VyYXRpb24gPSB7XG5cdGZhY2V0czogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+O1xufTtcblxudHlwZSBGYWNldHNDb250cm9sQ29uZmlndXJhdGlvbiA9IHtcblx0c2VjdGlvbnM6IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdFNlY3Rpb24+O1xufTtcblxudHlwZSBNYW5pZmVzdEZvcm1FbGVtZW50ID0gUG9zaXRpb25hYmxlICYge1xuXHR0ZW1wbGF0ZTogc3RyaW5nO1xuXHRsYWJlbD86IHN0cmluZztcblx0Zm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnNUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgRm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IHtcblx0ZmllbGRzOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RGb3JtRWxlbWVudD47XG59O1xuXG5leHBvcnQgdHlwZSBDb250cm9sTWFuaWZlc3RDb25maWd1cmF0aW9uID1cblx0fCBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxuXHR8IENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uXG5cdHwgRmFjZXRzQ29udHJvbENvbmZpZ3VyYXRpb25cblx0fCBIZWFkZXJGYWNldHNDb250cm9sQ29uZmlndXJhdGlvblxuXHR8IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb25cblx0fCBGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb247XG5cbi8qKiBPYmplY3QgUGFnZSAqKi9cblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MgPSBCYXNlTWFuaWZlc3RTZXR0aW5ncyAmIHtcblx0Y29udGVudD86IHtcblx0XHRoZWFkZXI/OiB7XG5cdFx0XHR2aXNpYmxlPzogYm9vbGVhbjtcblx0XHRcdGFuY2hvckJhclZpc2libGU/OiBib29sZWFuO1xuXHRcdFx0ZmFjZXRzPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+O1xuXHRcdH07XG5cdFx0Ym9keT86IHtcblx0XHRcdHNlY3Rpb25zPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj47XG5cdFx0fTtcblx0fTtcblx0ZWRpdGFibGVIZWFkZXJDb250ZW50OiBib29sZWFuO1xuXHRzZWN0aW9uTGF5b3V0OiBcIlRhYnNcIiB8IFwiUGFnZVwiO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiBNYW5pZmVzdEhlYWRlckZhY2V0XG4gKi9cbmV4cG9ydCB0eXBlIE1hbmlmZXN0SGVhZGVyRmFjZXQgPSB7XG5cdHR5cGU/OiBIZWFkZXJGYWNldFR5cGU7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdHRlbXBsYXRlPzogc3RyaW5nO1xuXHRwb3NpdGlvbj86IFBvc2l0aW9uO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRzdWJUaXRsZT86IHN0cmluZztcblx0c3Rhc2hlZD86IGJvb2xlYW47XG5cdGZsZXhTZXR0aW5ncz86IEZsZXhTZXR0aW5ncztcblx0cmVxdWVzdEdyb3VwSWQ/OiBzdHJpbmc7XG5cdHRlbXBsYXRlRWRpdD86IHN0cmluZztcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgTWFuaWZlc3RTZWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIE1hbmlmZXN0U2VjdGlvbiA9IHtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGlkPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdHBvc2l0aW9uPzogUG9zaXRpb247XG5cdHRlbXBsYXRlPzogc3RyaW5nO1xuXHRzdWJTZWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0U3ViU2VjdGlvbj47XG5cdGFjdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj47XG59O1xuXG5leHBvcnQgdHlwZSBNYW5pZmVzdFN1YlNlY3Rpb24gPSB7XG5cdGlkPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHR0ZW1wbGF0ZT86IHN0cmluZztcblx0dGl0bGU/OiBzdHJpbmc7XG5cdHBvc2l0aW9uPzogUG9zaXRpb247XG5cdHZpc2libGU/OiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0YWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPjtcblx0c2lkZUNvbnRlbnQ/OiBNYW5pZmVzdFNpZGVDb250ZW50O1xufTtcblxuLyoqIExpc3QgUmVwb3J0ICoqL1xuXG5leHBvcnQgdHlwZSBMaXN0UmVwb3J0TWFuaWZlc3RTZXR0aW5ncyA9IEJhc2VNYW5pZmVzdFNldHRpbmdzICYge1xuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cdHZpZXdzPzogTXVsdGlwbGVWaWV3c0NvbmZpZ3VyYXRpb247XG5cdGtleVBlcmZvcm1hbmNlSW5kaWNhdG9ycz86IHtcblx0XHRba3BpTmFtZTogc3RyaW5nXTogS1BJQ29uZmlndXJhdGlvbjtcblx0fTtcbn07XG5cbmV4cG9ydCB0eXBlIFZpZXdQYXRoQ29uZmlndXJhdGlvbiA9IFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbiB8IENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uO1xuXG5leHBvcnQgdHlwZSBWaWV3Q29uZmlndXJhdGlvbiA9IFZpZXdQYXRoQ29uZmlndXJhdGlvbiB8IEN1c3RvbVZpZXdUZW1wbGF0ZUNvbmZpZ3VyYXRpb247XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVZpZXdUZW1wbGF0ZUNvbmZpZ3VyYXRpb24gPSB7XG5cdGtleT86IHN0cmluZztcblx0bGFiZWw6IHN0cmluZztcblx0dGVtcGxhdGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbiA9IHtcblx0a2VlcFByZXZpb3VzUHJlc29uYWxpemF0aW9uPzogYm9vbGVhbjtcblx0a2V5Pzogc3RyaW5nO1xuXHRlbnRpdHlTZXQ/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24gPSB7XG5cdHByaW1hcnk6IFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbltdO1xuXHRzZWNvbmRhcnk6IFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbltdO1xuXHRkZWZhdWx0UGF0aD86IFwiYm90aFwiIHwgXCJwcmltYXJ5XCIgfCBcInNlY29uZGFyeVwiO1xuXHRrZXk/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uID0ge1xuXHRwYXRoczogVmlld0NvbmZpZ3VyYXRpb25bXTtcblx0c2hvd0NvdW50cz86IGJvb2xlYW47XG59O1xuXG4vKiogRmlsdGVyIENvbmZpZ3VyYXRpb24gKiovXG5cbi8qKiBAdHlwZWRlZiBGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb24gKiovXG5leHBvcnQgdHlwZSBGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdGZpbHRlckZpZWxkcz86IFJlY29yZDxzdHJpbmcsIEZpbHRlckZpZWxkTWFuaWZlc3RDb25maWd1cmF0aW9uPjtcblx0bmF2aWdhdGlvblByb3BlcnRpZXM/OiBzdHJpbmdbXTtcblx0dXNlU2VtYW50aWNEYXRlUmFuZ2U/OiBib29sZWFuO1xuXHRpbml0aWFsTGF5b3V0Pzogc3RyaW5nO1xuXHRsYXlvdXQ/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJGaWVsZE1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IFBvc2l0aW9uYWJsZSAmIHtcblx0bGFiZWw/OiBzdHJpbmc7XG5cdHRlbXBsYXRlPzogc3RyaW5nO1xuXHRhdmFpbGFiaWxpdHk/OiBBdmFpbGFiaWxpdHlUeXBlO1xuXHRzZXR0aW5ncz86IEZpbHRlclNldHRpbmdzO1xuXHR2aXN1YWxGaWx0ZXI/OiB2aXN1YWxGaWx0ZXJDb25maWd1cmF0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgdmlzdWFsRmlsdGVyQ29uZmlndXJhdGlvbiA9IHtcblx0dmFsdWVMaXN0Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgT3BlcmF0b3JDb25maWd1cmF0aW9uID0ge1xuXHRwYXRoOiBzdHJpbmc7XG5cdGVxdWFscz86IHN0cmluZztcblx0Y29udGFpbnM/OiBzdHJpbmc7XG5cdGV4Y2x1ZGU6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0T3BlcmF0b3IgPSB7XG5cdG9wZXJhdG9yOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJTZXR0aW5ncyA9IHtcblx0b3BlcmF0b3JDb25maWd1cmF0aW9uPzogT3BlcmF0b3JDb25maWd1cmF0aW9uW107XG5cdGRlZmF1bHRWYWx1ZXM/OiBEZWZhdWx0T3BlcmF0b3JbXTtcbn07XG5cbi8qKiBDaGFydCBDb25maWd1cmF0aW9uICoqL1xuXG5leHBvcnQgdHlwZSBDaGFydFBlcnNvbmFsaXphdGlvbk1hbmlmZXN0U2V0dGluZ3MgPVxuXHR8IGJvb2xlYW5cblx0fCB7XG5cdFx0XHRzb3J0OiBib29sZWFuO1xuXHRcdFx0dHlwZTogYm9vbGVhbjtcblx0XHRcdGl0ZW06IGJvb2xlYW47XG5cdCAgfTtcblxuZXhwb3J0IHR5cGUgQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdGNoYXJ0U2V0dGluZ3M6IHtcblx0XHRwZXJzb25hbGl6YXRpb246IENoYXJ0UGVyc29uYWxpemF0aW9uTWFuaWZlc3RTZXR0aW5ncztcblx0fTtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkFmdGVyRXhlY3V0aW9uQ29uZmlndXJhdGlvbiA9IHtcblx0bmF2aWdhdGVUb0luc3RhbmNlPzogYm9vbGVhbjtcblx0ZW5hYmxlQXV0b1Njcm9sbD86IGJvb2xlYW47XG59O1xuXG4vKiogVGFibGUgQ29uZmlndXJhdGlvbiAqKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBNYW5pZmVzdEFjdGlvblxuICovXG5leHBvcnQgdHlwZSBNYW5pZmVzdEFjdGlvbiA9IHtcblx0bWVudT86IHN0cmluZ1tdO1xuXHR2aXNpYmxlPzogc3RyaW5nO1xuXHRlbmFibGVkPzogc3RyaW5nO1xuXHRwb3NpdGlvbj86IFBvc2l0aW9uO1xuXHRwcmVzcz86IHN0cmluZztcblx0dGV4dD86IHN0cmluZztcblx0X19ub1dyYXA/OiBib29sZWFuO1xuXHRlbmFibGVPblNlbGVjdD86IHN0cmluZztcblx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uPzogc3RyaW5nO1xuXHRyZXF1aXJlc1NlbGVjdGlvbj86IGJvb2xlYW47XG5cdGFmdGVyRXhlY3V0aW9uPzogQWN0aW9uQWZ0ZXJFeGVjdXRpb25Db25maWd1cmF0aW9uO1xuXHRpbmxpbmU/OiBib29sZWFuO1xuXHRkZXRlcm1pbmluZz86IGJvb2xlYW47XG5cdGZhY2V0TmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1hbmlmZXN0VGFibGVDb2x1bW5PdmVycmlkZSA9IFBvc2l0aW9uYWJsZSAmIHtcblx0d2lkdGg/OiBzdHJpbmc7XG5cdGhvcml6b250YWxBbGlnbj86IEhvcml6b250YWxBbGlnbjtcblx0YWZ0ZXJFeGVjdXRpb24/OiBBY3Rpb25BZnRlckV4ZWN1dGlvbkNvbmZpZ3VyYXRpb247XG5cdHNldHRpbmdzPzogVGFibGVDb2x1bW5TZXR0aW5ncztcblx0Zm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnNUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgTWFuaWZlc3RUYWJsZUNvbHVtbiA9IFBvc2l0aW9uYWJsZSAmIHtcblx0aGVhZGVyOiBzdHJpbmc7XG5cdHdpZHRoPzogc3RyaW5nO1xuXHR0eXBlPzogc3RyaW5nO1xuXHRob3Jpem9udGFsQWxpZ24/OiBIb3Jpem9udGFsQWxpZ247XG5cdHRlbXBsYXRlOiBzdHJpbmc7XG5cdGFmdGVyRXhlY3V0aW9uPzogQWN0aW9uQWZ0ZXJFeGVjdXRpb25Db25maWd1cmF0aW9uO1xuXHRhdmFpbGFiaWxpdHk/OiBBdmFpbGFiaWxpdHlUeXBlO1xuXHRzZXR0aW5ncz86IFRhYmxlQ29sdW1uU2V0dGluZ3M7XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcblx0cHJvcGVydGllcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdHRhYmxlU2V0dGluZ3M/OiBUYWJsZU1hbmlmZXN0U2V0dGluZ3NDb25maWd1cmF0aW9uO1xuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+O1xuXHRjb2x1bW5zPzogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RUYWJsZUNvbHVtbiB8IE1hbmlmZXN0VGFibGVDb2x1bW5PdmVycmlkZT47XG59O1xuXG5leHBvcnQgZW51bSBTZWxlY3Rpb25Nb2RlIHtcblx0QXV0byA9IFwiQXV0b1wiLFxuXHROb25lID0gXCJOb25lXCIsXG5cdE11bHRpID0gXCJNdWx0aVwiLFxuXHRTaW5nbGUgPSBcIlNpbmdsZVwiXG59XG5cbmV4cG9ydCB0eXBlIFRhYmxlUGVyc29uYWxpemF0aW9uQ29uZmlndXJhdGlvbiA9XG5cdHwgYm9vbGVhblxuXHR8IHtcblx0XHRcdHNvcnQ6IGJvb2xlYW47XG5cdFx0XHRjb2x1bW46IGJvb2xlYW47XG5cdFx0XHRmaWx0ZXI6IGJvb2xlYW47XG5cdFx0XHRncm91cDogYm9vbGVhbjtcblx0XHRcdGFnZ3JlZ2F0ZTogYm9vbGVhbjtcblx0ICB9O1xuXG5leHBvcnQgdHlwZSBUYWJsZU1hbmlmZXN0U2V0dGluZ3NDb25maWd1cmF0aW9uID0ge1xuXHRjcmVhdGlvbk1vZGU/OiB7XG5cdFx0ZGlzYWJsZUFkZFJvd0J1dHRvbkZvckVtcHR5RGF0YT86IGJvb2xlYW47XG5cdFx0Y3VzdG9tVmFsaWRhdGlvbkZ1bmN0aW9uPzogc3RyaW5nO1xuXHRcdGNyZWF0ZUF0RW5kPzogYm9vbGVhbjtcblx0XHRuYW1lPzogQ3JlYXRpb25Nb2RlO1xuXHR9O1xuXHRlbmFibGVFeHBvcnQ/OiBib29sZWFuO1xuXHRxdWlja1ZhcmlhbnRTZWxlY3Rpb24/OiB7XG5cdFx0cGF0aHM6IFtcblx0XHRcdHtcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0XHRcdH1cblx0XHRdO1xuXHRcdGhpZGVUYWJsZVRpdGxlPzogYm9vbGVhbjtcblx0XHRzaG93Q291bnRzPzogYm9vbGVhbjtcblx0fTtcblx0cGVyc29uYWxpemF0aW9uPzogVGFibGVQZXJzb25hbGl6YXRpb25Db25maWd1cmF0aW9uO1xuXHQvKipcblx0ICogRGVmaW5lcyBob3cgbWFueSBpdGVtcyBpbiBhIHRhYmxlIGNhbiBiZSBzZWxlY3RlZC4gWW91IGhhdmUgdGhlIGZvbGxvd2luZyBvcHRpb25zOlxuXHQgKiA9PiBieSBkZWZpbmluZyAnTm9uZScgeW91IGNhbiBmdWxseSBkaXNhYmxlIHRoZSBsaXN0IHNlbGVjdGlvblxuXHQgKiA9PiBieSBkZWZpbmluZyAnU2luZ2xlJyB5b3UgYWxsb3cgb25seSBvbmUgaXRlbSB0byBiZSBzZWxlY3RlZFxuXHQgKiA9PiBieSBkZWZpbmluZyAnTXVsdGknIHlvdSBhbGxvdyBzZXZlcmFsIGl0ZW1zIHRvIGJlIHNlbGVjdGVkXG5cdCAqID0+IGJ5IHVzaW5nICdBdXRvJyB5b3UgbGVhdmUgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbiAnTm9uZScsIGV4Y2VwdCBpZiB0aGVyZSBpcyBhbiBhY3Rpb24gdGhhdCByZXF1aXJlcyBhIHNlbGVjdGlvbiAoc3VjaCBhcyBkZWxldGluZywgb3IgSUJOKVxuXHQgKi9cblx0c2VsZWN0aW9uTW9kZT86IFNlbGVjdGlvbk1vZGU7XG5cdHR5cGU/OiBUYWJsZVR5cGU7XG5cdGNvbmRlbnNlZFRhYmxlTGF5b3V0PzogYm9vbGVhbjtcblx0c2VsZWN0QWxsPzogYm9vbGVhbjtcblx0c2VsZWN0aW9uTGltaXQ/OiBudW1iZXI7XG5cdGVuYWJsZVBhc3RlPzogYm9vbGVhbjtcblx0ZW5hYmxlRnVsbFNjcmVlbj86IGJvb2xlYW47XG5cdGVuYWJsZU1hc3NFZGl0PzogYm9vbGVhbjtcbn07XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbmlmZXN0U2V0dGluZ3MudHMiXSwibmFtZXMiOlsiVGVtcGxhdGVUeXBlIiwiQWN0aW9uVHlwZSIsIlZpc3VhbGl6YXRpb25UeXBlIiwiVmFyaWFudE1hbmFnZW1lbnRUeXBlIiwiQ3JlYXRpb25Nb2RlIiwiQXZhaWxhYmlsaXR5VHlwZSIsIkhvcml6b250YWxBbGlnbiIsIlNlbGVjdGlvbk1vZGUiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztNQUdZQSxZOzthQUFBQSxZO0FBQUFBLElBQUFBLFk7QUFBQUEsSUFBQUEsWTtBQUFBQSxJQUFBQSxZO0tBQUFBLFksS0FBQUEsWTs7O01BTUFDLFU7O2FBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7QUFBQUEsSUFBQUEsVTtLQUFBQSxVLEtBQUFBLFU7OztNQWtCQUMsaUI7O2FBQUFBLGlCO0FBQUFBLElBQUFBLGlCO0FBQUFBLElBQUFBLGlCO0tBQUFBLGlCLEtBQUFBLGlCOzs7TUFLQUMscUI7O2FBQUFBLHFCO0FBQUFBLElBQUFBLHFCO0FBQUFBLElBQUFBLHFCO0FBQUFBLElBQUFBLHFCO0tBQUFBLHFCLEtBQUFBLHFCOzs7TUFXQUMsWTs7YUFBQUEsWTtBQUFBQSxJQUFBQSxZO0FBQUFBLElBQUFBLFk7QUFBQUEsSUFBQUEsWTtLQUFBQSxZLEtBQUFBLFk7OztNQU1BQyxnQjs7YUFBQUEsZ0I7QUFBQUEsSUFBQUEsZ0I7QUFBQUEsSUFBQUEsZ0I7QUFBQUEsSUFBQUEsZ0I7S0FBQUEsZ0IsS0FBQUEsZ0I7OztNQU1BQyxlOzthQUFBQSxlO0FBQUFBLElBQUFBLGU7QUFBQUEsSUFBQUEsZTtBQUFBQSxJQUFBQSxlO0tBQUFBLGUsS0FBQUEsZTs7O01BNFVBQyxhOzthQUFBQSxhO0FBQUFBLElBQUFBLGE7QUFBQUEsSUFBQUEsYTtBQUFBQSxJQUFBQSxhO0FBQUFBLElBQUFBLGE7S0FBQUEsYSxLQUFBQSxhIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWd1cmFibGVSZWNvcmQsIFBvc2l0aW9uLCBQb3NpdGlvbmFibGUgfSBmcm9tIFwiLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgRmxleFNldHRpbmdzLCBIZWFkZXJGYWNldFR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9PYmplY3RQYWdlL0hlYWRlckZhY2V0XCI7XG5pbXBvcnQgeyBCaW5kaW5nRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBUYWJsZVR5cGUgfSBmcm9tIFwiLi9jb250cm9scy9Db21tb24vVGFibGVcIjtcblxuZXhwb3J0IGVudW0gVGVtcGxhdGVUeXBlIHtcblx0TGlzdFJlcG9ydCA9IFwiTGlzdFJlcG9ydFwiLFxuXHRPYmplY3RQYWdlID0gXCJPYmplY3RQYWdlXCIsXG5cdEFuYWx5dGljYWxMaXN0UGFnZSA9IFwiQW5hbHl0aWNhbExpc3RQYWdlXCJcbn1cblxuZXhwb3J0IGVudW0gQWN0aW9uVHlwZSB7XG5cdERhdGFGaWVsZEZvckFjdGlvbiA9IFwiRm9yQWN0aW9uXCIsXG5cdERhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiA9IFwiRm9yTmF2aWdhdGlvblwiLFxuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdFByaW1hcnkgPSBcIlByaW1hcnlcIixcblx0U2Vjb25kYXJ5ID0gXCJTZWNvbmRhcnlcIixcblx0U3dpdGNoVG9BY3RpdmVPYmplY3QgPSBcIlN3aXRjaFRvQWN0aXZlT2JqZWN0XCIsXG5cdFN3aXRjaFRvRHJhZnRPYmplY3QgPSBcIlN3aXRjaFRvRHJhZnRPYmplY3RcIixcblx0RGVmYXVsdEFwcGx5ID0gXCJEZWZhdWx0QXBwbHlcIixcblx0TWVudSA9IFwiTWVudVwiLFxuXHRTaG93Rm9ybURldGFpbHMgPSBcIlNob3dGb3JtRGV0YWlsc1wiXG59XG5cbmV4cG9ydCB0eXBlIE1hbmlmZXN0U2lkZUNvbnRlbnQgPSB7XG5cdHRlbXBsYXRlOiBzdHJpbmc7XG5cdGVxdWFsU3BsaXQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGVudW0gVmlzdWFsaXphdGlvblR5cGUge1xuXHRUYWJsZSA9IFwiVGFibGVcIixcblx0Q2hhcnQgPSBcIkNoYXJ0XCJcbn1cblxuZXhwb3J0IGVudW0gVmFyaWFudE1hbmFnZW1lbnRUeXBlIHtcblx0UGFnZSA9IFwiUGFnZVwiLFxuXHRDb250cm9sID0gXCJDb250cm9sXCIsXG5cdE5vbmUgPSBcIk5vbmVcIlxufVxuXG5leHBvcnQgdHlwZSBDb250ZW50RGVuc2l0aWVzVHlwZSA9IHtcblx0Y29tcGFjdD86IGJvb2xlYW47XG5cdGNvenk/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGVudW0gQ3JlYXRpb25Nb2RlIHtcblx0TmV3UGFnZSA9IFwiTmV3UGFnZVwiLFxuXHRJbmxpbmUgPSBcIklubGluZVwiLFxuXHRDcmVhdGlvblJvdyA9IFwiQ3JlYXRpb25Sb3dcIlxufVxuXG5leHBvcnQgZW51bSBBdmFpbGFiaWxpdHlUeXBlIHtcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRBZGFwdGF0aW9uID0gXCJBZGFwdGF0aW9uXCIsXG5cdEhpZGRlbiA9IFwiSGlkZGVuXCJcbn1cblxuZXhwb3J0IGVudW0gSG9yaXpvbnRhbEFsaWduIHtcblx0RW5kID0gXCJFbmRcIixcblx0QmVnaW4gPSBcIkJlZ2luXCIsXG5cdENlbnRlciA9IFwiQ2VudGVyXCJcbn1cblxuZXhwb3J0IHR5cGUgVGFibGVDb2x1bW5TZXR0aW5ncyA9IHtcblx0bWljcm9DaGFydFNpemU/OiBzdHJpbmc7XG5cdHNob3dNaWNyb0NoYXJ0TGFiZWw/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIGZvcm1hdCBvcHRpb25zIGZvciBtdWx0aWxpbmUgdGV4dCBmaWVsZHMgb24gYSBmb3JtIG9yIGluIGEgdGFibGVcbiAqL1xuZXhwb3J0IHR5cGUgRm9ybWF0T3B0aW9uc1R5cGUgPSB7XG5cdGhhc0RyYWZ0SW5kaWNhdG9yPzogYm9vbGVhbjtcblx0c2VtYW50aWNrZXlzPzogc3RyaW5nW107XG5cdHRleHRMaW5lc0VkaXQ/OiBudW1iZXI7XG5cdHRleHRNYXhDaGFyYWN0ZXJzRGlzcGxheT86IG51bWJlcjtcblx0dGV4dEV4cGFuZEJlaGF2aW9yRGlzcGxheT86IHN0cmluZztcbn07XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvZiBhIEtQSSBpbiB0aGUgbWFuaWZlc3RcbiAqL1xuZXhwb3J0IHR5cGUgS1BJQ29uZmlndXJhdGlvbiA9IHtcblx0bW9kZWw/OiBzdHJpbmc7XG5cdGVudGl0eVNldDogc3RyaW5nO1xuXHRxdWFsaWZpZXI6IHN0cmluZztcblx0ZGV0YWlsTmF2aWdhdGlvbj86IHN0cmluZztcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgQmFzZU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZXhwb3J0IHR5cGUgQmFzZU1hbmlmZXN0U2V0dGluZ3MgPSB7XG5cdGNvbnRlbnQ/OiB7XG5cdFx0aGVhZGVyPzoge1xuXHRcdFx0ZmFjZXRzPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+O1xuXHRcdFx0YWN0aW9ucz86IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEFjdGlvbj47XG5cdFx0fTtcblx0XHRmb290ZXI/OiB7XG5cdFx0XHRhY3Rpb25zPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPjtcblx0XHR9O1xuXHR9O1xuXHRjb250cm9sQ29uZmlndXJhdGlvbj86IHtcblx0XHRbYW5ub3RhdGlvblBhdGg6IHN0cmluZ106IENvbnRyb2xNYW5pZmVzdENvbmZpZ3VyYXRpb247XG5cdH0gJiB7XG5cdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIj86IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uO1xuXHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0c1wiPzogRmFjZXRzQ29udHJvbENvbmZpZ3VyYXRpb247XG5cdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzXCI/OiBIZWFkZXJGYWNldHNDb250cm9sQ29uZmlndXJhdGlvbjtcblx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIj86IEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbjtcblx0fTtcblx0Y29udmVydGVyVHlwZTogVGVtcGxhdGVUeXBlO1xuXHRlbnRpdHlTZXQ6IHN0cmluZztcblx0bmF2aWdhdGlvbj86IHtcblx0XHRbbmF2aWdhdGlvblBhdGg6IHN0cmluZ106IE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb247XG5cdH07XG5cdHZpZXdMZXZlbD86IG51bWJlcjtcblx0ZmNsRW5hYmxlZD86IGJvb2xlYW47XG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHR2YXJpYW50TWFuYWdlbWVudD86IFZhcmlhbnRNYW5hZ2VtZW50VHlwZTtcblx0ZGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGg/OiBzdHJpbmc7XG5cdGNvbnRlbnREZW5zaXRpZXM/OiBDb250ZW50RGVuc2l0aWVzVHlwZTtcblx0c2hlbGxDb250ZW50RGVuc2l0eT86IHN0cmluZztcblx0aXNEZXNrdG9wPzogYm9vbGVhbjtcblx0aXNQaG9uZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbiA9IHtcblx0b3V0Ym91bmQ/OiBzdHJpbmc7XG5cdG91dGJvdW5kRGV0YWlsPzoge1xuXHRcdHNlbWFudGljT2JqZWN0OiBzdHJpbmc7XG5cdFx0YWN0aW9uOiBzdHJpbmc7XG5cdFx0cGFyYW1ldGVycz86IGFueTtcblx0fTtcblx0cm91dGU/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbiA9IHtcblx0Y3JlYXRlPzogTmF2aWdhdGlvblRhcmdldENvbmZpZ3VyYXRpb247XG5cdGRldGFpbD86IE5hdmlnYXRpb25UYXJnZXRDb25maWd1cmF0aW9uO1xuXHRkaXNwbGF5Pzoge1xuXHRcdG91dGJvdW5kPzogc3RyaW5nO1xuXHRcdHRhcmdldD86IHN0cmluZzsgLy8gZm9yIGNvbXBhdGliaWxpdHlcblx0XHRyb3V0ZT86IHN0cmluZztcblx0fTtcbn07XG5cbnR5cGUgSGVhZGVyRmFjZXRzQ29udHJvbENvbmZpZ3VyYXRpb24gPSB7XG5cdGZhY2V0czogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+O1xufTtcblxudHlwZSBGYWNldHNDb250cm9sQ29uZmlndXJhdGlvbiA9IHtcblx0c2VjdGlvbnM6IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdFNlY3Rpb24+O1xufTtcblxudHlwZSBNYW5pZmVzdEZvcm1FbGVtZW50ID0gUG9zaXRpb25hYmxlICYge1xuXHR0ZW1wbGF0ZTogc3RyaW5nO1xuXHRsYWJlbD86IHN0cmluZztcblx0Zm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnNUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgRm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IHtcblx0ZmllbGRzOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RGb3JtRWxlbWVudD47XG59O1xuXG5leHBvcnQgdHlwZSBDb250cm9sTWFuaWZlc3RDb25maWd1cmF0aW9uID1cblx0fCBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxuXHR8IENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uXG5cdHwgRmFjZXRzQ29udHJvbENvbmZpZ3VyYXRpb25cblx0fCBIZWFkZXJGYWNldHNDb250cm9sQ29uZmlndXJhdGlvblxuXHR8IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb25cblx0fCBGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb247XG5cbi8qKiBPYmplY3QgUGFnZSAqKi9cblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MgPSBCYXNlTWFuaWZlc3RTZXR0aW5ncyAmIHtcblx0Y29udGVudD86IHtcblx0XHRoZWFkZXI/OiB7XG5cdFx0XHR2aXNpYmxlPzogYm9vbGVhbjtcblx0XHRcdGFuY2hvckJhclZpc2libGU/OiBib29sZWFuO1xuXHRcdFx0ZmFjZXRzPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+O1xuXHRcdH07XG5cdFx0Ym9keT86IHtcblx0XHRcdHNlY3Rpb25zPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj47XG5cdFx0fTtcblx0fTtcblx0ZWRpdGFibGVIZWFkZXJDb250ZW50OiBib29sZWFuO1xuXHRzZWN0aW9uTGF5b3V0OiBcIlRhYnNcIiB8IFwiUGFnZVwiO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiBNYW5pZmVzdEhlYWRlckZhY2V0XG4gKi9cbmV4cG9ydCB0eXBlIE1hbmlmZXN0SGVhZGVyRmFjZXQgPSB7XG5cdHR5cGU/OiBIZWFkZXJGYWNldFR5cGU7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdHRlbXBsYXRlPzogc3RyaW5nO1xuXHRwb3NpdGlvbj86IFBvc2l0aW9uO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRzdWJUaXRsZT86IHN0cmluZztcblx0c3Rhc2hlZD86IGJvb2xlYW47XG5cdGZsZXhTZXR0aW5ncz86IEZsZXhTZXR0aW5ncztcblx0cmVxdWVzdEdyb3VwSWQ/OiBzdHJpbmc7XG5cdHRlbXBsYXRlRWRpdD86IHN0cmluZztcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgTWFuaWZlc3RTZWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIE1hbmlmZXN0U2VjdGlvbiA9IHtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGlkPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdHBvc2l0aW9uPzogUG9zaXRpb247XG5cdHRlbXBsYXRlPzogc3RyaW5nO1xuXHRzdWJTZWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0U3ViU2VjdGlvbj47XG5cdGFjdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj47XG59O1xuXG5leHBvcnQgdHlwZSBNYW5pZmVzdFN1YlNlY3Rpb24gPSB7XG5cdGlkPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHR0ZW1wbGF0ZT86IHN0cmluZztcblx0dGl0bGU/OiBzdHJpbmc7XG5cdHBvc2l0aW9uPzogUG9zaXRpb247XG5cdHZpc2libGU/OiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0YWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPjtcblx0c2lkZUNvbnRlbnQ/OiBNYW5pZmVzdFNpZGVDb250ZW50O1xufTtcblxuLyoqIExpc3QgUmVwb3J0ICoqL1xuXG5leHBvcnQgdHlwZSBMaXN0UmVwb3J0TWFuaWZlc3RTZXR0aW5ncyA9IEJhc2VNYW5pZmVzdFNldHRpbmdzICYge1xuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cdHZpZXdzPzogTXVsdGlwbGVWaWV3c0NvbmZpZ3VyYXRpb247XG5cdGtleVBlcmZvcm1hbmNlSW5kaWNhdG9ycz86IHtcblx0XHRba3BpTmFtZTogc3RyaW5nXTogS1BJQ29uZmlndXJhdGlvbjtcblx0fTtcbn07XG5cbmV4cG9ydCB0eXBlIFZpZXdQYXRoQ29uZmlndXJhdGlvbiA9IFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbiB8IENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uO1xuXG5leHBvcnQgdHlwZSBWaWV3Q29uZmlndXJhdGlvbiA9IFZpZXdQYXRoQ29uZmlndXJhdGlvbiB8IEN1c3RvbVZpZXdUZW1wbGF0ZUNvbmZpZ3VyYXRpb247XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVZpZXdUZW1wbGF0ZUNvbmZpZ3VyYXRpb24gPSB7XG5cdGtleT86IHN0cmluZztcblx0bGFiZWw6IHN0cmluZztcblx0dGVtcGxhdGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbiA9IHtcblx0a2VlcFByZXZpb3VzUHJlc29uYWxpemF0aW9uPzogYm9vbGVhbjtcblx0a2V5Pzogc3RyaW5nO1xuXHRlbnRpdHlTZXQ/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24gPSB7XG5cdHByaW1hcnk6IFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbltdO1xuXHRzZWNvbmRhcnk6IFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbltdO1xuXHRkZWZhdWx0UGF0aD86IFwiYm90aFwiIHwgXCJwcmltYXJ5XCIgfCBcInNlY29uZGFyeVwiO1xuXHRrZXk/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uID0ge1xuXHRwYXRoczogVmlld0NvbmZpZ3VyYXRpb25bXTtcblx0c2hvd0NvdW50cz86IGJvb2xlYW47XG59O1xuXG4vKiogRmlsdGVyIENvbmZpZ3VyYXRpb24gKiovXG5cbi8qKiBAdHlwZWRlZiBGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb24gKiovXG5leHBvcnQgdHlwZSBGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdGZpbHRlckZpZWxkcz86IFJlY29yZDxzdHJpbmcsIEZpbHRlckZpZWxkTWFuaWZlc3RDb25maWd1cmF0aW9uPjtcblx0bmF2aWdhdGlvblByb3BlcnRpZXM/OiBzdHJpbmdbXTtcblx0dXNlU2VtYW50aWNEYXRlUmFuZ2U/OiBib29sZWFuO1xuXHRpbml0aWFsTGF5b3V0Pzogc3RyaW5nO1xuXHRsYXlvdXQ/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJGaWVsZE1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IFBvc2l0aW9uYWJsZSAmIHtcblx0dHlwZT86IHN0cmluZztcblx0bGFiZWw/OiBzdHJpbmc7XG5cdHRlbXBsYXRlPzogc3RyaW5nO1xuXHRhdmFpbGFiaWxpdHk/OiBBdmFpbGFiaWxpdHlUeXBlO1xuXHRzZXR0aW5ncz86IEZpbHRlclNldHRpbmdzO1xuXHR2aXN1YWxGaWx0ZXI/OiB2aXN1YWxGaWx0ZXJDb25maWd1cmF0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgdmlzdWFsRmlsdGVyQ29uZmlndXJhdGlvbiA9IHtcblx0dmFsdWVMaXN0Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgT3BlcmF0b3JDb25maWd1cmF0aW9uID0ge1xuXHRwYXRoOiBzdHJpbmc7XG5cdGVxdWFscz86IHN0cmluZztcblx0Y29udGFpbnM/OiBzdHJpbmc7XG5cdGV4Y2x1ZGU6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0T3BlcmF0b3IgPSB7XG5cdG9wZXJhdG9yOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJTZXR0aW5ncyA9IHtcblx0b3BlcmF0b3JDb25maWd1cmF0aW9uPzogT3BlcmF0b3JDb25maWd1cmF0aW9uW107XG5cdGRlZmF1bHRWYWx1ZXM/OiBEZWZhdWx0T3BlcmF0b3JbXTtcbn07XG5cbi8qKiBDaGFydCBDb25maWd1cmF0aW9uICoqL1xuXG5leHBvcnQgdHlwZSBDaGFydFBlcnNvbmFsaXphdGlvbk1hbmlmZXN0U2V0dGluZ3MgPVxuXHR8IGJvb2xlYW5cblx0fCB7XG5cdFx0XHRzb3J0OiBib29sZWFuO1xuXHRcdFx0dHlwZTogYm9vbGVhbjtcblx0XHRcdGl0ZW06IGJvb2xlYW47XG5cdCAgfTtcblxuZXhwb3J0IHR5cGUgQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdGNoYXJ0U2V0dGluZ3M6IHtcblx0XHRwZXJzb25hbGl6YXRpb246IENoYXJ0UGVyc29uYWxpemF0aW9uTWFuaWZlc3RTZXR0aW5ncztcblx0fTtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkFmdGVyRXhlY3V0aW9uQ29uZmlndXJhdGlvbiA9IHtcblx0bmF2aWdhdGVUb0luc3RhbmNlPzogYm9vbGVhbjtcblx0ZW5hYmxlQXV0b1Njcm9sbD86IGJvb2xlYW47XG59O1xuXG4vKiogVGFibGUgQ29uZmlndXJhdGlvbiAqKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBNYW5pZmVzdEFjdGlvblxuICovXG5leHBvcnQgdHlwZSBNYW5pZmVzdEFjdGlvbiA9IHtcblx0bWVudT86IHN0cmluZ1tdO1xuXHR2aXNpYmxlPzogc3RyaW5nO1xuXHRlbmFibGVkPzogc3RyaW5nO1xuXHRwb3NpdGlvbj86IFBvc2l0aW9uO1xuXHRwcmVzcz86IHN0cmluZztcblx0dGV4dD86IHN0cmluZztcblx0X19ub1dyYXA/OiBib29sZWFuO1xuXHRlbmFibGVPblNlbGVjdD86IHN0cmluZztcblx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uPzogc3RyaW5nO1xuXHRyZXF1aXJlc1NlbGVjdGlvbj86IGJvb2xlYW47XG5cdGFmdGVyRXhlY3V0aW9uPzogQWN0aW9uQWZ0ZXJFeGVjdXRpb25Db25maWd1cmF0aW9uO1xuXHRpbmxpbmU/OiBib29sZWFuO1xuXHRkZXRlcm1pbmluZz86IGJvb2xlYW47XG5cdGZhY2V0TmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1hbmlmZXN0VGFibGVDb2x1bW5PdmVycmlkZSA9IFBvc2l0aW9uYWJsZSAmIHtcblx0d2lkdGg/OiBzdHJpbmc7XG5cdGhvcml6b250YWxBbGlnbj86IEhvcml6b250YWxBbGlnbjtcblx0YWZ0ZXJFeGVjdXRpb24/OiBBY3Rpb25BZnRlckV4ZWN1dGlvbkNvbmZpZ3VyYXRpb247XG5cdHNldHRpbmdzPzogVGFibGVDb2x1bW5TZXR0aW5ncztcblx0Zm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnNUeXBlO1xuXHRzaG93RGF0YUZpZWxkc0xhYmVsPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIE1hbmlmZXN0VGFibGVDb2x1bW4gPSBQb3NpdGlvbmFibGUgJiB7XG5cdGhlYWRlcjogc3RyaW5nO1xuXHR3aWR0aD86IHN0cmluZztcblx0c2hvd0RhdGFGaWVsZHNMYWJlbD86IGJvb2xlYW47XG5cdHR5cGU/OiBzdHJpbmc7XG5cdGhvcml6b250YWxBbGlnbj86IEhvcml6b250YWxBbGlnbjtcblx0dGVtcGxhdGU6IHN0cmluZztcblx0YWZ0ZXJFeGVjdXRpb24/OiBBY3Rpb25BZnRlckV4ZWN1dGlvbkNvbmZpZ3VyYXRpb247XG5cdGF2YWlsYWJpbGl0eT86IEF2YWlsYWJpbGl0eVR5cGU7XG5cdHNldHRpbmdzPzogVGFibGVDb2x1bW5TZXR0aW5ncztcblx0Zm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnNUeXBlO1xuXHRwcm9wZXJ0aWVzPzogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IHtcblx0dGFibGVTZXR0aW5ncz86IFRhYmxlTWFuaWZlc3RTZXR0aW5nc0NvbmZpZ3VyYXRpb247XG5cdGFjdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj47XG5cdGNvbHVtbnM/OiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdFRhYmxlQ29sdW1uIHwgTWFuaWZlc3RUYWJsZUNvbHVtbk92ZXJyaWRlPjtcbn07XG5cbmV4cG9ydCBlbnVtIFNlbGVjdGlvbk1vZGUge1xuXHRBdXRvID0gXCJBdXRvXCIsXG5cdE5vbmUgPSBcIk5vbmVcIixcblx0TXVsdGkgPSBcIk11bHRpXCIsXG5cdFNpbmdsZSA9IFwiU2luZ2xlXCJcbn1cblxuZXhwb3J0IHR5cGUgVGFibGVQZXJzb25hbGl6YXRpb25Db25maWd1cmF0aW9uID1cblx0fCBib29sZWFuXG5cdHwge1xuXHRcdFx0c29ydDogYm9vbGVhbjtcblx0XHRcdGNvbHVtbjogYm9vbGVhbjtcblx0XHRcdGZpbHRlcjogYm9vbGVhbjtcblx0XHRcdGdyb3VwOiBib29sZWFuO1xuXHRcdFx0YWdncmVnYXRlOiBib29sZWFuO1xuXHQgIH07XG5cbmV4cG9ydCB0eXBlIFRhYmxlTWFuaWZlc3RTZXR0aW5nc0NvbmZpZ3VyYXRpb24gPSB7XG5cdGNyZWF0aW9uTW9kZT86IHtcblx0XHRkaXNhYmxlQWRkUm93QnV0dG9uRm9yRW1wdHlEYXRhPzogYm9vbGVhbjtcblx0XHRjdXN0b21WYWxpZGF0aW9uRnVuY3Rpb24/OiBzdHJpbmc7XG5cdFx0Y3JlYXRlQXRFbmQ/OiBib29sZWFuO1xuXHRcdG5hbWU/OiBDcmVhdGlvbk1vZGU7XG5cdH07XG5cdGVuYWJsZUV4cG9ydD86IGJvb2xlYW47XG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IHtcblx0XHRwYXRoczogW1xuXHRcdFx0e1xuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRcdFx0fVxuXHRcdF07XG5cdFx0aGlkZVRhYmxlVGl0bGU/OiBib29sZWFuO1xuXHRcdHNob3dDb3VudHM/OiBib29sZWFuO1xuXHR9O1xuXHRwZXJzb25hbGl6YXRpb24/OiBUYWJsZVBlcnNvbmFsaXphdGlvbkNvbmZpZ3VyYXRpb247XG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyBtYW55IGl0ZW1zIGluIGEgdGFibGUgY2FuIGJlIHNlbGVjdGVkLiBZb3UgaGF2ZSB0aGUgZm9sbG93aW5nIG9wdGlvbnM6XG5cdCAqID0+IGJ5IGRlZmluaW5nICdOb25lJyB5b3UgY2FuIGZ1bGx5IGRpc2FibGUgdGhlIGxpc3Qgc2VsZWN0aW9uXG5cdCAqID0+IGJ5IGRlZmluaW5nICdTaW5nbGUnIHlvdSBhbGxvdyBvbmx5IG9uZSBpdGVtIHRvIGJlIHNlbGVjdGVkXG5cdCAqID0+IGJ5IGRlZmluaW5nICdNdWx0aScgeW91IGFsbG93IHNldmVyYWwgaXRlbXMgdG8gYmUgc2VsZWN0ZWRcblx0ICogPT4gYnkgdXNpbmcgJ0F1dG8nIHlvdSBsZWF2ZSB0aGUgZGVmYXVsdCBkZWZpbml0aW9uICdOb25lJywgZXhjZXB0IGlmIHRoZXJlIGlzIGFuIGFjdGlvbiB0aGF0IHJlcXVpcmVzIGEgc2VsZWN0aW9uIChzdWNoIGFzIGRlbGV0aW5nLCBvciBJQk4pXG5cdCAqL1xuXHRzZWxlY3Rpb25Nb2RlPzogU2VsZWN0aW9uTW9kZTtcblx0dHlwZT86IFRhYmxlVHlwZTtcblx0Y29uZGVuc2VkVGFibGVMYXlvdXQ/OiBib29sZWFuO1xuXHRzZWxlY3RBbGw/OiBib29sZWFuO1xuXHRzZWxlY3Rpb25MaW1pdD86IG51bWJlcjtcblx0ZW5hYmxlUGFzdGU/OiBib29sZWFuO1xuXHRlbmFibGVGdWxsU2NyZWVuPzogYm9vbGVhbjtcblx0ZW5hYmxlTWFzc0VkaXQ/OiBib29sZWFuO1xufTtcbiJdfQ==
@@ -18,7 +18,8 @@ export enum ActionType {
18
18
  SwitchToActiveObject = "SwitchToActiveObject",
19
19
  SwitchToDraftObject = "SwitchToDraftObject",
20
20
  DefaultApply = "DefaultApply",
21
- Menu = "Menu"
21
+ Menu = "Menu",
22
+ ShowFormDetails = "ShowFormDetails"
22
23
  }
23
24
 
24
25
  export type ManifestSideContent = {
@@ -83,6 +84,7 @@ export type KPIConfiguration = {
83
84
  model?: string;
84
85
  entitySet: string;
85
86
  qualifier: string;
87
+ detailNavigation?: string;
86
88
  };
87
89
 
88
90
  /**
@@ -119,6 +121,7 @@ export type BaseManifestSettings = {
119
121
  contentDensities?: ContentDensitiesType;
120
122
  shellContentDensity?: string;
121
123
  isDesktop?: boolean;
124
+ isPhone?: boolean;
122
125
  };
123
126
 
124
127
  export type NavigationTargetConfiguration = {
@@ -284,6 +287,7 @@ export type FilterManifestConfiguration = {
284
287
  };
285
288
 
286
289
  export type FilterFieldManifestConfiguration = Positionable & {
290
+ type?: string;
287
291
  label?: string;
288
292
  template?: string;
289
293
  availability?: AvailabilityType;
@@ -360,11 +364,13 @@ export type ManifestTableColumnOverride = Positionable & {
360
364
  afterExecution?: ActionAfterExecutionConfiguration;
361
365
  settings?: TableColumnSettings;
362
366
  formatOptions?: FormatOptionsType;
367
+ showDataFieldsLabel?: boolean;
363
368
  };
364
369
 
365
370
  export type ManifestTableColumn = Positionable & {
366
371
  header: string;
367
372
  width?: string;
373
+ showDataFieldsLabel?: boolean;
368
374
  type?: string;
369
375
  horizontalAlign?: HorizontalAlign;
370
376
  template: string;
@@ -54,10 +54,21 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
54
54
  return !!this.oManifestSettings.isDesktop;
55
55
  }
56
56
  /**
57
- * Retrieves the form containers (field groups/identification) defined in the manifest.
57
+ * Checks whether the current environment is a mobile phone or not.
58
+ *
59
+ * @returns {boolean} `true` if we are on a mobile phone
60
+ */
61
+
62
+ }, {
63
+ key: "isPhone",
64
+ value: function isPhone() {
65
+ return !!this.oManifestSettings.isPhone;
66
+ }
67
+ /**
68
+ * Retrieves the form containers (field groups or identification) defined in the manifest.
58
69
  *
59
70
  * @param {string} facetTarget The target annotation path for this form
60
- * @returns {FormManifestConfiguration} A set of manifest header facets indexed by an iterable key
71
+ * @returns {FormManifestConfiguration} A set of form containers defined in the manifest indexed by an iterable key
61
72
  */
62
73
 
63
74
  }, {
@@ -68,9 +79,9 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
68
79
  return (_this$oManifestSettin = this.oManifestSettings.controlConfiguration) === null || _this$oManifestSettin === void 0 ? void 0 : _this$oManifestSettin[facetTarget];
69
80
  }
70
81
  /**
71
- * Retrieves the headerFacets defined in the manifest.
82
+ * Retrieves the header facets defined in the manifest.
72
83
  *
73
- * @returns {ConfigurableRecord<ManifestHeaderFacet>} A set of manifest header facets indexed by an iterable key
84
+ * @returns {ConfigurableRecord<ManifestHeaderFacet>} A set of header facets defined in the manifest indexed by an iterable key
74
85
  */
75
86
 
76
87
  }, {
@@ -83,7 +94,7 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
83
94
  /**
84
95
  * Retrieves the header actions defined in the manifest.
85
96
  *
86
- * @returns {ConfigurableRecord<ManifestAction>} A set of manifest actions indexed by an iterable key
97
+ * @returns {ConfigurableRecord<ManifestAction>} A set of actions defined in the manifest indexed by an iterable key
87
98
  */
88
99
 
89
100
  }, {
@@ -96,7 +107,7 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
96
107
  /**
97
108
  * Retrieves the footer actions defined in the manifest.
98
109
  *
99
- * @returns {ConfigurableRecord<ManifestAction>} A set of manifest actions indexed by an iterable key
110
+ * @returns {ConfigurableRecord<ManifestAction>} A set of actions defined in the manifest indexed by an iterable key
100
111
  */
101
112
 
102
113
  }, {
@@ -401,4 +412,4 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
401
412
 
402
413
  return ManifestWrapper;
403
414
  }, false);
404
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbmlmZXN0V3JhcHBlci50cyJdLCJuYW1lcyI6WyJNYW5pZmVzdFdyYXBwZXIiLCJvTWFuaWZlc3RTZXR0aW5ncyIsIm1lcmdlRm4iLCJjb252ZXJ0ZXJUeXBlIiwiaXNEZXNrdG9wIiwiZmFjZXRUYXJnZXQiLCJjb250cm9sQ29uZmlndXJhdGlvbiIsImZhY2V0cyIsImNvbnRlbnQiLCJoZWFkZXIiLCJhY3Rpb25zIiwiZm9vdGVyIiwidmFyaWFudE1hbmFnZW1lbnQiLCJWYXJpYW50TWFuYWdlbWVudFR5cGUiLCJOb25lIiwiZGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGgiLCJzQW5ub3RhdGlvblBhdGgiLCJuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZSIsIm5hdmlnYXRpb24iLCJ2aWV3TGV2ZWwiLCJjb250ZW50RGVuc2l0aWVzIiwiY296eSIsImNvbXBhY3QiLCJmY2xFbmFibGVkIiwibWFuaWZlc3RDb250ZW50RGVuc2l0eSIsInNoZWxsQ29udGVudERlbnNpdHkiLCJpc0NvbmRlbnNlZExheW91dENvbXBsaWFudCIsInNlY3Rpb25zIiwiYm9keSIsImdldFNob3dPYmplY3RQYWdlSGVhZGVyIiwiZWRpdGFibGVIZWFkZXJDb250ZW50IiwiYW5jaG9yQmFyVmlzaWJsZSIsInVuZGVmaW5lZCIsImdldFNob3dBbmNob3JCYXIiLCJzZWN0aW9uTGF5b3V0IiwidmlzaWJsZSIsInZpZXdzIiwia2V5UGVyZm9ybWFuY2VJbmRpY2F0b3JzIiwiZ2V0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJ2aWV3Q29uZmlnIiwiZ2V0Vmlld0NvbmZpZ3VyYXRpb24iLCJwYXRocyIsIm1hbmlmZXN0RW50aXR5U2V0IiwiZW50aXR5U2V0IiwiZmluZCIsInBhdGgiLCJ0ZW1wbGF0ZSIsImhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMiLCJwcmltYXJ5Iiwic2Vjb25kYXJ5Iiwic29tZSIsImNvbnRleHRQYXRoIiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUFxQkE7QUFDQTtBQUNBO01BQ01BLGU7QUFDTDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDLDZCQUFvQkMsaUJBQXBCLEVBQXFFQyxPQUFyRSxFQUF3RjtBQUFBOztBQUFBLFdBQXBFRCxpQkFBb0UsR0FBcEVBLGlCQUFvRTtBQUFBLFdBQW5CQyxPQUFtQixHQUFuQkEsT0FBbUI7QUFBRTtBQUUxRjtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7OzthQUNDLDJCQUFnQztBQUMvQixlQUFPLEtBQUtELGlCQUFMLENBQXVCRSxhQUE5QjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLHFCQUFxQjtBQUNwQixlQUFPLENBQUMsQ0FBQyxLQUFLRixpQkFBTCxDQUF1QkcsU0FBaEM7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLDBCQUFpQkMsV0FBakIsRUFBaUU7QUFBQTs7QUFDaEUsd0NBQU8sS0FBS0osaUJBQUwsQ0FBdUJLLG9CQUE5QiwwREFBTyxzQkFBOENELFdBQTlDLENBQVA7QUFDQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQywyQkFBMkQ7QUFBQTs7QUFDMUQsZUFBTyxLQUFLSCxPQUFMLENBQ04sRUFETSw0QkFFTixLQUFLRCxpQkFBTCxDQUF1Qkssb0JBRmpCLHFGQUVOLHVCQUE4QywwQ0FBOUMsQ0FGTSwyREFFTix1QkFBMkZDLE1BRnJGLGNBR0wsS0FBS04saUJBQU4sQ0FBdURPLE9BSGpELGdFQUdOLFNBQWdFQyxNQUgxRCxvREFHTixnQkFBd0VGLE1BSGxFLENBQVA7QUFLQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyw0QkFBdUQ7QUFBQTs7QUFDdEQsZUFBTyxnQ0FBS04saUJBQUwsQ0FBdUJPLE9BQXZCLDRHQUFnQ0MsTUFBaEMsa0ZBQXdDQyxPQUF4QyxLQUFtRCxFQUExRDtBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLDRCQUF1RDtBQUFBOztBQUN0RCxlQUFPLGdDQUFLVCxpQkFBTCxDQUF1Qk8sT0FBdkIsNEdBQWdDRyxNQUFoQyxrRkFBd0NELE9BQXhDLEtBQW1ELEVBQTFEO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsZ0NBQThDO0FBQzdDLGVBQU8sS0FBS1QsaUJBQUwsQ0FBdUJXLGlCQUF2QixJQUE0Q0MscUJBQXFCLENBQUNDLElBQXpFO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsNENBQXVEO0FBQ3RELGVBQU8sS0FBS2IsaUJBQUwsQ0FBdUJjLDZCQUE5QjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyxpQ0FBd0JDLGVBQXhCLEVBQXNEO0FBQUE7O0FBQ3JELGVBQU8sZ0NBQUtmLGlCQUFMLDRHQUF3Qkssb0JBQXhCLGtGQUErQ1UsZUFBL0MsTUFBbUUsRUFBMUU7QUFDQTtBQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLG9DQUEyQkMsMEJBQTNCLEVBQWdHO0FBQUE7O0FBQy9GLGVBQU8saUNBQUtoQixpQkFBTCwrR0FBd0JpQixVQUF4QixvRkFBcUNELDBCQUFyQyxNQUFvRSxFQUEzRTtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLHdCQUF1QjtBQUFBOztBQUN0QixlQUFPLGlDQUFLaEIsaUJBQUwsb0ZBQXdCa0IsU0FBeEIsS0FBcUMsQ0FBQyxDQUE3QztBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLCtCQUE0QztBQUFBOztBQUMzQyxlQUNDLGlDQUFLbEIsaUJBQUwsb0ZBQXdCbUIsZ0JBQXhCLEtBQTRDO0FBQzNDQyxVQUFBQSxJQUFJLEVBQUUsS0FEcUM7QUFFM0NDLFVBQUFBLE9BQU8sRUFBRTtBQUZrQyxTQUQ3QztBQU1BO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLHdCQUF3QjtBQUFBOztBQUN2QixlQUFPLENBQUMsNkJBQUMsS0FBS3JCLGlCQUFOLG9EQUFDLHdCQUF3QnNCLFVBQXpCLENBQVI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyxzQ0FBc0M7QUFBQTs7QUFDckMsWUFBTUMsc0JBQXNCLEdBQUcsaUNBQUt2QixpQkFBTCxvRkFBd0JtQixnQkFBeEIsS0FBNEM7QUFDMUVDLFVBQUFBLElBQUksRUFBRSxLQURvRTtBQUUxRUMsVUFBQUEsT0FBTyxFQUFFO0FBRmlFLFNBQTNFO0FBSUEsWUFBTUcsbUJBQW1CLEdBQUcsaUNBQUt4QixpQkFBTCxvRkFBd0J3QixtQkFBeEIsS0FBK0MsU0FBM0U7QUFDQSxZQUFJQywwQkFBMEIsR0FBRyxJQUFqQzs7QUFDQSxZQUFLLENBQUFGLHNCQUFzQixTQUF0QixJQUFBQSxzQkFBc0IsV0FBdEIsWUFBQUEsc0JBQXNCLENBQUVILElBQXhCLE1BQWlDLElBQWpDLElBQXlDLENBQUFHLHNCQUFzQixTQUF0QixJQUFBQSxzQkFBc0IsV0FBdEIsWUFBQUEsc0JBQXNCLENBQUVGLE9BQXhCLE1BQW9DLElBQTlFLElBQXVGRyxtQkFBbUIsS0FBSyxNQUFuSCxFQUEySDtBQUMxSEMsVUFBQUEsMEJBQTBCLEdBQUcsS0FBN0I7QUFDQTs7QUFDRCxlQUFPQSwwQkFBUDtBQUNBLE8sQ0FFRDs7QUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsdUJBQW1EO0FBQUE7O0FBQ2xELGVBQU8sS0FBS3hCLE9BQUwsQ0FDTixFQURNLDZCQUVOLEtBQUtELGlCQUFMLENBQXVCSyxvQkFGakIsdUZBRU4sd0JBQThDLG9DQUE5QyxDQUZNLDREQUVOLHdCQUFxRnFCLFFBRi9FLGVBR0wsS0FBSzFCLGlCQUFOLENBQXVETyxPQUhqRCxnRUFHTixVQUFnRW9CLElBSDFELG1EQUdOLGVBQXNFRCxRQUhoRSxDQUFQO0FBS0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsNEJBQTRCO0FBQzNCLGVBQU8sS0FBS0UsdUJBQUwsTUFBbUMsS0FBSzVCLGlCQUFOLENBQXVENkIscUJBQWhHO0FBQ0E7QUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsNEJBQTRCO0FBQUE7O0FBQzNCLGVBQU8sY0FBQyxLQUFLN0IsaUJBQU4sQ0FBdURPLE9BQXZELDRFQUFnRUMsTUFBaEUsc0VBQXdFc0IsZ0JBQXhFLE1BQTZGQyxTQUE3RixHQUNKLENBQUMsZUFBRSxLQUFLL0IsaUJBQU4sQ0FBdURPLE9BQXhELDBEQUFDLFVBQWdFQyxNQUFqRSw2Q0FBQyxpQkFBd0VzQixnQkFBekUsQ0FERyxHQUVKLElBRkg7QUFHQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyx5QkFBeUI7QUFDeEIsZUFBTyxLQUFLRSxnQkFBTCxNQUE0QixLQUFLaEMsaUJBQU4sQ0FBdURpQyxhQUF2RCxLQUF5RSxNQUEzRztBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLG1DQUFtQztBQUFBOztBQUNsQyxlQUFPLGNBQUMsS0FBS2pDLGlCQUFOLENBQXVETyxPQUF2RCw0RUFBZ0VDLE1BQWhFLHNFQUF3RTBCLE9BQXhFLE1BQW9GSCxTQUFwRixHQUNKLENBQUMsZUFBRSxLQUFLL0IsaUJBQU4sQ0FBdURPLE9BQXhELDBEQUFDLFVBQWdFQyxNQUFqRSw2Q0FBQyxpQkFBd0UwQixPQUF6RSxDQURHLEdBRUosSUFGSDtBQUdBLE8sQ0FFRDtBQUVBOztBQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyxnQ0FBK0Q7QUFDOUQsZUFBUSxLQUFLbEMsaUJBQU4sQ0FBdURtQyxLQUE5RDtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLCtCQUErRDtBQUM5RCxlQUFRLEtBQUtuQyxpQkFBTixDQUF1RG9DLHdCQUF2RCxJQUFtRixFQUExRjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLGtDQUFzRDtBQUNyRCxlQUFPLEtBQUtDLHVCQUFMLENBQTZCLDZDQUE3QixDQUFQO0FBQ0E7QUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsaUNBQWlDO0FBQUE7O0FBQ2hDLFlBQU1DLFVBQVUsR0FBRyxLQUFLQyxvQkFBTCxNQUErQjtBQUFFQyxVQUFBQSxLQUFLLEVBQUU7QUFBVCxTQUFsRDtBQUNBLFlBQU1DLGlCQUFpQixHQUFHLEtBQUt6QyxpQkFBTCxDQUF1QjBDLFNBQWpEO0FBQ0EsZUFDQ0osVUFBVSxDQUFDRSxLQUFYLENBQWlCRyxJQUFqQixDQUFzQixVQUFDQyxJQUFELEVBQTZCO0FBQUE7O0FBQ2xELHVCQUFLQSxJQUFMLGtDQUFJLE1BQTJDQyxRQUEvQyxFQUF5RDtBQUN4RCxtQkFBT2QsU0FBUDtBQUNBLFdBRkQsTUFFTyxJQUFJLEtBQUksQ0FBQ2UseUJBQUwsQ0FBK0JGLElBQS9CLENBQUosRUFBMkU7QUFDakYsdUJBQStCQSxJQUEvQjtBQUFBLGdCQUFRRyxPQUFSLFFBQVFBLE9BQVI7QUFBQSxnQkFBaUJDLFNBQWpCLFFBQWlCQSxTQUFqQjtBQUNBLG1CQUNDRCxPQUFPLENBQUNFLElBQVIsQ0FBYSxVQUFBTCxJQUFJO0FBQUEscUJBQUlBLElBQUksQ0FBQ0YsU0FBTCxJQUFrQkUsSUFBSSxDQUFDRixTQUFMLEtBQW1CRCxpQkFBekM7QUFBQSxhQUFqQixLQUNBTyxTQUFTLENBQUNDLElBQVYsQ0FBZSxVQUFBTCxJQUFJO0FBQUEscUJBQUlBLElBQUksQ0FBQ0YsU0FBTCxJQUFrQkUsSUFBSSxDQUFDRixTQUFMLEtBQW1CRCxpQkFBekM7QUFBQSxhQUFuQixDQUZEO0FBSUEsV0FOTSxNQU1BO0FBQ05HLFlBQUFBLElBQUksR0FBR0EsSUFBUDtBQUNBLG1CQUFPQSxJQUFJLENBQUNGLFNBQUwsSUFBa0JFLElBQUksQ0FBQ0YsU0FBTCxLQUFtQkQsaUJBQTVDO0FBQ0E7QUFDRCxTQWJELE1BYU9WLFNBZFI7QUFnQkE7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsMEJBQXFDO0FBQUE7O0FBQ3BDLDBDQUFPLEtBQUsvQixpQkFBWiw0REFBTyx3QkFBd0JrRCxXQUEvQjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsbUNBQTBCTixJQUExQixFQUFpRTtBQUFBOztBQUNoRSxZQUFJLENBQUNBLElBQUwsRUFBVztBQUNWLGNBQU1OLFVBQVUsR0FBRyxLQUFLQyxvQkFBTCxNQUErQjtBQUFFQyxZQUFBQSxLQUFLLEVBQUU7QUFBVCxXQUFsRDtBQUNBLGlCQUFPRixVQUFVLENBQUNFLEtBQVgsQ0FBaUJTLElBQWpCLENBQXNCLFVBQUFMLElBQUksRUFBSTtBQUFBOztBQUNwQyxtQkFDQyxhQUFDQSxJQUFELENBQXdDRyxPQUF4QyxzREFBaURJLE1BQWpELElBQTBELENBQTFELElBQ0EsZUFBQ1AsSUFBRCxDQUF3Q0ksU0FBeEMsMERBQW1ERyxNQUFuRCxJQUE0RCxDQUY3RDtBQUlBLFdBTE0sQ0FBUDtBQU1BOztBQUNELGVBQU8sY0FBQ1AsSUFBRCxDQUF3Q0csT0FBeEMsd0RBQWlESSxNQUFqRCxJQUEwRCxDQUExRCxJQUErRCxnQkFBQ1AsSUFBRCxDQUF3Q0ksU0FBeEMsNERBQW1ERyxNQUFuRCxJQUE0RCxDQUFsSTtBQUNBLE8sQ0FFRDs7Ozs7OztTQUdjcEQsZSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhYmxlUmVjb3JkIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7XG5cdEJhc2VNYW5pZmVzdFNldHRpbmdzLFxuXHRDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbixcblx0Q29udGVudERlbnNpdGllc1R5cGUsXG5cdEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0Rm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0TGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MsXG5cdE1hbmlmZXN0QWN0aW9uLFxuXHRNYW5pZmVzdEhlYWRlckZhY2V0LFxuXHRNYW5pZmVzdFNlY3Rpb24sXG5cdE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uLFxuXHROYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uLFxuXHRPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncyxcblx0U2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uLFxuXHRWaWV3UGF0aENvbmZpZ3VyYXRpb24sXG5cdFRlbXBsYXRlVHlwZSxcblx0VmFyaWFudE1hbmFnZW1lbnRUeXBlLFxuXHRDdXN0b21WaWV3VGVtcGxhdGVDb25maWd1cmF0aW9uLFxuXHRWaWV3Q29uZmlndXJhdGlvbixcblx0S1BJQ29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5cbi8qKlxuICpcbiAqL1xuY2xhc3MgTWFuaWZlc3RXcmFwcGVyIHtcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSB3cmFwcGVyIG9iamVjdCB0byBlbnN1cmUgdGhlIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgbWFuaWZlc3QgaXMgY29uc2lzdGVudCBhbmQgZXZlcnl0aGluZyBpcyBtZXJnZWQgY29ycmVjdGx5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Jhc2VNYW5pZmVzdFNldHRpbmdzfSBvTWFuaWZlc3RTZXR0aW5ncyBUaGUgbWFuaWZlc3Qgc2V0dGluZ3MgZm9yIHRoZSBjdXJyZW50IHBhZ2Vcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGbiBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIG1lcmdlXG5cdCAqIEByZXR1cm5zIHtNYW5pZmVzdFdyYXBwZXJ9IFRoZSBtYW5pZmVzdCB3cmFwcGVyIG9iamVjdFxuXHQgKi9cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBvTWFuaWZlc3RTZXR0aW5nczogQmFzZU1hbmlmZXN0U2V0dGluZ3MsIHByaXZhdGUgbWVyZ2VGbjogRnVuY3Rpb24pIHt9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGN1cnJlbnQgdGVtcGxhdGUgdHlwZS5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgdGVtcGxhdGVcblx0ICovXG5cdGdldFRlbXBsYXRlVHlwZSgpOiBUZW1wbGF0ZVR5cGUge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnZlcnRlclR5cGU7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBkZXNrdG9wIG9yIG5vdC5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB3ZSBhcmUgb24gYSBkZXNrdG9wXG5cdCAqL1xuXHRpc0Rlc2t0b3AoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5pc0Rlc2t0b3A7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBmb3JtIGNvbnRhaW5lcnMgKGZpZWxkIGdyb3Vwcy9pZGVudGlmaWNhdGlvbikgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBmYWNldFRhcmdldCBUaGUgdGFyZ2V0IGFubm90YXRpb24gcGF0aCBmb3IgdGhpcyBmb3JtXG5cdCAqIEByZXR1cm5zIHtGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9ufSBBIHNldCBvZiBtYW5pZmVzdCBoZWFkZXIgZmFjZXRzIGluZGV4ZWQgYnkgYW4gaXRlcmFibGUga2V5XG5cdCAqL1xuXHRnZXRGb3JtQ29udGFpbmVyKGZhY2V0VGFyZ2V0OiBzdHJpbmcpOiBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250cm9sQ29uZmlndXJhdGlvbj8uW2ZhY2V0VGFyZ2V0XSBhcyBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGhlYWRlckZhY2V0cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHJldHVybnMge0NvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEhlYWRlckZhY2V0Pn0gQSBzZXQgb2YgbWFuaWZlc3QgaGVhZGVyIGZhY2V0cyBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0SGVhZGVyRmFjZXRzKCk6IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEhlYWRlckZhY2V0PiB7XG5cdFx0cmV0dXJuIHRoaXMubWVyZ2VGbihcblx0XHRcdHt9LFxuXHRcdFx0dGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250cm9sQ29uZmlndXJhdGlvbj8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckZhY2V0c1wiXT8uZmFjZXRzLFxuXHRcdFx0KHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmNvbnRlbnQ/LmhlYWRlcj8uZmFjZXRzXG5cdFx0KTtcblx0fVxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBoZWFkZXIgYWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHJldHVybnMge0NvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEFjdGlvbj59IEEgc2V0IG9mIG1hbmlmZXN0IGFjdGlvbnMgaW5kZXhlZCBieSBhbiBpdGVyYWJsZSBrZXlcblx0ICovXG5cdGdldEhlYWRlckFjdGlvbnMoKTogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udGVudD8uaGVhZGVyPy5hY3Rpb25zIHx8IHt9O1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGZvb3RlciBhY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Q29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPn0gQSBzZXQgb2YgbWFuaWZlc3QgYWN0aW9ucyBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0Rm9vdGVyQWN0aW9ucygpOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+IHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250ZW50Py5mb290ZXI/LmFjdGlvbnMgfHwge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB2YXJpYW50IG1hbmFnZW1lbnQgYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtWYXJpYW50TWFuYWdlbWVudFR5cGV9IEEgdHlwZSBvZiB2YXJpYW50IG1hbmFnZW1lbnRcblx0ICovXG5cdGdldFZhcmlhbnRNYW5hZ2VtZW50KCk6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MudmFyaWFudE1hbmFnZW1lbnQgfHwgVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBhbm5vdGF0aW9uIFBhdGggZm9yIHRoZSBTUFYgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gVGhlIGFubm90YXRpb24gcGF0aCBmb3IgdGhlIGRlZmF1bHQgU1BWIG9yIHVuZGVmaW5lZC5cblx0ICovXG5cdGdldERlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuZGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb250cm9sIGNvbmZpZ3VyYXRpb24gYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgZm9yIGEgc3BlY2lmaWMgYW5ub3RhdGlvbiBwYXRoLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0Fubm90YXRpb25QYXRoIFRoZSByZWxhdGl2ZSBhbm5vdGF0aW9uIHBhdGhcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMge29iamVjdH0gVGhlIGNvbnRyb2wgY29uZmlndXJhdGlvblxuXHQgKi9cblx0Z2V0Q29udHJvbENvbmZpZ3VyYXRpb24oc0Fubm90YXRpb25QYXRoOiBzdHJpbmcpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5jb250cm9sQ29uZmlndXJhdGlvbj8uW3NBbm5vdGF0aW9uUGF0aF0gfHwge307XG5cdH1cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29uZmlndXJlZCBzZXR0aW5ncyBmb3IgYSBnaXZlbiBuYXZpZ2F0aW9uIHRhcmdldC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG5hdmlnYXRpb25PckNvbGxlY3Rpb25OYW1lIFRoZSBuYW1lIG9mIHRoZSBuYXZpZ2F0aW9uIHRvIGNoZWNrXG5cdCAqIEByZXR1cm5zIHtOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9ufSBUaGUgbmF2aWdhdGlvbiBzZXR0aW5ncyBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRnZXROYXZpZ2F0aW9uQ29uZmlndXJhdGlvbihuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZTogc3RyaW5nKTogTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/Lm5hdmlnYXRpb24/LltuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZV0gfHwge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB2aWV3IGxldmVsLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgY3VycmVudCB2aWV3IGxldmVsXG5cdCAqL1xuXHRnZXRWaWV3TGV2ZWwoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8udmlld0xldmVsIHx8IC0xO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGVudERlbnNpdGllcyBzZXR0aW5nIG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICpcblx0ICogQHJldHVybnMge0NvbnRlbnREZW5zaXRpZXNUeXBlfSBUaGUgY3VycmVudCBjb250ZW50IGRlbnNpdHlcblx0ICovXG5cdGdldENvbnRlbnREZW5zaXRpZXMoKTogQ29udGVudERlbnNpdGllc1R5cGUge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5jb250ZW50RGVuc2l0aWVzIHx8IHtcblx0XHRcdFx0Y296eTogZmFsc2UsXG5cdFx0XHRcdGNvbXBhY3Q6IGZhbHNlXG5cdFx0XHR9XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciB3ZSBhcmUgaW4gRkNMIG1vZGUgb3Igbm90LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHdlIGFyZSBpbiBGQ0xcblx0ICovXG5cdGlzRmNsRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5mY2xFbmFibGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IHNldHRpbmdzIChhcHBsaWNhdGlvbiAvIHNoZWxsKSBhbGxvd3MgdXMgdG8gdXNlIGNvbmRlbnNlZCBsYXlvdXQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgd2UgY2FuIHVzZSB0aGUgY29uZGVuc2VkIGxheW91dCwgZmFsc2Ugb3RoZXJ3aXNlXG5cdCAqL1xuXHRpc0NvbmRlbnNlZExheW91dENvbXBsaWFudCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBtYW5pZmVzdENvbnRlbnREZW5zaXR5ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uY29udGVudERlbnNpdGllcyB8fCB7XG5cdFx0XHRjb3p5OiBmYWxzZSxcblx0XHRcdGNvbXBhY3Q6IGZhbHNlXG5cdFx0fTtcblx0XHRjb25zdCBzaGVsbENvbnRlbnREZW5zaXR5ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uc2hlbGxDb250ZW50RGVuc2l0eSB8fCBcImNvbXBhY3RcIjtcblx0XHRsZXQgaXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQgPSB0cnVlO1xuXHRcdGlmICgobWFuaWZlc3RDb250ZW50RGVuc2l0eT8uY296eSA9PT0gdHJ1ZSAmJiBtYW5pZmVzdENvbnRlbnREZW5zaXR5Py5jb21wYWN0ICE9PSB0cnVlKSB8fCBzaGVsbENvbnRlbnREZW5zaXR5ID09PSBcImNvenlcIikge1xuXHRcdFx0aXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQgPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGlzQ29uZGVuc2VkTGF5b3V0Q29tcGxpYW50O1xuXHR9XG5cblx0Ly9yZWdpb24gT1AgU3BlY2lmaWNcblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBzZWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHJldHVybnMge0NvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdFNlY3Rpb24+fSBBIHNldCBvZiBtYW5pZmVzdCBzZWN0aW9ucyBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0U2VjdGlvbnMoKTogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj4ge1xuXHRcdHJldHVybiB0aGlzLm1lcmdlRm4oXG5cdFx0XHR7fSxcblx0XHRcdHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udHJvbENvbmZpZ3VyYXRpb24/LltcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GYWNldHNcIl0/LnNlY3Rpb25zLFxuXHRcdFx0KHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmNvbnRlbnQ/LmJvZHk/LnNlY3Rpb25zXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgb2YgdGhlIGhlYWRlciBvZiB0aGUgYXBwbGljYXRpb24gaXMgZWRpdGFibGUgYW5kIHNob3VsZCBhcHBlYXIgaW4gdGhlIGZhY2V0cy5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaGVhZGVyIGlmIGVkaXRhYmxlXG5cdCAqL1xuXHRpc0hlYWRlckVkaXRhYmxlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldFNob3dPYmplY3RQYWdlSGVhZGVyKCkgJiYgKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmVkaXRhYmxlSGVhZGVyQ29udGVudDtcblx0fVxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBzaG93IHRoZSBvYmplY3QgcGFnZSBoZWFkZXIuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIGhlYWRlciBzaG91bGQgYmUgZGlzcGxheWVkXG5cdCAqL1xuXHRnZXRTaG93QW5jaG9yQmFyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy5hbmNob3JCYXJWaXNpYmxlICE9PSB1bmRlZmluZWRcblx0XHRcdD8gISEodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy5hbmNob3JCYXJWaXNpYmxlXG5cdFx0XHQ6IHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgc2VjdGlvbiB3aWxsIGJlIGRpc3BsYXllZCBpbiBkaWZmZXJlbnQgdGFicy5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaWNvbiB0YWIgYmFyIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2Ygc2Nyb2xsaW5nXG5cdCAqL1xuXHR1c2VJY29uVGFiQmFyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldFNob3dBbmNob3JCYXIoKSAmJiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuc2VjdGlvbkxheW91dCA9PT0gXCJUYWJzXCI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZSBvYmplY3QgcGFnZSBoZWFkZXIgaXMgdG8gYmUgc2hvd24uXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIG9iamVjdCBwYWdlIGhlYWRlciBpcyB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdGdldFNob3dPYmplY3RQYWdlSGVhZGVyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy52aXNpYmxlICE9PSB1bmRlZmluZWRcblx0XHRcdD8gISEodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy52aXNpYmxlXG5cdFx0XHQ6IHRydWU7XG5cdH1cblxuXHQvL2VuZHJlZ2lvbiBPUCBTcGVjaWZpY1xuXG5cdC8vcmVnaW9uIExSIFNwZWNpZmljXG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgbXVsdGlwbGUgdmlldyBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7TXVsdGlwbGVWaWV3c0NvbmZpZ3VyYXRpb259IFRoZSB2aWV3cyB0aGF0IHJlcHJlc2VudCB0aGUgbWFuaWZlc3Qgb2JqZWN0XG5cdCAqL1xuXHRnZXRWaWV3Q29uZmlndXJhdGlvbigpOiBNdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKS52aWV3cztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIEtQSSBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBSZXR1cm5zIGEgbWFwIGJldHdlZW4gS1BJIG5hbWVzIGFuZCB0aGVpciByZXNwZWN0aXZlIGNvbmZpZ3VyYXRpb25cblx0ICovXG5cdGdldEtQSUNvbmZpZ3VyYXRpb24oKTogeyBba3BpTmFtZTogc3RyaW5nXTogS1BJQ29uZmlndXJhdGlvbiB9IHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MpLmtleVBlcmZvcm1hbmNlSW5kaWNhdG9ycyB8fCB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGZpbHRlciBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7RmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9ufSBUaGUgZmlsdGVyIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3Rcblx0ICovXG5cdGdldEZpbHRlckNvbmZpZ3VyYXRpb24oKTogRmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9uIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRDb250cm9sQ29uZmlndXJhdGlvbihcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIik7XG5cdH1cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZW50aXR5IHNldHMgdG8gYmUgZGlzcGxheWVkLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBlbnRpdHkgc2V0c1xuXHQgKi9cblx0aGFzTXVsdGlwbGVFbnRpdHlTZXRzKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHZpZXdDb25maWcgPSB0aGlzLmdldFZpZXdDb25maWd1cmF0aW9uKCkgfHwgeyBwYXRoczogW10gfTtcblx0XHRjb25zdCBtYW5pZmVzdEVudGl0eVNldCA9IHRoaXMub01hbmlmZXN0U2V0dGluZ3MuZW50aXR5U2V0O1xuXHRcdHJldHVybiAoXG5cdFx0XHR2aWV3Q29uZmlnLnBhdGhzLmZpbmQoKHBhdGg6IFZpZXdDb25maWd1cmF0aW9uKSA9PiB7XG5cdFx0XHRcdGlmICgocGF0aCBhcyBDdXN0b21WaWV3VGVtcGxhdGVDb25maWd1cmF0aW9uKT8udGVtcGxhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyhwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRcdGNvbnN0IHsgcHJpbWFyeSwgc2Vjb25kYXJ5IH0gPSBwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRwcmltYXJ5LnNvbWUocGF0aCA9PiBwYXRoLmVudGl0eVNldCAmJiBwYXRoLmVudGl0eVNldCAhPT0gbWFuaWZlc3RFbnRpdHlTZXQpIHx8XG5cdFx0XHRcdFx0XHRzZWNvbmRhcnkuc29tZShwYXRoID0+IHBhdGguZW50aXR5U2V0ICYmIHBhdGguZW50aXR5U2V0ICE9PSBtYW5pZmVzdEVudGl0eVNldClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhdGggPSBwYXRoIGFzIFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbjtcblx0XHRcdFx0XHRyZXR1cm4gcGF0aC5lbnRpdHlTZXQgJiYgcGF0aC5lbnRpdHlTZXQgIT09IG1hbmlmZXN0RW50aXR5U2V0O1xuXHRcdFx0XHR9XG5cdFx0XHR9KSAhPT0gdW5kZWZpbmVkXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjb250ZXh0IHBhdGggZm9yIHRoZSB0ZW1wbGF0ZSBpZiBpdCBpcyBzcGVjaWZpZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29udGV4dCBwYXRoIGZvciB0aGUgdGVtcGxhdGVcblx0ICovXG5cdGdldENvbnRleHRQYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmNvbnRleHRQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmlzdWFsaXphdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Vmlld1BhdGhDb25maWd1cmF0aW9ufSBwYXRoIFRoZSBwYXRoIGZyb20gdGhlIHZpZXdcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmlzdWFsaXphdGlvbnNcblx0ICovXG5cdGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMocGF0aD86IFZpZXdQYXRoQ29uZmlndXJhdGlvbik6IGJvb2xlYW4ge1xuXHRcdGlmICghcGF0aCkge1xuXHRcdFx0Y29uc3Qgdmlld0NvbmZpZyA9IHRoaXMuZ2V0Vmlld0NvbmZpZ3VyYXRpb24oKSB8fCB7IHBhdGhzOiBbXSB9O1xuXHRcdFx0cmV0dXJuIHZpZXdDb25maWcucGF0aHMuc29tZShwYXRoID0+IHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQocGF0aCBhcyBDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbikucHJpbWFyeT8ubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdChwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uKS5zZWNvbmRhcnk/Lmxlbmd0aCA+IDBcblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gKHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24pLnByaW1hcnk/Lmxlbmd0aCA+IDAgJiYgKHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24pLnNlY29uZGFyeT8ubGVuZ3RoID4gMDtcblx0fVxuXG5cdC8vZW5kIHJlZ2lvbiBMUiBTcGVjaWZpY1xufVxuXG5leHBvcnQgZGVmYXVsdCBNYW5pZmVzdFdyYXBwZXI7XG4iXX0=
415
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbmlmZXN0V3JhcHBlci50cyJdLCJuYW1lcyI6WyJNYW5pZmVzdFdyYXBwZXIiLCJvTWFuaWZlc3RTZXR0aW5ncyIsIm1lcmdlRm4iLCJjb252ZXJ0ZXJUeXBlIiwiaXNEZXNrdG9wIiwiaXNQaG9uZSIsImZhY2V0VGFyZ2V0IiwiY29udHJvbENvbmZpZ3VyYXRpb24iLCJmYWNldHMiLCJjb250ZW50IiwiaGVhZGVyIiwiYWN0aW9ucyIsImZvb3RlciIsInZhcmlhbnRNYW5hZ2VtZW50IiwiVmFyaWFudE1hbmFnZW1lbnRUeXBlIiwiTm9uZSIsImRlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoIiwic0Fubm90YXRpb25QYXRoIiwibmF2aWdhdGlvbk9yQ29sbGVjdGlvbk5hbWUiLCJuYXZpZ2F0aW9uIiwidmlld0xldmVsIiwiY29udGVudERlbnNpdGllcyIsImNvenkiLCJjb21wYWN0IiwiZmNsRW5hYmxlZCIsIm1hbmlmZXN0Q29udGVudERlbnNpdHkiLCJzaGVsbENvbnRlbnREZW5zaXR5IiwiaXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQiLCJzZWN0aW9ucyIsImJvZHkiLCJnZXRTaG93T2JqZWN0UGFnZUhlYWRlciIsImVkaXRhYmxlSGVhZGVyQ29udGVudCIsImFuY2hvckJhclZpc2libGUiLCJ1bmRlZmluZWQiLCJnZXRTaG93QW5jaG9yQmFyIiwic2VjdGlvbkxheW91dCIsInZpc2libGUiLCJ2aWV3cyIsImtleVBlcmZvcm1hbmNlSW5kaWNhdG9ycyIsImdldENvbnRyb2xDb25maWd1cmF0aW9uIiwidmlld0NvbmZpZyIsImdldFZpZXdDb25maWd1cmF0aW9uIiwicGF0aHMiLCJtYW5pZmVzdEVudGl0eVNldCIsImVudGl0eVNldCIsImZpbmQiLCJwYXRoIiwidGVtcGxhdGUiLCJoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zIiwicHJpbWFyeSIsInNlY29uZGFyeSIsInNvbWUiLCJjb250ZXh0UGF0aCIsImxlbmd0aCJdLCJtYXBwaW5n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QTtBQUNBOzs7O2FBQ0MsMEJBQXFDO0FBQUE7O0FBQ3BDLDBDQUFPLEtBQUtoQyxpQkFBWiw0REFBTyx3QkFBd0JtRCxXQUEvQjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsbUNBQTBCTixJQUExQixFQUFpRTtBQUFBOztBQUNoRSxZQUFJLENBQUNBLElBQUwsRUFBVztBQUNWLGNBQU1OLFVBQVUsR0FBRyxLQUFLQyxvQkFBTCxNQUErQjtBQUFFQyxZQUFBQSxLQUFLLEVBQUU7QUFBVCxXQUFsRDtBQUNBLGlCQUFPRixVQUFVLENBQUNFLEtBQVgsQ0FBaUJTLElBQWpCLENBQXNCLFVBQUFMLElBQUksRUFBSTtBQUFBOztBQUNwQyxtQkFDQyxhQUFDQSxJQUFELENBQXdDRyxPQUF4QyxzREFBaURJLE1BQWpELElBQTBELENBQTFELElBQ0EsZUFBQ1AsSUFBRCxDQUF3Q0ksU0FBeEMsMERBQW1ERyxNQUFuRCxJQUE0RCxDQUY3RDtBQUlBLFdBTE0sQ0FBUDtBQU1BOztBQUNELGVBQU8sY0FBQ1AsSUFBRCxDQUF3Q0csT0FBeEMsd0RBQWlESSxNQUFqRCxJQUEwRCxDQUExRCxJQUErRCxnQkFBQ1AsSUFBRCxDQUF3Q0ksU0FBeEMsNERBQW1ERyxNQUFuRCxJQUE0RCxDQUFsSTtBQUNBLE8sQ0FFRDs7Ozs7OztTQUdjckQsZSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhYmxlUmVjb3JkIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7XG5cdEJhc2VNYW5pZmVzdFNldHRpbmdzLFxuXHRDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbixcblx0Q29udGVudERlbnNpdGllc1R5cGUsXG5cdEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0Rm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0TGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MsXG5cdE1hbmlmZXN0QWN0aW9uLFxuXHRNYW5pZmVzdEhlYWRlckZhY2V0LFxuXHRNYW5pZmVzdFNlY3Rpb24sXG5cdE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uLFxuXHROYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uLFxuXHRPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncyxcblx0U2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uLFxuXHRWaWV3UGF0aENvbmZpZ3VyYXRpb24sXG5cdFRlbXBsYXRlVHlwZSxcblx0VmFyaWFudE1hbmFnZW1lbnRUeXBlLFxuXHRDdXN0b21WaWV3VGVtcGxhdGVDb25maWd1cmF0aW9uLFxuXHRWaWV3Q29uZmlndXJhdGlvbixcblx0S1BJQ29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5cbi8qKlxuICpcbiAqL1xuY2xhc3MgTWFuaWZlc3RXcmFwcGVyIHtcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSB3cmFwcGVyIG9iamVjdCB0byBlbnN1cmUgdGhlIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgbWFuaWZlc3QgaXMgY29uc2lzdGVudCBhbmQgZXZlcnl0aGluZyBpcyBtZXJnZWQgY29ycmVjdGx5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Jhc2VNYW5pZmVzdFNldHRpbmdzfSBvTWFuaWZlc3RTZXR0aW5ncyBUaGUgbWFuaWZlc3Qgc2V0dGluZ3MgZm9yIHRoZSBjdXJyZW50IHBhZ2Vcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGbiBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIG1lcmdlXG5cdCAqIEByZXR1cm5zIHtNYW5pZmVzdFdyYXBwZXJ9IFRoZSBtYW5pZmVzdCB3cmFwcGVyIG9iamVjdFxuXHQgKi9cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBvTWFuaWZlc3RTZXR0aW5nczogQmFzZU1hbmlmZXN0U2V0dGluZ3MsIHByaXZhdGUgbWVyZ2VGbjogRnVuY3Rpb24pIHt9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGN1cnJlbnQgdGVtcGxhdGUgdHlwZS5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgdGVtcGxhdGVcblx0ICovXG5cdGdldFRlbXBsYXRlVHlwZSgpOiBUZW1wbGF0ZVR5cGUge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnZlcnRlclR5cGU7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBkZXNrdG9wIG9yIG5vdC5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB3ZSBhcmUgb24gYSBkZXNrdG9wXG5cdCAqL1xuXHRpc0Rlc2t0b3AoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5pc0Rlc2t0b3A7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBtb2JpbGUgcGhvbmUgb3Igbm90LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHdlIGFyZSBvbiBhIG1vYmlsZSBwaG9uZVxuXHQgKi9cblx0aXNQaG9uZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmlzUGhvbmU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBmb3JtIGNvbnRhaW5lcnMgKGZpZWxkIGdyb3VwcyBvciBpZGVudGlmaWNhdGlvbikgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBmYWNldFRhcmdldCBUaGUgdGFyZ2V0IGFubm90YXRpb24gcGF0aCBmb3IgdGhpcyBmb3JtXG5cdCAqIEByZXR1cm5zIHtGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9ufSBBIHNldCBvZiBmb3JtIGNvbnRhaW5lcnMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgaW5kZXhlZCBieSBhbiBpdGVyYWJsZSBrZXlcblx0ICovXG5cdGdldEZvcm1Db250YWluZXIoZmFjZXRUYXJnZXQ6IHN0cmluZyk6IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24ge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnRyb2xDb25maWd1cmF0aW9uPy5bZmFjZXRUYXJnZXRdIGFzIEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb247XG5cdH1cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaGVhZGVyIGZhY2V0cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHJldHVybnMge0NvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEhlYWRlckZhY2V0Pn0gQSBzZXQgb2YgaGVhZGVyIGZhY2V0cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0SGVhZGVyRmFjZXRzKCk6IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEhlYWRlckZhY2V0PiB7XG5cdFx0cmV0dXJuIHRoaXMubWVyZ2VGbihcblx0XHRcdHt9LFxuXHRcdFx0dGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250cm9sQ29uZmlndXJhdGlvbj8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckZhY2V0c1wiXT8uZmFjZXRzLFxuXHRcdFx0KHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmNvbnRlbnQ/LmhlYWRlcj8uZmFjZXRzXG5cdFx0KTtcblx0fVxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBoZWFkZXIgYWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHJldHVybnMge0NvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEFjdGlvbj59IEEgc2V0IG9mIGFjdGlvbnMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgaW5kZXhlZCBieSBhbiBpdGVyYWJsZSBrZXlcblx0ICovXG5cdGdldEhlYWRlckFjdGlvbnMoKTogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udGVudD8uaGVhZGVyPy5hY3Rpb25zIHx8IHt9O1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGZvb3RlciBhY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Q29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPn0gQSBzZXQgb2YgYWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0Rm9vdGVyQWN0aW9ucygpOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+IHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250ZW50Py5mb290ZXI/LmFjdGlvbnMgfHwge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB2YXJpYW50IG1hbmFnZW1lbnQgYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtWYXJpYW50TWFuYWdlbWVudFR5cGV9IEEgdHlwZSBvZiB2YXJpYW50IG1hbmFnZW1lbnRcblx0ICovXG5cdGdldFZhcmlhbnRNYW5hZ2VtZW50KCk6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MudmFyaWFudE1hbmFnZW1lbnQgfHwgVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBhbm5vdGF0aW9uIFBhdGggZm9yIHRoZSBTUFYgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gVGhlIGFubm90YXRpb24gcGF0aCBmb3IgdGhlIGRlZmF1bHQgU1BWIG9yIHVuZGVmaW5lZC5cblx0ICovXG5cdGdldERlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuZGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb250cm9sIGNvbmZpZ3VyYXRpb24gYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgZm9yIGEgc3BlY2lmaWMgYW5ub3RhdGlvbiBwYXRoLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0Fubm90YXRpb25QYXRoIFRoZSByZWxhdGl2ZSBhbm5vdGF0aW9uIHBhdGhcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMge29iamVjdH0gVGhlIGNvbnRyb2wgY29uZmlndXJhdGlvblxuXHQgKi9cblx0Z2V0Q29udHJvbENvbmZpZ3VyYXRpb24oc0Fubm90YXRpb25QYXRoOiBzdHJpbmcpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5jb250cm9sQ29uZmlndXJhdGlvbj8uW3NBbm5vdGF0aW9uUGF0aF0gfHwge307XG5cdH1cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29uZmlndXJlZCBzZXR0aW5ncyBmb3IgYSBnaXZlbiBuYXZpZ2F0aW9uIHRhcmdldC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG5hdmlnYXRpb25PckNvbGxlY3Rpb25OYW1lIFRoZSBuYW1lIG9mIHRoZSBuYXZpZ2F0aW9uIHRvIGNoZWNrXG5cdCAqIEByZXR1cm5zIHtOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9ufSBUaGUgbmF2aWdhdGlvbiBzZXR0aW5ncyBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRnZXROYXZpZ2F0aW9uQ29uZmlndXJhdGlvbihuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZTogc3RyaW5nKTogTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/Lm5hdmlnYXRpb24/LltuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZV0gfHwge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB2aWV3IGxldmVsLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgY3VycmVudCB2aWV3IGxldmVsXG5cdCAqL1xuXHRnZXRWaWV3TGV2ZWwoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8udmlld0xldmVsIHx8IC0xO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGVudERlbnNpdGllcyBzZXR0aW5nIG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICpcblx0ICogQHJldHVybnMge0NvbnRlbnREZW5zaXRpZXNUeXBlfSBUaGUgY3VycmVudCBjb250ZW50IGRlbnNpdHlcblx0ICovXG5cdGdldENvbnRlbnREZW5zaXRpZXMoKTogQ29udGVudERlbnNpdGllc1R5cGUge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5jb250ZW50RGVuc2l0aWVzIHx8IHtcblx0XHRcdFx0Y296eTogZmFsc2UsXG5cdFx0XHRcdGNvbXBhY3Q6IGZhbHNlXG5cdFx0XHR9XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciB3ZSBhcmUgaW4gRkNMIG1vZGUgb3Igbm90LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHdlIGFyZSBpbiBGQ0xcblx0ICovXG5cdGlzRmNsRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5mY2xFbmFibGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IHNldHRpbmdzIChhcHBsaWNhdGlvbiAvIHNoZWxsKSBhbGxvd3MgdXMgdG8gdXNlIGNvbmRlbnNlZCBsYXlvdXQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgd2UgY2FuIHVzZSB0aGUgY29uZGVuc2VkIGxheW91dCwgZmFsc2Ugb3RoZXJ3aXNlXG5cdCAqL1xuXHRpc0NvbmRlbnNlZExheW91dENvbXBsaWFudCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBtYW5pZmVzdENvbnRlbnREZW5zaXR5ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uY29udGVudERlbnNpdGllcyB8fCB7XG5cdFx0XHRjb3p5OiBmYWxzZSxcblx0XHRcdGNvbXBhY3Q6IGZhbHNlXG5cdFx0fTtcblx0XHRjb25zdCBzaGVsbENvbnRlbnREZW5zaXR5ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uc2hlbGxDb250ZW50RGVuc2l0eSB8fCBcImNvbXBhY3RcIjtcblx0XHRsZXQgaXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQgPSB0cnVlO1xuXHRcdGlmICgobWFuaWZlc3RDb250ZW50RGVuc2l0eT8uY296eSA9PT0gdHJ1ZSAmJiBtYW5pZmVzdENvbnRlbnREZW5zaXR5Py5jb21wYWN0ICE9PSB0cnVlKSB8fCBzaGVsbENvbnRlbnREZW5zaXR5ID09PSBcImNvenlcIikge1xuXHRcdFx0aXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQgPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGlzQ29uZGVuc2VkTGF5b3V0Q29tcGxpYW50O1xuXHR9XG5cblx0Ly9yZWdpb24gT1AgU3BlY2lmaWNcblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBzZWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHJldHVybnMge0NvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdFNlY3Rpb24+fSBBIHNldCBvZiBtYW5pZmVzdCBzZWN0aW9ucyBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0U2VjdGlvbnMoKTogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj4ge1xuXHRcdHJldHVybiB0aGlzLm1lcmdlRm4oXG5cdFx0XHR7fSxcblx0XHRcdHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udHJvbENvbmZpZ3VyYXRpb24/LltcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GYWNldHNcIl0/LnNlY3Rpb25zLFxuXHRcdFx0KHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmNvbnRlbnQ/LmJvZHk/LnNlY3Rpb25zXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgb2YgdGhlIGhlYWRlciBvZiB0aGUgYXBwbGljYXRpb24gaXMgZWRpdGFibGUgYW5kIHNob3VsZCBhcHBlYXIgaW4gdGhlIGZhY2V0cy5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaGVhZGVyIGlmIGVkaXRhYmxlXG5cdCAqL1xuXHRpc0hlYWRlckVkaXRhYmxlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldFNob3dPYmplY3RQYWdlSGVhZGVyKCkgJiYgKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmVkaXRhYmxlSGVhZGVyQ29udGVudDtcblx0fVxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBzaG93IHRoZSBvYmplY3QgcGFnZSBoZWFkZXIuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIGhlYWRlciBzaG91bGQgYmUgZGlzcGxheWVkXG5cdCAqL1xuXHRnZXRTaG93QW5jaG9yQmFyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy5hbmNob3JCYXJWaXNpYmxlICE9PSB1bmRlZmluZWRcblx0XHRcdD8gISEodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy5hbmNob3JCYXJWaXNpYmxlXG5cdFx0XHQ6IHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgc2VjdGlvbiB3aWxsIGJlIGRpc3BsYXllZCBpbiBkaWZmZXJlbnQgdGFicy5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaWNvbiB0YWIgYmFyIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2Ygc2Nyb2xsaW5nXG5cdCAqL1xuXHR1c2VJY29uVGFiQmFyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldFNob3dBbmNob3JCYXIoKSAmJiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuc2VjdGlvbkxheW91dCA9PT0gXCJUYWJzXCI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZSBvYmplY3QgcGFnZSBoZWFkZXIgaXMgdG8gYmUgc2hvd24uXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIG9iamVjdCBwYWdlIGhlYWRlciBpcyB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdGdldFNob3dPYmplY3RQYWdlSGVhZGVyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy52aXNpYmxlICE9PSB1bmRlZmluZWRcblx0XHRcdD8gISEodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy52aXNpYmxlXG5cdFx0XHQ6IHRydWU7XG5cdH1cblxuXHQvL2VuZHJlZ2lvbiBPUCBTcGVjaWZpY1xuXG5cdC8vcmVnaW9uIExSIFNwZWNpZmljXG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgbXVsdGlwbGUgdmlldyBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7TXVsdGlwbGVWaWV3c0NvbmZpZ3VyYXRpb259IFRoZSB2aWV3cyB0aGF0IHJlcHJlc2VudCB0aGUgbWFuaWZlc3Qgb2JqZWN0XG5cdCAqL1xuXHRnZXRWaWV3Q29uZmlndXJhdGlvbigpOiBNdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKS52aWV3cztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIEtQSSBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBSZXR1cm5zIGEgbWFwIGJldHdlZW4gS1BJIG5hbWVzIGFuZCB0aGVpciByZXNwZWN0aXZlIGNvbmZpZ3VyYXRpb25cblx0ICovXG5cdGdldEtQSUNvbmZpZ3VyYXRpb24oKTogeyBba3BpTmFtZTogc3RyaW5nXTogS1BJQ29uZmlndXJhdGlvbiB9IHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MpLmtleVBlcmZvcm1hbmNlSW5kaWNhdG9ycyB8fCB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGZpbHRlciBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7RmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9ufSBUaGUgZmlsdGVyIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3Rcblx0ICovXG5cdGdldEZpbHRlckNvbmZpZ3VyYXRpb24oKTogRmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9uIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRDb250cm9sQ29uZmlndXJhdGlvbihcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIik7XG5cdH1cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZW50aXR5IHNldHMgdG8gYmUgZGlzcGxheWVkLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBlbnRpdHkgc2V0c1xuXHQgKi9cblx0aGFzTXVsdGlwbGVFbnRpdHlTZXRzKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHZpZXdDb25maWcgPSB0aGlzLmdldFZpZXdDb25maWd1cmF0aW9uKCkgfHwgeyBwYXRoczogW10gfTtcblx0XHRjb25zdCBtYW5pZmVzdEVudGl0eVNldCA9IHRoaXMub01hbmlmZXN0U2V0dGluZ3MuZW50aXR5U2V0O1xuXHRcdHJldHVybiAoXG5cdFx0XHR2aWV3Q29uZmlnLnBhdGhzLmZpbmQoKHBhdGg6IFZpZXdDb25maWd1cmF0aW9uKSA9PiB7XG5cdFx0XHRcdGlmICgocGF0aCBhcyBDdXN0b21WaWV3VGVtcGxhdGVDb25maWd1cmF0aW9uKT8udGVtcGxhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyhwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRcdGNvbnN0IHsgcHJpbWFyeSwgc2Vjb25kYXJ5IH0gPSBwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRwcmltYXJ5LnNvbWUocGF0aCA9PiBwYXRoLmVudGl0eVNldCAmJiBwYXRoLmVudGl0eVNldCAhPT0gbWFuaWZlc3RFbnRpdHlTZXQpIHx8XG5cdFx0XHRcdFx0XHRzZWNvbmRhcnkuc29tZShwYXRoID0+IHBhdGguZW50aXR5U2V0ICYmIHBhdGguZW50aXR5U2V0ICE9PSBtYW5pZmVzdEVudGl0eVNldClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhdGggPSBwYXRoIGFzIFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbjtcblx0XHRcdFx0XHRyZXR1cm4gcGF0aC5lbnRpdHlTZXQgJiYgcGF0aC5lbnRpdHlTZXQgIT09IG1hbmlmZXN0RW50aXR5U2V0O1xuXHRcdFx0XHR9XG5cdFx0XHR9KSAhPT0gdW5kZWZpbmVkXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjb250ZXh0IHBhdGggZm9yIHRoZSB0ZW1wbGF0ZSBpZiBpdCBpcyBzcGVjaWZpZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29udGV4dCBwYXRoIGZvciB0aGUgdGVtcGxhdGVcblx0ICovXG5cdGdldENvbnRleHRQYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmNvbnRleHRQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmlzdWFsaXphdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Vmlld1BhdGhDb25maWd1cmF0aW9ufSBwYXRoIFRoZSBwYXRoIGZyb20gdGhlIHZpZXdcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmlzdWFsaXphdGlvbnNcblx0ICovXG5cdGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMocGF0aD86IFZpZXdQYXRoQ29uZmlndXJhdGlvbik6IGJvb2xlYW4ge1xuXHRcdGlmICghcGF0aCkge1xuXHRcdFx0Y29uc3Qgdmlld0NvbmZpZyA9IHRoaXMuZ2V0Vmlld0NvbmZpZ3VyYXRpb24oKSB8fCB7IHBhdGhzOiBbXSB9O1xuXHRcdFx0cmV0dXJuIHZpZXdDb25maWcucGF0aHMuc29tZShwYXRoID0+IHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQocGF0aCBhcyBDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbikucHJpbWFyeT8ubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdChwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uKS5zZWNvbmRhcnk/Lmxlbmd0aCA+IDBcblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gKHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24pLnByaW1hcnk/Lmxlbmd0aCA+IDAgJiYgKHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24pLnNlY29uZGFyeT8ubGVuZ3RoID4gMDtcblx0fVxuXG5cdC8vZW5kIHJlZ2lvbiBMUiBTcGVjaWZpY1xufVxuXG5leHBvcnQgZGVmYXVsdCBNYW5pZmVzdFdyYXBwZXI7XG4iXX0=
@@ -53,18 +53,27 @@ class ManifestWrapper {
53
53
  }
54
54
 
55
55
  /**
56
- * Retrieves the form containers (field groups/identification) defined in the manifest.
56
+ * Checks whether the current environment is a mobile phone or not.
57
+ *
58
+ * @returns {boolean} `true` if we are on a mobile phone
59
+ */
60
+ isPhone(): boolean {
61
+ return !!this.oManifestSettings.isPhone;
62
+ }
63
+
64
+ /**
65
+ * Retrieves the form containers (field groups or identification) defined in the manifest.
57
66
  *
58
67
  * @param {string} facetTarget The target annotation path for this form
59
- * @returns {FormManifestConfiguration} A set of manifest header facets indexed by an iterable key
68
+ * @returns {FormManifestConfiguration} A set of form containers defined in the manifest indexed by an iterable key
60
69
  */
61
70
  getFormContainer(facetTarget: string): FormManifestConfiguration {
62
71
  return this.oManifestSettings.controlConfiguration?.[facetTarget] as FormManifestConfiguration;
63
72
  }
64
73
  /**
65
- * Retrieves the headerFacets defined in the manifest.
74
+ * Retrieves the header facets defined in the manifest.
66
75
  *
67
- * @returns {ConfigurableRecord<ManifestHeaderFacet>} A set of manifest header facets indexed by an iterable key
76
+ * @returns {ConfigurableRecord<ManifestHeaderFacet>} A set of header facets defined in the manifest indexed by an iterable key
68
77
  */
69
78
  getHeaderFacets(): ConfigurableRecord<ManifestHeaderFacet> {
70
79
  return this.mergeFn(
@@ -76,7 +85,7 @@ class ManifestWrapper {
76
85
  /**
77
86
  * Retrieves the header actions defined in the manifest.
78
87
  *
79
- * @returns {ConfigurableRecord<ManifestAction>} A set of manifest actions indexed by an iterable key
88
+ * @returns {ConfigurableRecord<ManifestAction>} A set of actions defined in the manifest indexed by an iterable key
80
89
  */
81
90
  getHeaderActions(): ConfigurableRecord<ManifestAction> {
82
91
  return this.oManifestSettings.content?.header?.actions || {};
@@ -84,7 +93,7 @@ class ManifestWrapper {
84
93
  /**
85
94
  * Retrieves the footer actions defined in the manifest.
86
95
  *
87
- * @returns {ConfigurableRecord<ManifestAction>} A set of manifest actions indexed by an iterable key
96
+ * @returns {ConfigurableRecord<ManifestAction>} A set of actions defined in the manifest indexed by an iterable key
88
97
  */
89
98
  getFooterActions(): ConfigurableRecord<ManifestAction> {
90
99
  return this.oManifestSettings.content?.footer?.actions || {};