@provoly/dashboard 1.3.8 → 1.3.9

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 (200) hide show
  1. package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +5 -2
  2. package/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +47 -18
  3. package/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.d.ts +6 -2
  4. package/admin/components/admin-fields/admin-fields.component.d.ts +4 -1
  5. package/admin/components/admin-fields/store/admin-fields.model.d.ts +1 -1
  6. package/admin/components/admin-fields/store/fields.actions.d.ts +19 -12
  7. package/admin/components/admin-fields/store/fields.effects.d.ts +16 -3
  8. package/admin/i18n/en.translations.d.ts +33 -14
  9. package/admin/i18n/fr.translations.d.ts +33 -14
  10. package/components/checkbox/checkbox.component.d.ts +4 -2
  11. package/components/data-format/data-format.pipe.d.ts +11 -1
  12. package/components/paginator/index.d.ts +5 -0
  13. package/components/paginator/paginator.component.d.ts +19 -0
  14. package/components/paginator/paginator.module.d.ts +10 -0
  15. package/components/paginator/public-api.d.ts +3 -0
  16. package/components/paginator/style/_o-pry-paginator.scss +11 -0
  17. package/components/paginator/style/css.component.d.ts +5 -0
  18. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +5 -8
  19. package/dataset/dataset.module.d.ts +1 -1
  20. package/dataset/i18n/en.translations.d.ts +0 -12
  21. package/dataset/i18n/fr.translations.d.ts +0 -12
  22. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +4 -6
  23. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +1 -1
  24. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +1 -1
  25. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +10 -12
  26. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +6 -5
  27. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +2 -2
  28. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +142 -63
  29. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +7 -8
  30. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +15 -11
  31. package/esm2022/admin/components/admin-fields/store/admin-fields.model.mjs +1 -1
  32. package/esm2022/admin/components/admin-fields/store/fields.actions.mjs +6 -5
  33. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +12 -6
  34. package/esm2022/admin/i18n/en.translations.mjs +34 -15
  35. package/esm2022/admin/i18n/fr.translations.mjs +34 -15
  36. package/esm2022/components/checkbox/checkbox.component.mjs +15 -7
  37. package/esm2022/components/data-format/data-format.pipe.mjs +88 -7
  38. package/esm2022/components/paginator/paginator.component.mjs +51 -0
  39. package/esm2022/components/paginator/paginator.module.mjs +20 -0
  40. package/esm2022/components/paginator/provoly-dashboard-components-paginator.mjs +5 -0
  41. package/esm2022/components/paginator/public-api.mjs +4 -0
  42. package/esm2022/components/paginator/style/css.component.mjs +11 -0
  43. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +16 -26
  44. package/esm2022/dataset/dataset.module.mjs +2 -5
  45. package/esm2022/dataset/i18n/en.translations.mjs +1 -13
  46. package/esm2022/dataset/i18n/fr.translations.mjs +2 -14
  47. package/esm2022/import/components/form/import-form.component.mjs +174 -0
  48. package/esm2022/import/components/list/import-list.component.mjs +73 -0
  49. package/esm2022/import/components/version-modal/version-modal.component.mjs +26 -0
  50. package/esm2022/import/i18n/en.translations.mjs +16 -2
  51. package/esm2022/import/i18n/fr.translations.mjs +16 -2
  52. package/esm2022/import/import-routing.module.mjs +3 -3
  53. package/esm2022/import/import.module.mjs +25 -10
  54. package/esm2022/import/public-api.mjs +4 -2
  55. package/esm2022/import/style/css.component.mjs +2 -2
  56. package/esm2022/lib/core/components/select/select.component.mjs +3 -3
  57. package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +8 -8
  58. package/esm2022/lib/core/components/status-modal/status-modal.component.mjs +48 -0
  59. package/esm2022/lib/core/components/{modal-status/modal-status.module.mjs → status-modal/status-modal.module.mjs} +9 -9
  60. package/esm2022/lib/core/core.module.mjs +5 -5
  61. package/esm2022/lib/core/i18n/en.translations.mjs +35 -2
  62. package/esm2022/lib/core/i18n/fr.translations.mjs +37 -2
  63. package/esm2022/lib/core/model/admin-api.model.mjs +5 -69
  64. package/esm2022/lib/core/model/widget-analytic-manifest.interface.mjs +1 -1
  65. package/esm2022/lib/core/model/widget-table-manifest.interface.mjs +1 -1
  66. package/esm2022/lib/core/public-api.mjs +3 -3
  67. package/esm2022/lib/core/store/class/class.interface.mjs +1 -1
  68. package/esm2022/lib/core/store/class/class.selectors.mjs +2 -2
  69. package/esm2022/lib/core/store/data-source/data-source.actions.mjs +3 -3
  70. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +7 -4
  71. package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
  72. package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +5 -3
  73. package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +3 -11
  74. package/esm2022/lib/core/store/data-source/data-source.service.mjs +23 -5
  75. package/esm2022/lib/core/store/field/field.interface.mjs +1 -3
  76. package/esm2022/lib/core/store/field/field.service.mjs +7 -2
  77. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +3 -3
  78. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.mjs +3 -11
  79. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +2 -2
  80. package/esm2022/lib/dashboard/item-utils.mjs +5 -5
  81. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +1 -4
  82. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +1 -19
  83. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +1 -26
  84. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +3 -3
  85. package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +3 -2
  86. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +4 -4
  87. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +3 -3
  88. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +4 -5
  89. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +2 -2
  90. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +5 -6
  91. package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +4 -4
  92. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -3
  93. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +17 -19
  94. package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +5 -4
  95. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +54 -37
  96. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +4 -16
  97. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +9 -9
  98. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +5 -5
  99. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +30 -32
  100. package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +2 -5
  101. package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +2 -2
  102. package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +6 -10
  103. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +18 -14
  104. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +9 -5
  105. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +2 -2
  106. package/esm2022/widgets/widget-table/public-api.mjs +1 -2
  107. package/esm2022/widgets/widget-table/widget-table.module.mjs +12 -7
  108. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +10 -15
  109. package/esm2022/widgets/widget-tile/widget-tile.module.mjs +8 -4
  110. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
  111. package/fesm2022/provoly-dashboard-admin.mjs +249 -126
  112. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  113. package/fesm2022/provoly-dashboard-components-checkbox.mjs +14 -6
  114. package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
  115. package/fesm2022/provoly-dashboard-components-data-format.mjs +88 -7
  116. package/fesm2022/provoly-dashboard-components-data-format.mjs.map +1 -1
  117. package/fesm2022/provoly-dashboard-components-paginator.mjs +82 -0
  118. package/fesm2022/provoly-dashboard-components-paginator.mjs.map +1 -0
  119. package/fesm2022/provoly-dashboard-dataset.mjs +21 -58
  120. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  121. package/fesm2022/provoly-dashboard-import.mjs +249 -116
  122. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  123. package/fesm2022/provoly-dashboard-search.mjs +15 -16
  124. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  125. package/fesm2022/provoly-dashboard-toolbox.mjs +2 -2
  126. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  127. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +20 -21
  128. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  129. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +53 -36
  130. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  131. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +3 -15
  132. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  133. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +9 -9
  134. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  135. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +4 -4
  136. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  137. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +36 -45
  138. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  139. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +32 -38
  140. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  141. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +16 -17
  142. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  143. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -1
  144. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  145. package/fesm2022/provoly-dashboard.mjs +278 -330
  146. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  147. package/import/components/{import.component.d.ts → form/import-form.component.d.ts} +8 -4
  148. package/import/components/list/import-list.component.d.ts +34 -0
  149. package/import/components/version-modal/version-modal.component.d.ts +13 -0
  150. package/import/i18n/en.translations.d.ts +14 -0
  151. package/import/i18n/fr.translations.d.ts +14 -0
  152. package/import/import.module.d.ts +13 -10
  153. package/import/public-api.d.ts +3 -1
  154. package/import/style/_o-import.scss +50 -6
  155. package/lib/core/components/share/legacy-share/share.component.d.ts +1 -1
  156. package/lib/core/components/{modal-status/modal-status.component.d.ts → status-modal/status-modal.component.d.ts} +10 -6
  157. package/lib/core/components/{modal-status/modal-status.module.d.ts → status-modal/status-modal.module.d.ts} +5 -5
  158. package/lib/core/core.module.d.ts +2 -2
  159. package/lib/core/i18n/en.translations.d.ts +33 -0
  160. package/lib/core/i18n/fr.translations.d.ts +35 -0
  161. package/lib/core/model/admin-api.model.d.ts +6 -8
  162. package/lib/core/model/widget-analytic-manifest.interface.d.ts +0 -3
  163. package/lib/core/model/widget-table-manifest.interface.d.ts +2 -0
  164. package/lib/core/public-api.d.ts +2 -2
  165. package/lib/core/store/class/class.interface.d.ts +2 -1
  166. package/lib/core/store/class/class.selectors.d.ts +10 -10
  167. package/lib/core/store/data-source/data-source.actions.d.ts +21 -1
  168. package/lib/core/store/data-source/data-source.effects.d.ts +11 -1
  169. package/lib/core/store/data-source/data-source.model.d.ts +3 -2
  170. package/lib/core/store/data-source/data-source.reducer.d.ts +1 -0
  171. package/lib/core/store/data-source/data-source.selectors.d.ts +3 -3
  172. package/lib/core/store/data-source/data-source.service.d.ts +11 -2
  173. package/lib/core/store/field/field.interface.d.ts +8 -4
  174. package/lib/core/store/field/field.service.d.ts +1 -0
  175. package/lib/dashboard/components/context-menu/object-edition/object-edition.component.d.ts +1 -1
  176. package/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.d.ts +3 -7
  177. package/lib/dashboard/item-utils.d.ts +1 -1
  178. package/lib/dashboard/store/dashboard.actions.d.ts +0 -11
  179. package/lib/dashboard/store/dashboard.effects.d.ts +0 -3
  180. package/lib/dashboard/tooltip/tooltip-factory.service.d.ts +2 -1
  181. package/package.json +25 -19
  182. package/styles/base/_utils.scss +9 -1
  183. package/styles/components/_a-btn.scss +7 -0
  184. package/styles/components/_a-table.scss +2 -16
  185. package/styles/layout/_o-workspace.scss +1 -0
  186. package/tooltips/attribute/attribute-tooltip.component.d.ts +6 -6
  187. package/tooltips/attribute/attribute-tooltip.module.d.ts +2 -1
  188. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +16 -3
  189. package/widgets/widget-analytic/component/widget-analytic.component.d.ts +2 -3
  190. package/widgets/widget-detail/component/widget-detail.component.d.ts +1 -4
  191. package/widgets/widget-table/component/widget-table.component.d.ts +1 -0
  192. package/widgets/widget-table/expand-value/expand-value.component.d.ts +4 -2
  193. package/widgets/widget-table/public-api.d.ts +0 -1
  194. package/widgets/widget-table/widget-table.module.d.ts +9 -8
  195. package/widgets/widget-tile/component/widget-tile.component.d.ts +1 -0
  196. package/widgets/widget-tile/widget-tile.module.d.ts +2 -1
  197. package/esm2022/import/components/import.component.mjs +0 -167
  198. package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +0 -45
  199. package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +0 -24
  200. package/widgets/widget-table/expand-value/format-number.pipe.d.ts +0 -10
