@sumaris-net/ngx-components 2.8.13 → 2.9.0-alpha1

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 (254) hide show
  1. package/doc/changelog.md +6 -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.modal.mjs +4 -4
  13. package/esm2022/src/app/core/account/token.table.mjs +4 -4
  14. package/esm2022/src/app/core/auth/auth.form.mjs +4 -4
  15. package/esm2022/src/app/core/auth/auth.modal.mjs +4 -4
  16. package/esm2022/src/app/core/auth/auth.module.mjs +5 -5
  17. package/esm2022/src/app/core/core.module.mjs +5 -5
  18. package/esm2022/src/app/core/core.testing.module.mjs +5 -5
  19. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +4 -4
  20. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +5 -5
  21. package/esm2022/src/app/core/form/entity/editor.class.mjs +4 -4
  22. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +4 -4
  23. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +4 -4
  24. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +4 -4
  25. package/esm2022/src/app/core/form/entity/entity.module.mjs +5 -5
  26. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +4 -4
  27. package/esm2022/src/app/core/form/form-container.class.mjs +4 -4
  28. package/esm2022/src/app/core/form/form.class.mjs +4 -4
  29. package/esm2022/src/app/core/form/form.module.mjs +5 -5
  30. package/esm2022/src/app/core/form/list/list.form.mjs +4 -4
  31. package/esm2022/src/app/core/form/list/list.module.mjs +5 -5
  32. package/esm2022/src/app/core/form/properties/properties.form.mjs +4 -4
  33. package/esm2022/src/app/core/form/properties/properties.module.mjs +5 -5
  34. package/esm2022/src/app/core/form/properties/properties.table.mjs +7 -7
  35. package/esm2022/src/app/core/form/properties/property.validator.mjs +4 -4
  36. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +4 -4
  37. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +5 -5
  38. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +4 -4
  39. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +5 -5
  40. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +4 -4
  41. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +5 -5
  42. package/esm2022/src/app/core/graphql/graphql.module.mjs +5 -5
  43. package/esm2022/src/app/core/graphql/graphql.service.mjs +4 -4
  44. package/esm2022/src/app/core/home/home.mjs +4 -4
  45. package/esm2022/src/app/core/home/home.module.mjs +5 -5
  46. package/esm2022/src/app/core/icon/icon.component.mjs +4 -4
  47. package/esm2022/src/app/core/icon/icon.module.mjs +5 -5
  48. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +4 -4
  49. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +5 -5
  50. package/esm2022/src/app/core/menu/menu.component.mjs +4 -4
  51. package/esm2022/src/app/core/menu/menu.module.mjs +5 -5
  52. package/esm2022/src/app/core/menu/menu.service.mjs +4 -4
  53. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +4 -4
  54. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +4 -4
  55. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +4 -4
  56. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +5 -5
  57. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +4 -4
  58. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +5 -5
  59. package/esm2022/src/app/core/peer/select-peer.modal.mjs +4 -4
  60. package/esm2022/src/app/core/peer/select-peer.module.mjs +5 -5
  61. package/esm2022/src/app/core/register/register-confirm.page.mjs +4 -4
  62. package/esm2022/src/app/core/register/register.form.mjs +4 -4
  63. package/esm2022/src/app/core/register/register.modal.mjs +4 -4
  64. package/esm2022/src/app/core/register/register.module.mjs +5 -5
  65. package/esm2022/src/app/core/services/account.service.mjs +4 -4
  66. package/esm2022/src/app/core/services/auth-guard.service.mjs +4 -4
  67. package/esm2022/src/app/core/services/base-entity-service.class.mjs +4 -4
  68. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +4 -4
  69. package/esm2022/src/app/core/services/config.service.mjs +4 -4
  70. package/esm2022/src/app/core/services/crypto.service.mjs +4 -4
  71. package/esm2022/src/app/core/services/local-settings.service.mjs +4 -4
  72. package/esm2022/src/app/core/services/network.service.mjs +4 -4
  73. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +9 -9
  74. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +5 -5
  75. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +5 -5
  76. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +5 -5
  77. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +4 -4
  78. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +9 -9
  79. package/esm2022/src/app/core/services/platform.service.mjs +4 -4
  80. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +4 -4
  81. package/esm2022/src/app/core/services/testing/referential.validator.mjs +4 -4
  82. package/esm2022/src/app/core/services/validator/account.validator.mjs +4 -4
  83. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +4 -4
  84. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +4 -4
  85. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +4 -4
  86. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +4 -4
  87. package/esm2022/src/app/core/settings/settings.module.mjs +5 -5
  88. package/esm2022/src/app/core/settings/settings.page.mjs +4 -4
  89. package/esm2022/src/app/core/table/actions-column.component.mjs +4 -4
  90. package/esm2022/src/app/core/table/async-table.class.mjs +4 -4
  91. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +4 -4
  92. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +4 -4
  93. package/esm2022/src/app/core/table/memory-table.class.mjs +4 -4
  94. package/esm2022/src/app/core/table/row-field.component.mjs +4 -4
  95. package/esm2022/src/app/core/table/table-select-columns.component.mjs +4 -4
  96. package/esm2022/src/app/core/table/table.class.mjs +4 -4
  97. package/esm2022/src/app/core/table/table.module.mjs +5 -5
  98. package/esm2022/src/app/core/table/table.pipes.mjs +10 -10
  99. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +4 -4
  100. package/esm2022/src/app/core/table/testing/table.testing.mjs +5 -5
  101. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +5 -5
  102. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +4 -4
  103. package/esm2022/src/app/core/table/testing/table2.testing.mjs +5 -5
  104. package/esm2022/src/app/shared/audio/audio.mjs +4 -4
  105. package/esm2022/src/app/shared/audio/audio.testing.mjs +4 -4
  106. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +5 -5
  107. package/esm2022/src/app/shared/capacitor/keyboard.mjs +4 -4
  108. package/esm2022/src/app/shared/debug/debug.component.mjs +4 -4
  109. package/esm2022/src/app/shared/debug/debug.module.mjs +5 -5
  110. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +4 -4
  111. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +4 -4
  112. package/esm2022/src/app/shared/directives/directives.module.mjs +5 -5
  113. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +4 -4
  114. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +4 -4
  115. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +4 -4
  116. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +4 -4
  117. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +5 -5
  118. package/esm2022/src/app/shared/file/file.service.mjs +4 -4
  119. package/esm2022/src/app/shared/form/field.component.mjs +5 -5
  120. package/esm2022/src/app/shared/form/loading-spinner.mjs +4 -4
  121. package/esm2022/src/app/shared/gesture/gesture-config.mjs +4 -4
  122. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +4 -4
  123. package/esm2022/src/app/shared/help/help.modal.mjs +4 -4
  124. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +4 -4
  125. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +4 -4
  126. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +5 -5
  127. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +4 -4
  128. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +5 -5
  129. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +4 -4
  130. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +4 -4
  131. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +5 -5
  132. package/esm2022/src/app/shared/image/image.module.mjs +5 -5
  133. package/esm2022/src/app/shared/image/image.service.mjs +4 -4
  134. package/esm2022/src/app/shared/logging/logging-service.class.mjs +4 -4
  135. package/esm2022/src/app/shared/logging/logging-service.module.mjs +5 -5
  136. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +74 -42
  137. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +5 -5
  138. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +7 -5
  139. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +4 -4
  140. package/esm2022/src/app/shared/material/badge/badge.module.mjs +5 -5
  141. package/esm2022/src/app/shared/material/badge/badge.test.mjs +4 -4
  142. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +5 -5
  143. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +4 -4
  144. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +4 -4
  145. package/esm2022/src/app/shared/material/chips/chips.module.mjs +5 -5
  146. package/esm2022/src/app/shared/material/chips/material.chips.mjs +77 -64
  147. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +4 -4
  148. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +5 -5
  149. package/esm2022/src/app/shared/material/datetime/material.date.mjs +4 -4
  150. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +4 -4
  151. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +4 -4
  152. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +4 -4
  153. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +4 -4
  154. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +4 -4
  155. package/esm2022/src/app/shared/material/duration/duration.module.mjs +5 -5
  156. package/esm2022/src/app/shared/material/duration/material.duration.mjs +4 -4
  157. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +4 -4
  158. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +4 -4
  159. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +5 -5
  160. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +4 -4
  161. package/esm2022/src/app/shared/material/material.module.mjs +5 -5
  162. package/esm2022/src/app/shared/material/material.testing.module.mjs +5 -5
  163. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +4 -4
  164. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +4 -4
  165. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +4 -4
  166. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +5 -5
  167. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +4 -4
  168. package/esm2022/src/app/shared/material/testing/common.test.mjs +4 -4
  169. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +4 -4
  170. package/esm2022/src/app/shared/material/text/text-form.component.mjs +4 -4
  171. package/esm2022/src/app/shared/material/text/text-form.module.mjs +5 -5
  172. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +4 -4
  173. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +5 -5
  174. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +4 -4
  175. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +28 -28
  176. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +4 -4
  177. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +4 -4
  178. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +5 -5
  179. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +7 -7
  180. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +5 -5
  181. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +5 -5
  182. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +4 -4
  183. package/esm2022/src/app/shared/pipes/form.pipes.mjs +19 -19
  184. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +5 -5
  185. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +10 -10
  186. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +13 -13
  187. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +4 -4
  188. package/esm2022/src/app/shared/pipes/math.pipes.mjs +13 -13
  189. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +4 -4
  190. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +5 -5
  191. package/esm2022/src/app/shared/pipes/pipes.module.mjs +5 -5
  192. package/esm2022/src/app/shared/pipes/property.pipes.mjs +15 -15
  193. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +22 -22
  194. package/esm2022/src/app/shared/pipes/string.pipes.mjs +31 -31
  195. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +9 -9
  196. package/esm2022/src/app/shared/pipes/types.pipes.mjs +13 -13
  197. package/esm2022/src/app/shared/rx-state.module.mjs +5 -5
  198. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +4 -4
  199. package/esm2022/src/app/shared/services/progress-bar.service.mjs +4 -4
  200. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +4 -4
  201. package/esm2022/src/app/shared/services/startable-service.class.mjs +4 -4
  202. package/esm2022/src/app/shared/services/translate-context.service.mjs +4 -4
  203. package/esm2022/src/app/shared/shared-routing.module.mjs +8 -8
  204. package/esm2022/src/app/shared/shared.module.mjs +5 -5
  205. package/esm2022/src/app/shared/shared.testing.module.mjs +5 -5
  206. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +4 -4
  207. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +5 -5
  208. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +5 -5
  209. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +5 -5
  210. package/esm2022/src/app/shared/storage/storage.service.mjs +4 -4
  211. package/esm2022/src/app/shared/testing/observable.test.mjs +4 -4
  212. package/esm2022/src/app/shared/testing/tests.page.mjs +4 -4
  213. package/esm2022/src/app/shared/toast/toast.testing.mjs +4 -4
  214. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +5 -5
  215. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +4 -4
  216. package/esm2022/src/app/shared/toolbar/toolbar.mjs +4 -4
  217. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +5 -5
  218. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +4 -4
  219. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +5 -5
  220. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +4 -4
  221. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +4 -4
  222. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +4 -4
  223. package/esm2022/src/app/social/job/job.module.mjs +5 -5
  224. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +4 -4
  225. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +4 -4
  226. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +4 -4
  227. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +4 -4
  228. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +4 -4
  229. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +4 -4
  230. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +5 -5
  231. package/esm2022/src/app/social/message/message.form.mjs +4 -4
  232. package/esm2022/src/app/social/message/message.modal.mjs +4 -4
  233. package/esm2022/src/app/social/message/message.module.mjs +5 -5
  234. package/esm2022/src/app/social/message/message.service.mjs +4 -4
  235. package/esm2022/src/app/social/social.module.mjs +5 -5
  236. package/esm2022/src/app/social/social.testing.module.mjs +5 -5
  237. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +4 -4
  238. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +4 -4
  239. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +4 -4
  240. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +5 -5
  241. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +4 -4
  242. package/esm2022/src/app/social/user-event/user-event.module.mjs +5 -5
  243. package/esm2022/src/app/social/user-event/user-event.service.mjs +4 -4
  244. package/esm2022/src/environments/environment.loader.mjs +4 -4
  245. package/fesm2022/sumaris-net.ngx-components.mjs +1110 -1063
  246. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  247. package/package.json +2 -2
  248. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +19 -3
  249. package/src/app/shared/material/chips/material.chips.d.ts +27 -16
  250. package/src/assets/i18n/en-US.json +2 -0
  251. package/src/assets/i18n/en.json +2 -0
  252. package/src/assets/i18n/fr.json +2 -0
  253. package/src/assets/manifest.json +1 -1
  254. package/src/theme/_ngx-components.scss +55 -15
@@ -47,8 +47,8 @@ const routes = [
47
47
  },
48
48
  ];
