@sumaris-net/ngx-components 18.0.10 → 18.1.1

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 (263) hide show
  1. package/doc/changelog.md +4 -0
  2. package/esm2022/src/app/admin/admin-routing.module.mjs +5 -5
  3. package/esm2022/src/app/admin/admin.module.mjs +5 -5
  4. package/esm2022/src/app/admin/services/person.service.mjs +4 -4
  5. package/esm2022/src/app/admin/services/validator/person.validator.mjs +4 -4
  6. package/esm2022/src/app/admin/users/users.mjs +4 -4
  7. package/esm2022/src/app/admin/users/users.module.mjs +5 -5
  8. package/esm2022/src/app/core/about/about.modal.mjs +4 -4
  9. package/esm2022/src/app/core/about/about.module.mjs +5 -5
  10. package/esm2022/src/app/core/account/account.module.mjs +5 -5
  11. package/esm2022/src/app/core/account/account.page.mjs +4 -4
  12. package/esm2022/src/app/core/account/new-token.form.mjs +4 -4
  13. package/esm2022/src/app/core/account/new-token.modal.mjs +4 -4
  14. package/esm2022/src/app/core/account/password/change-password.form.mjs +4 -4
  15. package/esm2022/src/app/core/account/password/change-password.module.mjs +5 -5
  16. package/esm2022/src/app/core/account/password/change-password.page.mjs +4 -4
  17. package/esm2022/src/app/core/account/token.table.mjs +4 -4
  18. package/esm2022/src/app/core/auth/auth.form.mjs +4 -4
  19. package/esm2022/src/app/core/auth/auth.modal.mjs +4 -4
  20. package/esm2022/src/app/core/auth/auth.module.mjs +5 -5
  21. package/esm2022/src/app/core/auth/reset-password.modal.mjs +4 -4
  22. package/esm2022/src/app/core/core.module.mjs +5 -5
  23. package/esm2022/src/app/core/core.testing.module.mjs +5 -5
  24. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +5 -5
  25. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +4 -4
  26. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +4 -4
  27. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +5 -5
  28. package/esm2022/src/app/core/form/entity/editor.class.mjs +4 -4
  29. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +4 -4
  30. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +4 -4
  31. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +4 -4
  32. package/esm2022/src/app/core/form/entity/entity.module.mjs +5 -5
  33. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +4 -4
  34. package/esm2022/src/app/core/form/form-container.class.mjs +4 -4
  35. package/esm2022/src/app/core/form/form.class.mjs +4 -4
  36. package/esm2022/src/app/core/form/form.module.mjs +5 -5
  37. package/esm2022/src/app/core/form/list/list.form.mjs +4 -4
  38. package/esm2022/src/app/core/form/list/list.module.mjs +5 -5
  39. package/esm2022/src/app/core/form/properties/properties.form.mjs +4 -4
  40. package/esm2022/src/app/core/form/properties/properties.module.mjs +5 -5
  41. package/esm2022/src/app/core/form/properties/properties.table.mjs +7 -7
  42. package/esm2022/src/app/core/form/properties/property.validator.mjs +4 -4
  43. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +4 -4
  44. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +5 -5
  45. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +4 -4
  46. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +5 -5
  47. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +4 -4
  48. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +5 -5
  49. package/esm2022/src/app/core/form/username/username.form.mjs +4 -4
  50. package/esm2022/src/app/core/form/username/username.module.mjs +5 -5
  51. package/esm2022/src/app/core/graphql/graphql.module.mjs +5 -5
  52. package/esm2022/src/app/core/graphql/graphql.service.mjs +4 -4
  53. package/esm2022/src/app/core/home/home.mjs +5 -5
  54. package/esm2022/src/app/core/home/home.module.mjs +5 -5
  55. package/esm2022/src/app/core/icon/icon.component.mjs +4 -4
  56. package/esm2022/src/app/core/icon/icon.module.mjs +5 -5
  57. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +4 -4
  58. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +5 -5
  59. package/esm2022/src/app/core/menu/menu.component.mjs +4 -4
  60. package/esm2022/src/app/core/menu/menu.module.mjs +5 -5
  61. package/esm2022/src/app/core/menu/menu.service.mjs +4 -4
  62. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +4 -4
  63. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +4 -4
  64. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +4 -4
  65. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +5 -5
  66. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +4 -4
  67. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +5 -5
  68. package/esm2022/src/app/core/peer/select-peer.modal.mjs +4 -4
  69. package/esm2022/src/app/core/peer/select-peer.module.mjs +5 -5
  70. package/esm2022/src/app/core/register/register-confirm.page.mjs +4 -4
  71. package/esm2022/src/app/core/register/register.form.mjs +4 -4
  72. package/esm2022/src/app/core/register/register.modal.mjs +4 -4
  73. package/esm2022/src/app/core/register/register.module.mjs +5 -5
  74. package/esm2022/src/app/core/services/account.service.mjs +4 -4
  75. package/esm2022/src/app/core/services/auth-guard.service.mjs +4 -4
  76. package/esm2022/src/app/core/services/base-entity-service.class.mjs +4 -4
  77. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +4 -4
  78. package/esm2022/src/app/core/services/config.service.mjs +4 -4
  79. package/esm2022/src/app/core/services/crypto.service.mjs +4 -4
  80. package/esm2022/src/app/core/services/local-settings.service.mjs +4 -4
  81. package/esm2022/src/app/core/services/network.service.mjs +4 -4
  82. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +9 -9
  83. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +5 -5
  84. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +5 -5
  85. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +5 -5
  86. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +4 -4
  87. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +9 -9
  88. package/esm2022/src/app/core/services/platform.service.mjs +4 -4
  89. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +4 -4
  90. package/esm2022/src/app/core/services/testing/referential.validator.mjs +4 -4
  91. package/esm2022/src/app/core/services/validator/account.validator.mjs +4 -4
  92. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +4 -4
  93. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +4 -4
  94. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +4 -4
  95. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +4 -4
  96. package/esm2022/src/app/core/settings/settings.module.mjs +5 -5
  97. package/esm2022/src/app/core/settings/settings.page.mjs +4 -4
  98. package/esm2022/src/app/core/table/async-table.class.mjs +4 -4
  99. package/esm2022/src/app/core/table/column/actions-column.component.mjs +4 -4
  100. package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +4 -4
  101. package/esm2022/src/app/core/table/column/row-field.component.mjs +4 -4
  102. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +4 -4
  103. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +4 -4
  104. package/esm2022/src/app/core/table/memory-table.class.mjs +4 -4
  105. package/esm2022/src/app/core/table/table-select-columns.component.mjs +4 -4
  106. package/esm2022/src/app/core/table/table.class.mjs +4 -4
  107. package/esm2022/src/app/core/table/table.module.mjs +5 -5
  108. package/esm2022/src/app/core/table/table.pipes.mjs +10 -10
  109. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +4 -4
  110. package/esm2022/src/app/core/table/testing/table.testing.mjs +4 -4
  111. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +5 -5
  112. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +4 -4
  113. package/esm2022/src/app/core/table/testing/table2.testing.mjs +4 -4
  114. package/esm2022/src/app/shared/audio/audio.mjs +4 -4
  115. package/esm2022/src/app/shared/audio/audio.testing.mjs +4 -4
  116. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +5 -5
  117. package/esm2022/src/app/shared/capacitor/keyboard.mjs +4 -4
  118. package/esm2022/src/app/shared/debug/debug.component.mjs +4 -4
  119. package/esm2022/src/app/shared/debug/debug.module.mjs +5 -5
  120. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +4 -4
  121. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +4 -4
  122. package/esm2022/src/app/shared/directives/directives.module.mjs +5 -5
  123. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +4 -4
  124. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +4 -4
  125. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +4 -4
  126. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +4 -4
  127. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +5 -5
  128. package/esm2022/src/app/shared/file/file.service.mjs +4 -4
  129. package/esm2022/src/app/shared/form/field.component.mjs +4 -4
  130. package/esm2022/src/app/shared/form/loading-spinner.mjs +4 -4
  131. package/esm2022/src/app/shared/gesture/gesture-config.mjs +4 -4
  132. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +4 -4
  133. package/esm2022/src/app/shared/help/help.modal.mjs +4 -4
  134. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +4 -4
  135. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +4 -4
  136. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +5 -5
  137. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +4 -4
  138. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +5 -5
  139. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +4 -4
  140. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +4 -4
  141. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +5 -5
  142. package/esm2022/src/app/shared/image/image.module.mjs +5 -5
  143. package/esm2022/src/app/shared/image/image.service.mjs +4 -4
  144. package/esm2022/src/app/shared/logging/logging-service.class.mjs +4 -4
  145. package/esm2022/src/app/shared/logging/logging-service.module.mjs +5 -5
  146. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +4 -4
  147. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +5 -5
  148. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +4 -4
  149. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +4 -4
  150. package/esm2022/src/app/shared/material/badge/badge.module.mjs +5 -5
  151. package/esm2022/src/app/shared/material/badge/badge.test.mjs +4 -4
  152. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +5 -5
  153. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +4 -4
  154. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +4 -4
  155. package/esm2022/src/app/shared/material/chips/chips.module.mjs +5 -5
  156. package/esm2022/src/app/shared/material/chips/material.chips.mjs +4 -4
  157. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +4 -4
  158. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +5 -5
  159. package/esm2022/src/app/shared/material/datetime/material.date.mjs +4 -4
  160. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +4 -4
  161. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +4 -4
  162. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +4 -4
  163. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +4 -4
  164. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +4 -4
  165. package/esm2022/src/app/shared/material/duration/duration.module.mjs +5 -5
  166. package/esm2022/src/app/shared/material/duration/material.duration.mjs +4 -4
  167. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +4 -4
  168. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +4 -4
  169. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +5 -5
  170. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +4 -4
  171. package/esm2022/src/app/shared/material/material.module.mjs +5 -5
  172. package/esm2022/src/app/shared/material/material.testing.module.mjs +5 -5
  173. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +4 -4
  174. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +4 -4
  175. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +4 -4
  176. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +5 -5
  177. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +4 -4
  178. package/esm2022/src/app/shared/material/testing/common.test.mjs +4 -4
  179. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +4 -4
  180. package/esm2022/src/app/shared/material/text/text-form.component.mjs +4 -4
  181. package/esm2022/src/app/shared/material/text/text-form.module.mjs +5 -5
  182. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +4 -4
  183. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +5 -5
  184. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +4 -4
  185. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +4 -4
  186. package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +5 -5
  187. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +28 -28
  188. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +4 -4
  189. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +4 -4
  190. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +5 -5
  191. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +7 -7
  192. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +5 -5
  193. package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +5 -5
  194. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +5 -5
  195. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +4 -4
  196. package/esm2022/src/app/shared/pipes/form.pipes.mjs +22 -22
  197. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +5 -5
  198. package/esm2022/src/app/shared/pipes/html.pipes.mjs +7 -7
  199. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +10 -10
  200. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +13 -13
  201. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +4 -4
  202. package/esm2022/src/app/shared/pipes/math.pipes.mjs +13 -13
  203. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +4 -4
  204. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +5 -5
  205. package/esm2022/src/app/shared/pipes/pipes.module.mjs +5 -5
  206. package/esm2022/src/app/shared/pipes/property.pipes.mjs +15 -15
  207. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +22 -22
  208. package/esm2022/src/app/shared/pipes/string.pipes.mjs +31 -31
  209. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +9 -9
  210. package/esm2022/src/app/shared/pipes/types.pipes.mjs +16 -16
  211. package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +5 -5
  212. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +4 -4
  213. package/esm2022/src/app/shared/services/progress-bar.service.mjs +4 -4
  214. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +4 -4
  215. package/esm2022/src/app/shared/services/startable-service.class.mjs +4 -4
  216. package/esm2022/src/app/shared/services/translate-context.service.mjs +4 -4
  217. package/esm2022/src/app/shared/shared-routing.module.mjs +8 -8
  218. package/esm2022/src/app/shared/shared.module.mjs +5 -5
  219. package/esm2022/src/app/shared/shared.testing.module.mjs +5 -5
  220. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +4 -4
  221. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +5 -5
  222. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +5 -5
  223. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +5 -5
  224. package/esm2022/src/app/shared/storage/storage.service.mjs +4 -4
  225. package/esm2022/src/app/shared/testing/maskito.test.mjs +4 -4
  226. package/esm2022/src/app/shared/testing/observable.test.mjs +4 -4
  227. package/esm2022/src/app/shared/testing/tests.page.mjs +4 -4
  228. package/esm2022/src/app/shared/toast/toast.testing.mjs +4 -4
  229. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +5 -5
  230. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +4 -4
  231. package/esm2022/src/app/shared/toolbar/toolbar.mjs +4 -4
  232. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +5 -5
  233. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +4 -4
  234. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +5 -5
  235. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +4 -4
  236. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +4 -4
  237. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +4 -4
  238. package/esm2022/src/app/social/job/job.module.mjs +5 -5
  239. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +4 -4
  240. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +4 -4
  241. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +4 -4
  242. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +4 -4
  243. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +4 -4
  244. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +4 -4
  245. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +5 -5
  246. package/esm2022/src/app/social/message/message.form.mjs +4 -4
  247. package/esm2022/src/app/social/message/message.modal.mjs +4 -4
  248. package/esm2022/src/app/social/message/message.module.mjs +5 -5
  249. package/esm2022/src/app/social/message/message.service.mjs +4 -4
  250. package/esm2022/src/app/social/social.module.mjs +5 -5
  251. package/esm2022/src/app/social/social.testing.module.mjs +5 -5
  252. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +4 -4
  253. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +4 -4
  254. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +4 -4
  255. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +5 -5
  256. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +4 -4
  257. package/esm2022/src/app/social/user-event/user-event.module.mjs +5 -5
  258. package/esm2022/src/app/social/user-event/user-event.service.mjs +4 -4
  259. package/esm2022/src/environments/environment.loader.mjs +4 -4
  260. package/fesm2022/sumaris-net.ngx-components.mjs +1022 -1022
  261. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  262. package/package.json +11 -12
  263. package/src/assets/manifest.json +1 -1
