@sapui5/sap.fe.macros 1.140.0 → 1.141.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 (199) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Chart.js +53 -2
  4. package/src/sap/fe/macros/Chart.tsx +55 -0
  5. package/src/sap/fe/macros/CollaborativeDraftHandler.js +230 -0
  6. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +218 -0
  7. package/src/sap/fe/macros/CommonHelper.js +59 -15
  8. package/src/sap/fe/macros/CommonHelper.ts +65 -14
  9. package/src/sap/fe/macros/ConditionalSwitch.js +174 -0
  10. package/src/sap/fe/macros/ConditionalSwitch.tsx +141 -0
  11. package/src/sap/fe/macros/ConditionalSwitchProperty.js +78 -0
  12. package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +62 -0
  13. package/src/sap/fe/macros/Field.js +14 -10
  14. package/src/sap/fe/macros/Field.ts +15 -12
  15. package/src/sap/fe/macros/MacroAPI.js +9 -4
  16. package/src/sap/fe/macros/MacroAPI.ts +9 -4
  17. package/src/sap/fe/macros/MultiValueField.js +10 -5
  18. package/src/sap/fe/macros/MultiValueField.tsx +7 -1
  19. package/src/sap/fe/macros/Page.js +5 -7
  20. package/src/sap/fe/macros/Page.tsx +4 -6
  21. package/src/sap/fe/macros/Paginator.js +9 -4
  22. package/src/sap/fe/macros/Paginator.tsx +12 -3
  23. package/src/sap/fe/macros/RichTextEditor.js +3 -2
  24. package/src/sap/fe/macros/RichTextEditor.tsx +2 -1
  25. package/src/sap/fe/macros/Status.js +38 -13
  26. package/src/sap/fe/macros/Status.tsx +26 -6
  27. package/src/sap/fe/macros/ai/EasyFillDialog.js +11 -17
  28. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +11 -16
  29. package/src/sap/fe/macros/ai/EasyFilterBar.js +195 -55
  30. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +234 -57
  31. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +76 -33
  32. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +89 -40
  33. package/src/sap/fe/macros/chart/Chart.js +2 -2
  34. package/src/sap/fe/macros/chart/Chart.tsx +1 -1
  35. package/src/sap/fe/macros/chart/MdcChartTemplate.js +4 -2
  36. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +4 -1
  37. package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.js +9 -2
  38. package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.tsx +8 -0
  39. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
  40. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
  41. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +2 -2
  42. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +1 -1
  43. package/src/sap/fe/macros/controls/FilterBar.js +14 -5
  44. package/src/sap/fe/macros/controls/FilterBar.ts +3 -0
  45. package/src/sap/fe/macros/controls/RadioButtons.js +61 -38
  46. package/src/sap/fe/macros/controls/RadioButtons.tsx +39 -18
  47. package/src/sap/fe/macros/controls/Section.js +4 -3
  48. package/src/sap/fe/macros/controls/Section.ts +3 -2
  49. package/src/sap/fe/macros/controls/section/SubSection.js +63 -8
  50. package/src/sap/fe/macros/controls/section/SubSection.ts +67 -1
  51. package/src/sap/fe/macros/field/Field.js +2 -2
  52. package/src/sap/fe/macros/field/Field.tsx +1 -1
  53. package/src/sap/fe/macros/field/FieldFormatOptions.js +25 -2
  54. package/src/sap/fe/macros/field/FieldFormatOptions.ts +13 -0
  55. package/src/sap/fe/macros/field/FieldHelper.js +2 -2
  56. package/src/sap/fe/macros/field/FieldHelper.ts +1 -4
  57. package/src/sap/fe/macros/field/FieldTemplating.js +3 -3
  58. package/src/sap/fe/macros/field/FieldTemplating.ts +4 -2
  59. package/src/sap/fe/macros/filter/FilterUtils.js +232 -2
  60. package/src/sap/fe/macros/filter/FilterUtils.ts +290 -4
  61. package/src/sap/fe/macros/filterBar/FilterBar.block.js +5 -3
  62. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +4 -2
  63. package/src/sap/fe/macros/filterBar/FilterBar.js +2 -2
  64. package/src/sap/fe/macros/filterBar/FilterBar.tsx +1 -1
  65. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +63 -27
  66. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +49 -3
  67. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +5 -3
  68. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
  69. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +7 -2
  70. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +6 -1
  71. package/src/sap/fe/macros/form/Form.block.js +7 -8
  72. package/src/sap/fe/macros/form/Form.block.ts +4 -6
  73. package/src/sap/fe/macros/form/FormContainer.block.js +555 -4
  74. package/src/sap/fe/macros/form/FormContainer.block.ts +665 -6
  75. package/src/sap/fe/macros/form/FormContainer.fragment.xml +1 -0
  76. package/src/sap/fe/macros/form/FormDelegate.js +6 -9
  77. package/src/sap/fe/macros/form/FormDelegate.ts +5 -8
  78. package/src/sap/fe/macros/internal/DataPoint.js +3 -2
  79. package/src/sap/fe/macros/internal/DataPoint.tsx +10 -1
  80. package/src/sap/fe/macros/internal/FilterField.block.js +16 -8
  81. package/src/sap/fe/macros/internal/FilterField.block.ts +11 -7
  82. package/src/sap/fe/macros/internal/field/DisplayStyle.js +7 -1
  83. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +8 -0
  84. package/src/sap/fe/macros/internal/field/EditStyle.js +21 -4
  85. package/src/sap/fe/macros/internal/field/EditStyle.tsx +18 -4
  86. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +3 -2
  87. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +4 -1
  88. package/src/sap/fe/macros/internal/filterField/FilterFieldTemplate.fragment.xml +1 -0
  89. package/src/sap/fe/macros/internal/helpers/ActionHelper.js +36 -5
  90. package/src/sap/fe/macros/internal/helpers/ActionHelper.ts +34 -4
  91. package/src/sap/fe/macros/library.js +1 -1
  92. package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.js +2 -1
  93. package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.ts +1 -0
  94. package/src/sap/fe/macros/messagebundle.properties +20 -2
  95. package/src/sap/fe/macros/messagebundle_ar.properties +1 -1
  96. package/src/sap/fe/macros/messagebundle_bg.properties +1 -1
  97. package/src/sap/fe/macros/messagebundle_ca.properties +1 -1
  98. package/src/sap/fe/macros/messagebundle_cnr.properties +1 -1
  99. package/src/sap/fe/macros/messagebundle_cs.properties +1 -1
  100. package/src/sap/fe/macros/messagebundle_cy.properties +1 -1
  101. package/src/sap/fe/macros/messagebundle_da.properties +1 -1
  102. package/src/sap/fe/macros/messagebundle_de.properties +4 -4
  103. package/src/sap/fe/macros/messagebundle_el.properties +1 -1
  104. package/src/sap/fe/macros/messagebundle_en.properties +1 -1
  105. package/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
  106. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +1 -1
  107. package/src/sap/fe/macros/messagebundle_es.properties +2 -2
  108. package/src/sap/fe/macros/messagebundle_es_MX.properties +1 -1
  109. package/src/sap/fe/macros/messagebundle_et.properties +1 -1
  110. package/src/sap/fe/macros/messagebundle_fi.properties +1 -1
  111. package/src/sap/fe/macros/messagebundle_fr.properties +1 -1
  112. package/src/sap/fe/macros/messagebundle_fr_CA.properties +1 -1
  113. package/src/sap/fe/macros/messagebundle_hi.properties +1 -1
  114. package/src/sap/fe/macros/messagebundle_hr.properties +1 -1
  115. package/src/sap/fe/macros/messagebundle_hu.properties +1 -1
  116. package/src/sap/fe/macros/messagebundle_id.properties +5 -5
  117. package/src/sap/fe/macros/messagebundle_it.properties +1 -1
  118. package/src/sap/fe/macros/messagebundle_iw.properties +1 -1
  119. package/src/sap/fe/macros/messagebundle_ja.properties +5 -5
  120. package/src/sap/fe/macros/messagebundle_kk.properties +1 -1
  121. package/src/sap/fe/macros/messagebundle_ko.properties +2 -2
  122. package/src/sap/fe/macros/messagebundle_lt.properties +2 -2
  123. package/src/sap/fe/macros/messagebundle_lv.properties +1 -1
  124. package/src/sap/fe/macros/messagebundle_mk.properties +2 -2
  125. package/src/sap/fe/macros/messagebundle_ms.properties +1 -1
  126. package/src/sap/fe/macros/messagebundle_nl.properties +1 -1
  127. package/src/sap/fe/macros/messagebundle_no.properties +1 -1
  128. package/src/sap/fe/macros/messagebundle_pl.properties +1 -1
  129. package/src/sap/fe/macros/messagebundle_pt.properties +1 -1
  130. package/src/sap/fe/macros/messagebundle_pt_PT.properties +1 -1
  131. package/src/sap/fe/macros/messagebundle_ro.properties +1 -1
  132. package/src/sap/fe/macros/messagebundle_ru.properties +1 -1
  133. package/src/sap/fe/macros/messagebundle_sh.properties +1 -1
  134. package/src/sap/fe/macros/messagebundle_sk.properties +1 -1
  135. package/src/sap/fe/macros/messagebundle_sl.properties +1 -1
  136. package/src/sap/fe/macros/messagebundle_sr.properties +1 -1
  137. package/src/sap/fe/macros/messagebundle_sv.properties +1 -1
  138. package/src/sap/fe/macros/messagebundle_th.properties +1 -1
  139. package/src/sap/fe/macros/messagebundle_tr.properties +1 -1
  140. package/src/sap/fe/macros/messagebundle_uk.properties +1 -1
  141. package/src/sap/fe/macros/messagebundle_vi.properties +2 -2
  142. package/src/sap/fe/macros/messagebundle_zh_CN.properties +1 -1
  143. package/src/sap/fe/macros/messagebundle_zh_TW.properties +1 -1
  144. package/src/sap/fe/macros/messages/MessageButton.js +1 -1
  145. package/src/sap/fe/macros/messages/MessageButton.ts +2 -2
  146. package/src/sap/fe/macros/messages/MessagePopover.js +3 -1
  147. package/src/sap/fe/macros/messages/MessagePopover.ts +2 -0
  148. package/src/sap/fe/macros/microchart/MicroChart.js +2 -2
  149. package/src/sap/fe/macros/microchart/MicroChart.tsx +1 -1
  150. package/src/sap/fe/macros/microchart/MicroChartHelper.js +2 -2
  151. package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +1 -1
  152. package/src/sap/fe/macros/table/ActionsTemplating.js +4 -8
  153. package/src/sap/fe/macros/table/ActionsTemplating.tsx +5 -8
  154. package/src/sap/fe/macros/table/BasicSearch.js +1 -1
  155. package/src/sap/fe/macros/table/BasicSearch.ts +2 -1
  156. package/src/sap/fe/macros/table/Column.js +14 -2
  157. package/src/sap/fe/macros/table/Column.ts +7 -0
  158. package/src/sap/fe/macros/table/ColumnExportSettings.js +83 -15
  159. package/src/sap/fe/macros/table/ColumnExportSettings.ts +44 -0
  160. package/src/sap/fe/macros/table/ColumnOverride.js +14 -2
  161. package/src/sap/fe/macros/table/ColumnOverride.ts +7 -0
  162. package/src/sap/fe/macros/table/MdcTableTemplate.js +5 -5
  163. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +15 -9
  164. package/src/sap/fe/macros/table/QuickFilterSelector.js +12 -3
  165. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +15 -2
  166. package/src/sap/fe/macros/table/Table.block.js +188 -147
  167. package/src/sap/fe/macros/table/Table.block.tsx +41 -11
  168. package/src/sap/fe/macros/table/Table.js +16 -10
  169. package/src/sap/fe/macros/table/Table.tsx +16 -10
  170. package/src/sap/fe/macros/table/TableAPI.js +224 -184
  171. package/src/sap/fe/macros/table/TableAPI.ts +63 -19
  172. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -6
  173. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +5 -4
  174. package/src/sap/fe/macros/table/TableHelper.js +2 -2
  175. package/src/sap/fe/macros/table/TableHelper.ts +1 -1
  176. package/src/sap/fe/macros/table/TreeTable.js +16 -10
  177. package/src/sap/fe/macros/table/TreeTable.tsx +16 -10
  178. package/src/sap/fe/macros/table/Utils.js +3 -2
  179. package/src/sap/fe/macros/table/Utils.ts +7 -2
  180. package/src/sap/fe/macros/table/delegates/TableDelegate.js +69 -33
  181. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +75 -32
  182. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
  183. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
  184. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -12
  185. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +11 -10
  186. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +34 -4
  187. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +45 -2
  188. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +55 -12
  189. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +71 -9
  190. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +53 -2
  191. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +55 -0
  192. package/src/sap/fe/macros/table/mixin/TableExport.js +22 -3
  193. package/src/sap/fe/macros/table/mixin/TableExport.ts +25 -4
  194. package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
  195. package/src/sap/fe/macros/table/mixin/TableSharing.ts +4 -3
  196. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +27 -10
  197. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +31 -13
  198. package/src/sap/fe/macros/visualfilters/VisualFilter.js +5 -3
  199. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +3 -1