49
49
  export class CoreTestingModule {
50
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CoreTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
51
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: CoreTestingModule, imports: [CommonModule, i1.TranslateModule, i2.RouterModule,
50
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CoreTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
51
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: CoreTestingModule, imports: [CommonModule, i1.TranslateModule, i2.RouterModule,
52
52
  // Sub modules
53
53
  TableTestingModule,
54
54
  TextPopoverTestingModule,
@@ -57,7 +57,7 @@ export class CoreTestingModule {
57
57
  TableTestingModule,
58
58
  TextPopoverTestingModule,
59
59
  PropertiesFormTestingModule] });
60
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CoreTestingModule, imports: [CommonModule,
60
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CoreTestingModule, imports: [CommonModule,
61
61
  TranslateModule.forChild(),
62
62
  RouterModule.forChild(routes),
63
63
  // Sub modules
@@ -69,7 +69,7 @@ export class CoreTestingModule {
69
69
  TextPopoverTestingModule,
70
70
  PropertiesFormTestingModule] });
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CoreTestingModule, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CoreTestingModule, decorators: [{
73
73
  type: NgModule,
74
74
  args: [{
75
75
  imports: [
@@ -90,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
90
90
  ],
91
91
  }]
92
92
  }] });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS50ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9jb3JlLnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQUVoRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBa0I7SUFDL0MsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtJQUMzQyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUU7SUFDL0QsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFO0lBQ3BFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUU7SUFDN0QsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFO0NBQ3BFLENBQUM7QUFFRixNQUFNLE1BQU0sR0FBVztJQUNyQjtRQUNFLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLE1BQU07UUFDakIsVUFBVSxFQUFFLE9BQU87S0FDcEI7SUFDRDtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLGFBQWE7S0FDekI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLGNBQWM7S0FDMUI7SUFDRDtRQUNFLElBQUksRUFBRSxjQUFjO1FBQ3BCLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLFNBQVMsRUFBRSxzQkFBc0I7S0FDbEM7SUFDRDtRQUNFLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLHNCQUFzQjtLQUNsQztDQUNGLENBQUM7QUFzQkYsTUFBTSxPQUFPLGlCQUFpQjt1R0FBakIsaUJBQWlCO3dHQUFqQixpQkFBaUIsWUFsQjFCLFlBQVk7WUFJWixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLHdCQUF3QjtZQUN4QiwyQkFBMkIsYUFHM0IsWUFBWTtZQUVaLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsd0JBQXdCO1lBQ3hCLDJCQUEyQjt3R0FHbEIsaUJBQWlCLFlBbEIxQixZQUFZO1lBQ1osZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUMxQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUU3QixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLHdCQUF3QjtZQUN4QiwyQkFBMkIsRUFHM0IsWUFBWTtZQUVaLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsd0JBQXdCO1lBQ3hCLDJCQUEyQjs7MkZBR2xCLGlCQUFpQjtrQkFwQjdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZUFBZSxDQUFDLFFBQVEsRUFBRTt3QkFDMUIsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7d0JBRTdCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLDJCQUEyQjtxQkFDNUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBRVosY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3FCQUM1QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUYWJsZVRlc3RpbmdNb2R1bGUgfSBmcm9tICcuL3RhYmxlL3Rlc3RpbmcvdGFibGUudGVzdGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgVGFibGVUZXN0UGFnZSB9IGZyb20gJy4vdGFibGUvdGVzdGluZy90YWJsZS50ZXN0aW5nJztcbmltcG9ydCB7IFRleHRQb3BvdmVyVGVzdGluZ01vZHVsZSB9IGZyb20gJy4vZm9ybS90ZXh0LXBvcG92ZXIvdGVzdGluZy90ZXh0LXBvcG92ZXIudGVzdGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgVGV4dFBvcG92ZXJUZXN0aW5nUGFnZSB9IGZyb20gJy4vZm9ybS90ZXh0LXBvcG92ZXIvdGVzdGluZy90ZXh0LXBvcG92ZXIudGVzdGluZyc7XG5pbXBvcnQgeyBUZXN0aW5nUGFnZSB9IGZyb20gJy4uL3NoYXJlZC90ZXN0aW5nL3Rlc3RzLnBhZ2UnO1xuaW1wb3J0IHsgUHJvcGVydGllc0Zvcm1UZXN0aW5nTW9kdWxlIH0gZnJvbSAnLi9mb3JtL3Byb3BlcnRpZXMvdGVzdGluZy9wcm9wZXJ0aWVzLWZvcm0udGVzdGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgUHJvcGVydGllc0Zvcm1UZXN0UGFnZSB9IGZyb20gJy4vZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QnO1xuaW1wb3J0IHsgVGFibGUyVGVzdFBhZ2UgfSBmcm9tICcuL3RhYmxlL3Rlc3RpbmcvdGFibGUyLnRlc3RpbmcnO1xuXG5leHBvcnQgY29uc3QgQ09SRV9URVNUSU5HX1BBR0VTOiBUZXN0aW5nUGFnZVtdID0gW1xuICB7IGxhYmVsOiAnQ29yZSBjb21wb25lbnRzJywgZGl2aWRlcjogdHJ1ZSB9LFxuICB7IGxhYmVsOiAnVGFibGUgKGNsaWNrIHRvIGVkaXQpJywgcGFnZTogJy90ZXN0aW5nL2NvcmUvdGFibGUnIH0sXG4gIHsgbGFiZWw6ICdUYWJsZSAyIChjbGljayB0byBzZWxlY3QpJywgcGFnZTogJy90ZXN0aW5nL2NvcmUvdGFibGUyJyB9LFxuICB7IGxhYmVsOiAnVGV4dCBwb3BvdmVyJywgcGFnZTogJy90ZXN0aW5nL2NvcmUvdGV4dC1wb3BvdmVyJyB9LFxuICB7IGxhYmVsOiAnUHJvcGVydGllcyBmb3JtJywgcGFnZTogJy90ZXN0aW5nL2NvcmUvcHJvcGVydGllcy1mb3JtJyB9LFxuXTtcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICByZWRpcmVjdFRvOiAndGFibGUnLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3RhYmxlJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFRhYmxlVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAndGFibGUyJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFRhYmxlMlRlc3RQYWdlLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3RleHQtcG9wb3ZlcicsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBUZXh0UG9wb3ZlclRlc3RpbmdQYWdlLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3Byb3BlcnRpZXMtZm9ybScsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBQcm9wZXJ0aWVzRm9ybVRlc3RQYWdlLFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKSxcblxuICAgIC8vIFN1YiBtb2R1bGVzXG4gICAgVGFibGVUZXN0aW5nTW9kdWxlLFxuICAgIFRleHRQb3BvdmVyVGVzdGluZ01vZHVsZSxcbiAgICBQcm9wZXJ0aWVzRm9ybVRlc3RpbmdNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBSb3V0ZXJNb2R1bGUsXG5cbiAgICAvLyBTdWIgbW9kdWxlc1xuICAgIFRhYmxlVGVzdGluZ01vZHVsZSxcbiAgICBUZXh0UG9wb3ZlclRlc3RpbmdNb2R1bGUsXG4gICAgUHJvcGVydGllc0Zvcm1UZXN0aW5nTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3JlVGVzdGluZ01vZHVsZSB7fVxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS50ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9jb3JlLnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQUVoRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBa0I7SUFDL0MsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtJQUMzQyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUU7SUFDL0QsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFO0lBQ3BFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUU7SUFDN0QsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFO0NBQ3BFLENBQUM7QUFFRixNQUFNLE1BQU0sR0FBVztJQUNyQjtRQUNFLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLE1BQU07UUFDakIsVUFBVSxFQUFFLE9BQU87S0FDcEI7SUFDRDtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLGFBQWE7S0FDekI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLGNBQWM7S0FDMUI7SUFDRDtRQUNFLElBQUksRUFBRSxjQUFjO1FBQ3BCLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLFNBQVMsRUFBRSxzQkFBc0I7S0FDbEM7SUFDRDtRQUNFLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLHNCQUFzQjtLQUNsQztDQUNGLENBQUM7QUFzQkYsTUFBTSxPQUFPLGlCQUFpQjt3R0FBakIsaUJBQWlCO3lHQUFqQixpQkFBaUIsWUFsQjFCLFlBQVk7WUFJWixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLHdCQUF3QjtZQUN4QiwyQkFBMkIsYUFHM0IsWUFBWTtZQUVaLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsd0JBQXdCO1lBQ3hCLDJCQUEyQjt5R0FHbEIsaUJBQWlCLFlBbEIxQixZQUFZO1lBQ1osZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUMxQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUU3QixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLHdCQUF3QjtZQUN4QiwyQkFBMkIsRUFHM0IsWUFBWTtZQUVaLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsd0JBQXdCO1lBQ3hCLDJCQUEyQjs7NEZBR2xCLGlCQUFpQjtrQkFwQjdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZUFBZSxDQUFDLFFBQVEsRUFBRTt3QkFDMUIsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7d0JBRTdCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLDJCQUEyQjtxQkFDNUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBRVosY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3FCQUM1QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUYWJsZVRlc3RpbmdNb2R1bGUgfSBmcm9tICcuL3RhYmxlL3Rlc3RpbmcvdGFibGUudGVzdGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgVGFibGVUZXN0UGFnZSB9IGZyb20gJy4vdGFibGUvdGVzdGluZy90YWJsZS50ZXN0aW5nJztcbmltcG9ydCB7IFRleHRQb3BvdmVyVGVzdGluZ01vZHVsZSB9IGZyb20gJy4vZm9ybS90ZXh0LXBvcG92ZXIvdGVzdGluZy90ZXh0LXBvcG92ZXIudGVzdGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgVGV4dFBvcG92ZXJUZXN0aW5nUGFnZSB9IGZyb20gJy4vZm9ybS90ZXh0LXBvcG92ZXIvdGVzdGluZy90ZXh0LXBvcG92ZXIudGVzdGluZyc7XG5pbXBvcnQgeyBUZXN0aW5nUGFnZSB9IGZyb20gJy4uL3NoYXJlZC90ZXN0aW5nL3Rlc3RzLnBhZ2UnO1xuaW1wb3J0IHsgUHJvcGVydGllc0Zvcm1UZXN0aW5nTW9kdWxlIH0gZnJvbSAnLi9mb3JtL3Byb3BlcnRpZXMvdGVzdGluZy9wcm9wZXJ0aWVzLWZvcm0udGVzdGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgUHJvcGVydGllc0Zvcm1UZXN0UGFnZSB9IGZyb20gJy4vZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QnO1xuaW1wb3J0IHsgVGFibGUyVGVzdFBhZ2UgfSBmcm9tICcuL3RhYmxlL3Rlc3RpbmcvdGFibGUyLnRlc3RpbmcnO1xuXG5leHBvcnQgY29uc3QgQ09SRV9URVNUSU5HX1BBR0VTOiBUZXN0aW5nUGFnZVtdID0gW1xuICB7IGxhYmVsOiAnQ29yZSBjb21wb25lbnRzJywgZGl2aWRlcjogdHJ1ZSB9LFxuICB7IGxhYmVsOiAnVGFibGUgKGNsaWNrIHRvIGVkaXQpJywgcGFnZTogJy90ZXN0aW5nL2NvcmUvdGFibGUnIH0sXG4gIHsgbGFiZWw6ICdUYWJsZSAyIChjbGljayB0byBzZWxlY3QpJywgcGFnZTogJy90ZXN0aW5nL2NvcmUvdGFibGUyJyB9LFxuICB7IGxhYmVsOiAnVGV4dCBwb3BvdmVyJywgcGFnZTogJy90ZXN0aW5nL2NvcmUvdGV4dC1wb3BvdmVyJyB9LFxuICB7IGxhYmVsOiAnUHJvcGVydGllcyBmb3JtJywgcGFnZTogJy90ZXN0aW5nL2NvcmUvcHJvcGVydGllcy1mb3JtJyB9LFxuXTtcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICByZWRpcmVjdFRvOiAndGFibGUnLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3RhYmxlJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFRhYmxlVGVzdFBhZ2UsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAndGFibGUyJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFRhYmxlMlRlc3RQYWdlLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3RleHQtcG9wb3ZlcicsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBUZXh0UG9wb3ZlclRlc3RpbmdQYWdlLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3Byb3BlcnRpZXMtZm9ybScsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBQcm9wZXJ0aWVzRm9ybVRlc3RQYWdlLFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKSxcblxuICAgIC8vIFN1YiBtb2R1bGVzXG4gICAgVGFibGVUZXN0aW5nTW9kdWxlLFxuICAgIFRleHRQb3BvdmVyVGVzdGluZ01vZHVsZSxcbiAgICBQcm9wZXJ0aWVzRm9ybVRlc3RpbmdNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBSb3V0ZXJNb2R1bGUsXG5cbiAgICAvLyBTdWIgbW9kdWxlc1xuICAgIFRhYmxlVGVzdGluZ01vZHVsZSxcbiAgICBUZXh0UG9wb3ZlclRlc3RpbmdNb2R1bGUsXG4gICAgUHJvcGVydGllc0Zvcm1UZXN0aW5nTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3JlVGVzdGluZ01vZHVsZSB7fVxuIl19
@@ -62,10 +62,10 @@ export class FormButtonsBarComponent {
62
62
  this.onSaveAndNext.complete();
63
63
  this.onSaveAndClose.complete();
64
64
  }