@@ -500,10 +500,10 @@ export class AbstractUserEventService extends BaseGraphqlService {
500
500
  getLoadQueries() {
501
501
  return [this.queries.loadAll, this.queries.loadAllWithContent].filter(isNotNil);
502
502
  }
503
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AbstractUserEventService, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
504
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: AbstractUserEventService, usesInheritance: true, ngImport: i0 });
503
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AbstractUserEventService, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
504
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: AbstractUserEventService, usesInheritance: true, ngImport: i0 });
505
505
  }
506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AbstractUserEventService, decorators: [{
506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AbstractUserEventService, decorators: [{
507
507
  type: Directive
508
508
  }], ctorParameters: () => [{ type: i1.GraphqlService }, { type: i2.AccountService }, { type: i3.NetworkService }, { type: i4.TranslateService }, { type: undefined }] });
509
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC91c2VyLWV2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFXLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFXNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHM0YsT0FBTyxFQUFFLGtCQUFrQixFQUE2QixNQUFNLGdEQUFnRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7Ozs7OztBQUlwRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsa0JBQWtCLENBQUMsQ0FBQztBQTBFMUcsTUFBTSxPQUFnQix3QkFVcEIsU0FBUSxrQkFBNEI7SUFrQnhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFuQk8sT0FBTyxDQUFJO0lBQ1gsU0FBUyxDQUFhO0lBQ3RCLGFBQWEsQ0FBYTtJQUMxQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0Msd0JBQXdCLENBQWtD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QUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekYsQ0FBQztJQUVTLG1CQUFtQixDQUFDLE1BQVMsRUFBRSxNQUFTO1FBQ2hELFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVTLGNBQWM7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEYsQ0FBQzt1R0Fsa0JtQix3QkFBd0I7MkZBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEN0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0aW9uVG9rZW4sIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmV0Y2hQb2xpY3kgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IFNvY2lhbEVycm9yQ29kZXMgfSBmcm9tICcuLi9zb2NpYWwuZXJyb3JzJztcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JhcGhxbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJVXNlckV2ZW50LCBJVXNlckV2ZW50RmlsdGVyIH0gZnJvbSAnLi91c2VyLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7XG4gIEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zLFxuICBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsXG4gIEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyxcbiAgSUVudGl0aWVzU2VydmljZSxcbiAgTG9hZFJlc3VsdCxcbiAgUGFnZSxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCB0b051bWJlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmV0d29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlR3JhcGhxbFNlcnZpY2UsIEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2Jhc2UtZ3JhcGhxbC1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IEVudGl0eVV0aWxzIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RhdGVzJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBJU3RhcnRhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBNSU5JRllfRU5USVRZX0ZPUl9QT0QgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwvaW5kZXgnO1xuaW1wb3J0IHsgTXV0YWJsZVdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvYmFzZS1lbnRpdHktc2VydmljZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBBUFBfVVNFUl9FVkVOVF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElVc2VyRXZlbnRTZXJ2aWNlPGFueSwgYW55Pj4oJ1VzZXJFdmVudFNlcnZpY2UnKTtcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFVzZXJFdmVudExvYWRPcHRpb25zIGV4dGVuZHMgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMge1xuICB3aXRoQ29udGVudD86IGJvb2xlYW47IC8vIERlZmF1bHQgdG8gZmFsc2Vcbn1cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMge1xuICB3aXRoQ29udGVudD86IGJvb2xlYW47IC8vIERlZmF1bHQgdG8gZmFsc2Vcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudFF1ZXJpZXMge1xuICBsb2FkQWxsOiBhbnk7XG4gIGxvYWRBbGxXaXRoQ29udGVudDogYW55O1xuICBjb3VudD86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVXNlckV2ZW50TXV0YXRpb25zIHtcbiAgc2F2ZTogYW55O1xuICBtYXJrQXNSZWFkPzogYW55O1xuICBkZWxldGVCeUlkczogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyRXZlbnRTdWJzY3JpcHRpb25zIHtcbiAgbGlzdGVuQWxsQ2hhbmdlczogYW55O1xuICBsaXN0ZW5Db3VudENoYW5nZXM/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudExpc3RlbmVyPEUgZXh0ZW5kcyBJVXNlckV2ZW50PEUsIElEPiwgSUQgPSBudW1iZXI+IHtcbiAgYWNjZXB0OiAoRSkgPT4gYm9vbGVhbjtcbiAgb25SZWNlaXZlZD86IChFKSA9PiBQcm9taXNlPEU+IHwgRSB8IHVuZGVmaW5lZDtcbiAgb25SZWFkPzogKEUpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJFdmVudFNlcnZpY2VPcHRpb25zPFxuICBRIGV4dGVuZHMgSVVzZXJFdmVudFF1ZXJpZXMgPSBJVXNlckV2ZW50UXVlcmllcyxcbiAgTSBleHRlbmRzIElVc2VyRXZlbnRNdXRhdGlvbnMgPSBJVXNlckV2ZW50TXV0YXRpb25zLFxuICBTIGV4dGVuZHMgSVVzZXJFdmVudFN1YnNjcmlwdGlvbnMgPSBJVXNlckV2ZW50U3Vic2NyaXB0aW9ucyxcbj4gZXh0ZW5kcyBCYXNlR3JhcGhxbFNlcnZpY2VPcHRpb25zIHtcbiAgcXVlcmllczogUTtcbiAgbXV0YXRpb25zPzogUGFydGlhbDxNPjtcbiAgc3Vic2NyaXB0aW9ucz86IFBhcnRpYWw8Uz47XG4gIHdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeT86IE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudFNlcnZpY2U8XG4gIEUgZXh0ZW5kcyBJVXNlckV2ZW50PEUsIElEPixcbiAgRiBleHRlbmRzIElVc2VyRXZlbnRGaWx0ZXI8RSwgSUQ+LFxuICBJRCA9IG51bWJlcixcbiAgV08gZXh0ZW5kcyBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgPSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMsXG4gIExPIGV4dGVuZHMgVXNlckV2ZW50TG9hZE9wdGlvbnMgPSBVc2VyRXZlbnRMb2FkT3B0aW9ucyxcbj4gZXh0ZW5kcyBJRW50aXRpZXNTZXJ2aWNlPEUsIEYsIFdPPixcbiAgICBJU3RhcnRhYmxlU2VydmljZSB7XG4gIGNvdW50U3ViamVjdDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIGFkZChlbnRpdHk6IEUpOiBQcm9taXNlPEU+O1xuXG4gIGxvYWQoaWQ6IElELCBvcHRzPzogTE8pOiBQcm9taXNlPEU+O1xuXG4gIGNvdW50KGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGxpc3RlbkNvdW50Q2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kgfSk6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IFdPICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogT2JzZXJ2YWJsZTxFW10+O1xuXG4gIHNhdmUoZW50aXR5OiBFLCBvcHRpb25zPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zKTogUHJvbWlzZTxFPjtcblxuICBkZWxldGUoZW50aXR5OiBFKTogUHJvbWlzZTxhbnk+O1xuXG4gIG1hcmtBbGxBc1JlYWQoZW50aXRpZXM6IEVbXSk7XG5cbiAgcmVnaXN0ZXJMaXN0ZW5lcihsaXN0ZW5lcjogSVVzZXJFdmVudExpc3RlbmVyPEUsIElEPik7XG5cbiAgcmVzZXRDb3VudCgpO1xufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFVzZXJFdmVudFNlcnZpY2U8XG4gICAgRSBleHRlbmRzIElVc2VyRXZlbnQ8RSwgSUQsIGFueT4sXG4gICAgRiBleHRlbmRzIElVc2VyRXZlbnRGaWx0ZXI8RSwgSUQsIGFueT4sXG4gICAgSUQgPSBudW1iZXIsXG4gICAgV08gZXh0ZW5kcyBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgPSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMsXG4gICAgTE8gZXh0ZW5kcyBVc2VyRXZlbnRMb2FkT3B0aW9ucyA9IFVzZXJFdmVudExvYWRPcHRpb25zLFxuICAgIFEgZXh0ZW5kcyBJVXNlckV2ZW50UXVlcmllcyA9IElVc2VyRXZlbnRRdWVyaWVzLFxuICAgIE0gZXh0ZW5kcyBJVXNlckV2ZW50TXV0YXRpb25zID0gSVVzZXJFdmVudE11dGF0aW9ucyxcbiAgICBTIGV4dGVuZHMgSVVzZXJFdmVudFN1YnNjcmlwdGlvbnMgPSBJVXNlckV2ZW50U3Vic2NyaXB0aW9ucyxcbiAgPlxuICBleHRlbmRzIEJhc2VHcmFwaHFsU2VydmljZTxFLCBGLCBJRD5cbiAgaW1wbGVtZW50cyBJVXNlckV2ZW50U2VydmljZTxFLCBGLCBJRCwgV08sIExPPiwgT25EZXN0cm95XG57XG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyaWVzOiBRO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbXV0YXRpb25zOiBQYXJ0aWFsPE0+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogUGFydGlhbDxTPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb3VudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB3YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k6IE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k7XG4gIHByb3RlY3RlZCByZXNldENvdW50RGF0ZTogTW9tZW50O1xuICBwcm90ZWN0ZWQgbGlzdGVuZXJzOiBJVXNlckV2ZW50TGlzdGVuZXI8RSwgSUQ+W10gPSBbXTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfbGlzdGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgZ2V0IGNvdW50U3ViamVjdCgpOiBTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9jb3VudFN1YmplY3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG9wdGlvbnM6IFVzZXJFdmVudFNlcnZpY2VPcHRpb25zPFEsIE0sIFM+XG4gICkge1xuICAgIHN1cGVyKGdyYXBocWwsIG9wdGlvbnMpO1xuICAgIHRoaXMucXVlcmllcyA9IG9wdGlvbnMucXVlcmllcztcbiAgICB0aGlzLm11dGF0aW9ucyA9IG9wdGlvbnMubXV0YXRpb25zIHx8IDxQYXJ0aWFsPE0+Pnt9O1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IG9wdGlvbnMuc3Vic2NyaXB0aW9ucyB8fCA8UGFydGlhbDxTPj57fTtcbiAgICB0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9IG9wdGlvbnMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5IHx8ICd1cGRhdGUtY2FjaGUnO1xuICAgIHRoaXMuX2xvZ1ByZWZpeCA9ICdbdXNlci1ldmVudC1zZXJ2aWNlXSAnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBVcGRhdGUgY29tcG9uZW50IHdoZW4gcmVmcmVzaCBpcyBuZWVkICg9bG9naW4gZXZlbnRzKVxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgbWVyZ2UoXG4gICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dpbixcbiAgICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ291dCxcbiAgICAgICAgdGltZXIoMTAwMCkgLy8gU3RhcnRzIHdpdGggLSAgZmlyc3QgYXR0ZW1wdCBpZiBhY2NvdW50IGlzIHJlYWR5XG4gICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIC8vIFdhaXQgYWNjb3VudCBzZXJ2aWNlIHJlYWR5IChjYW4gYmUgcmVzdGFydGVkKVxuICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuYWNjb3VudFNlcnZpY2UucmVhZHkoKSksXG4gICAgICAgICAgbWFwKCgpID0+IHRoaXMuYWNjb3VudFNlcnZpY2UuaXNMb2dpbigpKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgobG9naW4pID0+IHtcbiAgICAgICAgICBpZiAobG9naW4pIHtcbiAgICAgICAgICAgIHRoaXMub25Mb2dpbigpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uTG9nb3V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBhYnN0cmFjdCBhc0ZpbHRlcihmaWx0ZXI6IFBhcnRpYWw8Rj4pOiBGO1xuXG4gIGFic3RyYWN0IGZyb21PYmplY3Qoc291cmNlOiBhbnkpOiBFO1xuXG4gIHdhdGNoQWxsKFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIHNpemU6IG51bWJlcixcbiAgICBzb3J0Qnk/OiBzdHJpbmcsXG4gICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgZmlsdGVyPzogUGFydGlhbDxGPixcbiAgICBvcHRpb25zPzogV09cbiAgKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PEU+PiB7XG4gICAgcmV0dXJuIHRoaXMud2F0Y2hQYWdlKDxQYWdlPnsgb2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24gfSwgZmlsdGVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHdhdGNoUGFnZShwYWdlOiBQYWdlLCBmaWx0ZXI/OiBQYXJ0aWFsPEY+LCBvcHRzPzogV08pOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8RT4+IHtcbiAgICBsZXQgbm93ID0gdGhpcy5fZGVidWcgJiYgRGF0ZS5ub3coKTtcbiAgICBpZiAoIWZpbHRlcikge1xuICAgICAgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgfVxuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUxvYWRpbmcgdXNlciBldmVudHMuLi5gLCBmaWx0ZXIpO1xuXG4gICAgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgLy8gRm9yY2UgcmVjaXBpZW50IHRvIGN1cnJlbnQgaXNzdWVyLCBpZiBub3QgYWRtaW4gYW5kIG5vdCBzcGVjaWZpZWRcbiAgICBpZiAoaXNFbXB0eUFycmF5KGZpbHRlcj8ucmVjaXBpZW50cykgfHwgIXRoaXMuYWNjb3VudFNlcnZpY2UuaXNBZG1pbigpKSB7XG4gICAgICBjb25zdCByZWNpcGllbnQgPSB0aGlzLmRlZmF1bHRSZWNpcGllbnQoKTtcbiAgICAgIGlmICghZmlsdGVyPy5yZWNpcGllbnRzPy5pbmNsdWRlcyhyZWNpcGllbnQpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW3VzZXItZXZlbnRzLXNlcnZpY2VdIEZvcmNlIHVzZXIgZXZlbnQgZmlsdGVyLnJlY2lwaWVudD0nICsgcmVjaXBpZW50KTtcbiAgICAgICAgZmlsdGVyLnJlY2lwaWVudHMgPSBbcmVjaXBpZW50XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB3aXRoQ29udGVudCA9IG9wdHM/LndpdGhDb250ZW50ID09PSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMubXV0YWJsZVdhdGNoUXVlcnk8TG9hZFJlc3VsdDxFPiwgeyBmaWx0ZXI6IGFueTsgcGFnZTogUGFnZSB9Pih7XG4gICAgICBxdWVyeU5hbWU6IHdpdGhDb250ZW50ID8gJ0xvYWRBbGxXaXRoQ29udGVudCcgOiAnTG9hZEFsbCcsXG4gICAgICBxdWVyeTogd2l0aENvbnRlbnQgPyB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhDb250ZW50IDogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgcGFnZToge1xuICAgICAgICAgIHNvcnRCeTogJ2NyZWF0aW9uRGF0ZScsXG4gICAgICAgICAgLi4ucGFnZSxcbiAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAocGFnZS5zb3J0RGlyZWN0aW9uIHx8ICdkZXNjJykudG9VcHBlckNhc2UoKSBhcyBTb3J0RGlyZWN0aW9uLFxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlciAmJiBmaWx0ZXIuYXNQb2RPYmplY3QoKSxcbiAgICAgIH0sXG4gICAgICBhcnJheUZpZWxkTmFtZTogJ2RhdGEnLFxuICAgICAgZXJyb3I6IHsgY29kZTogU29jaWFsRXJyb3JDb2Rlcy5MT0FEX1VTRVJfRVZFTlRTX0VSUk9SLCBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLkxPQURfVVNFUl9FVkVOVFNfRVJST1InIH0sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cz8uZmV0Y2hQb2xpY3kgfHwgJ2NhY2hlLWZpcnN0JyxcbiAgICAgIGluc2VydEZpbHRlckZuOiBmaWx0ZXIgJiYgZmlsdGVyLmFzRmlsdGVyRm4oKSxcbiAgICB9KS5waXBlKFxuICAgICAgbWVyZ2VNYXAoYXN5bmMgKHJlcykgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKChyZXM/LmRhdGEgfHwgW10pLm1hcCgodmFsdWUpID0+IHRoaXMucHJvY2Vzc1VzZXJFdmVudCh2YWx1ZSkpKTtcblxuICAgICAgICBpZiAobm93KSB7XG4gICAgICAgICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9JHtkYXRhLmxlbmd0aH0gdXNlciBldmVudHMgbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgICAgIG5vdyA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQWxsQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICAgICAgZGF0YSA9IEVudGl0eVV0aWxzLnNvcnQoZGF0YSwgcGFnZS5zb3J0QnksIHBhZ2Uuc29ydERpcmVjdGlvbik7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gPExvYWRSZXN1bHQ8RT4+e1xuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgdG90YWw6IHRvTnVtYmVyKHJlcz8udG90YWwsIGRhdGEubGVuZ3RoKSxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgZmV0Y2ggbW9yZSBjYXBhYmlsaXR5LCBpZiB0b3RhbCB3YXMgZmV0Y2hlZFxuICAgICAgICBpZiAoaXNOb3ROaWwocmVzLnRvdGFsKSkge1xuICAgICAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSAocGFnZS5vZmZzZXQgfHwgMCkgKyBkYXRhLmxlbmd0aDtcbiAgICAgICAgICBpZiAobmV4dE9mZnNldCA8IHJlc3VsdC50b3RhbCkge1xuICAgICAgICAgICAgcmVzdWx0LmZldGNoTW9yZSA9IChfKSA9PlxuICAgICAgICAgICAgICB0aGlzLmxvYWRQYWdlKHsgLi4ucGFnZSwgb2Zmc2V0OiBuZXh0T2Zmc2V0IH0sIGZpbHRlciwgeyAuLi5vcHRzLCBmZXRjaFBvbGljeTogPEZldGNoUG9saWN5Piduby1jYWNoZScgfSBhcyB1bmtub3duIGFzIExPKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZFBhZ2UocGFnZTogUGFnZSwgZmlsdGVyPzogUGFydGlhbDxGPiwgb3B0cz86IExPKTogUHJvbWlzZTxMb2FkUmVzdWx0PEU+PiB7XG4gICAgY29uc3Qgbm93ID0gdGhpcy5fZGVidWcgJiYgRGF0ZS5ub3coKTtcbiAgICBpZiAoIWZpbHRlcikgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG5cbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Mb2FkaW5nIHVzZXIgZXZlbnRzLi4uYCwgZmlsdGVyKTtcblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIC8vIEZvcmNlIHJlY2lwaWVudCB0byBjdXJyZW50IGlzc3VlciwgaWYgbm90IGFkbWluIGFuZCBub3Qgc3BlY2lmaWVkXG4gICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXI/LnJlY2lwaWVudHMpIHx8ICF0aGlzLmFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKSkge1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gdGhpcy5kZWZhdWx0UmVjaXBpZW50KCk7XG4gICAgICBpZiAoIWZpbHRlcj8ucmVjaXBpZW50cz8uaW5jbHVkZXMocmVjaXBpZW50KSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1t1c2VyLWV2ZW50cy1zZXJ2aWNlXSBGb3JjZSB1c2VyIGV2ZW50IGZpbHRlci5yZWNpcGllbnQ9JyArIHJlY2lwaWVudCk7XG4gICAgICAgIGZpbHRlci5yZWNpcGllbnRzID0gW3JlY2lwaWVudF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSBvcHRzPy53aXRoQ29udGVudCA9PT0gdHJ1ZTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTxMb2FkUmVzdWx0PEU+Pih7XG4gICAgICBxdWVyeTogd2l0aENvbnRlbnQgPyB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhDb250ZW50IDogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgcGFnZToge1xuICAgICAgICAgIHNvcnRCeTogJ2NyZWF0aW9uRGF0ZScsXG4gICAgICAgICAgLi4ucGFnZSxcbiAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAocGFnZS5zb3J0RGlyZWN0aW9uIHx8ICdkZXNjJykudG9VcHBlckNhc2UoKSBhcyBTb3J0RGlyZWN0aW9uLFxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlciAmJiBmaWx0ZXIuYXNQb2RPYmplY3QoKSxcbiAgICAgIH0sXG4gICAgICBlcnJvcjogeyBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLkxPQURfVVNFUl9FVkVOVFNfRVJST1IsIG1lc3NhZ2U6ICdTT0NJQUwuRVJST1IuTE9BRF9VU0VSX0VWRU5UU19FUlJPUicgfSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzPy5mZXRjaFBvbGljeSxcbiAgICB9KTtcbiAgICBsZXQgZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKChyZXM/LmRhdGEgfHwgW10pLm1hcCgodmFsdWUpID0+IHRoaXMucHJvY2Vzc1VzZXJFdmVudCh2YWx1ZSkpKTtcblxuICAgIGlmIChub3cpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fSR7ZGF0YS5sZW5ndGh9IHVzZXIgZXZlbnRzIGxvYWRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcblxuICAgIC8vIE11c3QgcmUtb3JkZXIgYmVjYXVzZSBvZiBsaXN0ZW5BbGxDaGFuZ2VzIHJlc3VsdCB3aWxsIGFkZCBuZXcgZXZlbnQgYXQgdGhlIGVuZFxuICAgIGRhdGEgPSBFbnRpdHlVdGlscy5zb3J0KGRhdGEsIHBhZ2Uuc29ydEJ5LCBwYWdlLnNvcnREaXJlY3Rpb24pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gPExvYWRSZXN1bHQ8RT4+e1xuICAgICAgZGF0YSxcbiAgICAgIHRvdGFsOiB0b051bWJlcihyZXM/LnRvdGFsLCBkYXRhLmxlbmd0aCksXG4gICAgfTtcblxuICAgIC8vIEFkZCBmZXRjaCBtb3JlIGNhcGFiaWxpdHksIGlmIHRvdGFsIHdhcyBmZXRjaGVkXG4gICAgaWYgKGlzTm90TmlsKHJlcy50b3RhbCkpIHtcbiAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSAocGFnZS5vZmZzZXQgfHwgMCkgKyBkYXRhLmxlbmd0aDtcbiAgICAgIGlmIChuZXh0T2Zmc2V0IDwgcmVzdWx0LnRvdGFsKSB7XG4gICAgICAgIHJlc3VsdC5mZXRjaE1vcmUgPSAoXykgPT4gdGhpcy5sb2FkUGFnZSh7IC4uLnBhZ2UsIG9mZnNldDogbmV4dE9mZnNldCB9LCBmaWx0ZXIsIG9wdHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBsb2FkKGlkOiBJRCwgb3B0cz86IExPKTogUHJvbWlzZTxFPiB7XG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgZmlsdGVyLmluY2x1ZGVkSWRzID0gW2lkXTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMubG9hZFBhZ2UoeyBvZmZzZXQ6IDAsIHNpemU6IDEgfSwgZmlsdGVyLCBvcHRzKTtcbiAgICByZXR1cm4gZGF0YSAmJiBkYXRhWzBdO1xuICB9XG5cbiAgYXN5bmMgYWRkKGVudGl0eTogRSk6IFByb21pc2U8RT4ge1xuICAgIGVudGl0eSA9IGF3YWl0IHRoaXMucHJvY2Vzc1VzZXJFdmVudChlbnRpdHkpO1xuXG4gICAgaWYgKCFlbnRpdHkpIHJldHVybjsgLy8gUmVqZWN0ZWRcblxuICAgIGNvbnN0IHdpdGhDb250ZW50ID0gISFlbnRpdHkuY29udGVudDtcblxuICAgIC8vIEFkZCB1c2VyIGV2ZW50IGxvY2FsbHlcbiAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICBpZiAod2l0aENvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXModGhpcy5ncmFwaHFsLmNhY2hlLCB7XG4gICAgICAgICAgcXVlcnk6IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQsXG4gICAgICAgICAgZGF0YTogZW50aXR5LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5zZXJ0SW50b011dGFibGVDYWNoZWRRdWVyaWVzKHRoaXMuZ3JhcGhxbC5jYWNoZSwge1xuICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5lbnRpdHksXG4gICAgICAgICAgY29udGVudDogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjb3VudFxuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KHRoaXMuX2NvdW50U3ViamVjdC52YWx1ZSArIDEpO1xuXG4gICAgLy8gQWRkIGlkXG4gICAgLy9jb25zb2xlLmxvZygnVE9ETzogYWRkIGFuIElEIHRvIHVzZXIgZXZlbnQgPycpO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGFzeW5jIGNvdW50KGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBpZiAoIXRoaXMucXVlcmllcz8uY291bnQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9UXVlcnkgJ2NvdW50JyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghZmlsdGVyKSBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcbiAgICAvLyBBcHBseSBsYXN0IHJlc2V0IGRhdGUgYXMgc3RhcnQgZGF0ZVxuICAgIGZpbHRlci5zdGFydERhdGUgPSB0aGlzLnJlc2V0Q291bnREYXRlO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9Q291bnRpbmcgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IHRvdGFsOiBudW1iZXIgfT4oe1xuICAgICAgcXVlcnk6IHRoaXMucXVlcmllcy5jb3VudCxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBmaWx0ZXI6IGZpbHRlci5hc1BvZE9iamVjdCgpLFxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuQ09VTlRfVVNFUl9FVkVOVF9FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5DT1VOVF9VU0VSX0VWRU5UX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnM/LmZldGNoUG9saWN5IHx8ICduZXR3b3JrLW9ubHknLFxuICAgIH0pO1xuICAgIHJldHVybiByZXMudG90YWw7XG4gIH1cblxuICBsaXN0ZW5Db3VudENoYW5nZXMoZmlsdGVyOiBQYXJ0aWFsPEY+LCBvcHRpb25zPzogV08gJiB7IGludGVydmFsPzogbnVtYmVyOyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5IH0pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zPy5saXN0ZW5Db3VudENoYW5nZXMpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9U3Vic2NyaXB0aW9uIHF1ZXJ5ICdsaXN0ZW5Db3VudENoYW5nZXMnIG5vdCBwcm92aWRlZCwgc2tpcC5gKTtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRGVmYXVsdCA9ICFmaWx0ZXI7XG4gICAgaWYgKGlzRGVmYXVsdCkgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgLy8gQXBwbHkgbGFzdCByZXNldCBkYXRlIGFzIHN0YXJ0IGRhdGVcbiAgICBmaWx0ZXIuc3RhcnREYXRlID0gdGhpcy5yZXNldENvdW50RGF0ZTtcbiAgICBmaWx0ZXIuZXhjbHVkZVJlYWQgPSB0cnVlO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9W1dTXSBMaXN0ZW5pbmcgY291bnQgY2hhbmdlcyBmb3IgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIHJldHVybiB0aGlzLmdyYXBocWxcbiAgICAgIC5zdWJzY3JpYmU8eyB0b3RhbDogbnVtYmVyIH0sIHsgZmlsdGVyOiBhbnk7IGludGVydmFsOiBudW1iZXIgfT4oe1xuICAgICAgICBxdWVyeTogdGhpcy5zdWJzY3JpcHRpb25zLmxpc3RlbkNvdW50Q2hhbmdlcyxcbiAgICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnM/LmZldGNoUG9saWN5LFxuICAgICAgICB2YXJpYWJsZXM6IHsgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKSwgaW50ZXJ2YWw6IHRvTnVtYmVyKG9wdGlvbnM/LmludGVydmFsLCAxMCkgfSxcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUixcbiAgICAgICAgICBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUicsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoeyB0b3RhbCB9KSA9PiB7XG4gICAgICAgICAgaWYgKHRvdGFsICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBuZXcgdXNlciBldmVudHMgY291bnQ6YCwgdG90YWwpO1xuICAgICAgICAgIC8vIHVwZGF0ZSBjb3VudFxuICAgICAgICAgIGlmIChpc0RlZmF1bHQpIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KHRvdGFsKTtcblxuICAgICAgICAgIHJldHVybiB0b3RhbDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogUGFydGlhbDxGPiwgb3B0cz86IFdPICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTsgdG9FbnRpdHk/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEVbXT4ge1xuICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zPy5saXN0ZW5BbGxDaGFuZ2VzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fVN1YnNjcmlwdGlvbiBxdWVyeSAnbGlzdGVuQWxsQ2hhbmdlcycgbm90IHByb3ZpZGVkLCBza2lwLmApO1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuXG4gICAgaWYgKCFmaWx0ZXIpIGZpbHRlciA9IHRoaXMuZGVmYXVsdEZpbHRlcigpO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGNvbnN0IHdpdGhDb250ZW50ID0gb3B0cz8ud2l0aENvbnRlbnQgPT09IHRydWU7XG5cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVtXU10gTGlzdGVuaW5nIGNoYW5nZXMgZm9yIHVzZXIgZXZlbnRzIHdpdGggZmlsdGVyOmAsIGZpbHRlcik7XG5cbiAgICByZXR1cm4gdGhpcy5ncmFwaHFsXG4gICAgICAuc3Vic2NyaWJlPHsgZGF0YTogYW55W10gfSwgeyBmaWx0ZXI6IGFueTsgaW50ZXJ2YWw6IG51bWJlciB9Pih7XG4gICAgICAgIHF1ZXJ5OiB0aGlzLnN1YnNjcmlwdGlvbnMubGlzdGVuQWxsQ2hhbmdlcyxcbiAgICAgICAgZmV0Y2hQb2xpY3k6IG9wdHM/LmZldGNoUG9saWN5LFxuICAgICAgICB2YXJpYWJsZXM6IHsgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKSwgaW50ZXJ2YWw6IHRvTnVtYmVyKG9wdHM/LmludGVydmFsLCAxMCkgfSxcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUixcbiAgICAgICAgICBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUicsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKGFzeW5jICh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAgIGlmIChkYXRhICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBuZXcgdXNlciBldmVudHM6YCwgZGF0YSk7XG5cbiAgICAgICAgICAvLyBVcGRhdGUgY2FjaGUgKHdpbGwgdXBkYXRlIHdhdGNoQWxsIHF1ZXJpZXMpXG4gICAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXModGhpcy5ncmFwaHFsLmNhY2hlLCB7XG4gICAgICAgICAgICAgIHF1ZXJ5OiB3aXRoQ29udGVudCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvbnZlcnQgdG8gZW50aXRpZXNcbiAgICAgICAgICBpZiAoIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbCgoZGF0YSB8fCBbXSkubWFwKCh2YWx1ZSkgPT4gdGhpcy5wcm9jZXNzVXNlckV2ZW50KHZhbHVlKSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGVudGl0eTogRSk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCFlbnRpdHkpIHJldHVybjsgLy8gc2tpcFxuICAgIGF3YWl0IHRoaXMuZGVsZXRlQWxsKFtlbnRpdHldKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFsbChlbnRpdGllczogRVtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBpZHMgPSBlbnRpdGllcyAmJiBlbnRpdGllcy5tYXAoKHQpID0+IHQuaWQpO1xuICAgIGlmIChpc0VtcHR5QXJyYXkoaWRzKSkgcmV0dXJuOyAvLyBzdG9wLCBpZiBub3RoaW5nIGVsc2UgdG8gZG9cblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1EZWxldGluZyBldmVudHMuLi4gaWRzOmAsIGlkcyk7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPGFueT4oe1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLmRlbGV0ZUJ5SWRzLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlkcyxcbiAgICAgIH0sXG4gICAgICB1cGRhdGU6IChjYWNoZSkgPT4ge1xuICAgICAgICAvLyBSZW1vdmUgZnJvbSBjYWNoZVxuICAgICAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tTXV0YWJsZUNhY2hlZFF1ZXJpZXNCeUlkcyhjYWNoZSwge1xuICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgaWRzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1FdmVudHMgZGVsZXRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzYXZlKGVudGl0eTogRSwgb3B0aW9ucz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8RT4ge1xuICAgIHRoaXMuZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gaW50byBqc29uXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSAhIWVudGl0eS5jb250ZW50O1xuICAgIGNvbnN0IGpzb24gPSBlbnRpdHkuYXNPYmplY3QoTUlOSUZZX0VOVElUWV9GT1JfUE9EKTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1TYXZpbmcgdXNlciBldmVudC4uLmAsIGpzb24pO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuc2F2ZSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uLFxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuU0FWRV9VU0VSX0VWRU5UX0VSUk9SLCBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNBVkVfVVNFUl9FVkVOVF9FUlJPUicgfSxcbiAgICAgIHVwZGF0ZTogKHByb3h5LCB7IGRhdGEgfSkgPT4ge1xuICAgICAgICAvLyBVcGRhdGUgZW50aXR5XG4gICAgICAgIGNvbnN0IHNhdmVkRW50aXR5ID0gZGF0YSAmJiBkYXRhLmRhdGE7XG4gICAgICAgIGlmIChzYXZlZEVudGl0eSkge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9VXNlciBldmVudCBzYXZlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBlbnRpdHkpO1xuICAgICAgICAgIHRoaXMuY29weUlkQW5kVXBkYXRlRGF0ZShzYXZlZEVudGl0eSwgZW50aXR5KTtcblxuICAgICAgICAgIC8vIEFkZCB0byBjYWNoZVxuICAgICAgICAgIGlmICh0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9PT0gJ3VwZGF0ZS1jYWNoZScpIHtcbiAgICAgICAgICAgIGlmICh3aXRoQ29udGVudCkge1xuICAgICAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhwcm94eSwge1xuICAgICAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhDb250ZW50LFxuICAgICAgICAgICAgICAgIGRhdGE6IHNhdmVkRW50aXR5LFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0SW50b011dGFibGVDYWNoZWRRdWVyaWVzKHByb3h5LCB7XG4gICAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIC4uLnNhdmVkRW50aXR5LFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgYXN5bmMgc2F2ZUFsbChlbnRpdGllczogRVtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxFW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoZW50aXRpZXMubWFwKChlbnRpdHkpID0+IHRoaXMuc2F2ZShlbnRpdHksIG9wdHMpKSk7XG4gIH1cblxuICBhc3luYyBtYXJrQWxsQXNSZWFkKGVudGl0aWVzOiBFW10pIHtcbiAgICBjb25zdCB1c2VyRXZlbnRXaXRob3V0UmVhZExpc3RlbmVyczogRVtdID0gW107XG4gICAgZm9yIChjb25zdCBlbnRpdHkgb2YgZW50aXRpZXMgfHwgW10pIHtcbiAgICAgIC8vIEdldCBvblJlYWQgbGlzdGVuZXJzXG4gICAgICBjb25zdCBvblJlYWRMaXN0ZW5lcnMgPSAodGhpcy5saXN0ZW5lcnMgfHwgW10pLmZpbHRlcigobGlzdGVuZXIpID0+ICEhbGlzdGVuZXIub25SZWFkKS5maWx0ZXIoKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci5hY2NlcHQoZW50aXR5KSk7XG4gICAgICBpZiAob25SZWFkTGlzdGVuZXJzLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIG9uUmVhZExpc3RlbmVycykge1xuICAgICAgICAgIGF3YWl0IGxpc3RlbmVyLm9uUmVhZChlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgdG8gdGhpcyBsaXN0IGZvciBkZWZhdWx0IG9wZXJhdGlvblxuICAgICAgICB1c2VyRXZlbnRXaXRob3V0UmVhZExpc3RlbmVycy5wdXNoKGVudGl0eSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXNlIGRlZmF1bHRcbiAgICBhd2FpdCB0aGlzLmRlZmF1bHRNYXJrQXNSZWFkKHVzZXJFdmVudFdpdGhvdXRSZWFkTGlzdGVuZXJzKTtcbiAgfVxuXG4gIHJlZ2lzdGVyTGlzdGVuZXIobGlzdGVuZXI6IElVc2VyRXZlbnRMaXN0ZW5lcjxFLCBJRD4pIHtcbiAgICBpZiAoIXRoaXMubGlzdGVuZXJzKSB0aGlzLmxpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9XG5cbiAgcmVzZXRDb3VudCgpIHtcbiAgICB0aGlzLl9jb3VudFN1YmplY3QubmV4dCh1bmRlZmluZWQpO1xuICAgIHRoaXMucmVzZXRDb3VudERhdGUgPSBEYXRlVXRpbHMubW9tZW50KCk7XG4gICAgLy8gcmVzdGFydCBsaXN0ZW5pbmcgY291bnQgY2hhbmdlc1xuICAgIHRoaXMuc3RhcnRMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTG9naW4oKSB7XG4gICAgLy8gR2V0IGZpcnN0IGNvdW50XG4gICAgY29uc3QgY291bnQgPSBhd2FpdCB0aGlzLmNvdW50KHVuZGVmaW5lZCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZpbmcgdXNlciBldmVudHMgY291bnRgLCBjb3VudCk7XG4gICAgLy8gVXBkYXRlIGNvdW50XG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQoY291bnQpO1xuXG4gICAgLy8gVGhlbiBsaXN0ZW4gY2hhbmdlc1xuICAgIHRoaXMuc3RhcnRMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkxvZ291dCgpIHtcbiAgICAvLyBSZXNldCBjb3VudGVyXG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQoMCk7XG4gICAgLy8gU3RvcCBsaXN0ZW5pbmdcbiAgICB0aGlzLnN0b3BMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGFydExpc3RlbkNvdW50Q2hhbmdlcygpIHtcbiAgICB0aGlzLnN0b3BMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgICB0aGlzLl9saXN0ZW5TdWJzY3JpcHRpb24gPSB0aGlzLmxpc3RlbkNvdW50Q2hhbmdlcyh1bmRlZmluZWQpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0b3BMaXN0ZW5Db3VudENoYW5nZXMoKSB7XG4gICAgdGhpcy5fbGlzdGVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX2xpc3RlblN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcm9jZXNzVXNlckV2ZW50KHNvdXJjZTogYW55KTogUHJvbWlzZTxFPiB7XG4gICAgLy8gQ29udmVydCBqc29uIHNvdXJjZSB0byBJVXNlckV2ZW50XG4gICAgbGV0IHRhcmdldCA9IHRoaXMuZnJvbU9iamVjdChzb3VyY2UpO1xuXG4gICAgLy8gR2V0IGxpc3RlbmVyc1xuICAgIGNvbnN0IGxpc3RlbmVycyA9ICh0aGlzLmxpc3RlbmVycyB8fCBbXSkuZmlsdGVyKChsaXN0ZW5lcikgPT4gISFsaXN0ZW5lci5vblJlY2VpdmVkKS5maWx0ZXIoKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci5hY2NlcHQodGFyZ2V0KSk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcbiAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgY29uc3QgcmVzID0gbGlzdGVuZXIub25SZWNlaXZlZCh0YXJnZXQpO1xuICAgICAgICB0YXJnZXQgPSByZXMgaW5zdGFuY2VvZiBQcm9taXNlID8gYXdhaXQgcmVzIDogcmVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1FdmVudCBoYXMgYmVlbiByZWplY3RlZCBieSBhIGxpc3RlbmVyYCwgc291cmNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBkZWZhdWx0TWFya0FzUmVhZCh1c2VyRXZlbnRzOiBFW10pIHtcbiAgICBpZiAoIXVzZXJFdmVudHMpIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLl9sb2dQcmVmaXh9SW52YWxpZCBldmVudCB0byBzYXZlYCk7XG4gICAgaWYgKCF1c2VyRXZlbnRzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgLy8gc2V0IHJlYWQgZGF0ZVxuICAgIHVzZXJFdmVudHMuZm9yRWFjaCgodXNlckV2ZW50KSA9PiAodXNlckV2ZW50LnJlYWREYXRlID0gRGF0ZVV0aWxzLm1vbWVudCgpKSk7XG5cbiAgICAvLyBzcGxpdCBsb2NhbC9yZW1vdGUgZW50aXRpZXNcbiAgICBjb25zdCBsb2NhbEVudGl0aWVzID0gdXNlckV2ZW50cy5maWx0ZXIoRW50aXR5VXRpbHMuaXNMb2NhbCk7XG4gICAgY29uc3QgcmVtb3RlRW50aXRpZXMgPSB1c2VyRXZlbnRzLmZpbHRlcihFbnRpdHlVdGlscy5pc1JlbW90ZSk7XG5cbiAgICAvLyBzYXZlIGxvY2FsIGVudGl0aWVzXG4gICAgaWYgKGxvY2FsRW50aXRpZXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVNhdmUgbG9jYWwgdXNlciBldmVudGApO1xuICAgICAgLy8gVE9ETyAhISEhISEhISEhISEhXG4gICAgfVxuICAgIC8vIG1hcmsgcmVtb3RlIGVudGl0aWVzIGFzIHJlYWRcbiAgICBpZiAocmVtb3RlRW50aXRpZXMubGVuZ3RoKSB7XG4gICAgICBpZiAoIXRoaXMubXV0YXRpb25zPy5tYXJrQXNSZWFkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9TXV0YXRpb24gcXVlcnkgJ21hcmtBc1JlYWQnIG5vdCBwcm92aWRlZCwgc2tpcC5gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBDb2xsZWN0IGlkc1xuICAgICAgY29uc3QgaWRzID0gcmVtb3RlRW50aXRpZXMubWFwKCh2YWx1ZSkgPT4gdmFsdWUuaWQpO1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9TWFyayB1c2VyIGV2ZW50cyBhcyByZWFkLi4uYCwgaWRzKTtcblxuICAgICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5tYXJrQXNSZWFkLFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBpZHMsXG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuU0FWRV9VU0VSX0VWRU5UX0VSUk9SLCBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNBVkVfVVNFUl9FVkVOVF9FUlJPUicgfSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVVzZXIgZXZlbnRzIG1hcmtlZCBhcyByZWFkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGlkcyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRGaWx0ZXIoKTogRiB7XG4gICAgLy8gQnkgZGVmYXVsdFxuICAgIHJldHVybiA8Rj57XG4gICAgICByZWNpcGllbnRzOiBbdGhpcy5kZWZhdWx0UmVjaXBpZW50KCldLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGVmYXVsdFJlY2lwaWVudCgpOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGZpbGxEZWZhdWx0UHJvcGVydGllcyhlbnRpdHk6IEUpIHt9XG5cbiAgcHJvdGVjdGVkIHVucmVhZEV2ZW50cyhldmVudHM6IEVbXSk6IG51bWJlciB7XG4gICAgLy8gZGVmYXVsdCBjYWxjdWxhdGlvbiBvbiB1bnJlYWQgZXZlbnRzIGZyb20gYSBsaXN0XG4gICAgaWYgKGlzRW1wdHlBcnJheShldmVudHMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxhc3RSZWFkRGF0ZSA9IGV2ZW50c1xuICAgICAgLmZpbHRlcigoZXZlbnQpID0+IGlzTm90TmlsKGV2ZW50LnJlYWREYXRlKSlcbiAgICAgIC5yZWR1Y2UoKGxhc3REYXRlLCBldmVudCkgPT4gRGF0ZVV0aWxzLm1heChsYXN0RGF0ZSwgZXZlbnQucmVhZERhdGUpLCB1bmRlZmluZWQgYXMgTW9tZW50KTtcbiAgICByZXR1cm4gZXZlbnRzLmZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmNyZWF0aW9uRGF0ZS5pc1NhbWVPckFmdGVyKGxhc3RSZWFkRGF0ZSkpLmxlbmd0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb3B5SWRBbmRVcGRhdGVEYXRlKHNvdXJjZTogRSwgdGFyZ2V0OiBFKSB7XG4gICAgRW50aXR5VXRpbHMuY29weUlkQW5kVXBkYXRlRGF0ZShzb3VyY2UsIHRhcmdldCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TG9hZFF1ZXJpZXMoKTogRG9jdW1lbnROb2RlW10ge1xuICAgIHJldHVybiBbdGhpcy5xdWVyaWVzLmxvYWRBbGwsIHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnRdLmZpbHRlcihpc05vdE5pbCk7XG4gIH1cbn1cbiJdfQ==
509
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC91c2VyLWV2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFXLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFXNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHM0YsT0FBTyxFQUFFLGtCQUFrQixFQUE2QixNQUFNLGdEQUFnRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7Ozs7OztBQUlwRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsa0JBQWtCLENBQUMsQ0FBQztBQTBFMUcsTUFBTSxPQUFnQix3QkFVcEIsU0FBUSxrQkFBNEI7SUFrQnhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFuQk8sT0FBTyxDQUFJO0lBQ1gsU0FBUyxDQUFhO0lBQ3RCLGFBQWEsQ0FBYTtJQUMxQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0Msd0JBQXdCLENBQWtD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QUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekYsQ0FBQztJQUVTLG1CQUFtQixDQUFDLE1BQVMsRUFBRSxNQUFTO1FBQ2hELFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVTLGNBQWM7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEYsQ0FBQzt3R0Fsa0JtQix3QkFBd0I7NEZBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEN0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0aW9uVG9rZW4sIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmV0Y2hQb2xpY3kgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IFNvY2lhbEVycm9yQ29kZXMgfSBmcm9tICcuLi9zb2NpYWwuZXJyb3JzJztcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JhcGhxbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJVXNlckV2ZW50LCBJVXNlckV2ZW50RmlsdGVyIH0gZnJvbSAnLi91c2VyLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7XG4gIEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zLFxuICBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsXG4gIEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyxcbiAgSUVudGl0aWVzU2VydmljZSxcbiAgTG9hZFJlc3VsdCxcbiAgUGFnZSxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCB0b051bWJlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmV0d29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlR3JhcGhxbFNlcnZpY2UsIEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2Jhc2UtZ3JhcGhxbC1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IEVudGl0eVV0aWxzIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RhdGVzJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBJU3RhcnRhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBNSU5JRllfRU5USVRZX0ZPUl9QT0QgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwvaW5kZXgnO1xuaW1wb3J0IHsgTXV0YWJsZVdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvYmFzZS1lbnRpdHktc2VydmljZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBBUFBfVVNFUl9FVkVOVF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElVc2VyRXZlbnRTZXJ2aWNlPGFueSwgYW55Pj4oJ1VzZXJFdmVudFNlcnZpY2UnKTtcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFVzZXJFdmVudExvYWRPcHRpb25zIGV4dGVuZHMgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMge1xuICB3aXRoQ29udGVudD86IGJvb2xlYW47IC8vIERlZmF1bHQgdG8gZmFsc2Vcbn1cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMge1xuICB3aXRoQ29udGVudD86IGJvb2xlYW47IC8vIERlZmF1bHQgdG8gZmFsc2Vcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudFF1ZXJpZXMge1xuICBsb2FkQWxsOiBhbnk7XG4gIGxvYWRBbGxXaXRoQ29udGVudDogYW55O1xuICBjb3VudD86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVXNlckV2ZW50TXV0YXRpb25zIHtcbiAgc2F2ZTogYW55O1xuICBtYXJrQXNSZWFkPzogYW55O1xuICBkZWxldGVCeUlkczogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyRXZlbnRTdWJzY3JpcHRpb25zIHtcbiAgbGlzdGVuQWxsQ2hhbmdlczogYW55O1xuICBsaXN0ZW5Db3VudENoYW5nZXM/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudExpc3RlbmVyPEUgZXh0ZW5kcyBJVXNlckV2ZW50PEUsIElEPiwgSUQgPSBudW1iZXI+IHtcbiAgYWNjZXB0OiAoRSkgPT4gYm9vbGVhbjtcbiAgb25SZWNlaXZlZD86IChFKSA9PiBQcm9taXNlPEU+IHwgRSB8IHVuZGVmaW5lZDtcbiAgb25SZWFkPzogKEUpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJFdmVudFNlcnZpY2VPcHRpb25zPFxuICBRIGV4dGVuZHMgSVVzZXJFdmVudFF1ZXJpZXMgPSBJVXNlckV2ZW50UXVlcmllcyxcbiAgTSBleHRlbmRzIElVc2VyRXZlbnRNdXRhdGlvbnMgPSBJVXNlckV2ZW50TXV0YXRpb25zLFxuICBTIGV4dGVuZHMgSVVzZXJFdmVudFN1YnNjcmlwdGlvbnMgPSBJVXNlckV2ZW50U3Vic2NyaXB0aW9ucyxcbj4gZXh0ZW5kcyBCYXNlR3JhcGhxbFNlcnZpY2VPcHRpb25zIHtcbiAgcXVlcmllczogUTtcbiAgbXV0YXRpb25zPzogUGFydGlhbDxNPjtcbiAgc3Vic2NyaXB0aW9ucz86IFBhcnRpYWw8Uz47XG4gIHdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeT86IE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudFNlcnZpY2U8XG4gIEUgZXh0ZW5kcyBJVXNlckV2ZW50PEUsIElEPixcbiAgRiBleHRlbmRzIElVc2VyRXZlbnRGaWx0ZXI8RSwgSUQ+LFxuICBJRCA9IG51bWJlcixcbiAgV08gZXh0ZW5kcyBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgPSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMsXG4gIExPIGV4dGVuZHMgVXNlckV2ZW50TG9hZE9wdGlvbnMgPSBVc2VyRXZlbnRMb2FkT3B0aW9ucyxcbj4gZXh0ZW5kcyBJRW50aXRpZXNTZXJ2aWNlPEUsIEYsIFdPPixcbiAgICBJU3RhcnRhYmxlU2VydmljZSB7XG4gIGNvdW50U3ViamVjdDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIGFkZChlbnRpdHk6IEUpOiBQcm9taXNlPEU+O1xuXG4gIGxvYWQoaWQ6IElELCBvcHRzPzogTE8pOiBQcm9taXNlPEU+O1xuXG4gIGNvdW50KGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGxpc3RlbkNvdW50Q2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kgfSk6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IFdPICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogT2JzZXJ2YWJsZTxFW10+O1xuXG4gIHNhdmUoZW50aXR5OiBFLCBvcHRpb25zPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zKTogUHJvbWlzZTxFPjtcblxuICBkZWxldGUoZW50aXR5OiBFKTogUHJvbWlzZTxhbnk+O1xuXG4gIG1hcmtBbGxBc1JlYWQoZW50aXRpZXM6IEVbXSk7XG5cbiAgcmVnaXN0ZXJMaXN0ZW5lcihsaXN0ZW5lcjogSVVzZXJFdmVudExpc3RlbmVyPEUsIElEPik7XG5cbiAgcmVzZXRDb3VudCgpO1xufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFVzZXJFdmVudFNlcnZpY2U8XG4gICAgRSBleHRlbmRzIElVc2VyRXZlbnQ8RSwgSUQsIGFueT4sXG4gICAgRiBleHRlbmRzIElVc2VyRXZlbnRGaWx0ZXI8RSwgSUQsIGFueT4sXG4gICAgSUQgPSBudW1iZXIsXG4gICAgV08gZXh0ZW5kcyBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgPSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMsXG4gICAgTE8gZXh0ZW5kcyBVc2VyRXZlbnRMb2FkT3B0aW9ucyA9IFVzZXJFdmVudExvYWRPcHRpb25zLFxuICAgIFEgZXh0ZW5kcyBJVXNlckV2ZW50UXVlcmllcyA9IElVc2VyRXZlbnRRdWVyaWVzLFxuICAgIE0gZXh0ZW5kcyBJVXNlckV2ZW50TXV0YXRpb25zID0gSVVzZXJFdmVudE11dGF0aW9ucyxcbiAgICBTIGV4dGVuZHMgSVVzZXJFdmVudFN1YnNjcmlwdGlvbnMgPSBJVXNlckV2ZW50U3Vic2NyaXB0aW9ucyxcbiAgPlxuICBleHRlbmRzIEJhc2VHcmFwaHFsU2VydmljZTxFLCBGLCBJRD5cbiAgaW1wbGVtZW50cyBJVXNlckV2ZW50U2VydmljZTxFLCBGLCBJRCwgV08sIExPPiwgT25EZXN0cm95XG57XG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyaWVzOiBRO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbXV0YXRpb25zOiBQYXJ0aWFsPE0+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogUGFydGlhbDxTPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb3VudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB3YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k6IE11dGFibGVXYXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3k7XG4gIHByb3RlY3RlZCByZXNldENvdW50RGF0ZTogTW9tZW50O1xuICBwcm90ZWN0ZWQgbGlzdGVuZXJzOiBJVXNlckV2ZW50TGlzdGVuZXI8RSwgSUQ+W10gPSBbXTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfbGlzdGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgZ2V0IGNvdW50U3ViamVjdCgpOiBTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9jb3VudFN1YmplY3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG9wdGlvbnM6IFVzZXJFdmVudFNlcnZpY2VPcHRpb25zPFEsIE0sIFM+XG4gICkge1xuICAgIHN1cGVyKGdyYXBocWwsIG9wdGlvbnMpO1xuICAgIHRoaXMucXVlcmllcyA9IG9wdGlvbnMucXVlcmllcztcbiAgICB0aGlzLm11dGF0aW9ucyA9IG9wdGlvbnMubXV0YXRpb25zIHx8IDxQYXJ0aWFsPE0+Pnt9O1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IG9wdGlvbnMuc3Vic2NyaXB0aW9ucyB8fCA8UGFydGlhbDxTPj57fTtcbiAgICB0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9IG9wdGlvbnMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5IHx8ICd1cGRhdGUtY2FjaGUnO1xuICAgIHRoaXMuX2xvZ1ByZWZpeCA9ICdbdXNlci1ldmVudC1zZXJ2aWNlXSAnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBVcGRhdGUgY29tcG9uZW50IHdoZW4gcmVmcmVzaCBpcyBuZWVkICg9bG9naW4gZXZlbnRzKVxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgbWVyZ2UoXG4gICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dpbixcbiAgICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ291dCxcbiAgICAgICAgdGltZXIoMTAwMCkgLy8gU3RhcnRzIHdpdGggLSAgZmlyc3QgYXR0ZW1wdCBpZiBhY2NvdW50IGlzIHJlYWR5XG4gICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIC8vIFdhaXQgYWNjb3VudCBzZXJ2aWNlIHJlYWR5IChjYW4gYmUgcmVzdGFydGVkKVxuICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuYWNjb3VudFNlcnZpY2UucmVhZHkoKSksXG4gICAgICAgICAgbWFwKCgpID0+IHRoaXMuYWNjb3VudFNlcnZpY2UuaXNMb2dpbigpKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgobG9naW4pID0+IHtcbiAgICAgICAgICBpZiAobG9naW4pIHtcbiAgICAgICAgICAgIHRoaXMub25Mb2dpbigpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uTG9nb3V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBhYnN0cmFjdCBhc0ZpbHRlcihmaWx0ZXI6IFBhcnRpYWw8Rj4pOiBGO1xuXG4gIGFic3RyYWN0IGZyb21PYmplY3Qoc291cmNlOiBhbnkpOiBFO1xuXG4gIHdhdGNoQWxsKFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIHNpemU6IG51bWJlcixcbiAgICBzb3J0Qnk/OiBzdHJpbmcsXG4gICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgZmlsdGVyPzogUGFydGlhbDxGPixcbiAgICBvcHRpb25zPzogV09cbiAgKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PEU+PiB7XG4gICAgcmV0dXJuIHRoaXMud2F0Y2hQYWdlKDxQYWdlPnsgb2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24gfSwgZmlsdGVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHdhdGNoUGFnZShwYWdlOiBQYWdlLCBmaWx0ZXI/OiBQYXJ0aWFsPEY+LCBvcHRzPzogV08pOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8RT4+IHtcbiAgICBsZXQgbm93ID0gdGhpcy5fZGVidWcgJiYgRGF0ZS5ub3coKTtcbiAgICBpZiAoIWZpbHRlcikge1xuICAgICAgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgfVxuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUxvYWRpbmcgdXNlciBldmVudHMuLi5gLCBmaWx0ZXIpO1xuXG4gICAgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgLy8gRm9yY2UgcmVjaXBpZW50IHRvIGN1cnJlbnQgaXNzdWVyLCBpZiBub3QgYWRtaW4gYW5kIG5vdCBzcGVjaWZpZWRcbiAgICBpZiAoaXNFbXB0eUFycmF5KGZpbHRlcj8ucmVjaXBpZW50cykgfHwgIXRoaXMuYWNjb3VudFNlcnZpY2UuaXNBZG1pbigpKSB7XG4gICAgICBjb25zdCByZWNpcGllbnQgPSB0aGlzLmRlZmF1bHRSZWNpcGllbnQoKTtcbiAgICAgIGlmICghZmlsdGVyPy5yZWNpcGllbnRzPy5pbmNsdWRlcyhyZWNpcGllbnQpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW3VzZXItZXZlbnRzLXNlcnZpY2VdIEZvcmNlIHVzZXIgZXZlbnQgZmlsdGVyLnJlY2lwaWVudD0nICsgcmVjaXBpZW50KTtcbiAgICAgICAgZmlsdGVyLnJlY2lwaWVudHMgPSBbcmVjaXBpZW50XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB3aXRoQ29udGVudCA9IG9wdHM/LndpdGhDb250ZW50ID09PSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMubXV0YWJsZVdhdGNoUXVlcnk8TG9hZFJlc3VsdDxFPiwgeyBmaWx0ZXI6IGFueTsgcGFnZTogUGFnZSB9Pih7XG4gICAgICBxdWVyeU5hbWU6IHdpdGhDb250ZW50ID8gJ0xvYWRBbGxXaXRoQ29udGVudCcgOiAnTG9hZEFsbCcsXG4gICAgICBxdWVyeTogd2l0aENvbnRlbnQgPyB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhDb250ZW50IDogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgcGFnZToge1xuICAgICAgICAgIHNvcnRCeTogJ2NyZWF0aW9uRGF0ZScsXG4gICAgICAgICAgLi4ucGFnZSxcbiAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAocGFnZS5zb3J0RGlyZWN0aW9uIHx8ICdkZXNjJykudG9VcHBlckNhc2UoKSBhcyBTb3J0RGlyZWN0aW9uLFxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlciAmJiBmaWx0ZXIuYXNQb2RPYmplY3QoKSxcbiAgICAgIH0sXG4gICAgICBhcnJheUZpZWxkTmFtZTogJ2RhdGEnLFxuICAgICAgZXJyb3I6IHsgY29kZTogU29jaWFsRXJyb3JDb2Rlcy5MT0FEX1VTRVJfRVZFTlRTX0VSUk9SLCBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLkxPQURfVVNFUl9FVkVOVFNfRVJST1InIH0sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cz8uZmV0Y2hQb2xpY3kgfHwgJ2NhY2hlLWZpcnN0JyxcbiAgICAgIGluc2VydEZpbHRlckZuOiBmaWx0ZXIgJiYgZmlsdGVyLmFzRmlsdGVyRm4oKSxcbiAgICB9KS5waXBlKFxuICAgICAgbWVyZ2VNYXAoYXN5bmMgKHJlcykgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKChyZXM/LmRhdGEgfHwgW10pLm1hcCgodmFsdWUpID0+IHRoaXMucHJvY2Vzc1VzZXJFdmVudCh2YWx1ZSkpKTtcblxuICAgICAgICBpZiAobm93KSB7XG4gICAgICAgICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9JHtkYXRhLmxlbmd0aH0gdXNlciBldmVudHMgbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgICAgIG5vdyA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQWxsQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICAgICAgZGF0YSA9IEVudGl0eVV0aWxzLnNvcnQoZGF0YSwgcGFnZS5zb3J0QnksIHBhZ2Uuc29ydERpcmVjdGlvbik7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gPExvYWRSZXN1bHQ8RT4+e1xuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgdG90YWw6IHRvTnVtYmVyKHJlcz8udG90YWwsIGRhdGEubGVuZ3RoKSxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgZmV0Y2ggbW9yZSBjYXBhYmlsaXR5LCBpZiB0b3RhbCB3YXMgZmV0Y2hlZFxuICAgICAgICBpZiAoaXNOb3ROaWwocmVzLnRvdGFsKSkge1xuICAgICAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSAocGFnZS5vZmZzZXQgfHwgMCkgKyBkYXRhLmxlbmd0aDtcbiAgICAgICAgICBpZiAobmV4dE9mZnNldCA8IHJlc3VsdC50b3RhbCkge1xuICAgICAgICAgICAgcmVzdWx0LmZldGNoTW9yZSA9IChfKSA9PlxuICAgICAgICAgICAgICB0aGlzLmxvYWRQYWdlKHsgLi4ucGFnZSwgb2Zmc2V0OiBuZXh0T2Zmc2V0IH0sIGZpbHRlciwgeyAuLi5vcHRzLCBmZXRjaFBvbGljeTogPEZldGNoUG9saWN5Piduby1jYWNoZScgfSBhcyB1bmtub3duIGFzIExPKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZFBhZ2UocGFnZTogUGFnZSwgZmlsdGVyPzogUGFydGlhbDxGPiwgb3B0cz86IExPKTogUHJvbWlzZTxMb2FkUmVzdWx0PEU+PiB7XG4gICAgY29uc3Qgbm93ID0gdGhpcy5fZGVidWcgJiYgRGF0ZS5ub3coKTtcbiAgICBpZiAoIWZpbHRlcikgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG5cbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Mb2FkaW5nIHVzZXIgZXZlbnRzLi4uYCwgZmlsdGVyKTtcblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIC8vIEZvcmNlIHJlY2lwaWVudCB0byBjdXJyZW50IGlzc3VlciwgaWYgbm90IGFkbWluIGFuZCBub3Qgc3BlY2lmaWVkXG4gICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXI/LnJlY2lwaWVudHMpIHx8ICF0aGlzLmFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKSkge1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gdGhpcy5kZWZhdWx0UmVjaXBpZW50KCk7XG4gICAgICBpZiAoIWZpbHRlcj8ucmVjaXBpZW50cz8uaW5jbHVkZXMocmVjaXBpZW50KSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1t1c2VyLWV2ZW50cy1zZXJ2aWNlXSBGb3JjZSB1c2VyIGV2ZW50IGZpbHRlci5yZWNpcGllbnQ9JyArIHJlY2lwaWVudCk7XG4gICAgICAgIGZpbHRlci5yZWNpcGllbnRzID0gW3JlY2lwaWVudF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSBvcHRzPy53aXRoQ29udGVudCA9PT0gdHJ1ZTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTxMb2FkUmVzdWx0PEU+Pih7XG4gICAgICBxdWVyeTogd2l0aENvbnRlbnQgPyB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhDb250ZW50IDogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgcGFnZToge1xuICAgICAgICAgIHNvcnRCeTogJ2NyZWF0aW9uRGF0ZScsXG4gICAgICAgICAgLi4ucGFnZSxcbiAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAocGFnZS5zb3J0RGlyZWN0aW9uIHx8ICdkZXNjJykudG9VcHBlckNhc2UoKSBhcyBTb3J0RGlyZWN0aW9uLFxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlciAmJiBmaWx0ZXIuYXNQb2RPYmplY3QoKSxcbiAgICAgIH0sXG4gICAgICBlcnJvcjogeyBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLkxPQURfVVNFUl9FVkVOVFNfRVJST1IsIG1lc3NhZ2U6ICdTT0NJQUwuRVJST1IuTE9BRF9VU0VSX0VWRU5UU19FUlJPUicgfSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzPy5mZXRjaFBvbGljeSxcbiAgICB9KTtcbiAgICBsZXQgZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKChyZXM/LmRhdGEgfHwgW10pLm1hcCgodmFsdWUpID0+IHRoaXMucHJvY2Vzc1VzZXJFdmVudCh2YWx1ZSkpKTtcblxuICAgIGlmIChub3cpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fSR7ZGF0YS5sZW5ndGh9IHVzZXIgZXZlbnRzIGxvYWRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcblxuICAgIC8vIE11c3QgcmUtb3JkZXIgYmVjYXVzZSBvZiBsaXN0ZW5BbGxDaGFuZ2VzIHJlc3VsdCB3aWxsIGFkZCBuZXcgZXZlbnQgYXQgdGhlIGVuZFxuICAgIGRhdGEgPSBFbnRpdHlVdGlscy5zb3J0KGRhdGEsIHBhZ2Uuc29ydEJ5LCBwYWdlLnNvcnREaXJlY3Rpb24pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gPExvYWRSZXN1bHQ8RT4+e1xuICAgICAgZGF0YSxcbiAgICAgIHRvdGFsOiB0b051bWJlcihyZXM/LnRvdGFsLCBkYXRhLmxlbmd0aCksXG4gICAgfTtcblxuICAgIC8vIEFkZCBmZXRjaCBtb3JlIGNhcGFiaWxpdHksIGlmIHRvdGFsIHdhcyBmZXRjaGVkXG4gICAgaWYgKGlzTm90TmlsKHJlcy50b3RhbCkpIHtcbiAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSAocGFnZS5vZmZzZXQgfHwgMCkgKyBkYXRhLmxlbmd0aDtcbiAgICAgIGlmIChuZXh0T2Zmc2V0IDwgcmVzdWx0LnRvdGFsKSB7XG4gICAgICAgIHJlc3VsdC5mZXRjaE1vcmUgPSAoXykgPT4gdGhpcy5sb2FkUGFnZSh7IC4uLnBhZ2UsIG9mZnNldDogbmV4dE9mZnNldCB9LCBmaWx0ZXIsIG9wdHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBsb2FkKGlkOiBJRCwgb3B0cz86IExPKTogUHJvbWlzZTxFPiB7XG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgZmlsdGVyLmluY2x1ZGVkSWRzID0gW2lkXTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMubG9hZFBhZ2UoeyBvZmZzZXQ6IDAsIHNpemU6IDEgfSwgZmlsdGVyLCBvcHRzKTtcbiAgICByZXR1cm4gZGF0YSAmJiBkYXRhWzBdO1xuICB9XG5cbiAgYXN5bmMgYWRkKGVudGl0eTogRSk6IFByb21pc2U8RT4ge1xuICAgIGVudGl0eSA9IGF3YWl0IHRoaXMucHJvY2Vzc1VzZXJFdmVudChlbnRpdHkpO1xuXG4gICAgaWYgKCFlbnRpdHkpIHJldHVybjsgLy8gUmVqZWN0ZWRcblxuICAgIGNvbnN0IHdpdGhDb250ZW50ID0gISFlbnRpdHkuY29udGVudDtcblxuICAgIC8vIEFkZCB1c2VyIGV2ZW50IGxvY2FsbHlcbiAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICBpZiAod2l0aENvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXModGhpcy5ncmFwaHFsLmNhY2hlLCB7XG4gICAgICAgICAgcXVlcnk6IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQsXG4gICAgICAgICAgZGF0YTogZW50aXR5LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5zZXJ0SW50b011dGFibGVDYWNoZWRRdWVyaWVzKHRoaXMuZ3JhcGhxbC5jYWNoZSwge1xuICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5lbnRpdHksXG4gICAgICAgICAgY29udGVudDogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjb3VudFxuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KHRoaXMuX2NvdW50U3ViamVjdC52YWx1ZSArIDEpO1xuXG4gICAgLy8gQWRkIGlkXG4gICAgLy9jb25zb2xlLmxvZygnVE9ETzogYWRkIGFuIElEIHRvIHVzZXIgZXZlbnQgPycpO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGFzeW5jIGNvdW50KGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBpZiAoIXRoaXMucXVlcmllcz8uY291bnQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9UXVlcnkgJ2NvdW50JyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghZmlsdGVyKSBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcbiAgICAvLyBBcHBseSBsYXN0IHJlc2V0IGRhdGUgYXMgc3RhcnQgZGF0ZVxuICAgIGZpbHRlci5zdGFydERhdGUgPSB0aGlzLnJlc2V0Q291bnREYXRlO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9Q291bnRpbmcgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IHRvdGFsOiBudW1iZXIgfT4oe1xuICAgICAgcXVlcnk6IHRoaXMucXVlcmllcy5jb3VudCxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBmaWx0ZXI6IGZpbHRlci5hc1BvZE9iamVjdCgpLFxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuQ09VTlRfVVNFUl9FVkVOVF9FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5DT1VOVF9VU0VSX0VWRU5UX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnM/LmZldGNoUG9saWN5IHx8ICduZXR3b3JrLW9ubHknLFxuICAgIH0pO1xuICAgIHJldHVybiByZXMudG90YWw7XG4gIH1cblxuICBsaXN0ZW5Db3VudENoYW5nZXMoZmlsdGVyOiBQYXJ0aWFsPEY+LCBvcHRpb25zPzogV08gJiB7IGludGVydmFsPzogbnVtYmVyOyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5IH0pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zPy5saXN0ZW5Db3VudENoYW5nZXMpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9U3Vic2NyaXB0aW9uIHF1ZXJ5ICdsaXN0ZW5Db3VudENoYW5nZXMnIG5vdCBwcm92aWRlZCwgc2tpcC5gKTtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRGVmYXVsdCA9ICFmaWx0ZXI7XG4gICAgaWYgKGlzRGVmYXVsdCkgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgLy8gQXBwbHkgbGFzdCByZXNldCBkYXRlIGFzIHN0YXJ0IGRhdGVcbiAgICBmaWx0ZXIuc3RhcnREYXRlID0gdGhpcy5yZXNldENvdW50RGF0ZTtcbiAgICBmaWx0ZXIuZXhjbHVkZVJlYWQgPSB0cnVlO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9W1dTXSBMaXN0ZW5pbmcgY291bnQgY2hhbmdlcyBmb3IgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIHJldHVybiB0aGlzLmdyYXBocWxcbiAgICAgIC5zdWJzY3JpYmU8eyB0b3RhbDogbnVtYmVyIH0sIHsgZmlsdGVyOiBhbnk7IGludGVydmFsOiBudW1iZXIgfT4oe1xuICAgICAgICBxdWVyeTogdGhpcy5zdWJzY3JpcHRpb25zLmxpc3RlbkNvdW50Q2hhbmdlcyxcbiAgICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnM/LmZldGNoUG9saWN5LFxuICAgICAgICB2YXJpYWJsZXM6IHsgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKSwgaW50ZXJ2YWw6IHRvTnVtYmVyKG9wdGlvbnM/LmludGVydmFsLCAxMCkgfSxcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUixcbiAgICAgICAgICBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUicsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoeyB0b3RhbCB9KSA9PiB7XG4gICAgICAgICAgaWYgKHRvdGFsICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBuZXcgdXNlciBldmVudHMgY291bnQ6YCwgdG90YWwpO1xuICAgICAgICAgIC8vIHVwZGF0ZSBjb3VudFxuICAgICAgICAgIGlmIChpc0RlZmF1bHQpIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KHRvdGFsKTtcblxuICAgICAgICAgIHJldHVybiB0b3RhbDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogUGFydGlhbDxGPiwgb3B0cz86IFdPICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTsgdG9FbnRpdHk/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEVbXT4ge1xuICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zPy5saXN0ZW5BbGxDaGFuZ2VzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fVN1YnNjcmlwdGlvbiBxdWVyeSAnbGlzdGVuQWxsQ2hhbmdlcycgbm90IHByb3ZpZGVkLCBza2lwLmApO1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuXG4gICAgaWYgKCFmaWx0ZXIpIGZpbHRlciA9IHRoaXMuZGVmYXVsdEZpbHRlcigpO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGNvbnN0IHdpdGhDb250ZW50ID0gb3B0cz8ud2l0aENvbnRlbnQgPT09IHRydWU7XG5cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVtXU10gTGlzdGVuaW5nIGNoYW5nZXMgZm9yIHVzZXIgZXZlbnRzIHdpdGggZmlsdGVyOmAsIGZpbHRlcik7XG5cbiAgICByZXR1cm4gdGhpcy5ncmFwaHFsXG4gICAgICAuc3Vic2NyaWJlPHsgZGF0YTogYW55W10gfSwgeyBmaWx0ZXI6IGFueTsgaW50ZXJ2YWw6IG51bWJlciB9Pih7XG4gICAgICAgIHF1ZXJ5OiB0aGlzLnN1YnNjcmlwdGlvbnMubGlzdGVuQWxsQ2hhbmdlcyxcbiAgICAgICAgZmV0Y2hQb2xpY3k6IG9wdHM/LmZldGNoUG9saWN5LFxuICAgICAgICB2YXJpYWJsZXM6IHsgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKSwgaW50ZXJ2YWw6IHRvTnVtYmVyKG9wdHM/LmludGVydmFsLCAxMCkgfSxcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUixcbiAgICAgICAgICBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUicsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKGFzeW5jICh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAgIGlmIChkYXRhICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBuZXcgdXNlciBldmVudHM6YCwgZGF0YSk7XG5cbiAgICAgICAgICAvLyBVcGRhdGUgY2FjaGUgKHdpbGwgdXBkYXRlIHdhdGNoQWxsIHF1ZXJpZXMpXG4gICAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXModGhpcy5ncmFwaHFsLmNhY2hlLCB7XG4gICAgICAgICAgICAgIHF1ZXJ5OiB3aXRoQ29udGVudCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvbnZlcnQgdG8gZW50aXRpZXNcbiAgICAgICAgICBpZiAoIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbCgoZGF0YSB8fCBbXSkubWFwKCh2YWx1ZSkgPT4gdGhpcy5wcm9jZXNzVXNlckV2ZW50KHZhbHVlKSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGVudGl0eTogRSk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCFlbnRpdHkpIHJldHVybjsgLy8gc2tpcFxuICAgIGF3YWl0IHRoaXMuZGVsZXRlQWxsKFtlbnRpdHldKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFsbChlbnRpdGllczogRVtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBpZHMgPSBlbnRpdGllcyAmJiBlbnRpdGllcy5tYXAoKHQpID0+IHQuaWQpO1xuICAgIGlmIChpc0VtcHR5QXJyYXkoaWRzKSkgcmV0dXJuOyAvLyBzdG9wLCBpZiBub3RoaW5nIGVsc2UgdG8gZG9cblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1EZWxldGluZyBldmVudHMuLi4gaWRzOmAsIGlkcyk7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPGFueT4oe1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLmRlbGV0ZUJ5SWRzLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlkcyxcbiAgICAgIH0sXG4gICAgICB1cGRhdGU6IChjYWNoZSkgPT4ge1xuICAgICAgICAvLyBSZW1vdmUgZnJvbSBjYWNoZVxuICAgICAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVGcm9tTXV0YWJsZUNhY2hlZFF1ZXJpZXNCeUlkcyhjYWNoZSwge1xuICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgaWRzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1FdmVudHMgZGVsZXRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzYXZlKGVudGl0eTogRSwgb3B0aW9ucz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8RT4ge1xuICAgIHRoaXMuZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gaW50byBqc29uXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSAhIWVudGl0eS5jb250ZW50O1xuICAgIGNvbnN0IGpzb24gPSBlbnRpdHkuYXNPYmplY3QoTUlOSUZZX0VOVElUWV9GT1JfUE9EKTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1TYXZpbmcgdXNlciBldmVudC4uLmAsIGpzb24pO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuc2F2ZSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uLFxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuU0FWRV9VU0VSX0VWRU5UX0VSUk9SLCBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNBVkVfVVNFUl9FVkVOVF9FUlJPUicgfSxcbiAgICAgIHVwZGF0ZTogKHByb3h5LCB7IGRhdGEgfSkgPT4ge1xuICAgICAgICAvLyBVcGRhdGUgZW50aXR5XG4gICAgICAgIGNvbnN0IHNhdmVkRW50aXR5ID0gZGF0YSAmJiBkYXRhLmRhdGE7XG4gICAgICAgIGlmIChzYXZlZEVudGl0eSkge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9VXNlciBldmVudCBzYXZlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBlbnRpdHkpO1xuICAgICAgICAgIHRoaXMuY29weUlkQW5kVXBkYXRlRGF0ZShzYXZlZEVudGl0eSwgZW50aXR5KTtcblxuICAgICAgICAgIC8vIEFkZCB0byBjYWNoZVxuICAgICAgICAgIGlmICh0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9PT0gJ3VwZGF0ZS1jYWNoZScpIHtcbiAgICAgICAgICAgIGlmICh3aXRoQ29udGVudCkge1xuICAgICAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhwcm94eSwge1xuICAgICAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhDb250ZW50LFxuICAgICAgICAgICAgICAgIGRhdGE6IHNhdmVkRW50aXR5LFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0SW50b011dGFibGVDYWNoZWRRdWVyaWVzKHByb3h5LCB7XG4gICAgICAgICAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIC4uLnNhdmVkRW50aXR5LFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgYXN5bmMgc2F2ZUFsbChlbnRpdGllczogRVtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxFW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoZW50aXRpZXMubWFwKChlbnRpdHkpID0+IHRoaXMuc2F2ZShlbnRpdHksIG9wdHMpKSk7XG4gIH1cblxuICBhc3luYyBtYXJrQWxsQXNSZWFkKGVudGl0aWVzOiBFW10pIHtcbiAgICBjb25zdCB1c2VyRXZlbnRXaXRob3V0UmVhZExpc3RlbmVyczogRVtdID0gW107XG4gICAgZm9yIChjb25zdCBlbnRpdHkgb2YgZW50aXRpZXMgfHwgW10pIHtcbiAgICAgIC8vIEdldCBvblJlYWQgbGlzdGVuZXJzXG4gICAgICBjb25zdCBvblJlYWRMaXN0ZW5lcnMgPSAodGhpcy5saXN0ZW5lcnMgfHwgW10pLmZpbHRlcigobGlzdGVuZXIpID0+ICEhbGlzdGVuZXIub25SZWFkKS5maWx0ZXIoKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci5hY2NlcHQoZW50aXR5KSk7XG4gICAgICBpZiAob25SZWFkTGlzdGVuZXJzLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIG9uUmVhZExpc3RlbmVycykge1xuICAgICAgICAgIGF3YWl0IGxpc3RlbmVyLm9uUmVhZChlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgdG8gdGhpcyBsaXN0IGZvciBkZWZhdWx0IG9wZXJhdGlvblxuICAgICAgICB1c2VyRXZlbnRXaXRob3V0UmVhZExpc3RlbmVycy5wdXNoKGVudGl0eSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXNlIGRlZmF1bHRcbiAgICBhd2FpdCB0aGlzLmRlZmF1bHRNYXJrQXNSZWFkKHVzZXJFdmVudFdpdGhvdXRSZWFkTGlzdGVuZXJzKTtcbiAgfVxuXG4gIHJlZ2lzdGVyTGlzdGVuZXIobGlzdGVuZXI6IElVc2VyRXZlbnRMaXN0ZW5lcjxFLCBJRD4pIHtcbiAgICBpZiAoIXRoaXMubGlzdGVuZXJzKSB0aGlzLmxpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9XG5cbiAgcmVzZXRDb3VudCgpIHtcbiAgICB0aGlzLl9jb3VudFN1YmplY3QubmV4dCh1bmRlZmluZWQpO1xuICAgIHRoaXMucmVzZXRDb3VudERhdGUgPSBEYXRlVXRpbHMubW9tZW50KCk7XG4gICAgLy8gcmVzdGFydCBsaXN0ZW5pbmcgY291bnQgY2hhbmdlc1xuICAgIHRoaXMuc3RhcnRMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTG9naW4oKSB7XG4gICAgLy8gR2V0IGZpcnN0IGNvdW50XG4gICAgY29uc3QgY291bnQgPSBhd2FpdCB0aGlzLmNvdW50KHVuZGVmaW5lZCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZpbmcgdXNlciBldmVudHMgY291bnRgLCBjb3VudCk7XG4gICAgLy8gVXBkYXRlIGNvdW50XG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQoY291bnQpO1xuXG4gICAgLy8gVGhlbiBsaXN0ZW4gY2hhbmdlc1xuICAgIHRoaXMuc3RhcnRMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkxvZ291dCgpIHtcbiAgICAvLyBSZXNldCBjb3VudGVyXG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQoMCk7XG4gICAgLy8gU3RvcCBsaXN0ZW5pbmdcbiAgICB0aGlzLnN0b3BMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGFydExpc3RlbkNvdW50Q2hhbmdlcygpIHtcbiAgICB0aGlzLnN0b3BMaXN0ZW5Db3VudENoYW5nZXMoKTtcbiAgICB0aGlzLl9saXN0ZW5TdWJzY3JpcHRpb24gPSB0aGlzLmxpc3RlbkNvdW50Q2hhbmdlcyh1bmRlZmluZWQpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0b3BMaXN0ZW5Db3VudENoYW5nZXMoKSB7XG4gICAgdGhpcy5fbGlzdGVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX2xpc3RlblN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcm9jZXNzVXNlckV2ZW50KHNvdXJjZTogYW55KTogUHJvbWlzZTxFPiB7XG4gICAgLy8gQ29udmVydCBqc29uIHNvdXJjZSB0byBJVXNlckV2ZW50XG4gICAgbGV0IHRhcmdldCA9IHRoaXMuZnJvbU9iamVjdChzb3VyY2UpO1xuXG4gICAgLy8gR2V0IGxpc3RlbmVyc1xuICAgIGNvbnN0IGxpc3RlbmVycyA9ICh0aGlzLmxpc3RlbmVycyB8fCBbXSkuZmlsdGVyKChsaXN0ZW5lcikgPT4gISFsaXN0ZW5lci5vblJlY2VpdmVkKS5maWx0ZXIoKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci5hY2NlcHQodGFyZ2V0KSk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcbiAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgY29uc3QgcmVzID0gbGlzdGVuZXIub25SZWNlaXZlZCh0YXJnZXQpO1xuICAgICAgICB0YXJnZXQgPSByZXMgaW5zdGFuY2VvZiBQcm9taXNlID8gYXdhaXQgcmVzIDogcmVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1FdmVudCBoYXMgYmVlbiByZWplY3RlZCBieSBhIGxpc3RlbmVyYCwgc291cmNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBkZWZhdWx0TWFya0FzUmVhZCh1c2VyRXZlbnRzOiBFW10pIHtcbiAgICBpZiAoIXVzZXJFdmVudHMpIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLl9sb2dQcmVmaXh9SW52YWxpZCBldmVudCB0byBzYXZlYCk7XG4gICAgaWYgKCF1c2VyRXZlbnRzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgLy8gc2V0IHJlYWQgZGF0ZVxuICAgIHVzZXJFdmVudHMuZm9yRWFjaCgodXNlckV2ZW50KSA9PiAodXNlckV2ZW50LnJlYWREYXRlID0gRGF0ZVV0aWxzLm1vbWVudCgpKSk7XG5cbiAgICAvLyBzcGxpdCBsb2NhbC9yZW1vdGUgZW50aXRpZXNcbiAgICBjb25zdCBsb2NhbEVudGl0aWVzID0gdXNlckV2ZW50cy5maWx0ZXIoRW50aXR5VXRpbHMuaXNMb2NhbCk7XG4gICAgY29uc3QgcmVtb3RlRW50aXRpZXMgPSB1c2VyRXZlbnRzLmZpbHRlcihFbnRpdHlVdGlscy5pc1JlbW90ZSk7XG5cbiAgICAvLyBzYXZlIGxvY2FsIGVudGl0aWVzXG4gICAgaWYgKGxvY2FsRW50aXRpZXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVNhdmUgbG9jYWwgdXNlciBldmVudGApO1xuICAgICAgLy8gVE9ETyAhISEhISEhISEhISEhXG4gICAgfVxuICAgIC8vIG1hcmsgcmVtb3RlIGVudGl0aWVzIGFzIHJlYWRcbiAgICBpZiAocmVtb3RlRW50aXRpZXMubGVuZ3RoKSB7XG4gICAgICBpZiAoIXRoaXMubXV0YXRpb25zPy5tYXJrQXNSZWFkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9TXV0YXRpb24gcXVlcnkgJ21hcmtBc1JlYWQnIG5vdCBwcm92aWRlZCwgc2tpcC5gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBDb2xsZWN0IGlkc1xuICAgICAgY29uc3QgaWRzID0gcmVtb3RlRW50aXRpZXMubWFwKCh2YWx1ZSkgPT4gdmFsdWUuaWQpO1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9TWFyayB1c2VyIGV2ZW50cyBhcyByZWFkLi4uYCwgaWRzKTtcblxuICAgICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5tYXJrQXNSZWFkLFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBpZHMsXG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuU0FWRV9VU0VSX0VWRU5UX0VSUk9SLCBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNBVkVfVVNFUl9FVkVOVF9FUlJPUicgfSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVVzZXIgZXZlbnRzIG1hcmtlZCBhcyByZWFkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGlkcyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRGaWx0ZXIoKTogRiB7XG4gICAgLy8gQnkgZGVmYXVsdFxuICAgIHJldHVybiA8Rj57XG4gICAgICByZWNpcGllbnRzOiBbdGhpcy5kZWZhdWx0UmVjaXBpZW50KCldLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGVmYXVsdFJlY2lwaWVudCgpOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGZpbGxEZWZhdWx0UHJvcGVydGllcyhlbnRpdHk6IEUpIHt9XG5cbiAgcHJvdGVjdGVkIHVucmVhZEV2ZW50cyhldmVudHM6IEVbXSk6IG51bWJlciB7XG4gICAgLy8gZGVmYXVsdCBjYWxjdWxhdGlvbiBvbiB1bnJlYWQgZXZlbnRzIGZyb20gYSBsaXN0XG4gICAgaWYgKGlzRW1wdHlBcnJheShldmVudHMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxhc3RSZWFkRGF0ZSA9IGV2ZW50c1xuICAgICAgLmZpbHRlcigoZXZlbnQpID0+IGlzTm90TmlsKGV2ZW50LnJlYWREYXRlKSlcbiAgICAgIC5yZWR1Y2UoKGxhc3REYXRlLCBldmVudCkgPT4gRGF0ZVV0aWxzLm1heChsYXN0RGF0ZSwgZXZlbnQucmVhZERhdGUpLCB1bmRlZmluZWQgYXMgTW9tZW50KTtcbiAgICByZXR1cm4gZXZlbnRzLmZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmNyZWF0aW9uRGF0ZS5pc1NhbWVPckFmdGVyKGxhc3RSZWFkRGF0ZSkpLmxlbmd0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb3B5SWRBbmRVcGRhdGVEYXRlKHNvdXJjZTogRSwgdGFyZ2V0OiBFKSB7XG4gICAgRW50aXR5VXRpbHMuY29weUlkQW5kVXBkYXRlRGF0ZShzb3VyY2UsIHRhcmdldCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TG9hZFF1ZXJpZXMoKTogRG9jdW1lbnROb2RlW10ge1xuICAgIHJldHVybiBbdGhpcy5xdWVyaWVzLmxvYWRBbGwsIHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnRdLmZpbHRlcihpc05vdE5pbCk7XG4gIH1cbn1cbiJdfQ==
@@ -4,10 +4,10 @@ import { catchError } from 'rxjs/operators';
4
4
  import { isNotNilOrBlank } from '../app/shared/functions';
