@sapui5/sap.fe.core 1.135.0 → 1.136.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +3 -2
  4. package/src/sap/fe/core/ActionRuntime.ts +3 -1
  5. package/src/sap/fe/core/AppComponent.js +6 -4
  6. package/src/sap/fe/core/AppComponent.ts +3 -1
  7. package/src/sap/fe/core/AppStateHandler.js +8 -6
  8. package/src/sap/fe/core/AppStateHandler.ts +7 -5
  9. package/src/sap/fe/core/CommonUtils.js +4 -1
  10. package/src/sap/fe/core/CommonUtils.ts +12 -2
  11. package/src/sap/fe/core/ExtensionAPI.js +5 -3
  12. package/src/sap/fe/core/ExtensionAPI.ts +4 -2
  13. package/src/sap/fe/core/PageController.js +13 -1
  14. package/src/sap/fe/core/PageController.ts +13 -0
  15. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +13 -5
  16. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +19 -6
  17. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +4 -2
  18. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +3 -1
  19. package/src/sap/fe/core/controllerextensions/EditFlow.js +58 -14
  20. package/src/sap/fe/core/controllerextensions/EditFlow.ts +71 -11
  21. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +184 -17
  22. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +204 -12
  23. package/src/sap/fe/core/controllerextensions/InternalRouting.js +12 -3
  24. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +11 -1
  25. package/src/sap/fe/core/controllerextensions/MessageHandler.js +35 -5
  26. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +41 -1
  27. package/src/sap/fe/core/controllerextensions/Routing.js +6 -6
  28. package/src/sap/fe/core/controllerextensions/Routing.ts +2 -2
  29. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +3 -11
  30. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +2 -10
  31. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +11 -1
  32. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +12 -0
  33. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +21 -6
  34. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +19 -5
  35. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +17 -14
  36. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +19 -17
  37. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +2 -2
  38. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +4 -1
  39. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +10 -2
  40. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +8 -2
  41. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
  42. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
  43. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +1 -1
  44. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +33 -31
  45. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +2 -2
  46. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +3 -3
  47. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +4 -1
  48. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +2 -1
  49. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +2 -2
  50. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +8 -1
  51. package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +4 -3
  52. package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +7 -2
  53. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +68 -0
  54. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +52 -0
  55. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +144 -0
  56. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.tsx +128 -0
  57. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.js +53 -0
  58. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.tsx +39 -0
  59. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  60. package/src/sap/fe/core/converters/ManifestSettings.ts +18 -8
  61. package/src/sap/fe/core/converters/controls/Common/Action.js +54 -5
  62. package/src/sap/fe/core/converters/controls/Common/Action.ts +59 -3
  63. package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -4
  64. package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -4
  65. package/src/sap/fe/core/converters/controls/Common/Form.js +13 -4
  66. package/src/sap/fe/core/converters/controls/Common/Form.ts +13 -3
  67. package/src/sap/fe/core/converters/controls/Common/Table.js +29 -9
  68. package/src/sap/fe/core/converters/controls/Common/Table.ts +38 -8
  69. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +14 -16
  70. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +61 -96
  71. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +62 -13
  72. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +75 -13
  73. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +4 -33
  74. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +4 -44
  75. package/src/sap/fe/core/converters/controls/ListReport/FilterField.js +106 -0
  76. package/src/sap/fe/core/converters/controls/ListReport/FilterField.ts +129 -0
  77. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +9 -4
  78. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +8 -3
  79. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +7 -2
  80. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +5 -1
  81. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +29 -7
  82. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +40 -16
  83. package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +34 -16
  84. package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +35 -16
  85. package/src/sap/fe/core/designtime/messagebundle_ar.properties +7 -0
  86. package/src/sap/fe/core/designtime/messagebundle_bg.properties +7 -0
  87. package/src/sap/fe/core/designtime/messagebundle_ca.properties +7 -0
  88. package/src/sap/fe/core/designtime/messagebundle_cnr.properties +7 -0
  89. package/src/sap/fe/core/designtime/messagebundle_cs.properties +7 -0
  90. package/src/sap/fe/core/designtime/messagebundle_cy.properties +7 -0
  91. package/src/sap/fe/core/designtime/messagebundle_da.properties +7 -0
  92. package/src/sap/fe/core/designtime/messagebundle_de.properties +7 -0
  93. package/src/sap/fe/core/designtime/messagebundle_el.properties +7 -0
  94. package/src/sap/fe/core/designtime/messagebundle_en.properties +7 -0
  95. package/src/sap/fe/core/designtime/messagebundle_en_GB.properties +7 -0
  96. package/src/sap/fe/core/designtime/messagebundle_es.properties +7 -0
  97. package/src/sap/fe/core/designtime/messagebundle_es_MX.properties +7 -0
  98. package/src/sap/fe/core/designtime/messagebundle_et.properties +7 -0
  99. package/src/sap/fe/core/designtime/messagebundle_fi.properties +7 -0
  100. package/src/sap/fe/core/designtime/messagebundle_fr.properties +7 -0
  101. package/src/sap/fe/core/designtime/messagebundle_fr_CA.properties +7 -0
  102. package/src/sap/fe/core/designtime/messagebundle_hi.properties +7 -0
  103. package/src/sap/fe/core/designtime/messagebundle_hr.properties +7 -0
  104. package/src/sap/fe/core/designtime/messagebundle_hu.properties +7 -0
  105. package/src/sap/fe/core/designtime/messagebundle_id.properties +7 -0
  106. package/src/sap/fe/core/designtime/messagebundle_it.properties +7 -0
  107. package/src/sap/fe/core/designtime/messagebundle_iw.properties +7 -0
  108. package/src/sap/fe/core/designtime/messagebundle_ja.properties +7 -0
  109. package/src/sap/fe/core/designtime/messagebundle_kk.properties +7 -0
  110. package/src/sap/fe/core/designtime/messagebundle_ko.properties +7 -0
  111. package/src/sap/fe/core/designtime/messagebundle_lt.properties +7 -0
  112. package/src/sap/fe/core/designtime/messagebundle_lv.properties +7 -0
  113. package/src/sap/fe/core/designtime/messagebundle_mk.properties +7 -0
  114. package/src/sap/fe/core/designtime/messagebundle_ms.properties +7 -0
  115. package/src/sap/fe/core/designtime/messagebundle_nl.properties +7 -0
  116. package/src/sap/fe/core/designtime/messagebundle_no.properties +7 -0
  117. package/src/sap/fe/core/designtime/messagebundle_pl.properties +7 -0
  118. package/src/sap/fe/core/designtime/messagebundle_pt.properties +7 -0
  119. package/src/sap/fe/core/designtime/messagebundle_pt_PT.properties +7 -0
  120. package/src/sap/fe/core/designtime/messagebundle_ro.properties +7 -0
  121. package/src/sap/fe/core/designtime/messagebundle_ru.properties +7 -0
  122. package/src/sap/fe/core/designtime/messagebundle_sh.properties +7 -0
  123. package/src/sap/fe/core/designtime/messagebundle_sk.properties +7 -0
  124. package/src/sap/fe/core/designtime/messagebundle_sl.properties +7 -0
  125. package/src/sap/fe/core/designtime/messagebundle_sr.properties +7 -0
  126. package/src/sap/fe/core/designtime/messagebundle_sv.properties +7 -0
  127. package/src/sap/fe/core/designtime/messagebundle_th.properties +7 -0
  128. package/src/sap/fe/core/designtime/messagebundle_tr.properties +7 -0
  129. package/src/sap/fe/core/designtime/messagebundle_uk.properties +7 -0
  130. package/src/sap/fe/core/designtime/messagebundle_vi.properties +7 -0
  131. package/src/sap/fe/core/designtime/messagebundle_zh_CN.properties +7 -0
  132. package/src/sap/fe/core/designtime/messagebundle_zh_TW.properties +7 -0
  133. package/src/sap/fe/core/fpm/manifest.json +1 -1
  134. package/src/sap/fe/core/helpers/AppStartupHelper.js +24 -3
  135. package/src/sap/fe/core/helpers/AppStartupHelper.ts +28 -2
  136. package/src/sap/fe/core/helpers/BindingHelper.js +3 -2
  137. package/src/sap/fe/core/helpers/BindingHelper.ts +2 -1
  138. package/src/sap/fe/core/helpers/DeleteHelper.js +4 -9
  139. package/src/sap/fe/core/helpers/DeleteHelper.ts +3 -8
  140. package/src/sap/fe/core/helpers/ModelHelper.js +14 -4
  141. package/src/sap/fe/core/helpers/ModelHelper.ts +15 -4
  142. package/src/sap/fe/core/helpers/PasteHelper.js +38 -39
  143. package/src/sap/fe/core/helpers/PasteHelper.ts +49 -51
  144. package/src/sap/fe/core/helpers/WebSocket.js +10 -1
  145. package/src/sap/fe/core/helpers/WebSocket.ts +8 -0
  146. package/src/sap/fe/core/library.js +1 -1
  147. package/src/sap/fe/core/messagebundle.properties +41 -2
  148. package/src/sap/fe/core/messagebundle_ar.properties +23 -2
  149. package/src/sap/fe/core/messagebundle_bg.properties +23 -2
  150. package/src/sap/fe/core/messagebundle_ca.properties +21 -0
  151. package/src/sap/fe/core/messagebundle_cnr.properties +23 -2
  152. package/src/sap/fe/core/messagebundle_cs.properties +21 -0
  153. package/src/sap/fe/core/messagebundle_cy.properties +21 -0
  154. package/src/sap/fe/core/messagebundle_da.properties +23 -2
  155. package/src/sap/fe/core/messagebundle_de.properties +23 -2
  156. package/src/sap/fe/core/messagebundle_el.properties +21 -0
  157. package/src/sap/fe/core/messagebundle_en.properties +23 -2
  158. package/src/sap/fe/core/messagebundle_en_GB.properties +23 -2
  159. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +23 -2
  160. package/src/sap/fe/core/messagebundle_es.properties +21 -0
  161. package/src/sap/fe/core/messagebundle_es_MX.properties +21 -0
  162. package/src/sap/fe/core/messagebundle_et.properties +21 -0
  163. package/src/sap/fe/core/messagebundle_fi.properties +21 -0
  164. package/src/sap/fe/core/messagebundle_fr.properties +22 -1
  165. package/src/sap/fe/core/messagebundle_fr_CA.properties +21 -0
  166. package/src/sap/fe/core/messagebundle_hi.properties +22 -1
  167. package/src/sap/fe/core/messagebundle_hr.properties +24 -3
  168. package/src/sap/fe/core/messagebundle_hu.properties +21 -0
  169. package/src/sap/fe/core/messagebundle_id.properties +21 -0
  170. package/src/sap/fe/core/messagebundle_it.properties +23 -2
  171. package/src/sap/fe/core/messagebundle_iw.properties +21 -0
  172. package/src/sap/fe/core/messagebundle_ja.properties +21 -0
  173. package/src/sap/fe/core/messagebundle_kk.properties +21 -0
  174. package/src/sap/fe/core/messagebundle_ko.properties +21 -0
  175. package/src/sap/fe/core/messagebundle_lt.properties +21 -0
  176. package/src/sap/fe/core/messagebundle_lv.properties +23 -2
  177. package/src/sap/fe/core/messagebundle_mk.properties +21 -0
  178. package/src/sap/fe/core/messagebundle_ms.properties +22 -1
  179. package/src/sap/fe/core/messagebundle_nl.properties +21 -0
  180. package/src/sap/fe/core/messagebundle_no.properties +21 -0
  181. package/src/sap/fe/core/messagebundle_pl.properties +23 -2
  182. package/src/sap/fe/core/messagebundle_pt.properties +23 -2
  183. package/src/sap/fe/core/messagebundle_pt_PT.properties +21 -0
  184. package/src/sap/fe/core/messagebundle_ro.properties +23 -2
  185. package/src/sap/fe/core/messagebundle_ru.properties +22 -1
  186. package/src/sap/fe/core/messagebundle_sh.properties +23 -2
  187. package/src/sap/fe/core/messagebundle_sk.properties +21 -0
  188. package/src/sap/fe/core/messagebundle_sl.properties +23 -2
  189. package/src/sap/fe/core/messagebundle_sr.properties +23 -2
  190. package/src/sap/fe/core/messagebundle_sv.properties +21 -0
  191. package/src/sap/fe/core/messagebundle_th.properties +21 -0
  192. package/src/sap/fe/core/messagebundle_tr.properties +21 -0
  193. package/src/sap/fe/core/messagebundle_uk.properties +23 -2
  194. package/src/sap/fe/core/messagebundle_vi.properties +23 -2
  195. package/src/sap/fe/core/messagebundle_zh_CN.properties +23 -2
  196. package/src/sap/fe/core/messagebundle_zh_TW.properties +21 -0
  197. package/src/sap/fe/core/rootView/Fcl.controller.js +5 -5
  198. package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -4
  199. package/src/sap/fe/core/rootView/NavContainer.controller.js +2 -2
  200. package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
  201. package/src/sap/fe/core/rootView/RootViewBaseController.js +61 -9
  202. package/src/sap/fe/core/rootView/RootViewBaseController.ts +70 -7
  203. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +28 -12
  204. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.ts +27 -13
  205. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +7 -1
  206. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +6 -0
  207. package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -2
  208. package/src/sap/fe/core/services/RoutingServiceFactory.ts +2 -1
  209. package/src/sap/fe/core/services/ShellServicesFactory.js +4 -3
  210. package/src/sap/fe/core/services/ShellServicesFactory.ts +5 -3
  211. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +27 -3
  212. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +32 -3
  213. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  214. package/src/sap/fe/core/templating/EntitySetHelper.js +198 -58
  215. package/src/sap/fe/core/templating/EntitySetHelper.ts +221 -61
  216. package/src/sap/fe/core/templating/SemanticObjectHelper.js +6 -7
  217. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +9 -7
@@ -76,7 +76,7 @@ type MyInboxIntent = {
76
76
  action: string;
77
77
  };
78
78
 