65
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FormButtonsBarComponent, deps: [{ token: i1.Hotkeys }, { token: i2.MenuService }], target: i0.ɵɵFactoryTarget.Component });
66
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: FormButtonsBarComponent, selector: "app-form-buttons-bar", inputs: { disabled: "disabled", disabledCancel: "disabledCancel", disabledEscape: "disabledEscape", classList: "classList", saveButtonColor: "saveButtonColor", backText: "backText", cancelText: "cancelText", nextText: "nextText", showBack: "showBack", showCancel: "showCancel", showNext: "showNext", showSave: "showSave" }, outputs: { onCancel: "onCancel", onSave: "onSave", onNext: "onNext", onBack: "onBack", onSaveAndClose: "onSaveAndClose", onSaveAndNext: "onSaveAndNext" }, providers: [{ provide: FormButtonsBarToken, useExisting: FormButtonsBarComponent }], ngImport: i0, template: "<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <!-- show menu button -->\n <ion-col size=\"auto\" class=\"hidden-xs hidden-sm\">\n <ion-menu-toggle>\n <button\n mat-icon-button\n color=\"accent\"\n [title]=\"'COMMON.BTN_SHOW_MENU' | translate\"\n (click)=\"menu.toggleSplitPaneWhen()\"\n >\n <mat-icon><span>&#xbb;</span></mat-icon>\n </button>\n </ion-menu-toggle>\n </ion-col>\n\n <ion-col class=\"app-form-buttons-bar-content\">\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\" class=\"app-form-buttons-bar-buttons\">\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- back -->\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n (click)=\"onBack.emit($event)\"\n (keyup.enter)=\"onBack.emit($event)\"\n *ngIf=\"showBack && onBack.observed\"\n class=\"back\"\n >\n <ion-label>{{ backText | translate }}</ion-label>\n </ion-button>\n\n <!-- cancel -->\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n *ngIf=\"showCancel\"\n (click)=\"onCancel.emit($event)\"\n (keyup.enter)=\"onCancel.emit($event)\"\n [disabled]=\"disabledCancel\"\n class=\"cancel\"\n >\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label>{{ cancelText | translate }}</ion-label>\n </ion-button>\n\n <!-- next -->\n <ion-button\n fill=\"solid\"\n *ngIf=\"showNext && onNext.observed\"\n (click)=\"onNext.emit($event)\"\n (keyup.enter)=\"onNext.emit($event)\"\n class=\"next\"\n >\n <ion-label>{{ nextText | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <!-- save -->\n <ion-button\n [fill]=\"disabled ? 'clear' : 'solid'\"\n *ngIf=\"showSave && onSave.observed\"\n (click)=\"onSave.emit($event)\"\n (keyup.enter)=\"onSave.emit($event)\"\n [color]=\"saveButtonColor\"\n [disabled]=\"disabled\"\n class=\"save\"\n >\n <ion-label\n [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT' | translate\"\n [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP' | translate\"\n ></ion-label>\n </ion-button>\n\n <ng-content select=\"[slot=afterSave]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n", styles: [":host{width:100%}:host ion-toolbar{height:var(--app-form-buttons-bar-height);padding:0 6px}:host ion-col{padding:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonMenuToggle, selector: "ion-menu-toggle", inputs: ["autoHide", "menu"] }, { kind: "component", type: i4.IonRow, selector: "ion-row" }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
65
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FormButtonsBarComponent, deps: [{ token: i1.Hotkeys }, { token: i2.MenuService }], target: i0.ɵɵFactoryTarget.Component });
66
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FormButtonsBarComponent, selector: "app-form-buttons-bar", inputs: { disabled: "disabled", disabledCancel: "disabledCancel", disabledEscape: "disabledEscape", classList: "classList", saveButtonColor: "saveButtonColor", backText: "backText", cancelText: "cancelText", nextText: "nextText", showBack: "showBack", showCancel: "showCancel", showNext: "showNext", showSave: "showSave" }, outputs: { onCancel: "onCancel", onSave: "onSave", onNext: "onNext", onBack: "onBack", onSaveAndClose: "onSaveAndClose", onSaveAndNext: "onSaveAndNext" }, providers: [{ provide: FormButtonsBarToken, useExisting: FormButtonsBarComponent }], ngImport: i0, template: "<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <!-- show menu button -->\n <ion-col size=\"auto\" class=\"hidden-xs hidden-sm\">\n <ion-menu-toggle>\n <button\n mat-icon-button\n color=\"accent\"\n [title]=\"'COMMON.BTN_SHOW_MENU' | translate\"\n (click)=\"menu.toggleSplitPaneWhen()\"\n >\n <mat-icon><span>&#xbb;</span></mat-icon>\n </button>\n </ion-menu-toggle>\n </ion-col>\n\n <ion-col class=\"app-form-buttons-bar-content\">\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\" class=\"app-form-buttons-bar-buttons\">\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- back -->\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n (click)=\"onBack.emit($event)\"\n (keyup.enter)=\"onBack.emit($event)\"\n *ngIf=\"showBack && onBack.observed\"\n class=\"back\"\n >\n <ion-label>{{ backText | translate }}</ion-label>\n </ion-button>\n\n <!-- cancel -->\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n *ngIf=\"showCancel\"\n (click)=\"onCancel.emit($event)\"\n (keyup.enter)=\"onCancel.emit($event)\"\n [disabled]=\"disabledCancel\"\n class=\"cancel\"\n >\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label>{{ cancelText | translate }}</ion-label>\n </ion-button>\n\n <!-- next -->\n <ion-button\n fill=\"solid\"\n *ngIf=\"showNext && onNext.observed\"\n (click)=\"onNext.emit($event)\"\n (keyup.enter)=\"onNext.emit($event)\"\n class=\"next\"\n >\n <ion-label>{{ nextText | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <!-- save -->\n <ion-button\n [fill]=\"disabled ? 'clear' : 'solid'\"\n *ngIf=\"showSave && onSave.observed\"\n (click)=\"onSave.emit($event)\"\n (keyup.enter)=\"onSave.emit($event)\"\n [color]=\"saveButtonColor\"\n [disabled]=\"disabled\"\n class=\"save\"\n >\n <ion-label\n [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT' | translate\"\n [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP' | translate\"\n ></ion-label>\n </ion-button>\n\n <ng-content select=\"[slot=afterSave]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n", styles: [":host{width:100%}:host ion-toolbar{height:var(--app-form-buttons-bar-height);padding:0 6px}:host ion-col{padding:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonMenuToggle, selector: "ion-menu-toggle", inputs: ["autoHide", "menu"] }, { kind: "component", type: i4.IonRow, selector: "ion-row" }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
67
67
  }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FormButtonsBarComponent, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FormButtonsBarComponent, decorators: [{
69
69
  type: Component,
70
70
  args: [{ selector: 'app-form-buttons-bar', providers: [{ provide: FormButtonsBarToken, useExisting: FormButtonsBarComponent }], template: "<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <!-- show menu button -->\n <ion-col size=\"auto\" class=\"hidden-xs hidden-sm\">\n <ion-menu-toggle>\n <button\n mat-icon-button\n color=\"accent\"\n [title]=\"'COMMON.BTN_SHOW_MENU' | translate\"\n (click)=\"menu.toggleSplitPaneWhen()\"\n >\n <mat-icon><span>&#xbb;</span></mat-icon>\n </button>\n </ion-menu-toggle>\n </ion-col>\n\n <ion-col class=\"app-form-buttons-bar-content\">\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\" class=\"app-form-buttons-bar-buttons\">\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- back -->\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n (click)=\"onBack.emit($event)\"\n (keyup.enter)=\"onBack.emit($event)\"\n *ngIf=\"showBack && onBack.observed\"\n class=\"back\"\n >\n <ion-label>{{ backText | translate }}</ion-label>\n </ion-button>\n\n <!-- cancel -->\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n *ngIf=\"showCancel\"\n (click)=\"onCancel.emit($event)\"\n (keyup.enter)=\"onCancel.emit($event)\"\n [disabled]=\"disabledCancel\"\n class=\"cancel\"\n >\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label>{{ cancelText | translate }}</ion-label>\n </ion-button>\n\n <!-- next -->\n <ion-button\n fill=\"solid\"\n *ngIf=\"showNext && onNext.observed\"\n (click)=\"onNext.emit($event)\"\n (keyup.enter)=\"onNext.emit($event)\"\n class=\"next\"\n >\n <ion-label>{{ nextText | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <!-- save -->\n <ion-button\n [fill]=\"disabled ? 'clear' : 'solid'\"\n *ngIf=\"showSave && onSave.observed\"\n (click)=\"onSave.emit($event)\"\n (keyup.enter)=\"onSave.emit($event)\"\n [color]=\"saveButtonColor\"\n [disabled]=\"disabled\"\n class=\"save\"\n >\n <ion-label\n [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT' | translate\"\n [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP' | translate\"\n ></ion-label>\n </ion-button>\n\n <ng-content select=\"[slot=afterSave]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n", styles: [":host{width:100%}:host ion-toolbar{height:var(--app-form-buttons-bar-height);padding:0 6px}:host ion-col{padding:0}\n"] }]
71
71
  }], ctorParameters: () => [{ type: i1.Hotkeys }, { type: i2.MenuService }], propDecorators: { disabled: [{
@@ -105,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
105
105
  }], onSaveAndNext: [{
106
106
  type: Output
107
107
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idXR0b25zLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9idXR0b25zL2Zvcm0tYnV0dG9ucy1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vYnV0dG9ucy9mb3JtLWJ1dHRvbnMtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFJdEQsTUFBTSxPQUFnQixtQkFBbUI7Q0FLeEM7QUFRRCxNQUFNLE9BQU8sdUJBQXVCO0lBNEJ0QjtJQTNCSixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVsQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixTQUFTLENBQVM7SUFFbEIsZUFBZSxHQUFxQixRQUFRLENBQUM7SUFFN0MsUUFBUSxHQUFHLGtCQUFrQixDQUFDO0lBQzlCLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQztJQUNoQyxRQUFRLEdBQUcsaUJBQWlCLENBQUM7SUFFN0IsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNoQixVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUVmLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBQ3JDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBQ25DLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBQ25DLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBQ25DLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBQzNDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRXBELFlBQ0UsT0FBZ0IsRUFDTixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBRTNCLFNBQVM7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsT0FBTzthQUNKLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLENBQUM7YUFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNqRCxDQUFDO1FBRUYsU0FBUztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixPQUFPO2FBQ0osV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzthQUNuRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDM0QsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNuRCxDQUFDO1FBRUYsU0FBUztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixPQUFPO2FBQ0osV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ3ZGLElBQUksQ0FDSCxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsNkNBQTZDO1FBQ2hFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0UsaUZBQWlGO1NBQ2xGO2FBQ0EsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7dUdBbkVVLHVCQUF1QjsyRkFBdkIsdUJBQXVCLDhnQkFGdkIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQywwQkNsQnJGLGsrRUFpRkE7OzJGRDdEYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGFBR3JCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyx5QkFBeUIsRUFBRSxDQUFDO3NHQUsxRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEhvdGtleXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaG90a2V5cy9ob3RrZXlzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVudS9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlZGVmaW5lZENvbG9ycyB9IGZyb20gJ0Bpb25pYy9jb3JlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvcm1CdXR0b25zQmFyVG9rZW4ge1xuICBhYnN0cmFjdCBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPEV2ZW50PjtcbiAgYWJzdHJhY3Qgb25TYXZlOiBFdmVudEVtaXR0ZXI8RXZlbnQ+O1xuICBhYnN0cmFjdCBvbk5leHQ6IEV2ZW50RW1pdHRlcjxFdmVudD47XG4gIGFic3RyYWN0IG9uQmFjazogRXZlbnRFbWl0dGVyPEV2ZW50Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZvcm0tYnV0dG9ucy1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1idXR0b25zLWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tYnV0dG9ucy1iYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGb3JtQnV0dG9uc0JhclRva2VuLCB1c2VFeGlzdGluZzogRm9ybUJ1dHRvbnNCYXJDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1CdXR0b25zQmFyQ29tcG9uZW50IGltcGxlbWVudHMgRm9ybUJ1dHRvbnNCYXJUb2tlbiwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkQ2FuY2VsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkRXNjYXBlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsYXNzTGlzdDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNhdmVCdXR0b25Db2xvcjogUHJlZGVmaW5lZENvbG9ycyA9ICdkYW5nZXInO1xuXG4gIEBJbnB1dCgpIGJhY2tUZXh0ID0gJ0NPTU1PTi5CVE5fQ0xPU0UnO1xuICBASW5wdXQoKSBjYW5jZWxUZXh0ID0gJ0NPTU1PTi5CVE5fUkVTRVQnO1xuICBASW5wdXQoKSBuZXh0VGV4dCA9ICdDT01NT04uQlROX05FWFQnO1xuXG4gIEBJbnB1dCgpIHNob3dCYWNrID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0NhbmNlbCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dOZXh0ID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NhdmUgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25OZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uQmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmVBbmRDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmVBbmROZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBob3RrZXlzOiBIb3RrZXlzLFxuICAgIHByb3RlY3RlZCBtZW51OiBNZW51U2VydmljZVxuICApIHtcbiAgICAvLyBDdHJsK1NcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgaG90a2V5c1xuICAgICAgICAuYWRkU2hvcnRjdXQoeyBrZXlzOiAnY29udHJvbC5zJywgZGVzY3JpcHRpb246ICdDT01NT04uQlROX1NBVkUnIH0pXG4gICAgICAgIC5waXBlKGZpbHRlcigoXykgPT4gIXRoaXMuZGlzYWJsZWQpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vblNhdmUuZW1pdChldmVudCkpXG4gICAgKTtcblxuICAgIC8vIEN0cmwrWlxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBob3RrZXlzXG4gICAgICAgIC5hZGRTaG9ydGN1dCh7IGtleXM6ICdjb250cm9sLnonLCBkZXNjcmlwdGlvbjogJ0NPTU1PTi5CVE5fUkVTRVQnIH0pXG4gICAgICAgIC5waXBlKGZpbHRlcigoXykgPT4gIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZGlzYWJsZWRDYW5jZWwpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbkNhbmNlbC5lbWl0KGV2ZW50KSlcbiAgICApO1xuXG4gICAgLy8gRXNjYXBlXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIGhvdGtleXNcbiAgICAgICAgLmFkZFNob3J0Y3V0KHsga2V5czogJ2VzY2FwZScsIGRlc2NyaXB0aW9uOiAnQ09NTU9OLkJUTl9DTE9TRScsIHByZXZlbnREZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSwgLy8gQWxsb3cgb3RoZXIgY29tcG9uZW50cyB0byBtYW5hZ2UgdGhlIGV2ZW50XG4gICAgICAgICAgZmlsdGVyKChlKSA9PiB0aGlzLnNob3dCYWNrICYmICFlLmRlZmF1bHRQcmV2ZW50ZWQgJiYgIXRoaXMuZGlzYWJsZWRFc2NhcGUpXG4gICAgICAgICAgLy90YXAoKCkgPT4gY29uc29sZS5kZWJ1ZygnW2Zvcm0tYnV0dG9ucy1iYXJdIEVtaXQgYmFjayBldmVudCAoa2V5ZG93bi5lc2NhcGUpJykpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMub25CYWNrLmVtaXQoZXZlbnQpKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uQ2FuY2VsLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNhdmUuY29tcGxldGUoKTtcbiAgICB0aGlzLm9uTmV4dC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25CYWNrLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNhdmVBbmROZXh0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNhdmVBbmRDbG9zZS5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8aW9uLXRvb2xiYXIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCIgbm93cmFwPlxuICAgIDwhLS0gc2hvdyBtZW51IGJ1dHRvbiAtLT5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiIGNsYXNzPVwiaGlkZGVuLXhzIGhpZGRlbi1zbVwiPlxuICAgICAgPGlvbi1tZW51LXRvZ2dsZT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fU0hPV19NRU5VJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1lbnUudG9nZ2xlU3BsaXRQYW5lV2hlbigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj48c3Bhbj4mI3hiYjs8L3NwYW4+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2lvbi1tZW51LXRvZ2dsZT5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImFwcC1mb3JtLWJ1dHRvbnMtYmFyLWNvbnRlbnRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiIGNsYXNzPVwiYXBwLWZvcm0tYnV0dG9ucy1iYXItYnV0dG9uc1wiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9ZW5kXVwiPjwvbmctY29udGVudD5cblxuICAgICAgPCEtLSBiYWNrIC0tPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgY29sb3I9XCJkYXJrXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQmFjay5lbWl0KCRldmVudClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25CYWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICpuZ0lmPVwic2hvd0JhY2sgJiYgb25CYWNrLm9ic2VydmVkXCJcbiAgICAgICAgY2xhc3M9XCJiYWNrXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1sYWJlbD57eyBiYWNrVGV4dCB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8IS0tIGNhbmNlbCAtLT5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgICpuZ0lmPVwic2hvd0NhbmNlbFwiXG4gICAgICAgIChjbGljayk9XCJvbkNhbmNlbC5lbWl0KCRldmVudClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25DYW5jZWwuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkQ2FuY2VsXCJcbiAgICAgICAgY2xhc3M9XCJjYW5jZWxcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cInJlZnJlc2hcIj48L2lvbi1pY29uPlxuICAgICAgICA8aW9uLWxhYmVsPnt7IGNhbmNlbFRleHQgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBuZXh0IC0tPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgZmlsbD1cInNvbGlkXCJcbiAgICAgICAgKm5nSWY9XCJzaG93TmV4dCAmJiBvbk5leHQub2JzZXJ2ZWRcIlxuICAgICAgICAoY2xpY2spPVwib25OZXh0LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJvbk5leHQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJuZXh0XCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1sYWJlbD57eyBuZXh0VGV4dCB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJhcnJvdy1mb3J3YXJkXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBzYXZlIC0tPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgW2ZpbGxdPVwiZGlzYWJsZWQgPyAnY2xlYXInIDogJ3NvbGlkJ1wiXG4gICAgICAgICpuZ0lmPVwic2hvd1NhdmUgJiYgb25TYXZlLm9ic2VydmVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZS5lbWl0KCRldmVudClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25TYXZlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIFtjb2xvcl09XCJzYXZlQnV0dG9uQ29sb3JcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBjbGFzcz1cInNhdmVcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWxhYmVsXG4gICAgICAgICAgW2lubmVySFRNTF09XCInQ09NTU9OLkJUTl9TQVZFX1dJVEhfU0hPUlRDVVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fU0FWRV9XSVRIX1NIT1JUQ1VUX0hFTFAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgPjwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1hZnRlclNhdmVdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuPC9pb24tdG9vbGJhcj5cbiJdfQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idXR0b25zLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9idXR0b25zL2Zvcm0tYnV0dG9ucy1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vYnV0dG9ucy9mb3JtLWJ1dHRvbnMtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFJdEQsTUFBTSxPQUFnQixtQkFBbUI7Q0FLeEM7QUFRRCxNQUFNLE9BQU8sdUJBQXVCO0lBNEJ0QjtJQTNCSixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVsQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixTQUFTLENBQVM7SUFFbEIsZUFBZSxHQUFxQixRQUFRLENBQUM7SUFFN0MsUUFBUSxHQUFHLGtCQUFrQixDQUFDO0lBQzlCLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQztJQUNoQyxRQUFRLEdBQUcsaUJBQWlCLENBQUM7SUFFN0IsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNoQixVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUVmLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBQ3JDLE1BQU0sR0FBRyxJQUFJLFlBQVks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QWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEhvdGtleXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaG90a2V5cy9ob3RrZXlzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVudS9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlZGVmaW5lZENvbG9ycyB9IGZyb20gJ0Bpb25pYy9jb3JlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvcm1CdXR0b25zQmFyVG9rZW4ge1xuICBhYnN0cmFjdCBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPEV2ZW50PjtcbiAgYWJzdHJhY3Qgb25TYXZlOiBFdmVudEVtaXR0ZXI8RXZlbnQ+O1xuICBhYnN0cmFjdCBvbk5leHQ6IEV2ZW50RW1pdHRlcjxFdmVudD47XG4gIGFic3RyYWN0IG9uQmFjazogRXZlbnRFbWl0dGVyPEV2ZW50Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZvcm0tYnV0dG9ucy1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1idXR0b25zLWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tYnV0dG9ucy1iYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGb3JtQnV0dG9uc0JhclRva2VuLCB1c2VFeGlzdGluZzogRm9ybUJ1dHRvbnNCYXJDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1CdXR0b25zQmFyQ29tcG9uZW50IGltcGxlbWVudHMgRm9ybUJ1dHRvbnNCYXJUb2tlbiwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkQ2FuY2VsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkRXNjYXBlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsYXNzTGlzdDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNhdmVCdXR0b25Db2xvcjogUHJlZGVmaW5lZENvbG9ycyA9ICdkYW5nZXInO1xuXG4gIEBJbnB1dCgpIGJhY2tUZXh0ID0gJ0NPTU1PTi5CVE5fQ0xPU0UnO1xuICBASW5wdXQoKSBjYW5jZWxUZXh0ID0gJ0NPTU1PTi5CVE5fUkVTRVQnO1xuICBASW5wdXQoKSBuZXh0VGV4dCA9ICdDT01NT04uQlROX05FWFQnO1xuXG4gIEBJbnB1dCgpIHNob3dCYWNrID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0NhbmNlbCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dOZXh0ID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NhdmUgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25OZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uQmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmVBbmRDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmVBbmROZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBob3RrZXlzOiBIb3RrZXlzLFxuICAgIHByb3RlY3RlZCBtZW51OiBNZW51U2VydmljZVxuICApIHtcbiAgICAvLyBDdHJsK1NcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgaG90a2V5c1xuICAgICAgICAuYWRkU2hvcnRjdXQoeyBrZXlzOiAnY29udHJvbC5zJywgZGVzY3JpcHRpb246ICdDT01NT04uQlROX1NBVkUnIH0pXG4gICAgICAgIC5waXBlKGZpbHRlcigoXykgPT4gIXRoaXMuZGlzYWJsZWQpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vblNhdmUuZW1pdChldmVudCkpXG4gICAgKTtcblxuICAgIC8vIEN0cmwrWlxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBob3RrZXlzXG4gICAgICAgIC5hZGRTaG9ydGN1dCh7IGtleXM6ICdjb250cm9sLnonLCBkZXNjcmlwdGlvbjogJ0NPTU1PTi5CVE5fUkVTRVQnIH0pXG4gICAgICAgIC5waXBlKGZpbHRlcigoXykgPT4gIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZGlzYWJsZWRDYW5jZWwpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbkNhbmNlbC5lbWl0KGV2ZW50KSlcbiAgICApO1xuXG4gICAgLy8gRXNjYXBlXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIGhvdGtleXNcbiAgICAgICAgLmFkZFNob3J0Y3V0KHsga2V5czogJ2VzY2FwZScsIGRlc2NyaXB0aW9uOiAnQ09NTU9OLkJUTl9DTE9TRScsIHByZXZlbnREZWZhdWx0OiBmYWxzZSB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSwgLy8gQWxsb3cgb3RoZXIgY29tcG9uZW50cyB0byBtYW5hZ2UgdGhlIGV2ZW50XG4gICAgICAgICAgZmlsdGVyKChlKSA9PiB0aGlzLnNob3dCYWNrICYmICFlLmRlZmF1bHRQcmV2ZW50ZWQgJiYgIXRoaXMuZGlzYWJsZWRFc2NhcGUpXG4gICAgICAgICAgLy90YXAoKCkgPT4gY29uc29sZS5kZWJ1ZygnW2Zvcm0tYnV0dG9ucy1iYXJdIEVtaXQgYmFjayBldmVudCAoa2V5ZG93bi5lc2NhcGUpJykpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMub25CYWNrLmVtaXQoZXZlbnQpKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uQ2FuY2VsLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNhdmUuY29tcGxldGUoKTtcbiAgICB0aGlzLm9uTmV4dC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25CYWNrLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNhdmVBbmROZXh0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNhdmVBbmRDbG9zZS5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8aW9uLXRvb2xiYXIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCIgbm93cmFwPlxuICAgIDwhLS0gc2hvdyBtZW51IGJ1dHRvbiAtLT5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiIGNsYXNzPVwiaGlkZGVuLXhzIGhpZGRlbi1zbVwiPlxuICAgICAgPGlvbi1tZW51LXRvZ2dsZT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fU0hPV19NRU5VJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1lbnUudG9nZ2xlU3BsaXRQYW5lV2hlbigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj48c3Bhbj4mI3hiYjs8L3NwYW4+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2lvbi1tZW51LXRvZ2dsZT5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImFwcC1mb3JtLWJ1dHRvbnMtYmFyLWNvbnRlbnRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiIGNsYXNzPVwiYXBwLWZvcm0tYnV0dG9ucy1iYXItYnV0dG9uc1wiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9ZW5kXVwiPjwvbmctY29udGVudD5cblxuICAgICAgPCEtLSBiYWNrIC0tPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgY29sb3I9XCJkYXJrXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQmFjay5lbWl0KCRldmVudClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25CYWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICpuZ0lmPVwic2hvd0JhY2sgJiYgb25CYWNrLm9ic2VydmVkXCJcbiAgICAgICAgY2xhc3M9XCJiYWNrXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1sYWJlbD57eyBiYWNrVGV4dCB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8IS0tIGNhbmNlbCAtLT5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgICpuZ0lmPVwic2hvd0NhbmNlbFwiXG4gICAgICAgIChjbGljayk9XCJvbkNhbmNlbC5lbWl0KCRldmVudClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25DYW5jZWwuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkQ2FuY2VsXCJcbiAgICAgICAgY2xhc3M9XCJjYW5jZWxcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cInJlZnJlc2hcIj48L2lvbi1pY29uPlxuICAgICAgICA8aW9uLWxhYmVsPnt7IGNhbmNlbFRleHQgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBuZXh0IC0tPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgZmlsbD1cInNvbGlkXCJcbiAgICAgICAgKm5nSWY9XCJzaG93TmV4dCAmJiBvbk5leHQub2JzZXJ2ZWRcIlxuICAgICAgICAoY2xpY2spPVwib25OZXh0LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJvbk5leHQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJuZXh0XCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1sYWJlbD57eyBuZXh0VGV4dCB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJhcnJvdy1mb3J3YXJkXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBzYXZlIC0tPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgW2ZpbGxdPVwiZGlzYWJsZWQgPyAnY2xlYXInIDogJ3NvbGlkJ1wiXG4gICAgICAgICpuZ0lmPVwic2hvd1NhdmUgJiYgb25TYXZlLm9ic2VydmVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZS5lbWl0KCRldmVudClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25TYXZlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIFtjb2xvcl09XCJzYXZlQnV0dG9uQ29sb3JcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBjbGFzcz1cInNhdmVcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWxhYmVsXG4gICAgICAgICAgW2lubmVySFRNTF09XCInQ09NTU9OLkJUTl9TQVZFX1dJVEhfU0hPUlRDVVQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fU0FWRV9XSVRIX1NIT1JUQ1VUX0hFTFAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgPjwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1hZnRlclNhdmVdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuPC9pb24tdG9vbGJhcj5cbiJdfQ==
@@ -5,15 +5,15 @@ import { TranslateModule } from '@ngx-translate/core';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@ngx-translate/core";
7
7
  export class AppFormButtonsBarModule {
8
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppFormButtonsBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: AppFormButtonsBarModule, declarations: [
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AppFormButtonsBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: AppFormButtonsBarModule, declarations: [
10
10
  // Components
11
11
  FormButtonsBarComponent], imports: [SharedModule, i1.TranslateModule], exports: [TranslateModule,
12
12
  // Components
13
13
  FormButtonsBarComponent] });
14
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppFormButtonsBarModule, imports: [SharedModule, TranslateModule.forChild(), TranslateModule] });
14
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AppFormButtonsBarModule, imports: [SharedModule, TranslateModule.forChild(), TranslateModule] });
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppFormButtonsBarModule, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AppFormButtonsBarModule, decorators: [{
17
17
  type: NgModule,
18
18
  args: [{
19
19
  imports: [SharedModule, TranslateModule.forChild()],
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
28
28
  ],
29
29
  }]
30
30
  }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idXR0b25zLWJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9idXR0b25zL2Zvcm0tYnV0dG9ucy1iYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBZ0J0RCxNQUFNLE9BQU8sdUJBQXVCO3VHQUF2Qix1QkFBdUI7d0dBQXZCLHVCQUF1QjtZQVZoQyxhQUFhO1lBQ2IsdUJBQXVCLGFBSmYsWUFBWSxpQ0FPcEIsZUFBZTtZQUVmLGFBQWE7WUFDYix1QkFBdUI7d0dBR2QsdUJBQXVCLFlBYnhCLFlBQVksRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFLEVBT2hELGVBQWU7OzJGQU1OLHVCQUF1QjtrQkFkbkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUVuRCxZQUFZLEVBQUU7d0JBQ1osYUFBYTt3QkFDYix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxlQUFlO3dCQUVmLGFBQWE7d0JBQ2IsdUJBQXVCO3FCQUN4QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBGb3JtQnV0dG9uc0JhckNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1idXR0b25zLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtTaGFyZWRNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpXSxcblxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICAvLyBDb21wb25lbnRzXG4gICAgRm9ybUJ1dHRvbnNCYXJDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG5cbiAgICAvLyBDb21wb25lbnRzXG4gICAgRm9ybUJ1dHRvbnNCYXJDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFwcEZvcm1CdXR0b25zQmFyTW9kdWxlIHt9XG4iXX0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idXR0b25zLWJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9idXR0b25zL2Zvcm0tYnV0dG9ucy1iYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBZ0J0RCxNQUFNLE9BQU8sdUJBQXVCO3dHQUF2Qix1QkFBdUI7eUdBQXZCLHVCQUF1QjtZQVZoQyxhQUFhO1lBQ2IsdUJBQXVCLGFBSmYsWUFBWSxpQ0FPcEIsZUFBZTtZQUVmLGFBQWE7WUFDYix1QkFBdUI7eUdBR2QsdUJBQXVCLFlBYnhCLFlBQVksRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFLEVBT2hELGVBQWU7OzRGQU1OLHVCQUF1QjtrQkFkbkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUVuRCxZQUFZLEVBQUU7d0JBQ1osYUFBYTt3QkFDYix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxlQUFlO3dCQUVmLGFBQWE7d0JBQ2IsdUJBQXVCO3FCQUN4QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBGb3JtQnV0dG9uc0JhckNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1idXR0b25zLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtTaGFyZWRNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpXSxcblxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICAvLyBDb21wb25lbnRzXG4gICAgRm9ybUJ1dHRvbnNCYXJDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG5cbiAgICAvLyBDb21wb25lbnRzXG4gICAgRm9ybUJ1dHRvbnNCYXJDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFwcEZvcm1CdXR0b25zQmFyTW9kdWxlIHt9XG4iXX0=
