@sapui5/sap.fe.macros 1.138.0 → 1.140.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 (240) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +269 -0
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
  5. package/src/sap/fe/macros/CommonHelper.js +2 -2
  6. package/src/sap/fe/macros/CommonHelper.ts +1 -1
  7. package/src/sap/fe/macros/Field.js +85 -58
  8. package/src/sap/fe/macros/Field.ts +104 -60
  9. package/src/sap/fe/macros/FooterContent.js +44 -11
  10. package/src/sap/fe/macros/FooterContent.tsx +48 -9
  11. package/src/sap/fe/macros/FormElement.js +2 -2
  12. package/src/sap/fe/macros/FormElement.ts +1 -2
  13. package/src/sap/fe/macros/MessageButton.js +1 -2
  14. package/src/sap/fe/macros/MessageButton.tsx +0 -1
  15. package/src/sap/fe/macros/MultiValueField.js +17 -6
  16. package/src/sap/fe/macros/MultiValueField.tsx +7 -4
  17. package/src/sap/fe/macros/RichTextEditor.js +30 -5
  18. package/src/sap/fe/macros/RichTextEditor.tsx +34 -6
  19. package/src/sap/fe/macros/Share.js +85 -40
  20. package/src/sap/fe/macros/Share.tsx +42 -1
  21. package/src/sap/fe/macros/Status.js +226 -0
  22. package/src/sap/fe/macros/Status.tsx +192 -0
  23. package/src/sap/fe/macros/ValueHelp.js +4 -29
  24. package/src/sap/fe/macros/ValueHelp.tsx +2 -43
  25. package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
  26. package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
  27. package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
  28. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
  29. package/src/sap/fe/macros/ai/EasyFilterBar.js +123 -114
  30. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +140 -124
  31. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
  32. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
  33. package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
  34. package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
  35. package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
  36. package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
  37. package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
  38. package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
  39. package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
  40. package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
  41. package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
  42. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
  43. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +3 -1
  44. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +2 -0
  45. package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
  46. package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
  47. package/src/sap/fe/macros/controls/FilterBar.js +49 -2
  48. package/src/sap/fe/macros/controls/FilterBar.ts +55 -1
  49. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
  50. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
  51. package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
  52. package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
  53. package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
  54. package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
  55. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
  56. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
  57. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
  58. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
  59. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  60. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  61. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
  62. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
  63. package/src/sap/fe/macros/designtime/Designtime.helper.js +39 -2
  64. package/src/sap/fe/macros/designtime/Designtime.helper.ts +39 -0
  65. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +15 -4
  66. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +5 -0
  67. package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
  68. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
  69. package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
  70. package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
  71. package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
  72. package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
  73. package/src/sap/fe/macros/filter/FilterUtils.js +3 -5
  74. package/src/sap/fe/macros/filter/FilterUtils.ts +2 -4
  75. package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
  76. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
  77. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
  78. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
  79. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
  80. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
  81. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
  82. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
  83. package/src/sap/fe/macros/form/Form.js +1 -4
  84. package/src/sap/fe/macros/form/Form.tsx +0 -3
  85. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
  86. package/src/sap/fe/macros/form/FormContainer.block.js +1 -2
  87. package/src/sap/fe/macros/form/FormContainer.block.ts +0 -1
  88. package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
  89. package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
  90. package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
  91. package/src/sap/fe/macros/form/FormDelegate.js +20 -1
  92. package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
  93. package/src/sap/fe/macros/form/FormHelper.js +1 -2
  94. package/src/sap/fe/macros/form/FormHelper.ts +0 -1
  95. package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
  96. package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
  97. package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
  98. package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
  99. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
  100. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
  101. package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
  102. package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
  103. package/src/sap/fe/macros/internal/DataPoint.js +2 -1
  104. package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
  105. package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
  106. package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
  107. package/src/sap/fe/macros/internal/FilterField.block.js +10 -2
  108. package/src/sap/fe/macros/internal/FilterField.block.ts +11 -1
  109. package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
  110. package/src/sap/fe/macros/internal/field/DisplayStyle.js +51 -13
  111. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +53 -6
  112. package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
  113. package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
  114. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
  115. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +11 -0
  116. package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
  117. package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
  118. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
  119. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
  120. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
  121. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
  122. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +2 -1
  123. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +16 -5
  124. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +21 -9
  125. package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
  126. package/src/sap/fe/macros/library.js +1 -1
  127. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +7 -2
  128. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +7 -3
  129. package/src/sap/fe/macros/messagebundle.properties +42 -32
  130. package/src/sap/fe/macros/messagebundle_ar.properties +12 -4
  131. package/src/sap/fe/macros/messagebundle_bg.properties +11 -3
  132. package/src/sap/fe/macros/messagebundle_ca.properties +15 -7
  133. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -4
  134. package/src/sap/fe/macros/messagebundle_cs.properties +10 -2
  135. package/src/sap/fe/macros/messagebundle_cy.properties +12 -4
  136. package/src/sap/fe/macros/messagebundle_da.properties +11 -3
  137. package/src/sap/fe/macros/messagebundle_de.properties +18 -10
  138. package/src/sap/fe/macros/messagebundle_el.properties +13 -5
  139. package/src/sap/fe/macros/messagebundle_en.properties +16 -8
  140. package/src/sap/fe/macros/messagebundle_en_GB.properties +16 -8
  141. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +16 -8
  142. package/src/sap/fe/macros/messagebundle_es.properties +13 -5
  143. package/src/sap/fe/macros/messagebundle_es_MX.properties +14 -6
  144. package/src/sap/fe/macros/messagebundle_et.properties +13 -5
  145. package/src/sap/fe/macros/messagebundle_fi.properties +14 -6
  146. package/src/sap/fe/macros/messagebundle_fr.properties +14 -6
  147. package/src/sap/fe/macros/messagebundle_fr_CA.properties +15 -7
  148. package/src/sap/fe/macros/messagebundle_hi.properties +11 -3
  149. package/src/sap/fe/macros/messagebundle_hr.properties +11 -3
  150. package/src/sap/fe/macros/messagebundle_hu.properties +10 -2
  151. package/src/sap/fe/macros/messagebundle_id.properties +18 -10
  152. package/src/sap/fe/macros/messagebundle_it.properties +10 -2
  153. package/src/sap/fe/macros/messagebundle_iw.properties +10 -2
  154. package/src/sap/fe/macros/messagebundle_ja.properties +13 -5
  155. package/src/sap/fe/macros/messagebundle_kk.properties +15 -7
  156. package/src/sap/fe/macros/messagebundle_ko.properties +10 -2
  157. package/src/sap/fe/macros/messagebundle_lt.properties +11 -3
  158. package/src/sap/fe/macros/messagebundle_lv.properties +12 -4
  159. package/src/sap/fe/macros/messagebundle_mk.properties +12 -4
  160. package/src/sap/fe/macros/messagebundle_ms.properties +14 -6
  161. package/src/sap/fe/macros/messagebundle_nl.properties +13 -5
  162. package/src/sap/fe/macros/messagebundle_no.properties +12 -4
  163. package/src/sap/fe/macros/messagebundle_pl.properties +12 -4
  164. package/src/sap/fe/macros/messagebundle_pt.properties +13 -5
  165. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -4
  166. package/src/sap/fe/macros/messagebundle_ro.properties +12 -4
  167. package/src/sap/fe/macros/messagebundle_ru.properties +13 -5
  168. package/src/sap/fe/macros/messagebundle_sh.properties +12 -4
  169. package/src/sap/fe/macros/messagebundle_sk.properties +11 -3
  170. package/src/sap/fe/macros/messagebundle_sl.properties +12 -4
  171. package/src/sap/fe/macros/messagebundle_sr.properties +12 -4
  172. package/src/sap/fe/macros/messagebundle_sv.properties +11 -3
  173. package/src/sap/fe/macros/messagebundle_th.properties +11 -3
  174. package/src/sap/fe/macros/messagebundle_tr.properties +10 -2
  175. package/src/sap/fe/macros/messagebundle_uk.properties +17 -9
  176. package/src/sap/fe/macros/messagebundle_vi.properties +12 -4
  177. package/src/sap/fe/macros/messagebundle_zh_CN.properties +11 -3
  178. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -4
  179. package/src/sap/fe/macros/messages/MessageButton.js +55 -36
  180. package/src/sap/fe/macros/messages/MessageButton.ts +64 -39
  181. package/src/sap/fe/macros/messages/MessagePopover.js +2 -2
  182. package/src/sap/fe/macros/messages/MessagePopover.ts +4 -4
  183. package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
  184. package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
  185. package/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -2
  186. package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +0 -1
  187. package/src/sap/fe/macros/share/ShareAPI.js +4 -29
  188. package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
  189. package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
  190. package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
  191. package/src/sap/fe/macros/table/Action.js +24 -2
  192. package/src/sap/fe/macros/table/Action.ts +13 -0
  193. package/src/sap/fe/macros/table/ActionGroup.js +24 -2
  194. package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
  195. package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
  196. package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
  197. package/src/sap/fe/macros/table/ActionOverride.js +24 -2
  198. package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
  199. package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
  200. package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
  201. package/src/sap/fe/macros/table/Column.js +3 -3
  202. package/src/sap/fe/macros/table/Column.ts +2 -2
  203. package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
  204. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +36 -7
  205. package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
  206. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
  207. package/src/sap/fe/macros/table/Table.block.js +137 -108
  208. package/src/sap/fe/macros/table/Table.block.tsx +29 -2
  209. package/src/sap/fe/macros/table/TableAPI.js +143 -133
  210. package/src/sap/fe/macros/table/TableAPI.ts +5 -1
  211. package/src/sap/fe/macros/table/TableDefinition.js +4 -2
  212. package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
  213. package/src/sap/fe/macros/table/TableHelper.js +1 -2
  214. package/src/sap/fe/macros/table/TableHelper.ts +0 -1
  215. package/src/sap/fe/macros/table/TableRuntime.js +26 -7
  216. package/src/sap/fe/macros/table/TableRuntime.ts +33 -5
  217. package/src/sap/fe/macros/table/Utils.js +6 -2
  218. package/src/sap/fe/macros/table/Utils.ts +5 -1
  219. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
  220. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
  221. package/src/sap/fe/macros/table/delegates/TableDelegate.js +25 -20
  222. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +25 -24
  223. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
  224. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
  225. package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
  226. package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
  227. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
  228. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
  229. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
  230. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
  231. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +8 -1
  232. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +10 -0
  233. package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
  234. package/src/sap/fe/macros/table/mixin/TableSharing.ts +9 -1
  235. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +20 -6
  236. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +36 -14
  237. package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -7
  238. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -3
  239. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +16 -5
  240. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +18 -4
@@ -362,6 +362,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/Commo
362
362
  };
363
363
  _this.pushFilterFieldsAndValueHelps = selectionField => {
364
364
  if (Array.isArray(_this._filterFields)) {
365
+ const vf = {
366
+ ...selectionField.visualFilter,
367
+ ...{
368
+ initialChartBindingEnabled: !_this.suspendSelection
369
+ }
370
+ };
365
371
  _this._filterFields?.push(_jsx(InternalFilterField, {
366
372
  idPrefix: generate([_this.id, "FilterField", CommonHelper.getNavigationPath(selectionField.annotationPath)]),
367
373
  vhIdPrefix: generate([_this.id, "FilterFieldValueHelp"]),
@@ -369,7 +375,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/Commo
369
375
  contextPath: _this._getContextPathForFilterField(selectionField, _this._internalContextPath),
370
376
  useSemanticDateRange: _this.useSemanticDateRange,
371
377
  settings: CommonHelper.stringifyCustomData(selectionField.settings),
372
- visualFilter: selectionField.visualFilter !== undefined ? storeObjectValue(selectionField.visualFilter) : undefined,
378
+ visualFilter: selectionField.visualFilter !== undefined ? storeObjectValue(vf) : undefined,
373
379
  editMode: `{internal>/${_this.id}/filterFields/${selectionField.conditionPath}/editMode}`
374
380
  }));
375
381
  }
@@ -759,4 +765,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/Commo
759
765
  _exports = FilterBarBlock;
760
766
  return _exports;
761
767
  }, false);