79
- function normalizeSearchTerm(sSearchTerm: string): string | undefined {
79
+ function normalizeSearchTerm(sSearchTerm: string | undefined): string | undefined {
80
80
  if (!sSearchTerm) {
81
81
  return undefined;
82
82
  }
@@ -1172,6 +1172,7 @@ export type _FilterRestrictions = {
1172
1172
  FilterAllowedExpressions: _FilterAllowedExpressions;
1173
1173
  };
1174
1174
  function getFilterRestrictionsByPath(entityPath: string, oContext: ODataMetaModel): _FilterRestrictions {
1175
+ // NOTE: For getting FilterAllowedExpressions please use 'getAllowedFilterExpressionForProperty' from 'sap/fe/core/converters/controls/ListReport/FilterField.ts'.
1175
1176
  const oRet: _FilterRestrictions = {
1176
1177
  RequiredProperties: [],
1177
1178
  NonFilterableProperties: [],
@@ -1309,7 +1310,14 @@ export type BaseTreeModifier = {
1309
1310
  async function templateControlFragment(
1310
1311
  sFragmentName: string | Element | null,
1311
1312
  oPreprocessorSettings: PreprocessorSettings,
1312
- oInOptions?: { view?: View; isXML?: boolean; id?: string; controller?: PageController | ExtensionAPI; containingView?: View },
1313
+ oInOptions?: {
1314
+ view?: View;
1315
+ isXML?: boolean;
1316
+ id?: string;
1317
+ controller?: PageController | ExtensionAPI;
1318
+ containingView?: View;
1319
+ contextPath?: string;
1320
+ },
1313
1321
  oModifier?: BaseTreeModifier
1314
1322
  ): Promise<Element | UI5Element | Element[] | UI5Element[]> {
1315
1323
  const oOptions = oInOptions || {};
@@ -1342,6 +1350,8 @@ async function templateControlFragment(
1342
1350
  return owner.runAsOwner(async () => {
1343
1351
  return Fragment.load({
1344
1352
  id: oOptions.id,
1353
+ type: "SCOPEDFEFRAGMENT",
1354
+ contextPath: oOptions.contextPath,
1345
1355
  definition: oFragment as unknown as string,
1346
1356
  controller: oOptions.controller,
1347
1357
  containingView: containingView
@@ -195,9 +195,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
195
195
  _proto.loadFragment = async function loadFragment(mSettings) {
196
196
  var _this2 = this;
197
197
  const oTemplateComponent = Component.getOwnerComponentFor(this._view);
198
+ await oTemplateComponent.getService("templatedViewService");
198
199
  const oPageModel = this._view.getModel("_pageModel");
199
200
  const i18nModel = this._view.getModel("sap.fe.i18n");
200
- const oMetaModel = this.getModel()?.getMetaModel();
201
+ const oMetaModel = oTemplateComponent.getMetaModel();
201
202
  const mViewData = oTemplateComponent.getViewData();
202
203
  const targetContextPath = oTemplateComponent.getEntitySet() ? `/${oTemplateComponent.getEntitySet()}` : oTemplateComponent.getContextPath();
203
204
  const oViewDataModel = new JSONModel(mViewData),
@@ -265,7 +266,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
265
266
  controller: controllerInstance,
266
267
  isXML: false,
267
268
  id: mSettings.id,
268
- containingView: this._view
269
+ containingView: this._view,
270
+ contextPath: mSettings.contextPath ?? targetContextPath
269
271
  });
270
272
  try {
271
273
  const oFragment = await oTemplatePromise;
@@ -340,4 +342,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
340
342
  }), _class2)) || _class);
341
343
  return ExtensionAPI;
342
344
  }, false);
343
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiX2RlYzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0Jhc2VPYmplY3QiLCJvQ29udHJvbGxlciIsInNJZCIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfY29udHJvbGxlciIsIl92aWV3IiwiZ2V0VmlldyIsImV4dGVuc2lvbiIsImVkaXRGbG93Iiwicm91dGluZyIsIl9yb3V0aW5nIiwiaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX3ByZWZpeCIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0RWRpdEZsb3ciLCJnZXRSb3V0aW5nIiwiZ2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiYnlJZCIsImlkIiwiY29udHJvbCIsInVuZGVmaW5lZCIsImlzQSIsInBhcmVudCIsImdldFBhcmVudCIsIkVycm9yIiwiZ2V0SWQiLCJnZXRNb2RlbCIsInNNb2RlbE5hbWUiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRNYW5pZmVzdEVudHJ5IiwibW9kZWxzIiwiYWRkRGVwZW5kZW50Iiwib0NvbnRyb2wiLCJyZW1vdmVEZXBlbmRlbnQiLCJuYXZpZ2F0ZVRvVGFyZ2V0Iiwic1RhcmdldCIsIm9Db250ZXh0IiwibG9hZEZyYWdtZW50IiwibVNldHRpbmdzIiwiX3RoaXMyIiwib1RlbXBsYXRlQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJvUGFnZU1vZGVsIiwiaTE4bk1vZGVsIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsIm1WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwidGFyZ2V0Q29udGV4dFBhdGgiLCJnZXRFbnRpdHlTZXQiLCJnZXRDb250ZXh0UGF0aCIsIm9WaWV3RGF0YU1vZGVsIiwiSlNPTk1vZGVsIiwib1ByZXByb2Nlc3NvclNldHRpbmdzIiwiYmluZGluZ0NvbnRleHRzIiwiY29udGV4dFBhdGgiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnZlcnRlckNvbnRleHQiLCJub1Jlc29sdmUiLCJ2aWV3RGF0YSIsIm1ldGFNb2RlbCIsImFwcENvbXBvbmVudCIsImNvbnRyb2xsZXJJbnN0YW5jZSIsImNvbnRyb2xsZXIiLCJzdWJDbGFzcyIsImdldE1ldGFkYXRhIiwiZ2V0Q2xhc3MiLCJleHRlbmQiLCJjb250cm9sbGVyRWxlbWVudEtleSIsImNvbnRyb2xsZXJFbGVtZW50IiwiYmluZCIsImJvdW5kRnVuY3Rpb24iLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInJ1bkFzT3duZXIiLCJhcHBseSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0Iiwic2V0IiwidiIsIm5ld0lzQSIsImNsYXNzTmFtZSIsIm9UZW1wbGF0ZVByb21pc2UiLCJ0ZW1wbGF0ZUNvbnRyb2xGcmFnbWVudCIsIm5hbWUiLCJpc1hNTCIsImNvbnRhaW5pbmdWaWV3Iiwib0ZyYWdtZW50IiwiaW5pdGlhbEJpbmRpbmdDb250ZXh0Iiwic2V0QmluZGluZ0NvbnRleHQiLCJvRXJyb3IiLCJMb2ciLCJlcnJvciIsInVwZGF0ZUFwcFN0YXRlIiwidmlldyIsImFwcFN0YXRlSW5mbyIsImdldEFwcFN0YXRlSGFuZGxlciIsImNyZWF0ZUFwcFN0YXRlIiwidmlld0lkIiwiYXBwU3RhdGVEYXRhIiwicnVuV2l0aEZQTUNvbnRleHQiLCJmbiIsInRlbXBsYXRlQ29tcG9uZW50Iiwid2F0Y2hQcm9wZXJ0eSIsInByb3BlcnR5TmFtZSIsImNhbGxiYWNrIiwiRGF0YVdhdGNoZXIiLCJwcm9wZXJ0eUJpbmRpbmciLCJjb21waWxlRXhwcmVzc2lvbiIsInBhdGhJbk1vZGVsIiwidmFsdWVDaGFuZ2VkIiwiZSIsImdldFBhcmFtZXRlciIsIkJhc2VPYmplY3QiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgRWRpdEZsb3cgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0VkaXRGbG93XCI7XG5pbXBvcnQgdHlwZSBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IHR5cGUgSW50ZXJuYWxSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbFJvdXRpbmdcIjtcbmltcG9ydCB0eXBlIFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1JvdXRpbmdcIjtcbmltcG9ydCB0eXBlIHsgV2F0Y2hlckNhbGxiYWNrIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0RhdGFXYXRjaGVyXCI7XG5pbXBvcnQgRGF0YVdhdGNoZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0RhdGFXYXRjaGVyXCI7XG5pbXBvcnQgdHlwZSBNYWNyb0FQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgRm9ybUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9mb3JtL0Zvcm1BUElcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IFRTRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQ29tbW9uIEV4dGVuc2lvbiBBUEkgZm9yIGFsbCBwYWdlcyBvZiBTQVAgRmlvcmkgZWxlbWVudHMgZm9yIE9EYXRhIFY0LlxuICpcbiAqIFRvIGNvcnJlY3RseSBpbnRlZ3JhdGUgeW91ciBhcHAgZXh0ZW5zaW9uIGNvZGluZyB3aXRoIFNBUCBGaW9yaSBlbGVtZW50cywgdXNlIG9ubHkgdGhlIGV4dGVuc2lvbkFQSSBvZiBTQVAgRmlvcmkgZWxlbWVudHMuIERvbid0IGFjY2VzcyBvciBtYW5pcHVsYXRlIGNvbnRyb2xzLCBwcm9wZXJ0aWVzLCBtb2RlbHMsIG9yIG90aGVyIGludGVybmFsIG9iamVjdHMgY3JlYXRlZCBieSB0aGUgU0FQIEZpb3JpIGVsZW1lbnRzIGZyYW1ld29yay5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2NvbnRyb2xsZXJFeHRlbnNpb25zL2NvbnRyb2xsZXJFeHRlbnNpb25zT3ZlcnZpZXcgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2t9XG4gKiBAcHVibGljXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKVxuY2xhc3MgRXh0ZW5zaW9uQVBJIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdC8qKlxuXHQgKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIGhvb2tzIGludG8gdGhlIGVkaXQgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cdCAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2NvbnRyb2xsZXJFeHRlbnNpb25zL2Jhc2ljRXh0ZW5zaWJpbGl0eSBPdmVydmlldyBvZiBCdWlsZGluZyBCbG9ja31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5FZGl0Rmxvd1wiIH0pXG5cdGVkaXRGbG93OiBFZGl0RmxvdztcblxuXHQvKipcblx0ICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBob29rcyBpbnRvIHRoZSByb3V0aW5nIGZsb3cgb2YgdGhlIGFwcGxpY2F0aW9uLlxuXHQgKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9jb250cm9sbGVyRXh0ZW5zaW9ucy9yb3V0aW5nRXh0ZW5zaWJpbGl0eSBPdmVydmlldyBvZiBCdWlsZGluZyBCbG9ja31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5Sb3V0aW5nXCIgfSlcblx0cm91dGluZzogUm91dGluZztcblxuXHQvKipcblx0ICogRXh0ZW5zaW9uQVBJIGZvciBpbnRlbnQtYmFzZWQgbmF2aWdhdGlvblxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkludGVudEJhc2VkTmF2aWdhdGlvblwiIH0pXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbjogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdHB1YmxpYyBfY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXI7XG5cblx0cHJvdGVjdGVkIF92aWV3OiBGRVZpZXc7XG5cblx0cHJpdmF0ZSBfcm91dGluZzogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdHByaXZhdGUgX3ByZWZpeD86IHN0cmluZztcblxuXHRwcml2YXRlIGV4dGVuc2lvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0Y29uc3RydWN0b3Iob0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzSWQ/OiBzdHJpbmcpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIgPSBvQ29udHJvbGxlcjtcblx0XHR0aGlzLl92aWV3ID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdHRoaXMuZXh0ZW5zaW9uID0gdGhpcy5fY29udHJvbGxlci5leHRlbnNpb247XG5cdFx0dGhpcy5lZGl0RmxvdyA9IHRoaXMuX2NvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0dGhpcy5yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5yb3V0aW5nO1xuXHRcdHRoaXMuX3JvdXRpbmcgPSB0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nO1xuXHRcdHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uID0gdGhpcy5fY29udHJvbGxlci5pbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cdFx0dGhpcy5fcHJlZml4ID0gc0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEVkaXRGbG93KCk6IEVkaXRGbG93IHtcblx0XHRyZXR1cm4gdGhpcy5lZGl0Rmxvdztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgcm91dGluZyBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0Um91dGluZygpOiBSb3V0aW5nIHtcblx0XHRyZXR1cm4gdGhpcy5yb3V0aW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaW50ZW50QmFzZWROYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uKCk6IEludGVudEJhc2VkTmF2aWdhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFjY2VzcyBhIGNvbnRyb2wgYnkgaXRzIElELiBJZiB5b3UgYXR0ZW1wdCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbCBpbnN0ZWFkIG9mIHRoZSBzdGFibGUgQVBJLCB0aGUgbWV0aG9kIHdpbGwgcmFpc2UgYW4gZXJyb3IuXG5cdCAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgY29udHJvbCB3aXRob3V0IHZpZXcgYW5kIHNlY3Rpb24gcHJlZml4LlxuXHQgKiBAcmV0dXJucyBUaGUgcmVxdWVzdGVkIGNvbnRyb2wsIGlmIGZvdW5kIGluIHRoZSB2aWV3IC8gc2VjdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YnlJZChpZDogc3RyaW5nKTogVUk1RWxlbWVudCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoaWQpO1xuXG5cdFx0aWYgKCFjb250cm9sICYmIHRoaXMuX3ByZWZpeCkge1xuXHRcdFx0Ly8gZ2l2ZSBpdCBhIHRyeSB3aXRoIHRoZSBwcmVmaXhcblx0XHRcdGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoYCR7dGhpcy5fcHJlZml4fS0tJHtpZH1gKTtcblx0XHR9XG5cblx0XHRpZiAoIWNvbnRyb2wpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250cm9sLmlzQTxNYWNyb0FQST4oXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKSB7XG5cdFx0XHQvLyBjaGVjayBpZiBhcHAgdHJpZWQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wgd3JhcHBlZCBieSBhIG1hY3JvIEFQSVxuXHRcdFx0bGV0IHBhcmVudCA9IGNvbnRyb2wuZ2V0UGFyZW50KCk7XG5cblx0XHRcdHdoaWxlIChwYXJlbnQpIHtcblx0XHRcdFx0aWYgKHBhcmVudC5pc0E8Rm9ybUFQST4oXCJzYXAuZmUubWFjcm9zLmZvcm0uRm9ybUFQSVwiKSkge1xuXHRcdFx0XHRcdC8vIHdlIHJlYWNoZWQgdGhlIGZvcm1BUEkgYnV0IG5vIGZpZWxkIC0gdGhlIGFwcCB0cmllcyB0byBhY2Nlc3MgYW55IGN1c3RvbSBjb250cm9sIHdoaWNoIGlzIGZpbmVcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwYXJlbnQuaXNBPE1hY3JvQVBJPihcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIikpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRgWW91IGF0dGVtcHRlZCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbC4gVGhpcyBpcyByaXNreSBhbmQgbWlnaHQgY2hhbmdlIGxhdGVyLiBJbnN0ZWFkIGFjY2VzcyBpdHMgc3RhYmxlIEFQSSBieSB1c2luZyBJRCAke3BhcmVudC5nZXRJZCgpfWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjb250cm9sO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY2Nlc3MgdG8gbW9kZWxzIG1hbmFnZWQgYnkgU0FQIEZpb3JpIGVsZW1lbnRzLjxicj5cblx0ICogVGhlIGZvbGxvd2luZyBtb2RlbHMgY2FuIGJlIGFjY2Vzc2VkOlxuXHQgKiA8dWw+XG5cdCAqIDxsaT51bmRlZmluZWQ6IHRoZSB1bmRlZmluZWQgbW9kZWwgcmV0dXJucyB0aGUgU0FQVUk1IE9EYXRhIFY0IG1vZGVsIGJvdW5kIHRvIHRoaXMgcGFnZTwvbGk+XG5cdCAqIDxsaT5pMThuIC8gZnVydGhlciBkYXRhIG1vZGVscyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdDwvbGk+XG5cdCAqIDxsaT51aTogcmV0dXJucyBhIFNBUFVJNSBKU09OIG1vZGVsIGNvbnRhaW5pbmcgVUkgaW5mb3JtYXRpb24uXG5cdCAqIE9ubHkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBwdWJsaWMgYW5kIHN1cHBvcnRlZDpcblx0ICogPHVsPlxuXHQgKiA8bGk+aXNFZGl0YWJsZTogc2V0IHRvIHRydWUgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGluIGVkaXQgbW9kZTwvbGk+XG5cdCAqIDwvdWw+XG5cdCAqIDwvbGk+XG5cdCAqIDwvdWw+LlxuXHQgKiBlZGl0TW9kZSBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlIGlzRWRpdGFibGUgaW5zdGVhZC5cblx0ICogQHBhcmFtIHNNb2RlbE5hbWUgTmFtZSBvZiB0aGUgbW9kZWxcblx0ICogQHJldHVybnMgVGhlIHJlcXVpcmVkIG1vZGVsXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldE1vZGVsKHNNb2RlbE5hbWU/OiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG9BcHBDb21wb25lbnQ7XG5cblx0XHRpZiAoc01vZGVsTmFtZSAmJiBzTW9kZWxOYW1lICE9PSBcInVpXCIpIHtcblx0XHRcdG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldyk7XG5cdFx0XHRpZiAoIW9BcHBDb21wb25lbnQuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC51aTVcIikubW9kZWxzW3NNb2RlbE5hbWVdKSB7XG5cdFx0XHRcdC8vIGRvbid0IGFsbG93IGFjY2VzcyB0byBvdXIgaW50ZXJuYWwgbW9kZWxzXG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuX3ZpZXcuZ2V0TW9kZWwoc01vZGVsTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIGFueSBjb250cm9sIGFzIGEgZGVwZW5kZW50IGNvbnRyb2wgdG8gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhZGREZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LmFkZERlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlIGEgZGVwZW5kZW50IGNvbnRyb2wgZnJvbSB0aGlzIFNBUCBGaW9yaSBlbGVtZW50cyBwYWdlLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgQ29udHJvbCB0byBiZSBhZGRlZCBhcyBhIGRlcGVuZGVudCBjb250cm9sXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlbW92ZURlcGVuZGVudChvQ29udHJvbDogQ29udHJvbCk6IHZvaWQge1xuXHRcdHRoaXMuX3ZpZXcucmVtb3ZlRGVwZW5kZW50KG9Db250cm9sKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZSB0byBhbm90aGVyIHRhcmdldC5cblx0ICogQHBhcmFtIHNUYXJnZXQgTmFtZSBvZiB0aGUgdGFyZ2V0IHJvdXRlXG5cdCAqIEBwYXJhbSBbb0NvbnRleHRdIE9EYXRhIHY0IGNvbnRleHQgaW5zdGFuY2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0bmF2aWdhdGVUb1RhcmdldChzVGFyZ2V0OiBzdHJpbmcsIG9Db250ZXh0OiBPRGF0YVY0Q29udGV4dCk6IHZvaWQge1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIuX3JvdXRpbmcubmF2aWdhdGVUb1RhcmdldChvQ29udGV4dCwgc1RhcmdldCk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZCBhIGZyYWdtZW50IGFuZCBnbyB0aHJvdWdoIHRoZSB0ZW1wbGF0ZSBwcmVwcm9jZXNzb3Igd2l0aCB0aGUgY3VycmVudCBwYWdlIGNvbnRleHQuXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MgVGhlIHNldHRpbmdzIG9iamVjdFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmlkIFRoZSBJRCBvZiB0aGUgZnJhZ21lbnQgaXRzZWxmXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MubmFtZSBUaGUgbmFtZSBvZiB0aGUgZnJhZ21lbnQgdG8gYmUgbG9hZGVkXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udHJvbGxlciBUaGUgY29udHJvbGxlciB0byBiZSBhdHRhY2hlZCB0byB0aGUgZnJhZ21lbnRcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5jb250ZXh0UGF0aCBUaGUgY29udGV4dFBhdGggdG8gYmUgdXNlZCBmb3IgdGhlIHRlbXBsYXRpbmcgcHJvY2Vzc1xuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCBUaGUgaW5pdGlhbCBiaW5kaW5nIGNvbnRleHRcblx0ICogQHJldHVybnMgVGhlIGZyYWdtZW50IGRlZmluaXRpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbG9hZEZyYWdtZW50KG1TZXR0aW5nczoge1xuXHRcdGlkOiBzdHJpbmc7XG5cdFx0bmFtZTogc3RyaW5nO1xuXHRcdGNvbnRyb2xsZXI/OiBvYmplY3Q7XG5cdFx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG5cdFx0aW5pdGlhbEJpbmRpbmdDb250ZXh0PzogQ29udGV4dDtcblx0fSk6IFByb21pc2U8VUk1RWxlbWVudCB8IFVJNUVsZW1lbnRbXT4ge1xuXHRcdGNvbnN0IG9UZW1wbGF0ZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLl92aWV3KSBhcyBFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD47XG5cdFx0Y29uc3Qgb1BhZ2VNb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpO1xuXHRcdGNvbnN0IGkxOG5Nb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gdGhpcy5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtVmlld0RhdGEgPSBvVGVtcGxhdGVDb21wb25lbnQuZ2V0Vmlld0RhdGEoKTtcblx0XHRjb25zdCB0YXJnZXRDb250ZXh0UGF0aCA9IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRFbnRpdHlTZXQoKVxuXHRcdFx0PyBgLyR7b1RlbXBsYXRlQ29tcG9uZW50LmdldEVudGl0eVNldCgpIX1gXG5cdFx0XHQ6IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRDb250ZXh0UGF0aCgpITtcblx0XHRjb25zdCBvVmlld0RhdGFNb2RlbCA9IG5ldyBKU09OTW9kZWwobVZpZXdEYXRhKSxcblx0XHRcdG9QcmVwcm9jZXNzb3JTZXR0aW5ncyA9IHtcblx0XHRcdFx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0XHRcdFx0Y29udGV4dFBhdGg6IG9NZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1TZXR0aW5ncy5jb250ZXh0UGF0aCB8fCB0YXJnZXRDb250ZXh0UGF0aCksXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogb1BhZ2VNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIiwgdW5kZWZpbmVkLCB7IG5vUmVzb2x2ZTogdHJ1ZSB9KSxcblx0XHRcdFx0XHR2aWV3RGF0YTogbVZpZXdEYXRhID8gb1ZpZXdEYXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpIDogbnVsbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLFxuXHRcdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHR2aWV3RGF0YTogb1ZpZXdEYXRhTW9kZWwsXG5cdFx0XHRcdFx0XCJzYXAuZmUuaTE4blwiOiBpMThuTW9kZWxcblx0XHRcdFx0fSxcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldylcblx0XHRcdH07XG5cblx0XHQvLyBXZSBzY29wZSB0aGUgZnJhZ21lbnQgd2l0aCBvdXIgRXh0ZW5zaW9uQVBJLiBJZiBhIGNvbnRyb2xsZXIgb2JqZWN0IGlzIHBhc3NlZCB3ZSBtZXJnZSBpdCB3aXRoIHRoZSBleHRlbnNpb25BUElcblx0XHRsZXQgY29udHJvbGxlckluc3RhbmNlOiBFeHRlbnNpb25BUEk7XG5cdFx0aWYgKG1TZXR0aW5ncy5jb250cm9sbGVyICYmICEobVNldHRpbmdzLmNvbnRyb2xsZXIgYXMgRXh0ZW5zaW9uQVBJKT8uaXNBPy4oXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIikpIHtcblx0XHRcdGNvbnN0IHN1YkNsYXNzID0gKFxuXHRcdFx0XHR0aGlzLmdldE1ldGFkYXRhKCkuZ2V0Q2xhc3MoKSBhcyB1bmtub3duIGFzIHtcblx0XHRcdFx0XHRleHRlbmQ6IChpZDogc3RyaW5nLCBjb250ZW50OiBvYmplY3QpID0+IHsgbmV3IChwYWdlQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBFeHRlbnNpb25BUEkgfTtcblx0XHRcdFx0fVxuXHRcdFx0KS5leHRlbmQobVNldHRpbmdzLmlkICsgXCItY29udHJvbGxlclwiLCB7fSk7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2xsZXJFbGVtZW50S2V5IGluIG1TZXR0aW5ncy5jb250cm9sbGVyKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xsZXJFbGVtZW50ID0gbVNldHRpbmdzLmNvbnRyb2xsZXJbY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXTtcblx0XHRcdFx0aWYgKChjb250cm9sbGVyRWxlbWVudCBhcyBGdW5jdGlvbik/LmJpbmQpIHtcblx0XHRcdFx0XHRjb25zdCBib3VuZEZ1bmN0aW9uID0gKGNvbnRyb2xsZXJFbGVtZW50IGFzIEZ1bmN0aW9uKS5iaW5kKG1TZXR0aW5ncy5jb250cm9sbGVyKTtcblx0XHRcdFx0XHRpZiAob1RlbXBsYXRlQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0XHRzdWJDbGFzcy5wcm90b3R5cGVbY29udHJvbGxlckVsZW1lbnRLZXldID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb1RlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoKCkgPT4gYm91bmRGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmdzKSk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdWJDbGFzcy5wcm90b3R5cGVbY29udHJvbGxlckVsZW1lbnRLZXldID0gYm91bmRGdW5jdGlvbjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLnByb3RvdHlwZSwgY29udHJvbGxlckVsZW1lbnRLZXksIHtcblx0XHRcdFx0XHRcdGdldCgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG1TZXR0aW5ncy5jb250cm9sbGVyPy5bY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzZXQodjogdW5rbm93bikge1xuXHRcdFx0XHRcdFx0XHRpZiAobVNldHRpbmdzLmNvbnRyb2xsZXIpIHtcblx0XHRcdFx0XHRcdFx0XHQobVNldHRpbmdzLmNvbnRyb2xsZXJbY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXSBhcyB1bmtub3duKSA9IHY7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlID0gbmV3IHN1YkNsYXNzKHRoaXMuX2NvbnRyb2xsZXIpO1xuXHRcdFx0Y29uc3QgbmV3SXNBID0gY29udHJvbGxlckluc3RhbmNlLmlzQTtcblx0XHRcdGNvbnRyb2xsZXJJbnN0YW5jZS5pc0EgPSAoY2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcblx0XHRcdFx0Ly8gV2Uga2VlcCB0aGUgXHRzYXAuZmUuY29yZS5FeHRlbnNpb25BUEkgYXMgYSB2YWxpZCB0eXBlIGZvciB0aGlzIG5ldyBjbGFzc1xuXHRcdFx0XHQvLyB0aGlzIHR5cGUgaXMgbG9zdCBhcyBzb29uIGFzIHRoZSBtZXJnZWQgY29udHJvbGxlciBvYmplY3QgZ2V0cyBhIG1ldGhvZCBpc0Fcblx0XHRcdFx0cmV0dXJuIG5ld0lzQS5iaW5kKGNvbnRyb2xsZXJJbnN0YW5jZSkoY2xhc3NOYW1lKSB8fCB0aGlzLmlzQShjbGFzc05hbWUpO1xuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlID0gKG1TZXR0aW5ncy5jb250cm9sbGVyIGFzIEV4dGVuc2lvbkFQSSkgPz8gdGhpcztcblx0XHR9XG5cdFx0cmV0dXJuIG9UZW1wbGF0ZUNvbXBvbmVudC5ydW5Bc093bmVyKGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IG9UZW1wbGF0ZVByb21pc2UgPSBDb21tb25VdGlscy50ZW1wbGF0ZUNvbnRyb2xGcmFnbWVudChtU2V0dGluZ3MubmFtZSwgb1ByZXByb2Nlc3NvclNldHRpbmdzLCB7XG5cdFx0XHRcdGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJJbnN0YW5jZSxcblx0XHRcdFx0aXNYTUw6IGZhbHNlLFxuXHRcdFx0XHRpZDogbVNldHRpbmdzLmlkLFxuXHRcdFx0XHRjb250YWluaW5nVmlldzogdGhpcy5fdmlld1xuXHRcdFx0fSkgYXMgUHJvbWlzZTxDb250cm9sPjtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IG9GcmFnbWVudDogQ29udHJvbCA9IGF3YWl0IG9UZW1wbGF0ZVByb21pc2U7XG5cdFx0XHRcdGlmIChtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRvRnJhZ21lbnQuc2V0QmluZGluZ0NvbnRleHQobVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5hZGREZXBlbmRlbnQob0ZyYWdtZW50KTtcblx0XHRcdFx0cmV0dXJuIG9GcmFnbWVudDtcblx0XHRcdH0gY2F0Y2ggKG9FcnJvcikge1xuXHRcdFx0XHRMb2cuZXJyb3Iob0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fSkgYXMgUHJvbWlzZTxVSTVFbGVtZW50IHwgVUk1RWxlbWVudFtdPjtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VycyBhbiB1cGRhdGUgb2YgdGhlIGFwcCBzdGF0ZS5cblx0ICogU2hvdWxkIGJlIGNhbGxlZCBpZiB0aGUgc3RhdGUgb2YgYSBjb250cm9sLCBvciBhbnkgb3RoZXIgc3RhdGUtcmVsZXZhbnQgaW5mb3JtYXRpb24sIHdhcyBjaGFuZ2VkLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBuZXcgYXBwIHN0YXRlIG9iamVjdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgdXBkYXRlQXBwU3RhdGUoKTogUHJvbWlzZTx2b2lkIHwgeyBhcHBTdGF0ZTogb2JqZWN0IHwgdW5kZWZpbmVkIH0+IHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5fY29udHJvbGxlci5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5fY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRjb25zdCBhcHBTdGF0ZUluZm8gPSBhd2FpdCBhcHBDb21wb25lbnQuZ2V0QXBwU3RhdGVIYW5kbGVyKCkuY3JlYXRlQXBwU3RhdGUoe1xuXHRcdFx0dmlld0lkOiB2aWV3LmdldElkKClcblx0XHR9KTtcblx0XHRyZXR1cm4gYXBwU3RhdGVJbmZvPy5hcHBTdGF0ZURhdGE7XG5cdH1cblxuXHQvKipcblx0ICogUnVuIHRoZSBnaXZlbiBmdW5jdGlvbiB3aXRoIHRoZSBGUE0gY29udGV4dCBvZiB0aGUgY3VycmVudCBwYWdlLlxuXHQgKiBUaGlzIGFsbG93cyB0byBpbml0aWFsaXplIGFsbCB0aGUgZWxlbWVudHMgcmVxdWlyZWQgYnkgYnVpbGRpbmcgYmxvY2tzIHRvIHJlbmRlciBjb3JyZWN0bHkuXG5cdCAqIEBwYXJhbSBmbiBUaGUgRnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWRcblx0ICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cnVuV2l0aEZQTUNvbnRleHQoZm46IEZ1bmN0aW9uKTogdW5rbm93biB7XG5cdFx0Y29uc3QgdGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdHJldHVybiB0ZW1wbGF0ZUNvbXBvbmVudC5ydW5Bc093bmVyKGZuIGFzIFRTRnVuY3Rpb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdhdGNoIGEgcHJvcGVydHkgZnJvbSB0aGUgbWFpbiBwYWdlIGNvbnRleHQgYW5kIHRyaWdnZXIgYSBjYWxsYmFjayB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byB3YXRjaFxuXHQgKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIHRyaWdnZXIgd2hlbiB0aGUgdmFsdWUgY2hhbmdlc1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHR3YXRjaFByb3BlcnR5KHByb3BlcnR5TmFtZTogc3RyaW5nLCBjYWxsYmFjazogV2F0Y2hlckNhbGxiYWNrKTogdm9pZCB7XG5cdFx0dGhpcy5fdmlldy5hZGREZXBlbmRlbnQoXG5cdFx0XHRuZXcgRGF0YVdhdGNoZXIoe1xuXHRcdFx0XHRwcm9wZXJ0eUJpbmRpbmc6IGNvbXBpbGVFeHByZXNzaW9uKHBhdGhJbk1vZGVsKHByb3BlcnR5TmFtZSkpLFxuXHRcdFx0XHR2YWx1ZUNoYW5nZWQ6IChlKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSwgZS5nZXRQYXJhbWV0ZXIoXCJvbGRWYWx1ZVwiKSwgZS5nZXRQYXJhbWV0ZXIoXCJpc0luaXRpYWxcIiksIGUuZ2V0UGFyYW1ldGVyKFwiY29udGV4dFwiKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBFeHRlbnNpb25BUEk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVJBLElBVU1BLFlBQVksSUFBQUMsSUFBQSxHQURqQkMsY0FBYyxDQUFDLDBCQUEwQixDQUFDLEVBQUFDLEtBQUEsR0FPekNDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBNEMsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FRL0RGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBMkMsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FPOURILFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBeUQsQ0FBQyxDQUFDLEVBQUFKLElBQUEsQ0FBQU8sTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxXQUFBO0lBYTdFLFNBQUFWLGFBQVlXLFdBQTJCLEVBQUVDLEdBQVksRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDdERBLEtBQUEsR0FBQUgsV0FBQSxDQUFBSSxJQUFBLEtBQU0sQ0FBQztNQWxDUjtBQUNEO0FBQ0E7QUFDQTtBQUNBO01BSkNDLDBCQUFBLENBQUFGLEtBQUEsY0FBQUcsV0FBQSxFQUFBSCxLQUFBO01BUUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtNQUpDRSwwQkFBQSxDQUFBRixLQUFBLGFBQUFJLFlBQUEsRUFBQUosS0FBQTtNQVFBO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsMkJBQUFLLFlBQUEsRUFBQUwsS0FBQTtNQW1CQ0EsS0FBQSxDQUFLTSxXQUFXLEdBQUdSLFdBQVc7TUFDOUJFLEtBQUEsQ0FBS08sS0FBSyxHQUFHVCxXQUFXLENBQUNVLE9BQU8sQ0FBQyxDQUFDO01BQ2xDUixLQUFBLENBQUtTLFNBQVMsR0FBR1QsS0FBQSxDQUFLTSxXQUFXLENBQUNHLFNBQVM7TUFDM0NULEtBQUEsQ0FBS1UsUUFBUSxHQUFHVixLQUFBLENBQUtNLFdBQVcsQ0FBQ0ksUUFBUTtNQUN6Q1YsS0FBQSxDQUFLVyxPQUFPLEdBQUdYLEtBQUEsQ0FBS00sV0FBVyxDQUFDSyxPQUFPO01BQ3ZDWCxLQUFBLENBQUtZLFFBQVEsR0FBR1osS0FBQSxDQUFLTSxXQUFXLENBQUNNLFFBQVE7TUFDekNaLEtBQUEsQ0FBS2EscUJBQXFCLEdBQUdiLEtBQUEsQ0FBS00sV0FBVyxDQUFDTyxxQkFBcUI7TUFDbkViLEtBQUEsQ0FBS2MsT0FBTyxHQUFHZixHQUFHO01BQUMsT0FBQUMsS0FBQTtJQUNwQjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBSkNlLGNBQUEsQ0FBQTVCLFlBQUEsRUFBQVUsV0FBQTtJQUFBLElBQUFtQixNQUFBLEdBQUE3QixZQUFBLENBQUE4QixTQUFBO0lBQUFELE1BQUEsQ0FLQUUsV0FBVyxHQUFYLFNBQUFBLFdBQVdBLENBQUEsRUFBYTtNQUN2QixPQUFPLElBQUksQ0FBQ1IsUUFBUTtJQUNyQjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQU0sTUFBQSxDQUtBRyxVQUFVLEdBQVYsU0FBQUEsVUFBVUEsQ0FBQSxFQUFZO01BQ3JCLE9BQU8sSUFBSSxDQUFDUixPQUFPO0lBQ3BCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBSyxNQUFBLENBS0FJLHdCQUF3QixHQUF4QixTQUFBQSx3QkFBd0JBLENBQUEsRUFBMEI7TUFDakQsT0FBTyxJQUFJLENBQUNQLHFCQUFxQjtJQUNsQzs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBRyxNQUFBLENBTUFLLElBQUksR0FBSixTQUFBQSxJQUFJQSxDQUFDQyxFQUFVLEVBQTBCO01BQ3hDLElBQUlDLE9BQU8sR0FBRyxJQUFJLENBQUNoQixLQUFLLENBQUNjLElBQUksQ0FBQ0MsRUFBRSxDQUFDO01BRWpDLElBQUksQ0FBQ0MsT0FBTyxJQUFJLElBQUksQ0FBQ1QsT0FBTyxFQUFFO1FBQzdCO1FBQ0FTLE9BQU8sR0FBRyxJQUFJLENBQUNoQixLQUFLLENBQUNjLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQ1AsT0FBTyxLQUFLUSxFQUFFLEVBQUUsQ0FBQztNQUNwRDtNQUVBLElBQUksQ0FBQ0MsT0FBTyxFQUFFO1FBQ2IsT0FBT0MsU0FBUztNQUNqQjtNQUVBLElBQUksQ0FBQ0QsT0FBTyxDQUFDRSxHQUFHLENBQVcsd0JBQXdCLENBQUMsRUFBRTtRQUNyRDtRQUNBLElBQUlDLE1BQU0sR0FBR0gsT0FBTyxDQUFDSSxTQUFTLENBQUMsQ0FBQztRQUVoQyxPQUFPRCxNQUFNLEVBQUU7VUFDZCxJQUFJQSxNQUFNLENBQUNELEdBQUcsQ0FBVSw0QkFBNEIsQ0FBQyxFQUFFO1lBQ3REO1lBQ0E7VUFDRDtVQUVBLElBQUlDLE1BQU0sQ0FBQ0QsR0FBRyxDQUFXLHdCQUF3QixDQUFDLEVBQUU7WUFDbkQsTUFBTSxJQUFJRyxLQUFLLENBQ2QsZ0lBQWdJRixNQUFNLENBQUNHLEtBQUssQ0FBQyxDQUFDLEVBQy9JLENBQUM7VUFDRjtVQUVBSCxNQUFNLEdBQUdBLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDLENBQUM7UUFDNUI7TUFDRDtNQUVBLE9BQU9KLE9BQU87SUFDZjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FqQkM7SUFBQVAsTUFBQSxDQWtCQWMsUUFBUSxHQUFSLFNBQUFBLFFBQVFBLENBQUNDLFVBQW1CLEVBQXFCO01BQ2hELElBQUlDLGFBQWE7TUFFakIsSUFBSUQsVUFBVSxJQUFJQSxVQUFVLEtBQUssSUFBSSxFQUFFO1FBQ3RDQyxhQUFhLEdBQUdDLFdBQVcsQ0FBQ0MsZUFBZSxDQUFDLElBQUksQ0FBQzNCLEtBQUssQ0FBQztRQUN2RCxJQUFJLENBQUN5QixhQUFhLENBQUNHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDQyxNQUFNLENBQUNMLFVBQVUsQ0FBQyxFQUFFO1VBQ2xFO1VBQ0EsT0FBT1AsU0FBUztRQUNqQjtNQUNEO01BRUEsT0FBTyxJQUFJLENBQUNqQixLQUFLLENBQUN1QixRQUFRLENBQUNDLFVBQVUsQ0FBQztJQUN2Qzs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQWYsTUFBQSxDQUtBcUIsWUFBWSxHQUFaLFNBQUFBLFlBQVlBLENBQUNDLFFBQWlCLEVBQVE7TUFDckMsSUFBSSxDQUFDL0IsS0FBSyxDQUFDOEIsWUFBWSxDQUFDQyxRQUFRLENBQUM7SUFDbEM7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUF0QixNQUFBLENBS0F1QixlQUFlLEdBQWYsU0FBQUEsZUFBZUEsQ0FBQ0QsUUFBaUIsRUFBUTtNQUN4QyxJQUFJLENBQUMvQixLQUFLLENBQUNnQyxlQUFlLENBQUNELFFBQVEsQ0FBQztJQUNyQzs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBdEIsTUFBQSxDQU1Bd0IsZ0JBQWdCLEdBQWhCLFNBQUFBLGdCQUFnQkEsQ0FBQ0MsT0FBZSxFQUFFQyxRQUF3QixFQUFRO01BQ2pFLElBQUksQ0FBQ3BDLFdBQVcsQ0FBQ00sUUFBUSxDQUFDNEIsZ0JBQWdCLENBQUNFLFFBQVEsRUFBRUQsT0FBTyxDQUFDO0lBQzlEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FWQztJQUFBekIsTUFBQSxDQVdNMkIsWUFBWSxHQUFsQixlQUFNQSxZQUFZQSxDQUFDQyxTQU1sQixFQUFzQztNQUFBLElBQUFDLE1BQUE7TUFDdEMsTUFBTUMsa0JBQWtCLEdBQUdDLFNBQVMsQ0FBQ0Msb0JBQW9CLENBQUMsSUFBSSxDQUFDekMsS0FBSyxDQUFzQztNQUMxRyxNQUFNMEMsVUFBVSxHQUFHLElBQUksQ0FBQzFDLEtBQUssQ0FBQ3VCLFFBQVEsQ0FBQyxZQUFZLENBQUM7TUFDcEQsTUFBTW9CLFNBQVMsR0FBRyxJQUFJLENBQUMzQyxLQUFLLENBQUN1QixRQUFRLENBQUMsYUFBYSxDQUFDO01BQ3BELE1BQU1xQixVQUFVLEdBQUcsSUFBSSxDQUFDckIsUUFBUSxDQUFDLENBQUMsRUFBRXNCLFlBQVksQ0FBQyxDQUFDO01BQ2xELE1BQU1DLFNBQVMsR0FBR1Asa0JBQWtCLENBQUNRLFdBQVcsQ0FBQyxDQUFDO01BQ2xELE1BQU1DLGlCQUFpQixHQUFHVCxrQkFBa0IsQ0FBQ1UsWUFBWSxDQUFDLENBQUMsR0FDeEQsSUFBSVYsa0JBQWtCLENBQUNVLFlBQVksQ0FBQyxDQUFDLEVBQUcsR0FDeENWLGtCQUFrQixDQUFDVyxjQUFjLENBQUMsQ0FBRTtNQUN2QyxNQUFNQyxjQUFjLEdBQUcsSUFBSUMsU0FBUyxDQUFDTixTQUFTLENBQUM7UUFDOUNPLHFCQUFxQixHQUFHO1VBQ3ZCQyxlQUFlLEVBQUU7WUFDaEJDLFdBQVcsRUFBRVgsVUFBVSxFQUFFWSxvQkFBb0IsQ0FBQ25CLFNBQVMsQ0FBQ2tCLFdBQVcsSUFBSVAsaUJBQWlCLENBQUM7WUFDekZTLGdCQUFnQixFQUFFZixVQUFVLENBQUNjLG9CQUFvQixDQUFDLEdBQUcsRUFBRXZDLFNBQVMsRUFBRTtjQUFFeUMsU0FBUyxFQUFFO1lBQUssQ0FBQyxDQUFDO1lBQ3RGQyxRQUFRLEVBQUViLFNBQVMsR0FBR0ssY0FBYyxDQUFDSyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRztVQUNsRSxDQUFDO1VBQ0QzQixNQUFNLEVBQUU7WUFDUDBCLFdBQVcsRUFBRVgsVUFBVTtZQUN2QmEsZ0JBQWdCLEVBQUVmLFVBQVU7WUFDNUJrQixTQUFTLEVBQUVoQixVQUFVO1lBQ3JCZSxRQUFRLEVBQUVSLGNBQWM7WUFDeEIsYUFBYSxFQUFFUjtVQUNoQixDQUFDO1VBQ0RrQixZQUFZLEVBQUVuQyxXQUFXLENBQUNDLGVBQWUsQ0FBQyxJQUFJLENBQUMzQixLQUFLO1FBQ3JELENBQUM7O01BRUY7TUFDQSxJQUFJOEQsa0JBQWdDO01BQ3BDLElBQUl6QixTQUFTLENBQUMwQixVQUFVLElBQUksQ0FBRTFCLFNBQVMsQ0FBQzBCLFVBQVUsRUFBbUI3QyxHQUFHLEdBQUcsMEJBQTBCLENBQUMsRUFBRTtRQUN2RyxNQUFNOEMsUUFBUSxHQUNiLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsQ0FHNUJDLE1BQU0sQ0FBQzlCLFNBQVMsQ0FBQ3RCLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsS0FBSyxNQUFNcUQsb0JBQW9CLElBQUkvQixTQUFTLENBQUMwQixVQUFVLEVBQUU7VUFDeEQsTUFBTU0saUJBQWlCLEdBQUdoQyxTQUFTLENBQUMwQixVQUFVLENBQUNLLG9CQUFvQixDQUFzQztVQUN6RyxJQUFLQyxpQkFBaUIsRUFBZUMsSUFBSSxFQUFFO1lBQzFDLE1BQU1DLGFBQWEsR0FBSUYsaUJBQWlCLENBQWNDLElBQUksQ0FBQ2pDLFNBQVMsQ0FBQzBCLFVBQVUsQ0FBQztZQUNoRixJQUFJeEIsa0JBQWtCLEVBQUU7Y0FDdkJ5QixRQUFRLENBQUN0RCxTQUFTLENBQUMwRCxvQkFBb0IsQ0FBQyxHQUFHLFlBQWlDO2dCQUFBLFNBQUFJLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQTdCQyxJQUFJLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxHQUFBSyxJQUFBLE1BQUFBLElBQUEsR0FBQUwsSUFBQSxFQUFBSyxJQUFBO2tCQUFKRixJQUFJLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO2dCQUFBO2dCQUNsRCxPQUFPdEMsa0JBQWtCLENBQUN1QyxVQUFVLENBQUMsTUFBTVAsYUFBYSxDQUFDUSxLQUFLLENBQUN6QyxNQUFJLEVBQUVxQyxJQUFJLENBQUMsQ0FBQztjQUM1RSxDQUFDO1lBQ0YsQ0FBQyxNQUFNO2NBQ05YLFFBQVEsQ0FBQ3RELFNBQVMsQ0FBQzBELG9CQUFvQixDQUFDLEdBQUdHLGFBQWE7WUFDekQ7VUFDRCxDQUFDLE1BQU07WUFDTlMsTUFBTSxDQUFDQyxjQUFjLENBQUNqQixRQUFRLENBQUN0RCxTQUFTLEVBQUUwRCxvQkFBb0IsRUFBRTtjQUMvRGMsR0FBR0EsQ0FBQSxFQUFHO2dCQUNMLE9BQU83QyxTQUFTLENBQUMwQixVQUFVLEdBQUdLLG9CQUFvQixDQUFzQztjQUN6RixDQUFDO2NBQ0RlLEdBQUdBLENBQUNDLENBQVUsRUFBRTtnQkFDZixJQUFJL0MsU0FBUyxDQUFDMEIsVUFBVSxFQUFFO2tCQUN4QjFCLFNBQVMsQ0FBQzBCLFVBQVUsQ0FBQ0ssb0JBQW9CLENBQXNDLEdBQWVnQixDQUFDO2dCQUNqRztjQUNEO1lBQ0QsQ0FBQyxDQUFDO1VBQ0g7UUFDRDtRQUNBdEIsa0JBQWtCLEdBQUcsSUFBSUUsUUFBUSxDQUFDLElBQUksQ0FBQ2pFLFdBQVcsQ0FBQztRQUNuRCxNQUFNc0YsTUFBTSxHQUFHdkIsa0JBQWtCLENBQUM1QyxHQUFHO1FBQ3JDNEMsa0JBQWtCLENBQUM1QyxHQUFHLEdBQUlvRSxTQUFpQixJQUFjO1VBQ3hEO1VBQ0E7VUFDQSxPQUFPRCxNQUFNLENBQUNmLElBQUksQ0FBQ1Isa0JBQWtCLENBQUMsQ0FBQ3dCLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQ3BFLEdBQUcsQ0FBQ29FLFNBQVMsQ0FBQztRQUN6RSxDQUFDO01BQ0YsQ0FBQyxNQUFNO1FBQ054QixrQkFBa0IsR0FBSXpCLFNBQVMsQ0FBQzBCLFVBQVUsSUFBcUIsSUFBSTtNQUNwRTtNQUNBLE9BQU94QixrQkFBa0IsQ0FBQ3VDLFVBQVUsQ0FBQyxZQUFZO1FBQ2hELE1BQU1TLGdCQUFnQixHQUFHN0QsV0FBVyxDQUFDOEQsdUJBQXVCLENBQUNuRCxTQUFTLENBQUNvRCxJQUFJLEVBQUVwQyxxQkFBcUIsRUFBRTtVQUNuR1UsVUFBVSxFQUFFRCxrQkFBa0I7VUFDOUI0QixLQUFLLEVBQUUsS0FBSztVQUNaM0UsRUFBRSxFQUFFc0IsU0FBUyxDQUFDdEIsRUFBRTtVQUNoQjRFLGNBQWMsRUFBRSxJQUFJLENBQUMzRjtRQUN0QixDQUFDLENBQXFCO1FBQ3RCLElBQUk7VUFDSCxNQUFNNEYsU0FBa0IsR0FBRyxNQUFNTCxnQkFBZ0I7VUFDakQsSUFBSWxELFNBQVMsQ0FBQ3dELHFCQUFxQixLQUFLNUUsU0FBUyxFQUFFO1lBQ2xEMkUsU0FBUyxDQUFDRSxpQkFBaUIsQ0FBQ3pELFNBQVMsQ0FBQ3dELHFCQUFxQixDQUFDO1VBQzdEO1VBQ0EsSUFBSSxDQUFDL0QsWUFBWSxDQUFDOEQsU0FBUyxDQUFDO1VBQzVCLE9BQU9BLFNBQVM7UUFDakIsQ0FBQyxDQUFDLE9BQU9HLE1BQU0sRUFBRTtVQUNoQkMsR0FBRyxDQUFDQyxLQUFLLENBQUNGLE1BQWdCLENBQUM7UUFDNUI7TUFDRCxDQUFDLENBQUM7SUFDSDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBdEYsTUFBQSxDQU1NeUYsY0FBYyxHQUFwQixlQUFNQSxjQUFjQSxDQUFBLEVBQXFEO01BQ3hFLE1BQU1DLElBQUksR0FBRyxJQUFJLENBQUNwRyxXQUFXLENBQUNFLE9BQU8sQ0FBQyxDQUFDO01BQ3ZDLE1BQU00RCxZQUFZLEdBQUcsSUFBSSxDQUFDOUQsV0FBVyxDQUFDNEIsZUFBZSxDQUFDLENBQUM7TUFDdkQsTUFBTXlFLFlBQVksR0FBRyxNQUFNdkMsWUFBWSxDQUFDd0Msa0JBQWtCLENBQUMsQ0FBQyxDQUFDQyxjQUFjLENBQUM7UUFDM0VDLE1BQU0sRUFBRUosSUFBSSxDQUFDN0UsS0FBSyxDQUFDO01BQ3BCLENBQUMsQ0FBQztNQUNGLE9BQU84RSxZQUFZLEVBQUVJLFlBQVk7SUFDbEM7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBL0YsTUFBQSxDQU9BZ0csaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFpQkEsQ0FBQ0MsRUFBWSxFQUFXO01BQ3hDLE1BQU1DLGlCQUFpQixHQUFHbkUsU0FBUyxDQUFDQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUN6QyxLQUFLLENBQXNDO01BQ3pHLE9BQU8yRyxpQkFBaUIsQ0FBQzdCLFVBQVUsQ0FBQzRCLEVBQWdCLENBQUM7SUFDdEQ7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQWpHLE1BQUEsQ0FNQW1HLGFBQWEsR0FBYixTQUFBQSxhQUFhQSxDQUFDQyxZQUFvQixFQUFFQyxRQUF5QixFQUFRO01BQ3BFLElBQUksQ0FBQzlHLEtBQUssQ0FBQzhCLFlBQVksQ0FDdEIsSUFBSWlGLFdBQVcsQ0FBQztRQUNmQyxlQUFlLEVBQUVDLGlCQUFpQixDQUFDQyxXQUFXLENBQUNMLFlBQVksQ0FBQyxDQUFDO1FBQzdETSxZQUFZLEVBQUdDLENBQUMsSUFBVztVQUMxQk4sUUFBUSxDQUFDTSxDQUFDLENBQUNDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRUQsQ0FBQyxDQUFDQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUVELENBQUMsQ0FBQ0MsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFRCxDQUFDLENBQUNDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0SDtNQUNELENBQUMsQ0FDRixDQUFDO0lBQ0YsQ0FBQztJQUFBLE9BQUF6SSxZQUFBO0VBQUEsRUFqVXlCMEksVUFBVSxHQUFBMUgsV0FBQSxHQUFBMkgseUJBQUEsQ0FBQWxJLE9BQUEsQ0FBQXFCLFNBQUEsZUFBQTNCLEtBQUE7SUFBQXlJLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBOUgsWUFBQSxHQUFBMEgseUJBQUEsQ0FBQWxJLE9BQUEsQ0FBQXFCLFNBQUEsY0FBQXhCLEtBQUE7SUFBQXNJLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBN0gsWUFBQSxHQUFBeUgseUJBQUEsQ0FBQWxJLE9BQUEsQ0FBQXFCLFNBQUEsNEJBQUF2QixLQUFBO0lBQUFxSSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXRJLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9Bb1V0QlIsWUFBWTtBQUFBIiwiaWdub3JlTGlzdCI6W119
345
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiX2RlYzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0Jhc2VPYmplY3QiLCJvQ29udHJvbGxlciIsInNJZCIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfY29udHJvbGxlciIsIl92aWV3IiwiZ2V0VmlldyIsImV4dGVuc2lvbiIsImVkaXRGbG93Iiwicm91dGluZyIsIl9yb3V0aW5nIiwiaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX3ByZWZpeCIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0RWRpdEZsb3ciLCJnZXRSb3V0aW5nIiwiZ2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiYnlJZCIsImlkIiwiY29udHJvbCIsInVuZGVmaW5lZCIsImlzQSIsInBhcmVudCIsImdldFBhcmVudCIsIkVycm9yIiwiZ2V0SWQiLCJnZXRNb2RlbCIsInNNb2RlbE5hbWUiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRNYW5pZmVzdEVudHJ5IiwibW9kZWxzIiwiYWRkRGVwZW5kZW50Iiwib0NvbnRyb2wiLCJyZW1vdmVEZXBlbmRlbnQiLCJuYXZpZ2F0ZVRvVGFyZ2V0Iiwic1RhcmdldCIsIm9Db250ZXh0IiwibG9hZEZyYWdtZW50IiwibVNldHRpbmdzIiwiX3RoaXMyIiwib1RlbXBsYXRlQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJnZXRTZXJ2aWNlIiwib1BhZ2VNb2RlbCIsImkxOG5Nb2RlbCIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInRhcmdldENvbnRleHRQYXRoIiwiZ2V0RW50aXR5U2V0IiwiZ2V0Q29udGV4dFBhdGgiLCJvVmlld0RhdGFNb2RlbCIsIkpTT05Nb2RlbCIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsImJpbmRpbmdDb250ZXh0cyIsImNvbnRleHRQYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZXJDb250ZXh0Iiwibm9SZXNvbHZlIiwidmlld0RhdGEiLCJtZXRhTW9kZWwiLCJhcHBDb21wb25lbnQiLCJjb250cm9sbGVySW5zdGFuY2UiLCJjb250cm9sbGVyIiwic3ViQ2xhc3MiLCJnZXRNZXRhZGF0YSIsImdldENsYXNzIiwiZXh0ZW5kIiwiY29udHJvbGxlckVsZW1lbnRLZXkiLCJjb250cm9sbGVyRWxlbWVudCIsImJpbmQiLCJib3VuZEZ1bmN0aW9uIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJydW5Bc093bmVyIiwiYXBwbHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInNldCIsInYiLCJuZXdJc0EiLCJjbGFzc05hbWUiLCJvVGVtcGxhdGVQcm9taXNlIiwidGVtcGxhdGVDb250cm9sRnJhZ21lbnQiLCJuYW1lIiwiaXNYTUwiLCJjb250YWluaW5nVmlldyIsIm9GcmFnbWVudCIsImluaXRpYWxCaW5kaW5nQ29udGV4dCIsInNldEJpbmRpbmdDb250ZXh0Iiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJ1cGRhdGVBcHBTdGF0ZSIsInZpZXciLCJhcHBTdGF0ZUluZm8iLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJjcmVhdGVBcHBTdGF0ZSIsInZpZXdJZCIsImFwcFN0YXRlRGF0YSIsInJ1bldpdGhGUE1Db250ZXh0IiwiZm4iLCJ0ZW1wbGF0ZUNvbXBvbmVudCIsIndhdGNoUHJvcGVydHkiLCJwcm9wZXJ0eU5hbWUiLCJjYWxsYmFjayIsIkRhdGFXYXRjaGVyIiwicHJvcGVydHlCaW5kaW5nIiwiY29tcGlsZUV4cHJlc3Npb24iLCJwYXRoSW5Nb2RlbCIsInZhbHVlQ2hhbmdlZCIsImUiLCJnZXRQYXJhbWV0ZXIiLCJCYXNlT2JqZWN0IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFeHRlbnNpb25BUEkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgcGF0aEluTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IHR5cGUgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCB0eXBlIEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSB7IFdhdGNoZXJDYWxsYmFjayB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9EYXRhV2F0Y2hlclwiO1xuaW1wb3J0IERhdGFXYXRjaGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9EYXRhV2F0Y2hlclwiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEZvcm1BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZm9ybS9Gb3JtQVBJXCI7XG5pbXBvcnQgQmFzZU9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBUU0Z1bmN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG4vKipcbiAqIENvbW1vbiBFeHRlbnNpb24gQVBJIGZvciBhbGwgcGFnZXMgb2YgU0FQIEZpb3JpIGVsZW1lbnRzIGZvciBPRGF0YSBWNC5cbiAqXG4gKiBUbyBjb3JyZWN0bHkgaW50ZWdyYXRlIHlvdXIgYXBwIGV4dGVuc2lvbiBjb2Rpbmcgd2l0aCBTQVAgRmlvcmkgZWxlbWVudHMsIHVzZSBvbmx5IHRoZSBleHRlbnNpb25BUEkgb2YgU0FQIEZpb3JpIGVsZW1lbnRzLiBEb24ndCBhY2Nlc3Mgb3IgbWFuaXB1bGF0ZSBjb250cm9scywgcHJvcGVydGllcywgbW9kZWxzLCBvciBvdGhlciBpbnRlcm5hbCBvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIFNBUCBGaW9yaSBlbGVtZW50cyBmcmFtZXdvcmsuXG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9jb250cm9sbGVyRXh0ZW5zaW9ucy9jb250cm9sbGVyRXh0ZW5zaW9uc092ZXJ2aWV3IE92ZXJ2aWV3IG9mIEJ1aWxkaW5nIEJsb2NrfVxuICogQHB1YmxpY1xuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHNpbmNlIDEuNzkuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIilcbmNsYXNzIEV4dGVuc2lvbkFQSSBleHRlbmRzIEJhc2VPYmplY3Qge1xuXHQvKipcblx0ICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBob29rcyBpbnRvIHRoZSBlZGl0IGZsb3cgb2YgdGhlIGFwcGxpY2F0aW9uLlxuXHQgKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9jb250cm9sbGVyRXh0ZW5zaW9ucy9iYXNpY0V4dGVuc2liaWxpdHkgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2t9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuRWRpdEZsb3dcIiB9KVxuXHRlZGl0RmxvdzogRWRpdEZsb3c7XG5cblx0LyoqXG5cdCAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgcm91dGluZyBmbG93IG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICoge0BsaW5rIGRlbW86c2FwL2ZlL2NvcmUvZnBtRXhwbG9yZXIvaW5kZXguaHRtbCMvY29udHJvbGxlckV4dGVuc2lvbnMvcm91dGluZ0V4dGVuc2liaWxpdHkgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2t9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuUm91dGluZ1wiIH0pXG5cdHJvdXRpbmc6IFJvdXRpbmc7XG5cblx0LyoqXG5cdCAqIEV4dGVuc2lvbkFQSSBmb3IgaW50ZW50LWJhc2VkIG5hdmlnYXRpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5JbnRlbnRCYXNlZE5hdmlnYXRpb25cIiB9KVxuXHRpbnRlbnRCYXNlZE5hdmlnYXRpb246IEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRwdWJsaWMgX2NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyO1xuXG5cdHByb3RlY3RlZCBfdmlldzogRkVWaWV3O1xuXG5cdHByaXZhdGUgX3JvdXRpbmc6IEludGVybmFsUm91dGluZztcblxuXHRwcml2YXRlIF9wcmVmaXg/OiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBleHRlbnNpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdGNvbnN0cnVjdG9yKG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc0lkPzogc3RyaW5nKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLl9jb250cm9sbGVyID0gb0NvbnRyb2xsZXI7XG5cdFx0dGhpcy5fdmlldyA9IG9Db250cm9sbGVyLmdldFZpZXcoKTtcblx0XHR0aGlzLmV4dGVuc2lvbiA9IHRoaXMuX2NvbnRyb2xsZXIuZXh0ZW5zaW9uO1xuXHRcdHRoaXMuZWRpdEZsb3cgPSB0aGlzLl9jb250cm9sbGVyLmVkaXRGbG93O1xuXHRcdHRoaXMucm91dGluZyA9IHRoaXMuX2NvbnRyb2xsZXIucm91dGluZztcblx0XHR0aGlzLl9yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5fcm91dGluZztcblx0XHR0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbiA9IHRoaXMuX2NvbnRyb2xsZXIuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHRcdHRoaXMuX3ByZWZpeCA9IHNJZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uXG5cdCAqL1xuXHRnZXRFZGl0RmxvdygpOiBFZGl0RmxvdyB7XG5cdFx0cmV0dXJuIHRoaXMuZWRpdEZsb3c7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSByb3V0aW5nIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldFJvdXRpbmcoKTogUm91dGluZyB7XG5cdFx0cmV0dXJuIHRoaXMucm91dGluZztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3IgdGhpcyBwYWdlLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBpbnRlbnRCYXNlZE5hdmlnYXRpb24gY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEludGVudEJhc2VkTmF2aWdhdGlvbigpOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24ge1xuXHRcdHJldHVybiB0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBBY2Nlc3MgYSBjb250cm9sIGJ5IGl0cyBJRC4gSWYgeW91IGF0dGVtcHQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wgaW5zdGVhZCBvZiB0aGUgc3RhYmxlIEFQSSwgdGhlIG1ldGhvZCB3aWxsIHJhaXNlIGFuIGVycm9yLlxuXHQgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGNvbnRyb2wgd2l0aG91dCB2aWV3IGFuZCBzZWN0aW9uIHByZWZpeC5cblx0ICogQHJldHVybnMgVGhlIHJlcXVlc3RlZCBjb250cm9sLCBpZiBmb3VuZCBpbiB0aGUgdmlldyAvIHNlY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGJ5SWQoaWQ6IHN0cmluZyk6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQge1xuXHRcdGxldCBjb250cm9sID0gdGhpcy5fdmlldy5ieUlkKGlkKTtcblxuXHRcdGlmICghY29udHJvbCAmJiB0aGlzLl9wcmVmaXgpIHtcblx0XHRcdC8vIGdpdmUgaXQgYSB0cnkgd2l0aCB0aGUgcHJlZml4XG5cdFx0XHRjb250cm9sID0gdGhpcy5fdmlldy5ieUlkKGAke3RoaXMuX3ByZWZpeH0tLSR7aWR9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250cm9sKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGlmICghY29udHJvbC5pc0E8TWFjcm9BUEk+KFwic2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVwiKSkge1xuXHRcdFx0Ly8gY2hlY2sgaWYgYXBwIHRyaWVkIHRvIGFjY2VzcyBhbiBpbnRlcm5hbCBjb250cm9sIHdyYXBwZWQgYnkgYSBtYWNybyBBUElcblx0XHRcdGxldCBwYXJlbnQgPSBjb250cm9sLmdldFBhcmVudCgpO1xuXG5cdFx0XHR3aGlsZSAocGFyZW50KSB7XG5cdFx0XHRcdGlmIChwYXJlbnQuaXNBPEZvcm1BUEk+KFwic2FwLmZlLm1hY3Jvcy5mb3JtLkZvcm1BUElcIikpIHtcblx0XHRcdFx0XHQvLyB3ZSByZWFjaGVkIHRoZSBmb3JtQVBJIGJ1dCBubyBmaWVsZCAtIHRoZSBhcHAgdHJpZXMgdG8gYWNjZXNzIGFueSBjdXN0b20gY29udHJvbCB3aGljaCBpcyBmaW5lXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAocGFyZW50LmlzQTxNYWNyb0FQST4oXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcdFx0YFlvdSBhdHRlbXB0ZWQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wuIFRoaXMgaXMgcmlza3kgYW5kIG1pZ2h0IGNoYW5nZSBsYXRlci4gSW5zdGVhZCBhY2Nlc3MgaXRzIHN0YWJsZSBBUEkgYnkgdXNpbmcgSUQgJHtwYXJlbnQuZ2V0SWQoKX1gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udHJvbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWNjZXNzIHRvIG1vZGVscyBtYW5hZ2VkIGJ5IFNBUCBGaW9yaSBlbGVtZW50cy48YnI+XG5cdCAqIFRoZSBmb2xsb3dpbmcgbW9kZWxzIGNhbiBiZSBhY2Nlc3NlZDpcblx0ICogPHVsPlxuXHQgKiA8bGk+dW5kZWZpbmVkOiB0aGUgdW5kZWZpbmVkIG1vZGVsIHJldHVybnMgdGhlIFNBUFVJNSBPRGF0YSBWNCBtb2RlbCBib3VuZCB0byB0aGlzIHBhZ2U8L2xpPlxuXHQgKiA8bGk+aTE4biAvIGZ1cnRoZXIgZGF0YSBtb2RlbHMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Q8L2xpPlxuXHQgKiA8bGk+dWk6IHJldHVybnMgYSBTQVBVSTUgSlNPTiBtb2RlbCBjb250YWluaW5nIFVJIGluZm9ybWF0aW9uLlxuXHQgKiBPbmx5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgcHVibGljIGFuZCBzdXBwb3J0ZWQ6XG5cdCAqIDx1bD5cblx0ICogPGxpPmlzRWRpdGFibGU6IHNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBpbiBlZGl0IG1vZGU8L2xpPlxuXHQgKiA8L3VsPlxuXHQgKiA8L2xpPlxuXHQgKiA8L3VsPi5cblx0ICogZWRpdE1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSBpc0VkaXRhYmxlIGluc3RlYWQuXG5cdCAqIEBwYXJhbSBzTW9kZWxOYW1lIE5hbWUgb2YgdGhlIG1vZGVsXG5cdCAqIEByZXR1cm5zIFRoZSByZXF1aXJlZCBtb2RlbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRNb2RlbChzTW9kZWxOYW1lPzogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvQXBwQ29tcG9uZW50O1xuXG5cdFx0aWYgKHNNb2RlbE5hbWUgJiYgc01vZGVsTmFtZSAhPT0gXCJ1aVwiKSB7XG5cdFx0XHRvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX3ZpZXcpO1xuXHRcdFx0aWYgKCFvQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpLm1vZGVsc1tzTW9kZWxOYW1lXSkge1xuXHRcdFx0XHQvLyBkb24ndCBhbGxvdyBhY2Nlc3MgdG8gb3VyIGludGVybmFsIG1vZGVsc1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl92aWV3LmdldE1vZGVsKHNNb2RlbE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhbnkgY29udHJvbCBhcyBhIGRlcGVuZGVudCBjb250cm9sIHRvIHRoaXMgU0FQIEZpb3JpIGVsZW1lbnRzIHBhZ2UuXG5cdCAqIEBwYXJhbSBvQ29udHJvbCBDb250cm9sIHRvIGJlIGFkZGVkIGFzIGEgZGVwZW5kZW50IGNvbnRyb2xcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YWRkRGVwZW5kZW50KG9Db250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0dGhpcy5fdmlldy5hZGREZXBlbmRlbnQob0NvbnRyb2wpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBhIGRlcGVuZGVudCBjb250cm9sIGZyb20gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZW1vdmVEZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LnJlbW92ZURlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogTmF2aWdhdGUgdG8gYW5vdGhlciB0YXJnZXQuXG5cdCAqIEBwYXJhbSBzVGFyZ2V0IE5hbWUgb2YgdGhlIHRhcmdldCByb3V0ZVxuXHQgKiBAcGFyYW0gW29Db250ZXh0XSBPRGF0YSB2NCBjb250ZXh0IGluc3RhbmNlXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdG5hdmlnYXRlVG9UYXJnZXQoc1RhcmdldDogc3RyaW5nLCBvQ29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHR0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlVG9UYXJnZXQob0NvbnRleHQsIHNUYXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWQgYSBmcmFnbWVudCBhbmQgZ28gdGhyb3VnaCB0aGUgdGVtcGxhdGUgcHJlcHJvY2Vzc29yIHdpdGggdGhlIGN1cnJlbnQgcGFnZSBjb250ZXh0LlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzIFRoZSBzZXR0aW5ncyBvYmplY3Rcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pZCBUaGUgSUQgb2YgdGhlIGZyYWdtZW50IGl0c2VsZlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLm5hbWUgVGhlIG5hbWUgb2YgdGhlIGZyYWdtZW50IHRvIGJlIGxvYWRlZFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmNvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIGZyYWdtZW50XG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udGV4dFBhdGggVGhlIGNvbnRleHRQYXRoIHRvIGJlIHVzZWQgZm9yIHRoZSB0ZW1wbGF0aW5nIHByb2Nlc3Ncblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgVGhlIGluaXRpYWwgYmluZGluZyBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBmcmFnbWVudCBkZWZpbml0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvYWRGcmFnbWVudChtU2V0dGluZ3M6IHtcblx0XHRpZDogc3RyaW5nO1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHRjb250cm9sbGVyPzogb2JqZWN0O1xuXHRcdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRcdGluaXRpYWxCaW5kaW5nQ29udGV4dD86IENvbnRleHQ7XG5cdH0pOiBQcm9taXNlPFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10+IHtcblx0XHRjb25zdCBvVGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdGF3YWl0IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRTZXJ2aWNlKFwidGVtcGxhdGVkVmlld1NlcnZpY2VcIik7XG5cdFx0Y29uc3Qgb1BhZ2VNb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpO1xuXHRcdGNvbnN0IGkxOG5Nb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG1WaWV3RGF0YSA9IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRWaWV3RGF0YSgpO1xuXHRcdGNvbnN0IHRhcmdldENvbnRleHRQYXRoID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldEVudGl0eVNldCgpXG5cdFx0XHQ/IGAvJHtvVGVtcGxhdGVDb21wb25lbnQuZ2V0RW50aXR5U2V0KCkhfWBcblx0XHRcdDogb1RlbXBsYXRlQ29tcG9uZW50LmdldENvbnRleHRQYXRoKCkhO1xuXHRcdGNvbnN0IG9WaWV3RGF0YU1vZGVsID0gbmV3IEpTT05Nb2RlbChtVmlld0RhdGEpLFxuXHRcdFx0b1ByZXByb2Nlc3NvclNldHRpbmdzID0ge1xuXHRcdFx0XHRiaW5kaW5nQ29udGV4dHM6IHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aDogb01ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQobVNldHRpbmdzLmNvbnRleHRQYXRoIHx8IHRhcmdldENvbnRleHRQYXRoKSxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiLCB1bmRlZmluZWQsIHsgbm9SZXNvbHZlOiB0cnVlIH0pLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBtVmlld0RhdGEgPyBvVmlld0RhdGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgOiBudWxsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1vZGVsczoge1xuXHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwsXG5cdFx0XHRcdFx0bWV0YU1vZGVsOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBvVmlld0RhdGFNb2RlbCxcblx0XHRcdFx0XHRcInNhcC5mZS5pMThuXCI6IGkxOG5Nb2RlbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhcHBDb21wb25lbnQ6IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLl92aWV3KVxuXHRcdFx0fTtcblxuXHRcdC8vIFdlIHNjb3BlIHRoZSBmcmFnbWVudCB3aXRoIG91ciBFeHRlbnNpb25BUEkuIElmIGEgY29udHJvbGxlciBvYmplY3QgaXMgcGFzc2VkIHdlIG1lcmdlIGl0IHdpdGggdGhlIGV4dGVuc2lvbkFQSVxuXHRcdGxldCBjb250cm9sbGVySW5zdGFuY2U6IEV4dGVuc2lvbkFQSTtcblx0XHRpZiAobVNldHRpbmdzLmNvbnRyb2xsZXIgJiYgIShtU2V0dGluZ3MuY29udHJvbGxlciBhcyBFeHRlbnNpb25BUEkpPy5pc0E/LihcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKSkge1xuXHRcdFx0Y29uc3Qgc3ViQ2xhc3MgPSAoXG5cdFx0XHRcdHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRDbGFzcygpIGFzIHVua25vd24gYXMge1xuXHRcdFx0XHRcdGV4dGVuZDogKGlkOiBzdHJpbmcsIGNvbnRlbnQ6IG9iamVjdCkgPT4geyBuZXcgKHBhZ2VDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IEV4dGVuc2lvbkFQSSB9O1xuXHRcdFx0XHR9XG5cdFx0XHQpLmV4dGVuZChtU2V0dGluZ3MuaWQgKyBcIi1jb250cm9sbGVyXCIsIHt9KTtcblx0XHRcdGZvciAoY29uc3QgY29udHJvbGxlckVsZW1lbnRLZXkgaW4gbVNldHRpbmdzLmNvbnRyb2xsZXIpIHtcblx0XHRcdFx0Y29uc3QgY29udHJvbGxlckVsZW1lbnQgPSBtU2V0dGluZ3MuY29udHJvbGxlcltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdO1xuXHRcdFx0XHRpZiAoKGNvbnRyb2xsZXJFbGVtZW50IGFzIEZ1bmN0aW9uKT8uYmluZCkge1xuXHRcdFx0XHRcdGNvbnN0IGJvdW5kRnVuY3Rpb24gPSAoY29udHJvbGxlckVsZW1lbnQgYXMgRnVuY3Rpb24pLmJpbmQobVNldHRpbmdzLmNvbnRyb2xsZXIpO1xuXHRcdFx0XHRcdGlmIChvVGVtcGxhdGVDb21wb25lbnQpIHtcblx0XHRcdFx0XHRcdHN1YkNsYXNzLnByb3RvdHlwZVtjb250cm9sbGVyRWxlbWVudEtleV0gPSAoLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93biA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvVGVtcGxhdGVDb21wb25lbnQucnVuQXNPd25lcigoKSA9PiBib3VuZEZ1bmN0aW9uLmFwcGx5KHRoaXMsIGFyZ3MpKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHN1YkNsYXNzLnByb3RvdHlwZVtjb250cm9sbGVyRWxlbWVudEtleV0gPSBib3VuZEZ1bmN0aW9uO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MucHJvdG90eXBlLCBjb250cm9sbGVyRWxlbWVudEtleSwge1xuXHRcdFx0XHRcdFx0Z2V0KCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbVNldHRpbmdzLmNvbnRyb2xsZXI/Lltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHNldCh2OiB1bmtub3duKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChtU2V0dGluZ3MuY29udHJvbGxlcikge1xuXHRcdFx0XHRcdFx0XHRcdChtU2V0dGluZ3MuY29udHJvbGxlcltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdIGFzIHVua25vd24pID0gdjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb250cm9sbGVySW5zdGFuY2UgPSBuZXcgc3ViQ2xhc3ModGhpcy5fY29udHJvbGxlcik7XG5cdFx0XHRjb25zdCBuZXdJc0EgPSBjb250cm9sbGVySW5zdGFuY2UuaXNBO1xuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlLmlzQSA9IChjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHQvLyBXZSBrZWVwIHRoZSBcdHNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSSBhcyBhIHZhbGlkIHR5cGUgZm9yIHRoaXMgbmV3IGNsYXNzXG5cdFx0XHRcdC8vIHRoaXMgdHlwZSBpcyBsb3N0IGFzIHNvb24gYXMgdGhlIG1lcmdlZCBjb250cm9sbGVyIG9iamVjdCBnZXRzIGEgbWV0aG9kIGlzQVxuXHRcdFx0XHRyZXR1cm4gbmV3SXNBLmJpbmQoY29udHJvbGxlckluc3RhbmNlKShjbGFzc05hbWUpIHx8IHRoaXMuaXNBKGNsYXNzTmFtZSk7XG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb250cm9sbGVySW5zdGFuY2UgPSAobVNldHRpbmdzLmNvbnRyb2xsZXIgYXMgRXh0ZW5zaW9uQVBJKSA/PyB0aGlzO1xuXHRcdH1cblx0XHRyZXR1cm4gb1RlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3Qgb1RlbXBsYXRlUHJvbWlzZSA9IENvbW1vblV0aWxzLnRlbXBsYXRlQ29udHJvbEZyYWdtZW50KG1TZXR0aW5ncy5uYW1lLCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MsIHtcblx0XHRcdFx0Y29udHJvbGxlcjogY29udHJvbGxlckluc3RhbmNlLFxuXHRcdFx0XHRpc1hNTDogZmFsc2UsXG5cdFx0XHRcdGlkOiBtU2V0dGluZ3MuaWQsXG5cdFx0XHRcdGNvbnRhaW5pbmdWaWV3OiB0aGlzLl92aWV3LFxuXHRcdFx0XHRjb250ZXh0UGF0aDogbVNldHRpbmdzLmNvbnRleHRQYXRoID8/IHRhcmdldENvbnRleHRQYXRoXG5cdFx0XHR9KSBhcyBQcm9taXNlPENvbnRyb2w+O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgb0ZyYWdtZW50OiBDb250cm9sID0gYXdhaXQgb1RlbXBsYXRlUHJvbWlzZTtcblx0XHRcdFx0aWYgKG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdG9GcmFnbWVudC5zZXRCaW5kaW5nQ29udGV4dChtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmFkZERlcGVuZGVudChvRnJhZ21lbnQpO1xuXHRcdFx0XHRyZXR1cm4gb0ZyYWdtZW50O1xuXHRcdFx0fSBjYXRjaCAob0Vycm9yKSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9KSBhcyBQcm9taXNlPFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10+O1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyaWdnZXJzIGFuIHVwZGF0ZSBvZiB0aGUgYXBwIHN0YXRlLlxuXHQgKiBTaG91bGQgYmUgY2FsbGVkIGlmIHRoZSBzdGF0ZSBvZiBhIGNvbnRyb2wsIG9yIGFueSBvdGhlciBzdGF0ZS1yZWxldmFudCBpbmZvcm1hdGlvbiwgd2FzIGNoYW5nZWQuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG5ldyBhcHAgc3RhdGUgb2JqZWN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVBcHBTdGF0ZSgpOiBQcm9taXNlPHZvaWQgfCB7IGFwcFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQgfT4ge1xuXHRcdGNvbnN0IHZpZXcgPSB0aGlzLl9jb250cm9sbGVyLmdldFZpZXcoKTtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLl9jb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IGFwcFN0YXRlSW5mbyA9IGF3YWl0IGFwcENvbXBvbmVudC5nZXRBcHBTdGF0ZUhhbmRsZXIoKS5jcmVhdGVBcHBTdGF0ZSh7XG5cdFx0XHR2aWV3SWQ6IHZpZXcuZ2V0SWQoKVxuXHRcdH0pO1xuXHRcdHJldHVybiBhcHBTdGF0ZUluZm8/LmFwcFN0YXRlRGF0YTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSdW4gdGhlIGdpdmVuIGZ1bmN0aW9uIHdpdGggdGhlIEZQTSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqIFRoaXMgYWxsb3dzIHRvIGluaXRpYWxpemUgYWxsIHRoZSBlbGVtZW50cyByZXF1aXJlZCBieSBidWlsZGluZyBibG9ja3MgdG8gcmVuZGVyIGNvcnJlY3RseS5cblx0ICogQHBhcmFtIGZuIFRoZSBGdW5jdGlvbiB0byBiZSBleGVjdXRlZFxuXHQgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvblxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRydW5XaXRoRlBNQ29udGV4dChmbjogRnVuY3Rpb24pOiB1bmtub3duIHtcblx0XHRjb25zdCB0ZW1wbGF0ZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLl92aWV3KSBhcyBFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD47XG5cdFx0cmV0dXJuIHRlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoZm4gYXMgVFNGdW5jdGlvbik7XG5cdH1cblxuXHQvKipcblx0ICogV2F0Y2ggYSBwcm9wZXJ0eSBmcm9tIHRoZSBtYWluIHBhZ2UgY29udGV4dCBhbmQgdHJpZ2dlciBhIGNhbGxiYWNrIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHdhdGNoXG5cdCAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gdHJpZ2dlciB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHdhdGNoUHJvcGVydHkocHJvcGVydHlOYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBXYXRjaGVyQ2FsbGJhY2spOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LmFkZERlcGVuZGVudChcblx0XHRcdG5ldyBEYXRhV2F0Y2hlcih7XG5cdFx0XHRcdHByb3BlcnR5QmluZGluZzogY29tcGlsZUV4cHJlc3Npb24ocGF0aEluTW9kZWwocHJvcGVydHlOYW1lKSksXG5cdFx0XHRcdHZhbHVlQ2hhbmdlZDogKGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRjYWxsYmFjayhlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpLCBlLmdldFBhcmFtZXRlcihcIm9sZFZhbHVlXCIpLCBlLmdldFBhcmFtZXRlcihcImlzSW5pdGlhbFwiKSwgZS5nZXRQYXJhbWV0ZXIoXCJjb250ZXh0XCIpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV4dGVuc2lvbkFQSTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUkEsSUFVTUEsWUFBWSxJQUFBQyxJQUFBLEdBRGpCQyxjQUFjLENBQUMsMEJBQTBCLENBQUMsRUFBQUMsS0FBQSxHQU96Q0MsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUE0QyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQVEvREYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUEyQyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQU85REgsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUF5RCxDQUFDLENBQUMsRUFBQUosSUFBQSxDQUFBTyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLFdBQUE7SUFhN0UsU0FBQVYsYUFBWVcsV0FBMkIsRUFBRUMsR0FBWSxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUN0REEsS0FBQSxHQUFBSCxXQUFBLENBQUFJLElBQUEsS0FBTSxDQUFDO01BbENSO0FB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
@@ -227,9 +227,10 @@ class ExtensionAPI extends BaseObject {
227
227
  initialBindingContext?: Context;
228
228
  }): Promise<UI5Element | UI5Element[]> {
229
229
  const oTemplateComponent = Component.getOwnerComponentFor(this._view) as EnhanceWithUI5<TemplateComponent>;
230
+ await oTemplateComponent.getService("templatedViewService");
230
231
  const oPageModel = this._view.getModel("_pageModel");
231
232
  const i18nModel = this._view.getModel("sap.fe.i18n");
232
- const oMetaModel = this.getModel()?.getMetaModel();
233
+ const oMetaModel = oTemplateComponent.getMetaModel();
233
234
  const mViewData = oTemplateComponent.getViewData();
234
235
  const targetContextPath = oTemplateComponent.getEntitySet()
235
236
  ? `/${oTemplateComponent.getEntitySet()!}`
@@ -298,7 +299,8 @@ class ExtensionAPI extends BaseObject {
298
299
  controller: controllerInstance,
299
300
  isXML: false,
300
301
  id: mSettings.id,
301
- containingView: this._view
302
+ containingView: this._view,
303
+ contextPath: mSettings.contextPath ?? targetContextPath
302
304
  }) as Promise<Control>;
303
305
  try {
304
306
  const oFragment: Control = await oTemplatePromise;
@@ -188,6 +188,18 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe
188
188
  if (page.isA("sap.f.DynamicPage") || page.isA("sap.uxap.ObjectPageLayout")) {
189
189
  page.setShowFooter(show);
190
190
  }
191
+ }
192
+
193
+ /**
194
+ * Method to get the footer.
195
+ * @returns The footer of the page if it exists
196
+ */;
197
+ _proto.getFooter = function getFooter() {
198
+ const page = this.getView().getContent()[0];
199
+ if (page.isA("sap.f.DynamicPage") || page.isA("sap.uxap.ObjectPageLayout")) {
200
+ return page.getFooter();
201
+ }
202
+ return undefined;
191
203
  };
192
204
  return PageController;
193
205
  }(BaseController), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "routing", [_dec2], {
@@ -283,4 +295,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe
283
295
  }), _applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeRendering", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeRendering"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getExtensionAPI", [_dec22], Object.getOwnPropertyDescriptor(_class2.prototype, "getExtensionAPI"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPageReady", [_dec23, _dec24], Object.getOwnPropertyDescriptor(_class2.prototype, "onPageReady"), _class2.prototype), _class2)) || _class);