@@ -86,10 +86,7 @@ export const DashboardActions = {
86
86
  triggerAggregate: createAction('[Dashboard] (bus) Triggering aggregates for datasource', props()),
87
87
  loadPresentation: createAction('[Dashboard] load presentation', props()),
88
88
  initDefaultLayerGroup: createAction('[Dashboard] init default layer group', props()),
89
- addLayerGroup: createAction('[Dashboard] add map layer group', props()),
90
89
  updateLayerVisibility: createAction('[Dashboard] update visible layers on the layer group', props()),
91
- confirmLayerGroupDeletion: createAction('[Dashboard] confirm deleting map layer group', props()),
92
- deleteLayerGroup: createAction('[Dashboard] delete map layer group', props()),
93
90
  updateLayerGroups: createAction('[Dashboard] update all layer groups', props())
94
91
  };
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBOEJsRCxNQUFNLENBQU4sSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLCtCQUFtQixDQUFBO0lBQ25CLCtCQUFtQixDQUFBO0lBQ25CLGlDQUFxQixDQUFBO0lBQ3JCLCtCQUFtQixDQUFBO0lBQ25CLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFSVyxRQUFRLEtBQVIsUUFBUSxRQVFuQjtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxZQUFZLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxFQUFzQixDQUFDO0lBQ3JFLEtBQUssRUFBRSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFzQixDQUFDO0lBQ3JFLGNBQWMsRUFBRSxZQUFZLENBQzFCLHFDQUFxQyxFQUNyQyxLQUFLLEVBT0QsQ0FDTDtJQUNELHdCQUF3QixFQUFFLFlBQVksQ0FDcEMsaURBQWlELEVBQ2pELEtBQUssRUFPRCxDQUNMO0lBQ0QsK0JBQStCLEVBQUUsWUFBWSxDQUMzQyw0REFBNEQsRUFDNUQsS0FBSyxFQU9ELENBQ0w7SUFDRCw2QkFBNkIsRUFBRSxZQUFZLENBQ3pDLHVEQUF1RCxFQUN2RCxLQUFLLEVBU0QsQ0FDTDtJQUNELDhCQUE4QixFQUFFLFlBQVksQ0FDMUMsd0RBQXdELEVBQ3hELEtBQUssRUFPRCxDQUNMO0lBQ0Qsa0JBQWtCLEVBQUUsWUFBWSxDQUM5QixzQ0FBc0MsRUFDdEMs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QzNHLGFBQWEsRUFBRSxZQUFZLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxFQUF1QixDQUFDO0lBQzVGLHFCQUFxQixFQUFFLFlBQVksQ0FDakMsc0RBQXNELEVBQ3RELEtBQUssRUFBdUQsQ0FDN0Q7SUFDRCx5QkFBeUIsRUFBRSxZQUFZLENBQUMsOENBQThDLEVBQUUsS0FBSyxFQUFvQixDQUFDO0lBQ2xILGdCQUFnQixFQUFFLFlBQVksQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLLEVBQW9CLENBQUM7SUFDL0YsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLHFDQUFxQyxFQUFFLEtBQUssRUFBaUMsQ0FBQztDQUMvRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFByeVNuYWNrTWVzc2FnZSB9IGZyb20gJy4uLy4uL2NvcmUvY29tcG9uZW50cy9zbmFja2Jhci9zbmFjay5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2Rpc3BsYXktb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IEl0ZW0gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2l0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIERhc2hib2FyZE1hbmlmZXN0LFxuICBHbG9iYWxNYW5pZmVzdCxcbiAgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgV2lkZ2V0TWFuaWZlc3Rcbn0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9tYW5pZmVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVsYXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL3JlbGF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPcmRlclZhbHVlIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9yZXN1bHQtb3JkZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlc3VsdFNldCwgUmVzdWx0U2V0cyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvcmVzdWx0LXNldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR2V0Q2FwYWJpbGl0aWVzUmVzcG9uc2UgfSBmcm9tICcuL3dtcy5zZXJ2aWNlJztcbmltcG9ydCB7IExheWVyR3JvdXAgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL3dpZGdldC1tYXAtbWFuaWZlc3QuaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgRGFzaGJvYXJkQ2VsbFBhcmFtcyA9IHtcbiAgZ3JpZFdpZHRoOiBudW1iZXI7XG4gIGdyaWRIZWlnaHQ6IG51bWJlcjtcbiAgZ3JpZEdhcDogbnVtYmVyO1xuICBjb2x1bW5zOiBudW1iZXI7XG4gIGNlbGxIZWlnaHQ6IG51bWJlcjtcbiAgcm93czogbnVtYmVyO1xuICBjZWxsV2lkdGg6IG51bWJlcjtcbiAgb2Zmc2V0TGVmdDogbnVtYmVyO1xuICBvZmZzZXRUb3A6IG51bWJlcjtcbiAgbW9iaWxlTW9kZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBlbnVtIFZpZXdNb2RlIHtcbiAgQ0FUQUxPRyA9ICdjYXRhbG9nJyxcbiAgQ09OU1VMVCA9ICdjb25zdWx0JyxcbiAgQ1JFQVRJT04gPSAnY3JlYXRpb24nLFxuICBFRElUSU9OID0gJ2VkaXRpb24nLFxuICBFRElUT1IgPSAnZWRpdG9yJyxcbiAgU0VBUkNIID0gJ3NlYXJjaCcsXG4gIENVU1RPTSA9ICdjdXN0b20nXG59XG5cbmV4cG9ydCBjb25zdCBEYXNoYm9hcmRBY3Rpb25zID0ge1xuICBqb2luOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGpvaW5lZCcsIHByb3BzPHsgc2VuZGVyOiBzdHJpbmcgfT4oKSksXG4gIGxlYXZlOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGxlYXZlJywgcHJvcHM8eyBzZW5kZXI6IHN0cmluZyB9PigpKSxcbiAgdXBkYXRlTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgdXBkYXRpbmcgbWFuaWZlc3QnLFxuICAgIHByb3BzPHtcbiAgICAgIHRlbmFudHM/OiBzdHJpbmdbXTtcbiAgICAgIG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdDtcbiAgICAgIHJlc3VsdFNldHM/OiBSZXN1bHRTZXRzO1xuICAgICAgam9pbmluZz86IGJvb2xlYW47XG4gICAgICBtYW5pZmVzdElkPzogc3RyaW5nO1xuICAgICAgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdO1xuICAgIH0+KClcbiAgKSxcbiAgdXBkYXRlTWFuaWZlc3RBZnRlckZldGNoOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0aW5nIG1hbmlmZXN0IGFmdGVyIGZldGNoJyxcbiAgICBwcm9wczx7XG4gICAgICB0ZW5hbnRzPzogc3RyaW5nW107XG4gICAgICBtYW5pZmVzdDogR2xvYmFsTWFuaWZlc3Q7XG4gICAgICByZXN1bHRTZXRzPzogUmVzdWx0U2V0cztcbiAgICAgIGpvaW5pbmc/OiBib29sZWFuO1xuICAgICAgbWFuaWZlc3RJZD86IHN0cmluZztcbiAgICAgIHNlbGVjdGVkSWRzOiBzdHJpbmdbXTtcbiAgICB9PigpXG4gICksXG4gIHVwZGF0ZU1hbmlmZXN0V2l0aG91dEFjdGl2YXRpb246IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgdXBkYXRpbmcgbWFuaWZlc3QgYnV0IGRvIG5vdCBhY3RpdmF0ZSBpdCcsXG4gICAgcHJvcHM8e1xuICAgICAgdGVuYW50cz86IHN0cmluZ1tdO1xuICAgICAgbWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0O1xuICAgICAgcmVzdWx0U2V0cz86IFJlc3VsdFNldHM7XG4gICAgICBqb2luaW5nPzogYm9vbGVhbjtcbiAgICAgIG1hbmlmZXN0SWQ/OiBzdHJpbmc7XG4gICAgICBzZWxlY3RlZElkczogc3RyaW5nW107XG4gICAgfT4oKVxuICApLFxuICB1cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50Sm9pbjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGluZyBtYW5pZmVzdCBhZnRlciB0ZW5hbnQgam9pbicsXG4gICAgcHJvcHM8e1xuICAgICAgdGVuYW50cz86IHN0cmluZ1tdO1xuICAgICAgbWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0O1xuICAgICAgcmVzdWx0U2V0cz86IFJlc3VsdFNldHM7XG4gICAgICBqb2luaW5nPzogYm9vbGVhbjtcbiAgICAgIG1hbmlmZXN0SWQ/OiBzdHJpbmc7XG4gICAgICBzZWxlY3RlZElkczogc3RyaW5nW107XG4gICAgICBwcmVzZW50YXRpb24/OiB7IGN1cnJlbnQ/OiBNYW5pZmVzdERlc2NyaXB0aW9uOyBpbml0aWFsPzogR2xvYmFsTWFuaWZlc3Q7IHZpZXdNb2RlPzogVmlld01vZGUgfTtcbiAgICAgIGRpc3BsYXk/OiBEaXNwbGF5T3B0aW9ucztcbiAgICB9PigpXG4gICksXG4gIHVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRMZWF2ZTogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGluZyBtYW5pZmVzdCBhZnRlciB0ZW5hbnQgbGVhdmUnLFxuICAgIHByb3BzPHtcbiAgICAgIHRlbmFudHM/OiBzdHJpbmdbXTtcbiAgICAgIG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdDtcbiAgICAgIHJlc3VsdFNldHM/OiBSZXN1bHRTZXRzO1xuICAgICAgam9pbmluZz86IGJvb2xlYW47XG4gICAgICBtYW5pZmVzdElkPzogc3RyaW5nO1xuICAgICAgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdO1xuICAgIH0+KClcbiAgKSxcbiAgc2VsZWN0UHJlc2VudGF0aW9uOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHNlbGVjdFByZXNlbnRhdGlvbicsXG4gICAgcHJvcHM8e1xuICAgICAgcHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgdmlld01vZGU/OiBWaWV3TW9kZTtcbiAgICB9PigpXG4gICksXG4gIHNldEluaXRpYWxQcmVzZW50YXRpb246IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgc2V0IGluaXRpYWwgcHJlc2VudGF0aW9uJyxcbiAgICBwcm9wczx7XG4gICAgICBpbml0aWFsPzogR2xvYmFsTWFuaWZlc3Q7XG4gICAgfT4oKVxuICApLFxuICBkZWNsYXJlU2VuZGVySWQ6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gc2VsZi11cGRhdGluZyBtYW5pZmVzdCcsIHByb3BzPHsgdGVuYW50czogc3RyaW5nW107IHNlbmRlcjogc3RyaW5nIH0+KCkpLFxuICB1cGRhdGVEYXNoYm9hcmRNYW5pZmVzdDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSB1cGRhdGluZyBkYXNoYm9hcmQgdmlldycsXG4gICAgcHJvcHM8eyBtYW5pZmVzdDogRGFzaGJvYXJkTWFuaWZlc3QgfT4oKVxuICApLFxuICB1cGRhdGVXaWRnZXRNYW5pZmVzdDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSB1cGRhdGluZyB3aWRnZXQgdmlldycsXG4gICAgcHJvcHM8eyBtYW5pZmVzdDogV2lkZ2V0TWFuaWZlc3Q7IGluZGV4OiBudW1iZXIgfT4oKVxuICApLFxuICBhZGRXaWRnZXRUb1ByZXNlbnRhdGlvbjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSBhZGQgd2lkZ2V0IHRvIHByZXNlbnRhdGlvbicsXG4gICAgcHJvcHM8eyBpZD86IHN0cmluZyB8IHN0cmluZ1tdOyB3aWRnZXRUeXBlOiBzdHJpbmc7IGFkZGl0aW9uYWxPcHRpb25zPzogYW55OyBhbGVydD86IGJvb2xlYW4gfT4oKVxuICApLFxuICB1cGRhdGVXaWRnZXRJblByZXNlbnRhdGlvbjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSB1cGRhdGUgd2lkZ2V0IGluIHByZXNlbnRhdGlvbicsXG4gICAgcHJvcHM8eyBpZD86IHN0cmluZyB8IHN0cmluZ1tdOyB3aWRnZXRUeXBlOiBzdHJpbmc7IGFkZGl0aW9uYWxPcHRpb25zPzogYW55IH0+KClcbiAgKSxcbiAgcmVxdWVzdEFsbFJvdXRlczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSByZXF1ZXN0aW5nIHJvdXRlIHVwZGF0ZScpLFxuICB1cGRhdGVSb3V0ZU1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0aW5nIHJvdXRlJywgcHJvcHM8eyBzZW5kZXI/OiBzdHJpbmc7IHJvdXRlOiBzdHJpbmcgfT4oKSksXG4gIGZldGNoTWFuaWZlc3RzTGlzdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBmZXRjaGluZyBhdmFpbGFibGUgbWFuaWZlc3RzJyksXG4gIHNldFJlZnJlc2hSYXRlOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHNldHRpbmcgcmVmcmVzaFJhdGUnLCBwcm9wczx7IGlkOiBzdHJpbmc7IHJhdGU6IG51bWJlciB9PigpKSxcbiAgdXBkYXRlTWFuaWZlc3RzTGlzdDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSByZWNlaXZlZCBtYW5pZmVzdHMgbGlzdCcsXG4gICAgcHJvcHM8eyBtYW5pZmVzdHM6IE1hbmlmZXN0RGVzY3JpcHRpb25bXSB9PigpXG4gICksXG4gIGZldGNoU3RhdGljTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgZmV0Y2hpbmcgc3RhdGljTWFuaWZlc3QnLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIGVuZExvYWRpbmc6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gZW5kIGxvYWRpbmcnKSxcbiAgdXBkYXRlU3RhdGljTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgcmVjZWl2ZWQgc3RhdGljTWFuaWZlc3QnLFxuICAgIHByb3BzPHsgc3RhdGljTWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0IH0+KClcbiAgKSxcbiAgbG9hZE1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGxvYWQgbWFuaWZlc3QnLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIGxvYWRBbmRBY3RpdmF0ZU1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGxvYWQgYW5kIGFjdGl2YXRlIG1hbmlmZXN0JywgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpLFxuICBkb3dubG9hZE1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGRvd25sb2FkIG1hbmlmZXN0JywgcHJvcHM8eyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfT4oKSksXG4gIGNvbmZpcm1NYW5pZmVzdERlbGV0aW9uOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGNvbmZpcm0gbWFuaWZlc3QgZGVsZXRpb24nLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIGRlbGV0ZU1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGRlbGV0aW5nIG1hbmlmZXN0JywgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpLFxuICBzYXZlTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gc2F2ZSBtYW5pZmVzdCcsXG4gICAgcHJvcHM8e1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgbWFuaWZlc3Q/OiBHbG9iYWxNYW5pZmVzdDtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAgIGltYWdlPzogc3RyaW5nO1xuICAgICAgbWV0YWRhdGE/OiB7IG1ldGFkYXRhRGVmSWQ6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W107XG4gICAgICBhY2Nlc3NSaWdodHNCeUdyb3VwPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICAgICAgYWRkaXRpb25hbEluZm9ybWF0aW9uPzogc3RyaW5nO1xuICAgIH0+KClcbiAgKSxcbiAgc29sdmVDb2xsaXNpb25zOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIHNvbHZpbmcgY29sbGlzaW9ucycpLFxuICBjbGVhck1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGNsZWFyIG1hbmlmZXN0JyksXG4gIGZvbGxvd01hbmlmZXN0Um91dGU6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgZm9sbG93IG1hbmlmZXN0IHJvdXRlJyksXG4gIG1vdmVXaWRnZXQ6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gbW92aW5nIHdpZGdldCcsIHByb3BzPHsgd2lkZ2V0SW5kZXg6IG51bWJlcjsgdGFyZ2V0SW5kZXg6IG51bWJlciB9PigpKSxcbiAgbWF4aW1pemVXaWRnZXQ6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gbWF4aW1pemUgd2lkZ2V0JywgcHJvcHM8eyB3aWRnZXRJbmRleDogbnVtYmVyIH0+KCkpLFxuICBhc3NlcnRSZXN1bHRTZXRzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGFzc2VydCByZXN1bHRTZXQnLCBwcm9wczx7IGlkPzogc3RyaW5nOyBleGNsdWRlR2VvPzogYm9vbGVhbiB9PigpKSxcbiAgdXBkYXRlUmVzdWx0U2V0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHJlY2VpdmVkIG5hbWVkIHJlc3VsdFNldCcsXG4gICAgcHJvcHM8eyBpZDogc3RyaW5nOyByZXN1bHRTZXQ6IFJlc3VsdFNldDsgcGFyYW1zPzogc3RyaW5nIH0+KClcbiAgKSxcbiAgYWRkUmVsYXRpb25zVG9SZXN1bHRTZXRzOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIGFkZCByZWxhdGlvbnMgdG8gcmVzdWx0U2V0JyxcbiAgICBwcm9wczx7IHJlbGF0aW9uczogUmVsYXRpb25bXSB9PigpXG4gICksXG4gIGFkZEl0ZW1Ub1Jlc3VsdFNldHM6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgYWRkIGl0ZW0gdG8gcmVzdWx0U2V0JyxcbiAgICBwcm9wczx7IGl0ZW06IEl0ZW07IHJlc3VsdFNldD86IHN0cmluZyB9PigpXG4gICksXG4gIHN0YXJ0aW5nTWlzc2luZ1ZpZXdzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIG9wZW5pbmcgbWlzc2luZyB2aWV3cyBmb3IgbWFuaWZlc3QnKSxcbiAgc2V0QXZhaWxhYmxlTmFtZWRRdWVyaWVzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHNldCBhdmFpbGFibGUgcnMgbmFtZXMnLCBwcm9wczx7IG5hbWVzOiBzdHJpbmdbXSB9PigpKSxcbiAgc2V0RGVmYXVsdERhdGFzb3VyY2U6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gc2V0IGN1cnJlbnQgcnMgbmFtZScsIHByb3BzPHsgbmFtZXM6IHN0cmluZ1tdIH0+KCkpLFxuICB1cGRhdGVEYXNoYm9hcmRQYXJhbXM6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gc2V0IGRhc2hib2FyZCBjZWxsIHBhcmFtcycsXG4gICAgcHJvcHM8eyBwYXJhbXM6IFBhcnRpYWw8RGFzaGJvYXJkQ2VsbFBhcmFtcz4gfT4oKVxuICApLFxuICB0b2dnbGVFZGl0aW9uTW9kZTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSB0b2dnbGUgZWRpdGlvbiBtb2RlJywgcHJvcHM8eyBmb3JjZT86IGJvb2xlYW4gfT4oKSksXG4gIHNlbGVjdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBzZWxlY3QgaXRlbScsIHByb3BzPHsgaWQ6IHN0cmluZzsgY3VtdWxhdGl2ZTogYm9vbGVhbiB9PigpKSxcbiAgc2VsZWN0TWFueTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBzZWxlY3QgaXRlbXMnLCBwcm9wczx7IGlkczogc3RyaW5nW10gfT4oKSksXG4gIGludmVydFNlbGVjdGlvbjogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBpbnZlcnQgc2VsZWN0aW9uJyksXG4gIGZldGNoT2JqZWN0c0RldGFpbHM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gZmV0Y2ggb2JqZWN0cyBkZXRhaWxzJywgcHJvcHM8eyBpZHM6IHN0cmluZ1tdIH0+KCkpLFxuICB1cGRhdGVPYmplY3RzRGV0YWlsczogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGUgb2JqZWN0cyBkZXRhaWxzJyxcbiAgICBwcm9wczx7IGxpc3Q6IHsgW2lkOiBzdHJpbmddOiBJdGVtIH0gfT4oKVxuICApLFxuICBleHBsb3JlOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGlzb2xhdGUgaW4gZGF0YSBzZXQnLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIGRldGFpbDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBhZGQgZGV0YWlsIHZpZXcnLCBwcm9wczx7IGlkczogc3RyaW5nW10gfT4oKSksXG4gIHByb3hpbWl0eTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBwcm94aW1pdHkgc2VhcmNoJywgcHJvcHM8eyBpZDogc3RyaW5nOyB0YXJnZXRSZXN1bHRTZXQ6IHN0cmluZyB9PigpKSxcbiAgbXVsdGlTbmFja0JhcjogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBkaXNwbGF5IHNuYWNrIG1lc3NhZ2UnLCBwcm9wczx7IG1lc3NhZ2U6IFByeVNuYWNrTWVzc2FnZSB9PigpKSxcbiAgcXVpY2tPcmRlcjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSBxdWljayBvcmRlcicsXG4gICAgcHJvcHM8eyBkYXRhc291cmNlSWQ6IHN0cmluZzsgYXR0cmlidXRlOiBzdHJpbmc7IGFzYzogT3JkZXJWYWx1ZSB9PigpXG4gICksXG4gIHNldEdyaWRMYXlvdXQ6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gc2V0IGdyaWQgbGF5b3V0JywgcHJvcHM8eyBsYXlvdXQ6IHN0cmluZyB9PigpKSxcbiAgcHJvcGFnYXRlR3JpZExheW91dDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSBjaGFuZ2UgZ3JpZCBsYXlvdXQnLFxuICAgIHByb3BzPHsgbWFuaWZlc3Q6IERhc2hib2FyZE1hbmlmZXN0OyByYW5rOiBudW1iZXIgfT4oKVxuICApLFxuICBjcmVhdGVUYWI6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgY3JlYXRlIG5ldyB0YWInKSxcbiAgcmVzdG9yZUluaXRpYWxNYW5pZmVzdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSByZXN0b3JpbmcgbWlzc2luZyB0YWJzJyksXG4gIHNldEZpbHRlcnM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgc2V0IGRhdGFzb3VyY2UgZmlsdGVycycsIHByb3BzPHsgZmlsdGVyczogRmlsdGVyW10gfT4oKSksXG4gIHVwZGF0ZUZpbHRlcnM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgdXBkYXRlIGRhdGFzb3VyY2UgZmlsdGVycycsIHByb3BzPHsgZmlsdGVyOiBGaWx0ZXIgfT4oKSksXG4gIHJlbW92ZUZpbHRlcjogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSByZW1vdmUgZmlsdGVyIGluIHByZXNlbnRhdGlvbicsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgcmVtb3ZlRmlsdGVyczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSByZW1vdmUgZmlsdGVycycpLFxuICB1cGRhdGVGaWx0ZXJWYWx1ZTogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGUgZmlsdGVyIHZhbHVlJyxcbiAgICBwcm9wczx7IGlkOiBzdHJpbmc7IHZhbHVlOiBhbnk7IGRhdGFzb3VyY2VJZDogc3RyaW5nIH0+KClcbiAgKSxcbiAgY2xlYXJBbGxGaWx0ZXJWYWx1ZXM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgY2xlYXIgYWxsIGZpbHRlciB2YWx1ZXMnKSxcbiAgZGlzcGF0Y2hGaWx0ZXJzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGFwcGx5IGZpbHRlcnMgdG8gcHJlc2VudGF0aW9uIGRhdGFzb3VyY2VzJyksXG4gIHJlc2V0V21zRmVhdHVyZXM6IGNyZWF0ZUFjdGlvbignW1dpZGdldCBtYXBdIFJlc2V0IFdtcyBsYXllciBmZWF0dXJlcycsIHByb3BzPHsgY29tcG9uZW50SWQ6IHN0cmluZyB9PigpKSxcbiAgZ2V0V21zRmVhdHVyZXM6IGNyZWF0ZUFjdGlvbihcbiAgICAnW1dpZGdldCBtYXBdIEdldCBXbXMgbGF5ZXIgZmVhdHVyZXMnLFxuICAgIHByb3BzPHsgdXJsOiBzdHJpbmc7IG9DbGFzczogc3RyaW5nOyBjb29yZGluYXRlczogbnVtYmVyW107IGNvbXBvbmVudElkOiBzdHJpbmcgfT4oKVxuICApLFxuICBhZGRXbXNGZWF0dXJlczogY3JlYXRlQWN0aW9uKCdbV2lkZ2V0IG1hcF0gU2V0IFdtcyBsYXllciBmZWF0dXJlcycsIHByb3BzPHsgZmVhdHVyZXM6IGFueTsgY29tcG9uZW50SWQ6IHN0cmluZyB9PigpKSxcbiAgZ2V0V2ZzRmVhdHVyZXM6IGNyZWF0ZUFjdGlvbihcbiAgICAnW1dpZGdldCBtYXBdIEdldCB3ZnMgRmVhdHVyZXMgZm9yIHBvaW50JyxcbiAgICBwcm9wczx7IHVybDogc3RyaW5nOyBvQ2xhc3M6IHN0cmluZzsgY29vcmRpbmF0ZXM6IG51bWJlcltdOyBzdHlsZTogc3RyaW5nIH0+KClcbiAgKSxcbiAgZ2V0V2ZzRmVhdHVyZXNGb3JQb2ludFN0YWNrVG9vbHRpcHM6IGNyZWF0ZUFjdGlvbihcbiAgICAnW1dpZGdldCBtYXBdIEdldCB3ZnMgRmVhdHVyZXMgZm9yIHNob3dpbmcgc3RhY2sgdG9vbHRpcHMnLFxuICAgIHByb3BzPHsgdXJsOiBzdHJpbmc7IG9DbGFzczogc3RyaW5nOyBjb29yZGluYXRlczogbnVtYmVyW107IGNvbXBvbmVudElkOiBzdHJpbmcgfT4oKVxuICApLFxuICB1cGRhdGVEaXNwbGF5T3B0aW9uczogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkL0Rpc3BsYXldIChidXMpIFVwZGF0ZSBkaXNwbGF5ZWQgZGFzaGJvYXJkIG1hbmFnZW1lbnQgZmVhdHVyZXMnLFxuICAgIHByb3BzPHsgbW9kZTogVmlld01vZGU7IGN1c3RvbURpc3BsYXk/OiBEaXNwbGF5T3B0aW9ucyB9PigpXG4gICksXG4gIGdldENhcGFiaWxpdHk6IGNyZWF0ZUFjdGlvbignW1dpZGdldCBtYXBdIEdldCBXbXMgY2FwYWJpbGl0eScsIHByb3BzPHsgdXJsOiBzdHJpbmc7IGZvcmNlPzogYm9vbGVhbiB9PigpKSxcbiAgdXBkYXRlQ2FwYWJpbGl0eTogY3JlYXRlQWN0aW9uKFxuICAgICdbV2lkZ2V0IG1hcF0gU3RvcmUgV21zIGNhcGFiaWxpdHknLFxuICAgIHByb3BzPHsgdXJsOiBzdHJpbmc7IGNhcGFiaWxpdHk6IEdldENhcGFiaWxpdGllc1Jlc3BvbnNlIHwgbnVsbCB9PigpXG4gICksXG4gIGFkZE1hbmlmZXN0TWV0YWRhdGE6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gQWRkIG1hbmlmZXN0IG1ldGFkYXRhJyxcbiAgICBwcm9wczx7IHByZXNlbnRhdGlvbklkOiBzdHJpbmc7IG1ldGFkYXRhSWQ6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PigpXG4gICksXG4gIGRlbGV0ZU1hbmlmZXN0TWV0YWRhdGE6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gRGVsZXRlIG1hbmlmZXN0IG1ldGFkYXRhJyxcbiAgICBwcm9wczx7IHByZXNlbnRhdGlvbklkOiBzdHJpbmc7IG1ldGFkYXRhSWQ6IHN0cmluZyB9PigpXG4gICksXG4gIHRyaWdnZXJBZ2dyZWdhdGU6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgVHJpZ2dlcmluZyBhZ2dyZWdhdGVzIGZvciBkYXRhc291cmNlJywgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpLFxuICBsb2FkUHJlc2VudGF0aW9uOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIGxvYWQgcHJlc2VudGF0aW9uJyxcbiAgICBwcm9wczx7IHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbjsgdmlld01vZGU6IFZpZXdNb2RlIH0+KClcbiAgKSxcbiAgaW5pdERlZmF1bHRMYXllckdyb3VwOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGluaXQgZGVmYXVsdCBsYXllciBncm91cCcsIHByb3BzPHsgbGF5ZXJzPzogc3RyaW5nW10gfT4oKSksXG4gIGFkZExheWVyR3JvdXA6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gYWRkIG1hcCBsYXllciBncm91cCcsIHByb3BzPFBhcnRpYWw8TGF5ZXJHcm91cD4+KCkpLFxuICB1cGRhdGVMYXllclZpc2liaWxpdHk6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gdXBkYXRlIHZpc2libGUgbGF5ZXJzIG9uIHRoZSBsYXllciBncm91cCcsXG4gICAgcHJvcHM8eyBuYW1lOiBzdHJpbmc7IHZpc2libGVMYXllcnM/OiBzdHJpbmcgfCBzdHJpbmdbXSB9PigpXG4gICksXG4gIGNvbmZpcm1MYXllckdyb3VwRGVsZXRpb246IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gY29uZmlybSBkZWxldGluZyBtYXAgbGF5ZXIgZ3JvdXAnLCBwcm9wczx7IG5hbWU6IHN0cmluZyB9PigpKSxcbiAgZGVsZXRlTGF5ZXJHcm91cDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBkZWxldGUgbWFwIGxheWVyIGdyb3VwJywgcHJvcHM8eyBuYW1lOiBzdHJpbmcgfT4oKSksXG4gIHVwZGF0ZUxheWVyR3JvdXBzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIHVwZGF0ZSBhbGwgbGF5ZXIgZ3JvdXBzJywgcHJvcHM8eyBsYXllckdyb3VwczogTGF5ZXJHcm91cFtdIH0+KCkpXG59O1xuIl19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBOEJsRCxNQUFNLENBQU4sSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLCtCQUFtQixDQUFBO0lBQ25CLCtCQUFtQixDQUFBO0lBQ25CLGlDQUFxQixDQUFBO0lBQ3JCLCtCQUFtQixDQUFBO0lBQ25CLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFSVyxRQUFRLEtBQVIsUUFBUSxRQVFuQjtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxZQUFZLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxFQUFzQixDQUFDO0lBQ3JFLEtBQUssRUFBRSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFzQixDQUFDO0lBQ3JFLGNBQWMsRUFBRSxZQUFZLENBQzFCLHFDQUFxQyxFQUNyQyxLQUFLLEVBT0QsQ0FDTDtJQUNELHdCQUF3QixFQUFFLFlBQVksQ0FDcEMsaURBQWlELEVBQ2pELEtBQUssRUFPRCxDQUNMO0lBQ0QsK0JBQStCLEVBQUUsWUFBWSxDQUMzQyw0REFBNEQsRUFDNUQsS0FBSyxFQU9ELENBQ0w7SUFDRCw2QkFBNkIsRUFBRSxZQUFZLENBQ3pDLHVEQUF1RCxFQUN2RCxLQUFLLEVBU0QsQ0FDTDtJQUNELDhCQUE4QixFQUFFLFlBQVksQ0FDMUMsd0RBQXdELEVBQ3hELEtBQUssRUFPRCxDQUNMO0lBQ0Qsa0JBQWtCLEVBQUUsWUFBWSxDQUM5QixzQ0FBc0MsRUFDdEMs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QzNHLHFCQUFxQixFQUFFLFlBQVksQ0FDakMsc0RBQXNELEVBQ3RELEtBQUssRUFBdUQsQ0FDN0Q7SUFDRCxpQkFBaUIsRUFBRSxZQUFZLENBQUMscUNBQXFDLEVBQUUsS0FBSyxFQUFpQyxDQUFDO0NBQy9HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgUHJ5U25hY2tNZXNzYWdlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaXNwbGF5T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvZGlzcGxheS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2ZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSXRlbSB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkTWFuaWZlc3QsXG4gIEdsb2JhbE1hbmlmZXN0LFxuICBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICBXaWRnZXRNYW5pZmVzdFxufSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL21hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZWxhdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvcmVsYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IE9yZGVyVmFsdWUgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL3Jlc3VsdC1vcmRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVzdWx0U2V0LCBSZXN1bHRTZXRzIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9yZXN1bHQtc2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBHZXRDYXBhYmlsaXRpZXNSZXNwb25zZSB9IGZyb20gJy4vd21zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGF5ZXJHcm91cCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvd2lkZ2V0LW1hcC1tYW5pZmVzdC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgdHlwZSBEYXNoYm9hcmRDZWxsUGFyYW1zID0ge1xuICBncmlkV2lkdGg6IG51bWJlcjtcbiAgZ3JpZEhlaWdodDogbnVtYmVyO1xuICBncmlkR2FwOiBudW1iZXI7XG4gIGNvbHVtbnM6IG51bWJlcjtcbiAgY2VsbEhlaWdodDogbnVtYmVyO1xuICByb3dzOiBudW1iZXI7XG4gIGNlbGxXaWR0aDogbnVtYmVyO1xuICBvZmZzZXRMZWZ0OiBudW1iZXI7XG4gIG9mZnNldFRvcDogbnVtYmVyO1xuICBtb2JpbGVNb2RlOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGVudW0gVmlld01vZGUge1xuICBDQVRBTE9HID0gJ2NhdGFsb2cnLFxuICBDT05TVUxUID0gJ2NvbnN1bHQnLFxuICBDUkVBVElPTiA9ICdjcmVhdGlvbicsXG4gIEVESVRJT04gPSAnZWRpdGlvbicsXG4gIEVESVRPUiA9ICdlZGl0b3InLFxuICBTRUFSQ0ggPSAnc2VhcmNoJyxcbiAgQ1VTVE9NID0gJ2N1c3RvbSdcbn1cblxuZXhwb3J0IGNvbnN0IERhc2hib2FyZEFjdGlvbnMgPSB7XG4gIGpvaW46IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gam9pbmVkJywgcHJvcHM8eyBzZW5kZXI6IHN0cmluZyB9PigpKSxcbiAgbGVhdmU6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gbGVhdmUnLCBwcm9wczx7IHNlbmRlcjogc3RyaW5nIH0+KCkpLFxuICB1cGRhdGVNYW5pZmVzdDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGluZyBtYW5pZmVzdCcsXG4gICAgcHJvcHM8e1xuICAgICAgdGVuYW50cz86IHN0cmluZ1tdO1xuICAgICAgbWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0O1xuICAgICAgcmVzdWx0U2V0cz86IFJlc3VsdFNldHM7XG4gICAgICBqb2luaW5nPzogYm9vbGVhbjtcbiAgICAgIG1hbmlmZXN0SWQ/OiBzdHJpbmc7XG4gICAgICBzZWxlY3RlZElkczogc3RyaW5nW107XG4gICAgfT4oKVxuICApLFxuICB1cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2g6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgdXBkYXRpbmcgbWFuaWZlc3QgYWZ0ZXIgZmV0Y2gnLFxuICAgIHByb3BzPHtcbiAgICAgIHRlbmFudHM/OiBzdHJpbmdbXTtcbiAgICAgIG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdDtcbiAgICAgIHJlc3VsdFNldHM/OiBSZXN1bHRTZXRzO1xuICAgICAgam9pbmluZz86IGJvb2xlYW47XG4gICAgICBtYW5pZmVzdElkPzogc3RyaW5nO1xuICAgICAgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdO1xuICAgIH0+KClcbiAgKSxcbiAgdXBkYXRlTWFuaWZlc3RXaXRob3V0QWN0aXZhdGlvbjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGluZyBtYW5pZmVzdCBidXQgZG8gbm90IGFjdGl2YXRlIGl0JyxcbiAgICBwcm9wczx7XG4gICAgICB0ZW5hbnRzPzogc3RyaW5nW107XG4gICAgICBtYW5pZmVzdDogR2xvYmFsTWFuaWZlc3Q7XG4gICAgICByZXN1bHRTZXRzPzogUmVzdWx0U2V0cztcbiAgICAgIGpvaW5pbmc/OiBib29sZWFuO1xuICAgICAgbWFuaWZlc3RJZD86IHN0cmluZztcbiAgICAgIHNlbGVjdGVkSWRzOiBzdHJpbmdbXTtcbiAgICB9PigpXG4gICksXG4gIHVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRKb2luOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0aW5nIG1hbmlmZXN0IGFmdGVyIHRlbmFudCBqb2luJyxcbiAgICBwcm9wczx7XG4gICAgICB0ZW5hbnRzPzogc3RyaW5nW107XG4gICAgICBtYW5pZmVzdDogR2xvYmFsTWFuaWZlc3Q7XG4gICAgICByZXN1bHRTZXRzPzogUmVzdWx0U2V0cztcbiAgICAgIGpvaW5pbmc/OiBib29sZWFuO1xuICAgICAgbWFuaWZlc3RJZD86IHN0cmluZztcbiAgICAgIHNlbGVjdGVkSWRzOiBzdHJpbmdbXTtcbiAgICAgIHByZXNlbnRhdGlvbj86IHsgY3VycmVudD86IE1hbmlmZXN0RGVzY3JpcHRpb247IGluaXRpYWw/OiBHbG9iYWxNYW5pZmVzdDsgdmlld01vZGU/OiBWaWV3TW9kZSB9O1xuICAgICAgZGlzcGxheT86IERpc3BsYXlPcHRpb25zO1xuICAgIH0+KClcbiAgKSxcbiAgdXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudExlYXZlOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0aW5nIG1hbmlmZXN0IGFmdGVyIHRlbmFudCBsZWF2ZScsXG4gICAgcHJvcHM8e1xuICAgICAgdGVuYW50cz86IHN0cmluZ1tdO1xuICAgICAgbWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0O1xuICAgICAgcmVzdWx0U2V0cz86IFJlc3VsdFNldHM7XG4gICAgICBqb2luaW5nPzogYm9vbGVhbjtcbiAgICAgIG1hbmlmZXN0SWQ/OiBzdHJpbmc7XG4gICAgICBzZWxlY3RlZElkczogc3RyaW5nW107XG4gICAgfT4oKVxuICApLFxuICBzZWxlY3RQcmVzZW50YXRpb246IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgc2VsZWN0UHJlc2VudGF0aW9uJyxcbiAgICBwcm9wczx7XG4gICAgICBwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gICAgICB2aWV3TW9kZT86IFZpZXdNb2RlO1xuICAgIH0+KClcbiAgKSxcbiAgc2V0SW5pdGlhbFByZXNlbnRhdGlvbjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSBzZXQgaW5pdGlhbCBwcmVzZW50YXRpb24nLFxuICAgIHByb3BzPHtcbiAgICAgIGluaXRpYWw/OiBHbG9iYWxNYW5pZmVzdDtcbiAgICB9PigpXG4gICksXG4gIGRlY2xhcmVTZW5kZXJJZDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBzZWxmLXVwZGF0aW5nIG1hbmlmZXN0JywgcHJvcHM8eyB0ZW5hbnRzOiBzdHJpbmdbXTsgc2VuZGVyOiBzdHJpbmcgfT4oKSksXG4gIHVwZGF0ZURhc2hib2FyZE1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIHVwZGF0aW5nIGRhc2hib2FyZCB2aWV3JyxcbiAgICBwcm9wczx7IG1hbmlmZXN0OiBEYXNoYm9hcmRNYW5pZmVzdCB9PigpXG4gICksXG4gIHVwZGF0ZVdpZGdldE1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIHVwZGF0aW5nIHdpZGdldCB2aWV3JyxcbiAgICBwcm9wczx7IG1hbmlmZXN0OiBXaWRnZXRNYW5pZmVzdDsgaW5kZXg6IG51bWJlciB9PigpXG4gICksXG4gIGFkZFdpZGdldFRvUHJlc2VudGF0aW9uOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIGFkZCB3aWRnZXQgdG8gcHJlc2VudGF0aW9uJyxcbiAgICBwcm9wczx7IGlkPzogc3RyaW5nIHwgc3RyaW5nW107IHdpZGdldFR5cGU6IHN0cmluZzsgYWRkaXRpb25hbE9wdGlvbnM/OiBhbnk7IGFsZXJ0PzogYm9vbGVhbiB9PigpXG4gICksXG4gIHVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIHVwZGF0ZSB3aWRnZXQgaW4gcHJlc2VudGF0aW9uJyxcbiAgICBwcm9wczx7IGlkPzogc3RyaW5nIHwgc3RyaW5nW107IHdpZGdldFR5cGU6IHN0cmluZzsgYWRkaXRpb25hbE9wdGlvbnM/OiBhbnkgfT4oKVxuICApLFxuICByZXF1ZXN0QWxsUm91dGVzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHJlcXVlc3Rpbmcgcm91dGUgdXBkYXRlJyksXG4gIHVwZGF0ZVJvdXRlTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgdXBkYXRpbmcgcm91dGUnLCBwcm9wczx7IHNlbmRlcj86IHN0cmluZzsgcm91dGU6IHN0cmluZyB9PigpKSxcbiAgZmV0Y2hNYW5pZmVzdHNMaXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGZldGNoaW5nIGF2YWlsYWJsZSBtYW5pZmVzdHMnKSxcbiAgc2V0UmVmcmVzaFJhdGU6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgc2V0dGluZyByZWZyZXNoUmF0ZScsIHByb3BzPHsgaWQ6IHN0cmluZzsgcmF0ZTogbnVtYmVyIH0+KCkpLFxuICB1cGRhdGVNYW5pZmVzdHNMaXN0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHJlY2VpdmVkIG1hbmlmZXN0cyBsaXN0JyxcbiAgICBwcm9wczx7IG1hbmlmZXN0czogTWFuaWZlc3REZXNjcmlwdGlvbltdIH0+KClcbiAgKSxcbiAgZmV0Y2hTdGF0aWNNYW5pZmVzdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBmZXRjaGluZyBzdGF0aWNNYW5pZmVzdCcsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgZW5kTG9hZGluZzogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBlbmQgbG9hZGluZycpLFxuICB1cGRhdGVTdGF0aWNNYW5pZmVzdDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSByZWNlaXZlZCBzdGF0aWNNYW5pZmVzdCcsXG4gICAgcHJvcHM8eyBzdGF0aWNNYW5pZmVzdDogR2xvYmFsTWFuaWZlc3QgfT4oKVxuICApLFxuICBsb2FkTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgbG9hZCBtYW5pZmVzdCcsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgbG9hZEFuZEFjdGl2YXRlTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgbG9hZCBhbmQgYWN0aXZhdGUgbWFuaWZlc3QnLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIGRvd25sb2FkTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gZG93bmxvYWQgbWFuaWZlc3QnLCBwcm9wczx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9PigpKSxcbiAgY29uZmlybU1hbmlmZXN0RGVsZXRpb246IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gY29uZmlybSBtYW5pZmVzdCBkZWxldGlvbicsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgZGVsZXRlTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gZGVsZXRpbmcgbWFuaWZlc3QnLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIHNhdmVNYW5pZmVzdDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSBzYXZlIG1hbmlmZXN0JyxcbiAgICBwcm9wczx7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBtYW5pZmVzdD86IEdsb2JhbE1hbmlmZXN0O1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgaW1hZ2U/OiBzdHJpbmc7XG4gICAgICBtZXRhZGF0YT86IHsgbWV0YWRhdGFEZWZJZDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXTtcbiAgICAgIGFjY2Vzc1JpZ2h0c0J5R3JvdXA/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG4gICAgICBhZGRpdGlvbmFsSW5mb3JtYXRpb24/OiBzdHJpbmc7XG4gICAgfT4oKVxuICApLFxuICBzb2x2ZUNvbGxpc2lvbnM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gc29sdmluZyBjb2xsaXNpb25zJyksXG4gIGNsZWFyTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gY2xlYXIgbWFuaWZlc3QnKSxcbiAgZm9sbG93TWFuaWZlc3RSb3V0ZTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBmb2xsb3cgbWFuaWZlc3Qgcm91dGUnKSxcbiAgbW92ZVdpZGdldDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBtb3Zpbmcgd2lkZ2V0JywgcHJvcHM8eyB3aWRnZXRJbmRleDogbnVtYmVyOyB0YXJnZXRJbmRleDogbnVtYmVyIH0+KCkpLFxuICBtYXhpbWl6ZVdpZGdldDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBtYXhpbWl6ZSB3aWRnZXQnLCBwcm9wczx7IHdpZGdldEluZGV4OiBudW1iZXIgfT4oKSksXG4gIGFzc2VydFJlc3VsdFNldHM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gYXNzZXJ0IHJlc3VsdFNldCcsIHByb3BzPHsgaWQ/OiBzdHJpbmc7IGV4Y2x1ZGVHZW8/OiBib29sZWFuIH0+KCkpLFxuICB1cGRhdGVSZXN1bHRTZXQ6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgcmVjZWl2ZWQgbmFtZWQgcmVzdWx0U2V0JyxcbiAgICBwcm9wczx7IGlkOiBzdHJpbmc7IHJlc3VsdFNldDogUmVzdWx0U2V0OyBwYXJhbXM/OiBzdHJpbmcgfT4oKVxuICApLFxuICBhZGRSZWxhdGlvbnNUb1Jlc3VsdFNldHM6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgYWRkIHJlbGF0aW9ucyB0byByZXN1bHRTZXQnLFxuICAgIHByb3BzPHsgcmVsYXRpb25zOiBSZWxhdGlvbltdIH0+KClcbiAgKSxcbiAgYWRkSXRlbVRvUmVzdWx0U2V0czogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSBhZGQgaXRlbSB0byByZXN1bHRTZXQnLFxuICAgIHByb3BzPHsgaXRlbTogSXRlbTsgcmVzdWx0U2V0Pzogc3RyaW5nIH0+KClcbiAgKSxcbiAgc3RhcnRpbmdNaXNzaW5nVmlld3M6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gb3BlbmluZyBtaXNzaW5nIHZpZXdzIGZvciBtYW5pZmVzdCcpLFxuICBzZXRBdmFpbGFibGVOYW1lZFF1ZXJpZXM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgc2V0IGF2YWlsYWJsZSBycyBuYW1lcycsIHByb3BzPHsgbmFtZXM6IHN0cmluZ1tdIH0+KCkpLFxuICBzZXREZWZhdWx0RGF0YXNvdXJjZTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBzZXQgY3VycmVudCBycyBuYW1lJywgcHJvcHM8eyBuYW1lczogc3RyaW5nW10gfT4oKSksXG4gIHVwZGF0ZURhc2hib2FyZFBhcmFtczogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSBzZXQgZGFzaGJvYXJkIGNlbGwgcGFyYW1zJyxcbiAgICBwcm9wczx7IHBhcmFtczogUGFydGlhbDxEYXNoYm9hcmRDZWxsUGFyYW1zPiB9PigpXG4gICksXG4gIHRvZ2dsZUVkaXRpb25Nb2RlOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIHRvZ2dsZSBlZGl0aW9uIG1vZGUnLCBwcm9wczx7IGZvcmNlPzogYm9vbGVhbiB9PigpKSxcbiAgc2VsZWN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHNlbGVjdCBpdGVtJywgcHJvcHM8eyBpZDogc3RyaW5nOyBjdW11bGF0aXZlOiBib29sZWFuIH0+KCkpLFxuICBzZWxlY3RNYW55OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHNlbGVjdCBpdGVtcycsIHByb3BzPHsgaWRzOiBzdHJpbmdbXSB9PigpKSxcbiAgaW52ZXJ0U2VsZWN0aW9uOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGludmVydCBzZWxlY3Rpb24nKSxcbiAgZmV0Y2hPYmplY3RzRGV0YWlsczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBmZXRjaCBvYmplY3RzIGRldGFpbHMnLCBwcm9wczx7IGlkczogc3RyaW5nW10gfT4oKSksXG4gIHVwZGF0ZU9iamVjdHNEZXRhaWxzOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0ZSBvYmplY3RzIGRldGFpbHMnLFxuICAgIHByb3BzPHsgbGlzdDogeyBbaWQ6IHN0cmluZ106IEl0ZW0gfSB9PigpXG4gICksXG4gIGV4cGxvcmU6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgaXNvbGF0ZSBpbiBkYXRhIHNldCcsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgZGV0YWlsOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGFkZCBkZXRhaWwgdmlldycsIHByb3BzPHsgaWRzOiBzdHJpbmdbXSB9PigpKSxcbiAgcHJveGltaXR5OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIHByb3hpbWl0eSBzZWFyY2gnLCBwcm9wczx7IGlkOiBzdHJpbmc7IHRhcmdldFJlc3VsdFNldDogc3RyaW5nIH0+KCkpLFxuICBtdWx0aVNuYWNrQmFyOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGRpc3BsYXkgc25hY2sgbWVzc2FnZScsIHByb3BzPHsgbWVzc2FnZTogUHJ5U25hY2tNZXNzYWdlIH0+KCkpLFxuICBxdWlja09yZGVyOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHF1aWNrIG9yZGVyJyxcbiAgICBwcm9wczx7IGRhdGFzb3VyY2VJZDogc3RyaW5nOyBhdHRyaWJ1dGU6IHN0cmluZzsgYXNjOiBPcmRlclZhbHVlIH0+KClcbiAgKSxcbiAgc2V0R3JpZExheW91dDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBzZXQgZ3JpZCBsYXlvdXQnLCBwcm9wczx7IGxheW91dDogc3RyaW5nIH0+KCkpLFxuICBwcm9wYWdhdGVHcmlkTGF5b3V0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIGNoYW5nZSBncmlkIGxheW91dCcsXG4gICAgcHJvcHM8eyBtYW5pZmVzdDogRGFzaGJvYXJkTWFuaWZlc3Q7IHJhbms6IG51bWJlciB9PigpXG4gICksXG4gIGNyZWF0ZVRhYjogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBjcmVhdGUgbmV3IHRhYicpLFxuICByZXN0b3JlSW5pdGlhbE1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHJlc3RvcmluZyBtaXNzaW5nIHRhYnMnKSxcbiAgc2V0RmlsdGVyczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBzZXQgZGF0YXNvdXJjZSBmaWx0ZXJzJywgcHJvcHM8eyBmaWx0ZXJzOiBGaWx0ZXJbXSB9PigpKSxcbiAgdXBkYXRlRmlsdGVyczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGUgZGF0YXNvdXJjZSBmaWx0ZXJzJywgcHJvcHM8eyBmaWx0ZXI6IEZpbHRlciB9PigpKSxcbiAgcmVtb3ZlRmlsdGVyOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHJlbW92ZSBmaWx0ZXIgaW4gcHJlc2VudGF0aW9uJywgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpLFxuICByZW1vdmVGaWx0ZXJzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHJlbW92ZSBmaWx0ZXJzJyksXG4gIHVwZGF0ZUZpbHRlclZhbHVlOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0ZSBmaWx0ZXIgdmFsdWUnLFxuICAgIHByb3BzPHsgaWQ6IHN0cmluZzsgdmFsdWU6IGFueTsgZGF0YXNvdXJjZUlkOiBzdHJpbmcgfT4oKVxuICApLFxuICBjbGVhckFsbEZpbHRlclZhbHVlczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBjbGVhciBhbGwgZmlsdGVyIHZhbHVlcycpLFxuICBkaXNwYXRjaEZpbHRlcnM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgYXBwbHkgZmlsdGVycyB0byBwcmVzZW50YXRpb24gZGF0YXNvdXJjZXMnKSxcbiAgcmVzZXRXbXNGZWF0dXJlczogY3JlYXRlQWN0aW9uKCdbV2lkZ2V0IG1hcF0gUmVzZXQgV21zIGxheWVyIGZlYXR1cmVzJywgcHJvcHM8eyBjb21wb25lbnRJZDogc3RyaW5nIH0+KCkpLFxuICBnZXRXbXNGZWF0dXJlczogY3JlYXRlQWN0aW9uKFxuICAgICdbV2lkZ2V0IG1hcF0gR2V0IFdtcyBsYXllciBmZWF0dXJlcycsXG4gICAgcHJvcHM8eyB1cmw6IHN0cmluZzsgb0NsYXNzOiBzdHJpbmc7IGNvb3JkaW5hdGVzOiBudW1iZXJbXTsgY29tcG9uZW50SWQ6IHN0cmluZyB9PigpXG4gICksXG4gIGFkZFdtc0ZlYXR1cmVzOiBjcmVhdGVBY3Rpb24oJ1tXaWRnZXQgbWFwXSBTZXQgV21zIGxheWVyIGZlYXR1cmVzJywgcHJvcHM8eyBmZWF0dXJlczogYW55OyBjb21wb25lbnRJZDogc3RyaW5nIH0+KCkpLFxuICBnZXRXZnNGZWF0dXJlczogY3JlYXRlQWN0aW9uKFxuICAgICdbV2lkZ2V0IG1hcF0gR2V0IHdmcyBGZWF0dXJlcyBmb3IgcG9pbnQnLFxuICAgIHByb3BzPHsgdXJsOiBzdHJpbmc7IG9DbGFzczogc3RyaW5nOyBjb29yZGluYXRlczogbnVtYmVyW107IHN0eWxlOiBzdHJpbmcgfT4oKVxuICApLFxuICBnZXRXZnNGZWF0dXJlc0ZvclBvaW50U3RhY2tUb29sdGlwczogY3JlYXRlQWN0aW9uKFxuICAgICdbV2lkZ2V0IG1hcF0gR2V0IHdmcyBGZWF0dXJlcyBmb3Igc2hvd2luZyBzdGFjayB0b29sdGlwcycsXG4gICAgcHJvcHM8eyB1cmw6IHN0cmluZzsgb0NsYXNzOiBzdHJpbmc7IGNvb3JkaW5hdGVzOiBudW1iZXJbXTsgY29tcG9uZW50SWQ6IHN0cmluZyB9PigpXG4gICksXG4gIHVwZGF0ZURpc3BsYXlPcHRpb25zOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmQvRGlzcGxheV0gKGJ1cykgVXBkYXRlIGRpc3BsYXllZCBkYXNoYm9hcmQgbWFuYWdlbWVudCBmZWF0dXJlcycsXG4gICAgcHJvcHM8eyBtb2RlOiBWaWV3TW9kZTsgY3VzdG9tRGlzcGxheT86IERpc3BsYXlPcHRpb25zIH0+KClcbiAgKSxcbiAgZ2V0Q2FwYWJpbGl0eTogY3JlYXRlQWN0aW9uKCdbV2lkZ2V0IG1hcF0gR2V0IFdtcyBjYXBhYmlsaXR5JywgcHJvcHM8eyB1cmw6IHN0cmluZzsgZm9yY2U/OiBib29sZWFuIH0+KCkpLFxuICB1cGRhdGVDYXBhYmlsaXR5OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tXaWRnZXQgbWFwXSBTdG9yZSBXbXMgY2FwYWJpbGl0eScsXG4gICAgcHJvcHM8eyB1cmw6IHN0cmluZzsgY2FwYWJpbGl0eTogR2V0Q2FwYWJpbGl0aWVzUmVzcG9uc2UgfCBudWxsIH0+KClcbiAgKSxcbiAgYWRkTWFuaWZlc3RNZXRhZGF0YTogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSBBZGQgbWFuaWZlc3QgbWV0YWRhdGEnLFxuICAgIHByb3BzPHsgcHJlc2VudGF0aW9uSWQ6IHN0cmluZzsgbWV0YWRhdGFJZDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KClcbiAgKSxcbiAgZGVsZXRlTWFuaWZlc3RNZXRhZGF0YTogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSBEZWxldGUgbWFuaWZlc3QgbWV0YWRhdGEnLFxuICAgIHByb3BzPHsgcHJlc2VudGF0aW9uSWQ6IHN0cmluZzsgbWV0YWRhdGFJZDogc3RyaW5nIH0+KClcbiAgKSxcbiAgdHJpZ2dlckFnZ3JlZ2F0ZTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBUcmlnZ2VyaW5nIGFnZ3JlZ2F0ZXMgZm9yIGRhdGFzb3VyY2UnLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIGxvYWRQcmVzZW50YXRpb246IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gbG9hZCBwcmVzZW50YXRpb24nLFxuICAgIHByb3BzPHsgcHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uOyB2aWV3TW9kZTogVmlld01vZGUgfT4oKVxuICApLFxuICBpbml0RGVmYXVsdExheWVyR3JvdXA6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gaW5pdCBkZWZhdWx0IGxheWVyIGdyb3VwJywgcHJvcHM8eyBsYXllcnM/OiBzdHJpbmdbXSB9PigpKSxcbiAgdXBkYXRlTGF5ZXJWaXNpYmlsaXR5OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIHVwZGF0ZSB2aXNpYmxlIGxheWVycyBvbiB0aGUgbGF5ZXIgZ3JvdXAnLFxuICAgIHByb3BzPHsgbmFtZTogc3RyaW5nOyB2aXNpYmxlTGF5ZXJzPzogc3RyaW5nIHwgc3RyaW5nW10gfT4oKVxuICApLFxuICB1cGRhdGVMYXllckdyb3VwczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSB1cGRhdGUgYWxsIGxheWVyIGdyb3VwcycsIHByb3BzPHsgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXSB9PigpKVxufTtcbiJdfQ==
@@ -507,24 +507,6 @@ export class DashboardEffects {
507
507
  }),