762
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXMiLCJjaGlsZEZpbHRlckZpZWxkIiwiYWdncmVnYXRpb25PYmplY3QiLCJzbG90TmFtZSIsImtleSIsInJlcGxhY2UiLCJwcm9wZXJ0eSIsImdldEF0dHJpYnV0ZSIsImxhYmVsIiwicmVxdWlyZWQiLCJ0ZW1wbGF0ZSIsIkZpbHRlckJhckJsb2NrIiwiX2RlYyIsImRlZmluZUJ1aWxkaW5nQmxvY2siLCJuYW1lIiwibmFtZXNwYWNlIiwicHVibGljTmFtZXNwYWNlIiwicmV0dXJuVHlwZXMiLCJfZGVjMiIsImJsb2NrQXR0cmlidXRlIiwidHlwZSIsImlzUHVibGljIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJfZGVjMjUiLCJfZGVjMjYiLCJibG9ja0V2ZW50IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiYmxvY2tBZ2dyZWdhdGlvbiIsImhhc1ZpcnR1YWxOb2RlIiwicHJvY2Vzc0FnZ3JlZ2F0aW9ucyIsIl9kZWMzMiIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbmZpZ3VyYXRpb24iLCJtU2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9kZXNjcmlwdG9yMjMiLCJfZGVzY3JpcHRvcjI0IiwiX2Rlc2NyaXB0b3IyNSIsIl9kZXNjcmlwdG9yMjYiLCJfZGVzY3JpcHRvcjI3IiwiX2Rlc2NyaXB0b3IyOCIsIl9kZXNjcmlwdG9yMjkiLCJfZGVzY3JpcHRvcjMwIiwic2hvd0RyYWZ0RWRpdFN0YXRlIiwiX2Rlc2NyaXB0b3IzMSIsImNoZWNrSWZFZGl0aW5nRmlsdGVySXNEaXNhYmxlZCIsInRhcmdldEVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ2FwYWJpbGl0aWVzIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwic29tZSIsInIiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCJ2YWx1ZSIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlcmFibGUiLCJjaGVja0lmQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJpc0RyYWZ0Q29sbGFib3JhdGl2ZSIsImdldEVudGl0eVR5cGVQYXRoIiwibWV0YVBhdGhQYXJ0cyIsImVuZHNXaXRoIiwiZ2V0U2VhcmNoIiwiaGlkZUJhc2ljU2VhcmNoIiwiX2pzeCIsIk1EQ0ZpbHRlckZpZWxkIiwiaWQiLCJnZW5lcmF0ZSIsInBsYWNlaG9sZGVyIiwicHJvcGVydHlLZXkiLCJjb25kaXRpb25zIiwiZGF0YVR5cGUiLCJtYXhDb25kaXRpb25zIiwiZGF0YVR5cGVDb25zdHJhaW50cyIsInByb2Nlc3NTZWxlY3Rpb25GaWVsZHMiLCJkcmFmdEVkaXRTdGF0ZSIsImRyYWZ0U3RhdGVzIiwiRHJhZnRFZGl0U3RhdGUiLCJnZXRFZGl0U3RhdGVzIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJvcGVyYXRvcnMiLCJkaXNwbGF5IiwiY2hpbGRyZW4iLCJjb250ZW50RWRpdCIsIlNlbGVjdCIsIndpZHRoIiwiZm9yY2VTZWxlY3Rpb24iLCJzZWxlY3RlZEtleSIsIml0ZW1zIiwibWFwIiwic3RhdGUiLCJMaXN0SXRlbSIsInRleHQiLCJfdmFsdWVIZWxwcyIsIl9maWx0ZXJGaWVsZHMiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5Iiwic2VsZWN0aW9uRmllbGRzIiwiZ2V0T2JqZWN0IiwiZm9yRWFjaCIsInNlbGVjdGlvbkZpZWxkIiwiYXZhaWxhYmlsaXR5Iiwic2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInB1c2hGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzIiwiYW5ub3RhdGlvblBhdGgiLCJwcm9wZXJ0eUNvbnRleHQiLCJtZXRhUGF0aCIsImdldE1vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJwcm9wZXJ0eU9iamVjdCIsImZpbHRlckNvbnRlbnQiLCJTbG90Q29sdW1uIiwidGVtcGxhdGVJZCIsIkN1c3RvbUZyYWdtZW50QmxvY2siLCJmcmFnbWVudE5hbWUiLCJjb250ZXh0UGF0aCIsIm1heENvbmRpdGlvblZhbHVlIiwiY29udGV4dCIsImRlbGVnYXRlIiwiY29uZGl0aW9uUGF0aCIsIkZpZWxkSGVscGVyIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJzZXR0aW5ncyIsImdldFBhdGgiLCJjb25zdHJhaW50cyIsImRhdGFUeXBlRm9ybWF0T3B0aW9ucyIsImZvcm1hdE9wdGlvbnMiLCJ2YWx1ZUhlbHAiLCJjb250ZW50IiwiQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciIsImJpbmRpbmciLCJGaWx0ZXJVdGlscyIsImNvbmRpdGlvblRvTW9kZWxQYXRoIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJGaWVsZEhlbHBDdXN0b21EYXRhIiwiZG9jdW1lbnRSZWZUZXh0IiwiSW50ZXJuYWxGaWx0ZXJGaWVsZCIsImlkUHJlZml4IiwiQ29tbW9uSGVscGVyIiwiZ2V0TmF2aWdhdGlvblBhdGgiLCJ2aElkUHJlZml4IiwiX2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQiLCJfaW50ZXJuYWxDb250ZXh0UGF0aCIsInN0cmluZ2lmeUN1c3RvbURhdGEiLCJ2aXN1YWxGaWx0ZXIiLCJzdG9yZU9iamVjdFZhbHVlIiwiZWRpdE1vZGUiLCJWYWx1ZUhlbHAiLCJjb25kaXRpb25Nb2RlbCIsImZpbHRlckZpZWxkVmFsdWVIZWxwIiwiTG9nIiwiZXJyb3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwic01ldGFQYXRoIiwiZW50aXR5VHlwZVBhdGgiLCJzcGxpdCIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0UGF0aCIsInBhcmVudENvbnRleHRQYXRoIiwiZnVsbENvbnRleHRQYXRoIiwic09iamVjdFBhdGgiLCJzdGFydHNXaXRoIiwiX2Fubm90YXRpb25QYXRoIiwib0V4dHJhUGFyYW1zIiwiZmlsdGVyRmllbGRzIiwib1Zpc3VhbGl6YXRpb25PYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwib0NvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0IiwicHJvcGVydHlJbmZvIiwiZ2V0U2VsZWN0aW9uRmllbGRzIiwic1Byb3BlcnR5SW5mbyIsIkNvbW1vbiIsIkRyYWZ0Um9vdCIsImRpc2FibGVEcmFmdEVkaXRTdGF0ZUZpbHRlciIsIm9TZWxlY3Rpb25GaWVsZHMiLCJUZW1wbGF0ZU1vZGVsIiwidmlld0RhdGEiLCJtb2RlbHMiLCJnZXREYXRhIiwib0VudGl0eVR5cGUiLCJnZXRFbnRpdHlUeXBlIiwib1NlbGVjdGlvblZhcmlhbnQiLCJnZXRTZWxlY3Rpb25WYXJpYW50Iiwib0VudGl0eVNldENvbnRleHQiLCJnZXRDb250ZXh0Iiwib0ZpbHRlckNvbmRpdGlvbnMiLCJnZXRGaWx0ZXJDb25kaXRpb25zIiwic2VsZWN0aW9uVmFyaWFudCIsImZpbHRlckNvbmRpdGlvbnMiLCJfcHJvY2Vzc1Byb3BlcnR5SW5mb3MiLCJfYXBwbHlJZFRvQ29udGVudCIsIl9hcGlJZCIsIl9jb250ZW50SWQiLCJnZXRDb250ZW50SWQiLCJvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uIiwiZ2V0U2VhcmNoUmVzdHJpY3Rpb25zIiwiQm9vbGVhbiIsIlNlYXJjaGFibGUiLCJqc3giLCJyZW5kZXJBc1hNTCIsImRlc2lnbnRpbWUiLCJnZXREZXNpZ250aW1lIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm1vZGVsIiwiYVBhcmFtZXRlckZpZWxkcyIsInNGZXRjaGVkUHJvcGVydGllcyIsImFGZXRjaGVkUHJvcGVydGllcyIsIkpTT04iLCJwYXJzZSIsImVkaXRTdGF0ZUxhYmVsIiwicHJvcEluZm8iLCJpc1BhcmFtZXRlciIsInBhdGgiLCJpbmNsdWRlcyIsInByb3BlcnR5TG9jYXRpb25QYXRoIiwiZ2V0TG9jYXRpb25Gb3JQcm9wZXJ0eVBhdGgiLCJwcm9wZXJ0eVBhdGgiLCJDb21tb25VdGlscyIsImdldEZpbHRlclJlc3RyaWN0aW9uc0J5UGF0aCIsIlJlcXVpcmVkUHJvcGVydGllcyIsInN0cmluZ2lmeSIsIl9wYXJhbWV0ZXJzIiwiZ2V0UGVyc2lzdGVuY2VQcm92aWRlciIsImZpbHRlckJhcklkIiwiaWdub3JlUGVyc29uYWxpemF0aW9uQ2hhbmdlcyIsIlBlcnNpc3RlbmNlUHJvdmlkZXIiLCJmb3IiLCJtb2RlIiwiZmlsdGVyQmFyQ29udGV4dFBhdGgiLCJhbm5vUGF0aCIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZ2V0VGVtcGxhdGUiLCJpbnRlcm5hbENvbnRleHRQYXRoIiwiZmlsdGVyRGVsZWdhdGUiLCJmaWx0ZXJCYXJEZWxlZ2F0ZSIsIl9wcm9wZXJ0eUluZm9Db250cm9sIiwiZm9ybWF0UHJvcGVydHlJbmZvIiwiRmlsdGVyQmFyQVBJIiwic2VhcmNoIiwiZmlsdGVyQ2hhbmdlZCIsImFmdGVyQ2xlYXIiLCJpbnRlcm5hbFNlYXJjaCIsImludGVybmFsRmlsdGVyQ2hhbmdlZCIsIkZFRmlsdGVyQmFyIiwibGl2ZU1vZGUiLCJ2YXJpYW50QmFja3JlZmVyZW5jZSIsInNob3dBZGFwdEZpbHRlcnNCdXR0b24iLCJzaG93Q2xlYXJCdXR0b24iLCJwMTNuTW9kZSIsImZpbHRlcnNDaGFuZ2VkIiwic3VzcGVuZFNlbGVjdGlvbiIsInNob3dNZXNzYWdlcyIsInRvZ2dsZUNvbnRyb2wiLCJ0b2dnbGVDb250cm9sSWQiLCJpbml0aWFsTGF5b3V0IiwidmlzaWJsZSIsImRlcGVuZGVudHMiLCJiYXNpY1NlYXJjaEZpZWxkIiwiZmlsdGVySXRlbXMiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckJhci5ibG9jay50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQganN4IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBUZW1wbGF0ZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZU1vZGVsXCI7XG5pbXBvcnQge1xuXHRibG9ja0FnZ3JlZ2F0aW9uLFxuXHRibG9ja0F0dHJpYnV0ZSxcblx0YmxvY2tFdmVudCxcblx0ZGVmaW5lQnVpbGRpbmdCbG9ja1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyBzdG9yZU9iamVjdFZhbHVlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZVwiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRTZWxlY3Rpb25WYXJpYW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEZpbHRlckZpZWxkIGFzIENvbnZlcnRlZEZpbHRlckZpZWxkLCBNYW5pZmVzdEZpbHRlckZpZWxkIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvTGlzdFJlcG9ydC9GaWx0ZXJCYXJcIjtcbmltcG9ydCB7IGdldFNlbGVjdGlvbkZpZWxkcyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyQmFyXCI7XG5pbXBvcnQgeyBnZXRTZWFyY2hSZXN0cmljdGlvbnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhTW9kZWxGdW5jdGlvblwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgeyBtYXhDb25kaXRpb25zIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlckZpZWxkSGVscGVyXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgRHJhZnRFZGl0U3RhdGUgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0RyYWZ0RWRpdFN0YXRlXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJGaWVsZCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyRmllbGRcIjtcbmltcG9ydCB7IGdldEZpbHRlckNvbmRpdGlvbnMgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVySGVscGVyXCI7XG5pbXBvcnQgQ3VzdG9tRnJhZ21lbnRCbG9jayBmcm9tIFwic2FwL2ZlL21hY3Jvcy9mcG0vQ3VzdG9tRnJhZ21lbnQuYmxvY2tcIjtcbmltcG9ydCBJbnRlcm5hbEZpbHRlckZpZWxkIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL0ZpbHRlckZpZWxkLmJsb2NrXCI7XG5pbXBvcnQgU2VsZWN0IGZyb20gXCJzYXAvbS9TZWxlY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTGlzdEl0ZW0gZnJvbSBcInNhcC91aS9jb3JlL0xpc3RJdGVtXCI7XG5pbXBvcnQgRmllbGRIZWxwQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvZmllbGRoZWxwL0ZpZWxkSGVscEN1c3RvbURhdGFcIjtcbmltcG9ydCB0eXBlIHsgSUNvbnRleHQgfSBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9YTUxQcmVwcm9jZXNzb3JcIjtcbmltcG9ydCBNRENGaWx0ZXJGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJGaWVsZFwiO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEZpbHRlckJhckJhc2UkRmlsdGVyc0NoYW5nZWRFdmVudCwgRmlsdGVyQmFyQmFzZSRTZWFyY2hFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL2ZpbHRlcmJhci9GaWx0ZXJCYXJCYXNlXCI7XG5pbXBvcnQgUGVyc2lzdGVuY2VQcm92aWRlciBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1BlcnNpc3RlbmNlUHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YVY0Q29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcIi4uL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwiLi4vVmFsdWVIZWxwXCI7XG5pbXBvcnQgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciBmcm9tIFwiLi4vY29udHJvbHMvQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclwiO1xuaW1wb3J0IEZFRmlsdGVyQmFyIGZyb20gXCIuLi9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCBTbG90Q29sdW1uIGZyb20gXCIuLi90YWJsZS9TbG90Q29sdW1uXCI7XG5pbXBvcnQgRmlsdGVyQmFyQVBJIGZyb20gXCIuL0ZpbHRlckJhckFQSVwiO1xuXG5jb25zdCBzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXMgPSBmdW5jdGlvbiAoY2hpbGRGaWx0ZXJGaWVsZDogRWxlbWVudCwgYWdncmVnYXRpb25PYmplY3Q6IEZpbHRlckZpZWxkKTogRmlsdGVyRmllbGQge1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5zbG90TmFtZSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleTtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5LnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5wcm9wZXJ0eSA9IGNoaWxkRmlsdGVyRmllbGQuZ2V0QXR0cmlidXRlKFwicHJvcGVydHlcIikhO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5sYWJlbCA9IGNoaWxkRmlsdGVyRmllbGQuZ2V0QXR0cmlidXRlKFwibGFiZWxcIikhO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5yZXF1aXJlZCA9IGNoaWxkRmlsdGVyRmllbGQuZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIikgPT09IFwidHJ1ZVwiO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC50ZW1wbGF0ZSA9IGNoaWxkRmlsdGVyRmllbGQuZ2V0QXR0cmlidXRlKFwidGVtcGxhdGVcIikgYXMgdW5rbm93biBhcyBDb250cm9sOyAvLyBCdXQgaXQncyBhIHN0cmluZztcblx0cmV0dXJuIGFnZ3JlZ2F0aW9uT2JqZWN0O1xufTtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBGaWx0ZXJCYXIgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6RmlsdGVyQmFyXG4gKiBpZD1cIlNvbWVJRFwiXG4gKiBzaG93QWRhcHRGaWx0ZXJzQnV0dG9uPVwidHJ1ZVwiXG4gKiBwMTNuTW9kZT1bXCJJdGVtXCIsXCJWYWx1ZVwiXVxuICogbGlzdEJpbmRpbmdOYW1lcyA9IFwic2FwLmZlLnRhYmxlQmluZGluZ1wiXG4gKiBsaXZlTW9kZT1cInRydWVcIlxuICogc2VhcmNoPVwiLmhhbmRsZXJzLm9uU2VhcmNoXCJcbiAqIGZpbHRlckNoYW5nZWQ9XCIuaGFuZGxlcnMub25GaWx0ZXJzQ2hhbmdlZFwiXG4gKiAvJmd0O1xuICogPC9wcmU+XG4gKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgRmlsdGVyQmFyIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIEBzaW5jZSAxLjk0LjBcbiAqL1xuQGRlZmluZUJ1aWxkaW5nQmxvY2soe1xuXHRuYW1lOiBcIkZpbHRlckJhclwiLFxuXHRuYW1lc3BhY2U6IFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiLFxuXHRwdWJsaWNOYW1lc3BhY2U6IFwic2FwLmZlLm1hY3Jvc1wiLFxuXHRyZXR1cm5UeXBlczogW1wic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCJdXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsdGVyQmFyQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2Uge1xuXHQvKipcblx0ICogSUQgb2YgdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGlkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0dmlzaWJsZT86IHN0cmluZztcblxuXHQvKipcblx0ICogc2VsZWN0aW9uRmllbGRzIHRvIGJlIGRpc3BsYXllZFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCJcblx0fSlcblx0c2VsZWN0aW9uRmllbGRzPzogQ29udmVydGVkRmlsdGVyRmllbGRbXSB8IENvbnRleHQ7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWx0ZXJCYXJEZWxlZ2F0ZT86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRtZXRhUGF0aD86IENvbnRleHQ7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGg/OiBDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyBwb3NzaWJsZSBlcnJvcnMgZHVyaW5nIHRoZSBzZWFyY2ggaW4gYSBtZXNzYWdlIGJveFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRzaG93TWVzc2FnZXMgPSBmYWxzZTtcblxuXHQvKipcblx0ICogSUQgb2YgdGhlIGFzc2lnbmVkIHZhcmlhbnQgbWFuYWdlbWVudFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHZhcmlhbnRCYWNrcmVmZXJlbmNlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEb24ndCBzaG93IHRoZSBiYXNpYyBzZWFyY2ggZmllbGRcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0aGlkZUJhc2ljU2VhcmNoPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRW5hYmxlcyB0aGUgZmFsbGJhY2sgdG8gc2hvdyBhbGwgZmllbGRzIG9mIHRoZSBFbnRpdHlUeXBlIGFzIGZpbHRlciBmaWVsZHMgaWYgY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzIGFyZSBub3QgcHJlc2VudFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRlbmFibGVGYWxsYmFjayA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHZpc2liaWxpdHkgb2YgdGhlICdBZGFwdCBGaWx0ZXJzJyBidXR0b24gb24gdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRzaG93QWRhcHRGaWx0ZXJzQnV0dG9uID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBwZXJzb25hbGl6YXRpb24gb3B0aW9ucyBmb3IgdGhlIGZpbHRlciBiYXIuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nW11cIlxuXHR9KVxuXHRwMTNuTW9kZSA9IFwiSXRlbSxWYWx1ZVwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwcm9wZXJ0eUluZm8/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgU2VtYXRpYyBEYXRlIFJhbmdlIG9wdGlvbiBmb3IgdGhlIGZpbHRlciBiYXIuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHVzZVNlbWFudGljRGF0ZVJhbmdlID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgb3B0aW9uIGZvciB0aGUgZmlsdGVyIGJhci5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdbXVwiXG5cdH0pXG5cdG5hdmlnYXRpb25Qcm9wZXJ0aWVzPzogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIElmIHNldCwgdGhlIHNlYXJjaCBpcyBhdXRvbWF0aWNhbGx5IHRyaWdnZXJlZCB3aGVuIGEgZmlsdGVyIHZhbHVlIGlzIGNoYW5nZWQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGxpdmVNb2RlID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEZpbHRlciBjb25kaXRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGZpbHRlciBiYXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogZmFsc2Vcblx0fSlcblx0ZmlsdGVyQ29uZGl0aW9ucz86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogSWYgc2V0IHRvIDxjb2RlPnRydWU8L2NvZGU+LCBhbGwgc2VhcmNoIHJlcXVlc3RzIGFyZSBpZ25vcmVkLiBPbmNlIGl0IGhhcyBiZWVuIHNldCB0byA8Y29kZT5mYWxzZTwvY29kZT4sXG5cdCAqIGEgc2VhcmNoIGlzIHRyaWdnZXJlZCBpbW1lZGlhdGVseSBpZiBvbmUgb3IgbW9yZSBzZWFyY2ggcmVxdWVzdHMgaGF2ZSBiZWVuIHRyaWdnZXJlZCBpbiB0aGUgbWVhbnRpbWVcblx0ICogYnV0IHdlcmUgaWdub3JlZCBiYXNlZCBvbiB0aGUgc2V0dGluZy5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0c3VzcGVuZFNlbGVjdGlvbiA9IGZhbHNlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0aXNEcmFmdENvbGxhYm9yYXRpdmUgPSBmYWxzZTtcblxuXHQvKipcblx0ICogSWQgb2YgY29udHJvbCB0aGF0IHdpbGwgYWxsb3cgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIG5vcm1hbCBhbmQgdmlzdWFsIGZpbHRlclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHRvZ2dsZUNvbnRyb2xJZD86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0aW5pdGlhbExheW91dCA9IFwiY29tcGFjdFwiO1xuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSAnQ2xlYXInIGJ1dHRvbiBvbiB0aGUgRmlsdGVyQmFyLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRzaG93Q2xlYXJCdXR0b24gPSBmYWxzZTtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdF9hcHBseUlkVG9Db250ZW50ID0gZmFsc2U7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRkaXNhYmxlRHJhZnRFZGl0U3RhdGVGaWx0ZXIgPSBmYWxzZTtcblxuXHQvKipcblx0ICogVGVtcG9yYXJ5IHdvcmthcm91bmQgb25seVxuXHQgKiBwYXRoIHRvIGNvbnRleHRQYXRoIHRvIGJlIHVzZWQgYnkgY2hpbGQgZmlsdGVyZmllbGRzXG5cdCAqL1xuXHRfaW50ZXJuYWxDb250ZXh0UGF0aCE6IENvbnRleHQ7XG5cblx0X3BhcmFtZXRlcnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRfYW5ub3RhdGlvblBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgc2VhcmNoIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0c2VhcmNoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBmaWx0ZXJDaGFuZ2UgZXZlbnQgb2YgdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRmaWx0ZXJDaGFuZ2VkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBmaWx0ZXJDaGFuZ2VkIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXIuIEV4cG9zZXMgcGFyYW1ldGVycyBmcm9tIHRoZSBNREMgZmlsdGVyIGJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRpbnRlcm5hbEZpbHRlckNoYW5nZWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIHNlYXJjaCBldmVudCBvZiB0aGUgRmlsdGVyQmFyLiBFeHBvc2VzIHBhcmFtZXRlcmVzIGZyb20gdGhlIE1EQyBmaWx0ZXIgYmFyXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGludGVybmFsU2VhcmNoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBhZnRlckNsZWFyIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0YWZ0ZXJDbGVhcj86IHN0cmluZztcblxuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJGaWVsZFwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGhhc1ZpcnR1YWxOb2RlOiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUZpbHRlckZpZWxkUHJvcGVydGllc1xuXHR9KVxuXHRmaWx0ZXJGaWVsZHM/OiBGaWx0ZXJGaWVsZDtcblxuXHRfYXBpSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRfY29udGVudElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X3ZhbHVlSGVscHM6IEFycmF5PHN0cmluZz4gfCBcIlwiIHwgdW5kZWZpbmVkO1xuXG5cdF9maWx0ZXJGaWVsZHM6IEFycmF5PHN0cmluZz4gfCBcIlwiIHwgdW5kZWZpbmVkO1xuXG5cdHNob3dEcmFmdEVkaXRTdGF0ZSA9IGZhbHNlO1xuXG5cdGRlc2lnbnRpbWU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRoaXMgbW9kZSBtdXN0IGJlIHVzZWQgd2hlbiBpdCBpcyBjZXJ0YWluIHRoYXQgYSBjb250cm9sIG11c3Qgbm90IHBlcnNpc3QgaXTCtHMgcGVyc29uYWxpemF0aW9uIHN0YXRlIHVwb24gaW5pdGlhbGl6YXRpb24uXG5cdCAqIEBleHBlcmltZW50YWxcblx0ICogQHNpbmNlIDEuMTM2LjBcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0aWdub3JlUGVyc29uYWxpemF0aW9uQ2hhbmdlcyA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wZXJ0aWVzT2Y8RmlsdGVyQmFyQmxvY2s+LCBjb25maWd1cmF0aW9uOiB1bmtub3duLCBtU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29uZmlndXJhdGlvbiwgbVNldHRpbmdzKTtcblx0XHRpZiAoIXRoaXMubWV0YVBhdGgpIHtcblx0XHRcdExvZy5lcnJvcihcIkNvbnRleHQgUGF0aCBub3QgYXZhaWxhYmxlIGZvciBGaWx0ZXJCYXIgTWFjcm8uXCIpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBzTWV0YVBhdGggPSB0aGlzLm1ldGFQYXRoLmdldFBhdGgoKTtcblx0XHRsZXQgZW50aXR5VHlwZVBhdGggPSBcIlwiO1xuXHRcdGNvbnN0IG1ldGFQYXRoUGFydHMgPSBzTWV0YVBhdGg/LnNwbGl0KFwiL0Bjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIikgfHwgW107IC8vIFswXTogZW50aXR5VHlwZVBhdGgsIFsxXTogU0YgUXVhbGlmaWVyLlxuXHRcdGlmIChtZXRhUGF0aFBhcnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdGVudGl0eVR5cGVQYXRoID0gdGhpcy5nZXRFbnRpdHlUeXBlUGF0aChtZXRhUGF0aFBhcnRzKTtcblx0XHR9XG5cdFx0Y29uc3Qgc0VudGl0eVNldFBhdGggPSBNb2RlbEhlbHBlci5nZXRFbnRpdHlTZXRQYXRoKGVudGl0eVR5cGVQYXRoKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gdGhpcy5jb250ZXh0UGF0aD8uZ2V0TW9kZWwoKTtcblx0XHR0aGlzLl9pbnRlcm5hbENvbnRleHRQYXRoID0gb01ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQoZW50aXR5VHlwZVBhdGgpIGFzIENvbnRleHQ7XG5cdFx0Y29uc3QgYW5ub3RhdGlvblBhdGg6IHN0cmluZyA9IFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiICsgKChtZXRhUGF0aFBhcnRzLmxlbmd0aCAmJiBtZXRhUGF0aFBhcnRzWzFdKSB8fCBcIlwiKTtcblx0XHRjb25zdCBwYXJlbnRDb250ZXh0UGF0aCA9IG1TZXR0aW5ncz8uZnVsbENvbnRleHRQYXRoIGFzIHN0cmluZztcblx0XHRsZXQgc09iamVjdFBhdGggPSBhbm5vdGF0aW9uUGF0aDtcblx0XHRpZiAocGFyZW50Q29udGV4dFBhdGggIT09IFwiXCIgJiYgdGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aC5nZXRQYXRoKCk/LnN0YXJ0c1dpdGgocGFyZW50Q29udGV4dFBhdGgpKSB7XG5cdFx0XHRzT2JqZWN0UGF0aCA9IHNNZXRhUGF0aC5yZXBsYWNlKHBhcmVudENvbnRleHRQYXRoLCBcIlwiKTtcblx0XHR9XG5cdFx0dGhpcy5fYW5ub3RhdGlvblBhdGggPSBhbm5vdGF0aW9uUGF0aDtcblx0XHRjb25zdCBvRXh0cmFQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHsgZmlsdGVyRmllbGRzPzogRmlsdGVyRmllbGQgfT4gPSB7fTtcblx0XHRpZiAodGhpcy5maWx0ZXJGaWVsZHMpIHtcblx0XHRcdG9FeHRyYVBhcmFtc1tzT2JqZWN0UGF0aF0gPSB7XG5cdFx0XHRcdGZpbHRlckZpZWxkczogdGhpcy5maWx0ZXJGaWVsZHNcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb1Zpc3VhbGl6YXRpb25PYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGgpO1xuXHRcdGNvbnN0IG9Db252ZXJ0ZXJDb250ZXh0ID0gdGhpcy5nZXRDb252ZXJ0ZXJDb250ZXh0KG9WaXN1YWxpemF0aW9uT2JqZWN0UGF0aCwgdW5kZWZpbmVkLCBtU2V0dGluZ3MsIG9FeHRyYVBhcmFtcyk7XG5cdFx0aWYgKCF0aGlzLnByb3BlcnR5SW5mbykge1xuXHRcdFx0dGhpcy5wcm9wZXJ0eUluZm8gPSBnZXRTZWxlY3Rpb25GaWVsZHMob0NvbnZlcnRlckNvbnRleHQsIFtdLCBhbm5vdGF0aW9uUGF0aCkuc1Byb3BlcnR5SW5mbztcblx0XHR9XG5cblx0XHRjb25zdCB0YXJnZXRFbnRpdHlTZXQgPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHModGhpcy5tZXRhUGF0aCwgdGhpcy5jb250ZXh0UGF0aCkudGFyZ2V0RW50aXR5U2V0IGFzIEVudGl0eVNldDtcblx0XHRpZiAodGFyZ2V0RW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3QgJiYgIXRoaXMuZGlzYWJsZURyYWZ0RWRpdFN0YXRlRmlsdGVyKSB7XG5cdFx0XHR0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZSA9IHRydWU7XG5cdFx0XHR0aGlzLmNoZWNrSWZFZGl0aW5nRmlsdGVySXNEaXNhYmxlZCh0YXJnZXRFbnRpdHlTZXQpO1xuXHRcdFx0dGhpcy5jaGVja0lmQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKG9NZXRhTW9kZWwgYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRcdH1cblxuXHRcdC8vRmlsdGVyIEZpZWxkcyBhbmQgdmFsdWVzIHRvIHRoZSBmaWVsZCBhcmUgZmlsbGVkIGJhc2VkIG9uIHRoZSBzZWxlY3Rpb25GaWVsZHMgYW5kIHRoaXMgd291bGQgYmUgZW1wdHkgaW4gY2FzZSBvZiBtYWNybyBvdXRzaWRlIHRoZSBGRSB0ZW1wbGF0ZVxuXHRcdGlmICghdGhpcy5zZWxlY3Rpb25GaWVsZHMpIHtcblx0XHRcdGNvbnN0IG9TZWxlY3Rpb25GaWVsZHMgPSBnZXRTZWxlY3Rpb25GaWVsZHMob0NvbnZlcnRlckNvbnRleHQsIFtdLCBhbm5vdGF0aW9uUGF0aCkuc2VsZWN0aW9uRmllbGRzO1xuXHRcdFx0dGhpcy5zZWxlY3Rpb25GaWVsZHMgPSBuZXcgVGVtcGxhdGVNb2RlbChvU2VsZWN0aW9uRmllbGRzLCBvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKS5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIik7XG5cdFx0XHRjb25zdCB2aWV3RGF0YSA9IG1TZXR0aW5ncz8ubW9kZWxzPy52aWV3RGF0YT8uZ2V0RGF0YSgpO1xuXHRcdFx0Y29uc3Qgb0VudGl0eVR5cGUgPSBvQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksXG5cdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50ID0gZ2V0U2VsZWN0aW9uVmFyaWFudChvRW50aXR5VHlwZSwgb0NvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0XHRvRW50aXR5U2V0Q29udGV4dCA9IChvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKS5nZXRDb250ZXh0KHNFbnRpdHlTZXRQYXRoKSBhcyBPRGF0YVY0Q29udGV4dCxcblx0XHRcdFx0b0ZpbHRlckNvbmRpdGlvbnMgPSBnZXRGaWx0ZXJDb25kaXRpb25zKFxuXHRcdFx0XHRcdG9FbnRpdHlTZXRDb250ZXh0IGFzIHVua25vd24gYXMgSUNvbnRleHQsIC8vIFdyb25nIGJ1dCBzb21laG93IHdvcmtzID8sXG5cdFx0XHRcdFx0eyBzZWxlY3Rpb25WYXJpYW50OiBvU2VsZWN0aW9uVmFyaWFudCB9LFxuXHRcdFx0XHRcdG9FbnRpdHlTZXRDb250ZXh0LmdldE9iamVjdCgpLFxuXHRcdFx0XHRcdHZpZXdEYXRhLFxuXHRcdFx0XHRcdHRoaXMuc2hvd0RyYWZ0RWRpdFN0YXRlXG5cdFx0XHRcdCk7XG5cdFx0XHR0aGlzLmZpbHRlckNvbmRpdGlvbnMgPSBvRmlsdGVyQ29uZGl0aW9ucztcblx0XHR9XG5cdFx0dGhpcy5fcHJvY2Vzc1Byb3BlcnR5SW5mb3ModGhpcy5wcm9wZXJ0eUluZm8sIG9NZXRhTW9kZWwpO1xuXG5cdFx0aWYgKHRoaXMuX2FwcGx5SWRUb0NvbnRlbnQpIHtcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5pZCArIFwiOjpGaWx0ZXJCYXJcIjtcblx0XHRcdHRoaXMuX2NvbnRlbnRJZCA9IHRoaXMuaWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5pZDtcblx0XHRcdHRoaXMuX2NvbnRlbnRJZCA9IHRoaXMuZ2V0Q29udGVudElkKHRoaXMuaWQgKyBcIlwiKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5oaWRlQmFzaWNTZWFyY2ggIT09IHRydWUpIHtcblx0XHRcdGNvbnN0IG9TZWFyY2hSZXN0cmljdGlvbkFubm90YXRpb24gPSBnZXRTZWFyY2hSZXN0cmljdGlvbnMoc0VudGl0eVNldFBhdGgsIG9NZXRhTW9kZWwgYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRcdFx0dGhpcy5oaWRlQmFzaWNTZWFyY2ggPSBCb29sZWFuKG9TZWFyY2hSZXN0cmljdGlvbkFubm90YXRpb24gJiYgIW9TZWFyY2hSZXN0cmljdGlvbkFubm90YXRpb24uU2VhcmNoYWJsZSk7XG5cdFx0fVxuXHRcdGpzeC5yZW5kZXJBc1hNTCgoKSA9PiB0aGlzLnByb2Nlc3NTZWxlY3Rpb25GaWVsZHMoKSk7XG5cblx0XHR0aGlzLmRlc2lnbnRpbWUgPSB0aGlzLmdldERlc2lnbnRpbWUoKTtcblx0fVxuXG5cdF9wcm9jZXNzUHJvcGVydHlJbmZvcyhwcm9wZXJ0eUluZm86IHN0cmluZywgbW9kZWw6IE9EYXRhTWV0YU1vZGVsKTogdm9pZCB7XG5cdFx0Y29uc3QgYVBhcmFtZXRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcblx0XHRpZiAocHJvcGVydHlJbmZvKSB7XG5cdFx0XHRjb25zdCBzRmV0Y2hlZFByb3BlcnRpZXMgPSBwcm9wZXJ0eUluZm8ucmVwbGFjZSgvXFxcXHsvZywgXCJ7XCIpLnJlcGxhY2UoL1xcXFx9L2csIFwifVwiKTtcblx0XHRcdGNvbnN0IGFGZXRjaGVkUHJvcGVydGllcyA9IEpTT04ucGFyc2Uoc0ZldGNoZWRQcm9wZXJ0aWVzKTtcblx0XHRcdGNvbnN0IGVkaXRTdGF0ZUxhYmVsID0gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkZJTFRFUkJBUl9FRElUSU5HX1NUQVRVU1wiKTtcblx0XHRcdGFGZXRjaGVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wSW5mbzogUHJvcGVydHlJbmZvKSB7XG5cdFx0XHRcdHByb3BJbmZvLmtleSA9IHByb3BJbmZvLm5hbWU7XG5cdFx0XHRcdGlmIChwcm9wSW5mby5pc1BhcmFtZXRlcikge1xuXHRcdFx0XHRcdGFQYXJhbWV0ZXJGaWVsZHMucHVzaChwcm9wSW5mby5uYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocHJvcEluZm8ucGF0aCA9PT0gXCIkZWRpdFN0YXRlXCIpIHtcblx0XHRcdFx0XHRwcm9wSW5mby5sYWJlbCA9IGVkaXRTdGF0ZUxhYmVsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwcm9wSW5mby5rZXk/LmluY2x1ZGVzKFwiL1wiKSkge1xuXHRcdFx0XHRcdC8vVE8gRE86IE5lZWQgdG8gcGxhY2UgdGhpcyBsb2dpYyBpbiBjb21tb24gcGxhY2Ugd2hlbiB3ZSBjb3ZlciBmaWx0ZXJSZXRyaWN0aW9ucyB3aXRoIHRoaXMgQkxJIEZJT1JJVEVDSFAxLTI1MDgwXG5cdFx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvblBhdGggPSAocHJvcEluZm8gYXMgQ29udmVydGVkRmlsdGVyRmllbGQpLmFubm90YXRpb25QYXRoO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5TG9jYXRpb25QYXRoID0gQ29tbW9uSGVscGVyLmdldExvY2F0aW9uRm9yUHJvcGVydHlQYXRoKG1vZGVsLCBhbm5vdGF0aW9uUGF0aCk7XG5cdFx0XHRcdFx0Y29uc3QgcHJvcGVydHlQYXRoID0gYW5ub3RhdGlvblBhdGgucmVwbGFjZShgJHtwcm9wZXJ0eUxvY2F0aW9uUGF0aH0vYCwgXCJcIik7XG5cdFx0XHRcdFx0cHJvcEluZm8ucmVxdWlyZWQgPSBDb21tb25VdGlscy5nZXRGaWx0ZXJSZXN0cmljdGlvbnNCeVBhdGgocHJvcGVydHlMb2NhdGlvblBhdGgsIG1vZGVsKT8uUmVxdWlyZWRQcm9wZXJ0aWVzPy5pbmNsdWRlcyhcblx0XHRcdFx0XHRcdHByb3BlcnR5UGF0aFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLnByb3BlcnR5SW5mbyA9IEpTT04uc3RyaW5naWZ5KGFGZXRjaGVkUHJvcGVydGllcykucmVwbGFjZSgvXFx7L2csIFwiXFxcXHtcIikucmVwbGFjZSgvXFx9L2csIFwiXFxcXH1cIik7XG5cdFx0fVxuXHRcdHRoaXMuX3BhcmFtZXRlcnMgPSBKU09OLnN0cmluZ2lmeShhUGFyYW1ldGVyRmllbGRzKTtcblx0fVxuXG5cdGNoZWNrSWZFZGl0aW5nRmlsdGVySXNEaXNhYmxlZCA9ICh0YXJnZXRFbnRpdHlTZXQ6IEVudGl0eVNldCk6IHZvaWQgPT4ge1xuXHRcdGlmIChcblx0XHRcdHRhcmdldEVudGl0eVNldC5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzPy5OYXZpZ2F0aW9uUmVzdHJpY3Rpb25zPy5SZXN0cmljdGVkUHJvcGVydGllcz8uc29tZShcblx0XHRcdFx0KHIpID0+IHIuTmF2aWdhdGlvblByb3BlcnR5Py52YWx1ZSA9PT0gXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YVwiICYmIHIuRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJhYmxlID09PSBmYWxzZVxuXHRcdFx0KSA9PT0gdHJ1ZVxuXHRcdCkge1xuXHRcdFx0dGhpcy5zaG93RHJhZnRFZGl0U3RhdGUgPSBmYWxzZTtcblx0XHR9XG5cdH07XG5cblx0Y2hlY2tJZkNvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCA9IChvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCk6IHZvaWQgPT4ge1xuXHRcdGlmIChNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChvTWV0YU1vZGVsKSkge1xuXHRcdFx0dGhpcy5pc0RyYWZ0Q29sbGFib3JhdGl2ZSA9IHRydWU7XG5cdFx0fVxuXHR9O1xuXG5cdGdldEVudGl0eVR5cGVQYXRoID0gKG1ldGFQYXRoUGFydHM6IHN0cmluZ1tdKTogc3RyaW5nID0+IHtcblx0XHRyZXR1cm4gbWV0YVBhdGhQYXJ0c1swXS5lbmRzV2l0aChcIi9cIikgPyBtZXRhUGF0aFBhcnRzWzBdIDogbWV0YVBhdGhQYXJ0c1swXSArIFwiL1wiO1xuXHR9O1xuXG5cdGdldFNlYXJjaCA9ICgpOiBzdHJpbmcgPT4ge1xuXHRcdGlmICghdGhpcy5oaWRlQmFzaWNTZWFyY2gpIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxNRENGaWx0ZXJGaWVsZFxuXHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJCYXNpY1NlYXJjaEZpZWxkXCJdKX1cblx0XHRcdFx0XHRsYWJlbD17XCJcIn1cblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIntzYXAuZmUuaTE4bj5NX0ZJTFRFUkJBUl9TRUFSQ0h9XCJcblx0XHRcdFx0XHRwcm9wZXJ0eUtleT1cIiRzZWFyY2hcIlxuXHRcdFx0XHRcdGNvbmRpdGlvbnM9XCJ7JGZpbHRlcnM+L2NvbmRpdGlvbnMvJHNlYXJjaH1cIlxuXHRcdFx0XHRcdGRhdGFUeXBlPVwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nXCJcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zPVwiMVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGVDb25zdHJhaW50cz1cInsnbWF4TGVuZ3RoJzoxMDAwfVwiXG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fTtcblxuXHRwcm9jZXNzU2VsZWN0aW9uRmllbGRzID0gKCk6IHZvaWQgPT4ge1xuXHRcdGxldCBkcmFmdEVkaXRTdGF0ZSA9IFwiXCI7XG5cdFx0aWYgKHRoaXMuc2hvd0RyYWZ0RWRpdFN0YXRlKSB7XG5cdFx0XHRjb25zdCBkcmFmdFN0YXRlcyA9IERyYWZ0RWRpdFN0YXRlLmdldEVkaXRTdGF0ZXModGhpcy5pc0RyYWZ0Q29sbGFib3JhdGl2ZSk7XG5cdFx0XHRjb25zdCBsYWJlbCA9IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJGSUxURVJCQVJfRURJVElOR19TVEFUVVNcIik7XG5cdFx0XHRkcmFmdEVkaXRTdGF0ZSA9IChcblx0XHRcdFx0PE1EQ0ZpbHRlckZpZWxkXG5cdFx0XHRcdFx0bGFiZWw9e2xhYmVsfVxuXHRcdFx0XHRcdGNvbmRpdGlvbnM9XCJ7JGZpbHRlcnM+L2NvbmRpdGlvbnMvJGVkaXRTdGF0ZX1cIlxuXHRcdFx0XHRcdG1heENvbmRpdGlvbnM9XCIxXCJcblx0XHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRcIiwgXCJEcmFmdEVkaXRpbmdTdGF0dXNcIl0pfVxuXHRcdFx0XHRcdG9wZXJhdG9ycz1cIkVRXCJcblx0XHRcdFx0XHRkYXRhVHlwZT1cInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiXG5cdFx0XHRcdFx0cHJvcGVydHlLZXk9XCIkZWRpdFN0YXRlXCJcblx0XHRcdFx0XHRkaXNwbGF5PVwiRGVzY3JpcHRpb25cIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGNvbnRlbnRFZGl0OiAoXG5cdFx0XHRcdFx0XHRcdDxTZWxlY3Rcblx0XHRcdFx0XHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRcIiwgXCJEcmFmdEVkaXRpbmdTdGF0dXNTZWxlY3RcIl0pfVxuXHRcdFx0XHRcdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdFx0XHRcdFx0Zm9yY2VTZWxlY3Rpb249XCJ0cnVlXCJcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3RlZEtleT1cIntwYXRoOiAnJGZpZWxkPi9jb25kaXRpb25zJywgdHlwZTogJ3NhcC51aS5tZGMuZmllbGQuQ29uZGl0aW9uc1R5cGUnfVwiXG5cdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHR7eyBpdGVtczogZHJhZnRTdGF0ZXMubWFwKChzdGF0ZSkgPT4gPExpc3RJdGVtIGtleT17c3RhdGUuaWR9IHRleHQ9e3N0YXRlLmRpc3BsYXl9IC8+KSB9fVxuXHRcdFx0XHRcdFx0XHQ8L1NlbGVjdD5cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L01EQ0ZpbHRlckZpZWxkPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0dGhpcy5fdmFsdWVIZWxwcyA9IFtdO1xuXHRcdHRoaXMuX2ZpbHRlckZpZWxkcyA9IFtdO1xuXHRcdHRoaXMuX2ZpbHRlckZpZWxkcz8ucHVzaChkcmFmdEVkaXRTdGF0ZSk7XG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0aW9uRmllbGRzKSkge1xuXHRcdFx0dGhpcy5zZWxlY3Rpb25GaWVsZHMgPSB0aGlzLnNlbGVjdGlvbkZpZWxkcyEuZ2V0T2JqZWN0KCkgYXMgQ29udmVydGVkRmlsdGVyRmllbGRbXTtcblx0XHR9XG5cdFx0dGhpcy5zZWxlY3Rpb25GaWVsZHM/LmZvckVhY2goKHNlbGVjdGlvbkZpZWxkOiBDb252ZXJ0ZWRGaWx0ZXJGaWVsZCkgPT4ge1xuXHRcdFx0aWYgKHNlbGVjdGlvbkZpZWxkLmF2YWlsYWJpbGl0eSA9PT0gXCJEZWZhdWx0XCIpIHtcblx0XHRcdFx0dGhpcy5zZXRGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzKHNlbGVjdGlvbkZpZWxkKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLl9maWx0ZXJGaWVsZHMgPSB0aGlzLl9maWx0ZXJGaWVsZHM/Lmxlbmd0aCA+IDAgPyB0aGlzLl9maWx0ZXJGaWVsZHMgOiBcIlwiO1xuXHRcdHRoaXMuX3ZhbHVlSGVscHMgPSB0aGlzLl92YWx1ZUhlbHBzPy5sZW5ndGggPiAwID8gdGhpcy5fdmFsdWVIZWxwcyA6IFwiXCI7XG5cdH07XG5cblx0Z2V0UGVyc2lzdGVuY2VQcm92aWRlcihmaWx0ZXJCYXJJZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5pZ25vcmVQZXJzb25hbGl6YXRpb25DaGFuZ2VzKSB7XG5cdFx0XHRyZXR1cm4gPFBlcnNpc3RlbmNlUHJvdmlkZXIgaWQ9e2dlbmVyYXRlKFtmaWx0ZXJCYXJJZCwgXCJQZXJzaXN0ZW5jZVByb3ZpZGVyXCJdKX0gZm9yPXtmaWx0ZXJCYXJJZH0gbW9kZT17XCJUcmFuc2llbnRcIn0gLz47XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRzZXRGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzID0gKHNlbGVjdGlvbkZpZWxkOiBDb252ZXJ0ZWRGaWx0ZXJGaWVsZCk6IHZvaWQgPT4ge1xuXHRcdGlmIChzZWxlY3Rpb25GaWVsZC50ZW1wbGF0ZSA9PT0gdW5kZWZpbmVkICYmIHNlbGVjdGlvbkZpZWxkLnR5cGUgIT09IFwiU2xvdFwiKSB7XG5cdFx0XHR0aGlzLnB1c2hGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzKHNlbGVjdGlvbkZpZWxkKTtcblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5fZmlsdGVyRmllbGRzKSkge1xuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSBzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aDtcblx0XHRcdGNvbnN0IHByb3BlcnR5Q29udGV4dCA9IHRoaXMubWV0YVBhdGghLmdldE1vZGVsKCkuY3JlYXRlQmluZGluZ0NvbnRleHQocHJvcGVydHkpO1xuXHRcdFx0Y29uc3QgcHJvcGVydHlPYmplY3QgPSBwcm9wZXJ0eUNvbnRleHQ/LmdldE9iamVjdCgpO1xuXHRcdFx0bGV0IGZpbHRlckNvbnRlbnQ7XG5cdFx0XHRpZiAoc2VsZWN0aW9uRmllbGQudHlwZSA9PT0gXCJTbG90XCIpIHtcblx0XHRcdFx0ZmlsdGVyQ29udGVudCA9IChcblx0XHRcdFx0XHQ8U2xvdENvbHVtbiB0ZW1wbGF0ZUlkPXtzZWxlY3Rpb25GaWVsZC50ZW1wbGF0ZX0+XG5cdFx0XHRcdFx0XHQ8c2xvdCBuYW1lPXsoc2VsZWN0aW9uRmllbGQgYXMgTWFuaWZlc3RGaWx0ZXJGaWVsZCkuc2xvdE5hbWUhfSAvPlxuXHRcdFx0XHRcdDwvU2xvdENvbHVtbj5cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSBpZiAoc2VsZWN0aW9uRmllbGQudGVtcGxhdGUpIHtcblx0XHRcdFx0ZmlsdGVyQ29udGVudCA9IChcblx0XHRcdFx0XHQ8Q3VzdG9tRnJhZ21lbnRCbG9ja1xuXHRcdFx0XHRcdFx0ZnJhZ21lbnROYW1lPXtzZWxlY3Rpb25GaWVsZC50ZW1wbGF0ZX1cblx0XHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJDdXN0b21GaWx0ZXJGaWVsZFwiLCBzZWxlY3Rpb25GaWVsZC5rZXldKX1cblx0XHRcdFx0XHRcdGNvbnRleHRQYXRoPXtcIntjb250ZXh0UGF0aD59XCIgYXMgdW5rbm93biBhcyBDb250ZXh0fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRsZXQgbWF4Q29uZGl0aW9uVmFsdWUgPSAtMTtcblx0XHRcdGlmIChwcm9wZXJ0eUNvbnRleHQpIHtcblx0XHRcdFx0bWF4Q29uZGl0aW9uVmFsdWUgPSBtYXhDb25kaXRpb25zKHNlbGVjdGlvbkZpZWxkLmFubm90YXRpb25QYXRoLCB7IGNvbnRleHQ6IHByb3BlcnR5Q29udGV4dCB9KSA/PyAtMTtcblx0XHRcdH1cblx0XHRcdHRoaXMuX2ZpbHRlckZpZWxkcz8ucHVzaChcblx0XHRcdFx0PE1EQ0ZpbHRlckZpZWxkXG5cdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkN1c3RvbUZpbHRlckZpZWxkXCIsIHNlbGVjdGlvbkZpZWxkLmtleV0pfVxuXHRcdFx0XHRcdGRlbGVnYXRlPXt7IG5hbWU6IFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEJhc2VEZWxlZ2F0ZVwiIH19XG5cdFx0XHRcdFx0cHJvcGVydHlLZXk9e3NlbGVjdGlvbkZpZWxkLmNvbmRpdGlvblBhdGh9XG5cdFx0XHRcdFx0bGFiZWw9e3NlbGVjdGlvbkZpZWxkLmxhYmVsfVxuXHRcdFx0XHRcdGRhdGFUeXBlPXtzZWxlY3Rpb25GaWVsZC5kYXRhVHlwZX1cblx0XHRcdFx0XHRtYXhDb25kaXRpb25zPXttYXhDb25kaXRpb25WYWx1ZX1cblx0XHRcdFx0XHRjb25kaXRpb25zPXtgeyRmaWx0ZXJzPi9jb25kaXRpb25zLyR7c2VsZWN0aW9uRmllbGQuY29uZGl0aW9uUGF0aH19YH1cblx0XHRcdFx0XHRvcGVyYXRvcnM9e0ZpZWxkSGVscGVyLm9wZXJhdG9ycyhcblx0XHRcdFx0XHRcdHByb3BlcnR5Q29udGV4dCxcblx0XHRcdFx0XHRcdHByb3BlcnR5T2JqZWN0LFxuXHRcdFx0XHRcdFx0dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZSxcblx0XHRcdFx0XHRcdHNlbGVjdGlvbkZpZWxkLnNldHRpbmdzIGFzIHVua25vd24gYXMgc3RyaW5nLFxuXHRcdFx0XHRcdFx0dGhpcy5jb250ZXh0UGF0aCEuZ2V0UGF0aCgpXG5cdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRkYXRhVHlwZUNvbnN0cmFpbnRzPXsoc2VsZWN0aW9uRmllbGQgYXMgdW5rbm93biBhcyB7IGNvbnN0cmFpbnRzOiB1bmtub3duIH0pLmNvbnN0cmFpbnRzfVxuXHRcdFx0XHRcdGRhdGFUeXBlRm9ybWF0T3B0aW9ucz17KHNlbGVjdGlvbkZpZWxkIGFzIHVua25vd24gYXMgeyBmb3JtYXRPcHRpb25zOiB1bmtub3duIH0pLmZvcm1hdE9wdGlvbnN9XG5cdFx0XHRcdFx0dmFsdWVIZWxwPXtcInVuZGVmaW5lZFwifVxuXHRcdFx0XHRcdHJlcXVpcmVkPXtzZWxlY3Rpb25GaWVsZC5yZXF1aXJlZH1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHRcdDxDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyXG5cdFx0XHRcdFx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie2hhbmRsZXI6ICdzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlscyd9XCJcblx0XHRcdFx0XHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclwiLCBzZWxlY3Rpb25GaWVsZC5rZXldKX1cblx0XHRcdFx0XHRcdFx0XHRiaW5kaW5nPXtge2ZpbHRlclZhbHVlcz4vJHtGaWx0ZXJVdGlscy5jb25kaXRpb25Ub01vZGVsUGF0aChzZWxlY3Rpb25GaWVsZC5jb25kaXRpb25QYXRoKX19YH1cblx0XHRcdFx0XHRcdFx0XHRjb25kaXRpb25zPXtcIntwYXRoOiAnJGZpZWxkPi9jb25kaXRpb25zJ31cIiBhcyB1bmtub3duIGFzIENvbmRpdGlvbk9iamVjdFtdfVxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0e3sgY29udGVudDogZmlsdGVyQ29udGVudCB9fVxuXHRcdFx0XHRcdFx0XHQ8L0N1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXI+XG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0Y3VzdG9tRGF0YTogW1xuXHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wiaXNTbG90XCJ9IHZhbHVlPXtzZWxlY3Rpb25GaWVsZC50eXBlID09PSBcIlNsb3RcIn0gLz4sXG5cdFx0XHRcdFx0XHRcdDxGaWVsZEhlbHBDdXN0b21EYXRhXG5cdFx0XHRcdFx0XHRcdFx0a2V5PXtcInNhcC11aS1Eb2N1bWVudGF0aW9uUmVmXCJ9XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e2B7cGFydHM6IFt7dmFsdWU6ICdhc0FycmF5J30sIHt2YWx1ZTogJyR7c2VsZWN0aW9uRmllbGQuZG9jdW1lbnRSZWZUZXh0fSd9XSwgZm9ybWF0dGVyOiAnc2FwLmZlLmNvcmUuZm9ybWF0dGVycy5TdGFuZGFyZEZvcm1hdHRlcid9YH1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L01EQ0ZpbHRlckZpZWxkPlxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cblx0X2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQoc2VsZWN0aW9uRmllbGQ6IENvbnZlcnRlZEZpbHRlckZpZWxkLCBmaWx0ZXJCYXJDb250ZXh0UGF0aDogQ29udGV4dCk6IHN0cmluZyB7XG5cdFx0bGV0IGNvbnRleHRQYXRoOiBzdHJpbmcgPSBmaWx0ZXJCYXJDb250ZXh0UGF0aD8uZ2V0UGF0aCgpO1xuXHRcdGlmIChzZWxlY3Rpb25GaWVsZC5pc1BhcmFtZXRlcikge1xuXHRcdFx0Ly8gRXhhbXBsZTpcblx0XHRcdC8vIEZpbHRlckJhckNvbnRleHRQYXRoOiAvQ3VzdG9tZXIvU2V0XG5cdFx0XHQvLyBQYXJhbWV0ZXJQcm9wZXJ0eVBhdGg6IC9DdXN0b21lci9QX0NDXG5cdFx0XHQvLyBDb250ZXh0UGF0aEZvckZpbHRlckZpZWxkOiAvQ3VzdG9tZXJcblx0XHRcdGNvbnN0IGFubm9QYXRoID0gc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRjb250ZXh0UGF0aCA9IGFubm9QYXRoLnN1YnN0cmluZygwLCBhbm5vUGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRQYXRoO1xuXHR9XG5cblx0cHVzaEZpbHRlckZpZWxkc0FuZFZhbHVlSGVscHMgPSAoc2VsZWN0aW9uRmllbGQ6IENvbnZlcnRlZEZpbHRlckZpZWxkKTogdm9pZCA9PiB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5fZmlsdGVyRmllbGRzKSkge1xuXHRcdFx0dGhpcy5fZmlsdGVyRmllbGRzPy5wdXNoKFxuXHRcdFx0XHQ8SW50ZXJuYWxGaWx0ZXJGaWVsZFxuXHRcdFx0XHRcdGlkUHJlZml4PXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZFwiLCBDb21tb25IZWxwZXIuZ2V0TmF2aWdhdGlvblBhdGgoc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGgpXSl9XG5cdFx0XHRcdFx0dmhJZFByZWZpeD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRWYWx1ZUhlbHBcIl0pfVxuXHRcdFx0XHRcdHByb3BlcnR5PXtzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aCBhcyB1bmtub3duIGFzIENvbnRleHR9XG5cdFx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuX2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQoc2VsZWN0aW9uRmllbGQsIHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGgpIGFzIHVua25vd24gYXMgQ29udGV4dH1cblx0XHRcdFx0XHR1c2VTZW1hbnRpY0RhdGVSYW5nZT17dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZX1cblx0XHRcdFx0XHRzZXR0aW5ncz17Q29tbW9uSGVscGVyLnN0cmluZ2lmeUN1c3RvbURhdGEoc2VsZWN0aW9uRmllbGQuc2V0dGluZ3MpfVxuXHRcdFx0XHRcdHZpc3VhbEZpbHRlcj17XG5cdFx0XHRcdFx0XHRzZWxlY3Rpb25GaWVsZC52aXN1YWxGaWx0ZXIgIT09IHVuZGVmaW5lZFxuXHRcdFx0XHRcdFx0XHQ/IChzdG9yZU9iamVjdFZhbHVlKHNlbGVjdGlvbkZpZWxkLnZpc3VhbEZpbHRlcikgYXMgdW5rbm93biBhcyBDb250ZXh0KVxuXHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlZGl0TW9kZT17YHtpbnRlcm5hbD4vJHt0aGlzLmlkfS9maWx0ZXJGaWVsZHMvJHtzZWxlY3Rpb25GaWVsZC5jb25kaXRpb25QYXRofS9lZGl0TW9kZX1gfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5fdmFsdWVIZWxwcykpIHtcblx0XHRcdHRoaXMuX3ZhbHVlSGVscHM/LnB1c2goXG5cdFx0XHRcdDxWYWx1ZUhlbHBcblx0XHRcdFx0XHRpZFByZWZpeD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRWYWx1ZUhlbHBcIl0pfVxuXHRcdFx0XHRcdGNvbmRpdGlvbk1vZGVsPVwiJGZpbHRlcnNcIlxuXHRcdFx0XHRcdG1ldGFQYXRoPXtzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aH1cblx0XHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5fZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZChzZWxlY3Rpb25GaWVsZCwgdGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCl9XG5cdFx0XHRcdFx0ZmlsdGVyRmllbGRWYWx1ZUhlbHA9e3RydWV9XG5cdFx0XHRcdFx0dXNlU2VtYW50aWNEYXRlUmFuZ2U9e3RoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2V9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB0aGUgZGVzaWduIHRpbWUgZm9yIHRoZSBNREMgRmlsdGVyQmFyLlxuXHQgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gZHQ6ZGVzaWdudGltZVxuXHQgKi9cblx0Z2V0RGVzaWdudGltZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL2Rlc2lnbnRpbWUvRmlsdGVyQmFyLmRlc2lnbnRpbWVcIjtcblx0fVxuXG5cdGdldFRlbXBsYXRlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgaW50ZXJuYWxDb250ZXh0UGF0aCA9IHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGg/LmdldFBhdGgoKTtcblx0XHRsZXQgZmlsdGVyRGVsZWdhdGUgPSBcIlwiO1xuXHRcdGlmICh0aGlzLmZpbHRlckJhckRlbGVnYXRlKSB7XG5cdFx0XHRmaWx0ZXJEZWxlZ2F0ZSA9IHRoaXMuZmlsdGVyQmFyRGVsZWdhdGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZpbHRlckRlbGVnYXRlID0gXCJ7bmFtZTonc2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyRGVsZWdhdGUnLCBwYXlsb2FkOiB7ZW50aXR5VHlwZVBhdGg6ICdcIiArIGludGVybmFsQ29udGV4dFBhdGggKyBcIid9fVwiO1xuXHRcdH1cblx0XHQvLyBhZnRlciByZW1vdmluZyB0aGUgdW53YW50ZWQgcHJvcGVydGllcyBQcm9wZXJ0eUluZm8gaXMgYWRkZWQgdG8gdGhlIGNvbnRyb2wsIGFuZCB3ZSBhbHNvIHNhdmUgdGhlIGZ1bGwgdmVyc2lvbiBhcyBjdXN0b20gZGF0YSBmb3IgRkUgaW50ZXJuYWwgdXNlXG5cdFx0Y29uc3QgX3Byb3BlcnR5SW5mb0NvbnRyb2wgPSBGaWx0ZXJVdGlscy5mb3JtYXRQcm9wZXJ0eUluZm8odGhpcy5wcm9wZXJ0eUluZm8gYXMgc3RyaW5nKTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEZpbHRlckJhckFQSVxuXHRcdFx0XHRpZD17dGhpcy5fYXBpSWR9XG5cdFx0XHRcdG1ldGFQYXRoPXt0aGlzLm1ldGFQYXRoIS5nZXRQYXRoKCl9XG5cdFx0XHRcdHNlYXJjaD17dGhpcy5zZWFyY2h9XG5cdFx0XHRcdGZpbHRlckNoYW5nZWQ9e3RoaXMuZmlsdGVyQ2hhbmdlZH1cblx0XHRcdFx0YWZ0ZXJDbGVhcj17dGhpcy5hZnRlckNsZWFyfVxuXHRcdFx0XHRpbnRlcm5hbFNlYXJjaD17dGhpcy5pbnRlcm5hbFNlYXJjaH1cblx0XHRcdFx0aW50ZXJuYWxGaWx0ZXJDaGFuZ2VkPXt0aGlzLmludGVybmFsRmlsdGVyQ2hhbmdlZH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8RkVGaWx0ZXJCYXJcblx0XHRcdFx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0FQSTogJ3NhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckFQSSd9XCJcblx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuX2NvbnRlbnRJZH1cblx0XHRcdFx0XHRcdFx0bGl2ZU1vZGU9e3RoaXMubGl2ZU1vZGV9XG5cdFx0XHRcdFx0XHRcdGRlbGVnYXRlPXtmaWx0ZXJEZWxlZ2F0ZX1cblx0XHRcdFx0XHRcdFx0dmFyaWFudEJhY2tyZWZlcmVuY2U9e3RoaXMubGl2ZU1vZGUgPyB1bmRlZmluZWQgOiB0aGlzLnZhcmlhbnRCYWNrcmVmZXJlbmNlfVxuXHRcdFx0XHRcdFx0XHRzaG93QWRhcHRGaWx0ZXJzQnV0dG9uPXt0aGlzLnNob3dBZGFwdEZpbHRlcnNCdXR0b259XG5cdFx0XHRcdFx0XHRcdHNob3dDbGVhckJ1dHRvbj17dGhpcy5zaG93Q2xlYXJCdXR0b259XG5cdFx0XHRcdFx0XHRcdHAxM25Nb2RlPXt0aGlzLnAxM25Nb2RlfVxuXHRcdFx0XHRcdFx0XHRzZWFyY2g9e1wiQVBJLmhhbmRsZVNlYXJjaCgkZXZlbnQpXCIgYXMgdW5rbm93biBhcyAoZTogRmlsdGVyQmFyQmFzZSRTZWFyY2hFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0XHRcdFx0ZmlsdGVyc0NoYW5nZWQ9e1wiQVBJLmhhbmRsZUZpbHRlckNoYW5nZWQoJGV2ZW50KVwiIGFzIHVua25vd24gYXMgKGU6IEZpbHRlckJhckJhc2UkRmlsdGVyc0NoYW5nZWRFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0XHRcdFx0ZmlsdGVyQ29uZGl0aW9ucz17dGhpcy5maWx0ZXJDb25kaXRpb25zfVxuXHRcdFx0XHRcdFx0XHRzdXNwZW5kU2VsZWN0aW9uPXt0aGlzLnN1c3BlbmRTZWxlY3Rpb259XG5cdFx0XHRcdFx0XHRcdHNob3dNZXNzYWdlcz17dGhpcy5zaG93TWVzc2FnZXN9XG5cdFx0XHRcdFx0XHRcdHRvZ2dsZUNvbnRyb2w9e3RoaXMudG9nZ2xlQ29udHJvbElkfVxuXHRcdFx0XHRcdFx0XHRpbml0aWFsTGF5b3V0PXt0aGlzLmluaXRpYWxMYXlvdXR9XG5cdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMudmlzaWJsZX1cblx0XHRcdFx0XHRcdFx0ZHQ6ZGVzaWdudGltZT17dGhpcy5kZXNpZ250aW1lfVxuXHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhOmVudGl0eVR5cGU9e2ludGVybmFsQ29udGV4dFBhdGh9XG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YTogW1xuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcImxvY2FsSWRcIn0gdmFsdWU9e3RoaXMuaWR9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcImhpZGVCYXNpY1NlYXJjaFwifSB2YWx1ZT17dGhpcy5oaWRlQmFzaWNTZWFyY2h9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcInNob3dEcmFmdEVkaXRTdGF0ZVwifSB2YWx1ZT17dGhpcy5zaG93RHJhZnRFZGl0U3RhdGV9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcInVzZVNlbWFudGljRGF0ZVJhbmdlXCJ9IHZhbHVlPXt0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJwYXJhbWV0ZXJzXCJ9IHZhbHVlPXt0aGlzLl9wYXJhbWV0ZXJzfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJmZUZpbHRlckluZm9cIn0gdmFsdWU9e3RoaXMucHJvcGVydHlJbmZvfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJhbm5vdGF0aW9uUGF0aFwifSB2YWx1ZT17dGhpcy5fYW5ub3RhdGlvblBhdGh9IC8+XG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0XHRkZXBlbmRlbnRzOiBbdGhpcy5fdmFsdWVIZWxwcywgdGhpcy5nZXRQZXJzaXN0ZW5jZVByb3ZpZGVyKHRoaXMuX2NvbnRlbnRJZCBhcyBzdHJpbmcpXSxcblx0XHRcdFx0XHRcdFx0XHRiYXNpY1NlYXJjaEZpZWxkOiB0aGlzLmdldFNlYXJjaCgpLFxuXHRcdFx0XHRcdFx0XHRcdGZpbHRlckl0ZW1zOiB0aGlzLl9maWx0ZXJGaWVsZHNcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvRkVGaWx0ZXJCYXI+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9GaWx0ZXJCYXJBUEk+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtREEsTUFBTUEsOEJBQThCLEdBQUcsU0FBQUEsQ0FBVUMsZ0JBQXlCLEVBQUVDLGlCQUE4QixFQUFlO0lBQ3hIQSxpQkFBaUIsQ0FBQ0MsUUFBUSxHQUFHRCxpQkFBaUIsQ0FBQ0UsR0FBRztJQUNsREYsaUJBQWlCLENBQUNFLEdBQUcsR0FBR0YsaUJBQWlCLENBQUNFLEdBQUcsQ0FBQ0MsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7SUFDdkVILGlCQUFpQixDQUFDSSxRQUFRLEdBQUdMLGdCQUFnQixDQUFDTSxZQUFZLENBQUMsVUFBVSxDQUFFO0lBQ3ZFTCxpQkFBaUIsQ0FBQ00sS0FBSyxHQUFHUCxnQkFBZ0IsQ0FBQ00sWUFBWSxDQUFDLE9BQU8sQ0FBRTtJQUNqRUwsaUJBQWlCLENBQUNPLFFBQVEsR0FBR1IsZ0JBQWdCLENBQUNNLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNO0lBQ2pGTCxpQkFBaUIsQ0FBQ1EsUUFBUSxHQUFHVCxnQkFBZ0IsQ0FBQ00sWUFBWSxDQUFDLFVBQVUsQ0FBdUIsQ0FBQyxDQUFDO0lBQzlGLE9BQU9MLGlCQUFpQjtFQUN6QixDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFuQkEsSUEwQnFCUyxjQUFjLElBQUFDLElBQUEsR0FObENDLG1CQUFtQixDQUFDO0lBQ3BCQyxJQUFJLEVBQUUsV0FBVztJQUNqQkMsU0FBUyxFQUFFLHdCQUF3QjtJQUNuQ0MsZUFBZSxFQUFFLGVBQWU7SUFDaENDLFdBQVcsRUFBRSxDQUFDLHNDQUFzQztFQUNyRCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUtBQyxjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFLFFBQVE7SUFDZEMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHREgsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxTQUFTO0lBQ2ZDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBTURKLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQUksS0FBQSxHQUdETCxjQUFjLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FHbENOLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsc0JBQXNCO0lBQzVCQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUssS0FBQSxHQUdEUCxjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QkMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFNLEtBQUEsR0FNRFIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxTQUFTO0lBQ2ZDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBTyxLQUFBLEdBTURULGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQVMsTUFBQSxHQU1EVixjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFVLE1BQUEsR0FNRFgsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBVyxNQUFBLEdBTURaLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQVksTUFBQSxHQU1EYixjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFhLE1BQUEsR0FHRGQsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBYyxNQUFBLEdBTURmLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWUsTUFBQSxHQU1EaEIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBZ0IsTUFBQSxHQU1EakIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxTQUFTO0lBQ2ZDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBZ0IsTUFBQSxHQU1EbEIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxRQUFRO0lBQ2RYLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBNkIsTUFBQSxHQVFEbkIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBbUIsTUFBQSxHQUdEcEIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBb0IsTUFBQSxHQU1EckIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBcUIsTUFBQSxHQUdEdEIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBc0IsTUFBQSxHQU1EdkIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxTQUFTO0lBQ2ZDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBc0IsTUFBQSxHQUdEeEIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBd0IsTUFBQSxHQUdEekIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBeUIsTUFBQSxHQWdCREMsVUFBVSxDQUFDLENBQUMsRUFBQUMsTUFBQSxHQU1aRCxVQUFVLENBQUMsQ0FBQyxFQUFBRSxNQUFBLEdBTVpGLFVBQVUsQ0FBQyxDQUFDLEVBQUFHLE1BQUEsR0FNWkgsVUFBVSxDQUFDLENBQUMsRUFBQUksTUFBQSxHQU1aSixVQUFVLENBQUMsQ0FBQyxFQUFBSyxNQUFBLEdBR1pDLGdCQUFnQixDQUFDO0lBQ2pCaEMsSUFBSSxFQUFFLHFDQUFxQztJQUMzQ0MsUUFBUSxFQUFFLElBQUk7SUFDZGdDLGNBQWMsRUFBRSxJQUFJO0lBQ3BCQyxtQkFBbUIsRUFBRXREO0VBQ3RCLENBQUMsQ0FBQyxFQUFBdUQsTUFBQSxHQW9CRHBDLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsU0FBUztJQUNmQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQVQsSUFBQSxDQUFBNEMsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxxQkFBQTtJQUdGLFNBQUEvQyxlQUFZZ0QsS0FBbUMsRUFBRUMsYUFBc0IsRUFBRUMsU0FBb0MsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDOUdBLEtBQUEsR0FBQUoscUJBQUEsQ0FBQUssSUFBQSxPQUFNSixLQUFLLEVBQUVDLGFBQWEsRUFBRUMsU0FBUyxDQUFDO01BclB2QztBQUNEO0FBQ0E7TUFGQ0csMEJBQUEsQ0FBQUYsS0FBQSxRQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxhQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFlQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxxQkFBQUssWUFBQSxFQUFBTCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsdUJBQUFNLFlBQUEsRUFBQU4sS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGNBQUFPLFlBQUEsRUFBQVAsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGlCQUFBUSxZQUFBLEVBQUFSLEtBQUE7TUF1QkE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFTLFlBQUEsRUFBQVQsS0FBQTtNQVNBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLDBCQUFBVSxZQUFBLEVBQUFWLEtBQUE7TUFRQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxxQkFBQVcsWUFBQSxFQUFBWCxLQUFBO01BUUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsb0JBQUFZLGFBQUEsRUFBQVosS0FBQTtNQVFBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLDRCQUFBYSxhQUFBLEVBQUFiLEtBQUE7TUFRQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxjQUFBYyxhQUFBLEVBQUFkLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxrQkFBQWUsYUFBQSxFQUFBZixLQUFBO01BYUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsMEJBQUFnQixhQUFBLEVBQUFoQixLQUFBO01BUUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsMEJBQUFpQixhQUFBLEVBQUFqQixLQUFBO01BUUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsY0FBQWtCLGFBQUEsRUFBQWxCLEtBQUE7TUFTQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxzQkFBQW1CLGFBQUEsRUFBQW5CLEtBQUE7TUFTQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO01BSkNFLDBCQUFBLENBQUFGLEtBQUEsc0JBQUFvQixhQUFBLEVBQUFwQixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsMEJBQUFxQixhQUFBLEVBQUFyQixLQUFBO01BZUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEscUJBQUFzQixhQUFBLEVBQUF0QixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsbUJBQUF1QixhQUFBLEVBQUF2QixLQUFBO01BYUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEscUJBQUF3QixhQUFBLEVBQUF4QixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsdUJBQUF5QixhQUFBLEVBQUF6QixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsaUNBQUEwQixhQUFBLEVBQUExQixLQUFBO01BNkJBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLFlBQUEyQixhQUFBLEVBQUEzQixLQUFBO01BTUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsbUJBQUE0QixhQUFBLEVBQUE1QixLQUFBO01BTUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsMkJBQUE2QixhQUFBLEVBQUE3QixLQUFBO01BTUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsb0JBQUE4QixhQUFBLEVBQUE5QixLQUFBO01BTUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsZ0JBQUErQixhQUFBLEVBQUEvQixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFnQyxhQUFBLEVBQUFoQyxLQUFBO01BQUFBLEtBQUEsQ0FzQkFpQyxrQkFBa0IsR0FBRyxLQUFLO01BSTFCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7TUFKQy9CLDBCQUFBLENBQUFGLEtBQUEsa0NBQUFrQyxhQUFBLEVBQUFsQyxLQUFBO01BQUFBLEtBQUEsQ0F1SEFtQyw4QkFBOEIsR0FBSUMsZUFBMEIsSUFBVztRQUN0RSxJQUNDQSxlQUFlLENBQUNDLFdBQVcsRUFBRUMsWUFBWSxFQUFFQyxzQkFBc0IsRUFBRUMsb0JBQW9CLEVBQUVDLElBQUksQ0FDM0ZDLENBQUMsSUFBS0EsQ0FBQyxDQUFDQyxrQkFBa0IsRUFBRUMsS0FBSyxLQUFLLHlCQUF5QixJQUFJRixDQUFDLENBQUNHLGtCQUFrQixFQUFFQyxVQUFVLEtBQUssS0FDMUcsQ0FBQyxLQUFLLElBQUksRUFDVDtVQUNEOUMsS0FBQSxDQUFLaUMsa0JBQWtCLEdBQUcsS0FBSztRQUNoQztNQUNELENBQUM7TUFBQWpDLEtBQUEsQ0FFRCtDLGtDQUFrQyxHQUFJQyxVQUFzQyxJQUFXO1FBQ3RGLElBQUlDLFdBQVcsQ0FBQ0MsNkJBQTZCLENBQUNGLFVBQVUsQ0FBQyxFQUFFO1VBQzFEaEQsS0FBQSxDQUFLbUQsb0JBQW9CLEdBQUcsSUFBSTtRQUNqQztNQUNELENBQUM7TUFBQW5ELEtBQUEsQ0FFRG9ELGlCQUFpQixHQUFJQyxhQUF1QixJQUFhO1FBQ3hELE9BQU9BLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHRCxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUdBLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHO01BQ2xGLENBQUM7TUFBQXJELEtBQUEsQ0FFRHVELFNBQVMsR0FBRyxNQUFjO1FBQ3pCLElBQUksQ0FBQ3ZELEtBQUEsQ0FBS3dELGVBQWUsRUFBRTtVQUMxQixPQUNDQyxJQUFBLENBQUNDLGNBQWM7WUFDZEMsRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFFO1lBQzVDakgsS0FBSyxFQUFFLEVBQUc7WUFDVm1ILFdBQVcsRUFBQyxrQ0FBa0M7WUFDOUNDLFdBQVcsRUFBQyxTQUFTO1lBQ3JCQyxVQUFVLEVBQUMsZ0NBQWdDO1lBQzNDQyxRQUFRLEVBQUMsZ0NBQWdDO1lBQ3pDQyxhQUFhLEVBQUMsR0FBRztZQUNqQkMsbUJBQW1CLEVBQUM7VUFBb0IsQ0FDeEMsQ0FBQztRQUVKO1FBQ0EsT0FBTyxFQUFFO01BQ1YsQ0FBQztNQUFBbEUsS0FBQSxDQUVEbUUsc0JBQXNCLEdBQUcsTUFBWTtRQUNwQyxJQUFJQyxjQUFjLEdBQUcsRUFBRTtRQUN2QixJQUFJcEUsS0FBQSxDQUFLaUMsa0JBQWtCLEVBQUU7VUFDNUIsTUFBTW9DLFdBQVcsR0FBR0MsY0FBYyxDQUFDQyxhQUFhLENBQUN2RSxLQUFBLENBQUttRCxvQkFBb0IsQ0FBQztVQUMzRSxNQUFNekcsS0FBSyxHQUFHc0QsS0FBQSxDQUFLd0UsaUJBQWlCLENBQUMsMEJBQTBCLENBQUM7VUFDaEVKLGNBQWMsR0FDYlgsSUFBQSxDQUFDQyxjQUFjO1lBQ2RoSCxLQUFLLEVBQUVBLEtBQU07WUFDYnFILFVBQVUsRUFBQyxtQ0FBbUM7WUFDOUNFLGFBQWEsRUFBQyxHQUFHO1lBQ2pCTixFQUFFLEVBQUVDLFFBQVEsQ0FBQyxDQUFDNUQsS0FBQSxDQUFLMkQsRUFBRSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFFO1lBQzdEYyxTQUFTLEVBQUMsSUFBSTtZQUNkVCxRQUFRLEVBQUMsZ0NBQWdDO1lBQ3pDRixXQUFXLEVBQUMsWUFBWTtZQUN4QlksT0FBTyxFQUFDLGFBQWE7WUFBQUMsUUFBQSxFQUVwQjtjQUNBQyxXQUFXLEVBQ1ZuQixJQUFBLENBQUNvQixNQUFNO2dCQUNObEIsRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSxhQUFhLEVBQUUsMEJBQTBCLENBQUMsQ0FBRTtnQkFDbkVtQixLQUFLLEVBQUMsTUFBTTtnQkFDWkMsY0FBYyxFQUFDLE1BQU07Z0JBQ3JCQyxXQUFXLEVBQUMsdUVBQXVFO2dCQUFBTCxRQUFBLEVBRWxGO2tCQUFFTSxLQUFLLEVBQUVaLFdBQVcsQ0FBQ2EsR0FBRyxDQUFFQyxLQUFLLElBQUsxQixJQUFBLENBQUMyQixRQUFRO29CQUFnQkMsSUFBSSxFQUFFRixLQUFLLENBQUNUO2tCQUFRLEdBQTlCUyxLQUFLLENBQUN4QixFQUEwQixDQUFDO2dCQUFFO2NBQUMsQ0FDakY7WUFFVjtVQUFDLENBQ2MsQ0FDaEI7UUFDRjtRQUNBM0QsS0FBQSxDQUFLc0YsV0FBVyxHQUFHLEVBQUU7UUFDckJ0RixLQUFBLENBQUt1RixhQUFhLEdBQUcsRUFBRTtRQUN2QnZGLEtBQUEsQ0FBS3VGLGFBQWEsRUFBRUMsSUFBSSxDQUFDcEIsY0FBYyxDQUFDO1FBQ3hDLElBQUksQ0FBQ3FCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDMUYsS0FBQSxDQUFLMkYsZUFBZSxDQUFDLEVBQUU7VUFDekMzRixLQUFBLENBQUsyRixlQUFlLEdBQUczRixLQUFBLENBQUsyRixlQUFlLENBQUVDLFNBQVMsQ0FBQyxDQUEyQjtRQUNuRjtRQUNBNUYsS0FBQSxDQUFLMkYsZUFBZSxFQUFFRSxPQUFPLENBQUVDLGNBQW9DLElBQUs7VUFDdkUsSUFBSUEsY0FBYyxDQUFDQyxZQUFZLEtBQUssU0FBUyxFQUFFO1lBQzlDL0YsS0FBQSxDQUFLZ0csNEJBQTRCLENBQUNGLGNBQWMsQ0FBQztVQUNsRDtRQUNELENBQUMsQ0FBQztRQUNGOUYsS0FBQSxDQUFLdUYsYUFBYSxHQUFHdkYsS0FBQSxDQUFLdUYsYUFBYSxFQUFFVSxNQUFNLEdBQUcsQ0FBQyxHQUFHakcsS0FBQSxDQUFLdUYsYUFBYSxHQUFHLEVBQUU7UUFDN0V2RixLQUFBLENBQUtzRixXQUFXLEdBQUd0RixLQUFBLENBQUtzRixXQUFXLEVBQUVXLE1BQU0sR0FBRyxDQUFDLEdBQUdqRyxLQUFBLENBQUtzRixXQUFXLEdBQUcsRUFBRTtNQUN4RSxDQUFDO01BQUF0RixLQUFBLENBU0RnRyw0QkFBNEIsR0FBSUYsY0FBb0MsSUFBVztRQUM5RSxJQUFJQSxjQUFjLENBQUNsSixRQUFRLEtBQUtzSixTQUFTLElBQUlKLGNBQWMsQ0FBQ3hJLElBQUksS0FBSyxNQUFNLEVBQUU7VUFDNUUwQyxLQUFBLENBQUttRyw2QkFBNkIsQ0FBQ0wsY0FBYyxDQUFDO1FBQ25ELENBQUMsTUFBTSxJQUFJTCxLQUFLLENBQUNDLE9BQU8sQ0FBQzFGLEtBQUEsQ0FBS3VGLGFBQWEsQ0FBQyxFQUFFO1VBQzdDLE1BQU0vSSxRQUFRLEdBQUdzSixjQUFjLENBQUNNLGNBQWM7VUFDOUMsTUFBTUMsZUFBZSxHQUFHckcsS0FBQSxDQUFLc0csUUFBUSxDQUFFQyxRQUFRLENBQUMsQ0FBQyxDQUFDQyxvQkFBb0IsQ0FBQ2hLLFFBQVEsQ0FBQztVQUNoRixNQUFNaUssY0FBYyxHQUFHSixlQUFlLEVBQUVULFNBQVMsQ0FBQyxDQUFDO1VBQ25ELElBQUljLGFBQWE7VUFDakIsSUFBSVosY0FBYyxDQUFDeEksSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUNuQ29KLGFBQWEsR0FDWmpELElBQUEsQ0FBQ2tELFVBQVU7Y0FBQ0MsVUFBVSxFQUFFZCxjQUFjLENBQUNsSixRQUFTO2NBQUErSCxRQUFBLEVBQy9DbEIsSUFBQTtnQkFBTXpHLElBQUksRUFBRzhJLGNBQWMsQ0FBeUJ6SjtjQUFVLENBQUU7WUFBQyxDQUN0RCxDQUNaO1VBQ0YsQ0FBQyxNQUFNLElBQUl5SixjQUFjLENBQUNsSixRQUFRLEVBQUU7WUFDbkM4SixhQUFhLEdBQ1pqRCxJQUFBLENBQUNvRCxtQkFBbUI7Y0FDbkJDLFlBQVksRUFBRWhCLGNBQWMsQ0FBQ2xKLFFBQVM7Y0FDdEMrRyxFQUFFLEVBQUVDLFFBQVEsQ0FBQyxDQUFDNUQsS0FBQSxDQUFLMkQsRUFBRSxFQUFFLG1CQUFtQixFQUFFbUMsY0FBYyxDQUFDeEosR0FBRyxDQUFDLENBQUU7Y0FDakV5SyxXQUFXLEVBQUU7WUFBdUMsQ0FDcEQsQ0FDRDtVQUNGO1VBQ0EsSUFBSUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1VBQzFCLElBQUlYLGVBQWUsRUFBRTtZQUNwQlcsaUJBQWlCLEdBQUcvQyxhQUFhLENBQUM2QixjQUFjLENBQUNNLGNBQWMsRUFBRTtjQUFFYSxPQUFPLEVBQUVaO1lBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztVQUNyRztVQUNBckcsS0FBQSxDQUFLdUYsYUFBYSxFQUFFQyxJQUFJLENBQ3ZCL0IsSUFBQSxDQUFDQyxjQUFjO1lBQ2RDLEVBQUUsRUFBRUMsUUFBUSxDQUFDLENBQUM1RCxLQUFBLENBQUsyRCxFQUFFLEVBQUUsbUJBQW1CLEVBQUVtQyxjQUFjLENBQUN4SixHQUFHLENBQUMsQ0FBRTtZQUNqRTRLLFFBQVEsRUFBRTtjQUFFbEssSUFBSSxFQUFFO1lBQXdDLENBQUU7WUFDNUQ4RyxXQUFXLEVBQUVnQyxjQUFjLENBQUNxQixhQUFjO1lBQzFDekssS0FBSyxFQUFFb0osY0FBYyxDQUFDcEosS0FBTTtZQUM1QnNILFFBQVEsRUFBRThCLGNBQWMsQ0FBQzlCLFFBQVM7WUFDbENDLGFBQWEsRUFBRStDLGlCQUFrQjtZQUNqQ2pELFVBQVUsRUFBRSx5QkFBeUIrQixjQUFjLENBQUNxQixhQUFhLEdBQUk7WUFDckUxQyxTQUFTLEVBQUUyQyxXQUFXLENBQUMzQyxTQUFTLENBQy9CNEIsZUFBZSxFQUNmSSxjQUFjLEVBQ2R6RyxLQUFBLENBQUtxSCxvQkFBb0IsRUFDekJ2QixjQUFjLENBQUN3QixRQUFRLEVBQ3ZCdEgsS0FBQSxDQUFLK0csV0FBVyxDQUFFUSxPQUFPLENBQUMsQ0FDM0IsQ0FBRTtZQUNGckQsbUJBQW1CLEVBQUc0QixjQUFjLENBQXlDMEIsV0FBWTtZQUN6RkMscUJBQXFCLEVBQUczQixjQUFjLENBQTJDNEIsYUFBYztZQUMvRkMsU0FBUyxFQUFFLFdBQVk7WUFDdkJoTCxRQUFRLEVBQUVtSixjQUFjLENBQUNuSixRQUFTO1lBQUFnSSxRQUFBLEVBRWpDO2NBQ0FpRCxPQUFPLEVBQ05uRSxJQUFBLENBQUNvRSwrQkFBK0I7Z0JBQy9CLGdCQUFhLCtDQUErQztnQkFDNURsRSxFQUFFLEVBQUVDLFFBQVEsQ0FBQyxDQUFDNUQsS0FBQSxDQUFLMkQsRUFBRSxFQUFFLDJCQUEyQixFQUFFbUMsY0FBYyxDQUFDeEosR0FBRyxDQUFDLENBQUU7Z0JBQ3pFd0wsT0FBTyxFQUFFLGtCQUFrQkMsV0FBVyxDQUFDQyxvQkFBb0IsQ0FBQ2xDLGNBQWMsQ0FBQ3FCLGFBQWEsQ0FBQyxHQUFJO2dCQUM3RnBELFVBQVUsRUFBRSw4QkFBK0Q7Z0JBQUFZLFFBQUEsRUFFMUU7a0JBQUVpRCxPQUFPLEVBQUVsQjtnQkFBYztjQUFDLENBQ0ssQ0FDakM7Y0FDRHVCLFVBQVUsRUFBRSxDQUNYeEUsSUFBQSxDQUFDeUUsVUFBVTtnQkFBZ0J0RixLQUFLLEVBQUVrRCxjQUFjLENBQUN4SSxJQUFJLEtBQUs7Y0FBTyxHQUFoRCxRQUFrRCxDQUFDLEVBQ3BFbUcsSUFBQSxDQUFDMEUsbUJBQW1CO2dCQUVuQnZGLEtBQUssRUFBRSx5Q0FBeUNrRCxjQUFjLENBQUNzQyxlQUFlO2NBQThELEdBRHZJLHlCQUVMLENBQUM7WUFFSjtVQUFDLENBQ2MsQ0FDakIsQ0FBQztRQUNGO01BQ0QsQ0FBQztNQUFBcEksS0FBQSxDQWVEbUcsNkJBQTZCLEdBQUlMLGNBQW9DLElBQVc7UUFDL0UsSUFBSUwsS0FBSyxDQUFDQyxPQUFPLENBQUMxRixLQUFBLENBQUt1RixhQUFhLENBQUMsRUFBRTtVQUN0Q3ZGLEtBQUEsQ0FBS3VGLGFBQWEsRUFBRUMsSUFBSSxDQUN2Qi9CLElBQUEsQ0FBQzRFLG1CQUFtQjtZQUNuQkMsUUFBUSxFQUFFMUUsUUFBUSxDQUFDLENBQUM1RCxLQUFBLENBQUsyRCxFQUFFLEVBQUUsYUFBYSxFQUFFNEUsWUFBWSxDQUFDQyxpQkFBaUIsQ0FBQzFDLGNBQWMsQ0FBQ00sY0FBYyxDQUFDLENBQUMsQ0FBRTtZQUM1R3FDLFVBQVUsRUFBRTdFLFFBQVEsQ0FBQyxDQUFDNUQsS0FBQSxDQUFLMkQsRUFBRSxFQUFFLHNCQUFzQixDQUFDLENBQUU7WUFDeERuSCxRQUFRLEVBQUVzSixjQUFjLENBQUNNLGNBQXFDO1lBQzlEVyxXQUFXLEVBQUUvRyxLQUFBLENBQUswSSw2QkFBNkIsQ0FBQzVDLGNBQWMsRUFBRTlGLEtBQUEsQ0FBSzJJLG9CQUFvQixDQUF3QjtZQUNqSHRCLG9CQUFvQixFQUFFckgsS0FBQSxDQUFLcUgsb0JBQXFCO1lBQ2hEQyxRQUFRLEVBQUVpQixZQUFZLENBQUNLLG1CQUFtQixDQUFDOUMsY0FBYyxDQUFDd0IsUUFBUSxDQUFFO1lBQ3BFdUIsWUFBWSxFQUNYL0MsY0FBYyxDQUFDK0MsWUFBWSxLQUFLM0MsU0FBUyxHQUNyQzRDLGdCQUFnQixDQUFDaEQsY0FBYyxDQUFDK0MsWUFBWSxDQUFDLEdBQzlDM0MsU0FDSDtZQUNENkMsUUFBUSxFQUFFLGNBQWMvSSxLQUFBLENBQUsyRCxFQUFFLGlCQUFpQm1DLGNBQWMsQ0FBQ3FCLGFBQWE7VUFBYSxDQUN6RixDQUNGLENBQUM7UUFDRjtRQUNBLElBQUkxQixLQUFLLENBQUNDLE9BQU8sQ0FBQzFGLEtBQUEsQ0FBS3NGLFdBQVcsQ0FBQyxFQUFFO1VBQ3BDdEYsS0FBQSxDQUFLc0YsV0FBVyxFQUFFRSxJQUFJLENBQ3JCL0IsSUFBQSxDQUFDdUYsU0FBUztZQUNUVixRQUFRLEVBQUUxRSxRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFFO1lBQ3REc0YsY0FBYyxFQUFDLFVBQVU7WUFDekIzQyxRQUFRLEVBQUVSLGNBQWMsQ0FBQ00sY0FBZTtZQUN4Q1csV0FBVyxFQUFFL0csS0FBQSxDQUFLMEksNkJBQTZCLENBQUM1QyxjQUFjLEVBQUU5RixLQUFBLENBQUsySSxvQkFBb0IsQ0FBRTtZQUMzRk8sb0JBQW9CLEVBQUUsSUFBSztZQUMzQjdCLG9CQUFvQixFQUFFckgsS0FBQSxDQUFLcUg7VUFBcUIsQ0FDaEQsQ0FDRixDQUFDO1FBQ0Y7TUFDRCxDQUFDO01BelRBLElBQUksQ0FBQ3JILEtBQUEsQ0FBS3NHLFFBQVEsRUFBRTtRQUNuQjZDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLGlEQUFpRCxDQUFDO1FBQzVELE9BQUFDLHNCQUFBLENBQUFySixLQUFBO01BQ0Q7TUFDQSxNQUFNc0osU0FBUyxHQUFHdEosS0FBQSxDQUFLc0csUUFBUSxDQUFDaUIsT0FBTyxDQUFDLENBQUM7TUFDekMsSUFBSWdDLGNBQWMsR0FBRyxFQUFFO01BQ3ZCLE1BQU1sRyxjQUFhLEdBQUdpRyxTQUFTLEVBQUVFLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO01BQzlGLElBQUluRyxjQUFhLENBQUM0QyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzdCc0QsY0FBYyxHQUFHdkosS0FBQSxDQUFLb0QsaUJBQWlCLENBQUNDLGNBQWEsQ0FBQztNQUN2RDtNQUNBLE1BQU1vRyxjQUFjLEdBQUd4RyxXQUFXLENBQUN5RyxnQkFBZ0IsQ0FBQ0gsY0FBYyxDQUFDO01BQ25FLE1BQU12RyxXQUFVLEdBQUdoRCxLQUFBLENBQUsrRyxXQUFXLEVBQUVSLFFBQVEsQ0FBQyxDQUFDO01BQy9DdkcsS0FBQSxDQUFLMkksb0JBQW9CLEdBQUczRixXQUFVLEVBQUV3RCxvQkFBb0IsQ0FBQytDLGNBQWMsQ0FBWTtNQUN2RixNQUFNbkQsY0FBc0IsR0FBRyw2Q0FBNkMsSUFBSy9DLGNBQWEsQ0FBQzRDLE1BQU0sSUFBSTVDLGNBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSyxFQUFFLENBQUM7TUFDakksTUFBTXNHLGlCQUFpQixHQUFHNUosU0FBUyxFQUFFNkosZUFBeUI7TUFDOUQsSUFBSUMsV0FBVyxHQUFHekQsY0FBYztNQUNoQyxJQUFJdUQsaUJBQWlCLEtBQUssRUFBRSxJQUFJM0osS0FBQSxDQUFLMkksb0JBQW9CLENBQUNwQixPQUFPLENBQUMsQ0FBQyxFQUFFdUMsVUFBVSxDQUFDSCxpQkFBaUIsQ0FBQyxFQUFFO1FBQ25HRSxXQUFXLEdBQUdQLFNBQVMsQ0FBQy9NLE9BQU8sQ0FBQ29OLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztNQUN2RDtNQUNBM0osS0FBQSxDQUFLK0osZUFBZSxHQUFHM0QsY0FBYztNQUNyQyxNQUFNNEQsWUFBNEQsR0FBRyxDQUFDLENBQUM7TUFDdkUsSUFBSWhLLEtBQUEsQ0FBS2lLLFlBQVksRUFBRTtRQUN0QkQsWUFBWSxDQUFDSCxXQUFXLENBQUMsR0FBRztVQUMzQkksWUFBWSxFQUFFakssS0FBQSxDQUFLaUs7UUFDcEIsQ0FBQztNQUNGO01BRUEsTUFBTUMsd0JBQXdCLEdBQUdDLDJCQUEyQixDQUFDbkssS0FBQSxDQUFLMkksb0JBQW9CLENBQUM7TUFDdkYsTUFBTXlCLGlCQUFpQixHQUFHcEssS0FBQSxDQUFLcUssbUJBQW1CLENBQUNILHdCQUF3QixFQUFFaEUsU0FBUyxFQUFFbkcsU0FBUyxFQUFFaUssWUFBWSxDQUFDO01BQ2hILElBQUksQ0FBQ2hLLEtBQUEsQ0FBS3NLLFlBQVksRUFBRTtRQUN2QnRLLEtBQUEsQ0FBS3NLLFlBQVksR0FBR0Msa0JBQWtCLENBQUNILGlCQUFpQixFQUFFLEVBQUUsRUFBRWhFLGNBQWMsQ0FBQyxDQUFDb0UsYUFBYTtNQUM1RjtNQUVBLE1BQU1wSSxnQkFBZSxHQUFHK0gsMkJBQTJCLENBQUNuSyxLQUFBLENBQUtzRyxRQUFRLEVBQUV0RyxLQUFBLENBQUsrRyxXQUFXLENBQUMsQ0FBQzNFLGVBQTRCO01BQ2pILElBQUlBLGdCQUFlLEVBQUVDLFdBQVcsRUFBRW9JLE1BQU0sRUFBRUMsU0FBUyxJQUFJLENBQUMxSyxLQUFBLENBQUsySywyQkFBMkIsRUFBRTtRQUN6RjNLLEtBQUEsQ0FBS2lDLGtCQUFrQixHQUFHLElBQUk7UUFDOUJqQyxLQUFBLENBQUttQyw4QkFBOEIsQ0FBQ0MsZ0JBQWUsQ0FBQztRQUNwRHBDLEtBQUEsQ0FBSytDLGtDQUFrQyxDQUFDQyxXQUE0QixDQUFDO01BQ3RFOztNQUVBO01BQ0EsSUFBSSxDQUFDaEQsS0FBQSxDQUFLMkYsZUFBZSxFQUFFO1FBQzFCLE1BQU1pRixnQkFBZ0IsR0FBR0wsa0JBQWtCLENBQUNILGlCQUFpQixFQUFFLEVBQUUsRUFBRWhFLGNBQWMsQ0FBQyxDQUFDVCxlQUFlO1FBQ2xHM0YsS0FBQSxDQUFLMkYsZUFBZSxHQUFHLElBQUlrRixhQUFhLENBQUNELGdCQUFnQixFQUFFNUgsV0FBNEIsQ0FBQyxDQUFDd0Qsb0JBQW9CLENBQUMsR0FBRyxDQUFDO1FBQ2xILE1BQU1zRSxRQUFRLEdBQUcvSyxTQUFTLEVBQUVnTCxNQUFNLEVBQUVELFFBQVEsRUFBRUUsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTUMsV0FBVyxHQUFHYixpQkFBaUIsQ0FBQ2MsYUFBYSxDQUFDLENBQUM7VUFDcERDLGlCQUFpQixHQUFHQyxtQkFBbUIsQ0FBQ0gsV0FBVyxFQUFFYixpQkFBaUIsQ0FBQztVQUN2RWlCLGlCQUFpQixHQUFJckksV0FBVSxDQUFvQnNJLFVBQVUsQ0FBQzdCLGNBQWMsQ0FBbUI7VUFDL0Y4QixpQkFBaUIsR0FBR0MsbUJBQW1CLENBQ3RDSCxpQkFBaUI7VUFBeUI7VUFDMUM7WUFBRUksZ0JBQWdCLEVBQUVOO1VBQWtCLENBQUMsRUFDdkNFLGlCQUFpQixDQUFDekYsU0FBUyxDQUFDLENBQUMsRUFDN0JrRixRQUFRLEVBQ1I5SyxLQUFBLENBQUtpQyxrQkFDTixDQUFDO1FBQ0ZqQyxLQUFBLENBQUswTCxnQkFBZ0IsR0FBR0gsaUJBQWlCO01BQzFDO01BQ0F2TCxLQUFBLENBQUsyTCxxQkFBcUIsQ0FBQzNMLEtBQUEsQ0FBS3NLLFlBQVksRUFBRXRILFdBQVUsQ0FBQztNQUV6RCxJQUFJaEQsS0FBQSxDQUFLNEwsaUJBQWlCLEVBQUU7UUFDM0I1TCxLQUFBLENBQUs2TCxNQUFNLEdBQUc3TCxLQUFBLENBQUsyRCxFQUFFLEdBQUcsYUFBYTtRQUNyQzNELEtBQUEsQ0FBSzhMLFVBQVUsR0FBRzlMLEtBQUEsQ0FBSzJELEVBQUU7TUFDMUIsQ0FBQyxNQUFNO1FBQ04zRCxLQUFBLENBQUs2TCxNQUFNLEdBQUc3TCxLQUFBLENBQUsyRCxFQUFFO1FBQ3JCM0QsS0FBQSxDQUFLOEwsVUFBVSxHQUFHOUwsS0FBQSxDQUFLK0wsWUFBWSxDQUFDL0wsS0FBQSxDQUFLMkQsRUFBRSxHQUFHLEVBQUUsQ0FBQztNQUNsRDtNQUVBLElBQUkzRCxLQUFBLENBQUt3RCxlQUFlLEtBQUssSUFBSSxFQUFFO1FBQ2xDLE1BQU13SSw0QkFBNEIsR0FBR0MscUJBQXFCLENBQUN4QyxjQUFjLEVBQUV6RyxXQUE0QixDQUFDO1FBQ3hHaEQsS0FBQSxDQUFLd0QsZUFBZSxHQUFHMEksT0FBTyxDQUFDRiw0QkFBNEIsSUFBSSxDQUFDQSw0QkFBNEIsQ0FBQ0csVUFBVSxDQUFDO01BQ3pHO01BQ0FDLEdBQUcsQ0FBQ0MsV0FBVyxDQUFDLE1BQU1yTSxLQUFBLENBQUttRSxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7TUFFcERuRSxLQUFBLENBQUtzTSxVQUFVLEdBQUd0TSxLQUFBLENBQUt1TSxhQUFhLENBQUMsQ0FBQztNQUFDLE9BQUF2TSxLQUFBO0lBQ3hDO0lBQUN3TSxRQUFBLEdBQUEzUCxjQUFBO0lBQUE0UCxjQUFBLENBQUE1UCxjQUFBLEVBQUErQyxxQkFBQTtJQUFBLElBQUE4TSxNQUFBLEdBQUE3UCxjQUFBLENBQUE4UCxTQUFBO0lBQUFELE1BQUEsQ0FFRGYscUJBQXFCLEdBQXJCLFNBQUFBLHFCQUFxQkEsQ0FBQ3JCLFlBQW9CLEVBQUVzQyxLQUFxQixFQUFRO01BQ3hFLE1BQU1DLGdCQUEwQixHQUFHLEVBQUU7TUFDckMsSUFBSXZDLFlBQVksRUFBRTtRQUNqQixNQUFNd0Msa0JBQWtCLEdBQUd4QyxZQUFZLENBQUMvTixPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDQSxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztRQUNqRixNQUFNd1Esa0JBQWtCLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxrQkFBa0IsQ0FBQztRQUN6RCxNQUFNSSxjQUFjLEdBQUcsSUFBSSxDQUFDMUksaUJBQWlCLENBQUMsMEJBQTBCLENBQUM7UUFDekV1SSxrQkFBa0IsQ0FBQ2xILE9BQU8sQ0FBQyxVQUFVc0gsUUFBc0IsRUFBRTtVQUM1REEsUUFBUSxDQUFDN1EsR0FBRyxHQUFHNlEsUUFBUSxDQUFDblEsSUFBSTtVQUM1QixJQUFJbVEsUUFBUSxDQUFDQyxXQUFXLEVBQUU7WUFDekJQLGdCQUFnQixDQUFDckgsSUFBSSxDQUFDMkgsUUFBUSxDQUFDblEsSUFBSSxDQUFDO1VBQ3JDO1VBQ0EsSUFBSW1RLFFBQVEsQ0FBQ0UsSUFBSSxLQUFLLFlBQVksRUFBRTtZQUNuQ0YsUUFBUSxDQUFDelEsS0FBSyxHQUFHd1EsY0FBYztVQUNoQztVQUNBLElBQUlDLFFBQVEsQ0FBQzdRLEdBQUcsRUFBRWdSLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQztZQUNBLE1BQU1sSCxjQUFjLEdBQUkrRyxRQUFRLENBQTBCL0csY0FBYztZQUN4RSxNQUFNbUgsb0JBQW9CLEdBQUdoRixZQUFZLENBQUNpRiwwQkFBMEIsQ0FBQ1osS0FBSyxFQUFFeEcsY0FBYyxDQUFDO1lBQzNGLE1BQU1xSCxZQUFZLEdBQUdySCxjQUFjLENBQUM3SixPQUFPLENBQUMsR0FBR2dSLG9CQUFvQixHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzNFSixRQUFRLENBQUN4USxRQUFRLEdBQUcrUSxXQUFXLENBQUNDLDJCQUEyQixDQUFDSixvQkFBb0IsRUFBRVgsS0FBSyxDQUFDLEVBQUVnQixrQkFBa0IsRUFBRU4sUUFBUSxDQUNySEcsWUFDRCxDQUFDO1VBQ0Y7UUFDRCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUNuRCxZQUFZLEdBQUcwQyxJQUFJLENBQUNhLFNBQVMsQ0FBQ2Qsa0JBQWtCLENBQUMsQ0FBQ3hRLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUNBLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO01BQ25HO01BQ0EsSUFBSSxDQUFDdVIsV0FBVyxHQUFHZCxJQUFJLENBQUNhLFNBQVMsQ0FBQ2hCLGdCQUFnQixDQUFDO0lBQ3BELENBQUM7SUFBQUgsTUFBQSxDQXNGRHFCLHNCQUFzQixHQUF0QixTQUFBQSxzQkFBc0JBLENBQUNDLFdBQW1CLEVBQXNCO01BQy9ELElBQUksSUFBSSxDQUFDQyw0QkFBNEIsRUFBRTtRQUN0QyxPQUFPeEssSUFBQSxDQUFDeUssbUJBQW1CO1VBQUN2SyxFQUFFLEVBQUVDLFFBQVEsQ0FBQyxDQUFDb0ssV0FBVyxFQUFFLHFCQUFxQixDQUFDLENBQUU7VUFBQ0csR0FBRyxFQUFFSCxXQUFZO1VBQUNJLElBQUksRUFBRTtRQUFZLENBQUUsQ0FBQztNQUN4SDtNQUNBLE9BQU9sSSxTQUFTO0lBQ2pCLENBQUM7SUFBQXdHLE1BQUEsQ0EwRURoRSw2QkFBNkIsR0FBN0IsU0FBQUEsNkJBQTZCQSxDQUFDNUMsY0FBb0MsRUFBRXVJLG9CQUE2QixFQUFVO01BQzFHLElBQUl0SCxXQUFtQixHQUFHc0gsb0JBQW9CLEVBQUU5RyxPQUFPLENBQUMsQ0FBQztNQUN6RCxJQUFJekIsY0FBYyxDQUFDc0gsV0FBVyxFQUFFO1FBQy9CO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsTUFBTWtCLFFBQVEsR0FBR3hJLGNBQWMsQ0FBQ00sY0FBYztRQUM5Q1csV0FBVyxHQUFHdUgsUUFBUSxDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFRCxRQUFRLENBQUNFLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7TUFDbkU7TUFDQSxPQUFPekgsV0FBVztJQUNuQixDQUFDO0lBbUNEO0FBQ0Q7QUFDQTtBQUNBO0lBSEMyRixNQUFBLENBSUFILGFBQWEsR0FBYixTQUFBQSxhQUFhQSxDQUFBLEVBQXVCO01BQ25DLE9BQU8seURBQXlEO0lBQ2pFLENBQUM7SUFBQUcsTUFBQSxDQUVEK0IsV0FBVyxHQUFYLFNBQUFBLFdBQVdBLENBQUEsRUFBVztNQUNyQixNQUFNQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMvRixvQkFBb0IsRUFBRXBCLE9BQU8sQ0FBQyxDQUFDO01BQ2hFLElBQUlvSCxjQUFjLEdBQUcsRUFBRTtNQUN2QixJQUFJLElBQUksQ0FBQ0MsaUJBQWlCLEVBQUU7UUFDM0JELGNBQWMsR0FBRyxJQUFJLENBQUNDLGlCQUFpQjtNQUN4QyxDQUFDLE1BQU07UUFDTkQsY0FBYyxHQUFHLGdGQUFnRixHQUFHRCxtQkFBbUIsR0FBRyxLQUFLO01BQ2hJO01BQ0E7TUFDQSxNQUFNRyxvQkFBb0IsR0FBRzlHLFdBQVcsQ0FBQytHLGtCQUFrQixDQUFDLElBQUksQ0FBQ3hFLFlBQXNCLENBQUM7TUFDeEYsT0FDQzdHLElBQUEsQ0FBQ3NMLFlBQVk7UUFDWnBMLEVBQUUsRUFBRSxJQUFJLENBQUNrSSxNQUFPO1FBQ2hCdkYsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUSxDQUFFaUIsT0FBTyxDQUFDLENBQUU7UUFDbkN5SCxNQUFNLEVBQUUsSUFBSSxDQUFDQSxNQUFPO1FBQ3BCQyxhQUFhLEVBQUUsSUFBSSxDQUFDQSxhQUFjO1FBQ2xDQyxVQUFVLEVBQUUsSUFBSSxDQUFDQSxVQUFXO1FBQzVCQyxjQUFjLEVBQUUsSUFBSSxDQUFDQSxjQUFlO1FBQ3BDQyxxQkFBcUIsRUFBRSxJQUFJLENBQUNBLHFCQUFzQjtRQUFBekssUUFBQSxFQUVqRDtVQUNBaUQsT0FBTyxFQUNObkUsSUFBQSxDQUFDNEwsV0FBVztZQUNYLGdCQUFhLCtDQUErQztZQUM1RDFMLEVBQUUsRUFBRSxJQUFJLENBQUNtSSxVQUFXO1lBQ3BCd0QsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUztZQUN4QnBJLFFBQVEsRUFBRXlILGNBQWU7WUFDekJZLG9CQUFvQixFQUFFLElBQUksQ0FBQ0QsUUFBUSxHQUFHcEosU0FBUyxHQUFHLElBQUksQ0FBQ3FKLG9CQUFxQjtZQUM1RUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDQSxzQkFBdUI7WUFDcERDLGVBQWUsRUFBRSxJQUFJLENBQUNBLGVBQWdCO1lBQ3RDQyxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFTO1lBQ3hCVixNQUFNLEVBQUUsMEJBQWdGO1lBQ3hGVyxjQUFjLEVBQUUsaUNBQStGO1lBQy9HakUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDQSxnQkFBaUI7WUFDeENrRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUNBLGdCQUFpQjtZQUN4Q0MsWUFBWSxFQUFFLElBQUksQ0FBQ0EsWUFBYTtZQUNoQ0MsYUFBYSxFQUFFLElBQUksQ0FBQ0MsZUFBZ0I7WUFDcENDLGFBQWEsRUFBRSxJQUFJLENBQUNBLGFBQWM7WUFDbENDLE9BQU8sRUFBRSxJQUFJLENBQUNBLE9BQVE7WUFDdEIsaUJBQWUsSUFBSSxDQUFDM0QsVUFBVztZQUMvQix5QkFBdUJvQyxtQkFBb0I7WUFBQS9KLFFBQUEsRUFFMUM7Y0FDQXNELFVBQVUsRUFBRSxDQUNYeEUsSUFBQSxDQUFDeUUsVUFBVTtnQkFBaUJ0RixLQUFLLEVBQUUsSUFBSSxDQUFDZTtjQUFHLEdBQTFCLFNBQTRCLENBQUMsRUFDOUNGLElBQUEsQ0FBQ3lFLFVBQVU7Z0JBQXlCdEYsS0FBSyxFQUFFLElBQUksQ0FBQ1k7Y0FBZ0IsR0FBL0MsaUJBQWlELENBQUMsRUFDbkVDLElBQUEsQ0FBQ3lFLFVBQVU7Z0JBQTRCdEYsS0FBSyxFQUFFLElBQUksQ0FBQ1g7Y0FBbUIsR0FBckQsb0JBQXVELENBQUMsRUFDekV3QixJQUFBLENBQUN5RSxVQUFVO2dCQUE4QnRGLEtBQUssRUFBRSxJQUFJLENBQUN5RTtjQUFxQixHQUF6RCxzQkFBMkQsQ0FBQyxFQUM3RTVELElBQUEsQ0FBQ3lFLFVBQVU7Z0JBQW9CdEYsS0FBSyxFQUFFLElBQUksQ0FBQ2tMO2NBQVksR0FBdEMsWUFBd0MsQ0FBQyxFQUMxRHJLLElBQUEsQ0FBQ3lFLFVBQVU7Z0JBQXNCdEYsS0FBSyxFQUFFLElBQUksQ0FBQzBIO2NBQWEsR0FBekMsY0FBMkMsQ0FBQyxFQUM3RDdHLElBQUEsQ0FBQ3lFLFVBQVU7Z0JBQXdCdEYsS0FBSyxFQUFFLElBQUksQ0FBQ21IO2NBQWdCLEdBQTlDLGdCQUFnRCxDQUFDLENBQ2xFO2NBQ0RtRyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUM1SyxXQUFXLEVBQUUsSUFBSSxDQUFDeUksc0JBQXNCLENBQUMsSUFBSSxDQUFDakMsVUFBb0IsQ0FBQyxDQUFDO2NBQ3RGcUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDNU0sU0FBUyxDQUFDLENBQUM7Y0FDbEM2TSxXQUFXLEVBQUUsSUFBSSxDQUFDN0s7WUFDbkI7VUFBQyxDQUNXO1FBRWY7TUFBQyxDQUNZLENBQUM7SUFFakIsQ0FBQztJQUFBLE9BQUExSSxjQUFBO0VBQUEsRUF2bkIwQ3dULDJCQUEyQixHQUFBbFEsV0FBQSxHQUFBbVEseUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsU0FBQXZQLEtBQUE7SUFBQW1ULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdFEsWUFBQSxHQUFBa1EseUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsY0FBQW5QLEtBQUE7SUFBQStTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBclEsWUFBQSxHQUFBaVEseUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsc0JBQUFsUCxLQUFBO0lBQUE4UyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXBRLFlBQUEsR0FBQWdRLHlCQUFBLENBQUEzUSxPQUFBLENBQUFnTixTQUFBLHdCQUFBalAsS0FBQTtJQUFBNlMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFuUSxZQUFBLEdBQUErUCx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSxlQUFBaFAsS0FBQTtJQUFBNFMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFsUSxZQUFBLEdBQUE4UCx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSxrQkFBQS9PLEtBQUE7SUFBQTJTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBalEsWUFBQSxHQUFBNlAseUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsbUJBQUE5TyxLQUFBO0lBQUEwUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQThDdkQsS0FBSztJQUFBO0VBQUEsSUFBQWhRLFlBQUEsR0FBQTRQLHlCQUFBLENBQUEzUSxPQUFBLENBQUFnTixTQUFBLDJCQUFBN08sS0FBQTtJQUFBeVMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEvUCxZQUFBLEdBQUEyUCx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSxzQkFBQTVPLE1BQUE7SUFBQXdTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBOVAsYUFBQSxHQUFBMFAseUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEscUJBQUEzTyxNQUFBO0lBQUF1UyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQXdCSCxLQUFLO0lBQUE7RUFBQSxJQUFBN1AsYUFBQSxHQUFBeVAseUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsNkJBQUExTyxNQUFBO0lBQUFzUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQVFHLElBQUk7SUFBQTtFQUFBLElBQUE1UCxhQUFBLEdBQUF3UCx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSxlQUFBek8sTUFBQTtJQUFBcVMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FRbEIsWUFBWTtJQUFBO0VBQUEsSUFBQTNQLGFBQUEsR0FBQXVQLHlCQUFBLENBQUEzUSxPQUFBLENBQUFnTixTQUFBLG1CQUFBeE8sTUFBQTtJQUFBb1MsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUExUCxhQUFBLEdBQUFzUCx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSwyQkFBQXZPLE1BQUE7SUFBQW1TLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BYUEsSUFBSTtJQUFBO0VBQUEsSUFBQXpQLGFBQUEsR0FBQXFQLHlCQUFBLENBQUEzUSxPQUFBLENBQUFnTixTQUFBLDJCQUFBdE8sTUFBQTtJQUFBa1MsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF4UCxhQUFBLEdBQUFvUCx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSxlQUFBck8sTUFBQTtJQUFBaVMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FpQmhCLEtBQUs7SUFBQTtFQUFBLElBQUF2UCxhQUFBLEdBQUFtUCx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSx1QkFBQXBPLE1BQUE7SUFBQWdTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdFAsYUFBQSxHQUFBa1AseUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsdUJBQUFuTyxNQUFBO0lBQUErUixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQW1CRyxLQUFLO0lBQUE7RUFBQSxJQUFBclAsYUFBQSxHQUFBaVAseUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsMkJBQUFsTyxNQUFBO0lBQUE4UixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQUtELEtBQUs7SUFBQTtFQUFBLElBQUFwUCxhQUFBLEdBQUFnUCx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSxzQkFBQWpPLE1BQUE7SUFBQTZSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBblAsYUFBQSxHQUFBK08seUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsb0JBQUFoTyxNQUFBO0lBQUE0UixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQWFaLFNBQVM7SUFBQTtFQUFBLElBQUFsUCxhQUFBLEdBQUE4Tyx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSxzQkFBQS9OLE1BQUE7SUFBQTJSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BU1AsS0FBSztJQUFBO0VBQUEsSUFBQWpQLGFBQUEsR0FBQTZPLHlCQUFBLENBQUEzUSxPQUFBLENBQUFnTixTQUFBLHdCQUFBOU4sTUFBQTtJQUFBMFIsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FLSCxLQUFLO0lBQUE7RUFBQSxJQUFBaFAsYUFBQSxHQUFBNE8seUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsa0NBQUE3TixNQUFBO0lBQUF5UixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQUtLLEtBQUs7SUFBQTtFQUFBLElBQUEvTyxhQUFBLEdBQUEyTyx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSxhQUFBNU4sTUFBQTtJQUFBd1IsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE5TyxhQUFBLEdBQUEwTyx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSxvQkFBQTFOLE1BQUE7SUFBQXNSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBN08sYUFBQSxHQUFBeU8seUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsNEJBQUF6TixNQUFBO0lBQUFxUixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTVPLGFBQUEsR0FBQXdPLHlCQUFBLENBQUEzUSxPQUFBLENBQUFnTixTQUFBLHFCQUFBeE4sTUFBQTtJQUFBb1IsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEzTyxhQUFBLEdBQUF1Tyx5QkFBQSxDQUFBM1EsT0FBQSxDQUFBZ04sU0FBQSxpQkFBQXZOLE1BQUE7SUFBQW1SLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBMU8sYUFBQSxHQUFBc08seUJBQUEsQ0FBQTNRLE9BQUEsQ0FBQWdOLFNBQUEsbUJBQUF0TixNQUFBO0lBQUFrUixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXhPLGFBQUEsR0FBQW9PLHlCQUFBLENBQUEzUSxPQUFBLENBQUFnTixTQUFBLG1DQUFBbE4sTUFBQTtJQUFBOFEsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0F1RUosS0FBSztJQUFBO0VBQUEsSUFBQS9RLE9BQUEsTUFBQUQsTUFBQTtFQUFBOE0sUUFBQSxHQUFBM1AsY0FBQTtFQUFBLE9BQUEyUCxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
768
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXMiLCJjaGlsZEZpbHRlckZpZWxkIiwiYWdncmVnYXRpb25PYmplY3QiLCJzbG90TmFtZSIsImtleSIsInJlcGxhY2UiLCJwcm9wZXJ0eSIsImdldEF0dHJpYnV0ZSIsImxhYmVsIiwicmVxdWlyZWQiLCJ0ZW1wbGF0ZSIsIkZpbHRlckJhckJsb2NrIiwiX2RlYyIsImRlZmluZUJ1aWxkaW5nQmxvY2siLCJuYW1lIiwibmFtZXNwYWNlIiwicHVibGljTmFtZXNwYWNlIiwicmV0dXJuVHlwZXMiLCJfZGVjMiIsImJsb2NrQXR0cmlidXRlIiwidHlwZSIsImlzUHVibGljIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJfZGVjMjUiLCJfZGVjMjYiLCJibG9ja0V2ZW50IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiYmxvY2tBZ2dyZWdhdGlvbiIsImhhc1ZpcnR1YWxOb2RlIiwicHJvY2Vzc0FnZ3JlZ2F0aW9ucyIsIl9kZWMzMiIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbmZpZ3VyYXRpb24iLCJtU2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9kZXNjcmlwdG9yMjMiLCJfZGVzY3JpcHRvcjI0IiwiX2Rlc2NyaXB0b3IyNSIsIl9kZXNjcmlwdG9yMjYiLCJfZGVzY3JpcHRvcjI3IiwiX2Rlc2NyaXB0b3IyOCIsIl9kZXNjcmlwdG9yMjkiLCJfZGVzY3JpcHRvcjMwIiwic2hvd0RyYWZ0RWRpdFN0YXRlIiwiX2Rlc2NyaXB0b3IzMSIsImNoZWNrSWZFZGl0aW5nRmlsdGVySXNEaXNhYmxlZCIsInRhcmdldEVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ2FwYWJpbGl0aWVzIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwic29tZSIsInIiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCJ2YWx1ZSIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlcmFibGUiLCJjaGVja0lmQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJpc0RyYWZ0Q29sbGFib3JhdGl2ZSIsImdldEVudGl0eVR5cGVQYXRoIiwibWV0YVBhdGhQYXJ0cyIsImVuZHNXaXRoIiwiZ2V0U2VhcmNoIiwiaGlkZUJhc2ljU2VhcmNoIiwiX2pzeCIsIk1EQ0ZpbHRlckZpZWxkIiwiaWQiLCJnZW5lcmF0ZSIsInBsYWNlaG9sZGVyIiwicHJvcGVydHlLZXkiLCJjb25kaXRpb25zIiwiZGF0YVR5cGUiLCJtYXhDb25kaXRpb25zIiwiZGF0YVR5cGVDb25zdHJhaW50cyIsInByb2Nlc3NTZWxlY3Rpb25GaWVsZHMiLCJkcmFmdEVkaXRTdGF0ZSIsImRyYWZ0U3RhdGVzIiwiRHJhZnRFZGl0U3RhdGUiLCJnZXRFZGl0U3RhdGVzIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJvcGVyYXRvcnMiLCJkaXNwbGF5IiwiY2hpbGRyZW4iLCJjb250ZW50RWRpdCIsIlNlbGVjdCIsIndpZHRoIiwiZm9yY2VTZWxlY3Rpb24iLCJzZWxlY3RlZEtleSIsIml0ZW1zIiwibWFwIiwic3RhdGUiLCJMaXN0SXRlbSIsInRleHQiLCJfdmFsdWVIZWxwcyIsIl9maWx0ZXJGaWVsZHMiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5Iiwic2VsZWN0aW9uRmllbGRzIiwiZ2V0T2JqZWN0IiwiZm9yRWFjaCIsInNlbGVjdGlvbkZpZWxkIiwiYXZhaWxhYmlsaXR5Iiwic2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInB1c2hGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzIiwiYW5ub3RhdGlvblBhdGgiLCJwcm9wZXJ0eUNvbnRleHQiLCJtZXRhUGF0aCIsImdldE1vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJwcm9wZXJ0eU9iamVjdCIsImZpbHRlckNvbnRlbnQiLCJTbG90Q29sdW1uIiwidGVtcGxhdGVJZCIsIkN1c3RvbUZyYWdtZW50QmxvY2siLCJmcmFnbWVudE5hbWUiLCJjb250ZXh0UGF0aCIsIm1heENvbmRpdGlvblZhbHVlIiwiY29udGV4dCIsImRlbGVnYXRlIiwiY29uZGl0aW9uUGF0aCIsIkZpZWxkSGVscGVyIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJzZXR0aW5ncyIsImdldFBhdGgiLCJjb25zdHJhaW50cyIsImRhdGFUeXBlRm9ybWF0T3B0aW9ucyIsImZvcm1hdE9wdGlvbnMiLCJ2YWx1ZUhlbHAiLCJjb250ZW50IiwiQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciIsImJpbmRpbmciLCJGaWx0ZXJVdGlscyIsImNvbmRpdGlvblRvTW9kZWxQYXRoIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJGaWVsZEhlbHBDdXN0b21EYXRhIiwiZG9jdW1lbnRSZWZUZXh0IiwidmYiLCJ2aXN1YWxGaWx0ZXIiLCJpbml0aWFsQ2hhcnRCaW5kaW5nRW5hYmxlZCIsInN1c3BlbmRTZWxlY3Rpb24iLCJJbnRlcm5hbEZpbHRlckZpZWxkIiwiaWRQcmVmaXgiLCJDb21tb25IZWxwZXIiLCJnZXROYXZpZ2F0aW9uUGF0aCIsInZoSWRQcmVmaXgiLCJfZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZCIsIl9pbnRlcm5hbENvbnRleHRQYXRoIiwic3RyaW5naWZ5Q3VzdG9tRGF0YSIsInN0b3JlT2JqZWN0VmFsdWUiLCJlZGl0TW9kZSIsIlZhbHVlSGVscCIsImNvbmRpdGlvbk1vZGVsIiwiZmlsdGVyRmllbGRWYWx1ZUhlbHAiLCJMb2ciLCJlcnJvciIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJzTWV0YVBhdGgiLCJlbnRpdHlUeXBlUGF0aCIsInNwbGl0Iiwic0VudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXRQYXRoIiwicGFyZW50Q29udGV4dFBhdGgiLCJmdWxsQ29udGV4dFBhdGgiLCJzT2JqZWN0UGF0aCIsInN0YXJ0c1dpdGgiLCJfYW5ub3RhdGlvblBhdGgiLCJvRXh0cmFQYXJhbXMiLCJmaWx0ZXJGaWVsZHMiLCJvVmlzdWFsaXphdGlvbk9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJwcm9wZXJ0eUluZm8iLCJnZXRTZWxlY3Rpb25GaWVsZHMiLCJzUHJvcGVydHlJbmZvIiwiQ29tbW9uIiwiRHJhZnRSb290IiwiZGlzYWJsZURyYWZ0RWRpdFN0YXRlRmlsdGVyIiwib1NlbGVjdGlvbkZpZWxkcyIsIlRlbXBsYXRlTW9kZWwiLCJ2aWV3RGF0YSIsIm1vZGVscyIsImdldERhdGEiLCJvRW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJvRW50aXR5U2V0Q29udGV4dCIsImdldENvbnRleHQiLCJvRmlsdGVyQ29uZGl0aW9ucyIsImdldEZpbHRlckNvbmRpdGlvbnMiLCJzZWxlY3Rpb25WYXJpYW50IiwiZmlsdGVyQ29uZGl0aW9ucyIsIl9wcm9jZXNzUHJvcGVydHlJbmZvcyIsIl9hcHBseUlkVG9Db250ZW50IiwiX2FwaUlkIiwiX2NvbnRlbnRJZCIsImdldENvbnRlbnRJZCIsIm9TZWFyY2hSZXN0cmljdGlvbkFubm90YXRpb24iLCJnZXRTZWFyY2hSZXN0cmljdGlvbnMiLCJCb29sZWFuIiwiU2VhcmNoYWJsZSIsImpzeCIsInJlbmRlckFzWE1MIiwiZGVzaWdudGltZSIsImdldERlc2lnbnRpbWUiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwibW9kZWwiLCJhUGFyYW1ldGVyRmllbGRzIiwic0ZldGNoZWRQcm9wZXJ0aWVzIiwiYUZldGNoZWRQcm9wZXJ0aWVzIiwiSlNPTiIsInBhcnNlIiwiZWRpdFN0YXRlTGFiZWwiLCJwcm9wSW5mbyIsImlzUGFyYW1ldGVyIiwicGF0aCIsImluY2x1ZGVzIiwicHJvcGVydHlMb2NhdGlvblBhdGgiLCJnZXRMb2NhdGlvbkZvclByb3BlcnR5UGF0aCIsInByb3BlcnR5UGF0aCIsIkNvbW1vblV0aWxzIiwiZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoIiwiUmVxdWlyZWRQcm9wZXJ0aWVzIiwic3RyaW5naWZ5IiwiX3BhcmFtZXRlcnMiLCJnZXRQZXJzaXN0ZW5jZVByb3ZpZGVyIiwiZmlsdGVyQmFySWQiLCJpZ25vcmVQZXJzb25hbGl6YXRpb25DaGFuZ2VzIiwiUGVyc2lzdGVuY2VQcm92aWRlciIsImZvciIsIm1vZGUiLCJmaWx0ZXJCYXJDb250ZXh0UGF0aCIsImFubm9QYXRoIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJnZXRUZW1wbGF0ZSIsImludGVybmFsQ29udGV4dFBhdGgiLCJmaWx0ZXJEZWxlZ2F0ZSIsImZpbHRlckJhckRlbGVnYXRlIiwiX3Byb3BlcnR5SW5mb0NvbnRyb2wiLCJmb3JtYXRQcm9wZXJ0eUluZm8iLCJGaWx0ZXJCYXJBUEkiLCJzZWFyY2giLCJmaWx0ZXJDaGFuZ2VkIiwiYWZ0ZXJDbGVhciIsImludGVybmFsU2VhcmNoIiwiaW50ZXJuYWxGaWx0ZXJDaGFuZ2VkIiwiRkVGaWx0ZXJCYXIiLCJsaXZlTW9kZSIsInZhcmlhbnRCYWNrcmVmZXJlbmNlIiwic2hvd0FkYXB0RmlsdGVyc0J1dHRvbiIsInNob3dDbGVhckJ1dHRvbiIsInAxM25Nb2RlIiwiZmlsdGVyc0NoYW5nZWQiLCJzaG93TWVzc2FnZXMiLCJ0b2dnbGVDb250cm9sIiwidG9nZ2xlQ29udHJvbElkIiwiaW5pdGlhbExheW91dCIsInZpc2libGUiLCJkZXBlbmRlbnRzIiwiYmFzaWNTZWFyY2hGaWVsZCIsImZpbHRlckl0ZW1zIiwiQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWx0ZXJCYXIuYmxvY2sudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgVGVtcGxhdGVNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVNb2RlbFwiO1xuaW1wb3J0IHtcblx0YmxvY2tBZ2dyZWdhdGlvbixcblx0YmxvY2tBdHRyaWJ1dGUsXG5cdGJsb2NrRXZlbnQsXG5cdGRlZmluZUJ1aWxkaW5nQmxvY2tcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IHsgc3RvcmVPYmplY3RWYWx1ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2VcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0U2VsZWN0aW9uVmFyaWFudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJGaWVsZCBhcyBDb252ZXJ0ZWRGaWx0ZXJGaWVsZCwgTWFuaWZlc3RGaWx0ZXJGaWVsZCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyQmFyXCI7XG5pbXBvcnQgeyBnZXRTZWxlY3Rpb25GaWVsZHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9MaXN0UmVwb3J0L0ZpbHRlckJhclwiO1xuaW1wb3J0IHsgZ2V0U2VhcmNoUmVzdHJpY3Rpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YU1vZGVsRnVuY3Rpb25cIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBGaWVsZEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEhlbHBlclwiO1xuaW1wb3J0IHsgbWF4Q29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJGaWVsZEhlbHBlclwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IERyYWZ0RWRpdFN0YXRlIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9EcmFmdEVkaXRTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyRmllbGQgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckZpZWxkXCI7XG5pbXBvcnQgeyBnZXRGaWx0ZXJDb25kaXRpb25zIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckhlbHBlclwiO1xuaW1wb3J0IEN1c3RvbUZyYWdtZW50QmxvY2sgZnJvbSBcInNhcC9mZS9tYWNyb3MvZnBtL0N1c3RvbUZyYWdtZW50LmJsb2NrXCI7XG5pbXBvcnQgSW50ZXJuYWxGaWx0ZXJGaWVsZCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9GaWx0ZXJGaWVsZC5ibG9ja1wiO1xuaW1wb3J0IFNlbGVjdCBmcm9tIFwic2FwL20vU2VsZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IExpc3RJdGVtIGZyb20gXCJzYXAvdWkvY29yZS9MaXN0SXRlbVwiO1xuaW1wb3J0IEZpZWxkSGVscEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL2ZpZWxkaGVscC9GaWVsZEhlbHBDdXN0b21EYXRhXCI7XG5pbXBvcnQgdHlwZSB7IElDb250ZXh0IH0gZnJvbSBcInNhcC91aS9jb3JlL3V0aWwvWE1MUHJlcHJvY2Vzc29yXCI7XG5pbXBvcnQgTURDRmlsdGVyRmllbGQgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uT2JqZWN0IH0gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJCYXJCYXNlJEZpbHRlcnNDaGFuZ2VkRXZlbnQsIEZpbHRlckJhckJhc2UkU2VhcmNoRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9maWx0ZXJiYXIvRmlsdGVyQmFyQmFzZVwiO1xuaW1wb3J0IFBlcnNpc3RlbmNlUHJvdmlkZXIgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9QZXJzaXN0ZW5jZVByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCIuLi9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBWYWx1ZUhlbHAgZnJvbSBcIi4uL1ZhbHVlSGVscFwiO1xuaW1wb3J0IEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIgZnJvbSBcIi4uL2NvbnRyb2xzL0N1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXJcIjtcbmltcG9ydCBGRUZpbHRlckJhciBmcm9tIFwiLi4vY29udHJvbHMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgU2xvdENvbHVtbiBmcm9tIFwiLi4vdGFibGUvU2xvdENvbHVtblwiO1xuaW1wb3J0IEZpbHRlckJhckFQSSBmcm9tIFwiLi9GaWx0ZXJCYXJBUElcIjtcblxuY29uc3Qgc2V0Q3VzdG9tRmlsdGVyRmllbGRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNoaWxkRmlsdGVyRmllbGQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uT2JqZWN0OiBGaWx0ZXJGaWVsZCk6IEZpbHRlckZpZWxkIHtcblx0YWdncmVnYXRpb25PYmplY3Quc2xvdE5hbWUgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXk7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0YWdncmVnYXRpb25PYmplY3QucHJvcGVydHkgPSBjaGlsZEZpbHRlckZpZWxkLmdldEF0dHJpYnV0ZShcInByb3BlcnR5XCIpITtcblx0YWdncmVnYXRpb25PYmplY3QubGFiZWwgPSBjaGlsZEZpbHRlckZpZWxkLmdldEF0dHJpYnV0ZShcImxhYmVsXCIpITtcblx0YWdncmVnYXRpb25PYmplY3QucmVxdWlyZWQgPSBjaGlsZEZpbHRlckZpZWxkLmdldEF0dHJpYnV0ZShcInJlcXVpcmVkXCIpID09PSBcInRydWVcIjtcblx0YWdncmVnYXRpb25PYmplY3QudGVtcGxhdGUgPSBjaGlsZEZpbHRlckZpZWxkLmdldEF0dHJpYnV0ZShcInRlbXBsYXRlXCIpIGFzIHVua25vd24gYXMgQ29udHJvbDsgLy8gQnV0IGl0J3MgYSBzdHJpbmc7XG5cdHJldHVybiBhZ2dyZWdhdGlvbk9iamVjdDtcbn07XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgRmlsdGVyQmFyIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOkZpbHRlckJhclxuICogaWQ9XCJTb21lSURcIlxuICogc2hvd0FkYXB0RmlsdGVyc0J1dHRvbj1cInRydWVcIlxuICogcDEzbk1vZGU9W1wiSXRlbVwiLFwiVmFsdWVcIl1cbiAqIGxpc3RCaW5kaW5nTmFtZXMgPSBcInNhcC5mZS50YWJsZUJpbmRpbmdcIlxuICogbGl2ZU1vZGU9XCJ0cnVlXCJcbiAqIHNlYXJjaD1cIi5oYW5kbGVycy5vblNlYXJjaFwiXG4gKiBmaWx0ZXJDaGFuZ2VkPVwiLmhhbmRsZXJzLm9uRmlsdGVyc0NoYW5nZWRcIlxuICogLyZndDtcbiAqIDwvcHJlPlxuICpcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIEZpbHRlckJhciBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiBAc2luY2UgMS45NC4wXG4gKi9cbkBkZWZpbmVCdWlsZGluZ0Jsb2NrKHtcblx0bmFtZTogXCJGaWx0ZXJCYXJcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhckFQSVwiXVxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckJhckJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIHtcblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRpZD86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHZpc2libGU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIHNlbGVjdGlvbkZpZWxkcyB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiXG5cdH0pXG5cdHNlbGVjdGlvbkZpZWxkcz86IENvbnZlcnRlZEZpbHRlckZpZWxkW10gfCBDb250ZXh0O1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZmlsdGVyQmFyRGVsZWdhdGU/OiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0bWV0YVBhdGg/OiBDb250ZXh0O1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGlzcGxheXMgcG9zc2libGUgZXJyb3JzIGR1cmluZyB0aGUgc2VhcmNoIGluIGEgbWVzc2FnZSBib3hcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0c2hvd01lc3NhZ2VzID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBhc3NpZ25lZCB2YXJpYW50IG1hbmFnZW1lbnRcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHR2YXJpYW50QmFja3JlZmVyZW5jZT86IHN0cmluZztcblxuXHQvKipcblx0ICogRG9uJ3Qgc2hvdyB0aGUgYmFzaWMgc2VhcmNoIGZpZWxkXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdGhpZGVCYXNpY1NlYXJjaD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEVuYWJsZXMgdGhlIGZhbGxiYWNrIHRvIHNob3cgYWxsIGZpZWxkcyBvZiB0aGUgRW50aXR5VHlwZSBhcyBmaWx0ZXIgZmllbGRzIGlmIGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkcyBhcmUgbm90IHByZXNlbnRcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0ZW5hYmxlRmFsbGJhY2sgPSBmYWxzZTtcblxuXHQvKipcblx0ICogSGFuZGxlcyB2aXNpYmlsaXR5IG9mIHRoZSAnQWRhcHQgRmlsdGVycycgYnV0dG9uIG9uIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0c2hvd0FkYXB0RmlsdGVyc0J1dHRvbiA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgcGVyc29uYWxpemF0aW9uIG9wdGlvbnMgZm9yIHRoZSBmaWx0ZXIgYmFyLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1tdXCJcblx0fSlcblx0cDEzbk1vZGUgPSBcIkl0ZW0sVmFsdWVcIjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHJvcGVydHlJbmZvPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIFNlbWF0aWMgRGF0ZSBSYW5nZSBvcHRpb24gZm9yIHRoZSBmaWx0ZXIgYmFyLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHR1c2VTZW1hbnRpY0RhdGVSYW5nZSA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIG9wdGlvbiBmb3IgdGhlIGZpbHRlciBiYXIuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nW11cIlxuXHR9KVxuXHRuYXZpZ2F0aW9uUHJvcGVydGllcz86IHN0cmluZ1tdO1xuXG5cdC8qKlxuXHQgKiBJZiBzZXQsIHRoZSBzZWFyY2ggaXMgYXV0b21hdGljYWxseSB0cmlnZ2VyZWQgd2hlbiBhIGZpbHRlciB2YWx1ZSBpcyBjaGFuZ2VkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRsaXZlTW9kZSA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBGaWx0ZXIgY29uZGl0aW9ucyB0byBiZSBhcHBsaWVkIHRvIHRoZSBmaWx0ZXIgYmFyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IGZhbHNlXG5cdH0pXG5cdGZpbHRlckNvbmRpdGlvbnM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIElmIHNldCB0byA8Y29kZT50cnVlPC9jb2RlPiwgYWxsIHNlYXJjaCByZXF1ZXN0cyBhcmUgaWdub3JlZC4gT25jZSBpdCBoYXMgYmVlbiBzZXQgdG8gPGNvZGU+ZmFsc2U8L2NvZGU+LFxuXHQgKiBhIHNlYXJjaCBpcyB0cmlnZ2VyZWQgaW1tZWRpYXRlbHkgaWYgb25lIG9yIG1vcmUgc2VhcmNoIHJlcXVlc3RzIGhhdmUgYmVlbiB0cmlnZ2VyZWQgaW4gdGhlIG1lYW50aW1lXG5cdCAqIGJ1dCB3ZXJlIGlnbm9yZWQgYmFzZWQgb24gdGhlIHNldHRpbmcuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHN1c3BlbmRTZWxlY3Rpb24gPSBmYWxzZTtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdGlzRHJhZnRDb2xsYWJvcmF0aXZlID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIElkIG9mIGNvbnRyb2wgdGhhdCB3aWxsIGFsbG93IGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBub3JtYWwgYW5kIHZpc3VhbCBmaWx0ZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHR0b2dnbGVDb250cm9sSWQ/OiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdGluaXRpYWxMYXlvdXQgPSBcImNvbXBhY3RcIjtcblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgJ0NsZWFyJyBidXR0b24gb24gdGhlIEZpbHRlckJhci5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0c2hvd0NsZWFyQnV0dG9uID0gZmFsc2U7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRfYXBwbHlJZFRvQ29udGVudCA9IGZhbHNlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0ZGlzYWJsZURyYWZ0RWRpdFN0YXRlRmlsdGVyID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFRlbXBvcmFyeSB3b3JrYXJvdW5kIG9ubHlcblx0ICogcGF0aCB0byBjb250ZXh0UGF0aCB0byBiZSB1c2VkIGJ5IGNoaWxkIGZpbHRlcmZpZWxkc1xuXHQgKi9cblx0X2ludGVybmFsQ29udGV4dFBhdGghOiBDb250ZXh0O1xuXG5cdF9wYXJhbWV0ZXJzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2Fubm90YXRpb25QYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIHNlYXJjaCBldmVudCBvZiB0aGUgRmlsdGVyQmFyXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHNlYXJjaD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgZmlsdGVyQ2hhbmdlIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0ZmlsdGVyQ2hhbmdlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgZmlsdGVyQ2hhbmdlZCBldmVudCBvZiB0aGUgRmlsdGVyQmFyLiBFeHBvc2VzIHBhcmFtZXRlcnMgZnJvbSB0aGUgTURDIGZpbHRlciBiYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0aW50ZXJuYWxGaWx0ZXJDaGFuZ2VkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBzZWFyY2ggZXZlbnQgb2YgdGhlIEZpbHRlckJhci4gRXhwb3NlcyBwYXJhbWV0ZXJlcyBmcm9tIHRoZSBNREMgZmlsdGVyIGJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRpbnRlcm5hbFNlYXJjaD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgYWZ0ZXJDbGVhciBldmVudCBvZiB0aGUgRmlsdGVyQmFyXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGFmdGVyQ2xlYXI/OiBzdHJpbmc7XG5cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyRmllbGRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRwcm9jZXNzQWdncmVnYXRpb25zOiBzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXNcblx0fSlcblx0ZmlsdGVyRmllbGRzPzogRmlsdGVyRmllbGQ7XG5cblx0X2FwaUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2NvbnRlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF92YWx1ZUhlbHBzOiBBcnJheTxzdHJpbmc+IHwgXCJcIiB8IHVuZGVmaW5lZDtcblxuXHRfZmlsdGVyRmllbGRzOiBBcnJheTxzdHJpbmc+IHwgXCJcIiB8IHVuZGVmaW5lZDtcblxuXHRzaG93RHJhZnRFZGl0U3RhdGUgPSBmYWxzZTtcblxuXHRkZXNpZ250aW1lPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGlzIG1vZGUgbXVzdCBiZSB1c2VkIHdoZW4gaXQgaXMgY2VydGFpbiB0aGF0IGEgY29udHJvbCBtdXN0IG5vdCBwZXJzaXN0IGl0wrRzIHBlcnNvbmFsaXphdGlvbiBzdGF0ZSB1cG9uIGluaXRpYWxpemF0aW9uLlxuXHQgKiBAZXhwZXJpbWVudGFsXG5cdCAqIEBzaW5jZSAxLjEzNi4wXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGlnbm9yZVBlcnNvbmFsaXphdGlvbkNoYW5nZXMgPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPEZpbHRlckJhckJsb2NrPiwgY29uZmlndXJhdGlvbjogdW5rbm93biwgbVNldHRpbmdzOiBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcHMsIGNvbmZpZ3VyYXRpb24sIG1TZXR0aW5ncyk7XG5cdFx0aWYgKCF0aGlzLm1ldGFQYXRoKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJDb250ZXh0IFBhdGggbm90IGF2YWlsYWJsZSBmb3IgRmlsdGVyQmFyIE1hY3JvLlwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgc01ldGFQYXRoID0gdGhpcy5tZXRhUGF0aC5nZXRQYXRoKCk7XG5cdFx0bGV0IGVudGl0eVR5cGVQYXRoID0gXCJcIjtcblx0XHRjb25zdCBtZXRhUGF0aFBhcnRzID0gc01ldGFQYXRoPy5zcGxpdChcIi9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCIpIHx8IFtdOyAvLyBbMF06IGVudGl0eVR5cGVQYXRoLCBbMV06IFNGIFF1YWxpZmllci5cblx0XHRpZiAobWV0YVBhdGhQYXJ0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRlbnRpdHlUeXBlUGF0aCA9IHRoaXMuZ2V0RW50aXR5VHlwZVBhdGgobWV0YVBhdGhQYXJ0cyk7XG5cdFx0fVxuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChlbnRpdHlUeXBlUGF0aCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IHRoaXMuY29udGV4dFBhdGg/LmdldE1vZGVsKCk7XG5cdFx0dGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCA9IG9NZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGVudGl0eVR5cGVQYXRoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGFubm90YXRpb25QYXRoOiBzdHJpbmcgPSBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIiArICgobWV0YVBhdGhQYXJ0cy5sZW5ndGggJiYgbWV0YVBhdGhQYXJ0c1sxXSkgfHwgXCJcIik7XG5cdFx0Y29uc3QgcGFyZW50Q29udGV4dFBhdGggPSBtU2V0dGluZ3M/LmZ1bGxDb250ZXh0UGF0aCBhcyBzdHJpbmc7XG5cdFx0bGV0IHNPYmplY3RQYXRoID0gYW5ub3RhdGlvblBhdGg7XG5cdFx0aWYgKHBhcmVudENvbnRleHRQYXRoICE9PSBcIlwiICYmIHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGguZ2V0UGF0aCgpPy5zdGFydHNXaXRoKHBhcmVudENvbnRleHRQYXRoKSkge1xuXHRcdFx0c09iamVjdFBhdGggPSBzTWV0YVBhdGgucmVwbGFjZShwYXJlbnRDb250ZXh0UGF0aCwgXCJcIik7XG5cdFx0fVxuXHRcdHRoaXMuX2Fubm90YXRpb25QYXRoID0gYW5ub3RhdGlvblBhdGg7XG5cdFx0Y29uc3Qgb0V4dHJhUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB7IGZpbHRlckZpZWxkcz86IEZpbHRlckZpZWxkIH0+ID0ge307XG5cdFx0aWYgKHRoaXMuZmlsdGVyRmllbGRzKSB7XG5cdFx0XHRvRXh0cmFQYXJhbXNbc09iamVjdFBhdGhdID0ge1xuXHRcdFx0XHRmaWx0ZXJGaWVsZHM6IHRoaXMuZmlsdGVyRmllbGRzXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGNvbnN0IG9WaXN1YWxpemF0aW9uT2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyh0aGlzLl9pbnRlcm5hbENvbnRleHRQYXRoKTtcblx0XHRjb25zdCBvQ29udmVydGVyQ29udGV4dCA9IHRoaXMuZ2V0Q29udmVydGVyQ29udGV4dChvVmlzdWFsaXphdGlvbk9iamVjdFBhdGgsIHVuZGVmaW5lZCwgbVNldHRpbmdzLCBvRXh0cmFQYXJhbXMpO1xuXHRcdGlmICghdGhpcy5wcm9wZXJ0eUluZm8pIHtcblx0XHRcdHRoaXMucHJvcGVydHlJbmZvID0gZ2V0U2VsZWN0aW9uRmllbGRzKG9Db252ZXJ0ZXJDb250ZXh0LCBbXSwgYW5ub3RhdGlvblBhdGgpLnNQcm9wZXJ0eUluZm87XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGFyZ2V0RW50aXR5U2V0ID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKHRoaXMubWV0YVBhdGgsIHRoaXMuY29udGV4dFBhdGgpLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQ7XG5cdFx0aWYgKHRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290ICYmICF0aGlzLmRpc2FibGVEcmFmdEVkaXRTdGF0ZUZpbHRlcikge1xuXHRcdFx0dGhpcy5zaG93RHJhZnRFZGl0U3RhdGUgPSB0cnVlO1xuXHRcdFx0dGhpcy5jaGVja0lmRWRpdGluZ0ZpbHRlcklzRGlzYWJsZWQodGFyZ2V0RW50aXR5U2V0KTtcblx0XHRcdHRoaXMuY2hlY2tJZkNvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKTtcblx0XHR9XG5cblx0XHQvL0ZpbHRlciBGaWVsZHMgYW5kIHZhbHVlcyB0byB0aGUgZmllbGQgYXJlIGZpbGxlZCBiYXNlZCBvbiB0aGUgc2VsZWN0aW9uRmllbGRzIGFuZCB0aGlzIHdvdWxkIGJlIGVtcHR5IGluIGNhc2Ugb2YgbWFjcm8gb3V0c2lkZSB0aGUgRkUgdGVtcGxhdGVcblx0XHRpZiAoIXRoaXMuc2VsZWN0aW9uRmllbGRzKSB7XG5cdFx0XHRjb25zdCBvU2VsZWN0aW9uRmllbGRzID0gZ2V0U2VsZWN0aW9uRmllbGRzKG9Db252ZXJ0ZXJDb250ZXh0LCBbXSwgYW5ub3RhdGlvblBhdGgpLnNlbGVjdGlvbkZpZWxkcztcblx0XHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzID0gbmV3IFRlbXBsYXRlTW9kZWwob1NlbGVjdGlvbkZpZWxkcywgb01ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbCkuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpO1xuXHRcdFx0Y29uc3Qgdmlld0RhdGEgPSBtU2V0dGluZ3M/Lm1vZGVscz8udmlld0RhdGE/LmdldERhdGEoKTtcblx0XHRcdGNvbnN0IG9FbnRpdHlUeXBlID0gb0NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLFxuXHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudCA9IGdldFNlbGVjdGlvblZhcmlhbnQob0VudGl0eVR5cGUsIG9Db252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0b0VudGl0eVNldENvbnRleHQgPSAob01ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbCkuZ2V0Q29udGV4dChzRW50aXR5U2V0UGF0aCkgYXMgT0RhdGFWNENvbnRleHQsXG5cdFx0XHRcdG9GaWx0ZXJDb25kaXRpb25zID0gZ2V0RmlsdGVyQ29uZGl0aW9ucyhcblx0XHRcdFx0XHRvRW50aXR5U2V0Q29udGV4dCBhcyB1bmtub3duIGFzIElDb250ZXh0LCAvLyBXcm9uZyBidXQgc29tZWhvdyB3b3JrcyA/LFxuXHRcdFx0XHRcdHsgc2VsZWN0aW9uVmFyaWFudDogb1NlbGVjdGlvblZhcmlhbnQgfSxcblx0XHRcdFx0XHRvRW50aXR5U2V0Q29udGV4dC5nZXRPYmplY3QoKSxcblx0XHRcdFx0XHR2aWV3RGF0YSxcblx0XHRcdFx0XHR0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZVxuXHRcdFx0XHQpO1xuXHRcdFx0dGhpcy5maWx0ZXJDb25kaXRpb25zID0gb0ZpbHRlckNvbmRpdGlvbnM7XG5cdFx0fVxuXHRcdHRoaXMuX3Byb2Nlc3NQcm9wZXJ0eUluZm9zKHRoaXMucHJvcGVydHlJbmZvLCBvTWV0YU1vZGVsKTtcblxuXHRcdGlmICh0aGlzLl9hcHBseUlkVG9Db250ZW50KSB7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMuaWQgKyBcIjo6RmlsdGVyQmFyXCI7XG5cdFx0XHR0aGlzLl9jb250ZW50SWQgPSB0aGlzLmlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMuaWQ7XG5cdFx0XHR0aGlzLl9jb250ZW50SWQgPSB0aGlzLmdldENvbnRlbnRJZCh0aGlzLmlkICsgXCJcIik7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaGlkZUJhc2ljU2VhcmNoICE9PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uID0gZ2V0U2VhcmNoUmVzdHJpY3Rpb25zKHNFbnRpdHlTZXRQYXRoLCBvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKTtcblx0XHRcdHRoaXMuaGlkZUJhc2ljU2VhcmNoID0gQm9vbGVhbihvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uICYmICFvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uLlNlYXJjaGFibGUpO1xuXHRcdH1cblx0XHRqc3gucmVuZGVyQXNYTUwoKCkgPT4gdGhpcy5wcm9jZXNzU2VsZWN0aW9uRmllbGRzKCkpO1xuXG5cdFx0dGhpcy5kZXNpZ250aW1lID0gdGhpcy5nZXREZXNpZ250aW1lKCk7XG5cdH1cblxuXHRfcHJvY2Vzc1Byb3BlcnR5SW5mb3MocHJvcGVydHlJbmZvOiBzdHJpbmcsIG1vZGVsOiBPRGF0YU1ldGFNb2RlbCk6IHZvaWQge1xuXHRcdGNvbnN0IGFQYXJhbWV0ZXJGaWVsZHM6IHN0cmluZ1tdID0gW107XG5cdFx0aWYgKHByb3BlcnR5SW5mbykge1xuXHRcdFx0Y29uc3Qgc0ZldGNoZWRQcm9wZXJ0aWVzID0gcHJvcGVydHlJbmZvLnJlcGxhY2UoL1xcXFx7L2csIFwie1wiKS5yZXBsYWNlKC9cXFxcfS9nLCBcIn1cIik7XG5cdFx0XHRjb25zdCBhRmV0Y2hlZFByb3BlcnRpZXMgPSBKU09OLnBhcnNlKHNGZXRjaGVkUHJvcGVydGllcyk7XG5cdFx0XHRjb25zdCBlZGl0U3RhdGVMYWJlbCA9IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJGSUxURVJCQVJfRURJVElOR19TVEFUVVNcIik7XG5cdFx0XHRhRmV0Y2hlZFByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAocHJvcEluZm86IFByb3BlcnR5SW5mbykge1xuXHRcdFx0XHRwcm9wSW5mby5rZXkgPSBwcm9wSW5mby5uYW1lO1xuXHRcdFx0XHRpZiAocHJvcEluZm8uaXNQYXJhbWV0ZXIpIHtcblx0XHRcdFx0XHRhUGFyYW1ldGVyRmllbGRzLnB1c2gocHJvcEluZm8ubmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHByb3BJbmZvLnBhdGggPT09IFwiJGVkaXRTdGF0ZVwiKSB7XG5cdFx0XHRcdFx0cHJvcEluZm8ubGFiZWwgPSBlZGl0U3RhdGVMYWJlbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocHJvcEluZm8ua2V5Py5pbmNsdWRlcyhcIi9cIikpIHtcblx0XHRcdFx0XHQvL1RPIERPOiBOZWVkIHRvIHBsYWNlIHRoaXMgbG9naWMgaW4gY29tbW9uIHBsYWNlIHdoZW4gd2UgY292ZXIgZmlsdGVyUmV0cmljdGlvbnMgd2l0aCB0aGlzIEJMSSBGSU9SSVRFQ0hQMS0yNTA4MFxuXHRcdFx0XHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gKHByb3BJbmZvIGFzIENvbnZlcnRlZEZpbHRlckZpZWxkKS5hbm5vdGF0aW9uUGF0aDtcblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eUxvY2F0aW9uUGF0aCA9IENvbW1vbkhlbHBlci5nZXRMb2NhdGlvbkZvclByb3BlcnR5UGF0aChtb2RlbCwgYW5ub3RhdGlvblBhdGgpO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5UGF0aCA9IGFubm90YXRpb25QYXRoLnJlcGxhY2UoYCR7cHJvcGVydHlMb2NhdGlvblBhdGh9L2AsIFwiXCIpO1xuXHRcdFx0XHRcdHByb3BJbmZvLnJlcXVpcmVkID0gQ29tbW9uVXRpbHMuZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoKHByb3BlcnR5TG9jYXRpb25QYXRoLCBtb2RlbCk/LlJlcXVpcmVkUHJvcGVydGllcz8uaW5jbHVkZXMoXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eVBhdGhcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5wcm9wZXJ0eUluZm8gPSBKU09OLnN0cmluZ2lmeShhRmV0Y2hlZFByb3BlcnRpZXMpLnJlcGxhY2UoL1xcey9nLCBcIlxcXFx7XCIpLnJlcGxhY2UoL1xcfS9nLCBcIlxcXFx9XCIpO1xuXHRcdH1cblx0XHR0aGlzLl9wYXJhbWV0ZXJzID0gSlNPTi5zdHJpbmdpZnkoYVBhcmFtZXRlckZpZWxkcyk7XG5cdH1cblxuXHRjaGVja0lmRWRpdGluZ0ZpbHRlcklzRGlzYWJsZWQgPSAodGFyZ2V0RW50aXR5U2V0OiBFbnRpdHlTZXQpOiB2b2lkID0+IHtcblx0XHRpZiAoXG5cdFx0XHR0YXJnZXRFbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uTmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXM/LnNvbWUoXG5cdFx0XHRcdChyKSA9PiByLk5hdmlnYXRpb25Qcm9wZXJ0eT8udmFsdWUgPT09IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFcIiAmJiByLkZpbHRlclJlc3RyaWN0aW9ucz8uRmlsdGVyYWJsZSA9PT0gZmFsc2Vcblx0XHRcdCkgPT09IHRydWVcblx0XHQpIHtcblx0XHRcdHRoaXMuc2hvd0RyYWZ0RWRpdFN0YXRlID0gZmFsc2U7XG5cdFx0fVxuXHR9O1xuXG5cdGNoZWNrSWZDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQgPSAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwgfCB1bmRlZmluZWQpOiB2b2lkID0+IHtcblx0XHRpZiAoTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCkpIHtcblx0XHRcdHRoaXMuaXNEcmFmdENvbGxhYm9yYXRpdmUgPSB0cnVlO1xuXHRcdH1cblx0fTtcblxuXHRnZXRFbnRpdHlUeXBlUGF0aCA9IChtZXRhUGF0aFBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZyA9PiB7XG5cdFx0cmV0dXJuIG1ldGFQYXRoUGFydHNbMF0uZW5kc1dpdGgoXCIvXCIpID8gbWV0YVBhdGhQYXJ0c1swXSA6IG1ldGFQYXRoUGFydHNbMF0gKyBcIi9cIjtcblx0fTtcblxuXHRnZXRTZWFyY2ggPSAoKTogc3RyaW5nID0+IHtcblx0XHRpZiAoIXRoaXMuaGlkZUJhc2ljU2VhcmNoKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TURDRmlsdGVyRmllbGRcblx0XHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiQmFzaWNTZWFyY2hGaWVsZFwiXSl9XG5cdFx0XHRcdFx0bGFiZWw9e1wiXCJ9XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJ7c2FwLmZlLmkxOG4+TV9GSUxURVJCQVJfU0VBUkNIfVwiXG5cdFx0XHRcdFx0cHJvcGVydHlLZXk9XCIkc2VhcmNoXCJcblx0XHRcdFx0XHRjb25kaXRpb25zPVwieyRmaWx0ZXJzPi9jb25kaXRpb25zLyRzZWFyY2h9XCJcblx0XHRcdFx0XHRkYXRhVHlwZT1cInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiXG5cdFx0XHRcdFx0bWF4Q29uZGl0aW9ucz1cIjFcIlxuXHRcdFx0XHRcdGRhdGFUeXBlQ29uc3RyYWludHM9XCJ7J21heExlbmd0aCc6MTAwMH1cIlxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH07XG5cblx0cHJvY2Vzc1NlbGVjdGlvbkZpZWxkcyA9ICgpOiB2b2lkID0+IHtcblx0XHRsZXQgZHJhZnRFZGl0U3RhdGUgPSBcIlwiO1xuXHRcdGlmICh0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZSkge1xuXHRcdFx0Y29uc3QgZHJhZnRTdGF0ZXMgPSBEcmFmdEVkaXRTdGF0ZS5nZXRFZGl0U3RhdGVzKHRoaXMuaXNEcmFmdENvbGxhYm9yYXRpdmUpO1xuXHRcdFx0Y29uc3QgbGFiZWwgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiRklMVEVSQkFSX0VESVRJTkdfU1RBVFVTXCIpO1xuXHRcdFx0ZHJhZnRFZGl0U3RhdGUgPSAoXG5cdFx0XHRcdDxNRENGaWx0ZXJGaWVsZFxuXHRcdFx0XHRcdGxhYmVsPXtsYWJlbH1cblx0XHRcdFx0XHRjb25kaXRpb25zPVwieyRmaWx0ZXJzPi9jb25kaXRpb25zLyRlZGl0U3RhdGV9XCJcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zPVwiMVwiXG5cdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkXCIsIFwiRHJhZnRFZGl0aW5nU3RhdHVzXCJdKX1cblx0XHRcdFx0XHRvcGVyYXRvcnM9XCJFUVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGU9XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJpbmdcIlxuXHRcdFx0XHRcdHByb3BlcnR5S2V5PVwiJGVkaXRTdGF0ZVwiXG5cdFx0XHRcdFx0ZGlzcGxheT1cIkRlc2NyaXB0aW9uXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50RWRpdDogKFxuXHRcdFx0XHRcdFx0XHQ8U2VsZWN0XG5cdFx0XHRcdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkXCIsIFwiRHJhZnRFZGl0aW5nU3RhdHVzU2VsZWN0XCJdKX1cblx0XHRcdFx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdFx0XHRcdGZvcmNlU2VsZWN0aW9uPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk9XCJ7cGF0aDogJyRmaWVsZD4vY29uZGl0aW9ucycsIHR5cGU6ICdzYXAudWkubWRjLmZpZWxkLkNvbmRpdGlvbnNUeXBlJ31cIlxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0e3sgaXRlbXM6IGRyYWZ0U3RhdGVzLm1hcCgoc3RhdGUpID0+IDxMaXN0SXRlbSBrZXk9e3N0YXRlLmlkfSB0ZXh0PXtzdGF0ZS5kaXNwbGF5fSAvPikgfX1cblx0XHRcdFx0XHRcdFx0PC9TZWxlY3Q+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9NRENGaWx0ZXJGaWVsZD5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHRoaXMuX3ZhbHVlSGVscHMgPSBbXTtcblx0XHR0aGlzLl9maWx0ZXJGaWVsZHMgPSBbXTtcblx0XHR0aGlzLl9maWx0ZXJGaWVsZHM/LnB1c2goZHJhZnRFZGl0U3RhdGUpO1xuXHRcdGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGlvbkZpZWxkcykpIHtcblx0XHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzID0gdGhpcy5zZWxlY3Rpb25GaWVsZHMhLmdldE9iamVjdCgpIGFzIENvbnZlcnRlZEZpbHRlckZpZWxkW107XG5cdFx0fVxuXHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzPy5mb3JFYWNoKChzZWxlY3Rpb25GaWVsZDogQ29udmVydGVkRmlsdGVyRmllbGQpID0+IHtcblx0XHRcdGlmIChzZWxlY3Rpb25GaWVsZC5hdmFpbGFiaWxpdHkgPT09IFwiRGVmYXVsdFwiKSB7XG5cdFx0XHRcdHRoaXMuc2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyhzZWxlY3Rpb25GaWVsZCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5fZmlsdGVyRmllbGRzID0gdGhpcy5fZmlsdGVyRmllbGRzPy5sZW5ndGggPiAwID8gdGhpcy5fZmlsdGVyRmllbGRzIDogXCJcIjtcblx0XHR0aGlzLl92YWx1ZUhlbHBzID0gdGhpcy5fdmFsdWVIZWxwcz8ubGVuZ3RoID4gMCA/IHRoaXMuX3ZhbHVlSGVscHMgOiBcIlwiO1xuXHR9O1xuXG5cdGdldFBlcnNpc3RlbmNlUHJvdmlkZXIoZmlsdGVyQmFySWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuaWdub3JlUGVyc29uYWxpemF0aW9uQ2hhbmdlcykge1xuXHRcdFx0cmV0dXJuIDxQZXJzaXN0ZW5jZVByb3ZpZGVyIGlkPXtnZW5lcmF0ZShbZmlsdGVyQmFySWQsIFwiUGVyc2lzdGVuY2VQcm92aWRlclwiXSl9IGZvcj17ZmlsdGVyQmFySWR9IG1vZGU9e1wiVHJhbnNpZW50XCJ9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0c2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyA9IChzZWxlY3Rpb25GaWVsZDogQ29udmVydGVkRmlsdGVyRmllbGQpOiB2b2lkID0+IHtcblx0XHRpZiAoc2VsZWN0aW9uRmllbGQudGVtcGxhdGUgPT09IHVuZGVmaW5lZCAmJiBzZWxlY3Rpb25GaWVsZC50eXBlICE9PSBcIlNsb3RcIikge1xuXHRcdFx0dGhpcy5wdXNoRmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyhzZWxlY3Rpb25GaWVsZCk7XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2ZpbHRlckZpZWxkcykpIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUNvbnRleHQgPSB0aGlzLm1ldGFQYXRoIS5nZXRNb2RlbCgpLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHByb3BlcnR5KTtcblx0XHRcdGNvbnN0IHByb3BlcnR5T2JqZWN0ID0gcHJvcGVydHlDb250ZXh0Py5nZXRPYmplY3QoKTtcblx0XHRcdGxldCBmaWx0ZXJDb250ZW50O1xuXHRcdFx0aWYgKHNlbGVjdGlvbkZpZWxkLnR5cGUgPT09IFwiU2xvdFwiKSB7XG5cdFx0XHRcdGZpbHRlckNvbnRlbnQgPSAoXG5cdFx0XHRcdFx0PFNsb3RDb2x1bW4gdGVtcGxhdGVJZD17c2VsZWN0aW9uRmllbGQudGVtcGxhdGV9PlxuXHRcdFx0XHRcdFx0PHNsb3QgbmFtZT17KHNlbGVjdGlvbkZpZWxkIGFzIE1hbmlmZXN0RmlsdGVyRmllbGQpLnNsb3ROYW1lIX0gLz5cblx0XHRcdFx0XHQ8L1Nsb3RDb2x1bW4+XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2UgaWYgKHNlbGVjdGlvbkZpZWxkLnRlbXBsYXRlKSB7XG5cdFx0XHRcdGZpbHRlckNvbnRlbnQgPSAoXG5cdFx0XHRcdFx0PEN1c3RvbUZyYWdtZW50QmxvY2tcblx0XHRcdFx0XHRcdGZyYWdtZW50TmFtZT17c2VsZWN0aW9uRmllbGQudGVtcGxhdGV9XG5cdFx0XHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiQ3VzdG9tRmlsdGVyRmllbGRcIiwgc2VsZWN0aW9uRmllbGQua2V5XSl9XG5cdFx0XHRcdFx0XHRjb250ZXh0UGF0aD17XCJ7Y29udGV4dFBhdGg+fVwiIGFzIHVua25vd24gYXMgQ29udGV4dH1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0bGV0IG1heENvbmRpdGlvblZhbHVlID0gLTE7XG5cdFx0XHRpZiAocHJvcGVydHlDb250ZXh0KSB7XG5cdFx0XHRcdG1heENvbmRpdGlvblZhbHVlID0gbWF4Q29uZGl0aW9ucyhzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aCwgeyBjb250ZXh0OiBwcm9wZXJ0eUNvbnRleHQgfSkgPz8gLTE7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9maWx0ZXJGaWVsZHM/LnB1c2goXG5cdFx0XHRcdDxNRENGaWx0ZXJGaWVsZFxuXHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJDdXN0b21GaWx0ZXJGaWVsZFwiLCBzZWxlY3Rpb25GaWVsZC5rZXldKX1cblx0XHRcdFx0XHRkZWxlZ2F0ZT17eyBuYW1lOiBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRCYXNlRGVsZWdhdGVcIiB9fVxuXHRcdFx0XHRcdHByb3BlcnR5S2V5PXtzZWxlY3Rpb25GaWVsZC5jb25kaXRpb25QYXRofVxuXHRcdFx0XHRcdGxhYmVsPXtzZWxlY3Rpb25GaWVsZC5sYWJlbH1cblx0XHRcdFx0XHRkYXRhVHlwZT17c2VsZWN0aW9uRmllbGQuZGF0YVR5cGV9XG5cdFx0XHRcdFx0bWF4Q29uZGl0aW9ucz17bWF4Q29uZGl0aW9uVmFsdWV9XG5cdFx0XHRcdFx0Y29uZGl0aW9ucz17YHskZmlsdGVycz4vY29uZGl0aW9ucy8ke3NlbGVjdGlvbkZpZWxkLmNvbmRpdGlvblBhdGh9fWB9XG5cdFx0XHRcdFx0b3BlcmF0b3JzPXtGaWVsZEhlbHBlci5vcGVyYXRvcnMoXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eUNvbnRleHQsXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eU9iamVjdCxcblx0XHRcdFx0XHRcdHRoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2UsXG5cdFx0XHRcdFx0XHRzZWxlY3Rpb25GaWVsZC5zZXR0aW5ncyBhcyB1bmtub3duIGFzIHN0cmluZyxcblx0XHRcdFx0XHRcdHRoaXMuY29udGV4dFBhdGghLmdldFBhdGgoKVxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0ZGF0YVR5cGVDb25zdHJhaW50cz17KHNlbGVjdGlvbkZpZWxkIGFzIHVua25vd24gYXMgeyBjb25zdHJhaW50czogdW5rbm93biB9KS5jb25zdHJhaW50c31cblx0XHRcdFx0XHRkYXRhVHlwZUZvcm1hdE9wdGlvbnM9eyhzZWxlY3Rpb25GaWVsZCBhcyB1bmtub3duIGFzIHsgZm9ybWF0T3B0aW9uczogdW5rbm93biB9KS5mb3JtYXRPcHRpb25zfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17XCJ1bmRlZmluZWRcIn1cblx0XHRcdFx0XHRyZXF1aXJlZD17c2VsZWN0aW9uRmllbGQucmVxdWlyZWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclxuXHRcdFx0XHRcdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntoYW5kbGVyOiAnc2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHMnfVwiXG5cdFx0XHRcdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkQ29udGVudFdyYXBwZXJcIiwgc2VsZWN0aW9uRmllbGQua2V5XSl9XG5cdFx0XHRcdFx0XHRcdFx0YmluZGluZz17YHtmaWx0ZXJWYWx1ZXM+LyR7RmlsdGVyVXRpbHMuY29uZGl0aW9uVG9Nb2RlbFBhdGgoc2VsZWN0aW9uRmllbGQuY29uZGl0aW9uUGF0aCl9fWB9XG5cdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9ucz17XCJ7cGF0aDogJyRmaWVsZD4vY29uZGl0aW9ucyd9XCIgYXMgdW5rbm93biBhcyBDb25kaXRpb25PYmplY3RbXX1cblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdHt7IGNvbnRlbnQ6IGZpbHRlckNvbnRlbnQgfX1cblx0XHRcdFx0XHRcdFx0PC9DdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyPlxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IFtcblx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcImlzU2xvdFwifSB2YWx1ZT17c2VsZWN0aW9uRmllbGQudHlwZSA9PT0gXCJTbG90XCJ9IC8+LFxuXHRcdFx0XHRcdFx0XHQ8RmllbGRIZWxwQ3VzdG9tRGF0YVxuXHRcdFx0XHRcdFx0XHRcdGtleT17XCJzYXAtdWktRG9jdW1lbnRhdGlvblJlZlwifVxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtge3BhcnRzOiBbe3ZhbHVlOiAnYXNBcnJheSd9LCB7dmFsdWU6ICcke3NlbGVjdGlvbkZpZWxkLmRvY3VtZW50UmVmVGV4dH0nfV0sIGZvcm1hdHRlcjogJ3NhcC5mZS5jb3JlLmZvcm1hdHRlcnMuU3RhbmRhcmRGb3JtYXR0ZXInfWB9XG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9NRENGaWx0ZXJGaWVsZD5cblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXG5cdF9nZXRDb250ZXh0UGF0aEZvckZpbHRlckZpZWxkKHNlbGVjdGlvbkZpZWxkOiBDb252ZXJ0ZWRGaWx0ZXJGaWVsZCwgZmlsdGVyQmFyQ29udGV4dFBhdGg6IENvbnRleHQpOiBzdHJpbmcge1xuXHRcdGxldCBjb250ZXh0UGF0aDogc3RyaW5nID0gZmlsdGVyQmFyQ29udGV4dFBhdGg/LmdldFBhdGgoKTtcblx0XHRpZiAoc2VsZWN0aW9uRmllbGQuaXNQYXJhbWV0ZXIpIHtcblx0XHRcdC8vIEV4YW1wbGU6XG5cdFx0XHQvLyBGaWx0ZXJCYXJDb250ZXh0UGF0aDogL0N1c3RvbWVyL1NldFxuXHRcdFx0Ly8gUGFyYW1ldGVyUHJvcGVydHlQYXRoOiAvQ3VzdG9tZXIvUF9DQ1xuXHRcdFx0Ly8gQ29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZDogL0N1c3RvbWVyXG5cdFx0XHRjb25zdCBhbm5vUGF0aCA9IHNlbGVjdGlvbkZpZWxkLmFubm90YXRpb25QYXRoO1xuXHRcdFx0Y29udGV4dFBhdGggPSBhbm5vUGF0aC5zdWJzdHJpbmcoMCwgYW5ub1BhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG5cdFx0fVxuXHRcdHJldHVybiBjb250ZXh0UGF0aDtcblx0fVxuXG5cdHB1c2hGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzID0gKHNlbGVjdGlvbkZpZWxkOiBDb252ZXJ0ZWRGaWx0ZXJGaWVsZCk6IHZvaWQgPT4ge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2ZpbHRlckZpZWxkcykpIHtcblx0XHRcdGNvbnN0IHZmID0geyAuLi5zZWxlY3Rpb25GaWVsZC52aXN1YWxGaWx0ZXIsIC4uLnsgaW5pdGlhbENoYXJ0QmluZGluZ0VuYWJsZWQ6ICF0aGlzLnN1c3BlbmRTZWxlY3Rpb24gfSB9O1xuXHRcdFx0dGhpcy5fZmlsdGVyRmllbGRzPy5wdXNoKFxuXHRcdFx0XHQ8SW50ZXJuYWxGaWx0ZXJGaWVsZFxuXHRcdFx0XHRcdGlkUHJlZml4PXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZFwiLCBDb21tb25IZWxwZXIuZ2V0TmF2aWdhdGlvblBhdGgoc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGgpXSl9XG5cdFx0XHRcdFx0dmhJZFByZWZpeD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRWYWx1ZUhlbHBcIl0pfVxuXHRcdFx0XHRcdHByb3BlcnR5PXtzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aCBhcyB1bmtub3duIGFzIENvbnRleHR9XG5cdFx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuX2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQoc2VsZWN0aW9uRmllbGQsIHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGgpIGFzIHVua25vd24gYXMgQ29udGV4dH1cblx0XHRcdFx0XHR1c2VTZW1hbnRpY0RhdGVSYW5nZT17dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZX1cblx0XHRcdFx0XHRzZXR0aW5ncz17Q29tbW9uSGVscGVyLnN0cmluZ2lmeUN1c3RvbURhdGEoc2VsZWN0aW9uRmllbGQuc2V0dGluZ3MpfVxuXHRcdFx0XHRcdHZpc3VhbEZpbHRlcj17c2VsZWN0aW9uRmllbGQudmlzdWFsRmlsdGVyICE9PSB1bmRlZmluZWQgPyAoc3RvcmVPYmplY3RWYWx1ZSh2ZikgYXMgdW5rbm93biBhcyBDb250ZXh0KSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0XHRlZGl0TW9kZT17YHtpbnRlcm5hbD4vJHt0aGlzLmlkfS9maWx0ZXJGaWVsZHMvJHtzZWxlY3Rpb25GaWVsZC5jb25kaXRpb25QYXRofS9lZGl0TW9kZX1gfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5fdmFsdWVIZWxwcykpIHtcblx0XHRcdHRoaXMuX3ZhbHVlSGVscHM/LnB1c2goXG5cdFx0XHRcdDxWYWx1ZUhlbHBcblx0XHRcdFx0XHRpZFByZWZpeD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRWYWx1ZUhlbHBcIl0pfVxuXHRcdFx0XHRcdGNvbmRpdGlvbk1vZGVsPVwiJGZpbHRlcnNcIlxuXHRcdFx0XHRcdG1ldGFQYXRoPXtzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aH1cblx0XHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5fZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZChzZWxlY3Rpb25GaWVsZCwgdGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCl9XG5cdFx0XHRcdFx0ZmlsdGVyRmllbGRWYWx1ZUhlbHA9e3RydWV9XG5cdFx0XHRcdFx0dXNlU2VtYW50aWNEYXRlUmFuZ2U9e3RoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2V9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB0aGUgZGVzaWduIHRpbWUgZm9yIHRoZSBNREMgRmlsdGVyQmFyLlxuXHQgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gZHQ6ZGVzaWdudGltZVxuXHQgKi9cblx0Z2V0RGVzaWdudGltZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL2Rlc2lnbnRpbWUvRmlsdGVyQmFyLmRlc2lnbnRpbWVcIjtcblx0fVxuXG5cdGdldFRlbXBsYXRlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgaW50ZXJuYWxDb250ZXh0UGF0aCA9IHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGg/LmdldFBhdGgoKTtcblx0XHRsZXQgZmlsdGVyRGVsZWdhdGUgPSBcIlwiO1xuXHRcdGlmICh0aGlzLmZpbHRlckJhckRlbGVnYXRlKSB7XG5cdFx0XHRmaWx0ZXJEZWxlZ2F0ZSA9IHRoaXMuZmlsdGVyQmFyRGVsZWdhdGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZpbHRlckRlbGVnYXRlID0gXCJ7bmFtZTonc2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyRGVsZWdhdGUnLCBwYXlsb2FkOiB7ZW50aXR5VHlwZVBhdGg6ICdcIiArIGludGVybmFsQ29udGV4dFBhdGggKyBcIid9fVwiO1xuXHRcdH1cblx0XHQvLyBhZnRlciByZW1vdmluZyB0aGUgdW53YW50ZWQgcHJvcGVydGllcyBQcm9wZXJ0eUluZm8gaXMgYWRkZWQgdG8gdGhlIGNvbnRyb2wsIGFuZCB3ZSBhbHNvIHNhdmUgdGhlIGZ1bGwgdmVyc2lvbiBhcyBjdXN0b20gZGF0YSBmb3IgRkUgaW50ZXJuYWwgdXNlXG5cdFx0Y29uc3QgX3Byb3BlcnR5SW5mb0NvbnRyb2wgPSBGaWx0ZXJVdGlscy5mb3JtYXRQcm9wZXJ0eUluZm8odGhpcy5wcm9wZXJ0eUluZm8gYXMgc3RyaW5nKTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEZpbHRlckJhckFQSVxuXHRcdFx0XHRpZD17dGhpcy5fYXBpSWR9XG5cdFx0XHRcdG1ldGFQYXRoPXt0aGlzLm1ldGFQYXRoIS5nZXRQYXRoKCl9XG5cdFx0XHRcdHNlYXJjaD17dGhpcy5zZWFyY2h9XG5cdFx0XHRcdGZpbHRlckNoYW5nZWQ9e3RoaXMuZmlsdGVyQ2hhbmdlZH1cblx0XHRcdFx0YWZ0ZXJDbGVhcj17dGhpcy5hZnRlckNsZWFyfVxuXHRcdFx0XHRpbnRlcm5hbFNlYXJjaD17dGhpcy5pbnRlcm5hbFNlYXJjaH1cblx0XHRcdFx0aW50ZXJuYWxGaWx0ZXJDaGFuZ2VkPXt0aGlzLmludGVybmFsRmlsdGVyQ2hhbmdlZH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8RkVGaWx0ZXJCYXJcblx0XHRcdFx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0FQSTogJ3NhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckFQSSd9XCJcblx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuX2NvbnRlbnRJZH1cblx0XHRcdFx0XHRcdFx0bGl2ZU1vZGU9e3RoaXMubGl2ZU1vZGV9XG5cdFx0XHRcdFx0XHRcdGRlbGVnYXRlPXtmaWx0ZXJEZWxlZ2F0ZX1cblx0XHRcdFx0XHRcdFx0dmFyaWFudEJhY2tyZWZlcmVuY2U9e3RoaXMubGl2ZU1vZGUgPyB1bmRlZmluZWQgOiB0aGlzLnZhcmlhbnRCYWNrcmVmZXJlbmNlfVxuXHRcdFx0XHRcdFx0XHRzaG93QWRhcHRGaWx0ZXJzQnV0dG9uPXt0aGlzLnNob3dBZGFwdEZpbHRlcnNCdXR0b259XG5cdFx0XHRcdFx0XHRcdHNob3dDbGVhckJ1dHRvbj17dGhpcy5zaG93Q2xlYXJCdXR0b259XG5cdFx0XHRcdFx0XHRcdHAxM25Nb2RlPXt0aGlzLnAxM25Nb2RlfVxuXHRcdFx0XHRcdFx0XHRzZWFyY2g9e1wiQVBJLmhhbmRsZVNlYXJjaCgkZXZlbnQpXCIgYXMgdW5rbm93biBhcyAoZTogRmlsdGVyQmFyQmFzZSRTZWFyY2hFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0XHRcdFx0ZmlsdGVyc0NoYW5nZWQ9e1wiQVBJLmhhbmRsZUZpbHRlckNoYW5nZWQoJGV2ZW50KVwiIGFzIHVua25vd24gYXMgKGU6IEZpbHRlckJhckJhc2UkRmlsdGVyc0NoYW5nZWRFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0XHRcdFx0ZmlsdGVyQ29uZGl0aW9ucz17dGhpcy5maWx0ZXJDb25kaXRpb25zfVxuXHRcdFx0XHRcdFx0XHRzdXNwZW5kU2VsZWN0aW9uPXt0aGlzLnN1c3BlbmRTZWxlY3Rpb259XG5cdFx0XHRcdFx0XHRcdHNob3dNZXNzYWdlcz17dGhpcy5zaG93TWVzc2FnZXN9XG5cdFx0XHRcdFx0XHRcdHRvZ2dsZUNvbnRyb2w9e3RoaXMudG9nZ2xlQ29udHJvbElkfVxuXHRcdFx0XHRcdFx0XHRpbml0aWFsTGF5b3V0PXt0aGlzLmluaXRpYWxMYXlvdXR9XG5cdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMudmlzaWJsZX1cblx0XHRcdFx0XHRcdFx0ZHQ6ZGVzaWdudGltZT17dGhpcy5kZXNpZ250aW1lfVxuXHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhOmVudGl0eVR5cGU9e2ludGVybmFsQ29udGV4dFBhdGh9XG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YTogW1xuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcImxvY2FsSWRcIn0gdmFsdWU9e3RoaXMuaWR9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcImhpZGVCYXNpY1NlYXJjaFwifSB2YWx1ZT17dGhpcy5oaWRlQmFzaWNTZWFyY2h9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcInNob3dEcmFmdEVkaXRTdGF0ZVwifSB2YWx1ZT17dGhpcy5zaG93RHJhZnRFZGl0U3RhdGV9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcInVzZVNlbWFudGljRGF0ZVJhbmdlXCJ9IHZhbHVlPXt0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJwYXJhbWV0ZXJzXCJ9IHZhbHVlPXt0aGlzLl9wYXJhbWV0ZXJzfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJmZUZpbHRlckluZm9cIn0gdmFsdWU9e3RoaXMucHJvcGVydHlJbmZvfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJhbm5vdGF0aW9uUGF0aFwifSB2YWx1ZT17dGhpcy5fYW5ub3RhdGlvblBhdGh9IC8+XG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0XHRkZXBlbmRlbnRzOiBbdGhpcy5fdmFsdWVIZWxwcywgdGhpcy5nZXRQZXJzaXN0ZW5jZVByb3ZpZGVyKHRoaXMuX2NvbnRlbnRJZCBhcyBzdHJpbmcpXSxcblx0XHRcdFx0XHRcdFx0XHRiYXNpY1NlYXJjaEZpZWxkOiB0aGlzLmdldFNlYXJjaCgpLFxuXHRcdFx0XHRcdFx0XHRcdGZpbHRlckl0ZW1zOiB0aGlzLl9maWx0ZXJGaWVsZHNcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvRkVGaWx0ZXJCYXI+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9GaWx0ZXJCYXJBUEk+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtREEsTUFBTUEsOEJBQThCLEdBQUcsU0FBQUEsQ0FBVUMsZ0JBQXlCLEVBQUVDLGlCQUE4QixFQUFlO0lBQ3hIQSxpQkFBaUIsQ0FBQ0MsUUFBUSxHQUFHRCxpQkFBaUIsQ0FBQ0UsR0FBRztJQUNsREYsaUJBQWlCLENBQUNFLEdBQUcsR0FBR0YsaUJBQWlCLENBQUNFLEdBQUcsQ0FBQ0MsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFF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
@@ -616,6 +616,7 @@ export default class FilterBarBlock extends BuildingBlockTemplatingBase {
616
616
 
617
617
  pushFilterFieldsAndValueHelps = (selectionField: ConvertedFilterField): void => {
618
618
  if (Array.isArray(this._filterFields)) {
619
+ const vf = { ...selectionField.visualFilter, ...{ initialChartBindingEnabled: !this.suspendSelection } };
619
620
  this._filterFields?.push(
620
621
  <InternalFilterField
621
622
  idPrefix={generate([this.id, "FilterField", CommonHelper.getNavigationPath(selectionField.annotationPath)])}
@@ -624,11 +625,7 @@ export default class FilterBarBlock extends BuildingBlockTemplatingBase {
624
625
  contextPath={this._getContextPathForFilterField(selectionField, this._internalContextPath) as unknown as Context}
625
626
  useSemanticDateRange={this.useSemanticDateRange}
626
627
  settings={CommonHelper.stringifyCustomData(selectionField.settings)}
627
- visualFilter={
628
- selectionField.visualFilter !== undefined
629
- ? (storeObjectValue(selectionField.visualFilter) as unknown as Context)
630
- : undefined
631
- }
628
+ visualFilter={selectionField.visualFilter !== undefined ? (storeObjectValue(vf) as unknown as Context) : undefined}
632
629
  editMode={`{internal>/${this.id}/filterFields/${selectionField.conditionPath}/editMode}`}
633
630
  />
634
631
  );