284
296
  return PageController;
285
297
  }, false);
286
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwidXNpbmdFeHRlbnNpb24iLCJSb3V0aW5nIiwiX2RlYzMiLCJDb2xsYWJvcmF0aXZlRHJhZnQiLCJfZGVjNCIsIkludGVybmFsUm91dGluZyIsIl9kZWM1IiwiRWRpdEZsb3ciLCJfZGVjNiIsIkludGVudEJhc2VkTmF2aWdhdGlvbiIsIl9kZWM3IiwiSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJfZGVjOCIsIlBhZ2VSZWFkeSIsIl9kZWM5IiwiTWVzc2FnZUhhbmRsZXIiLCJfZGVjMTAiLCJTaGFyZSIsIl9kZWMxMSIsIlBhZ2luYXRvciIsIl9kZWMxMiIsIlZpZXdTdGF0ZSIsIl9kZWMxMyIsIlBsYWNlaG9sZGVyIiwiX2RlYzE0IiwiU2lkZUVmZmVjdHMiLCJfZGVjMTUiLCJSZWNvbW1lbmRhdGlvbnMiLCJfZGVjMTYiLCJUZWxlbWV0cnkiLCJfZGVjMTciLCJDb250ZXh0U2hhcmluZyIsIl9kZWMxOCIsIkNvbGxhYm9yYXRpb25NYW5hZ2VyIiwiX2RlYzE5IiwiSW5saW5lRWRpdEZsb3ciLCJfZGVjMjAiLCJwdWJsaWNFeHRlbnNpb24iLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJleHRlbnNpYmxlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CYXNlQ29udHJvbGxlciIsIm5hbWUiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4Iiwib3duUHJvcHMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25Qcm9wIiwiZm5Qcm9wIiwiZ2V0TWV0YWRhdGEiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIm93bmVyQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJnZXRWaWV3IiwicnVuQXNPd25lciIsImFwcGx5IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJfb1ZpZXciLCJzZXQiLCJ2IiwiZ2V0T3duZXJDb21wb25lbnQiLCJzZXRSb290Q29udHJvbGxlciIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwib25Jbml0Iiwib1VJTW9kZWwiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRNb2RlbCIsIm9JbnRlcm5hbE1vZGVsIiwic1BhdGgiLCJnZXRJZCIsInNldFByb3BlcnR5IiwiY29udHJvbHMiLCJjb2xsYWJvcmF0aW9uIiwiYmluZEVsZW1lbnQiLCJwYXRoIiwibW9kZWwiLCJzZXRNb2RlbCIsIm9uQmVmb3JlUmVuZGVyaW5nIiwicGxhY2Vob2xkZXIiLCJhdHRhY2hIaWRlQ2FsbGJhY2siLCJnZXRFeHRlbnNpb25BUEkiLCJpZCIsImV4dGVuc2lvbkFQSSIsIkV4dGVuc2lvbkFQSSIsIm9uUGFnZVJlYWR5IiwiX21QYXJhbWV0ZXJzIiwidmlldyIsImdldEFwcFN0YXRlSGFuZGxlciIsImFwcGx5QXBwU3RhdGUiLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJfZ2V0UGFnZU1vZGVsIiwicGFnZUNvbXBvbmVudCIsIm9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZCIsIm91dGJvdW5kVGFyZ2V0IiwiY29udGV4dHMiLCJjcmVhdGVQYXRoIiwibWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zIiwidGhhdCIsImZvckVhY2giLCJjb250ZXh0IiwiX2ludGVudEJhc2VkTmF2aWdhdGlvbiIsIm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCIsIk1lc3NhZ2VCb3giLCJ3YXJuaW5nIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZ2V0VGV4dCIsImdldFJvdXRpbmdUYXJnZXROYW1lIiwicm91dGluZ1RhcmdldE5hbWUiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldE5hbWVGb3JWaWV3Iiwic2V0U2hvd0Zvb3RlciIsInNob3ciLCJ1bmRlZmluZWQiLCJwYWdlIiwiZ2V0Q29udGVudCIsImlzQSIsIkJhc2VDb250cm9sbGVyIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdlQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBEeW5hbWljUGFnZSBmcm9tIFwic2FwL2YvRHluYW1pY1BhZ2VcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBwdWJsaWNFeHRlbnNpb24sIHVzaW5nRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgQ29sbGFib3JhdGl2ZURyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db2xsYWJvcmF0aXZlRHJhZnRcIjtcbmltcG9ydCBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCBJbmxpbmVFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW5saW5lRWRpdEZsb3dcIjtcbmltcG9ydCBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgTWVzc2FnZUhhbmRsZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgUGFnZVJlYWR5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QYWdlUmVhZHlcIjtcbmltcG9ydCBQYWdpbmF0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2luYXRvclwiO1xuaW1wb3J0IFBsYWNlaG9sZGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QbGFjZWhvbGRlclwiO1xuaW1wb3J0IFJlY29tbWVuZGF0aW9ucyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUmVjb21tZW5kYXRpb25zXCI7XG5pbXBvcnQgUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUm91dGluZ1wiO1xuaW1wb3J0IFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0IFRlbGVtZXRyeSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVGVsZW1ldHJ5XCI7XG5pbXBvcnQgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgVGl0bGVJbmZvcm1hdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9yb290Vmlldy9Sb290Vmlld0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlTGF5b3V0IGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlTGF5b3V0XCI7XG5pbXBvcnQgQ29udGV4dFNoYXJpbmcgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQ29udGV4dFNoYXJpbmdcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uTWFuYWdlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9jYXJkcy9Db2xsYWJvcmF0aW9uTWFuYWdlclwiO1xuXG4vKipcbiAqIEJhc2UgY29udHJvbGxlciBjbGFzcyBmb3IgeW91ciBjdXN0b20gcGFnZSB1c2VkIGluc2lkZSBhbiBTQVAgRmlvcmkgZWxlbWVudHMgYXBwbGljYXRpb24uXG4gKlxuICogVGhpcyBjb250cm9sbGVyIHByb3ZpZGVzIHByZWNvbmZpZ3VyZWQgZXh0ZW5zaW9ucyB0aGF0IHdpbGwgZW5zdXJlIHlvdSBoYXZlIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXRpZXMgcmVxdWlyZWQgdG8gdXNlIHRoZSBidWlsZGluZyBibG9ja3MuXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS44OC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLlBhZ2VDb250cm9sbGVyXCIpXG5jbGFzcyBQYWdlQ29udHJvbGxlciBleHRlbmRzIEJhc2VDb250cm9sbGVyIHtcblx0QHVzaW5nRXh0ZW5zaW9uKFJvdXRpbmcpXG5cdHJvdXRpbmchOiBSb3V0aW5nO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihDb2xsYWJvcmF0aXZlRHJhZnQpXG5cdGNvbGxhYm9yYXRpdmVEcmFmdCE6IENvbGxhYm9yYXRpdmVEcmFmdDtcblxuXHRAdXNpbmdFeHRlbnNpb24oSW50ZXJuYWxSb3V0aW5nKVxuXHRfcm91dGluZyE6IEludGVybmFsUm91dGluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oRWRpdEZsb3cpXG5cdGVkaXRGbG93ITogRWRpdEZsb3c7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVudEJhc2VkTmF2aWdhdGlvbilcblx0aW50ZW50QmFzZWROYXZpZ2F0aW9uITogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbilcblx0X2ludGVudEJhc2VkTmF2aWdhdGlvbiE6IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQYWdlUmVhZHkpXG5cdHBhZ2VSZWFkeSE6IFBhZ2VSZWFkeTtcblxuXHRAdXNpbmdFeHRlbnNpb24oTWVzc2FnZUhhbmRsZXIpXG5cdG1lc3NhZ2VIYW5kbGVyITogTWVzc2FnZUhhbmRsZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFNoYXJlKVxuXHRzaGFyZSE6IFNoYXJlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQYWdpbmF0b3IpXG5cdHBhZ2luYXRvciE6IFBhZ2luYXRvcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oVmlld1N0YXRlKVxuXHR2aWV3U3RhdGUhOiBWaWV3U3RhdGU7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBsYWNlaG9sZGVyKVxuXHRwbGFjZWhvbGRlciE6IFBsYWNlaG9sZGVyO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihTaWRlRWZmZWN0cylcblx0X3NpZGVFZmZlY3RzITogU2lkZUVmZmVjdHM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFJlY29tbWVuZGF0aW9ucylcblx0cmVjb21tZW5kYXRpb25zITogUmVjb21tZW5kYXRpb25zO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihUZWxlbWV0cnkpXG5cdHRlbGVtZXRyeSE6IFRlbGVtZXRyeTtcblxuXHRAdXNpbmdFeHRlbnNpb24oQ29udGV4dFNoYXJpbmcpXG5cdGNvbnRleHRTaGFyaW5nITogQ29udGV4dFNoYXJpbmc7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKENvbGxhYm9yYXRpb25NYW5hZ2VyKVxuXHRjb2xsYWJvcmF0aW9uTWFuYWdlciE6IENvbGxhYm9yYXRpb25NYW5hZ2VyO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbmxpbmVFZGl0Rmxvdylcblx0aW5saW5lRWRpdEZsb3chOiBJbmxpbmVFZGl0RmxvdztcblxuXHRleHRlbnNpb24hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHRfb1ZpZXc/OiBWaWV3O1xuXG5cdHJvdXRpbmdUYXJnZXROYW1lPzogc3RyaW5nO1xuXG5cdHByb3RlY3RlZCBleHRlbnNpb25BUEk/OiBFeHRlbnNpb25BUEk7XG5cblx0Y29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cblx0XHRjb25zdCBvd25Qcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuY29uc3RydWN0b3IucHJvdG90eXBlKTtcblx0XHRmb3IgKGNvbnN0IG93blByb3Agb2Ygb3duUHJvcHMpIHtcblx0XHRcdGlmIChvd25Qcm9wICE9PSBcImNvbnN0cnVjdG9yXCIgJiYgb3duUHJvcCAhPT0gXCJnZXRNZXRhZGF0YVwiICYmIG93blByb3AgIT09IFwiZXh0ZW5zaW9uXCIpIHtcblx0XHRcdFx0Y29uc3QgZm5Qcm9wID0gKHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW293blByb3BdO1xuXHRcdFx0XHRpZiAoZm5Qcm9wICYmIHR5cGVvZiBmblByb3AgPT09IFwiZnVuY3Rpb25cIiAmJiAhKGZuUHJvcCBhcyB7IGdldE1ldGFkYXRhPzogRnVuY3Rpb24gfSkuZ2V0TWV0YWRhdGEpIHtcblx0XHRcdFx0XHQodGhpcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbb3duUHJvcF0gPSAoLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93biA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBvd25lckNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLmdldFZpZXcoKSk7XG5cdFx0XHRcdFx0XHRpZiAob3duZXJDb21wb25lbnQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG93bmVyQ29tcG9uZW50LnJ1bkFzT3duZXIoKCkgPT4gZm5Qcm9wLmFwcGx5KHRoaXMsIGFyZ3MpKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmblByb3AuYXBwbHkodGhpcywgYXJncyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm9WaWV3XCIsIHtcblx0XHRcdGdldCgpOiBWaWV3IHwgdW5kZWZpbmVkIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuX29WaWV3O1xuXHRcdFx0fSxcblx0XHRcdHNldCh2OiBWaWV3KSB7XG5cdFx0XHRcdHRoaXMuX29WaWV3ID0gdjtcblx0XHRcdFx0Ly8gT24gdGhlIGluaXRpYWwgdmlldyBpbnN0YW50aWF0aW9uIGZyb20gWE1MIHRoZSB0ZW1wbGF0aW5nIHByb2Nlc3MgbWF5IGJlIGZpbmlzaGVkIGJlZm9yZSB0aGUgdmlldyBpcyBjb21wbGV0ZWx5IGNyZWF0ZWRcblx0XHRcdFx0Ly8gV2hlbiB0aGF0IGhhcHBlbnMgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcm9vdCBjb250cm9sbGVyIGlzIGF2YWlsYWJsZSBvbiB0aGUgVGVtcGxhdGVDb21wb25lbnRcblx0XHRcdFx0dGhpcy5nZXRPd25lckNvbXBvbmVudCgpPy5zZXRSb290Q29udHJvbGxlcj8uKHRoaXMpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdG9uSW5pdCgpOiB2b2lkIHtcblx0XHRjb25zdCBvVUlNb2RlbCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJ1aVwiKSxcblx0XHRcdG9JbnRlcm5hbE1vZGVsID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbCxcblx0XHRcdHNQYXRoID0gYC9wYWdlcy8ke3RoaXMuZ2V0VmlldygpLmdldElkKCl9YDtcblxuXHRcdG9VSU1vZGVsLnNldFByb3BlcnR5KHNQYXRoLCB7XG5cdFx0XHRjb250cm9sczoge31cblx0XHR9KTtcblx0XHRvSW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShzUGF0aCwge1xuXHRcdFx0Y29udHJvbHM6IHt9LFxuXHRcdFx0Y29sbGFib3JhdGlvbjoge31cblx0XHR9KTtcblx0XHR0aGlzLmdldFZpZXcoKS5iaW5kRWxlbWVudCh7XG5cdFx0XHRwYXRoOiBcIi9cIixcblx0XHRcdG1vZGVsOiBcInVpXCJcblx0XHR9KTtcblx0XHR0aGlzLmdldFZpZXcoKS5iaW5kRWxlbWVudCh7XG5cdFx0XHRwYXRoOiBzUGF0aCxcblx0XHRcdG1vZGVsOiBcImludGVybmFsXCJcblx0XHR9KTtcblxuXHRcdC8vIGZvciB0aGUgdGltZSBiZWluZyBwcm92aWRlIGl0IGFsc28gcGFnZUludGVybmFsIGFzIHNvbWUgbWFjcm9zIGFjY2VzcyBpdCAtIHRvIGJlIHJlbW92ZWRcblx0XHR0aGlzLmdldFZpZXcoKS5iaW5kRWxlbWVudCh7XG5cdFx0XHRwYXRoOiBzUGF0aCxcblx0XHRcdG1vZGVsOiBcInBhZ2VJbnRlcm5hbFwiXG5cdFx0fSk7XG5cdFx0dGhpcy5nZXRWaWV3KCkuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwicGFnZUludGVybmFsXCIpO1xuXG5cdFx0Ly8gYXMgdGhlIG1vZGVsIHByb3BhZ2F0aW9uIGhhcHBlbnMgYWZ0ZXIgaW5pdCBidXQgd2UgYWN0dWFsbHkgd2FudCB0byBhY2Nlc3MgdGhlIGJpbmRpbmcgY29udGV4dCBpbiB0aGVcblx0XHQvLyBpbml0IHBoYXNlIGFscmVhZHkgc2V0dGluZyB0aGUgbW9kZWwgaGVyZVxuXHRcdHRoaXMuZ2V0VmlldygpLnNldE1vZGVsKG9VSU1vZGVsLCBcInVpXCIpO1xuXHRcdHRoaXMuZ2V0VmlldygpLnNldE1vZGVsKG9JbnRlcm5hbE1vZGVsLCBcImludGVybmFsXCIpO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnBsYWNlaG9sZGVyLmF0dGFjaEhpZGVDYWxsYmFjaykge1xuXHRcdFx0dGhpcy5wbGFjZWhvbGRlci5hdHRhY2hIaWRlQ2FsbGJhY2soKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBleHRlbnNpb24gQVBJIGZvciB0aGUgY3VycmVudCBwYWdlLlxuXHQgKiBAcGFyYW0gaWQgUFJJVkFURVxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gQVBJLlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdGdldEV4dGVuc2lvbkFQSShpZD86IHN0cmluZyk6IEV4dGVuc2lvbkFQSSB7XG5cdFx0aWYgKCF0aGlzLmV4dGVuc2lvbkFQSSkge1xuXHRcdFx0dGhpcy5leHRlbnNpb25BUEkgPSBuZXcgRXh0ZW5zaW9uQVBJKHRoaXMsIGlkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0Ly8gV2Ugc3BlY2lmeSB0aGUgZXh0ZW5zaWJpbGl0eSBoZXJlIHRoZSBzYW1lIHdheSBhcyBpdCBpcyBkb25lIGluIHRoZSBvYmplY3QgcGFnZSBjb250cm9sbGVyXG5cdC8vIHNpbmNlIHRoZSBzcGVjaWZpY2F0aW9uIGhlcmUgb3ZlcnJpZGVzIGl0IGFuZCBpZiB3ZSBkbyBub3Qgc3BlY2lmeSBhbnl0aGluZyBoZXJlLCB0aGVcblx0Ly8gYmVoYXZpb3IgZGVmYXVsdHMgdG8gYW4gZXhlY3V0ZSBpbnN0ZWFkIVxuXHQvLyBUT0RPIFRoaXMgbWF5IG5vdCBiZSBpZGVhbCwgc2luY2UgaXQgYWxzbyBpbmZsdWVuY2VzIHRoZSBsaXN0IHJlcG9ydCBjb250cm9sbGVyIGJ1dCBjdXJyZW50bHkgaXQncyB0aGUgYmVzdCBzb2x1dGlvbi5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKFwiQWZ0ZXJcIilcblx0b25QYWdlUmVhZHkoX21QYXJhbWV0ZXJzOiB1bmtub3duKTogdm9pZCB7XG5cdFx0Ly8gQXBwbHkgYXBwIHN0YXRlIG9ubHkgYWZ0ZXIgdGhlIHBhZ2UgaXMgcmVhZHkgd2l0aCB0aGUgZmlyc3Qgc2VjdGlvbiBzZWxlY3RlZFxuXHRcdGNvbnN0IHZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHR0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldEFwcFN0YXRlSGFuZGxlcigpLmFwcGx5QXBwU3RhdGUodmlldy5nZXRJZCgpLCB2aWV3KTtcblx0fVxuXG5cdF9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpOiBUaXRsZUluZm9ybWF0aW9uIHtcblx0XHRyZXR1cm4ge307XG5cdH1cblxuXHRfZ2V0UGFnZU1vZGVsKCk6IEpTT05Nb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcGFnZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLmdldFZpZXcoKSk7XG5cdFx0cmV0dXJuIHBhZ2VDb21wb25lbnQ/LmdldE1vZGVsKFwiX3BhZ2VNb2RlbFwiKSBhcyBKU09OTW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogT3BlbnMgb25lIG9yIG1vcmUgbmV3IHRhYnMgd2l0aCB0aGUgZ2l2ZW4gb3V0Ym91bmQgdGFyZ2V0IGZvciB0aGUgc2VsZWN0ZWQgY29udGV4dHMuXG5cdCAqIEBwYXJhbSBvdXRib3VuZFRhcmdldCBUaGUgb3V0Ym91bmQgdGFyZ2V0XG5cdCAqIEBwYXJhbSBjb250ZXh0cyBUaGUgc2VsZWN0ZWQgY29udGV4dHNcblx0ICogQHBhcmFtIGNyZWF0ZVBhdGggVGhlIGNyZWF0ZSBwYXRoXG5cdCAqIEBwYXJhbSBtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXMgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zXG5cdCAqL1xuXHRvbk9wZW5Jbk5ld1RhYk5hdmlnYXRlT3V0Qm91bmQoXG5cdFx0b3V0Ym91bmRUYXJnZXQ6IHN0cmluZyxcblx0XHRjb250ZXh0czogQ29udGV4dFtdLFxuXHRcdGNyZWF0ZVBhdGg6IHN0cmluZyxcblx0XHRtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXM6IG51bWJlclxuXHQpOiB2b2lkIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRpZiAoY29udGV4dHMubGVuZ3RoIDw9IG1heE51bWJlck9mU2VsZWN0ZWRJdGVtcykge1xuXHRcdFx0Y29udGV4dHMuZm9yRWFjaChmdW5jdGlvbiAoY29udGV4dDogQ29udGV4dCkge1xuXHRcdFx0XHR0aGF0Ll9pbnRlbnRCYXNlZE5hdmlnYXRpb24ub25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kKHRoYXQsIG91dGJvdW5kVGFyZ2V0LCBjb250ZXh0LCBjcmVhdGVQYXRoLCBcImV4cGxhY2VcIik7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKFxuXHRcdFx0XHRMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSEuZ2V0VGV4dChcIlRfVEFCTEVfTkFWSUdBVElPTl9UT09fTUFOWV9JVEVNU19TRUxFQ1RFRFwiLCBbXG5cdFx0XHRcdFx0bWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zXG5cdFx0XHRcdF0pXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIG5hbWUgb2YgdGhlIHBhZ2UgYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Qgcm91dGluZyBzZWN0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgcGFnZVxuXHQgKi9cblx0Z2V0Um91dGluZ1RhcmdldE5hbWUoKTogc3RyaW5nIHtcblx0XHRpZiAoIXRoaXMucm91dGluZ1RhcmdldE5hbWUpIHtcblx0XHRcdHRoaXMucm91dGluZ1RhcmdldE5hbWUgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldFJvdXRpbmdTZXJ2aWNlKCkuZ2V0VGFyZ2V0TmFtZUZvclZpZXcodGhpcy5nZXRWaWV3KCkpID8/IFwiXCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnJvdXRpbmdUYXJnZXROYW1lO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBmb3J3YXJkIHNldFNob3dGb290ZXIgb24gdGhlIGZpcnN0IGNvbnRlbnQgb2YgdGhlIHZpZXcgaWYgcmVjb2duaXplZC5cblx0ICogQHBhcmFtIHNob3dcblx0ICovXG5cdHNldFNob3dGb290ZXIoc2hvdyA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgcGFnZSA9IHRoaXMuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXTtcblx0XHRpZiAocGFnZS5pc0E8RHluYW1pY1BhZ2U+KFwic2FwLmYuRHluYW1pY1BhZ2VcIikgfHwgcGFnZS5pc0E8T2JqZWN0UGFnZUxheW91dD4oXCJzYXAudXhhcC5PYmplY3RQYWdlTGF5b3V0XCIpKSB7XG5cdFx0XHRwYWdlLnNldFNob3dGb290ZXIoc2hvdyk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2VDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztFQStCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEEsSUFTTUEsY0FBYyxJQUFBQyxJQUFBLEdBRG5CQyxjQUFjLENBQUMsNEJBQTRCLENBQUMsRUFBQUMsS0FBQSxHQUUzQ0MsY0FBYyxDQUFDQyxPQUFPLENBQUMsRUFBQUMsS0FBQSxHQUd2QkYsY0FBYyxDQUFDRyxrQkFBa0IsQ0FBQyxFQUFBQyxLQUFBLEdBR2xDSixjQUFjLENBQUNLLGVBQWUsQ0FBQyxFQUFBQyxLQUFBLEdBRy9CTixjQUFjLENBQUNPLFFBQVEsQ0FBQyxFQUFBQyxLQUFBLEdBR3hCUixjQUFjLENBQUNTLHFCQUFxQixDQUFDLEVBQUFDLEtBQUEsR0FHckNWLGNBQWMsQ0FBQ1csNkJBQTZCLENBQUMsRUFBQUMsS0FBQSxHQUc3Q1osY0FBYyxDQUFDYSxTQUFTLENBQUMsRUFBQUMsS0FBQSxHQUd6QmQsY0FBYyxDQUFDZSxjQUFjLENBQUMsRUFBQUMsTUFBQSxHQUc5QmhCLGNBQWMsQ0FBQ2lCLEtBQUssQ0FBQyxFQUFBQyxNQUFBLEdBR3JCbEIsY0FBYyxDQUFDbUIsU0FBUyxDQUFDLEVBQUFDLE1BQUEsR0FHekJwQixjQUFjLENBQUNxQixTQUFTLENBQUMsRUFBQUMsTUFBQSxHQUd6QnRCLGNBQWMsQ0FBQ3VCLFdBQVcsQ0FBQyxFQUFBQyxNQUFB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N0YsYUFBQSxHQUFBeUYseUJBQUEsQ0FBQTVHLE9BQUEsQ0FBQTRCLFNBQUEsc0JBQUE5QyxNQUFBO0lBQUErSCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTVGLGFBQUEsR0FBQXdGLHlCQUFBLENBQUE1RyxPQUFBLENBQUE0QixTQUFBLGdCQUFBNUMsTUFBQTtJQUFBNkgsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEzRixhQUFBLEdBQUF1Rix5QkFBQSxDQUFBNUcsT0FBQSxDQUFBNEIsU0FBQSxxQkFBQTFDLE1BQUE7SUFBQTJILFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBMUYsYUFBQSxHQUFBc0YseUJBQUEsQ0FBQTVHLE9BQUEsQ0FBQTRCLFNBQUEsMkJBQUF4QyxNQUFBO0lBQUF5SCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXpGLGFBQUEsR0FBQXFGLHlCQUFBLENBQUE1RyxPQUFBLENBQUE0QixTQUFBLHFCQUFBdEMsTUFBQTtJQUFBdUgsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFKLHlCQUFBLENBQUE1RyxPQUFBLENBQUE0QixTQUFBLGFBQUFwQyxNQUFBLEdBQUFpQyxNQUFBLENBQUF3Rix3QkFBQSxDQUFBakgsT0FBQSxDQUFBNEIsU0FBQSxhQUFBNUIsT0FBQSxDQUFBNEIsU0FBQSxHQUFBZ0YseUJBQUEsQ0FBQTVHLE9BQUEsQ0FBQTRCLFNBQUEsd0JBQUFsQyxNQUFBLEdBQUErQixNQUFBLENBQUF3Rix3QkFBQSxDQUFBakgsT0FBQSxDQUFBNEIsU0FBQSx3QkFBQTVCLE9BQUEsQ0FBQTRCLFNBQUEsR0FBQWdGLHlCQUFBLENBQUE1RyxPQUFBLENBQUE0QixTQUFBLHNCQUFBakMsTUFBQSxHQUFBOEIsTUFBQSxDQUFBd0Ysd0JBQUEsQ0FBQWpILE9BQUEsQ0FBQTRCLFNBQUEsc0JBQUE1QixPQUFBLENBQUE0QixTQUFBLEdBQUFnRix5QkFBQSxDQUFBNUcsT0FBQSxDQUFBNEIsU0FBQSxrQkFBQWhDLE1BQUEsRUFBQUMsTUFBQSxHQUFBNEIsTUFBQSxDQUFBd0Ysd0JBQUEsQ0FBQWpILE9BQUEsQ0FBQTRCLFNBQUEsa0JBQUE1QixPQUFBLENBQUE0QixTQUFBLEdBQUE1QixPQUFBLE1BQUFELE1BQUE7RUFBQSxPQWdPNUIvQyxjQUFjO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
298
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwidXNpbmdFeHRlbnNpb24iLCJSb3V0aW5nIiwiX2RlYzMiLCJDb2xsYWJvcmF0aXZlRHJhZnQiLCJfZGVjNCIsIkludGVybmFsUm91dGluZyIsIl9kZWM1IiwiRWRpdEZsb3ciLCJfZGVjNiIsIkludGVudEJhc2VkTmF2aWdhdGlvbiIsIl9kZWM3IiwiSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJfZGVjOCIsIlBhZ2VSZWFkeSIsIl9kZWM5IiwiTWVzc2FnZUhhbmRsZXIiLCJfZGVjMTAiLCJTaGFyZSIsIl9kZWMxMSIsIlBhZ2luYXRvciIsIl9kZWMxMiIsIlZpZXdTdGF0ZSIsIl9kZWMxMyIsIlBsYWNlaG9sZGVyIiwiX2RlYzE0IiwiU2lkZUVmZmVjdHMiLCJfZGVjMTUiLCJSZWNvbW1lbmRhdGlvbnMiLCJfZGVjMTYiLCJUZWxlbWV0cnkiLCJfZGVjMTciLCJDb250ZXh0U2hhcmluZyIsIl9kZWMxOCIsIkNvbGxhYm9yYXRpb25NYW5hZ2VyIiwiX2RlYzE5IiwiSW5saW5lRWRpdEZsb3ciLCJfZGVjMjAiLCJwdWJsaWNFeHRlbnNpb24iLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJleHRlbnNpYmxlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CYXNlQ29udHJvbGxlciIsIm5hbWUiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4Iiwib3duUHJvcHMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25Qcm9wIiwiZm5Qcm9wIiwiZ2V0TWV0YWRhdGEiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIm93bmVyQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJnZXRWaWV3IiwicnVuQXNPd25lciIsImFwcGx5IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJfb1ZpZXciLCJzZXQiLCJ2IiwiZ2V0T3duZXJDb21wb25lbnQiLCJzZXRSb290Q29udHJvbGxlciIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwib25Jbml0Iiwib1VJTW9kZWwiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRNb2RlbCIsIm9JbnRlcm5hbE1vZGVsIiwic1BhdGgiLCJnZXRJZCIsInNldFByb3BlcnR5IiwiY29udHJvbHMiLCJjb2xsYWJvcmF0aW9uIiwiYmluZEVsZW1lbnQiLCJwYXRoIiwibW9kZWwiLCJzZXRNb2RlbCIsIm9uQmVmb3JlUmVuZGVyaW5nIiwicGxhY2Vob2xkZXIiLCJhdHRhY2hIaWRlQ2FsbGJhY2siLCJnZXRFeHRlbnNpb25BUEkiLCJpZCIsImV4dGVuc2lvbkFQSSIsIkV4dGVuc2lvbkFQSSIsIm9uUGFnZVJlYWR5IiwiX21QYXJhbWV0ZXJzIiwidmlldyIsImdldEFwcFN0YXRlSGFuZGxlciIsImFwcGx5QXBwU3RhdGUiLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJfZ2V0UGFnZU1vZGVsIiwicGFnZUNvbXBvbmVudCIsIm9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZCIsIm91dGJvdW5kVGFyZ2V0IiwiY29udGV4dHMiLCJjcmVhdGVQYXRoIiwibWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zIiwidGhhdCIsImZvckVhY2giLCJjb250ZXh0IiwiX2ludGVudEJhc2VkTmF2aWdhdGlvbiIsIm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCIsIk1lc3NhZ2VCb3giLCJ3YXJuaW5nIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZ2V0VGV4dCIsImdldFJvdXRpbmdUYXJnZXROYW1lIiwicm91dGluZ1RhcmdldE5hbWUiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldE5hbWVGb3JWaWV3Iiwic2V0U2hvd0Zvb3RlciIsInNob3ciLCJ1bmRlZmluZWQiLCJwYWdlIiwiZ2V0Q29udGVudCIsImlzQSIsImdldEZvb3RlciIsIkJhc2VDb250cm9sbGVyIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdlQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBEeW5hbWljUGFnZSBmcm9tIFwic2FwL2YvRHluYW1pY1BhZ2VcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBwdWJsaWNFeHRlbnNpb24sIHVzaW5nRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgQ29sbGFib3JhdGl2ZURyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db2xsYWJvcmF0aXZlRHJhZnRcIjtcbmltcG9ydCBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCBJbmxpbmVFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW5saW5lRWRpdEZsb3dcIjtcbmltcG9ydCBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgTWVzc2FnZUhhbmRsZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgUGFnZVJlYWR5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QYWdlUmVhZHlcIjtcbmltcG9ydCBQYWdpbmF0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2luYXRvclwiO1xuaW1wb3J0IFBsYWNlaG9sZGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QbGFjZWhvbGRlclwiO1xuaW1wb3J0IFJlY29tbWVuZGF0aW9ucyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUmVjb21tZW5kYXRpb25zXCI7XG5pbXBvcnQgUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUm91dGluZ1wiO1xuaW1wb3J0IFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0IFRlbGVtZXRyeSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVGVsZW1ldHJ5XCI7XG5pbXBvcnQgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgVGl0bGVJbmZvcm1hdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9yb290Vmlldy9Sb290Vmlld0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL21kYy9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VMYXlvdXQgZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VMYXlvdXRcIjtcbmltcG9ydCBDb250ZXh0U2hhcmluZyBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db250ZXh0U2hhcmluZ1wiO1xuaW1wb3J0IENvbGxhYm9yYXRpb25NYW5hZ2VyIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL2NhcmRzL0NvbGxhYm9yYXRpb25NYW5hZ2VyXCI7XG5cbi8qKlxuICogQmFzZSBjb250cm9sbGVyIGNsYXNzIGZvciB5b3VyIGN1c3RvbSBwYWdlIHVzZWQgaW5zaWRlIGFuIFNBUCBGaW9yaSBlbGVtZW50cyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBUaGlzIGNvbnRyb2xsZXIgcHJvdmlkZXMgcHJlY29uZmlndXJlZCBleHRlbnNpb25zIHRoYXQgd2lsbCBlbnN1cmUgeW91IGhhdmUgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdGllcyByZXF1aXJlZCB0byB1c2UgdGhlIGJ1aWxkaW5nIGJsb2Nrcy5cbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjg4LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXJcIilcbmNsYXNzIFBhZ2VDb250cm9sbGVyIGV4dGVuZHMgQmFzZUNvbnRyb2xsZXIge1xuXHRAdXNpbmdFeHRlbnNpb24oUm91dGluZylcblx0cm91dGluZyE6IFJvdXRpbmc7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKENvbGxhYm9yYXRpdmVEcmFmdClcblx0Y29sbGFib3JhdGl2ZURyYWZ0ITogQ29sbGFib3JhdGl2ZURyYWZ0O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbnRlcm5hbFJvdXRpbmcpXG5cdF9yb3V0aW5nITogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihFZGl0Rmxvdylcblx0ZWRpdEZsb3chOiBFZGl0RmxvdztcblxuXHRAdXNpbmdFeHRlbnNpb24oSW50ZW50QmFzZWROYXZpZ2F0aW9uKVxuXHRpbnRlbnRCYXNlZE5hdmlnYXRpb24hOiBJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uKVxuXHRfaW50ZW50QmFzZWROYXZpZ2F0aW9uITogSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBhZ2VSZWFkeSlcblx0cGFnZVJlYWR5ITogUGFnZVJlYWR5O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihNZXNzYWdlSGFuZGxlcilcblx0bWVzc2FnZUhhbmRsZXIhOiBNZXNzYWdlSGFuZGxlcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2hhcmUpXG5cdHNoYXJlITogU2hhcmU7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBhZ2luYXRvcilcblx0cGFnaW5hdG9yITogUGFnaW5hdG9yO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihWaWV3U3RhdGUpXG5cdHZpZXdTdGF0ZSE6IFZpZXdTdGF0ZTtcblxuXHRAdXNpbmdFeHRlbnNpb24oUGxhY2Vob2xkZXIpXG5cdHBsYWNlaG9sZGVyITogUGxhY2Vob2xkZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFNpZGVFZmZlY3RzKVxuXHRfc2lkZUVmZmVjdHMhOiBTaWRlRWZmZWN0cztcblxuXHRAdXNpbmdFeHRlbnNpb24oUmVjb21tZW5kYXRpb25zKVxuXHRyZWNvbW1lbmRhdGlvbnMhOiBSZWNvbW1lbmRhdGlvbnM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFRlbGVtZXRyeSlcblx0dGVsZW1ldHJ5ITogVGVsZW1ldHJ5O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihDb250ZXh0U2hhcmluZylcblx0Y29udGV4dFNoYXJpbmchOiBDb250ZXh0U2hhcmluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oQ29sbGFib3JhdGlvbk1hbmFnZXIpXG5cdGNvbGxhYm9yYXRpb25NYW5hZ2VyITogQ29sbGFib3JhdGlvbk1hbmFnZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKElubGluZUVkaXRGbG93KVxuXHRpbmxpbmVFZGl0RmxvdyE6IElubGluZUVkaXRGbG93O1xuXG5cdGV4dGVuc2lvbiE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdF9vVmlldz86IFZpZXc7XG5cblx0cm91dGluZ1RhcmdldE5hbWU/OiBzdHJpbmc7XG5cblx0cHJvdGVjdGVkIGV4dGVuc2lvbkFQST86IEV4dGVuc2lvbkFQSTtcblxuXHRjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lKTtcblxuXHRcdGNvbnN0IG93blByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpO1xuXHRcdGZvciAoY29uc3Qgb3duUHJvcCBvZiBvd25Qcm9wcykge1xuXHRcdFx0aWYgKG93blByb3AgIT09IFwiY29uc3RydWN0b3JcIiAmJiBvd25Qcm9wICE9PSBcImdldE1ldGFkYXRhXCIgJiYgb3duUHJvcCAhPT0gXCJleHRlbnNpb25cIikge1xuXHRcdFx0XHRjb25zdCBmblByb3AgPSAodGhpcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbb3duUHJvcF07XG5cdFx0XHRcdGlmIChmblByb3AgJiYgdHlwZW9mIGZuUHJvcCA9PT0gXCJmdW5jdGlvblwiICYmICEoZm5Qcm9wIGFzIHsgZ2V0TWV0YWRhdGE/OiBGdW5jdGlvbiB9KS5nZXRNZXRhZGF0YSkge1xuXHRcdFx0XHRcdCh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvd25Qcm9wXSA9ICguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IG93bmVyQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0VmlldygpKTtcblx0XHRcdFx0XHRcdGlmIChvd25lckNvbXBvbmVudCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb3duZXJDb21wb25lbnQucnVuQXNPd25lcigoKSA9PiBmblByb3AuYXBwbHkodGhpcywgYXJncykpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGZuUHJvcC5hcHBseSh0aGlzLCBhcmdzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwib1ZpZXdcIiwge1xuXHRcdFx0Z2V0KCk6IFZpZXcgfCB1bmRlZmluZWQge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fb1ZpZXc7XG5cdFx0XHR9LFxuXHRcdFx0c2V0KHY6IFZpZXcpIHtcblx0XHRcdFx0dGhpcy5fb1ZpZXcgPSB2O1xuXHRcdFx0XHQvLyBPbiB0aGUgaW5pdGlhbCB2aWV3IGluc3RhbnRpYXRpb24gZnJvbSBYTUwgdGhlIHRlbXBsYXRpbmcgcHJvY2VzcyBtYXkgYmUgZmluaXNoZWQgYmVmb3JlIHRoZSB2aWV3IGlzIGNvbXBsZXRlbHkgY3JlYXRlZFxuXHRcdFx0XHQvLyBXaGVuIHRoYXQgaGFwcGVucyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSByb290IGNvbnRyb2xsZXIgaXMgYXZhaWxhYmxlIG9uIHRoZSBUZW1wbGF0ZUNvbXBvbmVudFxuXHRcdFx0XHR0aGlzLmdldE93bmVyQ29tcG9uZW50KCk/LnNldFJvb3RDb250cm9sbGVyPy4odGhpcyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0b25Jbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IG9VSU1vZGVsID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbChcInVpXCIpLFxuXHRcdFx0b0ludGVybmFsTW9kZWwgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsLFxuXHRcdFx0c1BhdGggPSBgL3BhZ2VzLyR7dGhpcy5nZXRWaWV3KCkuZ2V0SWQoKX1gO1xuXG5cdFx0b1VJTW9kZWwuc2V0UHJvcGVydHkoc1BhdGgsIHtcblx0XHRcdGNvbnRyb2xzOiB7fVxuXHRcdH0pO1xuXHRcdG9JbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KHNQYXRoLCB7XG5cdFx0XHRjb250cm9sczoge30sXG5cdFx0XHRjb2xsYWJvcmF0aW9uOiB7fVxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IFwiL1wiLFxuXHRcdFx0bW9kZWw6IFwidWlcIlxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IHNQYXRoLFxuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIlxuXHRcdH0pO1xuXG5cdFx0Ly8gZm9yIHRoZSB0aW1lIGJlaW5nIHByb3ZpZGUgaXQgYWxzbyBwYWdlSW50ZXJuYWwgYXMgc29tZSBtYWNyb3MgYWNjZXNzIGl0IC0gdG8gYmUgcmVtb3ZlZFxuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IHNQYXRoLFxuXHRcdFx0bW9kZWw6IFwicGFnZUludGVybmFsXCJcblx0XHR9KTtcblx0XHR0aGlzLmdldFZpZXcoKS5zZXRNb2RlbChvSW50ZXJuYWxNb2RlbCwgXCJwYWdlSW50ZXJuYWxcIik7XG5cblx0XHQvLyBhcyB0aGUgbW9kZWwgcHJvcGFnYXRpb24gaGFwcGVucyBhZnRlciBpbml0IGJ1dCB3ZSBhY3R1YWxseSB3YW50IHRvIGFjY2VzcyB0aGUgYmluZGluZyBjb250ZXh0IGluIHRoZVxuXHRcdC8vIGluaXQgcGhhc2UgYWxyZWFkeSBzZXR0aW5nIHRoZSBtb2RlbCBoZXJlXG5cdFx0dGhpcy5nZXRWaWV3KCkuc2V0TW9kZWwob1VJTW9kZWwsIFwidWlcIik7XG5cdFx0dGhpcy5nZXRWaWV3KCkuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMucGxhY2Vob2xkZXIuYXR0YWNoSGlkZUNhbGxiYWNrKSB7XG5cdFx0XHR0aGlzLnBsYWNlaG9sZGVyLmF0dGFjaEhpZGVDYWxsYmFjaygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGV4dGVuc2lvbiBBUEkgZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqIEBwYXJhbSBpZCBQUklWQVRFXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGV4dGVuc2lvbiBBUEkuXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0Z2V0RXh0ZW5zaW9uQVBJKGlkPzogc3RyaW5nKTogRXh0ZW5zaW9uQVBJIHtcblx0XHRpZiAoIXRoaXMuZXh0ZW5zaW9uQVBJKSB7XG5cdFx0XHR0aGlzLmV4dGVuc2lvbkFQSSA9IG5ldyBFeHRlbnNpb25BUEkodGhpcywgaWQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5leHRlbnNpb25BUEk7XG5cdH1cblxuXHQvLyBXZSBzcGVjaWZ5IHRoZSBleHRlbnNpYmlsaXR5IGhlcmUgdGhlIHNhbWUgd2F5IGFzIGl0IGlzIGRvbmUgaW4gdGhlIG9iamVjdCBwYWdlIGNvbnRyb2xsZXJcblx0Ly8gc2luY2UgdGhlIHNwZWNpZmljYXRpb24gaGVyZSBvdmVycmlkZXMgaXQgYW5kIGlmIHdlIGRvIG5vdCBzcGVjaWZ5IGFueXRoaW5nIGhlcmUsIHRoZVxuXHQvLyBiZWhhdmlvciBkZWZhdWx0cyB0byBhbiBleGVjdXRlIGluc3RlYWQhXG5cdC8vIFRPRE8gVGhpcyBtYXkgbm90IGJlIGlkZWFsLCBzaW5jZSBpdCBhbHNvIGluZmx1ZW5jZXMgdGhlIGxpc3QgcmVwb3J0IGNvbnRyb2xsZXIgYnV0IGN1cnJlbnRseSBpdCdzIHRoZSBiZXN0IHNvbHV0aW9uLlxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoXCJBZnRlclwiKVxuXHRvblBhZ2VSZWFkeShfbVBhcmFtZXRlcnM6IHVua25vd24pOiB2b2lkIHtcblx0XHQvLyBBcHBseSBhcHAgc3RhdGUgb25seSBhZnRlciB0aGUgcGFnZSBpcyByZWFkeSB3aXRoIHRoZSBmaXJzdCBzZWN0aW9uIHNlbGVjdGVkXG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0QXBwU3RhdGVIYW5kbGVyKCkuYXBwbHlBcHBTdGF0ZSh2aWV3LmdldElkKCksIHZpZXcpO1xuXHR9XG5cblx0X2dldFBhZ2VUaXRsZUluZm9ybWF0aW9uKCk6IFRpdGxlSW5mb3JtYXRpb24ge1xuXHRcdHJldHVybiB7fTtcblx0fVxuXG5cdF9nZXRQYWdlTW9kZWwoKTogSlNPTk1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBwYWdlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0VmlldygpKTtcblx0XHRyZXR1cm4gcGFnZUNvbXBvbmVudD8uZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpIGFzIEpTT05Nb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVucyBvbmUgb3IgbW9yZSBuZXcgdGFicyB3aXRoIHRoZSBnaXZlbiBvdXRib3VuZCB0YXJnZXQgZm9yIHRoZSBzZWxlY3RlZCBjb250ZXh0cy5cblx0ICogQHBhcmFtIG91dGJvdW5kVGFyZ2V0IFRoZSBvdXRib3VuZCB0YXJnZXRcblx0ICogQHBhcmFtIGNvbnRleHRzIFRoZSBzZWxlY3RlZCBjb250ZXh0c1xuXHQgKiBAcGFyYW0gY3JlYXRlUGF0aCBUaGUgY3JlYXRlIHBhdGhcblx0ICogQHBhcmFtIG1heE51bWJlck9mU2VsZWN0ZWRJdGVtcyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXNcblx0ICovXG5cdG9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZChcblx0XHRvdXRib3VuZFRhcmdldDogc3RyaW5nLFxuXHRcdGNvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0Y3JlYXRlUGF0aDogc3RyaW5nLFxuXHRcdG1heE51bWJlck9mU2VsZWN0ZWRJdGVtczogbnVtYmVyXG5cdCk6IHZvaWQge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdGlmIChjb250ZXh0cy5sZW5ndGggPD0gbWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zKSB7XG5cdFx0XHRjb250ZXh0cy5mb3JFYWNoKGZ1bmN0aW9uIChjb250ZXh0OiBDb250ZXh0KSB7XG5cdFx0XHRcdHRoYXQuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5vbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQodGhhdCwgb3V0Ym91bmRUYXJnZXQsIGNvbnRleHQsIGNyZWF0ZVBhdGgsIFwiZXhwbGFjZVwiKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94Lndhcm5pbmcoXG5cdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiVF9UQUJMRV9OQVZJR0FUSU9OX1RPT19NQU5ZX0lURU1TX1NFTEVDVEVEXCIsIFtcblx0XHRcdFx0XHRtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXNcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgbmFtZSBvZiB0aGUgcGFnZSBhcyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCByb3V0aW5nIHNlY3Rpb24uXG5cdCAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBwYWdlXG5cdCAqL1xuXHRnZXRSb3V0aW5nVGFyZ2V0TmFtZSgpOiBzdHJpbmcge1xuXHRcdGlmICghdGhpcy5yb3V0aW5nVGFyZ2V0TmFtZSkge1xuXHRcdFx0dGhpcy5yb3V0aW5nVGFyZ2V0TmFtZSA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um91dGluZ1NlcnZpY2UoKS5nZXRUYXJnZXROYW1lRm9yVmlldyh0aGlzLmdldFZpZXcoKSkgPz8gXCJcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMucm91dGluZ1RhcmdldE5hbWU7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGZvcndhcmQgc2V0U2hvd0Zvb3RlciBvbiB0aGUgZmlyc3QgY29udGVudCBvZiB0aGUgdmlldyBpZiByZWNvZ25pemVkLlxuXHQgKiBAcGFyYW0gc2hvd1xuXHQgKi9cblx0c2V0U2hvd0Zvb3RlcihzaG93ID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBwYWdlID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udGVudCgpWzBdO1xuXHRcdGlmIChwYWdlLmlzQTxEeW5hbWljUGFnZT4oXCJzYXAuZi5EeW5hbWljUGFnZVwiKSB8fCBwYWdlLmlzQTxPYmplY3RQYWdlTGF5b3V0PihcInNhcC51eGFwLk9iamVjdFBhZ2VMYXlvdXRcIikpIHtcblx0XHRcdHBhZ2Uuc2V0U2hvd0Zvb3RlcihzaG93KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGdldCB0aGUgZm9vdGVyLlxuXHQgKiBAcmV0dXJucyBUaGUgZm9vdGVyIG9mIHRoZSBwYWdlIGlmIGl0IGV4aXN0c1xuXHQgKi9cblx0Z2V0Rm9vdGVyKCk6IENvbnRyb2wgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHBhZ2UgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250ZW50KClbMF07XG5cdFx0aWYgKHBhZ2UuaXNBPER5bmFtaWNQYWdlPihcInNhcC5mLkR5bmFtaWNQYWdlXCIpIHx8IHBhZ2UuaXNBPE9iamVjdFBhZ2VMYXlvdXQ+KFwic2FwLnV4YXAuT2JqZWN0UGFnZUxheW91dFwiKSkge1xuXHRcdFx0cmV0dXJuIHBhZ2UuZ2V0Rm9vdGVyKCkgYXMgdW5rbm93biBhcyBDb250cm9sO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2VDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztFQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEEsSUFTTUEsY0FBYyxJQUFBQyxJQUFBLEdBRG5CQyxjQUFjLENBQUMsNEJBQTRCLENBQUMsRUFBQUMsS0FBQSxHQUUzQ0MsY0FBYyxDQUFDQyxPQUFPLENB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
@@ -23,6 +23,7 @@ import MessageBox from "sap/m/MessageBox";
23
23
  import Component from "sap/ui/core/Component";
24
24
  import Library from "sap/ui/core/Lib";
25
25
  import type View from "sap/ui/core/mvc/View";
26
+ import type Control from "sap/ui/mdc/Control";
26
27
  import type JSONModel from "sap/ui/model/json/JSONModel";
27
28
  import type Context from "sap/ui/model/odata/v4/Context";
28
29
  import type ObjectPageLayout from "sap/uxap/ObjectPageLayout";
@@ -260,6 +261,18 @@ class PageController extends BaseController {
260
261
  page.setShowFooter(show);
261
262
  }
262
263
  }
264
+
265
+ /**
266
+ * Method to get the footer.
267
+ * @returns The footer of the page if it exists
268
+ */
269
+ getFooter(): Control | undefined {
270
+ const page = this.getView().getContent()[0];
271
+ if (page.isA<DynamicPage>("sap.f.DynamicPage") || page.isA<ObjectPageLayout>("sap.uxap.ObjectPageLayout")) {
272
+ return page.getFooter() as unknown as Control;
273
+ }
274
+ return undefined;
275
+ }
263
276
  }
264
277
 
265
278
  export default PageController;