508
508
  DashboardActions.followManifestRoute()
509
509
  ])))));
510
- this.confirmLayerGroupDeletion$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.confirmLayerGroupDeletion), tap((action) => {
511
- const data = {
512
- title: '@pry.widget.map.layerSettings.confirmDelete',
513
- actions: [
514
- {
515
- id: 0,
516
- label: '@pry.toolbox.manifest.validate',
517
- actions: [DashboardActions.deleteLayerGroup({ name: action.name })]
518
- },
519
- {
520
- id: 1,
521
- label: '@pry.toolbox.manifest.close',
522
- color: 'secondary'
523
- }
524
- ]
525
- };
526
- this.pryDialog.open(PryDialogConfirmComponent, { data });
527
- })), { dispatch: false });
528
510
  dashboardInitService.init();
529
511
  refreshService.start();
530
512
  }
@@ -534,4 +516,4 @@ export class DashboardEffects {
534
516
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DashboardEffects, decorators: [{
535
517
  type: Injectable
536
518
  }], ctorParameters: () => [{ type: i1.DashboardInitService }, { type: i2.Actions }, { type: i3.Store }, { type: i4.ManifestService }, { type: i5.ItemService }, { type: i6.PryTitleService }, { type: i7.PryI18nService }, { type: i8.PrySnackbarService }, { type: i9.Router }, { type: i10.RefreshService }, { type: i11.ToolboxManifestService }, { type: i12.BusService }, { type: i13.SearchService }, { type: i14.PryDialogService }, { type: i15.WmsService }, { type: i16.WidgetFactoryService }, { type: i7.PryI18nService }] });