5
5
  import * as i0 from "@angular/core";
6
6
  export class EnvironmentLoader {
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EnvironmentLoader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
8
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: EnvironmentLoader, ngImport: i0 });
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: EnvironmentLoader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
8
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: EnvironmentLoader, ngImport: i0 });
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EnvironmentLoader, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: EnvironmentLoader, decorators: [{
11
11
  type: Directive
12
12
  }] });
13
13
  export class EnvironmentHttpLoader extends EnvironmentLoader {
@@ -74,4 +74,4 @@ export class EnvironmentHttpLoader extends EnvironmentLoader {
74
74
  })));
75
75
  }
76
76
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRzFELE1BQU0sT0FBZ0IsaUJBQWlCO3VHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEdEMsU0FBUzs7QUFPVixNQUFNLE9BQU8scUJBQTJELFNBQVEsaUJBQW9CO0lBU3RGO0lBUkssVUFBVSxHQUFHLHVCQUF1QixDQUFDO0lBRTVDLE1BQU0sQ0FBVTtJQUNoQixZQUFZLENBQUk7SUFDaEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNQLHVCQUF1QixDQUFTO0lBRW5ELFlBQ1ksSUFBZ0IsRUFDMUIsa0JBQXNCO1FBRXRCLEtBQUssRUFBRSxDQUFDO1FBSEUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUkxQixxREFBcUQ7UUFDckQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxrQkFBa0IsSUFBTyxFQUFFLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQztRQUN4RSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDO1lBQ25FLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxxRUFBcUUsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLGlCQUFpQjtRQUU3RCxJQUFJLENBQUM7WUFDSCw0QkFBNEI7WUFDNUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztnQkFDbEQsUUFBUTtnQkFDUixvQkFBb0I7Z0JBRXBCLGlDQUFpQztnQkFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUU1RCxpQ0FBaUM7Z0JBQ2pDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELDhCQUE4QjtJQUVwQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQVc7UUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxzQ0FBc0MsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUVsRyxPQUFPLGNBQWMsQ0FDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNqQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU07b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHNDQUFzQyxDQUFDLENBQUM7WUFDM0YsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSx3Q0FBd0MsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xHLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgb2YsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vYXBwL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnZpcm9ubWVudExvYWRlcjxUIGV4dGVuZHMgRW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudD4ge1xuICBhYnN0cmFjdCBsb2FkKCk6IFByb21pc2U8VD47XG5cbiAgYWJzdHJhY3QgZ2V0KCk6IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudEh0dHBMb2FkZXI8VCBleHRlbmRzIEVudmlyb25tZW50ID0gRW52aXJvbm1lbnQ+IGV4dGVuZHMgRW52aXJvbm1lbnRMb2FkZXI8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dQcmVmaXggPSAnW2Vudmlyb25tZW50LWxvYWRlcl0gJztcblxuICBwcm90ZWN0ZWQgX2RlYnVnOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX2Vudmlyb25tZW50OiBUO1xuICBwcm90ZWN0ZWQgX2xvYWRlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2V4dGVybmFsRW52aXJvbm1lbnRVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBkZWZhdWx0RW52aXJvbm1lbnQ/OiBUXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gQ29weSBkZWZhdWx0IGVudmlyb25tZW50IChiZWNhdXNlIGNhbiBiZSByZWFkb25seSlcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRFbnZpcm9ubWVudCB8fCA8VD57fSk7XG4gICAgdGhpcy5fZXh0ZXJuYWxFbnZpcm9ubWVudFVybCA9IHRoaXMuX2Vudmlyb25tZW50LmV4dGVybmFsRW52aXJvbm1lbnRVcmw7XG4gICAgdGhpcy5fZGVidWcgPSAhdGhpcy5fZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxvYWRlZCBlbnZpcm9ubWVudC4gU2hvdWxkIGJlIGNhbGwgYWZ0ZXIgbG9hZGVkXG4gICAqL1xuICBnZXQoKTogVCB7XG4gICAgaWYgKCF0aGlzLl9sb2FkZWQgJiYgaXNOb3ROaWxPckJsYW5rKHRoaXMuX2V4dGVybmFsRW52aXJvbm1lbnRVcmwpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fUVudmlyb25tZW50SHR0cExvYWRlci5nZXQoKSBzaG91bGQgYmUgY2FsbGVkIEFGVEVSIGxvYWQoKSBmaW5pc2hlZC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodGhpcy5fbG9hZGVkKSByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7IC8vIEFscmVhZHkgbG9hZGVkXG5cbiAgICB0cnkge1xuICAgICAgLy8gSWYgaXQgaGFzIGFuIGV4dGVybmFsIHVybFxuICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayh0aGlzLl9leHRlcm5hbEVudmlyb25tZW50VXJsKSkge1xuICAgICAgICAvLyBERUJVR1xuICAgICAgICAvL2F3YWl0IHNsZWVwKDQwMDApO1xuXG4gICAgICAgIC8vIExvYWQgZXh0ZXJuYWwgZW52aXJvbm1lbnQgZmlsZVxuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgdGhpcy5mZXRjaCh0aGlzLl9leHRlcm5hbEVudmlyb25tZW50VXJsKTtcblxuICAgICAgICAvLyBQYXRjaCB0aGUgZXhpc3RpbmcgZW52aXJvbm1lbnRcbiAgICAgICAgaWYgKGpzb24pIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2Vudmlyb25tZW50LCBqc29uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9uIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGZldGNoKHVybDogc3RyaW5nKTogUHJvbWlzZTxQYXJ0aWFsPFQ+PiB7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Mb2FkaW5nIGV4dGVybmFsIGVudmlyb25tZW50IGZyb20geyR7dXJsfX0uLi5gKTtcblxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuaHR0cC5nZXQ8UGFydGlhbDxUPj4odXJsKS5waXBlKFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICAgdGFwKChqc29uKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1FeHRlcm5hbCBlbnZpcm9ubWVudCBsb2FkZWRgLCBqc29uKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fUV4dGVybmFsIGVudmlyb25tZW50IG5vdCBmb3VuZCAoNDA0KWApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH1GYWlsZWQgdG8gbG9hZCBleHRlcm5hbCBlbnZpcm9ubWVudDogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRzFELE1BQU0sT0FBZ0IsaUJBQWlCO3dHQUFqQixpQkFBaUI7NEZBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEdEMsU0FBUzs7QUFPVixNQUFNLE9BQU8scUJBQTJELFNBQVEsaUJBQW9CO0lBU3RGO0lBUkssVUFBVSxHQUFHLHVCQUF1QixDQUFDO0lBRTVDLE1BQU0sQ0FBVTtJQUNoQixZQUFZLENBQUk7SUFDaEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNQLHVCQUF1QixDQUFTO0lBRW5ELFlBQ1ksSUFBZ0IsRUFDMUIsa0JBQXNCO1FBRXRCLEtBQUssRUFBRSxDQUFDO1FBSEUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUkxQixxREFBcUQ7UUFDckQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxrQkFBa0IsSUFBTyxFQUFFLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQztRQUN4RSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDO1lBQ25FLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxxRUFBcUUsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLGlCQUFpQjtRQUU3RCxJQUFJLENBQUM7WUFDSCw0QkFBNEI7WUFDNUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztnQkFDbEQsUUFBUTtnQkFDUixvQkFBb0I7Z0JBRXBCLGlDQUFpQztnQkFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUU1RCxpQ0FBaUM7Z0JBQ2pDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELDhCQUE4QjtJQUVwQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQVc7UUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxzQ0FBc0MsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUVsRyxPQUFPLGNBQWMsQ0FDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNqQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU07b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHNDQUFzQyxDQUFDLENBQUM7WUFDM0YsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSx3Q0FBd0MsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xHLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgb2YsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vYXBwL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnZpcm9ubWVudExvYWRlcjxUIGV4dGVuZHMgRW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudD4ge1xuICBhYnN0cmFjdCBsb2FkKCk6IFByb21pc2U8VD47XG5cbiAgYWJzdHJhY3QgZ2V0KCk6IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudEh0dHBMb2FkZXI8VCBleHRlbmRzIEVudmlyb25tZW50ID0gRW52aXJvbm1lbnQ+IGV4dGVuZHMgRW52aXJvbm1lbnRMb2FkZXI8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dQcmVmaXggPSAnW2Vudmlyb25tZW50LWxvYWRlcl0gJztcblxuICBwcm90ZWN0ZWQgX2RlYnVnOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX2Vudmlyb25tZW50OiBUO1xuICBwcm90ZWN0ZWQgX2xvYWRlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2V4dGVybmFsRW52aXJvbm1lbnRVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBkZWZhdWx0RW52aXJvbm1lbnQ/OiBUXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gQ29weSBkZWZhdWx0IGVudmlyb25tZW50IChiZWNhdXNlIGNhbiBiZSByZWFkb25seSlcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRFbnZpcm9ubWVudCB8fCA8VD57fSk7XG4gICAgdGhpcy5fZXh0ZXJuYWxFbnZpcm9ubWVudFVybCA9IHRoaXMuX2Vudmlyb25tZW50LmV4dGVybmFsRW52aXJvbm1lbnRVcmw7XG4gICAgdGhpcy5fZGVidWcgPSAhdGhpcy5fZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxvYWRlZCBlbnZpcm9ubWVudC4gU2hvdWxkIGJlIGNhbGwgYWZ0ZXIgbG9hZGVkXG4gICAqL1xuICBnZXQoKTogVCB7XG4gICAgaWYgKCF0aGlzLl9sb2FkZWQgJiYgaXNOb3ROaWxPckJsYW5rKHRoaXMuX2V4dGVybmFsRW52aXJvbm1lbnRVcmwpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fUVudmlyb25tZW50SHR0cExvYWRlci5nZXQoKSBzaG91bGQgYmUgY2FsbGVkIEFGVEVSIGxvYWQoKSBmaW5pc2hlZC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodGhpcy5fbG9hZGVkKSByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7IC8vIEFscmVhZHkgbG9hZGVkXG5cbiAgICB0cnkge1xuICAgICAgLy8gSWYgaXQgaGFzIGFuIGV4dGVybmFsIHVybFxuICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayh0aGlzLl9leHRlcm5hbEVudmlyb25tZW50VXJsKSkge1xuICAgICAgICAvLyBERUJVR1xuICAgICAgICAvL2F3YWl0IHNsZWVwKDQwMDApO1xuXG4gICAgICAgIC8vIExvYWQgZXh0ZXJuYWwgZW52aXJvbm1lbnQgZmlsZVxuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgdGhpcy5mZXRjaCh0aGlzLl9leHRlcm5hbEVudmlyb25tZW50VXJsKTtcblxuICAgICAgICAvLyBQYXRjaCB0aGUgZXhpc3RpbmcgZW52aXJvbm1lbnRcbiAgICAgICAgaWYgKGpzb24pIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2Vudmlyb25tZW50LCBqc29uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9uIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGZldGNoKHVybDogc3RyaW5nKTogUHJvbWlzZTxQYXJ0aWFsPFQ+PiB7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Mb2FkaW5nIGV4dGVybmFsIGVudmlyb25tZW50IGZyb20geyR7dXJsfX0uLi5gKTtcblxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuaHR0cC5nZXQ8UGFydGlhbDxUPj4odXJsKS5waXBlKFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgICAgdGFwKChqc29uKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1FeHRlcm5hbCBlbnZpcm9ubWVudCBsb2FkZWRgLCBqc29uKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fUV4dGVybmFsIGVudmlyb25tZW50IG5vdCBmb3VuZCAoNDA0KWApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH1GYWlsZWQgdG8gbG9hZCBleHRlcm5hbCBlbnZpcm9ubWVudDogJHtlcnJvci5tZXNzYWdlfWAsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==