@@ -247,10 +247,10 @@ export class AppEditor extends AppFormContainer {
247
247
  throw new Error("Missing toastController in component's constructor");
248
248
  await Toasts.show(this.toastController, this.translate, opts);
249
249
  }
250
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppEditor, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.NavController }, { token: i2.AlertController }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Directive });
251
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: AppEditor, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ToolbarToken, descendants: true }, { propertyName: "formButtonsBar", first: true, predicate: FormButtonsBarToken, descendants: true, static: true }, { propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }], usesInheritance: true, ngImport: i0 });
250
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AppEditor, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.NavController }, { token: i2.AlertController }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Directive });
251
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: AppEditor, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ToolbarToken, descendants: true }, { propertyName: "formButtonsBar", first: true, predicate: FormButtonsBarToken, descendants: true, static: true }, { propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }], usesInheritance: true, ngImport: i0 });
252
252
  }
253
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppEditor, decorators: [{
253
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AppEditor, decorators: [{
254
254
  type: Directive
255
255
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.NavController }, { type: i2.AlertController }, { type: i3.TranslateService }], propDecorators: { toolbar: [{
256
256
  type: ViewChild,
@@ -262,4 +262,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
262
262
  type: ViewChild,
263
263
  args: [IonContent, { static: true }]
264
264
  }] } });
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vZW50aXR5L2VkaXRvci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBbUIsVUFBVSxFQUFrQyxNQUFNLGdCQUFnQixDQUFDO0FBRTdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBUTlFLGtFQUFrRTtBQUNsRSxNQUFNLE9BQWdCLFNBQ3BCLFNBQVEsZ0JBQW1CO0lBeUJmO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUExQkYsZUFBZSxDQUFrQjtJQUVsQyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFN0QsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixXQUFXLENBQVM7SUFDcEIsV0FBVyxDQUdUO0lBRUYsSUFBSSxNQUFNO1FBQ1Is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RGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIElvbkNvbnRlbnQsIE5hdkNvbnRyb2xsZXIsIFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwVGFibGUgfSBmcm9tICcuLi8uLi90YWJsZS90YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBcHBGb3JtIH0gZnJvbSAnLi4vZm9ybS5jbGFzcyc7XG5pbXBvcnQgeyBGb3JtQnV0dG9uc0JhclRva2VuIH0gZnJvbSAnLi4vYnV0dG9ucy9mb3JtLWJ1dHRvbnMtYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBGb3JtVXRpbHMsIENhbkxlYXZlLCBDYW5TYXZlLCBJQXBwRm9ybSwgSUFwcEZvcm1HZXR0ZXIgfSBmcm9tICcuLi9mb3JtLnV0aWxzJztcbmltcG9ydCB7IFNob3dUb2FzdE9wdGlvbnMsIFRvYXN0cyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90b2FzdC90b2FzdHMnO1xuaW1wb3J0IHsgVG9vbGJhclRva2VuIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3Rvb2xiYXIvdG9vbGJhcic7XG5pbXBvcnQgeyB0b051bWJlciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwRm9ybUNvbnRhaW5lciwgSUFwcEZvcm1Db250YWluZXIgfSBmcm9tICcuLi9mb3JtLWNvbnRhaW5lci5jbGFzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcEVkaXRvcjxUPiBleHRlbmRzIElBcHBGb3JtQ29udGFpbmVyPFQ+LCBDYW5TYXZlLCBDYW5MZWF2ZSB7XG4gIHNhdmUoZXZlbnQ/OiBFdmVudCwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8Ym9vbGVhbj47XG4gIGNhbmNlbChldmVudD86IEV2ZW50KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBFZGl0b3I8VCA9IGFueSwgSUQgPSBudW1iZXIsIE8gPSBhbnk+XG4gIGV4dGVuZHMgQXBwRm9ybUNvbnRhaW5lcjxUPlxuICBpbXBsZW1lbnRzIElBcHBFZGl0b3I8VD4sIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XG57XG4gIHByb3RlY3RlZCB0b2FzdENvbnRyb2xsZXI6IFRvYXN0Q29udHJvbGxlcjtcblxuICByZWFkb25seSBzYXZpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgc3VibWl0dGVkID0gZmFsc2U7XG4gIHF1ZXJ5UGFyYW1zOiBQYXJhbXM7XG4gIGkxOG5Db250ZXh0OiB7XG4gICAgcHJlZml4OiBzdHJpbmc7XG4gICAgc3VmZml4OiBzdHJpbmc7XG4gIH07XG5cbiAgZ2V0IHNhdmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlIHx8IHRoaXMuZWRpdG9ycz8uc29tZSgoZSkgPT4gZS5zYXZpbmcpO1xuICB9XG5cbiAgQFZpZXdDaGlsZChUb29sYmFyVG9rZW4pIHRvb2xiYXI6IFRvb2xiYXJUb2tlbiB8IG51bGwgPSBudWxsO1xuICBAVmlld0NoaWxkKEZvcm1CdXR0b25zQmFyVG9rZW4sIHsgc3RhdGljOiB0cnVlIH0pIGZvcm1CdXR0b25zQmFyOiBGb3JtQnV0dG9uc0JhclRva2VuIHwgbnVsbCA9IG51bGw7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudDogSW9uQ29udGVudDtcblxuICBhYnN0cmFjdCBnZXQgaXNOZXdEYXRhKCk6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fbG9nUHJlZml4ID0gJ1tlZGl0b3JdICc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgaWYgKHRoaXMuZm9ybUJ1dHRvbnNCYXIpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICAgIHRoaXMuZm9ybUJ1dHRvbnNCYXIub25CYWNrXG4gICAgICAgICAgLnBpcGUodGhyb3R0bGVUaW1lKDIwMCkpIC8vIEF2b2lkIHRvIGJlIGNhbGxlZCB0d2ljZVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLmdvQmFjayhldmVudCkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tZW1wdHktbGlmZWN5Y2xlLW1ldGhvZFxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlc1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLnNhdmluZ1N1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYWRkRm9ybShwYXRoLCBmb3JtKVxuICAgKiBAcGFyYW0gZm9ybVxuICAgKi9cbiAgYWRkQ2hpbGRGb3JtKGZvcm06IElBcHBGb3JtIHwgSUFwcEZvcm1HZXR0ZXIpIHtcbiAgICB0aGlzLmFkZEZvcm0obnVsbCwgZm9ybSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGFkZEZvcm1zKClcbiAgICogQHBhcmFtIGZvcm1zXG4gICAqL1xuICBhZGRDaGlsZEZvcm1zKGZvcm1zOiAoSUFwcEZvcm0gfCBJQXBwRm9ybUdldHRlcilbXSkge1xuICAgIHRoaXMuYWRkRm9ybXMoZm9ybXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSByZW1vdmVGb3JtKClcbiAgICogQHBhcmFtIGZvcm1cbiAgICovXG4gIHJlbW92ZUNoaWxkRm9ybShmb3JtOiBJQXBwRm9ybSB8IElBcHBGb3JtR2V0dGVyKTogSUFwcEZvcm0gfCBJQXBwRm9ybUdldHRlciB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlRm9ybShmb3JtKTtcbiAgfVxuXG4gIG1hcmtBc1NhdmluZyhvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLnNhdmluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzU2F2ZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKCF0aGlzLnNhdmluZ1N1YmplY3QuY2xvc2VkICYmIHRoaXMuc2F2aW5nU3ViamVjdC52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc2F2aW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2FuY2VsKGV2ZW50PzogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc05ld0RhdGEpIHtcbiAgICAgIGF3YWl0IHRoaXMudW5sb2FkKCk7IC8vIGFzeW5jIHJlc2V0XG4gICAgfSBlbHNlIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICBhd2FpdCB0aGlzLnJlbG9hZCgpOyAvLyBhc3luYyByZWxvYWRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5sb2FkIHRoZSBwYWdlIChyZW1vdmUgYWxsIGRhdGEpLiBVc2VmdWwgd2hlbiByZXVzaW5nIGFuZ3VsYXIgY2FjaGUgYSBjYW5jZWxsZWQgcGFnZVxuICAgKlxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgdW5sb2FkKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgJ1VubG9hZGluZyBkYXRhLi4uJyk7XG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG4gICAgdGhpcy5jaGlsZHJlbj8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgaWYgKGYgaW5zdGFuY2VvZiBBcHBGb3JtKSB7XG4gICAgICAgIC8vIEZpeCBlcnJvciB3aGVuICdudWxsJyBpcyBwYXNzIChkZWZhdWx0IHZhbHVlID0ge30gd2FzIG5vdCBhcHBsaWVkKVxuICAgICAgICBmLnJlc2V0KHVuZGVmaW5lZCwgb3B0cyk7XG4gICAgICB9IGVsc2UgaWYgKGYgaW5zdGFuY2VvZiBBcHBUYWJsZSkge1xuICAgICAgICBmLmRhdGFTb3VyY2UuZGlzY29ubmVjdCgpO1xuICAgICAgfSBlbHNlIGlmIChmIGluc3RhbmNlb2YgQXBwRWRpdG9yKSB7XG4gICAgICAgIGYudW5sb2FkKG9wdHMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5tYXJrQXNQcmlzdGluZShvcHRzKTtcbiAgICB0aGlzLm1hcmtBc1NhdmVkKG9wdHMpO1xuICB9XG5cbiAgYXN5bmMgcmVsb2FkV2l0aENvbmZpcm1hdGlvbihjb25maXJtPzogYm9vbGVhbikge1xuICAgIGNvbnN0IG5lZWRDb25maXJtID0gdGhpcy5kaXJ0eTtcbiAgICAvLyBpZiBub3QgY29uZmlybSB5ZXQ6IGFzayBjb25maXJtYXRpb25cbiAgICBpZiAoIWNvbmZpcm0gJiYgbmVlZENvbmZpcm0pIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoW1xuICAgICAgICAnQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJyxcbiAgICAgICAgJ0NPTU1PTi5CVE5fQ0FOQ0VMJyxcbiAgICAgICAgJ0NPTkZJUk0uQ0FOQ0VMX0NIQU5HRVMnLFxuICAgICAgICAnQ09ORklSTS5BTEVSVF9IRUFERVInLFxuICAgICAgXSk7XG4gICAgICBjb25zdCBhbGVydCA9IGF3YWl0IHRoaXMuYWxlcnRDdHJsLmNyZWF0ZSh7XG4gICAgICAgIGhlYWRlcjogdHJhbnNsYXRpb25zWydDT05GSVJNLkFMRVJUX0hFQURFUiddLFxuICAgICAgICBtZXNzYWdlOiB0cmFuc2xhdGlvbnNbJ0NPTkZJUk0uQ0FOQ0VMX0NIQU5HRVMnXSxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJ10sXG4gICAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbmZpcm0gPSB0cnVlOyAvLyB1cGRhdGUgdXBwZXIgdmFsdWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQ0FOQ0VMJ10sXG4gICAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICAgIGF3YWl0IGFsZXJ0Lm9uRGlkRGlzbWlzcygpO1xuICAgIH1cblxuICAgIC8vIElmIGNvbmZpcm06IGV4ZWN1dGUgdGhlIHJlbG9hZFxuICAgIGlmIChjb25maXJtIHx8ICFuZWVkQ29uZmlybSkge1xuICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnb0JhY2soZXZlbnQ/OiBFdmVudCk6IFByb21pc2U8dm9pZCB8IGJvb2xlYW4+IHtcbiAgICAvLyBHbyBiYWNrXG4gICAgaWYgKHRoaXMudG9vbGJhcj8uY2FuR29CYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy50b29sYmFyLmdvQmFjaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCYWNrIHRvIGhvbWVcbiAgICAgIHJldHVybiB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVCYWNrKCcvJyk7XG4gICAgfVxuICB9XG5cbiAgYWJzdHJhY3QgbG9hZChpZD86IElELCBvcHRpb25zPzogTyk6IFByb21pc2U8dm9pZD47XG5cbiAgYWJzdHJhY3Qgc2F2ZShldmVudD86IEV2ZW50LCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxib29sZWFuPjtcblxuICBhYnN0cmFjdCByZWxvYWQoKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyBzY3JvbGxUb1RvcChkdXJhdGlvbj86IG51bWJlcikge1xuICAgIGR1cmF0aW9uID0gdG9OdW1iZXIoZHVyYXRpb24sIDUwMCk7XG5cbiAgICBpZiAoIXRoaXMuY29udGVudCkge1xuICAgICAgY29uc29sZS53YXJuKGBbdGFiLWVkaXRvcl0gQ2Fubm90IHNjcm9sbCB0byB0b3AuIChubyAnaW9uLWNvbnRlbnQnIHRhZyBmb3VuZCAke3RoaXMuY29uc3RydWN0b3IubmFtZX1gKTtcblxuICAgICAgLy8gVE9ETzogRklYTUUgKG5vdCB3b3JraW5nIGFzIHRoZSBwYWdlIGlzIG5vdCB0aGUgd2luZG93KVxuICAgICAgY29uc3Qgc2Nyb2xsVG9Ub3AgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgaWYgKHBvcyA+IDApIHtcbiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgcG9zIC0gMjApOyAvLyBob3cgZmFyIHRvIHNjcm9sbCBvbiBlYWNoIHN0ZXBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChzY3JvbGxUb1RvcCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDE2KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb250ZW50LnNjcm9sbFRvVG9wKGR1cmF0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzYXZlSWZEaXJ0eUFuZENvbmZpcm0oXG4gICAgZXZlbnQ/OiBFdmVudCxcbiAgICBvcHRzPzoge1xuICAgICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICAgIGNvbmZpcm1lZD86IGJvb2xlYW47XG4gICAgfVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuZGlydHkpIHJldHVybiB0cnVlO1xuXG4gICAgbGV0IGNvbmZpcm1lZCA9IG9wdHM/LmNvbmZpcm1lZCB8fCBmYWxzZTtcbiAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChbXG4gICAgICAgICdDT01NT04uQlROX1NBVkUnLFxuICAgICAgICAnQ09NTU9OLkJUTl9DQU5DRUwnLFxuICAgICAgICAnQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJyxcbiAgICAgICAgJ0NPTkZJUk0uU0FWRScsXG4gICAgICAgICdDT05GSVJNLkFMRVJUX0hFQURFUicsXG4gICAgICBdKTtcbiAgICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydEN0cmwuY3JlYXRlKHtcbiAgICAgICAgaGVhZGVyOiB0cmFuc2xhdGlvbnNbJ0NPTkZJUk0uQUxFUlRfSEVBREVSJ10sXG4gICAgICAgIG1lc3NhZ2U6IHRyYW5zbGF0aW9uc1snQ09ORklSTS5TQVZFJ10sXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQ0FOQ0VMJ10sXG4gICAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQUJPUlRfQ0hBTkdFUyddLFxuICAgICAgICAgICAgY3NzQ2xhc3M6ICdzZWNvbmRhcnknLFxuICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fU0FWRSddLFxuICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICBjb25maXJtZWQgPSB0cnVlOyAvLyB1cGRhdGUgdXBwZXIgdmFsdWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgICAgYXdhaXQgYWxlcnQub25EaWREaXNtaXNzKCk7XG5cbiAgICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICAgIHJldHVybiAhY2FuY2VsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNhdmUoZXZlbnQsIG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNhdmVEaXJ0eUNoaWxkcmVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIFNhdmUgYWxsIGRpcnR5IHRhYmxlc1xuICAgIGNvbnN0IGRpcnR5Q2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLmZpbHRlcigoYykgPT4gYy5kaXJ0eSkuZmlsdGVyKEFwcEZvcm1VdGlscy5jYW5TYXZlKTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoZGlydHlDaGlsZHJlbi5tYXAoKGMpID0+IGMuc2F2ZSgpKSk7XG4gICAgcmV0dXJuICFyZXN1bHRzLnNvbWUoKHNhdmVkKSA9PiBzYXZlZCAhPT0gdHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2hvd1RvYXN0KG9wdHM6IFNob3dUb2FzdE9wdGlvbnMpIHtcbiAgICBpZiAoIXRoaXMudG9hc3RDb250cm9sbGVyKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHRvYXN0Q29udHJvbGxlciBpbiBjb21wb25lbnQncyBjb25zdHJ1Y3RvclwiKTtcbiAgICBhd2FpdCBUb2FzdHMuc2hvdyh0aGlzLnRvYXN0Q29udHJvbGxlciwgdGhpcy50cmFuc2xhdGUsIG9wdHMpO1xuICB9XG59XG4iXX0=
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vZW50aXR5L2VkaXRvci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBbUIsVUFBVSxFQUFrQyxNQUFNLGdCQUFnQixDQUFDO0FBRTdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBUTlFLGtFQUFrRTtBQUNsRSxNQUFNLE9BQWdCLFNBQ3BCLFNBQVEsZ0JBQW1CO0lBeUJmO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUExQkYsZUFBZSxDQUFrQjtJQUVsQyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFN0QsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixXQUFXLENBQVM7SUFDcEIsV0FBVyxDQUdUO0lBRUYsSUFBSSxNQUFNO1FBQ1Is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RGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIElvbkNvbnRlbnQsIE5hdkNvbnRyb2xsZXIsIFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwVGFibGUgfSBmcm9tICcuLi8uLi90YWJsZS90YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBcHBGb3JtIH0gZnJvbSAnLi4vZm9ybS5jbGFzcyc7XG5pbXBvcnQgeyBGb3JtQnV0dG9uc0JhclRva2VuIH0gZnJvbSAnLi4vYnV0dG9ucy9mb3JtLWJ1dHRvbnMtYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBGb3JtVXRpbHMsIENhbkxlYXZlLCBDYW5TYXZlLCBJQXBwRm9ybSwgSUFwcEZvcm1HZXR0ZXIgfSBmcm9tICcuLi9mb3JtLnV0aWxzJztcbmltcG9ydCB7IFNob3dUb2FzdE9wdGlvbnMsIFRvYXN0cyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90b2FzdC90b2FzdHMnO1xuaW1wb3J0IHsgVG9vbGJhclRva2VuIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3Rvb2xiYXIvdG9vbGJhcic7XG5pbXBvcnQgeyB0b051bWJlciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwRm9ybUNvbnRhaW5lciwgSUFwcEZvcm1Db250YWluZXIgfSBmcm9tICcuLi9mb3JtLWNvbnRhaW5lci5jbGFzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcEVkaXRvcjxUPiBleHRlbmRzIElBcHBGb3JtQ29udGFpbmVyPFQ+LCBDYW5TYXZlLCBDYW5MZWF2ZSB7XG4gIHNhdmUoZXZlbnQ/OiBFdmVudCwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8Ym9vbGVhbj47XG4gIGNhbmNlbChldmVudD86IEV2ZW50KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBFZGl0b3I8VCA9IGFueSwgSUQgPSBudW1iZXIsIE8gPSBhbnk+XG4gIGV4dGVuZHMgQXBwRm9ybUNvbnRhaW5lcjxUPlxuICBpbXBsZW1lbnRzIElBcHBFZGl0b3I8VD4sIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XG57XG4gIHByb3RlY3RlZCB0b2FzdENvbnRyb2xsZXI6IFRvYXN0Q29udHJvbGxlcjtcblxuICByZWFkb25seSBzYXZpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgc3VibWl0dGVkID0gZmFsc2U7XG4gIHF1ZXJ5UGFyYW1zOiBQYXJhbXM7XG4gIGkxOG5Db250ZXh0OiB7XG4gICAgcHJlZml4OiBzdHJpbmc7XG4gICAgc3VmZml4OiBzdHJpbmc7XG4gIH07XG5cbiAgZ2V0IHNhdmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlIHx8IHRoaXMuZWRpdG9ycz8uc29tZSgoZSkgPT4gZS5zYXZpbmcpO1xuICB9XG5cbiAgQFZpZXdDaGlsZChUb29sYmFyVG9rZW4pIHRvb2xiYXI6IFRvb2xiYXJUb2tlbiB8IG51bGwgPSBudWxsO1xuICBAVmlld0NoaWxkKEZvcm1CdXR0b25zQmFyVG9rZW4sIHsgc3RhdGljOiB0cnVlIH0pIGZvcm1CdXR0b25zQmFyOiBGb3JtQnV0dG9uc0JhclRva2VuIHwgbnVsbCA9IG51bGw7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudDogSW9uQ29udGVudDtcblxuICBhYnN0cmFjdCBnZXQgaXNOZXdEYXRhKCk6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fbG9nUHJlZml4ID0gJ1tlZGl0b3JdICc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgaWYgKHRoaXMuZm9ybUJ1dHRvbnNCYXIpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICAgIHRoaXMuZm9ybUJ1dHRvbnNCYXIub25CYWNrXG4gICAgICAgICAgLnBpcGUodGhyb3R0bGVUaW1lKDIwMCkpIC8vIEF2b2lkIHRvIGJlIGNhbGxlZCB0d2ljZVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLmdvQmFjayhldmVudCkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tZW1wdHktbGlmZWN5Y2xlLW1ldGhvZFxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlc1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLnNhdmluZ1N1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYWRkRm9ybShwYXRoLCBmb3JtKVxuICAgKiBAcGFyYW0gZm9ybVxuICAgKi9cbiAgYWRkQ2hpbGRGb3JtKGZvcm06IElBcHBGb3JtIHwgSUFwcEZvcm1HZXR0ZXIpIHtcbiAgICB0aGlzLmFkZEZvcm0obnVsbCwgZm9ybSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGFkZEZvcm1zKClcbiAgICogQHBhcmFtIGZvcm1zXG4gICAqL1xuICBhZGRDaGlsZEZvcm1zKGZvcm1zOiAoSUFwcEZvcm0gfCBJQXBwRm9ybUdldHRlcilbXSkge1xuICAgIHRoaXMuYWRkRm9ybXMoZm9ybXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSByZW1vdmVGb3JtKClcbiAgICogQHBhcmFtIGZvcm1cbiAgICovXG4gIHJlbW92ZUNoaWxkRm9ybShmb3JtOiBJQXBwRm9ybSB8IElBcHBGb3JtR2V0dGVyKTogSUFwcEZvcm0gfCBJQXBwRm9ybUdldHRlciB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlRm9ybShmb3JtKTtcbiAgfVxuXG4gIG1hcmtBc1NhdmluZyhvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLnNhdmluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzU2F2ZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKCF0aGlzLnNhdmluZ1N1YmplY3QuY2xvc2VkICYmIHRoaXMuc2F2aW5nU3ViamVjdC52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc2F2aW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2FuY2VsKGV2ZW50PzogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc05ld0RhdGEpIHtcbiAgICAgIGF3YWl0IHRoaXMudW5sb2FkKCk7IC8vIGFzeW5jIHJlc2V0XG4gICAgfSBlbHNlIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICBhd2FpdCB0aGlzLnJlbG9hZCgpOyAvLyBhc3luYyByZWxvYWRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5sb2FkIHRoZSBwYWdlIChyZW1vdmUgYWxsIGRhdGEpLiBVc2VmdWwgd2hlbiByZXVzaW5nIGFuZ3VsYXIgY2FjaGUgYSBjYW5jZWxsZWQgcGFnZVxuICAgKlxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgdW5sb2FkKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgJ1VubG9hZGluZyBkYXRhLi4uJyk7XG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG4gICAgdGhpcy5jaGlsZHJlbj8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgaWYgKGYgaW5zdGFuY2VvZiBBcHBGb3JtKSB7XG4gICAgICAgIC8vIEZpeCBlcnJvciB3aGVuICdudWxsJyBpcyBwYXNzIChkZWZhdWx0IHZhbHVlID0ge30gd2FzIG5vdCBhcHBsaWVkKVxuICAgICAgICBmLnJlc2V0KHVuZGVmaW5lZCwgb3B0cyk7XG4gICAgICB9IGVsc2UgaWYgKGYgaW5zdGFuY2VvZiBBcHBUYWJsZSkge1xuICAgICAgICBmLmRhdGFTb3VyY2UuZGlzY29ubmVjdCgpO1xuICAgICAgfSBlbHNlIGlmIChmIGluc3RhbmNlb2YgQXBwRWRpdG9yKSB7XG4gICAgICAgIGYudW5sb2FkKG9wdHMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5tYXJrQXNQcmlzdGluZShvcHRzKTtcbiAgICB0aGlzLm1hcmtBc1NhdmVkKG9wdHMpO1xuICB9XG5cbiAgYXN5bmMgcmVsb2FkV2l0aENvbmZpcm1hdGlvbihjb25maXJtPzogYm9vbGVhbikge1xuICAgIGNvbnN0IG5lZWRDb25maXJtID0gdGhpcy5kaXJ0eTtcbiAgICAvLyBpZiBub3QgY29uZmlybSB5ZXQ6IGFzayBjb25maXJtYXRpb25cbiAgICBpZiAoIWNvbmZpcm0gJiYgbmVlZENvbmZpcm0pIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoW1xuICAgICAgICAnQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJyxcbiAgICAgICAgJ0NPTU1PTi5CVE5fQ0FOQ0VMJyxcbiAgICAgICAgJ0NPTkZJUk0uQ0FOQ0VMX0NIQU5HRVMnLFxuICAgICAgICAnQ09ORklSTS5BTEVSVF9IRUFERVInLFxuICAgICAgXSk7XG4gICAgICBjb25zdCBhbGVydCA9IGF3YWl0IHRoaXMuYWxlcnRDdHJsLmNyZWF0ZSh7XG4gICAgICAgIGhlYWRlcjogdHJhbnNsYXRpb25zWydDT05GSVJNLkFMRVJUX0hFQURFUiddLFxuICAgICAgICBtZXNzYWdlOiB0cmFuc2xhdGlvbnNbJ0NPTkZJUk0uQ0FOQ0VMX0NIQU5HRVMnXSxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJ10sXG4gICAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbmZpcm0gPSB0cnVlOyAvLyB1cGRhdGUgdXBwZXIgdmFsdWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQ0FOQ0VMJ10sXG4gICAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICAgIGF3YWl0IGFsZXJ0Lm9uRGlkRGlzbWlzcygpO1xuICAgIH1cblxuICAgIC8vIElmIGNvbmZpcm06IGV4ZWN1dGUgdGhlIHJlbG9hZFxuICAgIGlmIChjb25maXJtIHx8ICFuZWVkQ29uZmlybSkge1xuICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnb0JhY2soZXZlbnQ/OiBFdmVudCk6IFByb21pc2U8dm9pZCB8IGJvb2xlYW4+IHtcbiAgICAvLyBHbyBiYWNrXG4gICAgaWYgKHRoaXMudG9vbGJhcj8uY2FuR29CYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy50b29sYmFyLmdvQmFjaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCYWNrIHRvIGhvbWVcbiAgICAgIHJldHVybiB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVCYWNrKCcvJyk7XG4gICAgfVxuICB9XG5cbiAgYWJzdHJhY3QgbG9hZChpZD86IElELCBvcHRpb25zPzogTyk6IFByb21pc2U8dm9pZD47XG5cbiAgYWJzdHJhY3Qgc2F2ZShldmVudD86IEV2ZW50LCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxib29sZWFuPjtcblxuICBhYnN0cmFjdCByZWxvYWQoKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyBzY3JvbGxUb1RvcChkdXJhdGlvbj86IG51bWJlcikge1xuICAgIGR1cmF0aW9uID0gdG9OdW1iZXIoZHVyYXRpb24sIDUwMCk7XG5cbiAgICBpZiAoIXRoaXMuY29udGVudCkge1xuICAgICAgY29uc29sZS53YXJuKGBbdGFiLWVkaXRvcl0gQ2Fubm90IHNjcm9sbCB0byB0b3AuIChubyAnaW9uLWNvbnRlbnQnIHRhZyBmb3VuZCAke3RoaXMuY29uc3RydWN0b3IubmFtZX1gKTtcblxuICAgICAgLy8gVE9ETzogRklYTUUgKG5vdCB3b3JraW5nIGFzIHRoZSBwYWdlIGlzIG5vdCB0aGUgd2luZG93KVxuICAgICAgY29uc3Qgc2Nyb2xsVG9Ub3AgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgaWYgKHBvcyA+IDApIHtcbiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgcG9zIC0gMjApOyAvLyBob3cgZmFyIHRvIHNjcm9sbCBvbiBlYWNoIHN0ZXBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChzY3JvbGxUb1RvcCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDE2KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb250ZW50LnNjcm9sbFRvVG9wKGR1cmF0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzYXZlSWZEaXJ0eUFuZENvbmZpcm0oXG4gICAgZXZlbnQ/OiBFdmVudCxcbiAgICBvcHRzPzoge1xuICAgICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICAgIGNvbmZpcm1lZD86IGJvb2xlYW47XG4gICAgfVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuZGlydHkpIHJldHVybiB0cnVlO1xuXG4gICAgbGV0IGNvbmZpcm1lZCA9IG9wdHM/LmNvbmZpcm1lZCB8fCBmYWxzZTtcbiAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChbXG4gICAgICAgICdDT01NT04uQlROX1NBVkUnLFxuICAgICAgICAnQ09NTU9OLkJUTl9DQU5DRUwnLFxuICAgICAgICAnQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJyxcbiAgICAgICAgJ0NPTkZJUk0uU0FWRScsXG4gICAgICAgICdDT05GSVJNLkFMRVJUX0hFQURFUicsXG4gICAgICBdKTtcbiAgICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydEN0cmwuY3JlYXRlKHtcbiAgICAgICAgaGVhZGVyOiB0cmFuc2xhdGlvbnNbJ0NPTkZJUk0uQUxFUlRfSEVBREVSJ10sXG4gICAgICAgIG1lc3NhZ2U6IHRyYW5zbGF0aW9uc1snQ09ORklSTS5TQVZFJ10sXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQ0FOQ0VMJ10sXG4gICAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQUJPUlRfQ0hBTkdFUyddLFxuICAgICAgICAgICAgY3NzQ2xhc3M6ICdzZWNvbmRhcnknLFxuICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fU0FWRSddLFxuICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICBjb25maXJtZWQgPSB0cnVlOyAvLyB1cGRhdGUgdXBwZXIgdmFsdWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgICAgYXdhaXQgYWxlcnQub25EaWREaXNtaXNzKCk7XG5cbiAgICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICAgIHJldHVybiAhY2FuY2VsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNhdmUoZXZlbnQsIG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNhdmVEaXJ0eUNoaWxkcmVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIFNhdmUgYWxsIGRpcnR5IHRhYmxlc1xuICAgIGNvbnN0IGRpcnR5Q2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLmZpbHRlcigoYykgPT4gYy5kaXJ0eSkuZmlsdGVyKEFwcEZvcm1VdGlscy5jYW5TYXZlKTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoZGlydHlDaGlsZHJlbi5tYXAoKGMpID0+IGMuc2F2ZSgpKSk7XG4gICAgcmV0dXJuICFyZXN1bHRzLnNvbWUoKHNhdmVkKSA9PiBzYXZlZCAhPT0gdHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2hvd1RvYXN0KG9wdHM6IFNob3dUb2FzdE9wdGlvbnMpIHtcbiAgICBpZiAoIXRoaXMudG9hc3RDb250cm9sbGVyKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHRvYXN0Q29udHJvbGxlciBpbiBjb21wb25lbnQncyBjb25zdHJ1Y3RvclwiKTtcbiAgICBhd2FpdCBUb2FzdHMuc2hvdyh0aGlzLnRvYXN0Q29udHJvbGxlciwgdGhpcy50cmFuc2xhdGUsIG9wdHMpO1xuICB9XG59XG4iXX0=
@@ -391,10 +391,10 @@ export class AppEntityEditorModal extends AppTabEditor {
391
391
  this.markForCheck();
392
392
  }