537
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RHLE9BQU8sRUFDTCx5QkFBeUIsRUFFMUIsTUFBTSx3REFBd0QsQ0FBQztBQUloRSxPQUFPLEVBQUUsbUJBQW1CLEVBQWtDLE1BQU0scUNBQXFDLENBQUM7QUFJMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBSTFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFNM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7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QUUsQ0FDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDLEVBQ2xELEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2IsTUFBTSxJQUFJLEdBQXlCO2dCQUNqQyxLQUFLLEVBQUUsNkNBQTZDO2dCQUNwRCxPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsRUFBRSxFQUFFLENBQUM7d0JBQ0wsS0FBSyxFQUFFLGdDQUFnQzt3QkFDdkMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7cUJBQ3BFO29CQUNEO3dCQUNFLEVBQUUsRUFBRSxDQUFDO3dCQUNMLEtBQUssRUFBRSw2QkFBNkI7d0JBQ3BDLEtBQUssRUFBRSxXQUFXO3FCQUNuQjtpQkFDRjthQUNGLENBQUM7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQ0gsRUFDSCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDcEIsQ0FBQztRQXFCQSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0FuOEJVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBvZiwgc3RhcnRXaXRoLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsXG4gIFByeURpYWxvZ0NvbmZpcm1EYXRhXG59IGZyb20gJy4uLy4uL2NvcmUvY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy1jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcnlEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEdyaWRMYXlvdXQsIEdsb2JhbE1hbmlmZXN0LCBXaWRnZXRNYW5pZmVzdCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IENoYXJ0V2lkZ2V0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvd2lkZ2V0LWNoYXJ0LW1hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXBXaWRnZXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC93aWRnZXQtbWFwLW1hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJdGVtU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvaXRlbS9pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoQWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvc2VhcmNoL3NlYXJjaC5hY3Rpb25zJztcbmltcG9ydCB7IERFRkFVTFRfTkFNRURfUVVFUllfSUQsIEVYUExPUkVfTkFNRURfUVVFUllfSUQgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guY29uc3RhbnRzJztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBUb29sYm94TWFuaWZlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90b29sYm94L3Rvb2xib3gtbWFuaWZlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCdXNTZXJ2aWNlIH0gZnJvbSAnLi4vYWN0aW9uLWJ1cy9zZXJ2aWNlL2J1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldFBsYWNlbWVudFV0aWxzIH0gZnJvbSAnLi4vY29tcG9uZW50cy93aWRnZXRzL3dpZGdldC1wbGFjZW1lbnQvd2lkZ2V0LXBsYWNlbWVudC51dGlscyc7XG5pbXBvcnQgeyBSZXN1bHRzZXRVdGlscyB9IGZyb20gJy4uL3Jlc3VsdHNldC11dGlscyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRJbml0U2VydmljZSB9IGZyb20gJy4vZGFzaGJvYXJkLWluaXQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRBY3Rpb25zLCBWaWV3TW9kZSB9IGZyb20gJy4vZGFzaGJvYXJkLmFjdGlvbnMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IE1hbmlmZXN0U2VydmljZSB9IGZyb20gJy4vbWFuaWZlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBSZWZyZXNoU2VydmljZSB9IGZyb20gJy4vcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFByeVRpdGxlU2VydmljZSB9IGZyb20gJy4vdGl0bGUuc2VydmljZSc7XG5pbXBvcnQgeyBXbXNTZXJ2aWNlIH0gZnJvbSAnLi93bXMuc2VydmljZSc7XG5pbXBvcnQgeyBXaWRnZXRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvd2lkZ2V0cy93aWRnZXQtaW5zdGFuY2lhdG9yL3dpZGdldC1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvZGF0YS1zb3VyY2UvZGF0YS1zb3VyY2Uuc2VsZWN0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZEVmZmVjdHMge1xuICBqb2luJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmpvaW4pLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmVzdWx0U2V0cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucHJlc2VudGF0aW9uKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRpc3BsYXlPcHRpb25zKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3QsIHJlc3VsdFNldHMsIGRpc3BsYXldKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3QsIHJlc3VsdFNldHMsIHNlbGVjdGVkSWRzLCBwcmVzZW50YXRpb24sIGRpc3BsYXldKSA9PlxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRKb2luKHtcbiAgICAgICAgICB0ZW5hbnRzLCAvLyB3ZSBhbHJlYWR5IGhhdmUgYWRkZWQgdGVuYW50IGluIHRoZSByZWR1Y2Ugb2YgdGhlIFwiam9pblwiIGFjdGlvblxuICAgICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgICAuLi5tYW5pZmVzdCxcbiAgICAgICAgICAgIHdpbmRvd3M6IG1hbmlmZXN0LndpbmRvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFNldHMsXG4gICAgICAgICAgc2VsZWN0ZWRJZHMsXG4gICAgICAgICAgam9pbmluZzogdHJ1ZSxcbiAgICAgICAgICBwcmVzZW50YXRpb24sXG4gICAgICAgICAgZGlzcGxheVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsZWF2ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5sZWF2ZSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMudGVuYW50cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdF0pID0+IHJhbmsgPT09IDAgfHwgKHRlbmFudHNbMF0gPT09IGFjdGlvbi5zZW5kZXIgJiYgcmFuayA9PT0gMSkpLFxuICAgICAgbWFwKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdCwgc2VsZWN0ZWRJZHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlYXZlclJhbmsgPSB0ZW5hbnRzLmluZGV4T2YoYWN0aW9uLnNlbmRlcik7XG4gICAgICAgIGNvbnN0IG5ld1RlbmFudHNMaXN0ID0gWy4uLnRlbmFudHNdO1xuICAgICAgICBjb25zdCBuZXdXaW5kb3dMaXN0ID0gWy4uLm1hbmlmZXN0LndpbmRvd3NdO1xuICAgICAgICBpZiAobGVhdmVyUmFuayA+IC0xKSB7XG4gICAgICAgICAgbmV3VGVuYW50c0xpc3Quc3BsaWNlKGxlYXZlclJhbmssIDEpO1xuICAgICAgICAgIG5ld1dpbmRvd0xpc3Quc3BsaWNlKGxlYXZlclJhbmssIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudExlYXZlKHtcbiAgICAgICAgICB0ZW5hbnRzOiBuZXdUZW5hbnRzTGlzdCxcbiAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgICAgICB3aW5kb3dzOiBuZXdXaW5kb3dMaXN0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxlY3RlZElkc1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGZldGNoU3RhdGljTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hTdGF0aWNNYW5pZmVzdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFua10pID0+IHJhbmsgPT09IDApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHJhbmtdKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZVxuICAgICAgICAgIC5nZXQoYWN0aW9uLmlkKVxuICAgICAgICAgIC5waXBlKG1hcCgoc3RhdGljTWFuaWZlc3QpID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlU3RhdGljTWFuaWZlc3QoeyBzdGF0aWNNYW5pZmVzdCB9KSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxvYWRBbmRBY3RpdmF0ZU1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmxvYWRBbmRBY3RpdmF0ZU1hbmlmZXN0LCBEYXNoYm9hcmRBY3Rpb25zLmxvYWRNYW5pZmVzdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFua10pID0+IHJhbmsgPT09IDApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHJhbmssIHNlbGVjdGVkSWRzXSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi5pZCkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgobWFuaWZlc3QpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhY3Rpb24udHlwZSA9PT0gRGFzaGJvYXJkQWN0aW9ucy5sb2FkQW5kQWN0aXZhdGVNYW5pZmVzdC50eXBlXG4gICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2goeyBtYW5pZmVzdCwgbWFuaWZlc3RJZDogYWN0aW9uLmlkLCBzZWxlY3RlZElkcyB9KSxcbiAgICAgICAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSgpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICA6IFtEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0V2l0aG91dEFjdGl2YXRpb24oeyBtYW5pZmVzdCwgbWFuaWZlc3RJZDogYWN0aW9uLmlkLCBzZWxlY3RlZElkcyB9KV07XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjbGVhck1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmNsZWFyTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpXG4gICAgICApLFxuICAgICAgbWFwKChbYWN0aW9uLCBtYW5pZmVzdCwgc2VsZWN0ZWRJZHNdKSA9PlxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJGZXRjaCh7IG1hbmlmZXN0LCBtYW5pZmVzdElkOiAnJywgc2VsZWN0ZWRJZHMgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZG93bmxvYWRNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZG93bmxvYWRNYW5pZmVzdCksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PlxuICAgICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24uaWQpLnN1YnNjcmliZSgobWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhU3RyID0gJ2RhdGE6dGV4dC9qc29uO2NoYXJzZXQ9dXRmLTgsJyArIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShtYW5pZmVzdCkpO1xuICAgICAgICAgICAgY29uc3QgZGxBbmNob3JFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgZGxBbmNob3JFbGVtLnNldEF0dHJpYnV0ZSgnaHJlZicsIGRhdGFTdHIpO1xuICAgICAgICAgICAgZGxBbmNob3JFbGVtLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBgJHthY3Rpb24ubmFtZX0uanNvbmApO1xuICAgICAgICAgICAgZGxBbmNob3JFbGVtLmNsaWNrKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZm9sbG93TWFuaWZlc3RSb3V0ZSQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy53aW5kb3dNYW5pZmVzdCkpLFxuICAgICAgICB0YXAoKFthY3Rpb24sIG1hbmlmZXN0XSkgPT4ge1xuICAgICAgICAgIGlmIChtYW5pZmVzdC5yb3V0ZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChtYW5pZmVzdC5yb3V0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZW5kTG9hZGluZ0FmdGVyRm9sbG93aW5nTWFuaWZlc3RSb3V0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mb2xsb3dNYW5pZmVzdFJvdXRlKSxcbiAgICAgIG1hcCgoYWN0aW9uKSA9PiBEYXNoYm9hcmRBY3Rpb25zLmVuZExvYWRpbmcoKSlcbiAgICApXG4gICk7XG5cbiAgcmVxdWVzdE1hbmlmZXN0Um91dGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMucmVxdWVzdEFsbFJvdXRlcyksXG4gICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVSb3V0ZU1hbmlmZXN0KHsgcm91dGU6IHRoaXMucm91dGVyLnVybCB9KSlcbiAgICApXG4gICk7XG5cbiAgYXNzZXJ0UmVzdWx0U2V0cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cyxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5kaXNwYXRjaEZpbHRlcnMsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuY2xlYXJBbGxGaWx0ZXJWYWx1ZXNcbiAgICAgICksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmVzdWx0U2V0c1BhcmFtcyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5xdWlja09yZGVyKVxuICAgICAgKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCBtYW5pZmVzdCwgcmVzdWx0U2V0cywgcmVzdWx0U2V0c1BhcmFtcywgcXVpY2tPcmRlcl0pID0+IHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoIWFjdGlvbi5pZCkge1xuICAgICAgICAgIC8vIEZpcnN0IHNlbmQgYWdncmVnYXRlIHVwZGF0ZXNcbiAgICAgICAgICBjb25zdCB0b0FnZ3JlZ2F0ZUFjdGlvbnMgPSAoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICAgICAgbWFuaWZlc3Qud2luZG93c1xuICAgICAgICAgICAgICAgICAgLm1hcCgod2luTWFuaWZlc3QpID0+ICh3aW5NYW5pZmVzdCA/PyB7fSkud2lkZ2V0cyA/PyBbXSlcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aWRNYW5pZmVzdCkgPT4gdGhpcy53aWRnZXRGYWN0b3J5U2VydmljZS5hZ2dyZWdhdGVzVG9BdXRvTG9hZCh3aWRNYW5pZmVzdCkpXG4gICAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdIGFzIHN0cmluZ1tdKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdIGFzIHN0cmluZ1tdXG4gICAgICAgICAgKS5tYXAoKGRzKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnRyaWdnZXJBZ2dyZWdhdGUoeyBpZDogZHMgfSkpO1xuXG4gICAgICAgICAgY29uc3QgdG9JdGVtc0FjdGlvbnMgPSBPYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgbWFuaWZlc3Qud2luZG93c1xuICAgICAgICAgICAgICAubWFwKCh3aW5NYW5pZmVzdCkgPT4gKHdpbk1hbmlmZXN0ID8/IHt9KS53aWRnZXRzID8/IFtdKVxuICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdKVxuICAgICAgICAgICAgICAubWFwKCh3aWRNYW5pZmVzdCkgPT4gdGhpcy53aWRnZXRGYWN0b3J5U2VydmljZS5kYXRhc291cmNlc1RvQXV0b0xvYWQod2lkTWFuaWZlc3QpKVxuICAgICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgW2MuZGF0YXNldElkXToge1xuICAgICAgICAgICAgICAgICAgICAuLi5wW2MuZGF0YXNldElkXSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYyxcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUdlbzogcFtjLmRhdGFzZXRJZF0/LmV4Y2x1ZGVHZW8gPT09IGZhbHNlID8gcFtjLmRhdGFzZXRJZF0uZXhjbHVkZUdlbyA6IGMuZXhjbHVkZUdlb1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogeyBkYXRhc2V0SWQ6IHN0cmluZzsgZXhjbHVkZUdlbzogYm9vbGVhbiB9IH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgIChyZXN1bHRTZXQpID0+XG4gICAgICAgICAgICAgICAgISFyZXN1bHRTZXQuZGF0YXNldElkICYmXG4gICAgICAgICAgICAgICAgcmVzdWx0U2V0LmRhdGFzZXRJZCAhPT0gJycgJiZcbiAgICAgICAgICAgICAgICAoIXJlc3VsdFNldHNbcmVzdWx0U2V0LmRhdGFzZXRJZF0gfHxcbiAgICAgICAgICAgICAgICAgIHJlc3VsdFNldHNQYXJhbXNbcmVzdWx0U2V0LmRhdGFzZXRJZF0gIT09XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5nZXRJdGVtc1NlcmlhbGl6ZWRQYXJhbXMocmVzdWx0U2V0LmRhdGFzZXRJZCwgcXVpY2tPcmRlcikpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKChyZXN1bHRTZXQpID0+XG4gICAgICAgICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICAgICAgICBpZDogcmVzdWx0U2V0LmRhdGFzZXRJZCxcbiAgICAgICAgICAgICAgICBleGNsdWRlR2VvOiByZXN1bHRTZXQuZXhjbHVkZUdlbyxcbiAgICAgICAgICAgICAgICBmcm9tOiAnRGFzaGJvYXJkRWZmZWN0cy5hc3NlcnRSZXN1bHRTZXRzJC0xJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBbLi4udG9JdGVtc0FjdGlvbnMsIC4uLnRvQWdncmVnYXRlQWN0aW9uc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGlmICghcmVzdWx0U2V0c1thY3Rpb24uaWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGlkOiBhY3Rpb24uaWQgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBleGNsdWRlR2VvOiBhY3Rpb24uZXhjbHVkZUdlbyAhPSB1bmRlZmluZWQgPyBhY3Rpb24uZXhjbHVkZUdlbyA6IHRydWUsXG4gICAgICAgICAgICAgICAgZnJvbTogJ0Rhc2hib2FyZEVmZmVjdHMuYXNzZXJ0UmVzdWx0U2V0cyQtMidcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgc2VuZEFnZ3JlZ2F0ZXNFdmVudCQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMudHJpZ2dlckFnZ3JlZ2F0ZSksXG4gICAgICAgIGZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uaWQgIT09IERFRkFVTFRfTkFNRURfUVVFUllfSUQgJiYgYWN0aW9uLmlkICE9PSBFWFBMT1JFX05BTUVEX1FVRVJZX0lEKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnZGF0YXNvdXJjZVJlZnJlc2gnLCB7IGRldGFpbDogYWN0aW9uLmlkIH0pKSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHN0YXJ0TWlzc2luZ1ZpZXdBZnRlclZpZXdVcGRhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0LFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJGZXRjaCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50TGVhdmUsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudEpvaW4sXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuZXhwbG9yZSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5kZXRhaWwsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMucmVzdG9yZUluaXRpYWxNYW5pZmVzdCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5jcmVhdGVUYWIsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMubW92ZVdpZGdldFxuICAgICAgKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IFtcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zdGFydGluZ01pc3NpbmdWaWV3cygpLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmFzc2VydFJlc3VsdFNldHMoe30pLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNvbHZlQ29sbGlzaW9ucygpXG4gICAgICBdKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVUaXRsZSQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QsXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50Sm9pbixcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRMZWF2ZSxcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJGZXRjaCxcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmRlY2xhcmVTZW5kZXJJZFxuICAgICAgICApLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgICB0YXAoKFthY3Rpb24sIHJhbmtdKSA9PiB7XG4gICAgICAgICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUoKTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIG9wZW5PdGhlciQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc3RhcnRpbmdNaXNzaW5nVmlld3MpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksXG4gICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdClcbiAgICAgICAgKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0XSkgPT4gcmFuayA9PT0gMCksXG4gICAgICAgIHRhcCgoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3RdKSA9PiB7XG4gICAgICAgICAgbWFuaWZlc3Qud2luZG93cy5mb3JFYWNoKCh3aW5kb3dNYW5pZmVzdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGVuYW50c1tpbmRleF0pIHtcbiAgICAgICAgICAgICAgLy8gSWYgbm8gd2luZG93IGlzIG9wZW5lZCBmb3IgdGhpcyBwYXJ0LCB0aGVuIG9wZW4gb25lXG4gICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHdpbmRvd01hbmlmZXN0LnJvdXRlID8/IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSwgJ19ibGFuaycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgc2F2ZU1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnNhdmVNYW5pZmVzdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZGF0YXNldHMpKSxcbiAgICAgIG1lcmdlTWFwKChbW2FjdGlvbiwgY3VycmVudE1hbmlmZXN0XSwgZGF0YXNldHNdKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZVxuICAgICAgICAgIC5zYXZlKFxuICAgICAgICAgICAgYWN0aW9uLm5hbWUsXG4gICAgICAgICAgICBhY3Rpb24ubWFuaWZlc3QgPz8gY3VycmVudE1hbmlmZXN0LFxuICAgICAgICAgICAgYWN0aW9uLmlkLFxuICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYWN0aW9uLmltYWdlLFxuICAgICAgICAgICAgYWN0aW9uLm1ldGFkYXRhLFxuICAgICAgICAgICAgYWN0aW9uLmFjY2Vzc1JpZ2h0c0J5R3JvdXAsXG4gICAgICAgICAgICBhY3Rpb24uYWRkaXRpb25hbEluZm9ybWF0aW9uXG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LnRvb2xib3gubWFuaWZlc3Quc2F2ZWQnLCB7IHZpZXdJZDogYWN0aW9uLm5hbWUgfSksXG4gICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVzcG9uc2UubWlzc2luZ0dyb3Vwc0J5RW50aXR5KS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YTogUHJ5RGlhbG9nQ29uZmlybURhdGEgPSB7XG4gICAgICAgICAgICAgICAgICB0aXRsZTogJ0Bwcnkuc2hhcmUuY29uZmxpY3QudGl0bGUnLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pMThuU2VydmljZS5pbnN0YW50KCdAcHJ5LnNoYXJlLmNvbmZsaWN0Lm1haW4nKSArXG4gICAgICAgICAgICAgICAgICAgICdcXHJcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzcG9uc2UubWlzc2luZ0dyb3Vwc0J5RW50aXR5KVxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoZW50aXR5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0YXNldHMuZmluZCgoZHMpID0+IGRzLmlkID09PSBlbnRpdHkpPy5uYW1lID8/IGVudGl0eSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnIDogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLm1pc3NpbmdHcm91cHNCeUVudGl0eVtlbnRpdHldLmpvaW4oJywgJylcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJ1xcclxcbicpLFxuICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LnRvb2xib3guY2xvc2UnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwgeyBkYXRhIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiBhY3Rpb24ubWFuaWZlc3QgPz8gY3VycmVudE1hbmlmZXN0KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAnQHByeS50b29sYm94Lm1hbmlmZXN0LnNhdmVFcnJvckNvZGUuJyArIChlcnJvci5lcnJvcj8uY29kZSA/PyAnVU5LTk9XTicpLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBhY3Rpb24ubmFtZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJ1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICApLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcykpLFxuICAgICAgbWVyZ2VNYXAoKFttYW5pZmVzdCwgc2VsZWN0ZWRJZHNdKSA9PiBbXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCksXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc2V0SW5pdGlhbFByZXNlbnRhdGlvbih7IGluaXRpYWw6IG1hbmlmZXN0IH0pLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHsgbWFuaWZlc3QsIHNlbGVjdGVkSWRzIH0pXG4gICAgICBdKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWFuaWZlc3RzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rXSkgPT4gcmFuayA9PT0gMCB8fCByYW5rID09PSAtMSksXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByYW5rXSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UubGlzdCgpLnBpcGUobWFwKChtYW5pZmVzdHMpID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RzTGlzdCh7IG1hbmlmZXN0cyB9KSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNvbmZpcm1NYW5pZmVzdERlbGV0aW9uJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5jb25maXJtTWFuaWZlc3REZWxldGlvbiksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YTogUHJ5RGlhbG9nQ29uZmlybURhdGEgPSB7XG4gICAgICAgICAgICB0aXRsZTogJ0Bwcnkud2lkZ2V0Lm1vZGFsVGl0bGUnLFxuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDAsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QudmFsaWRhdGUnLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtEYXNoYm9hcmRBY3Rpb25zLmRlbGV0ZU1hbmlmZXN0KHsgaWQ6IGFjdGlvbi5pZCB9KV1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3NlY29uZGFyeSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5wcnlEaWFsb2cub3BlbihQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7IGRhdGEgfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBkZWxldGVNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5kZWxldGVNYW5pZmVzdCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5kZWxldGUoYWN0aW9uLmlkKS5waXBlKG1hcCgoKSA9PiBEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZmV0Y2hPYmplY3RzRGV0YWlscyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE9iamVjdHNEZXRhaWxzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IG1lcmdlKC4uLmFjdGlvbi5pZHMubWFwKChpZCkgPT4gdGhpcy5pdGVtU2VydmljZS5nZXQoaWQpKSkpLFxuICAgICAgbWFwKChpdGVtKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU9iamVjdHNEZXRhaWxzKHsgbGlzdDogeyBbaXRlbS5pZF06IGl0ZW0gfSB9KSlcbiAgICApXG4gICk7XG5cbiAgcHJveGltaXR5U2VhcmNoJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnByb3hpbWl0eSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmVzdWx0U2V0cykpLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHJlc3VsdFNldHNdKSA9PlxuICAgICAgICB0aGlzLml0ZW1TZXJ2aWNlLnByb3hpbWl0eShhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKChwcm94UnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVJlc3VsdFNldCh7XG4gICAgICAgICAgICAgIGlkOiBhY3Rpb24udGFyZ2V0UmVzdWx0U2V0LFxuICAgICAgICAgICAgICByZXN1bHRTZXQ6IFJlc3VsdHNldFV0aWxzLm1lcmdlUmVzdWx0U2V0cyhwcm94UnMsIHJlc3VsdFNldHNbYWN0aW9uLnRhcmdldFJlc3VsdFNldF0pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGV4cGxvcmUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZXhwbG9yZSksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBbRGFzaGJvYXJkQWN0aW9ucy5wcm94aW1pdHkoeyBpZDogYWN0aW9uLmlkLCB0YXJnZXRSZXN1bHRTZXQ6IEVYUExPUkVfTkFNRURfUVVFUllfSUQgfSldKVxuICAgIClcbiAgKTtcblxuICBkZXRhaWxBc0xvYWRJbldpZGdldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5kZXRhaWwpLFxuICAgICAgbWFwKChhY3Rpb24pID0+XG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuYWRkV2lkZ2V0VG9QcmVzZW50YXRpb24oe1xuICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICB3aWRnZXRUeXBlOiAnZGV0YWlsJyxcbiAgICAgICAgICBhZGRpdGlvbmFsT3B0aW9uczoge1xuICAgICAgICAgICAgaXRlbUlkczogYWN0aW9uLmlkc1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMudXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb24pLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgbWFuaWZlc3RdKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGEgd2lkZ2V0IHdpdGggc2FtZSBkYXRhc291cmNlIGFuZCB0eXBlIGFscmVhZHkgZXhpc3QgaW4gY3VycmVudCBwcmVzZW50YXRpb25cbiAgICAgICAgY29uc3Qgd2lkZ2V0VG9NYXRjaCA9IHRoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLndpZGdldFR5cGUpO1xuXG4gICAgICAgIGxldCBhZGRpdGlvbmFsTWF0Y2hpbmdGbjogKG9wdGlvbnNUb01hdGNoOiBhbnksIG9wdGlvbnM6IGFueSkgPT4gYm9vbGVhbjtcbiAgICAgICAgc3dpdGNoICh3aWRnZXRUb01hdGNoLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdjaGFydCc6XG4gICAgICAgICAgICBhZGRpdGlvbmFsTWF0Y2hpbmdGbiA9IChvcHRpb25zVG9NYXRjaDogQ2hhcnRXaWRnZXRPcHRpb25zLCBvcHRpb25zOiBDaGFydFdpZGdldE9wdGlvbnMpID0+XG4gICAgICAgICAgICAgIG9wdGlvbnNUb01hdGNoLnR5cGUgPT09IG9wdGlvbnMudHlwZSAmJiBvcHRpb25zVG9NYXRjaC5zdWJUeXBlID09PSBvcHRpb25zLnN1YlR5cGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtYXAnOlxuICAgICAgICAgICAgYWRkaXRpb25hbE1hdGNoaW5nRm4gPSAob3B0aW9uc1RvTWF0Y2g6IE1hcFdpZGdldE9wdGlvbnMsIG9wdGlvbnM6IE1hcFdpZGdldE9wdGlvbnMpID0+XG4gICAgICAgICAgICAgICEhb3B0aW9ucy5sYXllcnMhLmZpbmQoKGxheWVyKSA9PiBsYXllci50eXBlID09PSBvcHRpb25zVG9NYXRjaC5sYXllcnMhWzBdLnR5cGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGFkZGl0aW9uYWxNYXRjaGluZ0ZuID0gKG9wdGlvbnNUb01hdGNoOiBhbnksIG9wdGlvbnM6IGFueSkgPT4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdGNoaW5nV2lkZ2V0cyA9IG1hbmlmZXN0LndpbmRvd3MubWFwKCh3aW5kb3cpID0+XG4gICAgICAgICAgd2luZG93LndpZGdldHNcbiAgICAgICAgICAgIC5maWx0ZXIoKHdpZGdldCkgPT4gd2lkZ2V0LnR5cGUgPT09IHdpZGdldFRvTWF0Y2gudHlwZSlcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICh3aWRnZXQpID0+XG4gICAgICAgICAgICAgICAgd2lkZ2V0LmRhdGFzb3VyY2UgPT09IGFjdGlvbi5pZCB8fFxuICAgICAgICAgICAgICAgICh3aWRnZXQuZGF0YXNvdXJjZSFbMF0gPT09IGFjdGlvbi5pZCAmJiB3aWRnZXQuZGF0YXNvdXJjZSEubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbmQoKHdpZGdldCkgPT4gYWRkaXRpb25hbE1hdGNoaW5nRm4od2lkZ2V0VG9NYXRjaC5vcHRpb25zLCB3aWRnZXQub3B0aW9ucykpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgYWxyZWFkeU1hdGNoZWRXaWRnZXQgPSBtYXRjaGluZ1dpZGdldHMuZmluZCgod2luZG93KSA9PiAhIXdpbmRvdyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGlmIChhbHJlYWR5TWF0Y2hlZFdpZGdldCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5tdWx0aVNuYWNrQmFyKHtcbiAgICAgICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS53aWRnZXQudXBkYXRlZEluVmlldycsIHtcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBtYXRjaGluZ1dpZGdldHMuZmluZEluZGV4KCh3aWRnZXQpID0+ICEhd2lkZ2V0KSArIDFcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goRGFzaGJvYXJkQWN0aW9ucy5hZGRXaWRnZXRUb1ByZXNlbnRhdGlvbih7IC4uLmFjdGlvbiB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgYWRkV2lkZ2V0VG9QcmVzZW50YXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuYWRkV2lkZ2V0VG9QcmVzZW50YXRpb24pLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5ncmlkTGF5b3V0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGFzaGJvYXJkQ2VsbFBhcmFtcyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpXG4gICAgICApLFxuICAgICAgbWFwKChbYWN0aW9uLCBsYXlvdXQsIF9nbG9iYWxNYW5pZmVzdCwgcmFuaywgcGFyYW1zLCBzZWxlY3RlZElkc10pID0+IHtcbiAgICAgICAgY29uc3QgbWFuaWZlc3RHbG9iYWwgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF9nbG9iYWxNYW5pZmVzdCkpIGFzIEdsb2JhbE1hbmlmZXN0O1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgY29uZmlndXJhdGlvblxuICAgICAgICBjb25zdCBuZXdPcHRpb25zID0gdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24ud2lkZ2V0VHlwZSkgPz8ge1xuICAgICAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgICAgIHR5cGU6IGFjdGlvbi53aWRnZXRUeXBlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5ld1dpZGdldE1hbmlmZXN0ID0ge1xuICAgICAgICAgIC4uLm5ld09wdGlvbnMsXG4gICAgICAgICAgbGF5b3V0OiB7fSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAuLi5uZXdPcHRpb25zLm9wdGlvbnMsXG4gICAgICAgICAgICAuLi5hY3Rpb24uYWRkaXRpb25hbE9wdGlvbnNcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgV2lkZ2V0TWFuaWZlc3Q7XG5cbiAgICAgICAgaWYgKCEhYWN0aW9uLmlkKSB7XG4gICAgICAgICAgbmV3V2lkZ2V0TWFuaWZlc3QuZGF0YXNvdXJjZSA9IGFjdGlvbi5pZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmb3VuZDogeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfSB8IG51bGwgPSBudWxsO1xuICAgICAgICAvLyBUcnkgdG8gZmluZCBhIHNwb3QgaW4gd2luZG93cyAoc3RhcnRpbmcgYnkgY3VycmVudCByYW5rLCB0aGVuIGluIG90aGVycylcbiAgICAgICAgY29uc3Qgc2VxdWVuY2UgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5zd2FwQXJyYXlFbGVtZW50cyhcbiAgICAgICAgICBuZXcgQXJyYXkobWFuaWZlc3RHbG9iYWwud2luZG93cy5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBpZHgsIGFycmF5KSA9PiBpZHgpLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgcmFua1xuICAgICAgICApO1xuICAgICAgICAvLyBUcnlpbmcgYWxsIHBsYWNlbWVudCBvcHRpb25zXG4gICAgICAgIGZvciAoY29uc3QgYWN0dWFsUmFuayBvZiBzZXF1ZW5jZSkge1xuICAgICAgICAgIGNvbnN0IHdpbmRvd0xheW91dCA9IG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbYWN0dWFsUmFua10uZ3JpZD8ubGF5b3V0ID8/IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTDtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyhuZXdXaWRnZXRNYW5pZmVzdCwgd2luZG93TGF5b3V0KTtcbiAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAvLyBBcmUgd2UgZGlzam9pbnQgZnJvbSBhbGwgb3RoZXIgd2lkZ2V0cyA/XG4gICAgICAgICAgICAgICAgY29uc3QgaXNEaXNqb2ludEZyb21BbGwgPSAobWFuaWZlc3RHbG9iYWwud2luZG93c1thY3R1YWxSYW5rXS53aWRnZXRzID8/IFtdKVxuICAgICAgICAgICAgICAgICAgLm1hcCgod2lkZ2V0KSA9PiBXaWRnZXRQbGFjZW1lbnRVdGlscy5hcmVEaXNqb2ludCh3aWRnZXQsIG9wdGlvbikpXG4gICAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwICYmIGMsIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmIChpc0Rpc2pvaW50RnJvbUFsbCkge1xuICAgICAgICAgICAgICAgICAgLy8gRm91bmQgYSBkaXNqb2ludCBwbGFjZW1lbnQgIVxuICAgICAgICAgICAgICAgICAgZm91bmQgPSB7IGFjdHVhbFJhbmssIHdpZGdldDogb3B0aW9uIH0gYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISFmb3VuZCkge1xuICAgICAgICAgIGNvbnN0IHBsYWNlV2VGb3VuZCA9IGZvdW5kIGFzIHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH07XG4gICAgICAgICAgbWFuaWZlc3RHbG9iYWwud2luZG93c1twbGFjZVdlRm91bmQuYWN0dWFsUmFua10ud2lkZ2V0cy5wdXNoKHBsYWNlV2VGb3VuZC53aWRnZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRXaW5kb3dMYXlvdXQgPSBtYW5pZmVzdEdsb2JhbC53aW5kb3dzW3JhbmtdLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEw7XG5cbiAgICAgICAgICAvLyBzaSBub24gdHJvdXbDqSA6IG5vdXZlbGxlIHBhZ2UsIHByZW1pw6hyZSBwb3NpdGlvbiBzdWdnw6lyw6llXG4gICAgICAgICAgY29uc3QgZmlyc3RQcm9wb3NlZExheW91dCA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnBsYWNlbWVudE9wdGlvbnMobmV3V2lkZ2V0TWFuaWZlc3QsIGN1cnJlbnRXaW5kb3dMYXlvdXQpWzBdO1xuXG4gICAgICAgICAgbWFuaWZlc3RHbG9iYWwud2luZG93cy5wdXNoKHtcbiAgICAgICAgICAgIHdpZGdldHM6IFtmaXJzdFByb3Bvc2VkTGF5b3V0ID8/IHsgeDogMSwgeTogMSwgaGVpZ2h0OiAxLCB3aWR0aDogMSB9XSxcbiAgICAgICAgICAgIGdyaWQ6IHsgbGF5b3V0OiBjdXJyZW50V2luZG93TGF5b3V0IH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhY3Rpb24uYWxlcnQgPT09IHVuZGVmaW5lZCB8fCBhY3Rpb24uYWxlcnQgPT09IHRydWUpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlQWN0aW9uID0gRGFzaGJvYXJkQWN0aW9ucy5tdWx0aVNuYWNrQmFyKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS53aWRnZXQuYWRkZWRJblZpZXcnLCB7XG4gICAgICAgICAgICAgICAgaW5kZXg6ICEhZm91bmRcbiAgICAgICAgICAgICAgICAgID8gKGZvdW5kIGFzIHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH0pLmFjdHVhbFJhbmsgKyAxXG4gICAgICAgICAgICAgICAgICA6IG1hbmlmZXN0R2xvYmFsLndpbmRvd3MubGVuZ3RoXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChtZXNzYWdlQWN0aW9uKTtcblxuICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgIHRoaXMuYnVzU2VydmljZS5idWZmZXJVbnRpbEpvaW5lZChtZXNzYWdlQWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7IG1hbmlmZXN0OiBtYW5pZmVzdEdsb2JhbCwgc2VsZWN0ZWRJZHMgfSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBtb3ZlV2lkZ2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLm1vdmVXaWRnZXQpLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5ncmlkTGF5b3V0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGFzaGJvYXJkQ2VsbFBhcmFtcyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpXG4gICAgICApLFxuICAgICAgbWFwKChbYWN0aW9uLCBsYXlvdXQsIF9nbG9iYWxNYW5pZmVzdCwgcmFuaywgcGFyYW1zLCBzZWxlY3RlZElkc10pID0+IHtcbiAgICAgICAgY29uc3QgbWFuaWZlc3RHbG9iYWwgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF9nbG9iYWxNYW5pZmVzdCkpIGFzIEdsb2JhbE1hbmlmZXN0O1xuXG4gICAgICAgIGNvbnN0IG5ld1dpbmRvd3MgPSBbLi4ubWFuaWZlc3RHbG9iYWwud2luZG93c107XG5cbiAgICAgICAgLy8gQ3JlYXRpbmcgbmV3IGN1cnJlbnQgd2luZG93IG1hbmlmZXN0LCB3aXRob3V0IG1vdmVkIHdpZGdldFxuICAgICAgICBjb25zdCBteU5ld1dpbmRvdyA9IHtcbiAgICAgICAgICAuLi5uZXdXaW5kb3dzW3JhbmtdLFxuICAgICAgICAgIHdpZGdldHM6IFsuLi4obmV3V2luZG93c1tyYW5rXSA/PyB7IHdpZGdldHM6IFtdIH0pLndpZGdldHNdXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IG15TmV3V2luZG93LndpZGdldHMuc3BsaWNlKGFjdGlvbi53aWRnZXRJbmRleCwgMSlbMF07XG4gICAgICAgIG5ld1dpbmRvd3NbcmFua10gPSBteU5ld1dpbmRvdztcblxuICAgICAgICAvLyBDcmVhdGluZyBlaXRoZXIgYSBuZXcgd2luZG93IG1hbmlmZXN0IG9yIHVwZGF0ZSB0aGUgdGFyZ2V0IG9uZVxuICAgICAgICBjb25zdCB0YXJnZXRSYW5rID0gYWN0aW9uLnRhcmdldEluZGV4O1xuICAgICAgICBpZiAodGFyZ2V0UmFuayAhPT0gLTEpIHtcbiAgICAgICAgICBpZiAoIW5ld1dpbmRvd3NbdGFyZ2V0UmFua10pIHtcbiAgICAgICAgICAgIG5ld1dpbmRvd3NbdGFyZ2V0UmFua10gPSB7XG4gICAgICAgICAgICAgIC4uLm5ld1dpbmRvd3NbcmFua10sXG4gICAgICAgICAgICAgIHdpZGdldHM6IFt3aWRnZXRdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgZm91bmQ6IHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH0gfCBudWxsID0gbnVsbDtcbiAgICAgICAgICAgIC8vIFRyeSB0byBmaW5kIGEgc3BvdCBpbiB3aW5kb3dzIChzdGFydGluZyBieSBjdXJyZW50IHJhbmssIHRoZW4gaW4gb3RoZXJzKVxuICAgICAgICAgICAgY29uc3Qgc2VxdWVuY2UgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5zd2FwQXJyYXlFbGVtZW50cyhcbiAgICAgICAgICAgICAgbmV3IEFycmF5KG1hbmlmZXN0R2xvYmFsLndpbmRvd3MubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaWR4LCBhcnJheSkgPT4gaWR4KSxcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgcmFua1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIFRyeWluZyBhbGwgcGxhY2VtZW50IG9wdGlvbnMgaW4gdGFyZ2V0IHdpbmRvd1xuICAgICAgICAgICAgY29uc3Qgd2luZG93TGF5b3V0ID0gKG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbdGFyZ2V0UmFua10gPz8ge30pLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTDtcbiAgICAgICAgICAgIGlmICh3aW5kb3dMYXlvdXQgIT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKHdpZGdldCwgd2luZG93TGF5b3V0KTtcbiAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQXJlIHdlIGRpc2pvaW50IGZyb20gYWxsIG90aGVyIHdpZGdldHMgP1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2pvaW50RnJvbUFsbCA9IChtYW5pZmVzdEdsb2JhbC53aW5kb3dzW3RhcmdldFJhbmtdLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcCgod2lkZ2V0KSA9PiBXaWRnZXRQbGFjZW1lbnRVdGlscy5hcmVEaXNqb2ludCh3aWRnZXQsIG9wdGlvbikpXG4gICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcCAmJiBjLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRGlzam9pbnRGcm9tQWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gRm91bmQgYSBkaXNqb2ludCBwbGFjZW1lbnQgIVxuICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0geyBhY3R1YWxSYW5rOiB0YXJnZXRSYW5rLCB3aWRnZXQ6IG9wdGlvbiB9IGFzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFJhbms6IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldDogV2lkZ2V0TWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gSW4gbWFudWFsIG1vZGUsIHdlIHNob3VsZCByZXNvbHZlQ29sbGlzaW9ucyBidXQgZm9yIG5vdyBpdCdzIG5vdCAoY2F1c2Ugd2Ugb25seSBoYXZlIGludmVydGVkIGNvbGxpc2lvbnMgcmlnaHQgbm93KVxuICAgICAgICAgICAgICBmb3VuZCA9IHsgYWN0dWFsUmFuazogdGFyZ2V0UmFuaywgd2lkZ2V0IH0gYXMge1xuICAgICAgICAgICAgICAgIGFjdHVhbFJhbms6IG51bWJlcjtcbiAgICAgICAgICAgICAgICB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0O1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoISFmb3VuZCkge1xuICAgICAgICAgICAgICBjb25zdCBwbGFjZVdlRm91bmQgPSBmb3VuZCBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9O1xuICAgICAgICAgICAgICBuZXdXaW5kb3dzW3BsYWNlV2VGb3VuZC5hY3R1YWxSYW5rXS53aWRnZXRzLnB1c2gocGxhY2VXZUZvdW5kLndpZGdldCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50V2luZG93TGF5b3V0ID0gKG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbcmFua10gPz8ge30pLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEw7XG5cbiAgICAgICAgICAgICAgLy8gc2kgbm9uIHRyb3V2w6kgOiBub3V2ZWxsZSBwYWdlLCBwcmVtacOocmUgcG9zaXRpb24gc3VnZ8OpcsOpZVxuICAgICAgICAgICAgICBjb25zdCBmaXJzdFByb3Bvc2VkTGF5b3V0ID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyh3aWRnZXQsIGN1cnJlbnRXaW5kb3dMYXlvdXQpWzBdO1xuXG4gICAgICAgICAgICAgIG5ld1dpbmRvd3MucHVzaCh7IHdpZGdldHM6IFtmaXJzdFByb3Bvc2VkTGF5b3V0ID8/IHdpZGdldF0sIGdyaWQ6IHsgbGF5b3V0OiBjdXJyZW50V2luZG93TGF5b3V0IH0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGNyZWF0ZSBuZXcgd2luZG93IHRvIHdlbGNvbWUgdGhpcyB3aWRnZXRcbiAgICAgICAgICBuZXdXaW5kb3dzLnB1c2goe1xuICAgICAgICAgICAgLi4ubmV3V2luZG93c1tyYW5rXSxcbiAgICAgICAgICAgIHdpZGdldHM6IFt3aWRnZXRdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7IG1hbmlmZXN0OiB7IC4uLm1hbmlmZXN0R2xvYmFsLCB3aW5kb3dzOiBuZXdXaW5kb3dzIH0sIHNlbGVjdGVkSWRzIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgbXVsdGlTbmFja0JhciQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0JhciksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB0aGlzLnNuYWNrQmFyLm9wZW4oYWN0aW9uLm1lc3NhZ2UpKVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgcmVsYXVuY2hBZnRlck9yZGVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnF1aWNrT3JkZXIpLFxuICAgICAgbWFwKChhY3Rpb24pID0+XG4gICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICBpZDogYWN0aW9uLmRhdGFzb3VyY2VJZCxcbiAgICAgICAgICBleGNsdWRlR2VvOiB0cnVlLFxuICAgICAgICAgIGZyb206ICdEYXNoYm9hcmRFZmZlY3RzLnJlbGF1bmNoQWZ0ZXJPcmRlciQnXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHByb3BhZ2F0ZUdyaWRMYXlvdXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc2V0R3JpZExheW91dCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy53aW5kb3dNYW5pZmVzdCkpLFxuICAgICAgbWFwKChbYWN0aW9uLCByYW5rLCB3aW5kb3dNYW5pZmVzdF0pID0+IERhc2hib2FyZEFjdGlvbnMucHJvcGFnYXRlR3JpZExheW91dCh7IG1hbmlmZXN0OiB3aW5kb3dNYW5pZmVzdCwgcmFuayB9KSlcbiAgICApXG4gICk7XG5cbiAgdG9nZ2xlRWRpdGlvbk1vZGVJZk5vdE1hbnVhbCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KSxcbiAgICAgIGZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24ubGF5b3V0ICE9PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCksXG4gICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiBmYWxzZSB9KSlcbiAgICApXG4gICk7XG5cbiAgZ2V0Q2FwYWJpbGl0eSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5nZXRDYXBhYmlsaXR5KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5jYXBhYmlsaXRpZXMpKSxcbiAgICAgIGZpbHRlcihcbiAgICAgICAgKFthY3Rpb24sIGNhcGFiaWxpdGllc10pID0+XG4gICAgICAgICAgKCEhY2FwYWJpbGl0aWVzICYmICEhYWN0aW9uLnVybCAmJiAoIWNhcGFiaWxpdGllc1thY3Rpb24udXJsXSB8fCAhY2FwYWJpbGl0aWVzW2FjdGlvbi51cmxdIS5kb2MpKSB8fFxuICAgICAgICAgICEhYWN0aW9uLmZvcmNlXG4gICAgICApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIF9dKSA9PlxuICAgICAgICB0aGlzLndtc1NlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKGFjdGlvbi51cmwpLnBpcGUoXG4gICAgICAgICAgbWFwKChjYXBhYmlsaXR5KSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZUNhcGFiaWxpdHkoeyB1cmw6IGFjdGlvbi51cmwsIGNhcGFiaWxpdHkgfSkpLFxuICAgICAgICAgIHN0YXJ0V2l0aChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZUNhcGFiaWxpdHkoeyB1cmw6IGFjdGlvbi51cmwsIGNhcGFiaWxpdHk6IG51bGwgfSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZ2V0V21zRmVhdHVyZXMgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5nZXRXbXNGZWF0dXJlcyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBjb21iaW5lTGF0ZXN0KFtvZihhY3Rpb24pLCB0aGlzLndtc1NlcnZpY2UuZ2V0V21zRmVhdHVyZXMoYWN0aW9uLnVybCldKSksXG4gICAgICBtYXAoKFthY3Rpb24sIGpzb25dKSA9PiB7XG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLmFkZFdtc0ZlYXR1cmVzKHtcbiAgICAgICAgICBmZWF0dXJlczoganNvbi5mZWF0dXJlcy5tYXAoKGZlYXR1cmU6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7XG4gICAgICAgICAgICAgIGlkOiBmZWF0dXJlLmlkLFxuICAgICAgICAgICAgICBvQ2xhc3M6IGFjdGlvbi5vQ2xhc3MsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBhY3Rpb24uY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IE9iamVjdC5rZXlzKGZlYXR1cmUucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICAubWFwKChwcm9wZXJ0eSkgPT4gKHsga2V5OiBwcm9wZXJ0eSwgdmFsdWU6IGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV0gfSkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocHJvcCkgPT4gISFwcm9wLnZhbHVlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY29tcG9uZW50SWQ6IGFjdGlvbi5jb21wb25lbnRJZFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGdldFdmc0ZlYXR1cmVzRm9yUG9pbnRTdGFjayA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmdldFdmc0ZlYXR1cmVzRm9yUG9pbnRTdGFja1Rvb2x0aXBzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IGNvbWJpbmVMYXRlc3QoW29mKGFjdGlvbiksIHRoaXMud21zU2VydmljZS5nZXRXbXNGZWF0dXJlcyhhY3Rpb24udXJsKV0pKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCB3bXNKc29uXSkgPT4ge1xuICAgICAgICAvLyBjaGVjayBpZiBkYXRhIGlzIGFjdHVhbGx5IGEgc3RhY2sgb2YgcG9pbnRzXG4gICAgICAgIGlmIChcbiAgICAgICAgICB3bXNKc29uLmZlYXR1cmVzWzBdICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50ICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50dW5pcXVlICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50ID4gMSAmJlxuICAgICAgICAgIHdtc0pzb24uZmVhdHVyZXNbMF0ucHJvcGVydGllcy5jb3VudHVuaXF1ZSA9PT0gMVxuICAgICAgICApIHtcbiAgICAgICAgICBsZXQgZW52QkJPWENvb3JkczogbnVtYmVyW10gPSBbLi4ud21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmVudkJCT1gubWF0Y2hBbGwoL1xcZCsuXFxkKy9nKV0ubWFwKFxuICAgICAgICAgICAgKG0pID0+IG1bMF1cbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0aGlzLndtc1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRXZnNGZWF0dXJlcyhhY3Rpb24udXJsLCBlbnZCQk9YQ29vcmRzKVxuICAgICAgICAgICAgLnBpcGUobWFwKCh3ZnNKc29uKSA9PiAoeyBhY3Rpb24sIGpzb246IHdmc0pzb24gfSkpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBkYXRhIGlzIG5vdCBhIHN0YWNrIGp1c3QgYWRkIGZlYXR1cmVzIHdpdGhvdXQgY2FsbGluZyB3ZnMgc2VydmljZVxuICAgICAgICByZXR1cm4gb2YoeyBhY3Rpb24sIGpzb246IHdtc0pzb24gfSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoeyBhY3Rpb24sIGpzb24gfSkgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hZGRXbXNGZWF0dXJlcyh7XG4gICAgICAgICAgZmVhdHVyZXM6IGpzb24uZmVhdHVyZXMubWFwKChmZWF0dXJlOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogZmVhdHVyZS5pZCxcbiAgICAgICAgICAgIG9DbGFzczogYWN0aW9uLm9DbGFzcyxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBhY3Rpb24uY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBPYmplY3Qua2V5cyhmZWF0dXJlLnByb3BlcnRpZXMpXG4gICAgICAgICAgICAgIC5tYXAoKHByb3BlcnR5KSA9PiAoeyBrZXk6IHByb3BlcnR5LCB2YWx1ZTogZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSB9KSlcbiAgICAgICAgICAgICAgLmZpbHRlcigocHJvcCkgPT4gISFwcm9wLnZhbHVlKVxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBjb21wb25lbnRJZDogYWN0aW9uLmNvbXBvbmVudElkXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgZmV0Y2hpbmcgV0ZTIGZlYXR1cmVzJywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gb2YoRGFzaGJvYXJkQWN0aW9ucy5hZGRXbXNGZWF0dXJlcyh7IGZlYXR1cmVzOiBbXSwgY29tcG9uZW50SWQ6ICdlcnJvcicgfSkpO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgYWRkTWFuaWZlc3RNZXRhZGF0YSA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmFkZE1hbmlmZXN0TWV0YWRhdGEpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuYWRkTWV0YWRhdGEoYWN0aW9uLnByZXNlbnRhdGlvbklkLCBhY3Rpb24ubWV0YWRhdGFJZCwgYWN0aW9uLnZhbHVlKS5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiBEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS50b29sYm94Lm1hbmlmZXN0LnNhdmVFcnJvckNvZGUuU0FWRV9NRVRBREFUQScsIHtcbiAgICAgICAgICAgICAgICAgIGNvZGU6IGVycm9yLnN0YXR1c1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlTWFuaWZlc3RNZXRhZGF0YSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5kZWxldGVNYW5pZmVzdE1ldGFkYXRhKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlXG4gICAgICAgICAgLmRlbGV0ZU1ldGFkYXRhKGFjdGlvbi5wcmVzZW50YXRpb25JZCwgYWN0aW9uLm1ldGFkYXRhSWQpXG4gICAgICAgICAgLnBpcGUobWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2FkUHJlc2VudGF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmxvYWRQcmVzZW50YXRpb24pLFxuICAgICAgdGFwKCgpID0+XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7XG4gICAgICAgICAgICBtYW5pZmVzdDogeyB3aW5kb3dzOiBbXSB9LFxuICAgICAgICAgICAgc2VsZWN0ZWRJZHM6IFtdXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRhcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKHtcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbjogYWN0aW9uLnByZXNlbnRhdGlvbixcbiAgICAgICAgICAgIHZpZXdNb2RlOiBhY3Rpb24udmlld01vZGVcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgdGFwKChhY3Rpb24pID0+IHRoaXMudGl0bGVTZXJ2aWNlLmNoYW5nZVRpdGxlKGFjdGlvbi5wcmVzZW50YXRpb24ubmFtZSkpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi5wcmVzZW50YXRpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKG1hbmlmZXN0KSA9PiBbXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHtcbiAgICAgICAgICAgICAgbWFuaWZlc3QsXG4gICAgICAgICAgICAgIHNlbGVjdGVkSWRzOiBbXSxcbiAgICAgICAgICAgICAgbWFuaWZlc3RJZDogYWN0aW9uLnByZXNlbnRhdGlvbi5pZFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNldEluaXRpYWxQcmVzZW50YXRpb24oe1xuICAgICAgICAgICAgICBpbml0aWFsOiBhY3Rpb24udmlld01vZGUgPT09IFZpZXdNb2RlLkNPTlNVTFQgPyB1bmRlZmluZWQgOiBtYW5pZmVzdFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURpc3BsYXlPcHRpb25zKHtcbiAgICAgICAgICAgICAgbW9kZTogYWN0aW9uLnZpZXdNb2RlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSgpXG4gICAgICAgICAgXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25maXJtTGF5ZXJHcm91cERlbGV0aW9uJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5jb25maXJtTGF5ZXJHcm91cERlbGV0aW9uKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBQcnlEaWFsb2dDb25maXJtRGF0YSA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQHByeS53aWRnZXQubWFwLmxheWVyU2V0dGluZ3MuY29uZmlybURlbGV0ZScsXG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5tYW5pZmVzdC52YWxpZGF0ZScsXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW0Rhc2hib2FyZEFjdGlvbnMuZGVsZXRlTGF5ZXJHcm91cCh7IG5hbWU6IGFjdGlvbi5uYW1lIH0pXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnc2Vjb25kYXJ5J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHsgZGF0YSB9KTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGFzaGJvYXJkSW5pdFNlcnZpY2U6IERhc2hib2FyZEluaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIG1hbmlmZXN0U2VydmljZTogTWFuaWZlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBQcnlUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBQcnlTbmFja2JhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlZnJlc2hTZXJ2aWNlOiBSZWZyZXNoU2VydmljZSxcbiAgICBwcml2YXRlIHRvb2xib3hNYW5pZmVzdFNlcnZpY2U6IFRvb2xib3hNYW5pZmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBidXNTZXJ2aWNlOiBCdXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHByeURpYWxvZzogUHJ5RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHdtc1NlcnZpY2U6IFdtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB3aWRnZXRGYWN0b3J5U2VydmljZTogV2lkZ2V0RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpMThuU2VydmljZTogUHJ5STE4blNlcnZpY2VcbiAgKSB7XG4gICAgZGFzaGJvYXJkSW5pdFNlcnZpY2UuaW5pdCgpO1xuICAgIHJlZnJlc2hTZXJ2aWNlLnN0YXJ0KCk7XG4gIH1cbn1cbiJdfQ==
519
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RHLE9BQU8sRUFDTCx5QkFBeUIsRUFFMUIsTUFBTSx3REFBd0QsQ0FBQztBQUloRSxPQUFPLEVBQUUsbUJBQW1CLEVBQWtDLE1BQU0scUNBQXFDLENBQUM7QUFJMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBSTFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFNM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7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QzVCLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzhHQXo2QlUsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWVyZ2UsIG9mLCBzdGFydFdpdGgsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCxcbiAgUHJ5RGlhbG9nQ29uZmlybURhdGFcbn0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLWNvbmZpcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFByeURpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2NvbXBvbmVudHMvb3ZlcmxheS9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBQcnlTbmFja2JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBQcnlJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkR3JpZExheW91dCwgR2xvYmFsTWFuaWZlc3QsIFdpZGdldE1hbmlmZXN0IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9tYW5pZmVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2hhcnRXaWRnZXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC93aWRnZXQtY2hhcnQtbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1hcFdpZGdldE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL3dpZGdldC1tYXAtbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IEl0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9pdGVtL2l0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hBY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9zZWFyY2gvc2VhcmNoLmFjdGlvbnMnO1xuaW1wb3J0IHsgREVGQVVMVF9OQU1FRF9RVUVSWV9JRCwgRVhQTE9SRV9OQU1FRF9RVUVSWV9JRCB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvc2VhcmNoL3NlYXJjaC5jb25zdGFudHMnO1xuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvb2xib3hNYW5pZmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Rvb2xib3gvdG9vbGJveC1tYW5pZmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEJ1c1NlcnZpY2UgfSBmcm9tICcuLi9hY3Rpb24tYnVzL3NlcnZpY2UvYnVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2lkZ2V0UGxhY2VtZW50VXRpbHMgfSBmcm9tICcuLi9jb21wb25lbnRzL3dpZGdldHMvd2lkZ2V0LXBsYWNlbWVudC93aWRnZXQtcGxhY2VtZW50LnV0aWxzJztcbmltcG9ydCB7IFJlc3VsdHNldFV0aWxzIH0gZnJvbSAnLi4vcmVzdWx0c2V0LXV0aWxzJztcbmltcG9ydCB7IERhc2hib2FyZEluaXRTZXJ2aWNlIH0gZnJvbSAnLi9kYXNoYm9hcmQtaW5pdC5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbnMsIFZpZXdNb2RlIH0gZnJvbSAnLi9kYXNoYm9hcmQuYWN0aW9ucyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRTZWxlY3RvcnMgfSBmcm9tICcuL2Rhc2hib2FyZC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgTWFuaWZlc3RTZXJ2aWNlIH0gZnJvbSAnLi9tYW5pZmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hTZXJ2aWNlIH0gZnJvbSAnLi9yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5VGl0bGVTZXJ2aWNlIH0gZnJvbSAnLi90aXRsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFdtc1NlcnZpY2UgfSBmcm9tICcuL3dtcy5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldEZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy93aWRnZXRzL3dpZGdldC1pbnN0YW5jaWF0b3Ivd2lkZ2V0LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9kYXRhLXNvdXJjZS9kYXRhLXNvdXJjZS5zZWxlY3RvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkRWZmZWN0cyB7XG4gIGpvaW4kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuam9pbiksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMudGVuYW50cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5wcmVzZW50YXRpb24pLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGlzcGxheU9wdGlvbnMpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdCwgcmVzdWx0U2V0cywgZGlzcGxheV0pID0+IHJhbmsgPT09IDApLFxuICAgICAgbWFwKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdCwgcmVzdWx0U2V0cywgc2VsZWN0ZWRJZHMsIHByZXNlbnRhdGlvbiwgZGlzcGxheV0pID0+XG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudEpvaW4oe1xuICAgICAgICAgIHRlbmFudHMsIC8vIHdlIGFscmVhZHkgaGF2ZSBhZGRlZCB0ZW5hbnQgaW4gdGhlIHJlZHVjZSBvZiB0aGUgXCJqb2luXCIgYWN0aW9uXG4gICAgICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgICAgICAgd2luZG93czogbWFuaWZlc3Qud2luZG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0U2V0cyxcbiAgICAgICAgICBzZWxlY3RlZElkcyxcbiAgICAgICAgICBqb2luaW5nOiB0cnVlLFxuICAgICAgICAgIHByZXNlbnRhdGlvbixcbiAgICAgICAgICBkaXNwbGF5XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxlYXZlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmxlYXZlKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy50ZW5hbnRzKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcylcbiAgICAgICksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0XSkgPT4gcmFuayA9PT0gMCB8fCAodGVuYW50c1swXSA9PT0gYWN0aW9uLnNlbmRlciAmJiByYW5rID09PSAxKSksXG4gICAgICBtYXAoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0LCBzZWxlY3RlZElkc10pID0+IHtcbiAgICAgICAgY29uc3QgbGVhdmVyUmFuayA9IHRlbmFudHMuaW5kZXhPZihhY3Rpb24uc2VuZGVyKTtcbiAgICAgICAgY29uc3QgbmV3VGVuYW50c0xpc3QgPSBbLi4udGVuYW50c107XG4gICAgICAgIGNvbnN0IG5ld1dpbmRvd0xpc3QgPSBbLi4ubWFuaWZlc3Qud2luZG93c107XG4gICAgICAgIGlmIChsZWF2ZXJSYW5rID4gLTEpIHtcbiAgICAgICAgICBuZXdUZW5hbnRzTGlzdC5zcGxpY2UobGVhdmVyUmFuaywgMSk7XG4gICAgICAgICAgbmV3V2luZG93TGlzdC5zcGxpY2UobGVhdmVyUmFuaywgMSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50TGVhdmUoe1xuICAgICAgICAgIHRlbmFudHM6IG5ld1RlbmFudHNMaXN0LFxuICAgICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgICAuLi5tYW5pZmVzdCxcbiAgICAgICAgICAgIHdpbmRvd3M6IG5ld1dpbmRvd0xpc3RcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGVjdGVkSWRzXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgZmV0Y2hTdGF0aWNNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mZXRjaFN0YXRpY01hbmlmZXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSwgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rXSkgPT4gcmFuayA9PT0gMCksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgcmFua10pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlXG4gICAgICAgICAgLmdldChhY3Rpb24uaWQpXG4gICAgICAgICAgLnBpcGUobWFwKChzdGF0aWNNYW5pZmVzdCkgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVTdGF0aWNNYW5pZmVzdCh7IHN0YXRpY01hbmlmZXN0IH0pKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9hZEFuZEFjdGl2YXRlTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubG9hZEFuZEFjdGl2YXRlTWFuaWZlc3QsIERhc2hib2FyZEFjdGlvbnMubG9hZE1hbmlmZXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSwgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rXSkgPT4gcmFuayA9PT0gMCksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgcmFuaywgc2VsZWN0ZWRJZHNdKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChtYW5pZmVzdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi50eXBlID09PSBEYXNoYm9hcmRBY3Rpb25zLmxvYWRBbmRBY3RpdmF0ZU1hbmlmZXN0LnR5cGVcbiAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJGZXRjaCh7IG1hbmlmZXN0LCBtYW5pZmVzdElkOiBhY3Rpb24uaWQsIHNlbGVjdGVkSWRzIH0pLFxuICAgICAgICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5mb2xsb3dNYW5pZmVzdFJvdXRlKClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIDogW0Rhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RXaXRob3V0QWN0aXZhdGlvbih7IG1hbmlmZXN0LCBtYW5pZmVzdElkOiBhY3Rpb24uaWQsIHNlbGVjdGVkSWRzIH0pXTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNsZWFyTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuY2xlYXJNYW5pZmVzdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcylcbiAgICAgICksXG4gICAgICBtYXAoKFthY3Rpb24sIG1hbmlmZXN0LCBzZWxlY3RlZElkc10pID0+XG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlckZldGNoKHsgbWFuaWZlc3QsIG1hbmlmZXN0SWQ6ICcnLCBzZWxlY3RlZElkcyB9KVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkb3dubG9hZE1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5kb3dubG9hZE1hbmlmZXN0KSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+XG4gICAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi5pZCkuc3Vic2NyaWJlKChtYW5pZmVzdDogR2xvYmFsTWFuaWZlc3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdHIgPSAnZGF0YTp0ZXh0L2pzb247Y2hhcnNldD11dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0KSk7XG4gICAgICAgICAgICBjb25zdCBkbEFuY2hvckVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBkbEFuY2hvckVsZW0uc2V0QXR0cmlidXRlKCdocmVmJywgZGF0YVN0cik7XG4gICAgICAgICAgICBkbEFuY2hvckVsZW0uc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGAke2FjdGlvbi5uYW1lfS5qc29uYCk7XG4gICAgICAgICAgICBkbEFuY2hvckVsZW0uY2xpY2soKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBmb2xsb3dNYW5pZmVzdFJvdXRlJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mb2xsb3dNYW5pZmVzdFJvdXRlKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KSksXG4gICAgICAgIHRhcCgoW2FjdGlvbiwgbWFuaWZlc3RdKSA9PiB7XG4gICAgICAgICAgaWYgKG1hbmlmZXN0LnJvdXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG1hbmlmZXN0LnJvdXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBlbmRMb2FkaW5nQWZ0ZXJGb2xsb3dpbmdNYW5pZmVzdFJvdXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUpLFxuICAgICAgbWFwKChhY3Rpb24pID0+IERhc2hib2FyZEFjdGlvbnMuZW5kTG9hZGluZygpKVxuICAgIClcbiAgKTtcblxuICByZXF1ZXN0TWFuaWZlc3RSb3V0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5yZXF1ZXN0QWxsUm91dGVzKSxcbiAgICAgIG1hcCgoKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVJvdXRlTWFuaWZlc3QoeyByb3V0ZTogdGhpcy5yb3V0ZXIudXJsIH0pKVxuICAgIClcbiAgKTtcblxuICBhc3NlcnRSZXN1bHRTZXRzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hc3NlcnRSZXN1bHRTZXRzLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmRpc3BhdGNoRmlsdGVycyxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5jbGVhckFsbEZpbHRlclZhbHVlc1xuICAgICAgKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmVzdWx0U2V0cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzUGFyYW1zKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnF1aWNrT3JkZXIpXG4gICAgICApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIG1hbmlmZXN0LCByZXN1bHRTZXRzLCByZXN1bHRTZXRzUGFyYW1zLCBxdWlja09yZGVyXSkgPT4ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmICghYWN0aW9uLmlkKSB7XG4gICAgICAgICAgLy8gRmlyc3Qgc2VuZCBhZ2dyZWdhdGUgdXBkYXRlc1xuICAgICAgICAgIGNvbnN0IHRvQWdncmVnYXRlQWN0aW9ucyA9IChcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgICAgICBtYW5pZmVzdC53aW5kb3dzXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aW5NYW5pZmVzdCkgPT4gKHdpbk1hbmlmZXN0ID8/IHt9KS53aWRnZXRzID8/IFtdKVxuICAgICAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSlcbiAgICAgICAgICAgICAgICAgIC5tYXAoKHdpZE1hbmlmZXN0KSA9PiB0aGlzLndpZGdldEZhY3RvcnlTZXJ2aWNlLmFnZ3JlZ2F0ZXNUb0F1dG9Mb2FkKHdpZE1hbmlmZXN0KSlcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10gYXMgc3RyaW5nW10pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0gYXMgc3RyaW5nW11cbiAgICAgICAgICApLm1hcCgoZHMpID0+IERhc2hib2FyZEFjdGlvbnMudHJpZ2dlckFnZ3JlZ2F0ZSh7IGlkOiBkcyB9KSk7XG5cbiAgICAgICAgICBjb25zdCB0b0l0ZW1zQWN0aW9ucyA9IE9iamVjdC52YWx1ZXMoXG4gICAgICAgICAgICBtYW5pZmVzdC53aW5kb3dzXG4gICAgICAgICAgICAgIC5tYXAoKHdpbk1hbmlmZXN0KSA9PiAod2luTWFuaWZlc3QgPz8ge30pLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pXG4gICAgICAgICAgICAgIC5tYXAoKHdpZE1hbmlmZXN0KSA9PiB0aGlzLndpZGdldEZhY3RvcnlTZXJ2aWNlLmRhdGFzb3VyY2VzVG9BdXRvTG9hZCh3aWRNYW5pZmVzdCkpXG4gICAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAocCwgYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICBbYy5kYXRhc2V0SWRdOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnBbYy5kYXRhc2V0SWRdLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLFxuICAgICAgICAgICAgICAgICAgICBleGNsdWRlR2VvOiBwW2MuZGF0YXNldElkXT8uZXhjbHVkZUdlbyA9PT0gZmFsc2UgPyBwW2MuZGF0YXNldElkXS5leGNsdWRlR2VvIDogYy5leGNsdWRlR2VvXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiB7IGRhdGFzZXRJZDogc3RyaW5nOyBleGNsdWRlR2VvOiBib29sZWFuIH0gfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgKHJlc3VsdFNldCkgPT5cbiAgICAgICAgICAgICAgICAhIXJlc3VsdFNldC5kYXRhc2V0SWQgJiZcbiAgICAgICAgICAgICAgICByZXN1bHRTZXQuZGF0YXNldElkICE9PSAnJyAmJlxuICAgICAgICAgICAgICAgICghcmVzdWx0U2V0c1tyZXN1bHRTZXQuZGF0YXNldElkXSB8fFxuICAgICAgICAgICAgICAgICAgcmVzdWx0U2V0c1BhcmFtc1tyZXN1bHRTZXQuZGF0YXNldElkXSAhPT1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmdldEl0ZW1zU2VyaWFsaXplZFBhcmFtcyhyZXN1bHRTZXQuZGF0YXNldElkLCBxdWlja09yZGVyKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5tYXAoKHJlc3VsdFNldCkgPT5cbiAgICAgICAgICAgICAgU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoe1xuICAgICAgICAgICAgICAgIGlkOiByZXN1bHRTZXQuZGF0YXNldElkLFxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVHZW86IHJlc3VsdFNldC5leGNsdWRlR2VvLFxuICAgICAgICAgICAgICAgIGZyb206ICdEYXNoYm9hcmRFZmZlY3RzLmFzc2VydFJlc3VsdFNldHMkLTEnXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIFsuLi50b0l0ZW1zQWN0aW9ucywgLi4udG9BZ2dyZWdhdGVBY3Rpb25zXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgaWYgKCFyZXN1bHRTZXRzW2FjdGlvbi5pZF0pIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgaWQ6IGFjdGlvbi5pZCBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVHZW86IGFjdGlvbi5leGNsdWRlR2VvICE9IHVuZGVmaW5lZCA/IGFjdGlvbi5leGNsdWRlR2VvIDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmcm9tOiAnRGFzaGJvYXJkRWZmZWN0cy5hc3NlcnRSZXN1bHRTZXRzJC0yJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBzZW5kQWdncmVnYXRlc0V2ZW50JCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy50cmlnZ2VyQWdncmVnYXRlKSxcbiAgICAgICAgZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5pZCAhPT0gREVGQVVMVF9OQU1FRF9RVUVSWV9JRCAmJiBhY3Rpb24uaWQgIT09IEVYUExPUkVfTkFNRURfUVVFUllfSUQpLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT4gd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdkYXRhc291cmNlUmVmcmVzaCcsIHsgZGV0YWlsOiBhY3Rpb24uaWQgfSkpKVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgc3RhcnRNaXNzaW5nVmlld0FmdGVyVmlld1VwZGF0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlckZldGNoLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRMZWF2ZSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50Sm9pbixcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5leHBsb3JlLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmRldGFpbCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5yZXN0b3JlSW5pdGlhbE1hbmlmZXN0LFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmNyZWF0ZVRhYixcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5tb3ZlV2lkZ2V0XG4gICAgICApLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFua10pID0+IHJhbmsgPT09IDApLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gW1xuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnN0YXJ0aW5nTWlzc2luZ1ZpZXdzKCksXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cyh7fSksXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc29sdmVDb2xsaXNpb25zKClcbiAgICAgIF0pXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVRpdGxlJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCxcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRKb2luLFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudExlYXZlLFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlckZldGNoLFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuZGVjbGFyZVNlbmRlcklkXG4gICAgICAgICksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSksXG4gICAgICAgIHRhcCgoW2FjdGlvbiwgcmFua10pID0+IHtcbiAgICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5jaGFuZ2VUaXRsZSgpO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgb3Blbk90aGVyJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zdGFydGluZ01pc3NpbmdWaWV3cyksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMudGVuYW50cyksXG4gICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KVxuICAgICAgICApLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3RdKSA9PiByYW5rID09PSAwKSxcbiAgICAgICAgdGFwKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdF0pID0+IHtcbiAgICAgICAgICBtYW5pZmVzdC53aW5kb3dzLmZvckVhY2goKHdpbmRvd01hbmlmZXN0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0ZW5hbnRzW2luZGV4XSkge1xuICAgICAgICAgICAgICAvLyBJZiBubyB3aW5kb3cgaXMgb3BlbmVkIGZvciB0aGlzIHBhcnQsIHRoZW4gb3BlbiBvbmVcbiAgICAgICAgICAgICAgd2luZG93Lm9wZW4od2luZG93TWFuaWZlc3Qucm91dGUgPz8gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBzYXZlTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc2F2ZU1hbmlmZXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCkpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5kYXRhc2V0cykpLFxuICAgICAgbWVyZ2VNYXAoKFtbYWN0aW9uLCBjdXJyZW50TWFuaWZlc3RdLCBkYXRhc2V0c10pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlXG4gICAgICAgICAgLnNhdmUoXG4gICAgICAgICAgICBhY3Rpb24ubmFtZSxcbiAgICAgICAgICAgIGFjdGlvbi5tYW5pZmVzdCA/PyBjdXJyZW50TWFuaWZlc3QsXG4gICAgICAgICAgICBhY3Rpb24uaWQsXG4gICAgICAgICAgICBhY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhY3Rpb24uaW1hZ2UsXG4gICAgICAgICAgICBhY3Rpb24ubWV0YWRhdGEsXG4gICAgICAgICAgICBhY3Rpb24uYWNjZXNzUmlnaHRzQnlHcm91cCxcbiAgICAgICAgICAgIGFjdGlvbi5hZGRpdGlvbmFsSW5mb3JtYXRpb25cbiAgICAgICAgICApXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5zYXZlZCcsIHsgdmlld0lkOiBhY3Rpb24ubmFtZSB9KSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcydcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhyZXNwb25zZS5taXNzaW5nR3JvdXBzQnlFbnRpdHkpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhOiBQcnlEaWFsb2dDb25maXJtRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQHByeS5zaGFyZS5jb25mbGljdC50aXRsZScsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0Bwcnkuc2hhcmUuY29uZmxpY3QubWFpbicpICtcbiAgICAgICAgICAgICAgICAgICAgJ1xcclxcbicgK1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXNwb25zZS5taXNzaW5nR3JvdXBzQnlFbnRpdHkpXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChlbnRpdHkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhc2V0cy5maW5kKChkcykgPT4gZHMuaWQgPT09IGVudGl0eSk/Lm5hbWUgPz8gZW50aXR5KSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICcgOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWlzc2luZ0dyb3Vwc0J5RW50aXR5W2VudGl0eV0uam9pbignLCAnKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAuam9pbignXFxyXFxuJyksXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5jbG9zZSdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5wcnlEaWFsb2cub3BlbihQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7IGRhdGEgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IGFjdGlvbi5tYW5pZmVzdCA/PyBjdXJyZW50TWFuaWZlc3QpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICdAcHJ5LnRvb2xib3gubWFuaWZlc3Quc2F2ZUVycm9yQ29kZS4nICsgKGVycm9yLmVycm9yPy5jb2RlID8/ICdVTktOT1dOJyksXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGFjdGlvbi5uYW1lXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKSksXG4gICAgICBtZXJnZU1hcCgoW21hbmlmZXN0LCBzZWxlY3RlZElkc10pID0+IFtcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZXRJbml0aWFsUHJlc2VudGF0aW9uKHsgaW5pdGlhbDogbWFuaWZlc3QgfSksXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QoeyBtYW5pZmVzdCwgc2VsZWN0ZWRJZHMgfSlcbiAgICAgIF0pXG4gICAgKVxuICApO1xuXG4gIGxpc3RNYW5pZmVzdHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwIHx8IHJhbmsgPT09IC0xKSxcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHJhbmtdKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5saXN0KCkucGlwZShtYXAoKG1hbmlmZXN0cykgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdHNMaXN0KHsgbWFuaWZlc3RzIH0pKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY29uZmlybU1hbmlmZXN0RGVsZXRpb24kID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmNvbmZpcm1NYW5pZmVzdERlbGV0aW9uKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBQcnlEaWFsb2dDb25maXJtRGF0YSA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQHByeS53aWRnZXQubW9kYWxUaXRsZScsXG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5tYW5pZmVzdC52YWxpZGF0ZScsXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW0Rhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3QoeyBpZDogYWN0aW9uLmlkIH0pXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnc2Vjb25kYXJ5J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHsgZGF0YSB9KTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGRlbGV0ZU1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRlbGV0ZU1hbmlmZXN0KSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmRlbGV0ZShhY3Rpb24uaWQpLnBpcGUobWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBmZXRjaE9iamVjdHNEZXRhaWxzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZldGNoT2JqZWN0c0RldGFpbHMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gbWVyZ2UoLi4uYWN0aW9uLmlkcy5tYXAoKGlkKSA9PiB0aGlzLml0ZW1TZXJ2aWNlLmdldChpZCkpKSksXG4gICAgICBtYXAoKGl0ZW0pID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlT2JqZWN0c0RldGFpbHMoeyBsaXN0OiB7IFtpdGVtLmlkXTogaXRlbSB9IH0pKVxuICAgIClcbiAgKTtcblxuICBwcm94aW1pdHlTZWFyY2gkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMucHJveGltaXR5KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzKSksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgcmVzdWx0U2V0c10pID0+XG4gICAgICAgIHRoaXMuaXRlbVNlcnZpY2UucHJveGltaXR5KGFjdGlvbi5pZCkucGlwZShcbiAgICAgICAgICBtYXAoKHByb3hScykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMudXBkYXRlUmVzdWx0U2V0KHtcbiAgICAgICAgICAgICAgaWQ6IGFjdGlvbi50YXJnZXRSZXN1bHRTZXQsXG4gICAgICAgICAgICAgIHJlc3VsdFNldDogUmVzdWx0c2V0VXRpbHMubWVyZ2VSZXN1bHRTZXRzKHByb3hScywgcmVzdWx0U2V0c1thY3Rpb24udGFyZ2V0UmVzdWx0U2V0XSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZXhwbG9yZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5leHBsb3JlKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IFtEYXNoYm9hcmRBY3Rpb25zLnByb3hpbWl0eSh7IGlkOiBhY3Rpb24uaWQsIHRhcmdldFJlc3VsdFNldDogRVhQTE9SRV9OQU1FRF9RVUVSWV9JRCB9KV0pXG4gICAgKVxuICApO1xuXG4gIGRldGFpbEFzTG9hZEluV2lkZ2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRldGFpbCksXG4gICAgICBtYXAoKGFjdGlvbikgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hZGRXaWRnZXRUb1ByZXNlbnRhdGlvbih7XG4gICAgICAgICAgaWQ6ICcnLFxuICAgICAgICAgIHdpZGdldFR5cGU6ICdkZXRhaWwnLFxuICAgICAgICAgIGFkZGl0aW9uYWxPcHRpb25zOiB7XG4gICAgICAgICAgICBpdGVtSWRzOiBhY3Rpb24uaWRzXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVXaWRnZXRJblByZXNlbnRhdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVXaWRnZXRJblByZXNlbnRhdGlvbiksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCBtYW5pZmVzdF0pID0+IHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgYSB3aWRnZXQgd2l0aCBzYW1lIGRhdGFzb3VyY2UgYW5kIHR5cGUgYWxyZWFkeSBleGlzdCBpbiBjdXJyZW50IHByZXNlbnRhdGlvblxuICAgICAgICBjb25zdCB3aWRnZXRUb01hdGNoID0gdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24ud2lkZ2V0VHlwZSk7XG5cbiAgICAgICAgbGV0IGFkZGl0aW9uYWxNYXRjaGluZ0ZuOiAob3B0aW9uc1RvTWF0Y2g6IGFueSwgb3B0aW9uczogYW55KSA9PiBib29sZWFuO1xuICAgICAgICBzd2l0Y2ggKHdpZGdldFRvTWF0Y2gudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2NoYXJ0JzpcbiAgICAgICAgICAgIGFkZGl0aW9uYWxNYXRjaGluZ0ZuID0gKG9wdGlvbnNUb01hdGNoOiBDaGFydFdpZGdldE9wdGlvbnMsIG9wdGlvbnM6IENoYXJ0V2lkZ2V0T3B0aW9ucykgPT5cbiAgICAgICAgICAgICAgb3B0aW9uc1RvTWF0Y2gudHlwZSA9PT0gb3B0aW9ucy50eXBlICYmIG9wdGlvbnNUb01hdGNoLnN1YlR5cGUgPT09IG9wdGlvbnMuc3ViVHlwZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgICAgICBhZGRpdGlvbmFsTWF0Y2hpbmdGbiA9IChvcHRpb25zVG9NYXRjaDogTWFwV2lkZ2V0T3B0aW9ucywgb3B0aW9uczogTWFwV2lkZ2V0T3B0aW9ucykgPT5cbiAgICAgICAgICAgICAgISFvcHRpb25zLmxheWVycyEuZmluZCgobGF5ZXIpID0+IGxheWVyLnR5cGUgPT09IG9wdGlvbnNUb01hdGNoLmxheWVycyFbMF0udHlwZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYWRkaXRpb25hbE1hdGNoaW5nRm4gPSAob3B0aW9uc1RvTWF0Y2g6IGFueSwgb3B0aW9uczogYW55KSA9PiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0Y2hpbmdXaWRnZXRzID0gbWFuaWZlc3Qud2luZG93cy5tYXAoKHdpbmRvdykgPT5cbiAgICAgICAgICB3aW5kb3cud2lkZ2V0c1xuICAgICAgICAgICAgLmZpbHRlcigod2lkZ2V0KSA9PiB3aWRnZXQudHlwZSA9PT0gd2lkZ2V0VG9NYXRjaC50eXBlKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgKHdpZGdldCkgPT5cbiAgICAgICAgICAgICAgICB3aWRnZXQuZGF0YXNvdXJjZSA9PT0gYWN0aW9uLmlkIHx8XG4gICAgICAgICAgICAgICAgKHdpZGdldC5kYXRhc291cmNlIVswXSA9PT0gYWN0aW9uLmlkICYmIHdpZGdldC5kYXRhc291cmNlIS5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZmluZCgod2lkZ2V0KSA9PiBhZGRpdGlvbmFsTWF0Y2hpbmdGbih3aWRnZXRUb01hdGNoLm9wdGlvbnMsIHdpZGdldC5vcHRpb25zKSlcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBhbHJlYWR5TWF0Y2hlZFdpZGdldCA9IG1hdGNoaW5nV2lkZ2V0cy5maW5kKCh3aW5kb3cpID0+ICEhd2luZG93KTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgaWYgKGFscmVhZHlNYXRjaGVkV2lkZ2V0KSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLm11bHRpU25hY2tCYXIoe1xuICAgICAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC51cGRhdGVkSW5WaWV3Jywge1xuICAgICAgICAgICAgICAgICAgaW5kZXg6IG1hdGNoaW5nV2lkZ2V0cy5maW5kSW5kZXgoKHdpZGdldCkgPT4gISF3aWRnZXQpICsgMVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQucHVzaChEYXNoYm9hcmRBY3Rpb25zLmFkZFdpZGdldFRvUHJlc2VudGF0aW9uKHsgLi4uYWN0aW9uIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBhZGRXaWRnZXRUb1ByZXNlbnRhdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5hZGRXaWRnZXRUb1ByZXNlbnRhdGlvbiksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5kYXNoYm9hcmRDZWxsUGFyYW1zKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcylcbiAgICAgICksXG4gICAgICBtYXAoKFthY3Rpb24sIGxheW91dCwgX2dsb2JhbE1hbmlmZXN0LCByYW5rLCBwYXJhbXMsIHNlbGVjdGVkSWRzXSkgPT4ge1xuICAgICAgICBjb25zdCBtYW5pZmVzdEdsb2JhbCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX2dsb2JhbE1hbmlmZXN0KSkgYXMgR2xvYmFsTWFuaWZlc3Q7XG5cbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBjb25maWd1cmF0aW9uXG4gICAgICAgIGNvbnN0IG5ld09wdGlvbnMgPSB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi53aWRnZXRUeXBlKSA/PyB7XG4gICAgICAgICAgb3B0aW9uczoge30sXG4gICAgICAgICAgdHlwZTogYWN0aW9uLndpZGdldFR5cGVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmV3V2lkZ2V0TWFuaWZlc3QgPSB7XG4gICAgICAgICAgLi4ubmV3T3B0aW9ucyxcbiAgICAgICAgICBsYXlvdXQ6IHt9LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLm5ld09wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgICAgIC4uLmFjdGlvbi5hZGRpdGlvbmFsT3B0aW9uc1xuICAgICAgICAgIH1cbiAgICAgICAgfSBhcyBXaWRnZXRNYW5pZmVzdDtcblxuICAgICAgICBpZiAoISFhY3Rpb24uaWQpIHtcbiAgICAgICAgICBuZXdXaWRnZXRNYW5pZmVzdC5kYXRhc291cmNlID0gYWN0aW9uLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZvdW5kOiB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIC8vIFRyeSB0byBmaW5kIGEgc3BvdCBpbiB3aW5kb3dzIChzdGFydGluZyBieSBjdXJyZW50IHJhbmssIHRoZW4gaW4gb3RoZXJzKVxuICAgICAgICBjb25zdCBzZXF1ZW5jZSA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnN3YXBBcnJheUVsZW1lbnRzKFxuICAgICAgICAgIG5ldyBBcnJheShtYW5pZmVzdEdsb2JhbC53aW5kb3dzLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGlkeCwgYXJyYXkpID0+IGlkeCksXG4gICAgICAgICAgMCxcbiAgICAgICAgICByYW5rXG4gICAgICAgICk7XG4gICAgICAgIC8vIFRyeWluZyBhbGwgcGxhY2VtZW50IG9wdGlvbnNcbiAgICAgICAgZm9yIChjb25zdCBhY3R1YWxSYW5rIG9mIHNlcXVlbmNlKSB7XG4gICAgICAgICAgY29uc3Qgd2luZG93TGF5b3V0ID0gbWFuaWZlc3RHbG9iYWwud2luZG93c1thY3R1YWxSYW5rXS5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5GVUxMO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKG5ld1dpZGdldE1hbmlmZXN0LCB3aW5kb3dMYXlvdXQpO1xuICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgIC8vIEFyZSB3ZSBkaXNqb2ludCBmcm9tIGFsbCBvdGhlciB3aWRnZXRzID9cbiAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2pvaW50RnJvbUFsbCA9IChtYW5pZmVzdEdsb2JhbC53aW5kb3dzW2FjdHVhbFJhbmtdLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aWRnZXQpID0+IFdpZGdldFBsYWNlbWVudFV0aWxzLmFyZURpc2pvaW50KHdpZGdldCwgb3B0aW9uKSlcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAgJiYgYywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGlzam9pbnRGcm9tQWxsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBGb3VuZCBhIGRpc2pvaW50IHBsYWNlbWVudCAhXG4gICAgICAgICAgICAgICAgICBmb3VuZCA9IHsgYWN0dWFsUmFuaywgd2lkZ2V0OiBvcHRpb24gfSBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIWZvdW5kKSB7XG4gICAgICAgICAgY29uc3QgcGxhY2VXZUZvdW5kID0gZm91bmQgYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfTtcbiAgICAgICAgICBtYW5pZmVzdEdsb2JhbC53aW5kb3dzW3BsYWNlV2VGb3VuZC5hY3R1YWxSYW5rXS53aWRnZXRzLnB1c2gocGxhY2VXZUZvdW5kLndpZGdldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFdpbmRvd0xheW91dCA9IG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbcmFua10uZ3JpZD8ubGF5b3V0ID8/IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTDtcblxuICAgICAgICAgIC8vIHNpIG5vbiB0cm91dsOpIDogbm91dmVsbGUgcGFnZSwgcHJlbWnDqHJlIHBvc2l0aW9uIHN1Z2fDqXLDqWVcbiAgICAgICAgICBjb25zdCBmaXJzdFByb3Bvc2VkTGF5b3V0ID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyhuZXdXaWRnZXRNYW5pZmVzdCwgY3VycmVudFdpbmRvd0xheW91dClbMF07XG5cbiAgICAgICAgICBtYW5pZmVzdEdsb2JhbC53aW5kb3dzLnB1c2goe1xuICAgICAgICAgICAgd2lkZ2V0czogW2ZpcnN0UHJvcG9zZWRMYXlvdXQgPz8geyB4OiAxLCB5OiAxLCBoZWlnaHQ6IDEsIHdpZHRoOiAxIH1dLFxuICAgICAgICAgICAgZ3JpZDogeyBsYXlvdXQ6IGN1cnJlbnRXaW5kb3dMYXlvdXQgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFjdGlvbi5hbGVydCA9PT0gdW5kZWZpbmVkIHx8IGFjdGlvbi5hbGVydCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VBY3Rpb24gPSBEYXNoYm9hcmRBY3Rpb25zLm11bHRpU25hY2tCYXIoe1xuICAgICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC5hZGRlZEluVmlldycsIHtcbiAgICAgICAgICAgICAgICBpbmRleDogISFmb3VuZFxuICAgICAgICAgICAgICAgICAgPyAoZm91bmQgYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfSkuYWN0dWFsUmFuayArIDFcbiAgICAgICAgICAgICAgICAgIDogbWFuaWZlc3RHbG9iYWwud2luZG93cy5sZW5ndGhcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG1lc3NhZ2VBY3Rpb24pO1xuXG4gICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgdGhpcy5idXNTZXJ2aWNlLmJ1ZmZlclVudGlsSm9pbmVkKG1lc3NhZ2VBY3Rpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHsgbWFuaWZlc3Q6IG1hbmlmZXN0R2xvYmFsLCBzZWxlY3RlZElkcyB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIG1vdmVXaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubW92ZVdpZGdldCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5kYXNoYm9hcmRDZWxsUGFyYW1zKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcylcbiAgICAgICksXG4gICAgICBtYXAoKFthY3Rpb24sIGxheW91dCwgX2dsb2JhbE1hbmlmZXN0LCByYW5rLCBwYXJhbXMsIHNlbGVjdGVkSWRzXSkgPT4ge1xuICAgICAgICBjb25zdCBtYW5pZmVzdEdsb2JhbCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX2dsb2JhbE1hbmlmZXN0KSkgYXMgR2xvYmFsTWFuaWZlc3Q7XG5cbiAgICAgICAgY29uc3QgbmV3V2luZG93cyA9IFsuLi5tYW5pZmVzdEdsb2JhbC53aW5kb3dzXTtcblxuICAgICAgICAvLyBDcmVhdGluZyBuZXcgY3VycmVudCB3aW5kb3cgbWFuaWZlc3QsIHdpdGhvdXQgbW92ZWQgd2lkZ2V0XG4gICAgICAgIGNvbnN0IG15TmV3V2luZG93ID0ge1xuICAgICAgICAgIC4uLm5ld1dpbmRvd3NbcmFua10sXG4gICAgICAgICAgd2lkZ2V0czogWy4uLihuZXdXaW5kb3dzW3JhbmtdID8/IHsgd2lkZ2V0czogW10gfSkud2lkZ2V0c11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgd2lkZ2V0ID0gbXlOZXdXaW5kb3cud2lkZ2V0cy5zcGxpY2UoYWN0aW9uLndpZGdldEluZGV4LCAxKVswXTtcbiAgICAgICAgbmV3V2luZG93c1tyYW5rXSA9IG15TmV3V2luZG93O1xuXG4gICAgICAgIC8vIENyZWF0aW5nIGVpdGhlciBhIG5ldyB3aW5kb3cgbWFuaWZlc3Qgb3IgdXBkYXRlIHRoZSB0YXJnZXQgb25lXG4gICAgICAgIGNvbnN0IHRhcmdldFJhbmsgPSBhY3Rpb24udGFyZ2V0SW5kZXg7XG4gICAgICAgIGlmICh0YXJnZXRSYW5rICE9PSAtMSkge1xuICAgICAgICAgIGlmICghbmV3V2luZG93c1t0YXJnZXRSYW5rXSkge1xuICAgICAgICAgICAgbmV3V2luZG93c1t0YXJnZXRSYW5rXSA9IHtcbiAgICAgICAgICAgICAgLi4ubmV3V2luZG93c1tyYW5rXSxcbiAgICAgICAgICAgICAgd2lkZ2V0czogW3dpZGdldF1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBmb3VuZDogeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfSB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYSBzcG90IGluIHdpbmRvd3MgKHN0YXJ0aW5nIGJ5IGN1cnJlbnQgcmFuaywgdGhlbiBpbiBvdGhlcnMpXG4gICAgICAgICAgICBjb25zdCBzZXF1ZW5jZSA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnN3YXBBcnJheUVsZW1lbnRzKFxuICAgICAgICAgICAgICBuZXcgQXJyYXkobWFuaWZlc3RHbG9iYWwud2luZG93cy5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBpZHgsIGFycmF5KSA9PiBpZHgpLFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICByYW5rXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gVHJ5aW5nIGFsbCBwbGFjZW1lbnQgb3B0aW9ucyBpbiB0YXJnZXQgd2luZG93XG4gICAgICAgICAgICBjb25zdCB3aW5kb3dMYXlvdXQgPSAobWFuaWZlc3RHbG9iYWwud2luZG93c1t0YXJnZXRSYW5rXSA/PyB7fSkuZ3JpZD8ubGF5b3V0ID8/IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMO1xuICAgICAgICAgICAgaWYgKHdpbmRvd0xheW91dCAhPT0gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUwpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnBsYWNlbWVudE9wdGlvbnMod2lkZ2V0LCB3aW5kb3dMYXlvdXQpO1xuICAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBcmUgd2UgZGlzam9pbnQgZnJvbSBhbGwgb3RoZXIgd2lkZ2V0cyA/XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzRGlzam9pbnRGcm9tQWxsID0gKG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbdGFyZ2V0UmFua10ud2lkZ2V0cyA/PyBbXSlcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKCh3aWRnZXQpID0+IFdpZGdldFBsYWNlbWVudFV0aWxzLmFyZURpc2pvaW50KHdpZGdldCwgb3B0aW9uKSlcbiAgICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwICYmIGMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNEaXNqb2ludEZyb21BbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBGb3VuZCBhIGRpc2pvaW50IHBsYWNlbWVudCAhXG4gICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB7IGFjdHVhbFJhbms6IHRhcmdldFJhbmssIHdpZGdldDogb3B0aW9uIH0gYXMge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsUmFuazogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBJbiBtYW51YWwgbW9kZSwgd2Ugc2hvdWxkIHJlc29sdmVDb2xsaXNpb25zIGJ1dCBmb3Igbm93IGl0J3Mgbm90IChjYXVzZSB3ZSBvbmx5IGhhdmUgaW52ZXJ0ZWQgY29sbGlzaW9ucyByaWdodCBub3cpXG4gICAgICAgICAgICAgIGZvdW5kID0geyBhY3R1YWxSYW5rOiB0YXJnZXRSYW5rLCB3aWRnZXQgfSBhcyB7XG4gICAgICAgICAgICAgICAgYWN0dWFsUmFuazogbnVtYmVyO1xuICAgICAgICAgICAgICAgIHdpZGdldDogV2lkZ2V0TWFuaWZlc3Q7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghIWZvdW5kKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBsYWNlV2VGb3VuZCA9IGZvdW5kIGFzIHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH07XG4gICAgICAgICAgICAgIG5ld1dpbmRvd3NbcGxhY2VXZUZvdW5kLmFjdHVhbFJhbmtdLndpZGdldHMucHVzaChwbGFjZVdlRm91bmQud2lkZ2V0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRXaW5kb3dMYXlvdXQgPSAobWFuaWZlc3RHbG9iYWwud2luZG93c1tyYW5rXSA/PyB7fSkuZ3JpZD8ubGF5b3V0ID8/IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTDtcblxuICAgICAgICAgICAgICAvLyBzaSBub24gdHJvdXbDqSA6IG5vdXZlbGxlIHBhZ2UsIHByZW1pw6hyZSBwb3NpdGlvbiBzdWdnw6lyw6llXG4gICAgICAgICAgICAgIGNvbnN0IGZpcnN0UHJvcG9zZWRMYXlvdXQgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKHdpZGdldCwgY3VycmVudFdpbmRvd0xheW91dClbMF07XG5cbiAgICAgICAgICAgICAgbmV3V2luZG93cy5wdXNoKHsgd2lkZ2V0czogW2ZpcnN0UHJvcG9zZWRMYXlvdXQgPz8gd2lkZ2V0XSwgZ3JpZDogeyBsYXlvdXQ6IGN1cnJlbnRXaW5kb3dMYXlvdXQgfSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gY3JlYXRlIG5ldyB3aW5kb3cgdG8gd2VsY29tZSB0aGlzIHdpZGdldFxuICAgICAgICAgIG5ld1dpbmRvd3MucHVzaCh7XG4gICAgICAgICAgICAuLi5uZXdXaW5kb3dzW3JhbmtdLFxuICAgICAgICAgICAgd2lkZ2V0czogW3dpZGdldF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHsgbWFuaWZlc3Q6IHsgLi4ubWFuaWZlc3RHbG9iYWwsIHdpbmRvd3M6IG5ld1dpbmRvd3MgfSwgc2VsZWN0ZWRJZHMgfSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBtdWx0aVNuYWNrQmFyJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5tdWx0aVNuYWNrQmFyKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHRoaXMuc25hY2tCYXIub3BlbihhY3Rpb24ubWVzc2FnZSkpXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICByZWxhdW5jaEFmdGVyT3JkZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMucXVpY2tPcmRlciksXG4gICAgICBtYXAoKGFjdGlvbikgPT5cbiAgICAgICAgU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoe1xuICAgICAgICAgIGlkOiBhY3Rpb24uZGF0YXNvdXJjZUlkLFxuICAgICAgICAgIGV4Y2x1ZGVHZW86IHRydWUsXG4gICAgICAgICAgZnJvbTogJ0Rhc2hib2FyZEVmZmVjdHMucmVsYXVuY2hBZnRlck9yZGVyJCdcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcHJvcGFnYXRlR3JpZExheW91dCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSwgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KSksXG4gICAgICBtYXAoKFthY3Rpb24sIHJhbmssIHdpbmRvd01hbmlmZXN0XSkgPT4gRGFzaGJvYXJkQWN0aW9ucy5wcm9wYWdhdGVHcmlkTGF5b3V0KHsgbWFuaWZlc3Q6IHdpbmRvd01hbmlmZXN0LCByYW5rIH0pKVxuICAgIClcbiAgKTtcblxuICB0b2dnbGVFZGl0aW9uTW9kZUlmTm90TWFudWFsJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnNldEdyaWRMYXlvdXQpLFxuICAgICAgZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5sYXlvdXQgIT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMKSxcbiAgICAgIG1hcCgoKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnRvZ2dsZUVkaXRpb25Nb2RlKHsgZm9yY2U6IGZhbHNlIH0pKVxuICAgIClcbiAgKTtcblxuICBnZXRDYXBhYmlsaXR5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmdldENhcGFiaWxpdHkpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmNhcGFiaWxpdGllcykpLFxuICAgICAgZmlsdGVyKFxuICAgICAgICAoW2FjdGlvbiwgY2FwYWJpbGl0aWVzXSkgPT5cbiAgICAgICAgICAoISFjYXBhYmlsaXRpZXMgJiYgISFhY3Rpb24udXJsICYmICghY2FwYWJpbGl0aWVzW2FjdGlvbi51cmxdIHx8ICFjYXBhYmlsaXRpZXNbYWN0aW9uLnVybF0hLmRvYykpIHx8XG4gICAgICAgICAgISFhY3Rpb24uZm9yY2VcbiAgICAgICksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgX10pID0+XG4gICAgICAgIHRoaXMud21zU2VydmljZS5nZXRDYXBhYmlsaXRpZXMoYWN0aW9uLnVybCkucGlwZShcbiAgICAgICAgICBtYXAoKGNhcGFiaWxpdHkpID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlQ2FwYWJpbGl0eSh7IHVybDogYWN0aW9uLnVybCwgY2FwYWJpbGl0eSB9KSksXG4gICAgICAgICAgc3RhcnRXaXRoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlQ2FwYWJpbGl0eSh7IHVybDogYWN0aW9uLnVybCwgY2FwYWJpbGl0eTogbnVsbCB9KSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBnZXRXbXNGZWF0dXJlcyA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmdldFdtc0ZlYXR1cmVzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IGNvbWJpbmVMYXRlc3QoW29mKGFjdGlvbiksIHRoaXMud21zU2VydmljZS5nZXRXbXNGZWF0dXJlcyhhY3Rpb24udXJsKV0pKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwganNvbl0pID0+IHtcbiAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMuYWRkV21zRmVhdHVyZXMoe1xuICAgICAgICAgIGZlYXR1cmVzOiBqc29uLmZlYXR1cmVzLm1hcCgoZmVhdHVyZTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHtcbiAgICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgICAgIG9DbGFzczogYWN0aW9uLm9DbGFzcyxcbiAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGFjdGlvbi5jb29yZGluYXRlcyxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogT2JqZWN0LmtleXMoZmVhdHVyZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgICAgIC5tYXAoKHByb3BlcnR5KSA9PiAoeyBrZXk6IHByb3BlcnR5LCB2YWx1ZTogZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSB9KSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwcm9wKSA9PiAhIXByb3AudmFsdWUpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjb21wb25lbnRJZDogYWN0aW9uLmNvbXBvbmVudElkXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgZ2V0V2ZzRmVhdHVyZXNGb3JQb2ludFN0YWNrID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZ2V0V2ZzRmVhdHVyZXNGb3JQb2ludFN0YWNrVG9vbHRpcHMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gY29tYmluZUxhdGVzdChbb2YoYWN0aW9uKSwgdGhpcy53bXNTZXJ2aWNlLmdldFdtc0ZlYXR1cmVzKGFjdGlvbi51cmwpXSkpLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHdtc0pzb25dKSA9PiB7XG4gICAgICAgIC8vIGNoZWNrIGlmIGRhdGEgaXMgYWN0dWFsbHkgYSBzdGFjayBvZiBwb2ludHNcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHdtc0pzb24uZmVhdHVyZXNbMF0gJiZcbiAgICAgICAgICB3bXNKc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMuY291bnQgJiZcbiAgICAgICAgICB3bXNKc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMuY291bnR1bmlxdWUgJiZcbiAgICAgICAgICB3bXNKc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMuY291bnQgPiAxICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50dW5pcXVlID09PSAxXG4gICAgICAgICkge1xuICAgICAgICAgIGxldCBlbnZCQk9YQ29vcmRzOiBudW1iZXJbXSA9IFsuLi53bXNKc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMuZW52QkJPWC5tYXRjaEFsbCgvXFxkKy5cXGQrL2cpXS5tYXAoXG4gICAgICAgICAgICAobSkgPT4gbVswXVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMud21zU2VydmljZVxuICAgICAgICAgICAgLmdldFdmc0ZlYXR1cmVzKGFjdGlvbi51cmwsIGVudkJCT1hDb29yZHMpXG4gICAgICAgICAgICAucGlwZShtYXAoKHdmc0pzb24pID0+ICh7IGFjdGlvbiwganNvbjogd2ZzSnNvbiB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIGRhdGEgaXMgbm90IGEgc3RhY2sganVzdCBhZGQgZmVhdHVyZXMgd2l0aG91dCBjYWxsaW5nIHdmcyBzZXJ2aWNlXG4gICAgICAgIHJldHVybiBvZih7IGFjdGlvbiwganNvbjogd21zSnNvbiB9KTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCh7IGFjdGlvbiwganNvbiB9KSA9PlxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmFkZFdtc0ZlYXR1cmVzKHtcbiAgICAgICAgICBmZWF0dXJlczoganNvbi5mZWF0dXJlcy5tYXAoKGZlYXR1cmU6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBmZWF0dXJlLmlkLFxuICAgICAgICAgICAgb0NsYXNzOiBhY3Rpb24ub0NsYXNzLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGFjdGlvbi5jb29yZGluYXRlcyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IE9iamVjdC5rZXlzKGZlYXR1cmUucHJvcGVydGllcylcbiAgICAgICAgICAgICAgLm1hcCgocHJvcGVydHkpID0+ICh7IGtleTogcHJvcGVydHksIHZhbHVlOiBmZWF0dXJlLnByb3BlcnRpZXNbcHJvcGVydHldIH0pKVxuICAgICAgICAgICAgICAuZmlsdGVyKChwcm9wKSA9PiAhIXByb3AudmFsdWUpXG4gICAgICAgICAgfSkpLFxuICAgICAgICAgIGNvbXBvbmVudElkOiBhY3Rpb24uY29tcG9uZW50SWRcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB3aGlsZSBmZXRjaGluZyBXRlMgZmVhdHVyZXMnLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBvZihEYXNoYm9hcmRBY3Rpb25zLmFkZFdtc0ZlYXR1cmVzKHsgZmVhdHVyZXM6IFtdLCBjb21wb25lbnRJZDogJ2Vycm9yJyB9KSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBhZGRNYW5pZmVzdE1ldGFkYXRhID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuYWRkTWFuaWZlc3RNZXRhZGF0YSksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5hZGRNZXRhZGF0YShhY3Rpb24ucHJlc2VudGF0aW9uSWQsIGFjdGlvbi5tZXRhZGF0YUlkLCBhY3Rpb24udmFsdWUpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LnRvb2xib3gubWFuaWZlc3Quc2F2ZUVycm9yQ29kZS5TQVZFX01FVEFEQVRBJywge1xuICAgICAgICAgICAgICAgICAgY29kZTogZXJyb3Iuc3RhdHVzXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkZWxldGVNYW5pZmVzdE1ldGFkYXRhJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRlbGV0ZU1hbmlmZXN0TWV0YWRhdGEpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2VcbiAgICAgICAgICAuZGVsZXRlTWV0YWRhdGEoYWN0aW9uLnByZXNlbnRhdGlvbklkLCBhY3Rpb24ubWV0YWRhdGFJZClcbiAgICAgICAgICAucGlwZShtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxvYWRQcmVzZW50YXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubG9hZFByZXNlbnRhdGlvbiksXG4gICAgICB0YXAoKCkgPT5cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHtcbiAgICAgICAgICAgIG1hbmlmZXN0OiB7IHdpbmRvd3M6IFtdIH0sXG4gICAgICAgICAgICBzZWxlY3RlZElkczogW11cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgdGFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICAgICAgcHJlc2VudGF0aW9uOiBhY3Rpb24ucHJlc2VudGF0aW9uLFxuICAgICAgICAgICAgdmlld01vZGU6IGFjdGlvbi52aWV3TW9kZVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0YXAoKGFjdGlvbikgPT4gdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUoYWN0aW9uLnByZXNlbnRhdGlvbi5uYW1lKSksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLnByZXNlbnRhdGlvbi5pZCkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgobWFuaWZlc3QpID0+IFtcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgICBtYW5pZmVzdCxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJZHM6IFtdLFxuICAgICAgICAgICAgICBtYW5pZmVzdElkOiBhY3Rpb24ucHJlc2VudGF0aW9uLmlkXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuc2V0SW5pdGlhbFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgICAgIGluaXRpYWw6IGFjdGlvbi52aWV3TW9kZSA9PT0gVmlld01vZGUuQ09OU1VMVCA/IHVuZGVmaW5lZCA6IG1hbmlmZXN0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGlzcGxheU9wdGlvbnMoe1xuICAgICAgICAgICAgICBtb2RlOiBhY3Rpb24udmlld01vZGVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5mb2xsb3dNYW5pZmVzdFJvdXRlKClcbiAgICAgICAgICBdKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGFzaGJvYXJkSW5pdFNlcnZpY2U6IERhc2hib2FyZEluaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIG1hbmlmZXN0U2VydmljZTogTWFuaWZlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBQcnlUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBQcnlTbmFja2JhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlZnJlc2hTZXJ2aWNlOiBSZWZyZXNoU2VydmljZSxcbiAgICBwcml2YXRlIHRvb2xib3hNYW5pZmVzdFNlcnZpY2U6IFRvb2xib3hNYW5pZmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBidXNTZXJ2aWNlOiBCdXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHByeURpYWxvZzogUHJ5RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHdtc1NlcnZpY2U6IFdtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB3aWRnZXRGYWN0b3J5U2VydmljZTogV2lkZ2V0RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpMThuU2VydmljZTogUHJ5STE4blNlcnZpY2VcbiAgKSB7XG4gICAgZGFzaGJvYXJkSW5pdFNlcnZpY2UuaW5pdCgpO1xuICAgIHJlZnJlc2hTZXJ2aWNlLnN0YXJ0KCk7XG4gIH1cbn1cbiJdfQ==