@@ -97,7 +97,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/HookSupport", "sap/fe/core/CommonUti
97
97
  };
98
98
  _proto.collectAvailableCards = async function collectAvailableCards(cards) {
99
99
  const actionToolbarItems = this.getContent().getActions();
100
- const isFclModeObjectPageOpen = this.getPageController()?.getAppComponent()?.getRootViewController()?.getRightmostView()?.getViewData()?.converterType === "ObjectPage";
100
+ const appComponent = this.getPageController()?.getAppComponent();
101
+ const isFclModeObjectPageOpen = appComponent?._isFclEnabled() ? appComponent?.getRootViewController()?.getRightmostView?.()?.getViewData()?.converterType === "ObjectPage" : false;
101
102
  if (hasInsightActionEnabled(actionToolbarItems, this.getContent().getFilter(), TableInsightsHelper.getInsightsRelevantColumns(this)) && !isFclModeObjectPageOpen) {
102
103
  const card = await this.getCardManifestTable();
103
104
  if (Object.keys(card).length > 0) {
@@ -220,4 +221,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/HookSupport", "sap/fe/core/CommonUti
220
221
  _exports = TableSharing;
221
222
  return _exports;
222
223
  }, false);
223
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZVNoYXJpbmciLCJfZGVjIiwiY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIiLCJfY2xhc3MiLCJfZXhwb3J0cyIsIl9wcm90byIsInByb3RvdHlwZSIsInNldHVwTWl4aW4iLCJfYmFzZUNsYXNzIiwiX29uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MiLCJjb250cm9sbGVyIiwiY29udGV4dHMiLCJtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiY29udGV4dCIsInRhcmdldFBhdGgiLCJnZXRVcmxGb3JDb2xsYWJvcmF0aW9uTWFuYWdlciIsImlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJhcHBUaXRsZSIsImdldE1hbmlmZXN0RW50cnkiLCJ0aXRsZSIsImNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiY29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIiwiY29sbGFib3JhdGlvblNlcnZpY2UiLCJjbUhlbHBlclNlcnZpY2UiLCJ0cmlnZ2VySDJIQ2hhdCIsIk1lc3NhZ2VCb3giLCJ3YXJuaW5nIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZ2V0VGV4dCIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJnZXRDb250ZW50IiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiZ2V0Q29udHJvbGxlciIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiaXNEcmFmdCIsIk1vZGVsSGVscGVyIiwiaXNEcmFmdFN1cHBvcnRlZCIsImdldFBhdGgiLCJpc0NvbGxhYm9yYXRpb25FbmFibGVkIiwiZ2V0T2JqZWN0IiwiSXNBY3RpdmVFbnRpdHkiLCJIYXNBY3RpdmVFbnRpdHkiLCJ1bmRlZmluZWQiLCJwYXRoIiwicm9vdFBhdGgiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwicm9vdENvbnRleHQiLCJiaW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInNpYmxpbmdJbmZvIiwiZHJhZnQiLCJjb21wdXRlU2libGluZ0luZm9ybWF0aW9uIiwidGFyZ2V0Q29udGV4dCIsIl9pc0ZjbEVuYWJsZWQiLCJsYXlvdXQiLCJnZXRGQ0xMYXlvdXRGb3JDTSIsImhhc2hDaGFuZ2VySW5zdGFuY2UiLCJIYXNoQ2hhbmdlciIsImdldEluc3RhbmNlIiwic0Jhc2VQYXRoIiwiaHJlZkZvckFwcFNwZWNpZmljSGFzaCIsIndpbmRvdyIsImxvY2F0aW9uIiwib3JpZ2luIiwicGF0aG5hbWUiLCJzZWFyY2giLCJGQ0xMZXZlbCIsIl9yb3V0aW5nIiwiZ2V0RkNMTGV2ZWwiLCJnZXRSb290Vmlld0NvbnRyb2xsZXIiLCJnZXRGY2xDb25maWciLCJtYXhDb2x1bW5zQ291bnQiLCJjb2xsZWN0QXZhaWxhYmxlQ2FyZHMiLCJjYXJkcyIsImFjdGlvblRvb2xiYXJJdGVtcyIsImdldEFjdGlvbnMiLCJpc0ZjbE1vZGVPYmplY3RQYWdlT3BlbiIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0UmlnaHRtb3N0VmlldyIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsImhhc0luc2lnaHRBY3Rpb25FbmFibGVkIiwiZ2V0RmlsdGVyIiwiVGFibGVJbnNpZ2h0c0hlbHBlciIsImdldEluc2lnaHRzUmVsZXZhbnRDb2x1bW5zIiwiY2FyZCIsImdldENhcmRNYW5pZmVzdFRhYmxlIiwiT2JqZWN0Iiwia2V5cyIsInB1c2giLCJnZXRUYWJsZURlZmluaXRpb24iLCJoZWFkZXJJbmZvVHlwZU5hbWUiLCJjYWxsYmFjayIsIm9uQWRkQ2FyZFRvQ29sbGFib3JhdGlvbk1hbmFnZXJDYWxsYmFjayIsImJpbmQiLCJpbnNpZ2h0c1JlbGV2YW50Q29sdW1ucyIsImluc2lnaHRzUGFyYW1zIiwiY3JlYXRlVGFibGVDYXJkUGFyYW1zIiwiZ2V0U29ydENvbmRpdGlvbnNRdWVyeSIsIkluc2lnaHRzU2VydmljZSIsImdldENhcmRNYW5pZmVzdCIsInNob3dDb2xsYWJvcmF0aW9uTWFuYWdlckNhcmRQcmV2aWV3IiwiY29sbGFib3JhdGlvbk1hbmFnZXIiLCJnZXRTZXJ2aWNlIiwiZSIsInNob3dHZW5lcmljRXJyb3JNZXNzYWdlIiwiTG9nIiwiZXJyb3IiLCJfb25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQiLCJtZXNzYWdlIiwicGFyYW1ldGVycyIsImlzTmF2aWdhdGlvbkVuYWJsZWQiLCJ0eXBlIiwidGV4dCIsImNyZWF0ZU5hdmlnYXRpb25FcnJvck1lc3NhZ2UiLCJzaG93SW5zaWdodHNDYXJkUHJldmlldyIsInNjb3BlIiwicmVzb3VyY2VNb2RlbCIsIlJlc291cmNlTW9kZWxIZWxwZXIiLCJnZXRSZXNvdXJjZU1vZGVsIiwiZ2V0RG93bmxvYWRVcmxXaXRoRmlsdGVycyIsInRhYmxlIiwiZmlsdGVyQmFyIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwiRXJyb3IiLCJiaW5kaW5nIiwiZ2V0Um93QmluZGluZyIsIm1vZGVsIiwiZmlsdGVyUHJvcFNWIiwiZ2V0UGFyZW50IiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsImZpbHRlcnNXaXRoU2VtYW50aWNEYXRlT3BzSW5mbyIsIlNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImdldFNlbWFudGljT3BzRmlsdGVyUHJvcGVydGllcyIsIl9nZXRTZWxlY3RPcHRpb25zIiwiZmlsdGVyc1dpdGhvdXRTZW1hbnRpY0RhdGVPcHMiLCJUYWJsZVV0aWxzIiwiZ2V0QWxsRmlsdGVySW5mbyIsIm1hcCIsImZpbHRlckluZm8iLCJmaWx0ZXJOYW1lIiwicHJvcGVydGllc0luZm8iLCJnZXRQcm9wZXJ0eUluZm9TZXQiLCJmbHBNYXBwZWRQbGFjZWhvbGRlcnMiLCJzZW1hbnRpY0RhdGVGaWx0ZXJzIiwiZ2V0U2VtYW50aWNEYXRlRmlsdGVyc1dpdGhGbHBQbGFjZWhvbGRlcnMiLCJhbGxSZWxldmFudEZpbHRlcnMiLCJmaWx0ZXJzIiwiY29uY2F0IiwiYWxsRmlsdGVycyIsIkZpbHRlciIsImFuZCIsIiRzZWFyY2giLCJub3JtYWxpemVTZWFyY2hUZXJtIiwiZ2V0U2VhcmNoIiwidGVtcFRhYmxlQmluZGluZyIsImJpbmRMaXN0IiwidXJsIiwicmVxdWVzdERvd25sb2FkVXJsIiwicGxhY2Vob2xkZXIiLCJ2YWx1ZSIsImVudHJpZXMiLCJyZXBsYWNlIiwic29ydENvbmRpdGlvbnMiLCJnZXRTb3J0Q29uZGl0aW9ucyIsInNvcnRlcnMiLCJzb3J0Q29uZGl0aW9uIiwic29ydENvbmRpdGlvbnNQYXRoIiwiZ2V0UHJvcGVydHlIZWxwZXIiLCJnZXRQcm9wZXJ0eSIsIm5hbWUiLCJkZXNjZW5kaW5nIiwiam9pbiIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlU2hhcmluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgSUludGVyZmFjZVdpdGhNaXhpbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9iYXNlL0hvb2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgZHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2VkaXRGbG93L2RyYWZ0XCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBSZXNvdXJjZU1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEZjbENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL3Jvb3RWaWV3L0ZjbC5jb250cm9sbGVyXCI7XG5pbXBvcnQgeyB0eXBlIFdyYXBwZWRDYXJkIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgeyBoYXNJbnNpZ2h0QWN0aW9uRW5hYmxlZCwgc2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnNpZ2h0cy9Db21tb25JbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnNpZ2h0c1BhcmFtcywgVGFibGVDb250ZW50IH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW5zaWdodHMvSW5zaWdodHNTZXJ2aWNlXCI7XG5pbXBvcnQgKiBhcyBJbnNpZ2h0c1NlcnZpY2UgZnJvbSBcInNhcC9mZS9tYWNyb3MvaW5zaWdodHMvSW5zaWdodHNTZXJ2aWNlXCI7XG5pbXBvcnQgKiBhcyBUYWJsZUluc2lnaHRzSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2luc2lnaHRzL1RhYmxlSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCBUYWJsZVV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENhcmRNYW5pZmVzdCwgQ2FyZE1lc3NhZ2UgfSBmcm9tIFwic2FwL2luc2lnaHRzL0NhcmRIZWxwZXJcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IEhhc2hDaGFuZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9yb3V0aW5nL0hhc2hDaGFuZ2VyXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Ub29sYmFyQWN0aW9uIGZyb20gXCJzYXAvdWkvbWRjL2FjdGlvbnRvb2xiYXIvQWN0aW9uVG9vbGJhckFjdGlvblwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgU2VtYW50aWNEYXRlT3BlcmF0b3JzIGZyb20gXCIuLi8uLi9maWx0ZXJCYXIvU2VtYW50aWNEYXRlT3BlcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIElUYWJsZUJsb2NrIH0gZnJvbSBcIi4uL1RhYmxlQVBJXCI7XG5cbnR5cGUgU29ydENvbmRpdGlvbnMgPSB7XG5cdHNvcnRlcnM6IHtcblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0ZGVzY2VuZGluZzogYm9vbGVhbjtcblx0fVtdO1xufTtcblxuLyoqXG4gKiBBIG1peGluIHRvIG1hbmFnZSBhbGwgc2hhcmluZyByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIChpbmNsdWRpbmcgaW5zaWdodCBjYXJkcylcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVTaGFyaW5nIGltcGxlbWVudHMgSUludGVyZmFjZVdpdGhNaXhpbiB7XG5cdHNldHVwTWl4aW4oX2Jhc2VDbGFzczogRnVuY3Rpb24pOiB2b2lkIHt9XG5cblx0X29uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MoXG5cdFx0dGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZVNoYXJpbmcsXG5cdFx0Y29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsXG5cdFx0Y29udGV4dHM6IENvbnRleHRbXSxcblx0XHRtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXM6IG51bWJlclxuXHQpOiB2b2lkIHtcblx0XHRpZiAoY29udGV4dHMubGVuZ3RoIDw9IG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtcykge1xuXHRcdFx0Y29udGV4dHMuZm9yRWFjaChhc3luYyAoY29udGV4dDogQ29udGV4dCkgPT4ge1xuXHRcdFx0XHRjb25zdCB0YXJnZXRQYXRoID0gYXdhaXQgdGhpcy5nZXRVcmxGb3JDb2xsYWJvcmF0aW9uTWFuYWdlcihjb250ZXh0KTtcblx0XHRcdFx0aWYgKHRoaXMuaXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZShjb250ZXh0KSAmJiB0YXJnZXRQYXRoKSB7XG5cdFx0XHRcdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRcdFx0XHRjb25zdCBhcHBUaXRsZSA9IGFwcENvbXBvbmVudC5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmFwcFwiKS50aXRsZTtcblx0XHRcdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlID0gYXBwQ29tcG9uZW50Py5nZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk7XG5cdFx0XHRcdFx0Y29uc3QgY29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlID0gY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZT8uY29sbGFib3JhdGlvblNlcnZpY2UuY21IZWxwZXJTZXJ2aWNlO1xuXHRcdFx0XHRcdGNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZT8udHJpZ2dlckgySENoYXQoYXBwVGl0bGUsIHRhcmdldFBhdGgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE1lc3NhZ2VCb3gud2FybmluZyhcblx0XHRcdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFxuXHRcdFx0XHRcdFx0XHRcIlRfVEFCTEVfU0hBUkVfVE9fQ09MTEFCT1JBVElPTl9NQU5BR0VSX05PX05BVklHQVRJT05fUE9TU0lCTEVcIlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94Lndhcm5pbmcoXG5cdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiVF9UQUJMRV9TSEFSRV9UT19DT0xMQUJPUkFUSU9OX01BTkFHRVJfVE9PX01BTllfSVRFTVNfU0VMRUNURURcIiwgW1xuXHRcdFx0XHRcdG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtc1xuXHRcdFx0XHRdKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBVUkwgZm9yIFNBUCBDb2xsYWJvcmF0aW9uIE1hbmFnZXIuIFdlIGFsd2F5cyBnbyB0byB0aGUgYWN0aXZlIHZlcnNpb24sIGFsc28gZnJvbSBkcmFmdCB2ZXJzaW9uLiBJZiB0aGVyZSBpcyBubyBhY3RpdmUgdmVyc2lvbiB5ZXQsIHdlIGRvIG5vdCBzaGFyZSBhIGxpbmsuXG5cdCAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IGZvciB3aGljaCB0aGUgVVJMIGlzIHRvIGJlIGdlbmVyYXRlZFxuXHQgKiBAcmV0dXJucyBUaGUgVVJMIGZvciBTQVAgQ29sbGFib3JhdGlvbiBNYW5hZ2VyXG5cdCAqL1xuXHRhc3luYyBnZXRVcmxGb3JDb2xsYWJvcmF0aW9uTWFuYWdlcih0aGlzOiBJVGFibGVCbG9jayAmIFRhYmxlU2hhcmluZywgY29udGV4dDogQ29udGV4dCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG5cdFx0bGV0IHRhcmdldFBhdGg7XG5cdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcy5nZXRDb250ZW50KCkpO1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVEcmFmdCA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLmNvbGxhYm9yYXRpdmVEcmFmdDtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBjb250ZXh0LmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGlzRHJhZnQgPSBNb2RlbEhlbHBlci5pc0RyYWZ0U3VwcG9ydGVkKG1ldGFNb2RlbCwgY29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdGlmIChpc0RyYWZ0ICYmICFjb2xsYWJvcmF0aXZlRHJhZnQuaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCgpICYmIGNvbnRleHQuZ2V0T2JqZWN0KCkuSXNBY3RpdmVFbnRpdHkgPT09IGZhbHNlKSB7XG5cdFx0XHRpZiAoY29udGV4dC5nZXRPYmplY3QoKS5IYXNBY3RpdmVFbnRpdHkgPT09IGZhbHNlKSB7XG5cdFx0XHRcdC8vIHdlIGhhdmUgYSBkcmFmdCBlbnRpdHkgd2l0aCBubyBhY3RpdmUgdmVyc2lvblxuXHRcdFx0XHQvLyB3ZSBkbyBub3Qgc3VwcG9ydCB0aGlzIGZvciBDb2xsYWJvcmF0aW9uIE1hbmFnZXJcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHdlIGhhdmUgYSBkcmFmdCBlbnRpdHkgd2l0aCBhbiBhY3RpdmUgdmVyc2lvbiBhbmQgbmVlZCB0byBjb252ZXJ0IHRoZSBwYXRoIHRvIGFuIGFjdGl2ZSBwYXRoXG5cdFx0XHRcdGNvbnN0IHBhdGggPSBjb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdFx0Y29uc3Qgcm9vdFBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmluZGV4T2YoXCIvXCIsIDEpKTtcblx0XHRcdFx0Y29uc3Qgcm9vdENvbnRleHQgPSByb290UGF0aCA/IGNvbnRleHQuZ2V0TW9kZWwoKS5iaW5kQ29udGV4dChyb290UGF0aCkuZ2V0Qm91bmRDb250ZXh0KCkgOiBjb250ZXh0O1xuXHRcdFx0XHRjb25zdCBzaWJsaW5nSW5mbyA9IGF3YWl0IGRyYWZ0LmNvbXB1dGVTaWJsaW5nSW5mb3JtYXRpb24ocm9vdENvbnRleHQsIGNvbnRleHQpO1xuXHRcdFx0XHR0YXJnZXRQYXRoID0gc2libGluZ0luZm8/LnRhcmdldENvbnRleHQ/LmdldFBhdGgoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gd2UgaGF2ZSBhbiBhY3RpdmUgZW50aXR5IG9yIGEgY29sbGFib3JhdGl2ZSBkcmFmdCBvciBhIG5vbi1kcmFmdCBwcm9ncmFtbWluZyBtb2RlbFxuXHRcdFx0dGFyZ2V0UGF0aCA9IGNvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdH1cblxuXHRcdGlmICh0YXJnZXRQYXRoKSB7XG5cdFx0XHRpZiAodGFyZ2V0UGF0aFswXSA9PT0gXCIvXCIpIHtcblx0XHRcdFx0dGFyZ2V0UGF0aCA9IHRhcmdldFBhdGguc3Vic3RyaW5nKDEpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuZ2V0Q29udGVudCgpKTtcblx0XHRcdGlmIChhcHBDb21wb25lbnQuX2lzRmNsRW5hYmxlZCgpKSB7XG5cdFx0XHRcdGNvbnN0IGxheW91dCA9IHRoaXMuZ2V0RkNMTGF5b3V0Rm9yQ00oYXBwQ29tcG9uZW50KTtcblx0XHRcdFx0dGFyZ2V0UGF0aCArPSBgP2xheW91dD0ke2xheW91dH1gO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaGFzaENoYW5nZXJJbnN0YW5jZSA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCk7XG5cdFx0XHRjb25zdCBzQmFzZVBhdGggPSBoYXNoQ2hhbmdlckluc3RhbmNlLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2ggPyBoYXNoQ2hhbmdlckluc3RhbmNlLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2goXCJcIikgOiBcIlwiO1xuXHRcdFx0cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoICsgc0Jhc2VQYXRoICsgdGFyZ2V0UGF0aDtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBGb3IgJ1NoYXJlIHRvIFNBUCBDb2xsYWJvcmF0aW9uIE1hbmFnZXInLCB3ZSBhbHdheXMgd2FudCB0aGUgVVJMIHRvIGdvIHRvIGZ1bGwgc2NyZWVuLlxuXHQgKiBAcGFyYW0gdGhpc1xuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50IFRoZSBhcHAgY29tcG9uZW50XG5cdCAqIEByZXR1cm5zIFRoZSBGQ0wgbGF5b3V0IGZvciB0aGUgU2hhcmUgdG8gU0FQIENvbGxhYm9yYXRpb24gTWFuYWdlclxuXHQgKi9cblx0Z2V0RkNMTGF5b3V0Rm9yQ00odGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZVNoYXJpbmcsIGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KTogc3RyaW5nIHtcblx0XHRjb25zdCBGQ0xMZXZlbCA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcy5nZXRDb250ZW50KCkpLmdldENvbnRyb2xsZXIoKS5fcm91dGluZy5nZXRGQ0xMZXZlbCgpO1xuXHRcdGlmICgoYXBwQ29tcG9uZW50LmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIEZjbENvbnRyb2xsZXIpLmdldEZjbENvbmZpZygpLm1heENvbHVtbnNDb3VudCA9PT0gMikge1xuXHRcdFx0cmV0dXJuIFwiTWlkQ29sdW1uRnVsbFNjcmVlblwiO1xuXHRcdH1cblxuXHRcdHJldHVybiBGQ0xMZXZlbCA9PT0gMCA/IFwiTWlkQ29sdW1uRnVsbFNjcmVlblwiIDogXCJFbmRDb2x1bW5GdWxsU2NyZWVuXCI7XG5cdH1cblxuXHRAY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIoXCJjb2xsYWJvcmF0aW9uTWFuYWdlclwiLCBcImNvbGxlY3RBdmFpbGFibGVDYXJkc1wiKVxuXHRhc3luYyBjb2xsZWN0QXZhaWxhYmxlQ2FyZHModGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZVNoYXJpbmcsIGNhcmRzOiBXcmFwcGVkQ2FyZFtdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWN0aW9uVG9vbGJhckl0ZW1zID0gdGhpcy5nZXRDb250ZW50KCkuZ2V0QWN0aW9ucygpIGFzIEFjdGlvblRvb2xiYXJBY3Rpb25bXTtcblx0XHRjb25zdCBpc0ZjbE1vZGVPYmplY3RQYWdlT3BlbiA9XG5cdFx0XHQodGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRBcHBDb21wb25lbnQoKT8uZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgRmNsQ29udHJvbGxlcik/LmdldFJpZ2h0bW9zdFZpZXcoKT8uZ2V0Vmlld0RhdGEoKVxuXHRcdFx0XHQ/LmNvbnZlcnRlclR5cGUgPT09IFwiT2JqZWN0UGFnZVwiO1xuXHRcdGlmIChcblx0XHRcdGhhc0luc2lnaHRBY3Rpb25FbmFibGVkKFxuXHRcdFx0XHRhY3Rpb25Ub29sYmFySXRlbXMsXG5cdFx0XHRcdHRoaXMuZ2V0Q29udGVudCgpLmdldEZpbHRlcigpLFxuXHRcdFx0XHRUYWJsZUluc2lnaHRzSGVscGVyLmdldEluc2lnaHRzUmVsZXZhbnRDb2x1bW5zKHRoaXMpXG5cdFx0XHQpICYmXG5cdFx0XHQhaXNGY2xNb2RlT2JqZWN0UGFnZU9wZW5cblx0XHQpIHtcblx0XHRcdGNvbnN0IGNhcmQgPSBhd2FpdCB0aGlzLmdldENhcmRNYW5pZmVzdFRhYmxlKCk7XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMoY2FyZCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjYXJkcy5wdXNoKHtcblx0XHRcdFx0XHRjYXJkOiBjYXJkLFxuXHRcdFx0XHRcdHRpdGxlOiAodGhpcy5nZXRUYWJsZURlZmluaXRpb24oKS5oZWFkZXJJbmZvVHlwZU5hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSA/PyBcIlwiLFxuXHRcdFx0XHRcdGNhbGxiYWNrOiB0aGlzLm9uQWRkQ2FyZFRvQ29sbGFib3JhdGlvbk1hbmFnZXJDYWxsYmFjay5iaW5kKHRoaXMpXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjYXJkIG1hbmlmZXN0IG9wdGltaXplZCBmb3IgdGhlIHRhYmxlIGNhc2UuXG5cdCAqIEByZXR1cm5zIFByb21pc2Ugb2YgQ2FyZE1hbmlmZXN0XG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIGdldENhcmRNYW5pZmVzdFRhYmxlKHRoaXM6IElUYWJsZUJsb2NrICYgVGFibGVTaGFyaW5nKTogUHJvbWlzZTxDYXJkTWFuaWZlc3Q+IHtcblx0XHRjb25zdCBpbnNpZ2h0c1JlbGV2YW50Q29sdW1ucyA9IFRhYmxlSW5zaWdodHNIZWxwZXIuZ2V0SW5zaWdodHNSZWxldmFudENvbHVtbnModGhpcyk7XG5cdFx0Y29uc3QgaW5zaWdodHNQYXJhbXMgPSAoYXdhaXQgVGFibGVJbnNpZ2h0c0hlbHBlci5jcmVhdGVUYWJsZUNhcmRQYXJhbXMoXG5cdFx0XHR0aGlzLFxuXHRcdFx0aW5zaWdodHNSZWxldmFudENvbHVtbnMsXG5cdFx0XHR0aGlzLmdldFNvcnRDb25kaXRpb25zUXVlcnkoKVxuXHRcdCkpIGFzIEluc2lnaHRzUGFyYW1zPFRhYmxlQ29udGVudD47XG5cdFx0cmV0dXJuIEluc2lnaHRzU2VydmljZS5nZXRDYXJkTWFuaWZlc3QoaW5zaWdodHNQYXJhbXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIHRhYmxlLlxuXHQgKiBAcGFyYW0gY2FyZCBUaGUgY2FyZCBtYW5pZmVzdCB0byBiZSB1c2VkIGZvciB0aGUgY2FsbGJhY2tcblx0ICogQHJldHVybnMgVW5kZWZpbmVkIGlmIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdGFzeW5jIG9uQWRkQ2FyZFRvQ29sbGFib3JhdGlvbk1hbmFnZXJDYWxsYmFjayh0aGlzOiBJVGFibGVCbG9jayAmIFRhYmxlU2hhcmluZywgY2FyZDogQ2FyZE1hbmlmZXN0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmIChjYXJkKSB7XG5cdFx0XHRcdGF3YWl0IEluc2lnaHRzU2VydmljZS5zaG93Q29sbGFib3JhdGlvbk1hbmFnZXJDYXJkUHJldmlldyhjYXJkLCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkuY29sbGFib3JhdGlvbk1hbmFnZXIuZ2V0U2VydmljZSgpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHNob3dHZW5lcmljRXJyb3JNZXNzYWdlKHRoaXMuZ2V0Q29udGVudCgpKTtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGluc2lnaHRzUGFyYW1zIGFuZCBjYWxsIHRoZSBBUEkgdG8gc2hvdyBpbnNpZ2h0cyBjYXJkIHByZXZpZXcgZm9yIHRhYmxlLlxuXHQgKiBAcmV0dXJucyBVbmRlZmluZWQgaWYgdGhlIGNhcmQgcHJldmlldyBpcyByZW5kZXJlZC5cblx0ICovXG5cdGFzeW5jIF9vbkFkZENhcmRUb0luc2lnaHRzUHJlc3NlZCh0aGlzOiBJVGFibGVCbG9jayAmIFRhYmxlU2hhcmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbnNpZ2h0c1JlbGV2YW50Q29sdW1ucyA9IFRhYmxlSW5zaWdodHNIZWxwZXIuZ2V0SW5zaWdodHNSZWxldmFudENvbHVtbnModGhpcyk7XG5cdFx0XHRjb25zdCBpbnNpZ2h0c1BhcmFtcyA9IGF3YWl0IFRhYmxlSW5zaWdodHNIZWxwZXIuY3JlYXRlVGFibGVDYXJkUGFyYW1zKFxuXHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRpbnNpZ2h0c1JlbGV2YW50Q29sdW1ucyxcblx0XHRcdFx0dGhpcy5nZXRTb3J0Q29uZGl0aW9uc1F1ZXJ5KClcblx0XHRcdCk7XG5cdFx0XHRpZiAoaW5zaWdodHNQYXJhbXMpIHtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZTogQ2FyZE1lc3NhZ2UgPSBpbnNpZ2h0c1BhcmFtcy5wYXJhbWV0ZXJzLmlzTmF2aWdhdGlvbkVuYWJsZWRcblx0XHRcdFx0XHQ/IHVuZGVmaW5lZFxuXHRcdFx0XHRcdDoge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiBcIldhcm5pbmdcIixcblx0XHRcdFx0XHRcdFx0dGV4dDogdGhpcy5jcmVhdGVOYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKHRoaXMuZ2V0Q29udGVudCgpKVxuXHRcdFx0XHRcdCAgfTtcblxuXHRcdFx0XHRJbnNpZ2h0c1NlcnZpY2Uuc2hvd0luc2lnaHRzQ2FyZFByZXZpZXcoaW5zaWdodHNQYXJhbXMsIG1lc3NhZ2UpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UodGhpcy5nZXRDb250ZW50KCkpO1xuXHRcdFx0TG9nLmVycm9yKGUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVOYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKHNjb3BlOiBDb250cm9sKTogc3RyaW5nIHtcblx0XHRjb25zdCByZXNvdXJjZU1vZGVsID0gUmVzb3VyY2VNb2RlbEhlbHBlci5nZXRSZXNvdXJjZU1vZGVsKHNjb3BlKTtcblx0XHRyZXR1cm4gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiTV9ST1dfTEVWRUxfTkFWSUdBVElPTl9ESVNBQkxFRF9NU0dfUkVBU09OX0VYVEVSTkFMX05BVklHQVRJT05fQ09ORklHVVJFRFwiKTtcblx0fVxuXG5cdGFzeW5jIGdldERvd25sb2FkVXJsV2l0aEZpbHRlcnModGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZVNoYXJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZCh0YWJsZS5nZXRGaWx0ZXIoKSkgYXMgRmlsdGVyQmFyIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKCFmaWx0ZXJCYXIpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcImZpbHRlciBiYXIgaXMgbm90IGF2YWlsYWJsZVwiKTtcblx0XHR9XG5cdFx0Y29uc3QgYmluZGluZyA9IHRhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRjb25zdCBtb2RlbCA9IHRhYmxlLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbDtcblx0XHRjb25zdCBmaWx0ZXJQcm9wU1YgPSBhd2FpdCAoZmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSSkuZ2V0U2VsZWN0aW9uVmFyaWFudCgpO1xuXHRcdC8vIGlnbm9yZSBmaWx0ZXJzIHdpdGggc2VtYW50aWMgb3BlcmF0b3JzIHdoaWNoIG5lZWRzIHRvIGJlIGFkZGVkIGxhdGVyIGFzIGZpbHRlcnMgd2l0aCBmbHAgc2VtYW50aWMgZGF0ZSBwbGFjZWhvbGRlcnNcblx0XHRjb25zdCBmaWx0ZXJzV2l0aFNlbWFudGljRGF0ZU9wc0luZm8gPSBTZW1hbnRpY0RhdGVPcGVyYXRvcnMuZ2V0U2VtYW50aWNPcHNGaWx0ZXJQcm9wZXJ0aWVzKGZpbHRlclByb3BTVi5fZ2V0U2VsZWN0T3B0aW9ucygpKTtcblx0XHRjb25zdCBmaWx0ZXJzV2l0aG91dFNlbWFudGljRGF0ZU9wcyA9IFRhYmxlVXRpbHMuZ2V0QWxsRmlsdGVySW5mbyhcblx0XHRcdHRhYmxlLFxuXHRcdFx0ZmlsdGVyc1dpdGhTZW1hbnRpY0RhdGVPcHNJbmZvLm1hcCgoZmlsdGVySW5mbykgPT4gZmlsdGVySW5mby5maWx0ZXJOYW1lKVxuXHRcdCk7XG5cdFx0Y29uc3QgcHJvcGVydGllc0luZm8gPSBmaWx0ZXJCYXIuZ2V0UHJvcGVydHlJbmZvU2V0KCk7XG5cdFx0Ly8gZ2V0IHRoZSBmaWx0ZXJzIHdpdGggc2VtYW50aWMgZGF0ZSBvcGVyYXRvcnMgd2l0aCBmbHAgcGxhY2Vob2xkZXIgZm9ybWF0IGFuZCBhcHBlbmQgdG8gdGhlIGV4aXNpdGluZyBmaWx0ZXJzXG5cdFx0Y29uc3QgW2ZscE1hcHBlZFBsYWNlaG9sZGVycywgc2VtYW50aWNEYXRlRmlsdGVyc10gPSBTZW1hbnRpY0RhdGVPcGVyYXRvcnMuZ2V0U2VtYW50aWNEYXRlRmlsdGVyc1dpdGhGbHBQbGFjZWhvbGRlcnMoXG5cdFx0XHRmaWx0ZXJzV2l0aFNlbWFudGljRGF0ZU9wc0luZm8sXG5cdFx0XHRwcm9wZXJ0aWVzSW5mb1xuXHRcdCk7XG5cblx0XHRsZXQgYWxsUmVsZXZhbnRGaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xuXHRcdGlmIChmaWx0ZXJzV2l0aG91dFNlbWFudGljRGF0ZU9wcy5maWx0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdGFsbFJlbGV2YW50RmlsdGVycyA9IGFsbFJlbGV2YW50RmlsdGVycy5jb25jYXQoZmlsdGVyc1dpdGhvdXRTZW1hbnRpY0RhdGVPcHMuZmlsdGVycyk7XG5cdFx0fVxuXHRcdGlmIChzZW1hbnRpY0RhdGVGaWx0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdGFsbFJlbGV2YW50RmlsdGVycy5wdXNoKC4uLnNlbWFudGljRGF0ZUZpbHRlcnMpO1xuXHRcdH1cblx0XHRjb25zdCBhbGxGaWx0ZXJzID0gbmV3IEZpbHRlcih7XG5cdFx0XHRmaWx0ZXJzOiBhbGxSZWxldmFudEZpbHRlcnMsXG5cdFx0XHRhbmQ6IHRydWVcblx0XHR9KTtcblx0XHRjb25zdCBwYXJhbWV0ZXJzID0ge1xuXHRcdFx0JHNlYXJjaDogQ29tbW9uVXRpbHMubm9ybWFsaXplU2VhcmNoVGVybShmaWx0ZXJCYXIuZ2V0U2VhcmNoKCkpIHx8IHVuZGVmaW5lZFxuXHRcdH07XG5cdFx0Ly8gY3JlYXRlIGhpZGRlbiBiaW5kaW5nIHdpdGggYWxsIGZpbHRlcnMgZS5nLiBzdGF0aWMgZmlsdGVycyBhbmQgZmlsdGVycyB3aXRoIHNlbWFudGljIG9wZXJhdG9yc1xuXHRcdGNvbnN0IHRlbXBUYWJsZUJpbmRpbmcgPSBtb2RlbC5iaW5kTGlzdChiaW5kaW5nLmdldFBhdGgoKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFsbEZpbHRlcnMsIHBhcmFtZXRlcnMpO1xuXHRcdGxldCB1cmwgPSAoYXdhaXQgdGVtcFRhYmxlQmluZGluZy5yZXF1ZXN0RG93bmxvYWRVcmwoKSkgPz8gXCJcIjtcblx0XHRmb3IgKGNvbnN0IFtwbGFjZWhvbGRlciwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZscE1hcHBlZFBsYWNlaG9sZGVycykpIHtcblx0XHRcdHVybCA9IHVybC5yZXBsYWNlKHBsYWNlaG9sZGVyLCB2YWx1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB1cmw7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzb3J0IGNvbmRpdGlvbnMgcXVlcnkgc3RyaW5nLlxuXHQgKiBAcmV0dXJucyBUaGUgc29ydCBjb25kaXRpb25zIHF1ZXJ5IHN0cmluZ1xuXHQgKi9cblx0Z2V0U29ydENvbmRpdGlvbnNRdWVyeSh0aGlzOiBJVGFibGVCbG9jayAmIFRhYmxlU2hhcmluZyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRjb25zdCBzb3J0Q29uZGl0aW9ucyA9ICh0YWJsZS5nZXRTb3J0Q29uZGl0aW9ucygpIGFzIFNvcnRDb25kaXRpb25zKT8uc29ydGVycztcblx0XHRyZXR1cm4gc29ydENvbmRpdGlvbnNcblx0XHRcdD8gc29ydENvbmRpdGlvbnNcblx0XHRcdFx0XHQubWFwKGZ1bmN0aW9uIChzb3J0Q29uZGl0aW9uKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzb3J0Q29uZGl0aW9uc1BhdGggPSB0YWJsZS5nZXRQcm9wZXJ0eUhlbHBlcigpLmdldFByb3BlcnR5KHNvcnRDb25kaXRpb24ubmFtZSk/LnBhdGg7XG5cdFx0XHRcdFx0XHRpZiAoc29ydENvbmRpdGlvbnNQYXRoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBgJHtzb3J0Q29uZGl0aW9uc1BhdGh9JHtzb3J0Q29uZGl0aW9uLmRlc2NlbmRpbmcgPyBcIiBkZXNjXCIgOiBcIlwifWA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gXCJcIjtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5qb2luKFwiLFwiKVxuXHRcdFx0OiBcIlwiO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7RUFzQ0E7QUFDQTtBQUNBO0VBRkEsSUFHcUJBLFlBQVksSUFBQUMsSUFBQSxHQStGL0JDLDBCQUEwQixDQUFDLHNCQUFzQixFQUFFLHVCQUF1QixDQUFDLEVBQUFDLE1BQUE7SUFBQSxTQUFBSCxhQUFBO0lBQUFJLFFBQUEsR0FBQUosWUFBQTtJQUFBLElBQUFLLE1BQUEsR0FBQUwsWUFBQSxDQUFBTSxTQUFBO0lBQUFELE1BQUEsQ0E5RjVFRSxVQUFVLEdBQVYsU0FBQUEsVUFBVUEsQ0FBQ0MsVUFBb0IsRUFBUSxDQUFDLENBQUM7SUFBQUgsTUFBQSxDQUV6Q0ksbUNBQW1DLEdBQW5DLFNBQUFBLG1DQUFtQ0EsQ0FFbENDLFVBQTBCLEVBQzFCQyxRQUFtQixFQUNuQkMsd0JBQWdDLEVBQ3pCO01BQ1AsSUFBSUQsUUFBUSxDQUFDRSxNQUFNLElBQUlELHdCQUF3QixFQUFFO1FBQ2hERCxRQUFRLENBQUNHLE9BQU8sQ0FBQyxNQUFPQyxPQUFnQixJQUFLO1VBQzVDLE1BQU1DLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQ0MsNkJBQTZCLENBQUNGLE9BQU8sQ0FBQztVQUNwRSxJQUFJLElBQUksQ0FBQ0csNEJBQTRCLENBQUNILE9BQU8sQ0FBQyxJQUFJQyxVQUFVLEVBQUU7WUFDN0Qs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
224
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZVNoYXJpbmciLCJfZGVjIiwiY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIiLCJfY2xhc3MiLCJfZXhwb3J0cyIsIl9wcm90byIsInByb3RvdHlwZSIsInNldHVwTWl4aW4iLCJfYmFzZUNsYXNzIiwiX29uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MiLCJjb250cm9sbGVyIiwiY29udGV4dHMiLCJtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiY29udGV4dCIsInRhcmdldFBhdGgiLCJnZXRVcmxGb3JDb2xsYWJvcmF0aW9uTWFuYWdlciIsImlzVGFibGVSb3dOYXZpZ2F0aW9uUG9zc2libGUiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJhcHBUaXRsZSIsImdldE1hbmlmZXN0RW50cnkiLCJ0aXRsZSIsImNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiY29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIiwiY29sbGFib3JhdGlvblNlcnZpY2UiLCJjbUhlbHBlclNlcnZpY2UiLCJ0cmlnZ2VySDJIQ2hhdCIsIk1lc3NhZ2VCb3giLCJ3YXJuaW5nIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZ2V0VGV4dCIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJnZXRDb250ZW50IiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiZ2V0Q29udHJvbGxlciIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiaXNEcmFmdCIsIk1vZGVsSGVscGVyIiwiaXNEcmFmdFN1cHBvcnRlZCIsImdldFBhdGgiLCJpc0NvbGxhYm9yYXRpb25FbmFibGVkIiwiZ2V0T2JqZWN0IiwiSXNBY3RpdmVFbnRpdHkiLCJIYXNBY3RpdmVFbnRpdHkiLCJ1bmRlZmluZWQiLCJwYXRoIiwicm9vdFBhdGgiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwicm9vdENvbnRleHQiLCJiaW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInNpYmxpbmdJbmZvIiwiZHJhZnQiLCJjb21wdXRlU2libGluZ0luZm9ybWF0aW9uIiwidGFyZ2V0Q29udGV4dCIsIl9pc0ZjbEVuYWJsZWQiLCJsYXlvdXQiLCJnZXRGQ0xMYXlvdXRGb3JDTSIsImhhc2hDaGFuZ2VySW5zdGFuY2UiLCJIYXNoQ2hhbmdlciIsImdldEluc3RhbmNlIiwic0Jhc2VQYXRoIiwiaHJlZkZvckFwcFNwZWNpZmljSGFzaCIsIndpbmRvdyIsImxvY2F0aW9uIiwib3JpZ2luIiwicGF0aG5hbWUiLCJzZWFyY2giLCJGQ0xMZXZlbCIsIl9yb3V0aW5nIiwiZ2V0RkNMTGV2ZWwiLCJnZXRSb290Vmlld0NvbnRyb2xsZXIiLCJnZXRGY2xDb25maWciLCJtYXhDb2x1bW5zQ291bnQiLCJjb2xsZWN0QXZhaWxhYmxlQ2FyZHMiLCJjYXJkcyIsImFjdGlvblRvb2xiYXJJdGVtcyIsImdldEFjdGlvbnMiLCJnZXRQYWdlQ29udHJvbGxlciIsImlzRmNsTW9kZU9iamVjdFBhZ2VPcGVuIiwiZ2V0UmlnaHRtb3N0VmlldyIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsImhhc0luc2lnaHRBY3Rpb25FbmFibGVkIiwiZ2V0RmlsdGVyIiwiVGFibGVJbnNpZ2h0c0hlbHBlciIsImdldEluc2lnaHRzUmVsZXZhbnRDb2x1bW5zIiwiY2FyZCIsImdldENhcmRNYW5pZmVzdFRhYmxlIiwiT2JqZWN0Iiwia2V5cyIsInB1c2giLCJnZXRUYWJsZURlZmluaXRpb24iLCJoZWFkZXJJbmZvVHlwZU5hbWUiLCJjYWxsYmFjayIsIm9uQWRkQ2FyZFRvQ29sbGFib3JhdGlvbk1hbmFnZXJDYWxsYmFjayIsImJpbmQiLCJpbnNpZ2h0c1JlbGV2YW50Q29sdW1ucyIsImluc2lnaHRzUGFyYW1zIiwiY3JlYXRlVGFibGVDYXJkUGFyYW1zIiwiZ2V0U29ydENvbmRpdGlvbnNRdWVyeSIsIkluc2lnaHRzU2VydmljZSIsImdldENhcmRNYW5pZmVzdCIsInNob3dDb2xsYWJvcmF0aW9uTWFuYWdlckNhcmRQcmV2aWV3IiwiY29sbGFib3JhdGlvbk1hbmFnZXIiLCJnZXRTZXJ2aWNlIiwiZSIsInNob3dHZW5lcmljRXJyb3JNZXNzYWdlIiwiTG9nIiwiZXJyb3IiLCJfb25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQiLCJtZXNzYWdlIiwicGFyYW1ldGVycyIsImlzTmF2aWdhdGlvbkVuYWJsZWQiLCJ0eXBlIiwidGV4dCIsImNyZWF0ZU5hdmlnYXRpb25FcnJvck1lc3NhZ2UiLCJzaG93SW5zaWdodHNDYXJkUHJldmlldyIsInNjb3BlIiwicmVzb3VyY2VNb2RlbCIsIlJlc291cmNlTW9kZWxIZWxwZXIiLCJnZXRSZXNvdXJjZU1vZGVsIiwiZ2V0RG93bmxvYWRVcmxXaXRoRmlsdGVycyIsInRhYmxlIiwiZmlsdGVyQmFyIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwiRXJyb3IiLCJiaW5kaW5nIiwiZ2V0Um93QmluZGluZyIsIm1vZGVsIiwiZmlsdGVyUHJvcFNWIiwiZ2V0UGFyZW50IiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsImZpbHRlcnNXaXRoU2VtYW50aWNEYXRlT3BzSW5mbyIsIlNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImdldFNlbWFudGljT3BzRmlsdGVyUHJvcGVydGllcyIsIl9nZXRTZWxlY3RPcHRpb25zIiwiZmlsdGVyc1dpdGhvdXRTZW1hbnRpY0RhdGVPcHMiLCJUYWJsZVV0aWxzIiwiZ2V0QWxsRmlsdGVySW5mbyIsIm1hcCIsImZpbHRlckluZm8iLCJmaWx0ZXJOYW1lIiwicHJvcGVydGllc0luZm8iLCJnZXRQcm9wZXJ0eUluZm9TZXQiLCJmbHBNYXBwZWRQbGFjZWhvbGRlcnMiLCJzZW1hbnRpY0RhdGVGaWx0ZXJzIiwiZ2V0U2VtYW50aWNEYXRlRmlsdGVyc1dpdGhGbHBQbGFjZWhvbGRlcnMiLCJhbGxSZWxldmFudEZpbHRlcnMiLCJmaWx0ZXJzIiwiY29uY2F0IiwiYWxsRmlsdGVycyIsIkZpbHRlciIsImFuZCIsIiRzZWFyY2giLCJub3JtYWxpemVTZWFyY2hUZXJtIiwiZ2V0U2VhcmNoIiwidGVtcFRhYmxlQmluZGluZyIsImJpbmRMaXN0IiwidXJsIiwicmVxdWVzdERvd25sb2FkVXJsIiwicGxhY2Vob2xkZXIiLCJ2YWx1ZSIsImVudHJpZXMiLCJyZXBsYWNlIiwic29ydENvbmRpdGlvbnMiLCJnZXRTb3J0Q29uZGl0aW9ucyIsInNvcnRlcnMiLCJzb3J0Q29uZGl0aW9uIiwic29ydENvbmRpdGlvbnNQYXRoIiwiZ2V0UHJvcGVydHlIZWxwZXIiLCJnZXRQcm9wZXJ0eSIsIm5hbWUiLCJkZXNjZW5kaW5nIiwiam9pbiIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlU2hhcmluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgSUludGVyZmFjZVdpdGhNaXhpbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9iYXNlL0hvb2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgZHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2VkaXRGbG93L2RyYWZ0XCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBSZXNvdXJjZU1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEZjbENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL3Jvb3RWaWV3L0ZjbC5jb250cm9sbGVyXCI7XG5pbXBvcnQgeyB0eXBlIFdyYXBwZWRDYXJkIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgeyBoYXNJbnNpZ2h0QWN0aW9uRW5hYmxlZCwgc2hvd0dlbmVyaWNFcnJvck1lc3NhZ2UgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnNpZ2h0cy9Db21tb25JbnNpZ2h0c0hlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBJbnNpZ2h0c1BhcmFtcywgVGFibGVDb250ZW50IH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW5zaWdodHMvSW5zaWdodHNTZXJ2aWNlXCI7XG5pbXBvcnQgKiBhcyBJbnNpZ2h0c1NlcnZpY2UgZnJvbSBcInNhcC9mZS9tYWNyb3MvaW5zaWdodHMvSW5zaWdodHNTZXJ2aWNlXCI7XG5pbXBvcnQgKiBhcyBUYWJsZUluc2lnaHRzSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2luc2lnaHRzL1RhYmxlSW5zaWdodHNIZWxwZXJcIjtcbmltcG9ydCBUYWJsZVV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENhcmRNYW5pZmVzdCwgQ2FyZE1lc3NhZ2UgfSBmcm9tIFwic2FwL2luc2lnaHRzL0NhcmRIZWxwZXJcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IEhhc2hDaGFuZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9yb3V0aW5nL0hhc2hDaGFuZ2VyXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Ub29sYmFyQWN0aW9uIGZyb20gXCJzYXAvdWkvbWRjL2FjdGlvbnRvb2xiYXIvQWN0aW9uVG9vbGJhckFjdGlvblwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgU2VtYW50aWNEYXRlT3BlcmF0b3JzIGZyb20gXCIuLi8uLi9maWx0ZXJCYXIvU2VtYW50aWNEYXRlT3BlcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIElUYWJsZUJsb2NrIH0gZnJvbSBcIi4uL1RhYmxlQVBJXCI7XG5cbnR5cGUgU29ydENvbmRpdGlvbnMgPSB7XG5cdHNvcnRlcnM6IHtcblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0ZGVzY2VuZGluZzogYm9vbGVhbjtcblx0fVtdO1xufTtcblxuLyoqXG4gKiBBIG1peGluIHRvIG1hbmFnZSBhbGwgc2hhcmluZyByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIChpbmNsdWRpbmcgaW5zaWdodCBjYXJkcylcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVTaGFyaW5nIGltcGxlbWVudHMgSUludGVyZmFjZVdpdGhNaXhpbiB7XG5cdHNldHVwTWl4aW4oX2Jhc2VDbGFzczogRnVuY3Rpb24pOiB2b2lkIHt9XG5cblx0X29uU2hhcmVUb0NvbGxhYm9yYXRpb25NYW5hZ2VyUHJlc3MoXG5cdFx0dGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZVNoYXJpbmcsXG5cdFx0Y29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsXG5cdFx0Y29udGV4dHM6IENvbnRleHRbXSxcblx0XHRtYXhOdW1iZXJvZlNlbGVjdGVkSXRlbXM6IG51bWJlclxuXHQpOiB2b2lkIHtcblx0XHRpZiAoY29udGV4dHMubGVuZ3RoIDw9IG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtcykge1xuXHRcdFx0Y29udGV4dHMuZm9yRWFjaChhc3luYyAoY29udGV4dDogQ29udGV4dCkgPT4ge1xuXHRcdFx0XHRjb25zdCB0YXJnZXRQYXRoID0gYXdhaXQgdGhpcy5nZXRVcmxGb3JDb2xsYWJvcmF0aW9uTWFuYWdlcihjb250ZXh0KTtcblx0XHRcdFx0aWYgKHRoaXMuaXNUYWJsZVJvd05hdmlnYXRpb25Qb3NzaWJsZShjb250ZXh0KSAmJiB0YXJnZXRQYXRoKSB7XG5cdFx0XHRcdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRcdFx0XHRjb25zdCBhcHBUaXRsZSA9IGFwcENvbXBvbmVudC5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmFwcFwiKS50aXRsZTtcblx0XHRcdFx0XHRjb25zdCBjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlID0gYXBwQ29tcG9uZW50Py5nZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk7XG5cdFx0XHRcdFx0Y29uc3QgY29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlID0gY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZT8uY29sbGFib3JhdGlvblNlcnZpY2UuY21IZWxwZXJTZXJ2aWNlO1xuXHRcdFx0XHRcdGNvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZT8udHJpZ2dlckgySENoYXQoYXBwVGl0bGUsIHRhcmdldFBhdGgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE1lc3NhZ2VCb3gud2FybmluZyhcblx0XHRcdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFxuXHRcdFx0XHRcdFx0XHRcIlRfVEFCTEVfU0hBUkVfVE9fQ09MTEFCT1JBVElPTl9NQU5BR0VSX05PX05BVklHQVRJT05fUE9TU0lCTEVcIlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94Lndhcm5pbmcoXG5cdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiVF9UQUJMRV9TSEFSRV9UT19DT0xMQUJPUkFUSU9OX01BTkFHRVJfVE9PX01BTllfSVRFTVNfU0VMRUNURURcIiwgW1xuXHRcdFx0XHRcdG1heE51bWJlcm9mU2VsZWN0ZWRJdGVtc1xuXHRcdFx0XHRdKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBVUkwgZm9yIFNBUCBDb2xsYWJvcmF0aW9uIE1hbmFnZXIuIFdlIGFsd2F5cyBnbyB0byB0aGUgYWN0aXZlIHZlcnNpb24sIGFsc28gZnJvbSBkcmFmdCB2ZXJzaW9uLiBJZiB0aGVyZSBpcyBubyBhY3RpdmUgdmVyc2lvbiB5ZXQsIHdlIGRvIG5vdCBzaGFyZSBhIGxpbmsuXG5cdCAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IGZvciB3aGljaCB0aGUgVVJMIGlzIHRvIGJlIGdlbmVyYXRlZFxuXHQgKiBAcmV0dXJucyBUaGUgVVJMIGZvciBTQVAgQ29sbGFib3JhdGlvbiBNYW5hZ2VyXG5cdCAqL1xuXHRhc3luYyBnZXRVcmxGb3JDb2xsYWJvcmF0aW9uTWFuYWdlcih0aGlzOiBJVGFibGVCbG9jayAmIFRhYmxlU2hhcmluZywgY29udGV4dDogQ29udGV4dCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG5cdFx0bGV0IHRhcmdldFBhdGg7XG5cdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcy5nZXRDb250ZW50KCkpO1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVEcmFmdCA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLmNvbGxhYm9yYXRpdmVEcmFmdDtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBjb250ZXh0LmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IGlzRHJhZnQgPSBNb2RlbEhlbHBlci5pc0RyYWZ0U3VwcG9ydGVkKG1ldGFNb2RlbCwgY29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdGlmIChpc0RyYWZ0ICYmICFjb2xsYWJvcmF0aXZlRHJhZnQuaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCgpICYmIGNvbnRleHQuZ2V0T2JqZWN0KCkuSXNBY3RpdmVFbnRpdHkgPT09IGZhbHNlKSB7XG5cdFx0XHRpZiAoY29udGV4dC5nZXRPYmplY3QoKS5IYXNBY3RpdmVFbnRpdHkgPT09IGZhbHNlKSB7XG5cdFx0XHRcdC8vIHdlIGhhdmUgYSBkcmFmdCBlbnRpdHkgd2l0aCBubyBhY3RpdmUgdmVyc2lvblxuXHRcdFx0XHQvLyB3ZSBkbyBub3Qgc3VwcG9ydCB0aGlzIGZvciBDb2xsYWJvcmF0aW9uIE1hbmFnZXJcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHdlIGhhdmUgYSBkcmFmdCBlbnRpdHkgd2l0aCBhbiBhY3RpdmUgdmVyc2lvbiBhbmQgbmVlZCB0byBjb252ZXJ0IHRoZSBwYXRoIHRvIGFuIGFjdGl2ZSBwYXRoXG5cdFx0XHRcdGNvbnN0IHBhdGggPSBjb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdFx0Y29uc3Qgcm9vdFBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmluZGV4T2YoXCIvXCIsIDEpKTtcblx0XHRcdFx0Y29uc3Qgcm9vdENvbnRleHQgPSByb290UGF0aCA/IGNvbnRleHQuZ2V0TW9kZWwoKS5iaW5kQ29udGV4dChyb290UGF0aCkuZ2V0Qm91bmRDb250ZXh0KCkgOiBjb250ZXh0O1xuXHRcdFx0XHRjb25zdCBzaWJsaW5nSW5mbyA9IGF3YWl0IGRyYWZ0LmNvbXB1dGVTaWJsaW5nSW5mb3JtYXRpb24ocm9vdENvbnRleHQsIGNvbnRleHQpO1xuXHRcdFx0XHR0YXJnZXRQYXRoID0gc2libGluZ0luZm8/LnRhcmdldENvbnRleHQ/LmdldFBhdGgoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gd2UgaGF2ZSBhbiBhY3RpdmUgZW50aXR5IG9yIGEgY29sbGFib3JhdGl2ZSBkcmFmdCBvciBhIG5vbi1kcmFmdCBwcm9ncmFtbWluZyBtb2RlbFxuXHRcdFx0dGFyZ2V0UGF0aCA9IGNvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdH1cblxuXHRcdGlmICh0YXJnZXRQYXRoKSB7XG5cdFx0XHRpZiAodGFyZ2V0UGF0aFswXSA9PT0gXCIvXCIpIHtcblx0XHRcdFx0dGFyZ2V0UGF0aCA9IHRhcmdldFBhdGguc3Vic3RyaW5nKDEpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuZ2V0Q29udGVudCgpKTtcblx0XHRcdGlmIChhcHBDb21wb25lbnQuX2lzRmNsRW5hYmxlZCgpKSB7XG5cdFx0XHRcdGNvbnN0IGxheW91dCA9IHRoaXMuZ2V0RkNMTGF5b3V0Rm9yQ00oYXBwQ29tcG9uZW50KTtcblx0XHRcdFx0dGFyZ2V0UGF0aCArPSBgP2xheW91dD0ke2xheW91dH1gO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaGFzaENoYW5nZXJJbnN0YW5jZSA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCk7XG5cdFx0XHRjb25zdCBzQmFzZVBhdGggPSBoYXNoQ2hhbmdlckluc3RhbmNlLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2ggPyBoYXNoQ2hhbmdlckluc3RhbmNlLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2goXCJcIikgOiBcIlwiO1xuXHRcdFx0cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoICsgc0Jhc2VQYXRoICsgdGFyZ2V0UGF0aDtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBGb3IgJ1NoYXJlIHRvIFNBUCBDb2xsYWJvcmF0aW9uIE1hbmFnZXInLCB3ZSBhbHdheXMgd2FudCB0aGUgVVJMIHRvIGdvIHRvIGZ1bGwgc2NyZWVuLlxuXHQgKiBAcGFyYW0gdGhpc1xuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50IFRoZSBhcHAgY29tcG9uZW50XG5cdCAqIEByZXR1cm5zIFRoZSBGQ0wgbGF5b3V0IGZvciB0aGUgU2hhcmUgdG8gU0FQIENvbGxhYm9yYXRpb24gTWFuYWdlclxuXHQgKi9cblx0Z2V0RkNMTGF5b3V0Rm9yQ00odGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZVNoYXJpbmcsIGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KTogc3RyaW5nIHtcblx0XHRjb25zdCBGQ0xMZXZlbCA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcy5nZXRDb250ZW50KCkpLmdldENvbnRyb2xsZXIoKS5fcm91dGluZy5nZXRGQ0xMZXZlbCgpO1xuXHRcdGlmICgoYXBwQ29tcG9uZW50LmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIEZjbENvbnRyb2xsZXIpLmdldEZjbENvbmZpZygpLm1heENvbHVtbnNDb3VudCA9PT0gMikge1xuXHRcdFx0cmV0dXJuIFwiTWlkQ29sdW1uRnVsbFNjcmVlblwiO1xuXHRcdH1cblxuXHRcdHJldHVybiBGQ0xMZXZlbCA9PT0gMCA/IFwiTWlkQ29sdW1uRnVsbFNjcmVlblwiIDogXCJFbmRDb2x1bW5GdWxsU2NyZWVuXCI7XG5cdH1cblxuXHRAY29udHJvbGxlckV4dGVuc2lvbkhhbmRsZXIoXCJjb2xsYWJvcmF0aW9uTWFuYWdlclwiLCBcImNvbGxlY3RBdmFpbGFibGVDYXJkc1wiKVxuXHRhc3luYyBjb2xsZWN0QXZhaWxhYmxlQ2FyZHModGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZVNoYXJpbmcsIGNhcmRzOiBXcmFwcGVkQ2FyZFtdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWN0aW9uVG9vbGJhckl0ZW1zID0gdGhpcy5nZXRDb250ZW50KCkuZ2V0QWN0aW9ucygpIGFzIEFjdGlvblRvb2xiYXJBY3Rpb25bXTtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IGlzRmNsTW9kZU9iamVjdFBhZ2VPcGVuID0gYXBwQ29tcG9uZW50Py5faXNGY2xFbmFibGVkKClcblx0XHRcdD8gKGFwcENvbXBvbmVudD8uZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgRmNsQ29udHJvbGxlcik/LmdldFJpZ2h0bW9zdFZpZXc/LigpPy5nZXRWaWV3RGF0YSgpPy5jb252ZXJ0ZXJUeXBlID09PSBcIk9iamVjdFBhZ2VcIlxuXHRcdFx0OiBmYWxzZTtcblx0XHRpZiAoXG5cdFx0XHRoYXNJbnNpZ2h0QWN0aW9uRW5hYmxlZChcblx0XHRcdFx0YWN0aW9uVG9vbGJhckl0ZW1zLFxuXHRcdFx0XHR0aGlzLmdldENvbnRlbnQoKS5nZXRGaWx0ZXIoKSxcblx0XHRcdFx0VGFibGVJbnNpZ2h0c0hlbHBlci5nZXRJbnNpZ2h0c1JlbGV2YW50Q29sdW1ucyh0aGlzKVxuXHRcdFx0KSAmJlxuXHRcdFx0IWlzRmNsTW9kZU9iamVjdFBhZ2VPcGVuXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBjYXJkID0gYXdhaXQgdGhpcy5nZXRDYXJkTWFuaWZlc3RUYWJsZSgpO1xuXHRcdFx0aWYgKE9iamVjdC5rZXlzKGNhcmQpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y2FyZHMucHVzaCh7XG5cdFx0XHRcdFx0Y2FyZDogY2FyZCxcblx0XHRcdFx0XHR0aXRsZTogKHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uKCkuaGVhZGVySW5mb1R5cGVOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gXCJcIixcblx0XHRcdFx0XHRjYWxsYmFjazogdGhpcy5vbkFkZENhcmRUb0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FsbGJhY2suYmluZCh0aGlzKVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY2FyZCBtYW5pZmVzdCBvcHRpbWl6ZWQgZm9yIHRoZSB0YWJsZSBjYXNlLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIG9mIENhcmRNYW5pZmVzdFxuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBnZXRDYXJkTWFuaWZlc3RUYWJsZSh0aGlzOiBJVGFibGVCbG9jayAmIFRhYmxlU2hhcmluZyk6IFByb21pc2U8Q2FyZE1hbmlmZXN0PiB7XG5cdFx0Y29uc3QgaW5zaWdodHNSZWxldmFudENvbHVtbnMgPSBUYWJsZUluc2lnaHRzSGVscGVyLmdldEluc2lnaHRzUmVsZXZhbnRDb2x1bW5zKHRoaXMpO1xuXHRcdGNvbnN0IGluc2lnaHRzUGFyYW1zID0gKGF3YWl0IFRhYmxlSW5zaWdodHNIZWxwZXIuY3JlYXRlVGFibGVDYXJkUGFyYW1zKFxuXHRcdFx0dGhpcyxcblx0XHRcdGluc2lnaHRzUmVsZXZhbnRDb2x1bW5zLFxuXHRcdFx0dGhpcy5nZXRTb3J0Q29uZGl0aW9uc1F1ZXJ5KClcblx0XHQpKSBhcyBJbnNpZ2h0c1BhcmFtczxUYWJsZUNvbnRlbnQ+O1xuXHRcdHJldHVybiBJbnNpZ2h0c1NlcnZpY2UuZ2V0Q2FyZE1hbmlmZXN0KGluc2lnaHRzUGFyYW1zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBpbnNpZ2h0c1BhcmFtcyBhbmQgY2FsbCB0aGUgQVBJIHRvIHNob3cgaW5zaWdodHMgY2FyZCBwcmV2aWV3IGZvciB0YWJsZS5cblx0ICogQHBhcmFtIGNhcmQgVGhlIGNhcmQgbWFuaWZlc3QgdG8gYmUgdXNlZCBmb3IgdGhlIGNhbGxiYWNrXG5cdCAqIEByZXR1cm5zIFVuZGVmaW5lZCBpZiBjYXJkIHByZXZpZXcgaXMgcmVuZGVyZWQuXG5cdCAqL1xuXHRhc3luYyBvbkFkZENhcmRUb0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FsbGJhY2sodGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZVNoYXJpbmcsIGNhcmQ6IENhcmRNYW5pZmVzdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY2FyZCkge1xuXHRcdFx0XHRhd2FpdCBJbnNpZ2h0c1NlcnZpY2Uuc2hvd0NvbGxhYm9yYXRpb25NYW5hZ2VyQ2FyZFByZXZpZXcoY2FyZCwgdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmNvbGxhYm9yYXRpb25NYW5hZ2VyLmdldFNlcnZpY2UoKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRzaG93R2VuZXJpY0Vycm9yTWVzc2FnZSh0aGlzLmdldENvbnRlbnQoKSk7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBpbnNpZ2h0c1BhcmFtcyBhbmQgY2FsbCB0aGUgQVBJIHRvIHNob3cgaW5zaWdodHMgY2FyZCBwcmV2aWV3IGZvciB0YWJsZS5cblx0ICogQHJldHVybnMgVW5kZWZpbmVkIGlmIHRoZSBjYXJkIHByZXZpZXcgaXMgcmVuZGVyZWQuXG5cdCAqL1xuXHRhc3luYyBfb25BZGRDYXJkVG9JbnNpZ2h0c1ByZXNzZWQodGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZVNoYXJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgaW5zaWdodHNSZWxldmFudENvbHVtbnMgPSBUYWJsZUluc2lnaHRzSGVscGVyLmdldEluc2lnaHRzUmVsZXZhbnRDb2x1bW5zKHRoaXMpO1xuXHRcdFx0Y29uc3QgaW5zaWdodHNQYXJhbXMgPSBhd2FpdCBUYWJsZUluc2lnaHRzSGVscGVyLmNyZWF0ZVRhYmxlQ2FyZFBhcmFtcyhcblx0XHRcdFx0dGhpcyxcblx0XHRcdFx0aW5zaWdodHNSZWxldmFudENvbHVtbnMsXG5cdFx0XHRcdHRoaXMuZ2V0U29ydENvbmRpdGlvbnNRdWVyeSgpXG5cdFx0XHQpO1xuXHRcdFx0aWYgKGluc2lnaHRzUGFyYW1zKSB7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2U6IENhcmRNZXNzYWdlID0gaW5zaWdodHNQYXJhbXMucGFyYW1ldGVycy5pc05hdmlnYXRpb25FbmFibGVkXG5cdFx0XHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdFx0XHQ6IHtcblx0XHRcdFx0XHRcdFx0dHlwZTogXCJXYXJuaW5nXCIsXG5cdFx0XHRcdFx0XHRcdHRleHQ6IHRoaXMuY3JlYXRlTmF2aWdhdGlvbkVycm9yTWVzc2FnZSh0aGlzLmdldENvbnRlbnQoKSlcblx0XHRcdFx0XHQgIH07XG5cblx0XHRcdFx0SW5zaWdodHNTZXJ2aWNlLnNob3dJbnNpZ2h0c0NhcmRQcmV2aWV3KGluc2lnaHRzUGFyYW1zLCBtZXNzYWdlKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHNob3dHZW5lcmljRXJyb3JNZXNzYWdlKHRoaXMuZ2V0Q29udGVudCgpKTtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0Y3JlYXRlTmF2aWdhdGlvbkVycm9yTWVzc2FnZShzY29wZTogQ29udHJvbCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IFJlc291cmNlTW9kZWxIZWxwZXIuZ2V0UmVzb3VyY2VNb2RlbChzY29wZSk7XG5cdFx0cmV0dXJuIHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fUk9XX0xFVkVMX05BVklHQVRJT05fRElTQUJMRURfTVNHX1JFQVNPTl9FWFRFUk5BTF9OQVZJR0FUSU9OX0NPTkZJR1VSRURcIik7XG5cdH1cblxuXHRhc3luYyBnZXREb3dubG9hZFVybFdpdGhGaWx0ZXJzKHRoaXM6IElUYWJsZUJsb2NrICYgVGFibGVTaGFyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdGNvbnN0IGZpbHRlckJhciA9IFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGUuZ2V0RmlsdGVyKCkpIGFzIEZpbHRlckJhciB8IHVuZGVmaW5lZDtcblxuXHRcdGlmICghZmlsdGVyQmFyKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJmaWx0ZXIgYmFyIGlzIG5vdCBhdmFpbGFibGVcIik7XG5cdFx0fVxuXHRcdGNvbnN0IGJpbmRpbmcgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0Y29uc3QgbW9kZWwgPSB0YWJsZS5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdFx0Y29uc3QgZmlsdGVyUHJvcFNWID0gYXdhaXQgKGZpbHRlckJhci5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEkpLmdldFNlbGVjdGlvblZhcmlhbnQoKTtcblx0XHQvLyBpZ25vcmUgZmlsdGVycyB3aXRoIHNlbWFudGljIG9wZXJhdG9ycyB3aGljaCBuZWVkcyB0byBiZSBhZGRlZCBsYXRlciBhcyBmaWx0ZXJzIHdpdGggZmxwIHNlbWFudGljIGRhdGUgcGxhY2Vob2xkZXJzXG5cdFx0Y29uc3QgZmlsdGVyc1dpdGhTZW1hbnRpY0RhdGVPcHNJbmZvID0gU2VtYW50aWNEYXRlT3BlcmF0b3JzLmdldFNlbWFudGljT3BzRmlsdGVyUHJvcGVydGllcyhmaWx0ZXJQcm9wU1YuX2dldFNlbGVjdE9wdGlvbnMoKSk7XG5cdFx0Y29uc3QgZmlsdGVyc1dpdGhvdXRTZW1hbnRpY0RhdGVPcHMgPSBUYWJsZVV0aWxzLmdldEFsbEZpbHRlckluZm8oXG5cdFx0XHR0YWJsZSxcblx0XHRcdGZpbHRlcnNXaXRoU2VtYW50aWNEYXRlT3BzSW5mby5tYXAoKGZpbHRlckluZm8pID0+IGZpbHRlckluZm8uZmlsdGVyTmFtZSlcblx0XHQpO1xuXHRcdGNvbnN0IHByb3BlcnRpZXNJbmZvID0gZmlsdGVyQmFyLmdldFByb3BlcnR5SW5mb1NldCgpO1xuXHRcdC8vIGdldCB0aGUgZmlsdGVycyB3aXRoIHNlbWFudGljIGRhdGUgb3BlcmF0b3JzIHdpdGggZmxwIHBsYWNlaG9sZGVyIGZvcm1hdCBhbmQgYXBwZW5kIHRvIHRoZSBleGlzaXRpbmcgZmlsdGVyc1xuXHRcdGNvbnN0IFtmbHBNYXBwZWRQbGFjZWhvbGRlcnMsIHNlbWFudGljRGF0ZUZpbHRlcnNdID0gU2VtYW50aWNEYXRlT3BlcmF0b3JzLmdldFNlbWFudGljRGF0ZUZpbHRlcnNXaXRoRmxwUGxhY2Vob2xkZXJzKFxuXHRcdFx0ZmlsdGVyc1dpdGhTZW1hbnRpY0RhdGVPcHNJbmZvLFxuXHRcdFx0cHJvcGVydGllc0luZm9cblx0XHQpO1xuXG5cdFx0bGV0IGFsbFJlbGV2YW50RmlsdGVyczogRmlsdGVyW10gPSBbXTtcblx0XHRpZiAoZmlsdGVyc1dpdGhvdXRTZW1hbnRpY0RhdGVPcHMuZmlsdGVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHRhbGxSZWxldmFudEZpbHRlcnMgPSBhbGxSZWxldmFudEZpbHRlcnMuY29uY2F0KGZpbHRlcnNXaXRob3V0U2VtYW50aWNEYXRlT3BzLmZpbHRlcnMpO1xuXHRcdH1cblx0XHRpZiAoc2VtYW50aWNEYXRlRmlsdGVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHRhbGxSZWxldmFudEZpbHRlcnMucHVzaCguLi5zZW1hbnRpY0RhdGVGaWx0ZXJzKTtcblx0XHR9XG5cdFx0Y29uc3QgYWxsRmlsdGVycyA9IG5ldyBGaWx0ZXIoe1xuXHRcdFx0ZmlsdGVyczogYWxsUmVsZXZhbnRGaWx0ZXJzLFxuXHRcdFx0YW5kOiB0cnVlXG5cdFx0fSk7XG5cdFx0Y29uc3QgcGFyYW1ldGVycyA9IHtcblx0XHRcdCRzZWFyY2g6IENvbW1vblV0aWxzLm5vcm1hbGl6ZVNlYXJjaFRlcm0oZmlsdGVyQmFyLmdldFNlYXJjaCgpKSB8fCB1bmRlZmluZWRcblx0XHR9O1xuXHRcdC8vIGNyZWF0ZSBoaWRkZW4gYmluZGluZyB3aXRoIGFsbCBmaWx0ZXJzIGUuZy4gc3RhdGljIGZpbHRlcnMgYW5kIGZpbHRlcnMgd2l0aCBzZW1hbnRpYyBvcGVyYXRvcnNcblx0XHRjb25zdCB0ZW1wVGFibGVCaW5kaW5nID0gbW9kZWwuYmluZExpc3QoYmluZGluZy5nZXRQYXRoKCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBhbGxGaWx0ZXJzLCBwYXJhbWV0ZXJzKTtcblx0XHRsZXQgdXJsID0gKGF3YWl0IHRlbXBUYWJsZUJpbmRpbmcucmVxdWVzdERvd25sb2FkVXJsKCkpID8/IFwiXCI7XG5cdFx0Zm9yIChjb25zdCBbcGxhY2Vob2xkZXIsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmbHBNYXBwZWRQbGFjZWhvbGRlcnMpKSB7XG5cdFx0XHR1cmwgPSB1cmwucmVwbGFjZShwbGFjZWhvbGRlciwgdmFsdWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdXJsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgc29ydCBjb25kaXRpb25zIHF1ZXJ5IHN0cmluZy5cblx0ICogQHJldHVybnMgVGhlIHNvcnQgY29uZGl0aW9ucyBxdWVyeSBzdHJpbmdcblx0ICovXG5cdGdldFNvcnRDb25kaXRpb25zUXVlcnkodGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZVNoYXJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5nZXRDb250ZW50KCk7XG5cdFx0Y29uc3Qgc29ydENvbmRpdGlvbnMgPSAodGFibGUuZ2V0U29ydENvbmRpdGlvbnMoKSBhcyBTb3J0Q29uZGl0aW9ucyk/LnNvcnRlcnM7XG5cdFx0cmV0dXJuIHNvcnRDb25kaXRpb25zXG5cdFx0XHQ/IHNvcnRDb25kaXRpb25zXG5cdFx0XHRcdFx0Lm1hcChmdW5jdGlvbiAoc29ydENvbmRpdGlvbikge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc29ydENvbmRpdGlvbnNQYXRoID0gdGFibGUuZ2V0UHJvcGVydHlIZWxwZXIoKS5nZXRQcm9wZXJ0eShzb3J0Q29uZGl0aW9uLm5hbWUpPy5wYXRoO1xuXHRcdFx0XHRcdFx0aWYgKHNvcnRDb25kaXRpb25zUGF0aCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYCR7c29ydENvbmRpdGlvbnNQYXRofSR7c29ydENvbmRpdGlvbi5kZXNjZW5kaW5nID8gXCIgZGVzY1wiIDogXCJcIn1gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuam9pbihcIixcIilcblx0XHRcdDogXCJcIjtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0VBc0NBO0FBQ0E7QUFDQTtFQUZBLElBR3FCQSxZQUFZLElBQUFDLElBQUEsR0ErRi9CQywwQkFBMEIsQ0FBQyxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQyxFQUFBQyxNQUFBO0lBQUEsU0FBQUgsYUFBQTtJQUFBSSxRQUFBLEdBQUFKLFlBQUE7SUFBQSxJQUFBSyxNQUFBLEdBQUFMLFlBQUEsQ0FBQU0sU0FBQTtJQUFBRCxNQUFBLENBOUY1RUUsVUFBVSxHQUFWLFNBQUFBLFVBQVVBLENBQUNDLFVBQW9CLEVBQVEsQ0FBQyxDQUFDO0lBQUFILE1BQUEsQ0FFekNJLG1DQUFtQyxHQUFuQyxTQUFBQSxtQ0FBbUNBLENBRWxDQyxVQUEwQixFQUMxQkMsUUFBbUIsRUFDbkJDLHdCQUFnQyxFQUN6QjtNQUNQLElBQUlELFFBQVEsQ0FBQ0UsTUFBTSxJQUFJRCx3QkFBd0IsRUFBRTtRQUNoREQsUUFBUSxDQUFDRyxPQUFPLENBQUMsTUFBT0MsT0FBZ0IsSUFBSztVQUM1QyxNQUFNQyxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUNDLDZCQUE2QixDQUFD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
@@ -137,9 +137,10 @@ export default class TableSharing implements IInterfaceWithMixin {
137
137
  @controllerExtensionHandler("collaborationManager", "collectAvailableCards")
138
138
  async collectAvailableCards(this: ITableBlock & TableSharing, cards: WrappedCard[]): Promise<void> {
139
139
  const actionToolbarItems = this.getContent().getActions() as ActionToolbarAction[];
140
- const isFclModeObjectPageOpen =
141
- (this.getPageController()?.getAppComponent()?.getRootViewController() as FclController)?.getRightmostView()?.getViewData()
142
- ?.converterType === "ObjectPage";
140
+ const appComponent = this.getPageController()?.getAppComponent();
141
+ const isFclModeObjectPageOpen = appComponent?._isFclEnabled()
142
+ ? (appComponent?.getRootViewController() as FclController)?.getRightmostView?.()?.getViewData()?.converterType === "ObjectPage"
143
+ : false;
143
144
  if (
144
145
  hasInsightActionEnabled(
145
146
  actionToolbarItems,