393
393
  }
394
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppEntityEditorModal, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
395
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: AppEntityEditorModal, inputs: { data: "data", mobile: "mobile", usageMode: "usageMode", onAfterModalInit: "onAfterModalInit", onDelete: "onDelete", i18nSuffix: "i18nSuffix", isNew: "isNew", isNewData: "isNewData", disabled: "disabled" }, usesInheritance: true, ngImport: i0 });
394
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AppEntityEditorModal, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
395
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: AppEntityEditorModal, inputs: { data: "data", mobile: "mobile", usageMode: "usageMode", onAfterModalInit: "onAfterModalInit", onDelete: "onDelete", i18nSuffix: "i18nSuffix", isNew: "isNew", isNewData: "isNewData", disabled: "disabled" }, usesInheritance: true, ngImport: i0 });
396
396
  }
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AppEntityEditorModal, decorators: [{
397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AppEntityEditorModal, decorators: [{
398
398
  type: Directive
399
399
  }], ctorParameters: () => [{ type: i0.Injector }, { type: undefined }, { type: undefined, decorators: [{
400
400
  type: Optional
@@ -417,4 +417,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
417
417
  }], disabled: [{
418
418
  type: Input
419
419
  }] } });
420
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWVkaXRvci1tb2RhbC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2VudGl0eS9lbnRpdHktZWRpdG9yLW1vZGFsLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFZLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFXLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBSTdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBa0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUV6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0s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QVM7OzBCQXFFTCxRQUFRO3lDQWxERixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFTTyxLQUFLO3NCQUFqQixLQUFLO2dCQWlCTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciwgTW9kYWxDb250cm9sbGVyLCBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgVXNhZ2VNb2RlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9kZWwvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXBwVGFiRWRpdG9yLCBBcHBUYWJFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi90YWItZWRpdG9yLmNsYXNzJztcbmltcG9ydCB7IEFwcEZvcm1VdGlscyB9IGZyb20gJy4uL2Zvcm0udXRpbHMnO1xuaW1wb3J0IHsgQWxlcnRzIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2FsZXJ0cyc7XG5pbXBvcnQgeyBFcnJvckNvZGVzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXJyb3JzJztcbmltcG9ydCB7IGlzTmlsLCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBEYXRlRm9ybWF0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9waXBlcy9kYXRlLWZvcm1hdC5waXBlJztcbmltcG9ydCB7IHdhaXRGb3JGYWxzZSwgV2FpdEZvck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgRm9ybUVycm9yVHJhbnNsYXRvciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC92YWxpZGF0b3IvZm9ybS1lcnJvci1hZGFwdGVyLmNsYXNzJztcbmltcG9ydCB7IEFwcEVycm9yV2l0aERldGFpbHMgfSBmcm9tICcuL2VudGl0eS1lZGl0b3IuY2xhc3MnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbnRpdHlFZGl0b3JNb2RhbE9wdGlvbnM8VCBleHRlbmRzIEVudGl0eTxULCBJRD4gPSBFbnRpdHk8YW55LCBhbnk+LCBJRCA9IG51bWJlcj4ge1xuICAvLyBEYXRhXG4gIGlzTmV3OiBib29sZWFuO1xuICBkYXRhOiBUO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICBvbkFmdGVyTW9kYWxJbml0PzogPE0gZXh0ZW5kcyBBcHBFbnRpdHlFZGl0b3JNb2RhbDxULCBJRD4+KG1vZGFsOiBNKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgb25EZWxldGU/OiAoZXZlbnQ6IEV2ZW50LCBkYXRhOiBUKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIHVzYWdlTW9kZTogVXNhZ2VNb2RlO1xuICBtb2JpbGU6IGJvb2xlYW47XG4gIGkxOG5TdWZmaXg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBFbnRpdHlFZGl0b3JNb2RhbE9wdGlvbnMgZXh0ZW5kcyBBcHBUYWJFZGl0b3JPcHRpb25zIHtcbiAgaTE4blByZWZpeD86IHN0cmluZztcbn1cblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwRW50aXR5RWRpdG9yTW9kYWw8VCBleHRlbmRzIEVudGl0eTxULCBJRD4sIElEID0gbnVtYmVyLCBPIGV4dGVuZHMgQXBwRW50aXR5RWRpdG9yTW9kYWxPcHRpb25zID0gQXBwRW50aXR5RWRpdG9yTW9kYWxPcHRpb25zPlxuICBleHRlbmRzIEFwcFRhYkVkaXRvcjxULCBJRD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgSUVudGl0eUVkaXRvck1vZGFsT3B0aW9uczxULCBJRD5cbntcbiAgcHJvdGVjdGVkIF9sb2dQcmVmaXg6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgX2lzTmV3OiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRlRm9ybWF0OiBEYXRlRm9ybWF0U2VydmljZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgZXJyb3JUcmFuc2xhdG9yOiBGb3JtRXJyb3JUcmFuc2xhdG9yO1xuXG4gIHJlYWRvbmx5IHNhdmluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSB0aXRsZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcblxuICBASW5wdXQoKSBkYXRhOiBUO1xuICBASW5wdXQoKSBtb2JpbGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHVzYWdlTW9kZTogVXNhZ2VNb2RlO1xuICBASW5wdXQoKSBvbkFmdGVyTW9kYWxJbml0OiA8TSBleHRlbmRzIEFwcEVudGl0eUVkaXRvck1vZGFsPFQsIElEPj4obW9kYWw6IE0pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBASW5wdXQoKSBvbkRlbGV0ZTogKGV2ZW50OiBFdmVudCwgZGF0YTogVCkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgQElucHV0KCkgaTE4blN1ZmZpeDogc3RyaW5nID0gbnVsbDtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgJHRpdGxlKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGVTdWJqZWN0O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGlzTmV3KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNOZXcgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpc05ldygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb3ROaWwodGhpcy5faXNOZXcpID8gdGhpcy5faXNOZXcgOiBpc05pbCh0aGlzLmRhdGE/LmlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaXNOZXcgaW5zdGVhZFxuICAgKi9cbiAgZ2V0IGlzTmV3RGF0YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc05ldztcbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzTmV3IGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBpc05ld0RhdGEodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTmV3ID0gdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9lbmFibGVkID0gIXZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc09uRmllbGRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmlzT25GaWVsZE1vZGUodGhpcy51c2FnZU1vZGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZGF0YVR5cGU6IG5ldyAoKSA9PiBULFxuICAgIEBPcHRpb25hbCgpIG9wdGlvbnM/OiBPXG4gICkge1xuICAgIHN1cGVyKG51bGwsIGluamVjdG9yLmdldChSb3V0ZXIpLCBpbmplY3Rvci5nZXQoTmF2Q29udHJvbGxlciksIGluamVjdG9yLmdldChBbGVydENvbnRyb2xsZXIpLCBpbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSksIG9wdGlvbnMpO1xuICAgIG9wdGlvbnMgPSA8Tz57XG4gICAgICAvLyBEZWZhdWx0IG9wdGlvbnNcbiAgICAgIGkxOG5QcmVmaXg6ICcnLFxuXG4gICAgICAvLyBPdmVycmlkZSBkZWZhdWx0c1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgdGhpcy5xdWVyeVRhYkluZGV4UGFyYW1OYW1lID0gdW5kZWZpbmVkOyAvLyBJbXBvcnRhbnQ6IGF2b2lkIHF1ZXJ5IHBhcmFtZXRlciBjaGFuZ2VkXG4gICAgdGhpcy5zZXR0aW5ncyA9IGluamVjdG9yLmdldChMb2NhbFNldHRpbmdzU2VydmljZSk7XG4gICAgdGhpcy5lcnJvclRyYW5zbGF0b3IgPSBpbmplY3Rvci5nZXQoRm9ybUVycm9yVHJhbnNsYXRvcik7XG4gICAgdGhpcy5jZCA9IGluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgdGhpcy5kYXRlRm9ybWF0ID0gaW5qZWN0b3IuZ2V0KERhdGVGb3JtYXRTZXJ2aWNlKTtcbiAgICB0aGlzLm1vZGFsQ3RybCA9IGluamVjdG9yLmdldChNb2RhbENvbnRyb2xsZXIpO1xuICAgIHRoaXMuaTE4bkNvbnRleHQgPSB7XG4gICAgICBwcmVmaXg6IG9wdGlvbnMuaTE4blByZWZpeCxcbiAgICAgIHN1ZmZpeDogdGhpcy5pMThuU3VmZml4IHx8ICcnLFxuICAgIH07XG5cbiAgICAvLyBGT1IgREVWIE9OTFkgLS0tLVxuICAgIC8vdGhpcy5kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gRGVmYXVsdCB2YWx1ZXNcbiAgICB0aGlzLm1vYmlsZSA9IGlzTm90TmlsKHRoaXMubW9iaWxlKSA/IHRoaXMubW9iaWxlIDogdGhpcy5zZXR0aW5ncy5tb2JpbGU7XG4gICAgdGhpcy51c2FnZU1vZGUgPSB0aGlzLnVzYWdlTW9kZSB8fCB0aGlzLnNldHRpbmdzLnVzYWdlTW9kZTtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAvLyBSZWdpc3RlciBmb3Jtc1xuICAgIHRoaXMucmVnaXN0ZXJGb3JtcygpO1xuXG4gICAgLy8gRGlzYWJsZVxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB0aGlzLmRpc2FibGUoKTtcblxuICAgIGlmICh0aGlzLmlzTmV3KSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIHRpdGxlLlxuICAgICAgdGhpcy51cGRhdGVUaXRsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVcGRhdGUgdGl0bGUgZWFjaCB0aW1lIHZhbHVlIGNoYW5nZXNcbiAgICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24odGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgyNTApKS5zdWJzY3JpYmUoKGpzb24pID0+IHRoaXMudXBkYXRlVGl0bGUoanNvbikpKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG5cbiAgICBpZiAodGhpcy5vbkFmdGVyTW9kYWxJbml0KSB7XG4gICAgICBQcm9taXNlLnJlc29sdmUodGhpcy5vbkFmdGVyTW9kYWxJbml0KHRoaXMpKS50aGVuKCgpID0+IHRoaXMubG9hZCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlIGEgdGltZW91dCB0byBhdm9pZCBlcnJvciAnTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yJ1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWQoKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLnRpdGxlU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgIHRoaXMudGl0bGVTdWJqZWN0LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB3YWl0SWRsZShvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBXYWl0IGVuZCBvZiBzYXZpbmdcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybiB3YWl0Rm9yRmFsc2UodGhpcy5zYXZpbmdTdWJqZWN0KTtcblxuICAgIHJldHVybiBzdXBlci53YWl0SWRsZShvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5tYXJrQXNSZWFkeSgpO1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmlldyh0aGlzLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciA9PT0gJ0NBTkNFTExFRCcpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0RXJyb3IoZXJyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgdW5sb2FkKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gaW1wbGVtZW50ZWQgb24gbW9kYWwnKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVZpZXcoXG4gICAgZGF0YTogVCxcbiAgICBvcHRzPzoge1xuICAgICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICAgIG9wZW5UYWJJbmRleD86IG51bWJlcjtcbiAgICB9XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuXG4gICAgaWYgKCFkYXRhKSB0aHJvdyB7IGNvZGU6IEVycm9yQ29kZXMuREFUQV9OT1RfRk9VTkRfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5EQVRBX05PX0ZPVU5EJyB9O1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcblxuICAgIGF3YWl0IHRoaXMuc2V0VmFsdWUoZGF0YSk7XG5cbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB0aGlzLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgdGhpcy51cGRhdGVWaWV3U3RhdGUoZGF0YSk7XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgdGl0bGUuXG4gICAgICB0aGlzLnVwZGF0ZVRpdGxlKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdGF0ZVxuICAgKi9cbiAgdXBkYXRlVmlld1N0YXRlKGRhdGE6IFQsIG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuaXNOZXcgfHwgdGhpcy5lbmFibGVkKSB7XG4gICAgICB0aGlzLmVuYWJsZShvcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNhYmxlKG9wdHMpO1xuXG4gICAgICAvLyBBbGxvdyB0byBzb3J0IHRhYmxlXG4gICAgICB0aGlzLnRhYmxlcz8uZm9yRWFjaCgodCkgPT4gdC5lbmFibGVTb3J0KCkpO1xuICAgICAgdGhpcy5hc3luY1RhYmxlcz8uZm9yRWFjaCgodCkgPT4gdC5lbmFibGVTb3J0KCkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVBbmRDbG9zZShldmVudD86IEV2ZW50IHwgRXZlbnQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5zYXZlQW5kR2V0RGF0YUlmVmFsaWQoKTtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhkYXRhKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhc3luYyBjbG9zZShldmVudDogRXZlbnQgfCBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICBjb25zdCBzYXZlQmVmb3JlTGVhdmUgPSBhd2FpdCBBbGVydHMuYXNrU2F2ZUJlZm9yZUxlYXZlKHRoaXMuYWxlcnRDdHJsLCB0aGlzLnRyYW5zbGF0ZSwgZXZlbnQpO1xuXG4gICAgICAvLyBVc2VyIGNhbmNlbGxlZFxuICAgICAgaWYgKGlzTmlsKHNhdmVCZWZvcmVMZWF2ZSkgfHwgKGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSXMgdXNlciBjb25maXJtOiBjbG9zZSBub3JtYWxseVxuICAgICAgaWYgKHNhdmVCZWZvcmVMZWF2ZSA9PT0gdHJ1ZSkge1xuICAgICAgICBhd2FpdCB0aGlzLnNhdmVBbmRDbG9zZShldmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgZWRpdG9yLCBieSBjYWxsaW5nIHRoZSBkYXRhU2VydmljZS5zYXZlKCkuXG4gICAqIEVuc3VyZSB0aGF0IGVkaXRvciBpZiB2YWxpZC4gSWYgbm90LCBkaXNwbGF5IGFuIGVycm9yXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgc2F2ZShldmVudD86IEV2ZW50IHwgRXZlbnQsIG9wdHM/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5sb2FkaW5nIHx8IHRoaXMuc2F2aW5nIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgJ1NraXAgc2F2ZTogbW9kYWwgaXMgYnVzeSAobG9hZGluZyBvciBzYXZpbmcpJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5kaXJ0eSkge1xuICAgICAgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnU2tpcCBzYXZlOiBtb2RhbCBub3QgZGlydHknKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFdhaXQgZW5kIG9mIGFzeW5jIHZhbGlkYXRpb25cbiAgICBhd2FpdCB0aGlzLndhaXRXaGlsZVBlbmRpbmcoKTtcblxuICAgIC8vIElmIGludmFsaWRcbiAgICBpZiAodGhpcy5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmxvZ0Zvcm1FcnJvcnMoKTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoJ0NPTU1PTi5GT1JNLkhBU19FUlJPUicpO1xuICAgICAgdGhpcy5vcGVuRmlyc3RJbnZhbGlkVGFiKCk7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQoKTtcblxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMubWFya0FzU2F2aW5nKCk7XG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnU2F2aW5nIGRhdGEuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBTYXZlIGFsbCBkaXJ0eSBjaGlsZHJlblxuICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCB0aGlzLnNhdmVEaXJ0eUNoaWxkcmVuKCk7XG4gICAgICBpZiAoIXNhdmVkKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIEZpbGwgZGF0YVxuICAgICAgdGhpcy5kYXRhID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpO1xuXG4gICAgICAvLyBNYXJrIGFzIHN1Ym1pdHRlZFxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7IC8vIENhbiBieSBvdmVycmlkZSBieSBzdWJjbGFzc2VzLCB1c2luZyBzZXRFcnJvcigpXG4gICAgICB0aGlzLnNldEVycm9yKGVycik7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7IC8vIFNjcm9sbCB0byB0b3AgKHRvIHNob3cgZXJyb3IpXG4gICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLmVuYWJsZSgpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubWFya0FzU2F2ZWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBkYXRhIChpZiBkaXJ0eSBhbmQgdmFsaWQpLCBhbmQgcmV0dXJuIGl0LiBPdGhlcndpc2UsIHJldHVybiBuaWwgdmFsdWUuXG4gICAqL1xuICBhc3luYyBzYXZlQW5kR2V0RGF0YUlmVmFsaWQoKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gRm9ybSBpcyBub3QgdmFsaWRcbiAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgIC8vIE1ha2Ugc3VyZSB2YWxpZGF0aW9uIGlzIGZpbmlzaGVkXG4gICAgICBhd2FpdCBBcHBGb3JtVXRpbHMud2FpdFdoaWxlUGVuZGluZyh0aGlzKTtcblxuICAgICAgLy8gSWYgaW52YWxpZDogT3BlbiB0aGUgZmlyc3QgdGFiIGluIGVycm9yXG4gICAgICBpZiAodGhpcy5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMub3BlbkZpcnN0SW52YWxpZFRhYigpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBDb250aW51ZSAodmFsaWQpXG4gICAgfVxuXG4gICAgLy8gRm9ybSBpcyB2YWxpZCwgYnV0IG5vdCBzYXZlZFxuICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICBjb25zdCBzYXZlZCA9IGF3YWl0IHRoaXMuc2F2ZShuZXcgRXZlbnQoJ3NhdmUnKSk7XG4gICAgICBpZiAoIXNhdmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFZhbGlkIGFuZCBzYXZlZCBkYXRhXG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShldmVudD86IEV2ZW50IHwgRXZlbnQpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nIHx8IHRoaXMuc2F2aW5nKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLm1hcmtBc1NhdmluZygpO1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICAgIHRyeSB7XG4gICAgICAvLyBEZWxlZ2F0ZSBkZWxldGlvbiB0byBtb2RhbCBjYWxsZXJcbiAgICAgIGlmICh0aGlzLm9uRGVsZXRlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMub25EZWxldGUoZXZlbnQsIHRoaXMuZGF0YSk7XG5cbiAgICAgICAgLy8gVXNlciBjYW5jZWxsZWRcbiAgICAgICAgaWYgKGlzTmlsKHJlc3VsdCkgfHwgKGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5kYXRhLCAnZGVsZXRlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT3IgZGlzbWlzcywgd2l0aCB0aGUgcm9sZSAnZGVsZXRlJ1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmlzTmV3KSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcih0aGlzLl9sb2dQcmVmaXggKyAnVHJ5aW5nIHRvIGRlbGV0ZSBhIG5ldyBkYXRhLiBNYWtlIG5vIHNlbnNlIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyh0aGlzLmRhdGEsICdkZWxldGUnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoZXJyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgICB0aGlzLm1hcmtBc1NhdmVkKCk7XG4gICAgICBpZiAodGhpcy5lbmFibGVkKSB0aGlzLmVuYWJsZSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0RXJyb3Iob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKGlzTm90TmlsT3JCbGFuayh0aGlzLmVycm9yKSkge1xuICAgICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVycm9yKGVycjogc3RyaW5nIHwgQXBwRXJyb3JXaXRoRGV0YWlscywgb3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbjsgZGV0YWlsc0Nzc0NsYXNzPzogc3RyaW5nIH0pIHtcbiAgICBpZiAoIWVycikge1xuICAgICAgc3VwZXIuc2V0RXJyb3IodW5kZWZpbmVkLCBvcHRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbZW50aXR5LWVkaXRvcl0gRXJyb3I6ICcgKyAoZXJyIHx8ICcnKSk7XG4gICAgICBzdXBlci5zZXRFcnJvcihlcnIgYXMgc3RyaW5nLCBvcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignW2VudGl0eS1lZGl0b3JdIEVycm9yOiAnICsgZXJyLm1lc3NhZ2UgfHwgJycsIGVycik7XG4gICAgICBsZXQgdXNlck1lc3NhZ2UgPSAoZXJyLm1lc3NhZ2UgJiYgdGhpcy50cmFuc2xhdGUuaW5zdGFudChlcnIubWVzc2FnZSkpIHx8IGVycjtcblxuICAgICAgLy8gQWRkIGRldGFpbHMgZXJyb3IgKGlmIGFueSkgdW5kZXIgdGhlIG1haW4gbWVzc2FnZVxuICAgICAgY29uc3QgZGV0YWlsTWVzc2FnZSA9ICFlcnIuZGV0YWlscyB8fCB0eXBlb2YgZXJyLmRldGFpbHMgPT09ICdzdHJpbmcnID8gKGVyci5kZXRhaWxzIGFzIHN0cmluZykgOiBlcnIuZGV0YWlscy5tZXNzYWdlO1xuICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayhkZXRhaWxNZXNzYWdlKSkge1xuICAgICAgICBjb25zdCBjc3NDbGFzcyA9IG9wdHM/LmRldGFpbHNDc3NDbGFzcyB8fCAnZXJyb3ItZGV0YWlscyc7XG4gICAgICAgIHVzZXJNZXNzYWdlICs9IGA8YnIvPjxzbWFsbCBjbGFzcz1cIiR7Y3NzQ2xhc3N9XCIgdGl0bGU9XCIke2RldGFpbE1lc3NhZ2V9XCI+YDtcbiAgICAgICAgdXNlck1lc3NhZ2UgKz0gZGV0YWlsTWVzc2FnZS5sZW5ndGggPCA3MCA/IGRldGFpbE1lc3NhZ2UgOiBkZXRhaWxNZXNzYWdlLnN1YnN0cmluZygwLCA2NykgKyAnLi4uJztcbiAgICAgICAgdXNlck1lc3NhZ2UgKz0gJzwvc21hbGw+JztcbiAgICAgIH1cbiAgICAgIHN1cGVyLnNldEVycm9yKHVzZXJNZXNzYWdlLCBvcHRzKTtcbiAgICB9XG4gIH1cblxuICAvKiAtLSBhYnN0cmFjdCBtZXRob2RzICh0byBvdmVycmlkZSkgLS0gKi9cblxuICBhYnN0cmFjdCBzZXRWYWx1ZShkYXRhOiBUKTogUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlZ2lzdGVyRm9ybXMoKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29tcHV0ZVRpdGxlKGRhdGE6IFQpOiBQcm9taXNlPHN0cmluZz47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBmb3JtKCk6IEZvcm1Hcm91cDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Rmlyc3RJbnZhbGlkVGFiSW5kZXgoKTogbnVtYmVyO1xuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIHdhaXRXaGlsZVBlbmRpbmcob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKHRoaXMsIG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldFZhbHVlKCk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGpzb24gPSBhd2FpdCB0aGlzLmdldEpzb25WYWx1ZVRvU2F2ZSgpO1xuXG4gICAgY29uc3QgcmVzID0gbmV3IHRoaXMuZGF0YVR5cGUoKTtcbiAgICByZXMuZnJvbU9iamVjdChqc29uKTtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SnNvblZhbHVlVG9TYXZlKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmZvcm0udmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgdGhlIHRpdGxlXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgdXBkYXRlVGl0bGUoZGF0YT86IFQpIHtcbiAgICBkYXRhID0gZGF0YSB8fCB0aGlzLmRhdGE7XG4gICAgY29uc3QgdGl0bGUgPSBhd2FpdCB0aGlzLmNvbXB1dGVUaXRsZShkYXRhKTtcbiAgICB0aGlzLnRpdGxlU3ViamVjdC5uZXh0KHRpdGxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzY3JvbGxUb1RvcChkdXJhdGlvbj86IG51bWJlcikge1xuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoZHVyYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZD8ubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiAtLSBwcml2YXRlIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBmaXJzdCB0YWIgdGhhdCBpcyBpbnZhbGlkXG4gICAqL1xuICBwcml2YXRlIG9wZW5GaXJzdEludmFsaWRUYWIoKSB7XG4gICAgY29uc3QgaW52YWxpZFRhYkluZGV4ID0gdGhpcy5nZXRGaXJzdEludmFsaWRUYWJJbmRleCgpO1xuICAgIGlmIChpbnZhbGlkVGFiSW5kZXggIT09IC0xICYmIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCAhPT0gaW52YWxpZFRhYkluZGV4KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSBpbnZhbGlkVGFiSW5kZXg7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxufVxuIl19
420
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWVkaXRvci1tb2RhbC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2VudGl0eS9lbnRpdHktZWRpdG9yLW1vZGFsLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFZLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFXLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBSTdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBa0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUV6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0s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QVM7OzBCQXFFTCxRQUFRO3lDQWxERixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFTTyxLQUFLO3NCQUFqQixLQUFLO2dCQWlCTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciwgTW9kYWxDb250cm9sbGVyLCBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgVXNhZ2VNb2RlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9kZWwvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXBwVGFiRWRpdG9yLCBBcHBUYWJFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi90YWItZWRpdG9yLmNsYXNzJztcbmltcG9ydCB7IEFwcEZvcm1VdGlscyB9IGZyb20gJy4uL2Zvcm0udXRpbHMnO1xuaW1wb3J0IHsgQWxlcnRzIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2FsZXJ0cyc7XG5pbXBvcnQgeyBFcnJvckNvZGVzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXJyb3JzJztcbmltcG9ydCB7IGlzTmlsLCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBEYXRlRm9ybWF0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9waXBlcy9kYXRlLWZvcm1hdC5waXBlJztcbmltcG9ydCB7IHdhaXRGb3JGYWxzZSwgV2FpdEZvck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgRm9ybUVycm9yVHJhbnNsYXRvciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC92YWxpZGF0b3IvZm9ybS1lcnJvci1hZGFwdGVyLmNsYXNzJztcbmltcG9ydCB7IEFwcEVycm9yV2l0aERldGFpbHMgfSBmcm9tICcuL2VudGl0eS1lZGl0b3IuY2xhc3MnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbnRpdHlFZGl0b3JNb2RhbE9wdGlvbnM8VCBleHRlbmRzIEVudGl0eTxULCBJRD4gPSBFbnRpdHk8YW55LCBhbnk+LCBJRCA9IG51bWJlcj4ge1xuICAvLyBEYXRhXG4gIGlzTmV3OiBib29sZWFuO1xuICBkYXRhOiBUO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICBvbkFmdGVyTW9kYWxJbml0PzogPE0gZXh0ZW5kcyBBcHBFbnRpdHlFZGl0b3JNb2RhbDxULCBJRD4+KG1vZGFsOiBNKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgb25EZWxldGU/OiAoZXZlbnQ6IEV2ZW50LCBkYXRhOiBUKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIHVzYWdlTW9kZTogVXNhZ2VNb2RlO1xuICBtb2JpbGU6IGJvb2xlYW47XG4gIGkxOG5TdWZmaXg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBFbnRpdHlFZGl0b3JNb2RhbE9wdGlvbnMgZXh0ZW5kcyBBcHBUYWJFZGl0b3JPcHRpb25zIHtcbiAgaTE4blByZWZpeD86IHN0cmluZztcbn1cblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwRW50aXR5RWRpdG9yTW9kYWw8VCBleHRlbmRzIEVudGl0eTxULCBJRD4sIElEID0gbnVtYmVyLCBPIGV4dGVuZHMgQXBwRW50aXR5RWRpdG9yTW9kYWxPcHRpb25zID0gQXBwRW50aXR5RWRpdG9yTW9kYWxPcHRpb25zPlxuICBleHRlbmRzIEFwcFRhYkVkaXRvcjxULCBJRD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgSUVudGl0eUVkaXRvck1vZGFsT3B0aW9uczxULCBJRD5cbntcbiAgcHJvdGVjdGVkIF9sb2dQcmVmaXg6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgX2lzTmV3OiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRlRm9ybWF0OiBEYXRlRm9ybWF0U2VydmljZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgZXJyb3JUcmFuc2xhdG9yOiBGb3JtRXJyb3JUcmFuc2xhdG9yO1xuXG4gIHJlYWRvbmx5IHNhdmluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSB0aXRsZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcblxuICBASW5wdXQoKSBkYXRhOiBUO1xuICBASW5wdXQoKSBtb2JpbGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHVzYWdlTW9kZTogVXNhZ2VNb2RlO1xuICBASW5wdXQoKSBvbkFmdGVyTW9kYWxJbml0OiA8TSBleHRlbmRzIEFwcEVudGl0eUVkaXRvck1vZGFsPFQsIElEPj4obW9kYWw6IE0pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBASW5wdXQoKSBvbkRlbGV0ZTogKGV2ZW50OiBFdmVudCwgZGF0YTogVCkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgQElucHV0KCkgaTE4blN1ZmZpeDogc3RyaW5nID0gbnVsbDtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgJHRpdGxlKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGVTdWJqZWN0O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGlzTmV3KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNOZXcgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpc05ldygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb3ROaWwodGhpcy5faXNOZXcpID8gdGhpcy5faXNOZXcgOiBpc05pbCh0aGlzLmRhdGE/LmlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaXNOZXcgaW5zdGVhZFxuICAgKi9cbiAgZ2V0IGlzTmV3RGF0YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc05ldztcbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzTmV3IGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBpc05ld0RhdGEodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTmV3ID0gdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9lbmFibGVkID0gIXZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc09uRmllbGRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmlzT25GaWVsZE1vZGUodGhpcy51c2FnZU1vZGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgZGF0YVR5cGU6IG5ldyAoKSA9PiBULFxuICAgIEBPcHRpb25hbCgpIG9wdGlvbnM/OiBPXG4gICkge1xuICAgIHN1cGVyKG51bGwsIGluamVjdG9yLmdldChSb3V0ZXIpLCBpbmplY3Rvci5nZXQoTmF2Q29udHJvbGxlciksIGluamVjdG9yLmdldChBbGVydENvbnRyb2xsZXIpLCBpbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSksIG9wdGlvbnMpO1xuICAgIG9wdGlvbnMgPSA8Tz57XG4gICAgICAvLyBEZWZhdWx0IG9wdGlvbnNcbiAgICAgIGkxOG5QcmVmaXg6ICcnLFxuXG4gICAgICAvLyBPdmVycmlkZSBkZWZhdWx0c1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgdGhpcy5xdWVyeVRhYkluZGV4UGFyYW1OYW1lID0gdW5kZWZpbmVkOyAvLyBJbXBvcnRhbnQ6IGF2b2lkIHF1ZXJ5IHBhcmFtZXRlciBjaGFuZ2VkXG4gICAgdGhpcy5zZXR0aW5ncyA9IGluamVjdG9yLmdldChMb2NhbFNldHRpbmdzU2VydmljZSk7XG4gICAgdGhpcy5lcnJvclRyYW5zbGF0b3IgPSBpbmplY3Rvci5nZXQoRm9ybUVycm9yVHJhbnNsYXRvcik7XG4gICAgdGhpcy5jZCA9IGluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgdGhpcy5kYXRlRm9ybWF0ID0gaW5qZWN0b3IuZ2V0KERhdGVGb3JtYXRTZXJ2aWNlKTtcbiAgICB0aGlzLm1vZGFsQ3RybCA9IGluamVjdG9yLmdldChNb2RhbENvbnRyb2xsZXIpO1xuICAgIHRoaXMuaTE4bkNvbnRleHQgPSB7XG4gICAgICBwcmVmaXg6IG9wdGlvbnMuaTE4blByZWZpeCxcbiAgICAgIHN1ZmZpeDogdGhpcy5pMThuU3VmZml4IHx8ICcnLFxuICAgIH07XG5cbiAgICAvLyBGT1IgREVWIE9OTFkgLS0tLVxuICAgIC8vdGhpcy5kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gRGVmYXVsdCB2YWx1ZXNcbiAgICB0aGlzLm1vYmlsZSA9IGlzTm90TmlsKHRoaXMubW9iaWxlKSA/IHRoaXMubW9iaWxlIDogdGhpcy5zZXR0aW5ncy5tb2JpbGU7XG4gICAgdGhpcy51c2FnZU1vZGUgPSB0aGlzLnVzYWdlTW9kZSB8fCB0aGlzLnNldHRpbmdzLnVzYWdlTW9kZTtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAvLyBSZWdpc3RlciBmb3Jtc1xuICAgIHRoaXMucmVnaXN0ZXJGb3JtcygpO1xuXG4gICAgLy8gRGlzYWJsZVxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB0aGlzLmRpc2FibGUoKTtcblxuICAgIGlmICh0aGlzLmlzTmV3KSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIHRpdGxlLlxuICAgICAgdGhpcy51cGRhdGVUaXRsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVcGRhdGUgdGl0bGUgZWFjaCB0aW1lIHZhbHVlIGNoYW5nZXNcbiAgICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24odGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgyNTApKS5zdWJzY3JpYmUoKGpzb24pID0+IHRoaXMudXBkYXRlVGl0bGUoanNvbikpKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG5cbiAgICBpZiAodGhpcy5vbkFmdGVyTW9kYWxJbml0KSB7XG4gICAgICBQcm9taXNlLnJlc29sdmUodGhpcy5vbkFmdGVyTW9kYWxJbml0KHRoaXMpKS50aGVuKCgpID0+IHRoaXMubG9hZCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlIGEgdGltZW91dCB0byBhdm9pZCBlcnJvciAnTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yJ1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWQoKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLnRpdGxlU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgIHRoaXMudGl0bGVTdWJqZWN0LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB3YWl0SWRsZShvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBXYWl0IGVuZCBvZiBzYXZpbmdcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybiB3YWl0Rm9yRmFsc2UodGhpcy5zYXZpbmdTdWJqZWN0KTtcblxuICAgIHJldHVybiBzdXBlci53YWl0SWRsZShvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5tYXJrQXNSZWFkeSgpO1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmlldyh0aGlzLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciA9PT0gJ0NBTkNFTExFRCcpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0RXJyb3IoZXJyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgdW5sb2FkKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gaW1wbGVtZW50ZWQgb24gbW9kYWwnKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVZpZXcoXG4gICAgZGF0YTogVCxcbiAgICBvcHRzPzoge1xuICAgICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICAgIG9wZW5UYWJJbmRleD86IG51bWJlcjtcbiAgICB9XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuXG4gICAgaWYgKCFkYXRhKSB0aHJvdyB7IGNvZGU6IEVycm9yQ29kZXMuREFUQV9OT1RfRk9VTkRfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5EQVRBX05PX0ZPVU5EJyB9O1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcblxuICAgIGF3YWl0IHRoaXMuc2V0VmFsdWUoZGF0YSk7XG5cbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB0aGlzLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgdGhpcy51cGRhdGVWaWV3U3RhdGUoZGF0YSk7XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgdGl0bGUuXG4gICAgICB0aGlzLnVwZGF0ZVRpdGxlKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdGF0ZVxuICAgKi9cbiAgdXBkYXRlVmlld1N0YXRlKGRhdGE6IFQsIG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuaXNOZXcgfHwgdGhpcy5lbmFibGVkKSB7XG4gICAgICB0aGlzLmVuYWJsZShvcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNhYmxlKG9wdHMpO1xuXG4gICAgICAvLyBBbGxvdyB0byBzb3J0IHRhYmxlXG4gICAgICB0aGlzLnRhYmxlcz8uZm9yRWFjaCgodCkgPT4gdC5lbmFibGVTb3J0KCkpO1xuICAgICAgdGhpcy5hc3luY1RhYmxlcz8uZm9yRWFjaCgodCkgPT4gdC5lbmFibGVTb3J0KCkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVBbmRDbG9zZShldmVudD86IEV2ZW50IHwgRXZlbnQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5zYXZlQW5kR2V0RGF0YUlmVmFsaWQoKTtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhkYXRhKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhc3luYyBjbG9zZShldmVudDogRXZlbnQgfCBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICBjb25zdCBzYXZlQmVmb3JlTGVhdmUgPSBhd2FpdCBBbGVydHMuYXNrU2F2ZUJlZm9yZUxlYXZlKHRoaXMuYWxlcnRDdHJsLCB0aGlzLnRyYW5zbGF0ZSwgZXZlbnQpO1xuXG4gICAgICAvLyBVc2VyIGNhbmNlbGxlZFxuICAgICAgaWYgKGlzTmlsKHNhdmVCZWZvcmVMZWF2ZSkgfHwgKGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSXMgdXNlciBjb25maXJtOiBjbG9zZSBub3JtYWxseVxuICAgICAgaWYgKHNhdmVCZWZvcmVMZWF2ZSA9PT0gdHJ1ZSkge1xuICAgICAgICBhd2FpdCB0aGlzLnNhdmVBbmRDbG9zZShldmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgZWRpdG9yLCBieSBjYWxsaW5nIHRoZSBkYXRhU2VydmljZS5zYXZlKCkuXG4gICAqIEVuc3VyZSB0aGF0IGVkaXRvciBpZiB2YWxpZC4gSWYgbm90LCBkaXNwbGF5IGFuIGVycm9yXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgc2F2ZShldmVudD86IEV2ZW50IHwgRXZlbnQsIG9wdHM/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5sb2FkaW5nIHx8IHRoaXMuc2F2aW5nIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgJ1NraXAgc2F2ZTogbW9kYWwgaXMgYnVzeSAobG9hZGluZyBvciBzYXZpbmcpJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5kaXJ0eSkge1xuICAgICAgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnU2tpcCBzYXZlOiBtb2RhbCBub3QgZGlydHknKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFdhaXQgZW5kIG9mIGFzeW5jIHZhbGlkYXRpb25cbiAgICBhd2FpdCB0aGlzLndhaXRXaGlsZVBlbmRpbmcoKTtcblxuICAgIC8vIElmIGludmFsaWRcbiAgICBpZiAodGhpcy5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmxvZ0Zvcm1FcnJvcnMoKTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoJ0NPTU1PTi5GT1JNLkhBU19FUlJPUicpO1xuICAgICAgdGhpcy5vcGVuRmlyc3RJbnZhbGlkVGFiKCk7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQoKTtcblxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMubWFya0FzU2F2aW5nKCk7XG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnU2F2aW5nIGRhdGEuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBTYXZlIGFsbCBkaXJ0eSBjaGlsZHJlblxuICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCB0aGlzLnNhdmVEaXJ0eUNoaWxkcmVuKCk7XG4gICAgICBpZiAoIXNhdmVkKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIEZpbGwgZGF0YVxuICAgICAgdGhpcy5kYXRhID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpO1xuXG4gICAgICAvLyBNYXJrIGFzIHN1Ym1pdHRlZFxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7IC8vIENhbiBieSBvdmVycmlkZSBieSBzdWJjbGFzc2VzLCB1c2luZyBzZXRFcnJvcigpXG4gICAgICB0aGlzLnNldEVycm9yKGVycik7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7IC8vIFNjcm9sbCB0byB0b3AgKHRvIHNob3cgZXJyb3IpXG4gICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLmVuYWJsZSgpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubWFya0FzU2F2ZWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBkYXRhIChpZiBkaXJ0eSBhbmQgdmFsaWQpLCBhbmQgcmV0dXJuIGl0LiBPdGhlcndpc2UsIHJldHVybiBuaWwgdmFsdWUuXG4gICAqL1xuICBhc3luYyBzYXZlQW5kR2V0RGF0YUlmVmFsaWQoKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gRm9ybSBpcyBub3QgdmFsaWRcbiAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgIC8vIE1ha2Ugc3VyZSB2YWxpZGF0aW9uIGlzIGZpbmlzaGVkXG4gICAgICBhd2FpdCBBcHBGb3JtVXRpbHMud2FpdFdoaWxlUGVuZGluZyh0aGlzKTtcblxuICAgICAgLy8gSWYgaW52YWxpZDogT3BlbiB0aGUgZmlyc3QgdGFiIGluIGVycm9yXG4gICAgICBpZiAodGhpcy5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMub3BlbkZpcnN0SW52YWxpZFRhYigpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBDb250aW51ZSAodmFsaWQpXG4gICAgfVxuXG4gICAgLy8gRm9ybSBpcyB2YWxpZCwgYnV0IG5vdCBzYXZlZFxuICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICBjb25zdCBzYXZlZCA9IGF3YWl0IHRoaXMuc2F2ZShuZXcgRXZlbnQoJ3NhdmUnKSk7XG4gICAgICBpZiAoIXNhdmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFZhbGlkIGFuZCBzYXZlZCBkYXRhXG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShldmVudD86IEV2ZW50IHwgRXZlbnQpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nIHx8IHRoaXMuc2F2aW5nKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLm1hcmtBc1NhdmluZygpO1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICAgIHRyeSB7XG4gICAgICAvLyBEZWxlZ2F0ZSBkZWxldGlvbiB0byBtb2RhbCBjYWxsZXJcbiAgICAgIGlmICh0aGlzLm9uRGVsZXRlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMub25EZWxldGUoZXZlbnQsIHRoaXMuZGF0YSk7XG5cbiAgICAgICAgLy8gVXNlciBjYW5jZWxsZWRcbiAgICAgICAgaWYgKGlzTmlsKHJlc3VsdCkgfHwgKGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5kYXRhLCAnZGVsZXRlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT3IgZGlzbWlzcywgd2l0aCB0aGUgcm9sZSAnZGVsZXRlJ1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmlzTmV3KSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcih0aGlzLl9sb2dQcmVmaXggKyAnVHJ5aW5nIHRvIGRlbGV0ZSBhIG5ldyBkYXRhLiBNYWtlIG5vIHNlbnNlIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyh0aGlzLmRhdGEsICdkZWxldGUnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoZXJyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgICB0aGlzLm1hcmtBc1NhdmVkKCk7XG4gICAgICBpZiAodGhpcy5lbmFibGVkKSB0aGlzLmVuYWJsZSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0RXJyb3Iob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKGlzTm90TmlsT3JCbGFuayh0aGlzLmVycm9yKSkge1xuICAgICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVycm9yKGVycjogc3RyaW5nIHwgQXBwRXJyb3JXaXRoRGV0YWlscywgb3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbjsgZGV0YWlsc0Nzc0NsYXNzPzogc3RyaW5nIH0pIHtcbiAgICBpZiAoIWVycikge1xuICAgICAgc3VwZXIuc2V0RXJyb3IodW5kZWZpbmVkLCBvcHRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbZW50aXR5LWVkaXRvcl0gRXJyb3I6ICcgKyAoZXJyIHx8ICcnKSk7XG4gICAgICBzdXBlci5zZXRFcnJvcihlcnIgYXMgc3RyaW5nLCBvcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignW2VudGl0eS1lZGl0b3JdIEVycm9yOiAnICsgZXJyLm1lc3NhZ2UgfHwgJycsIGVycik7XG4gICAgICBsZXQgdXNlck1lc3NhZ2UgPSAoZXJyLm1lc3NhZ2UgJiYgdGhpcy50cmFuc2xhdGUuaW5zdGFudChlcnIubWVzc2FnZSkpIHx8IGVycjtcblxuICAgICAgLy8gQWRkIGRldGFpbHMgZXJyb3IgKGlmIGFueSkgdW5kZXIgdGhlIG1haW4gbWVzc2FnZVxuICAgICAgY29uc3QgZGV0YWlsTWVzc2FnZSA9ICFlcnIuZGV0YWlscyB8fCB0eXBlb2YgZXJyLmRldGFpbHMgPT09ICdzdHJpbmcnID8gKGVyci5kZXRhaWxzIGFzIHN0cmluZykgOiBlcnIuZGV0YWlscy5tZXNzYWdlO1xuICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayhkZXRhaWxNZXNzYWdlKSkge1xuICAgICAgICBjb25zdCBjc3NDbGFzcyA9IG9wdHM/LmRldGFpbHNDc3NDbGFzcyB8fCAnZXJyb3ItZGV0YWlscyc7XG4gICAgICAgIHVzZXJNZXNzYWdlICs9IGA8YnIvPjxzbWFsbCBjbGFzcz1cIiR7Y3NzQ2xhc3N9XCIgdGl0bGU9XCIke2RldGFpbE1lc3NhZ2V9XCI+YDtcbiAgICAgICAgdXNlck1lc3NhZ2UgKz0gZGV0YWlsTWVzc2FnZS5sZW5ndGggPCA3MCA/IGRldGFpbE1lc3NhZ2UgOiBkZXRhaWxNZXNzYWdlLnN1YnN0cmluZygwLCA2NykgKyAnLi4uJztcbiAgICAgICAgdXNlck1lc3NhZ2UgKz0gJzwvc21hbGw+JztcbiAgICAgIH1cbiAgICAgIHN1cGVyLnNldEVycm9yKHVzZXJNZXNzYWdlLCBvcHRzKTtcbiAgICB9XG4gIH1cblxuICAvKiAtLSBhYnN0cmFjdCBtZXRob2RzICh0byBvdmVycmlkZSkgLS0gKi9cblxuICBhYnN0cmFjdCBzZXRWYWx1ZShkYXRhOiBUKTogUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlZ2lzdGVyRm9ybXMoKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29tcHV0ZVRpdGxlKGRhdGE6IFQpOiBQcm9taXNlPHN0cmluZz47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBmb3JtKCk6IEZvcm1Hcm91cDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Rmlyc3RJbnZhbGlkVGFiSW5kZXgoKTogbnVtYmVyO1xuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIHdhaXRXaGlsZVBlbmRpbmcob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKHRoaXMsIG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldFZhbHVlKCk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGpzb24gPSBhd2FpdCB0aGlzLmdldEpzb25WYWx1ZVRvU2F2ZSgpO1xuXG4gICAgY29uc3QgcmVzID0gbmV3IHRoaXMuZGF0YVR5cGUoKTtcbiAgICByZXMuZnJvbU9iamVjdChqc29uKTtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SnNvblZhbHVlVG9TYXZlKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmZvcm0udmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgdGhlIHRpdGxlXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgdXBkYXRlVGl0bGUoZGF0YT86IFQpIHtcbiAgICBkYXRhID0gZGF0YSB8fCB0aGlzLmRhdGE7XG4gICAgY29uc3QgdGl0bGUgPSBhd2FpdCB0aGlzLmNvbXB1dGVUaXRsZShkYXRhKTtcbiAgICB0aGlzLnRpdGxlU3ViamVjdC5uZXh0KHRpdGxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzY3JvbGxUb1RvcChkdXJhdGlvbj86IG51bWJlcikge1xuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoZHVyYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZD8ubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiAtLSBwcml2YXRlIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBmaXJzdCB0YWIgdGhhdCBpcyBpbnZhbGlkXG4gICAqL1xuICBwcml2YXRlIG9wZW5GaXJzdEludmFsaWRUYWIoKSB7XG4gICAgY29uc3QgaW52YWxpZFRhYkluZGV4ID0gdGhpcy5nZXRGaXJzdEludmFsaWRUYWJJbmRleCgpO1xuICAgIGlmIChpbnZhbGlkVGFiSW5kZXggIT09IC0xICYmIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCAhPT0gaW52YWxpZFRhYkluZGV4KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSBpbnZhbGlkVGFiSW5kZXg7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxufVxuIl19