@sumaris-net/ngx-components 2.0.0-rc16 → 2.0.0-rc19

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 (293) hide show
  1. package/esm2020/public_api.mjs +34 -21
  2. package/esm2020/src/app/admin/admin-routing.module.mjs +6 -6
  3. package/esm2020/src/app/admin/admin.module.mjs +6 -6
  4. package/esm2020/src/app/admin/services/person.service.mjs +3 -3
  5. package/esm2020/src/app/admin/services/validator/person.validator.mjs +3 -3
  6. package/esm2020/src/app/admin/users/{list/users.mjs → users.mjs} +31 -31
  7. package/esm2020/src/app/admin/users/users.module.mjs +54 -0
  8. package/esm2020/src/app/core/about/about.modal.mjs +71 -0
  9. package/esm2020/src/app/core/about/about.module.mjs +34 -0
  10. package/esm2020/src/app/core/account/account.module.mjs +43 -0
  11. package/esm2020/src/app/core/account/account.page.mjs +239 -0
  12. package/esm2020/src/app/core/auth/auth.form.mjs +131 -0
  13. package/esm2020/src/app/core/auth/auth.modal.mjs +72 -0
  14. package/esm2020/src/app/core/auth/auth.module.mjs +47 -0
  15. package/esm2020/src/app/core/core.module.mjs +86 -125
  16. package/esm2020/src/app/core/core.testing.module.mjs +7 -7
  17. package/esm2020/src/app/core/form/{form-buttons-bar.component.mjs → buttons/form-buttons-bar.component.mjs} +7 -7
  18. package/esm2020/src/app/core/form/buttons/form-buttons-bar.module.mjs +35 -0
  19. package/esm2020/src/app/core/form/entity/editor.class.mjs +675 -0
  20. package/esm2020/src/app/core/form/entity/entity-editor-modal.class.mjs +421 -0
  21. package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +646 -0
  22. package/esm2020/src/app/core/form/{entity-metadata.component.mjs → entity/entity-metadata.component.mjs} +6 -6
  23. package/esm2020/src/app/core/form/entity/entity.module.mjs +38 -0
  24. package/esm2020/src/app/core/form/form.class.mjs +3 -3
  25. package/esm2020/src/app/core/form/form.module.mjs +66 -0
  26. package/esm2020/src/app/core/form/list/list.form.mjs +222 -0
  27. package/esm2020/src/app/core/form/list/list.module.mjs +35 -0
  28. package/esm2020/src/app/core/form/properties/properties.form.mjs +3 -3
  29. package/esm2020/src/app/core/form/properties/properties.module.mjs +35 -0
  30. package/esm2020/src/app/core/form/properties/property.validator.mjs +3 -3
  31. package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +3 -3
  32. package/esm2020/src/app/core/form/properties/testing/properties-form.testing.module.mjs +4 -4
  33. package/esm2020/src/app/core/{text-popover → form/text-popover}/testing/text-popover.testing.mjs +4 -4
  34. package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +45 -0
  35. package/esm2020/src/app/core/{text-popover → form/text-popover}/text-form.component.mjs +8 -8
  36. package/esm2020/src/app/core/{text-popover → form/text-popover}/text-popover.component.mjs +6 -6
  37. package/esm2020/src/app/core/form/text-popover/text-popover.module.mjs +40 -0
  38. package/esm2020/src/app/core/graphql/graphql.module.mjs +4 -4
  39. package/esm2020/src/app/core/graphql/graphql.service.mjs +3 -3
  40. package/esm2020/src/app/core/home/home.mjs +8 -8
  41. package/esm2020/src/app/core/home/home.module.mjs +48 -0
  42. package/esm2020/src/app/core/icon/icon.component.mjs +3 -3
  43. package/esm2020/src/app/core/icon/icon.module.mjs +4 -4
  44. package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +3 -3
  45. package/esm2020/src/app/core/install/install-upgrade-card.module.mjs +17 -15
  46. package/esm2020/src/app/core/menu/menu.component.mjs +5 -5
  47. package/esm2020/src/app/core/menu/menu.module.mjs +9 -10
  48. package/esm2020/src/app/core/menu/menu.service.mjs +3 -3
  49. package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +3 -3
  50. package/esm2020/src/app/core/offline/update-offline-mode-card.module.mjs +35 -0
  51. package/esm2020/src/app/core/peer/select-peer.modal.mjs +3 -3
  52. package/esm2020/src/app/core/peer/select-peer.module.mjs +14 -10
  53. package/esm2020/src/app/core/register/register-confirm.page.mjs +81 -0
  54. package/esm2020/src/app/core/register/register.form.mjs +181 -0
  55. package/esm2020/src/app/core/register/register.modal.mjs +52 -0
  56. package/esm2020/src/app/core/register/register.module.mjs +17 -15
  57. package/esm2020/src/app/core/services/account.service.mjs +3 -3
  58. package/esm2020/src/app/core/services/auth-guard.service.mjs +6 -6
  59. package/esm2020/src/app/core/services/base-entity-service.class.mjs +3 -3
  60. package/esm2020/src/app/core/services/base-graphql-service.class.mjs +3 -3
  61. package/esm2020/src/app/core/services/config.service.mjs +3 -3
  62. package/esm2020/src/app/core/services/crypto.service.mjs +3 -3
  63. package/esm2020/src/app/core/services/local-settings.service.mjs +3 -3
  64. package/esm2020/src/app/core/services/network.service.mjs +3 -3
  65. package/esm2020/src/app/core/services/pipes/account.pipes.mjs +8 -8
  66. package/esm2020/src/app/core/services/pipes/department-to-string.pipe.mjs +4 -4
  67. package/esm2020/src/app/core/services/pipes/person-to-string.pipe.mjs +4 -4
  68. package/esm2020/src/app/core/services/pipes/usage-mode.pipes.mjs +8 -8
  69. package/esm2020/src/app/core/services/platform.service.mjs +3 -3
  70. package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +3 -3
  71. package/esm2020/src/app/core/services/testing/referential.validator.mjs +3 -3
  72. package/esm2020/src/app/core/services/validator/account.validator.mjs +3 -3
  73. package/esm2020/src/app/core/services/validator/base.validator.class.mjs +3 -3
  74. package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +3 -3
  75. package/esm2020/src/app/core/services/validator/user-settings.validator.mjs +3 -3
  76. package/esm2020/src/app/core/settings/settings.module.mjs +34 -0
  77. package/esm2020/src/app/core/settings/settings.page.mjs +4 -4
  78. package/esm2020/src/app/core/table/actions-column.component.mjs +3 -3
  79. package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +3 -3
  80. package/esm2020/src/app/core/table/memory-table.class.mjs +3 -3
  81. package/esm2020/src/app/core/table/table-select-columns.component.mjs +3 -3
  82. package/esm2020/src/app/core/table/table.class.mjs +3 -3
  83. package/esm2020/src/app/core/table/table.module.mjs +40 -0
  84. package/esm2020/src/app/core/table/testing/table.testing.mjs +6 -6
  85. package/esm2020/src/app/core/table/testing/table.testing.module.mjs +4 -4
  86. package/esm2020/src/app/shared/audio/audio.mjs +3 -3
  87. package/esm2020/src/app/shared/audio/audio.testing.mjs +3 -3
  88. package/esm2020/src/app/shared/audio/audio.testing.module.mjs +4 -4
  89. package/esm2020/src/app/shared/capacitor/keyboard.mjs +3 -3
  90. package/esm2020/src/app/shared/debug/debug.component.mjs +3 -3
  91. package/esm2020/src/app/shared/debug/debug.module.mjs +4 -4
  92. package/esm2020/src/app/shared/directives/autofocus.directive.mjs +3 -3
  93. package/esm2020/src/app/shared/directives/autotitle.directive.mjs +3 -3
  94. package/esm2020/src/app/shared/directives/directives.module.mjs +4 -4
  95. package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +3 -3
  96. package/esm2020/src/app/shared/directives/ng-var.directive.mjs +3 -3
  97. package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +3 -3
  98. package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +3 -3
  99. package/esm2020/src/app/shared/directives/resizable/resizable.module.mjs +4 -4
  100. package/esm2020/src/app/shared/file/file.service.mjs +3 -3
  101. package/esm2020/src/app/shared/form/field.component.mjs +3 -3
  102. package/esm2020/src/app/shared/form/loading-spinner.mjs +3 -3
  103. package/esm2020/src/app/shared/gesture/gesture-config.mjs +3 -3
  104. package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +3 -3
  105. package/esm2020/src/app/shared/help/help.modal.mjs +3 -3
  106. package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +3 -3
  107. package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +3 -3
  108. package/esm2020/src/app/shared/hotkeys/shared-hotkeys.module.mjs +4 -4
  109. package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +3 -3
  110. package/esm2020/src/app/shared/image/gallery/image-gallery.module.mjs +4 -4
  111. package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +3 -3
  112. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +3 -3
  113. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +4 -4
  114. package/esm2020/src/app/shared/image/image.module.mjs +4 -4
  115. package/esm2020/src/app/shared/image/image.service.mjs +3 -3
  116. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +3 -3
  117. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +4 -4
  118. package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
  119. package/esm2020/src/app/shared/material/badge/badge.directive.mjs +3 -3
  120. package/esm2020/src/app/shared/material/badge/badge.module.mjs +4 -4
  121. package/esm2020/src/app/shared/material/badge/badge.test.mjs +3 -3
  122. package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +4 -4
  123. package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +3 -3
  124. package/esm2020/src/app/shared/material/chips/chips.module.mjs +4 -4
  125. package/esm2020/src/app/shared/material/chips/material.chips.mjs +3 -3
  126. package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +3 -3
  127. package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +4 -4
  128. package/esm2020/src/app/shared/material/datetime/material.date.mjs +3 -3
  129. package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +3 -3
  130. package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +3 -3
  131. package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +3 -3
  132. package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +3 -3
  133. package/esm2020/src/app/shared/material/duration/duration.module.mjs +4 -4
  134. package/esm2020/src/app/shared/material/duration/material.duration.mjs +3 -3
  135. package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +3 -3
  136. package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +4 -4
  137. package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +3 -3
  138. package/esm2020/src/app/shared/material/material.module.mjs +4 -4
  139. package/esm2020/src/app/shared/material/material.testing.module.mjs +4 -4
  140. package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +3 -3
  141. package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +3 -3
  142. package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +3 -3
  143. package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +3 -3
  144. package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +3 -3
  145. package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +3 -3
  146. package/esm2020/src/app/shared/material/numpad/numpad.module.mjs +4 -4
  147. package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +3 -3
  148. package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +3 -3
  149. package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +3 -3
  150. package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +3 -3
  151. package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +4 -4
  152. package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +3 -3
  153. package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +24 -24
  154. package/esm2020/src/app/shared/pipes/colors.pipe.mjs +3 -3
  155. package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +4 -4
  156. package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +4 -4
  157. package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +4 -4
  158. package/esm2020/src/app/shared/pipes/duration.pipe.mjs +4 -4
  159. package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +3 -3
  160. package/esm2020/src/app/shared/pipes/form.pipes.mjs +18 -18
  161. package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +4 -4
  162. package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +9 -9
  163. package/esm2020/src/app/shared/pipes/maps.pipe.mjs +12 -12
  164. package/esm2020/src/app/shared/pipes/math.pipes.mjs +12 -12
  165. package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +3 -3
  166. package/esm2020/src/app/shared/pipes/number-format.pipe.mjs +4 -4
  167. package/esm2020/src/app/shared/pipes/pipes.module.mjs +4 -4
  168. package/esm2020/src/app/shared/pipes/property.pipes.mjs +7 -7
  169. package/esm2020/src/app/shared/pipes/string.pipes.mjs +15 -15
  170. package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +8 -8
  171. package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +3 -3
  172. package/esm2020/src/app/shared/services/progress-bar.service.mjs +3 -3
  173. package/esm2020/src/app/shared/services/storage/storage.service.mjs +3 -3
  174. package/esm2020/src/app/shared/services/translate-context.service.mjs +3 -3
  175. package/esm2020/src/app/shared/shared-routing.module.mjs +7 -7
  176. package/esm2020/src/app/shared/shared.module.mjs +9 -5
  177. package/esm2020/src/app/shared/shared.testing.module.mjs +4 -4
  178. package/esm2020/src/app/shared/testing/observable.test.mjs +3 -3
  179. package/esm2020/src/app/shared/testing/tests.page.mjs +3 -3
  180. package/esm2020/src/app/shared/toast/toast.testing.mjs +3 -3
  181. package/esm2020/src/app/shared/toast/toast.testing.module.mjs +4 -4
  182. package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +3 -3
  183. package/esm2020/src/app/shared/toolbar/toolbar.mjs +3 -3
  184. package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +4 -4
  185. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +3 -3
  186. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +4 -4
  187. package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +3 -3
  188. package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +3 -3
  189. package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +3 -3
  190. package/esm2020/src/app/social/job/job.module.mjs +4 -4
  191. package/esm2020/src/app/social/job/job.service.mjs +3 -3
  192. package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +3 -3
  193. package/esm2020/src/app/social/job/progression/job-progression.list.mjs +3 -3
  194. package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +3 -3
  195. package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +3 -3
  196. package/esm2020/src/app/social/job/testing/job.testing.module.mjs +4 -4
  197. package/esm2020/src/app/social/message/message.form.mjs +3 -3
  198. package/esm2020/src/app/social/message/message.modal.mjs +3 -3
  199. package/esm2020/src/app/social/message/message.module.mjs +4 -4
  200. package/esm2020/src/app/social/message/message.service.mjs +3 -3
  201. package/esm2020/src/app/social/social.module.mjs +4 -4
  202. package/esm2020/src/app/social/social.testing.module.mjs +4 -4
  203. package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +3 -3
  204. package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +6 -6
  205. package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +3 -3
  206. package/esm2020/src/app/social/user-event/testing/user-event.testing.module.mjs +4 -4
  207. package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +3 -3
  208. package/esm2020/src/app/social/user-event/user-event.module.mjs +4 -4
  209. package/esm2020/src/app/social/user-event/user-event.service.mjs +3 -3
  210. package/esm2020/src/app/vendor.mjs +2 -1
  211. package/fesm2015/sumaris-net.ngx-components.mjs +3514 -3083
  212. package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
  213. package/fesm2020/sumaris-net.ngx-components.mjs +3426 -3003
  214. package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
  215. package/package.json +1 -1
  216. package/plugins/clovelced-plugin-audiomanagement/README.md +66 -0
  217. package/plugins/cordova-plugin-camera/README.md +703 -0
  218. package/plugins/cordova-plugin-device/README.md +309 -0
  219. package/plugins/cordova-plugin-file/README.md +848 -0
  220. package/plugins/cordova-plugin-file-transfer/README.md +598 -0
  221. package/plugins/cordova-plugin-file-transfer/doc/de/README.md +311 -0
  222. package/plugins/cordova-plugin-file-transfer/doc/es/README.md +311 -0
  223. package/plugins/cordova-plugin-file-transfer/doc/fr/README.md +270 -0
  224. package/plugins/cordova-plugin-file-transfer/doc/it/README.md +311 -0
  225. package/plugins/cordova-plugin-file-transfer/doc/ja/README.md +311 -0
  226. package/plugins/cordova-plugin-file-transfer/doc/ko/README.md +311 -0
  227. package/plugins/cordova-plugin-file-transfer/doc/pl/README.md +311 -0
  228. package/plugins/cordova-plugin-file-transfer/doc/zh/README.md +311 -0
  229. package/plugins/cordova-plugin-ionic-keyboard/README.md +220 -0
  230. package/plugins/cordova-plugin-ionic-webview/README.md +181 -0
  231. package/plugins/cordova-plugin-media-capture/README.md +626 -0
  232. package/plugins/cordova-plugin-splashscreen/README.md +387 -0
  233. package/plugins/cordova-plugin-statusbar/README.md +341 -0
  234. package/plugins/cordova-plugin-telerik-imagepicker/README.md +155 -0
  235. package/plugins/cordova-plugin-whitelist/README.md +185 -0
  236. package/plugins/cordova-sqlite-storage/README.md +1848 -0
  237. package/plugins/integrator-cordova-plugin-downloader/README.md +49 -0
  238. package/public_api.d.ts +33 -20
  239. package/src/app/admin/admin.module.d.ts +1 -1
  240. package/src/app/admin/users/{list/users.d.ts → users.d.ts} +11 -11
  241. package/src/app/admin/users/users.module.d.ts +13 -0
  242. package/src/app/core/about/{modal-about.d.ts → about.modal.d.ts} +1 -1
  243. package/src/app/core/about/about.module.d.ts +10 -0
  244. package/src/app/core/account/account.module.d.ts +11 -0
  245. package/src/app/core/account/{account.d.ts → account.page.d.ts} +5 -1
  246. package/src/app/core/auth/{form/form-auth.d.ts → auth.form.d.ts} +9 -9
  247. package/src/app/core/auth/{modal/modal-auth.d.ts → auth.modal.d.ts} +4 -4
  248. package/src/app/core/auth/auth.module.d.ts +11 -0
  249. package/src/app/core/core.module.d.ts +20 -29
  250. package/src/app/core/core.testing.module.d.ts +1 -1
  251. package/src/app/core/form/{form-buttons-bar.component.d.ts → buttons/form-buttons-bar.component.d.ts} +2 -2
  252. package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +9 -0
  253. package/src/app/core/form/{editor.class.d.ts → entity/editor.class.d.ts} +9 -9
  254. package/src/app/core/form/{entity-editor-modal.class.d.ts → entity/entity-editor-modal.class.d.ts} +7 -7
  255. package/src/app/core/form/{entity-editor.class.d.ts → entity/entity-editor.class.d.ts} +10 -10
  256. package/src/app/core/form/{entity-metadata.component.d.ts → entity/entity-metadata.component.d.ts} +1 -1
  257. package/src/app/core/form/entity/entity.module.d.ts +10 -0
  258. package/src/app/core/form/form.module.d.ts +13 -0
  259. package/src/app/core/form/{list.form.d.ts → list/list.form.d.ts} +3 -3
  260. package/src/app/core/form/list/list.module.d.ts +9 -0
  261. package/src/app/core/form/properties/properties.module.d.ts +9 -0
  262. package/src/app/core/{text-popover → form/text-popover}/testing/text-popover.testing.d.ts +0 -0
  263. package/src/app/core/{text-popover → form/text-popover}/testing/text-popover.testing.module.d.ts +0 -0
  264. package/src/app/core/{text-popover → form/text-popover}/text-form.component.d.ts +1 -1
  265. package/src/app/core/{text-popover → form/text-popover}/text-popover.component.d.ts +0 -0
  266. package/src/app/core/form/text-popover/text-popover.module.d.ts +10 -0
  267. package/src/app/core/home/home.module.d.ts +12 -0
  268. package/src/app/core/install/install-upgrade-card.module.d.ts +6 -7
  269. package/src/app/core/menu/menu.component.d.ts +1 -1
  270. package/src/app/core/offline/update-offline-mode-card.module.d.ts +9 -0
  271. package/src/app/core/peer/select-peer.module.d.ts +5 -4
  272. package/src/app/core/register/{confirm/confirm.d.ts → register-confirm.page.d.ts} +4 -4
  273. package/src/app/core/register/{form/form-register.d.ts → register.form.d.ts} +7 -7
  274. package/src/app/core/register/{modal/modal-register.d.ts → register.modal.d.ts} +2 -2
  275. package/src/app/core/register/register.module.d.ts +6 -6
  276. package/src/app/core/settings/settings.module.d.ts +10 -0
  277. package/src/app/core/table/table.module.d.ts +10 -0
  278. package/src/app/shared/shared.module.d.ts +2 -1
  279. package/src/app/vendor.d.ts +1 -0
  280. package/esm2020/src/app/admin/users/list/users.module.mjs +0 -58
  281. package/esm2020/src/app/core/about/modal-about.mjs +0 -71
  282. package/esm2020/src/app/core/account/account.mjs +0 -230
  283. package/esm2020/src/app/core/auth/form/form-auth.mjs +0 -131
  284. package/esm2020/src/app/core/auth/modal/modal-auth.mjs +0 -72
  285. package/esm2020/src/app/core/form/editor.class.mjs +0 -675
  286. package/esm2020/src/app/core/form/entity-editor-modal.class.mjs +0 -421
  287. package/esm2020/src/app/core/form/entity-editor.class.mjs +0 -646
  288. package/esm2020/src/app/core/form/list.form.mjs +0 -222
  289. package/esm2020/src/app/core/register/confirm/confirm.mjs +0 -81
  290. package/esm2020/src/app/core/register/form/form-register.mjs +0 -181
  291. package/esm2020/src/app/core/register/modal/modal-register.mjs +0 -52
  292. package/esm2020/src/app/core/text-popover/testing/text-popover.testing.module.mjs +0 -45
  293. package/src/app/admin/users/list/users.module.d.ts +0 -14
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./text-form.component";
3
+ import * as i2 from "./text-popover.component";
4
+ import * as i3 from "../../../shared/shared.module";
5
+ import * as i4 from "@ngx-translate/core";
6
+ export declare class AppTextPopoverModule {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppTextPopoverModule, never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppTextPopoverModule, [typeof i1.TextForm, typeof i2.TextPopover], [typeof i3.SharedModule, typeof i4.TranslateModule], [typeof i4.TranslateModule, typeof i1.TextForm, typeof i2.TextPopover]>;
9
+ static ɵinj: i0.ɵɵInjectorDeclaration<AppTextPopoverModule>;
10
+ }
@@ -0,0 +1,12 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./home";
3
+ import * as i2 from "../../shared/shared.module";
4
+ import * as i3 from "@angular/router";
5
+ import * as i4 from "@ngx-translate/core";
6
+ import * as i5 from "../auth/auth.module";
7
+ import * as i6 from "../install/install-upgrade-card.module";
8
+ export declare class AppHomePageModule {
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppHomePageModule, never>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppHomePageModule, [typeof i1.HomePage], [typeof i2.SharedModule, typeof i3.RouterModule, typeof i4.TranslateModule, typeof i5.AppAuthModule, typeof i6.AppInstallUpgradeCardModule], [typeof i3.RouterModule, typeof i4.TranslateModule, typeof i1.HomePage]>;
11
+ static ɵinj: i0.ɵɵInjectorDeclaration<AppHomePageModule>;
12
+ }
@@ -1,10 +1,9 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./install-upgrade-card.component";
3
- import * as i2 from "@angular/common";
4
- import * as i3 from "../../shared/shared.module";
5
- import * as i4 from "@ionic/angular";
6
- export declare class InstallUpgradeCardModule {
7
- static ɵfac: i0.ɵɵFactoryDeclaration<InstallUpgradeCardModule, never>;
8
- static ɵmod: i0.ɵɵNgModuleDeclaration<InstallUpgradeCardModule, [typeof i1.AppInstallUpgradeCard], [typeof i2.CommonModule, typeof i3.SharedModule, typeof i4.IonicModule], [typeof i1.AppInstallUpgradeCard]>;
9
- static ɵinj: i0.ɵɵInjectorDeclaration<InstallUpgradeCardModule>;
3
+ import * as i2 from "../../shared/shared.module";
4
+ import * as i3 from "@ngx-translate/core";
5
+ export declare class AppInstallUpgradeCardModule {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppInstallUpgradeCardModule, never>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppInstallUpgradeCardModule, [typeof i1.AppInstallUpgradeCard], [typeof i2.SharedModule, typeof i3.TranslateModule], [typeof i3.TranslateModule, typeof i1.AppInstallUpgradeCard]>;
8
+ static ɵinj: i0.ɵɵInjectorDeclaration<AppInstallUpgradeCardModule>;
10
9
  }
@@ -8,7 +8,7 @@ import { BehaviorSubject } from 'rxjs';
8
8
  import { ConfigService } from '../services/config.service';
9
9
  import { PlatformService } from '../services/platform.service';
10
10
  import { MenuService, SplitPaneShowWhen } from './menu.service';
11
- import { MenuOptions, MenuItem } from './menu.model';
11
+ import { MenuItem, MenuOptions } from './menu.model';
12
12
  import * as i0 from "@angular/core";
13
13
  export declare const APP_MENU_ITEMS: InjectionToken<MenuItem[]>;
14
14
  export declare const APP_MENU_OPTIONS: InjectionToken<MenuOptions>;
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./update-offline-mode-card.component";
3
+ import * as i2 from "../../shared/shared.module";
4
+ import * as i3 from "@ngx-translate/core";
5
+ export declare class AppUpdateOfflineModeCardModule {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppUpdateOfflineModeCardModule, never>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppUpdateOfflineModeCardModule, [typeof i1.AppUpdateOfflineModeCard], [typeof i2.SharedModule, typeof i3.TranslateModule], [typeof i3.TranslateModule, typeof i1.AppUpdateOfflineModeCard]>;
8
+ static ɵinj: i0.ɵɵInjectorDeclaration<AppUpdateOfflineModeCardModule>;
9
+ }
@@ -2,8 +2,9 @@ import * as i0 from "@angular/core";
2
2
  import * as i1 from "./select-peer.modal";
3
3
  import * as i2 from "../../shared/shared.module";
4
4
  import * as i3 from "@angular/common/http";
5
- export declare class SelectPeerModule {
6
- static ɵfac: i0.ɵɵFactoryDeclaration<SelectPeerModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<SelectPeerModule, [typeof i1.SelectPeerModal], [typeof i2.SharedModule, typeof i3.HttpClientModule], [typeof i1.SelectPeerModal]>;
8
- static ɵinj: i0.ɵɵInjectorDeclaration<SelectPeerModule>;
5
+ import * as i4 from "@ngx-translate/core";
6
+ export declare class AppSelectPeerModule {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppSelectPeerModule, never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppSelectPeerModule, [typeof i1.SelectPeerModal], [typeof i2.SharedModule, typeof i3.HttpClientModule, typeof i4.TranslateModule], [typeof i4.TranslateModule, typeof i1.SelectPeerModal]>;
9
+ static ɵinj: i0.ɵɵInjectorDeclaration<AppSelectPeerModule>;
9
10
  }
@@ -1,9 +1,9 @@
1
1
  import { OnDestroy } from '@angular/core';
2
2
  import { Subscription } from 'rxjs';
3
3
  import { ActivatedRoute } from '@angular/router';
4
- import { AccountService } from '../../services/account.service';
5
- import { ConfigService } from '../../services/config.service';
6
- import { PlatformService } from '../../services/platform.service';
4
+ import { AccountService } from '../services/account.service';
5
+ import { ConfigService } from '../services/config.service';
6
+ import { PlatformService } from '../services/platform.service';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class RegisterConfirmPage implements OnDestroy {
9
9
  private platform;
@@ -20,5 +20,5 @@ export declare class RegisterConfirmPage implements OnDestroy {
20
20
  ngOnDestroy(): void;
21
21
  doConfirm(email: string, code: string): any;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<RegisterConfirmPage, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<RegisterConfirmPage, "page-register-confirm", never, {}, {}, never, never, false>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<RegisterConfirmPage, "app-register-confirm-page", never, {}, {}, never, never, false>;
24
24
  }
@@ -1,12 +1,12 @@
1
1
  import { EventEmitter, OnInit } from '@angular/core';
2
2
  import { AsyncValidatorFn, UntypedFormBuilder, UntypedFormGroup, ValidatorFn } from '@angular/forms';
3
- import { AccountService, RegisterData } from '../../services/account.service';
4
- import { referentialToString } from '../../services/model/referential.model';
3
+ import { AccountService, RegisterData } from '../services/account.service';
4
+ import { referentialToString } from '../services/model/referential.model';
5
5
  import { Subscription } from 'rxjs';
6
- import { AccountValidatorService } from '../../services/validator/account.validator';
7
- import { FormFieldDefinition } from '../../../shared/form/field.model';
8
- import { LocalSettingsService } from '../../services/local-settings.service';
9
- import { MatAutocompleteConfigHolder } from '../../../shared/material/autocomplete/material.autocomplete.config';
6
+ import { AccountValidatorService } from '../services/validator/account.validator';
7
+ import { FormFieldDefinition } from '../../shared/form/field.model';
8
+ import { LocalSettingsService } from '../services/local-settings.service';
9
+ import { MatAutocompleteConfigHolder } from '../../shared/material/autocomplete/material.autocomplete.config';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class RegisterForm implements OnInit {
12
12
  private accountService;
@@ -44,5 +44,5 @@ export declare class RegisterForm implements OnInit {
44
44
  disable(): void;
45
45
  enable(): void;
46
46
  static ɵfac: i0.ɵɵFactoryDeclaration<RegisterForm, never>;
47
- static ɵcmp: i0.ɵɵComponentDeclaration<RegisterForm, "form-register", never, {}, { "onCancel": "onCancel"; "onSubmit": "onSubmit"; }, never, never, false>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<RegisterForm, "app-register-form", never, {}, { "onCancel": "onCancel"; "onSubmit": "onSubmit"; }, never, never, false>;
48
48
  }
@@ -1,5 +1,5 @@
1
1
  import { ModalController } from '@ionic/angular';
2
- import { AccountService } from '../../services/account.service';
2
+ import { AccountService } from '../services/account.service';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class RegisterModal {
5
5
  private accountService;
@@ -10,5 +10,5 @@ export declare class RegisterModal {
10
10
  cancel(): void;
11
11
  doSubmit(event?: any): Promise<void>;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<RegisterModal, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<RegisterModal, "modal-register", never, {}, {}, never, never, false>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<RegisterModal, "app-register-modal", never, {}, {}, never, never, false>;
14
14
  }
@@ -1,12 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
- import * as i1 from "./form/form-register";
3
- import * as i2 from "./modal/modal-register";
4
- import * as i3 from "./confirm/confirm";
2
+ import * as i1 from "./register.form";
3
+ import * as i2 from "./register.modal";
4
+ import * as i3 from "./register-confirm.page";
5
5
  import * as i4 from "../../shared/shared.module";
6
- import * as i5 from "@ionic/angular";
7
- import * as i6 from "@angular/router";
6
+ import * as i5 from "@angular/router";
7
+ import * as i6 from "@ngx-translate/core";
8
8
  export declare class AppRegisterModule {
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<AppRegisterModule, never>;
10
- static ɵmod: i0.ɵɵNgModuleDeclaration<AppRegisterModule, [typeof i1.RegisterForm, typeof i2.RegisterModal, typeof i3.RegisterConfirmPage], [typeof i4.SharedModule, typeof i5.IonicModule, typeof i6.RouterModule], [typeof i1.RegisterForm, typeof i2.RegisterModal, typeof i3.RegisterConfirmPage]>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppRegisterModule, [typeof i1.RegisterForm, typeof i2.RegisterModal, typeof i3.RegisterConfirmPage], [typeof i4.SharedModule, typeof i5.RouterModule, typeof i6.TranslateModule], [typeof i6.TranslateModule, typeof i1.RegisterForm, typeof i2.RegisterModal, typeof i3.RegisterConfirmPage]>;
11
11
  static ɵinj: i0.ɵɵInjectorDeclaration<AppRegisterModule>;
12
12
  }
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./settings.page";
3
+ import * as i2 from "../../shared/shared.module";
4
+ import * as i3 from "../form/buttons/form-buttons-bar.module";
5
+ import * as i4 from "@ngx-translate/core";
6
+ export declare class AppSettingsPageModule {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppSettingsPageModule, never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppSettingsPageModule, [typeof i1.SettingsPage], [typeof i2.SharedModule, typeof i3.AppFormButtonsBarModule, typeof i4.TranslateModule], [typeof i4.TranslateModule, typeof i1.SettingsPage]>;
9
+ static ɵinj: i0.ɵɵInjectorDeclaration<AppSettingsPageModule>;
10
+ }
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./table-select-columns.component";
3
+ import * as i2 from "./actions-column.component";
4
+ import * as i3 from "../../shared/shared.module";
5
+ import * as i4 from "@ngx-translate/core";
6
+ export declare class AppTableModule {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppTableModule, never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppTableModule, [typeof i1.TableSelectColumnsComponent, typeof i2.ActionsColumnComponent], [typeof i3.SharedModule, typeof i4.TranslateModule], [typeof i4.TranslateModule, typeof i1.TableSelectColumnsComponent, typeof i2.ActionsColumnComponent]>;
9
+ static ɵinj: i0.ɵɵInjectorDeclaration<AppTableModule>;
10
+ }
@@ -21,10 +21,11 @@ import * as i16 from "./directives/directives.module";
21
21
  import * as i17 from "./pipes/pipes.module";
22
22
  import * as i18 from "./hotkeys/shared-hotkeys.module";
23
23
  import * as i19 from "./toolbar/toolbar.module";
24
+ import * as i20 from "ngx-jdenticon";
24
25
  export declare function scrollFactory(overlay: Overlay): () => CloseScrollStrategy;
25
26
  export declare class SharedModule {
26
27
  static forRoot(environment: Environment): ModuleWithProviders<SharedModule>;
27
28
  static ɵfac: i0.ɵɵFactoryDeclaration<SharedModule, never>;
28
- static ɵmod: i0.ɵɵNgModuleDeclaration<SharedModule, [typeof i1.AppFormField, typeof i2.AppLoadingSpinner, typeof i3.AppHelpModal, typeof i4.UploadFileComponent, typeof i5.UploadFilePopover, typeof i6.SharedTestsPage], [typeof i7.CommonModule, typeof i8.IonicModule, typeof i9.ReactiveFormsModule, typeof i10.TranslateModule, typeof i11.ColorPickerModule, typeof i12.TextMaskModule, typeof i13.DragDropModule, typeof i14.MarkdownModule, typeof i15.SharedMaterialModule, typeof i16.SharedDirectivesModule, typeof i17.SharedPipesModule, typeof i18.SharedHotkeysModule, typeof i19.SharedToolbarModule], [typeof i7.CommonModule, typeof i8.IonicModule, typeof i10.TranslateModule, typeof i9.ReactiveFormsModule, typeof i11.ColorPickerModule, typeof i12.TextMaskModule, typeof i13.DragDropModule, typeof i14.MarkdownModule, typeof i15.SharedMaterialModule, typeof i16.SharedDirectivesModule, typeof i17.SharedPipesModule, typeof i18.SharedHotkeysModule, typeof i19.SharedToolbarModule, typeof i1.AppFormField, typeof i2.AppLoadingSpinner, typeof i3.AppHelpModal, typeof i4.UploadFileComponent, typeof i5.UploadFilePopover, typeof i6.SharedTestsPage]>;
29
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SharedModule, [typeof i1.AppFormField, typeof i2.AppLoadingSpinner, typeof i3.AppHelpModal, typeof i4.UploadFileComponent, typeof i5.UploadFilePopover, typeof i6.SharedTestsPage], [typeof i7.CommonModule, typeof i8.IonicModule, typeof i9.ReactiveFormsModule, typeof i10.TranslateModule, typeof i11.ColorPickerModule, typeof i12.TextMaskModule, typeof i13.DragDropModule, typeof i14.MarkdownModule, typeof i15.SharedMaterialModule, typeof i16.SharedDirectivesModule, typeof i17.SharedPipesModule, typeof i18.SharedHotkeysModule, typeof i19.SharedToolbarModule], [typeof i7.CommonModule, typeof i8.IonicModule, typeof i10.TranslateModule, typeof i9.ReactiveFormsModule, typeof i11.ColorPickerModule, typeof i12.TextMaskModule, typeof i13.DragDropModule, typeof i14.MarkdownModule, typeof i20.NgxJdenticonModule, typeof i15.SharedMaterialModule, typeof i16.SharedDirectivesModule, typeof i17.SharedPipesModule, typeof i18.SharedHotkeysModule, typeof i19.SharedToolbarModule, typeof i1.AppFormField, typeof i2.AppLoadingSpinner, typeof i3.AppHelpModal, typeof i4.UploadFileComponent, typeof i5.UploadFilePopover, typeof i6.SharedTestsPage]>;
29
30
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedModule>;
30
31
  }
@@ -1,3 +1,4 @@
1
+ import 'tweetnacl';
1
2
  import 'tweetnacl-util';
2
3
  import 'hammerjs';
3
4
  import * as momentImported from 'moment';
@@ -1,58 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { CoreModule } from '../../../core/core.module';
4
- import { UsersPage } from './users';
5
- import { SocialModule } from '../../../social/social.module';
6
- import { NgxJdenticonModule } from 'ngx-jdenticon';
7
- import { TranslateModule } from '@ngx-translate/core';
8
- import { SharedMaterialModule } from '../../../shared/material/material.module';
9
- import { SharedDebugModule } from '../../../shared/debug/debug.module';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@ngx-translate/core";
12
- export class AdminUsersModule {
13
- }
14
- AdminUsersModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AdminUsersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- AdminUsersModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: AdminUsersModule, declarations: [UsersPage], imports: [CommonModule,
16
- NgxJdenticonModule, i1.TranslateModule,
17
- // App modules
18
- CoreModule,
19
- SocialModule,
20
- SharedMaterialModule,
21
- SharedDebugModule], exports: [SocialModule,
22
- TranslateModule,
23
- // Components
24
- UsersPage] });
25
- AdminUsersModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AdminUsersModule, imports: [CommonModule,
26
- NgxJdenticonModule,
27
- TranslateModule.forChild(),
28
- // App modules
29
- CoreModule,
30
- SocialModule,
31
- SharedMaterialModule,
32
- SharedDebugModule, SocialModule,
33
- TranslateModule] });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AdminUsersModule, decorators: [{
35
- type: NgModule,
36
- args: [{
37
- imports: [
38
- CommonModule,
39
- NgxJdenticonModule,
40
- TranslateModule.forChild(),
41
- // App modules
42
- CoreModule,
43
- SocialModule,
44
- SharedMaterialModule,
45
- SharedDebugModule
46
- ],
47
- declarations: [
48
- UsersPage
49
- ],
50
- exports: [
51
- SocialModule,
52
- TranslateModule,
53
- // Components
54
- UsersPage
55
- ]
56
- }]
57
- }] });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9hZG1pbi91c2Vycy9saXN0L3VzZXJzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBeUJyRSxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBVnpCLFNBQVMsYUFYVCxZQUFZO1FBQ1osa0JBQWtCO1FBR2xCLGNBQWM7UUFDZCxVQUFVO1FBQ1YsWUFBWTtRQUNaLG9CQUFvQjtRQUNwQixpQkFBaUIsYUFNakIsWUFBWTtRQUNaLGVBQWU7UUFFZixhQUFhO1FBQ2IsU0FBUzs4R0FHQSxnQkFBZ0IsWUFyQnpCLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsZUFBZSxDQUFDLFFBQVEsRUFBRTtRQUUxQixjQUFjO1FBQ2QsVUFBVTtRQUNWLFlBQVk7UUFDWixvQkFBb0I7UUFDcEIsaUJBQWlCLEVBTWpCLFlBQVk7UUFDWixlQUFlOzJGQU1OLGdCQUFnQjtrQkF2QjVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixlQUFlLENBQUMsUUFBUSxFQUFFO3dCQUUxQixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGlCQUFpQjtxQkFDbEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLFNBQVM7cUJBQ1Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFFZixhQUFhO3dCQUNiLFNBQVM7cUJBQ1Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb3JlTW9kdWxlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvcmUubW9kdWxlJztcbmltcG9ydCB7VXNlcnNQYWdlfSBmcm9tICcuL3VzZXJzJztcbmltcG9ydCB7U29jaWFsTW9kdWxlfSBmcm9tICcuLi8uLi8uLi9zb2NpYWwvc29jaWFsLm1vZHVsZSc7XG5pbXBvcnQge05neEpkZW50aWNvbk1vZHVsZX0gZnJvbSAnbmd4LWpkZW50aWNvbic7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1NoYXJlZE1hdGVyaWFsTW9kdWxlfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbWF0ZXJpYWwvbWF0ZXJpYWwubW9kdWxlJztcbmltcG9ydCB7U2hhcmVkRGVidWdNb2R1bGV9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kZWJ1Zy9kZWJ1Zy5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5neEpkZW50aWNvbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcblxuICAgIC8vIEFwcCBtb2R1bGVzXG4gICAgQ29yZU1vZHVsZSxcbiAgICBTb2NpYWxNb2R1bGUsXG4gICAgU2hhcmVkTWF0ZXJpYWxNb2R1bGUsXG4gICAgU2hhcmVkRGVidWdNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgVXNlcnNQYWdlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTb2NpYWxNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuXG4gICAgLy8gQ29tcG9uZW50c1xuICAgIFVzZXJzUGFnZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFkbWluVXNlcnNNb2R1bGUge1xufVxuIl19
@@ -1,71 +0,0 @@
1
- import { Component, Inject, InjectionToken, Optional } from '@angular/core';
2
- import { ENVIRONMENT } from '../../../environments/environment.class';
3
- import { capitalizeFirstLetter } from '../../shared/functions';
4
- import { Subscription } from 'rxjs';
5
- import { CORE_CONFIG_OPTIONS } from '../services/config/core.config';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@ngx-translate/core";
8
- import * as i2 from "@ionic/angular";
9
- import * as i3 from "../services/config.service";
10
- import * as i4 from "@angular/common";
11
- import * as i5 from "ngx-markdown";
12
- import * as i6 from "@angular/material/icon";
13
- import * as i7 from "../../shared/pipes/arrays.pipe";
14
- export const APP_ABOUT_DEVELOPERS = new InjectionToken('aboutDevelopers');
15
- export const APP_ABOUT_PARTNERS = new InjectionToken('aboutPartners');
16
- export class AboutModal {
17
- constructor(translate, modalController, configService, environment, developers, partners) {
18
- this.translate = translate;
19
- this.modalController = modalController;
20
- this.configService = configService;
21
- this.environment = environment;
22
- this.developers = developers;
23
- this.partners = partners;
24
- this._subscription = new Subscription();
25
- this.name = translate.instant('APP_NAME');
26
- if (this.name === 'APP_NAME') {
27
- // Not translated: use name from the environnement
28
- this.name = environment && environment.name && capitalizeFirstLetter(environment.name) || undefined;
29
- }
30
- this.version = environment && environment.version;
31
- this.sourceUrl = environment && environment.sourceUrl;
32
- this.reportIssueUrl = environment && environment.reportIssueUrl;
33
- this.forumUrl = environment && environment.forumUrl;
34
- this.helpUrl = environment && environment.helpUrl;
35
- this.config$ = configService.config;
36
- this._subscription.add(this.config$.subscribe(config => this.setConfig(config)));
37
- }
38
- ngOnDestroy() {
39
- this._subscription.unsubscribe();
40
- }
41
- async close() {
42
- await this.modalController.dismiss();
43
- }
44
- /* -- protected functions -- */
45
- setConfig(config) {
46
- this.forumUrl = config?.getProperty(CORE_CONFIG_OPTIONS.FORUM_URL) || this.environment.forumUrl;
47
- this.helpUrl = config?.getProperty(CORE_CONFIG_OPTIONS.HELP_URL) || this.environment.helpUrl;
48
- }
49
- }
50
- AboutModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AboutModal, deps: [{ token: i1.TranslateService }, { token: i2.ModalController }, { token: i3.ConfigService }, { token: ENVIRONMENT, optional: true }, { token: APP_ABOUT_DEVELOPERS, optional: true }, { token: APP_ABOUT_PARTNERS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
51
- AboutModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: AboutModal, selector: "modal-about", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n\n <ion-title>\n {{'ABOUT.TITLE'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\" visible-xs visible-sm visible-mobile>\n {{'COMMON.BTN_CLOSE'|translate}}\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <ion-list lines=\"none\">\n\n <!-- Peer info -->\n <ion-item *ngIf=\"config$ | async; let config\">\n <span slot=\"start\">&nbsp;</span>\n <ion-label class=\"ion-text-wrap\" >\n <h2>\n <b>{{config.label}}</b> - <span [innerHTML]=\"config.name\"></span>\n </h2>\n <p *ngIf=\"config.description\">\n <markdown [data]=\"config.description\"\n emoji>\n </markdown>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Version info -->\n <ion-item>\n <span slot=\"start\">&nbsp;</span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n <small *ngIf=\"name\">{{'ABOUT.POWERED_BY'|translate}}</small> {{name}}\n <span *ngIf=\"version\" [innerHTML]=\"'ABOUT.VERSION'| translate: {version: version}\"></span>\n </h2>\n <p [innerHTML]=\"'ABOUT.LICENSE'| translate\"></p>\n </ion-label>\n </ion-item>\n\n <!-- Help -->\n <ion-item *ngIf=\"forumUrl || helpUrl\">\n <mat-icon slot=\"start\">help_outline</mat-icon>\n <ion-label>\n <p>\n {{'ABOUT.HELP'|translate}}\n </p>\n <p>\n <ion-button fill=\"solid\" color=\"accent\" href=\"{{helpUrl}}\" target=\"help\" size=\"default\">\n <mat-icon slot=\"start\">description</mat-icon>\n <ion-text translate>ABOUT.USER_MANUAL</ion-text>\n </ion-button>\n <ion-button fill=\"solid\" color=\"secondary\" href=\"{{forumUrl}}\" target=\"forum\" size=\"default\">\n <ion-icon slot=\"start\" name=\"chatbubbles\"></ion-icon>\n <ion-text translate>ABOUT.FORUM</ion-text>\n </ion-button>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Report issue -->\n <ion-item *ngIf=\"reportIssueUrl\">\n <ion-icon slot=\"start\" name=\"bug\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.REPORT_ISSUE'|translate}}\n </p>\n <p>\n <a color=\"primary\" href=\"{{reportIssueUrl}}\" target=\"_system\" translate>ABOUT.BTN_REPORT_ISSUE</a>\n </p>\n </ion-label>\n </ion-item>\n\n\n <!-- Source code -->\n <ion-item *ngIf=\"sourceUrl\">\n <ion-icon slot=\"start\" name=\"code\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.SOURCE_CODE'|translate}}\n </p>\n <p>\n <a color=\"primary\" href=\"{{sourceUrl}}\" target=\"_system\">{{sourceUrl}}</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Developers -->\n <ion-item *ngIf=\"developers | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"people\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.DEVELOPED_BY'|translate}}\n </p>\n <ion-list lines=\"none\">\n <ion-item *ngFor=\"let item of developers\"\n class=\"ion-no-padding\">\n <img slot=\"end\" src=\"{{item.logo}}\">\n <ion-label>\n <p>\n <a color=\"primary\" href=\"{{item.siteUrl}}\" target=\"_system\">{{item.name||item.label}}</a>\n </p>\n </ion-label>\n </ion-item>\n </ion-list>\n </ion-label>\n </ion-item>\n\n <!-- Partners -->\n <ion-item class=\"item-partners\" *ngIf=\"partners | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"megaphone\" color=\"dark\"></ion-icon>\n <ion-text>\n <p>{{'ABOUT.PARTNERS'|translate}}</p>\n <p>\n <a *ngFor=\"let item of partners\" href=\"{{item.siteUrl}}\" class=\"partners\" target=\"_system\">\n <img src=\"{{item.logo}}\">\n </a>\n </p>\n </ion-text>\n </ion-item>\n </ion-list>\n\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{'COMMON.BTN_CLOSE'|translate}}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n", styles: [".item-partners ion-text{height:auto}.item-partners ion-text p:last-child{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:space-between}.item-partners ion-text p:last-child a{padding:2px}.item-partners ion-text p:last-child a img{text-align:center;display:inline-block;max-height:40px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.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: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.NotEmptyArrayPipe, name: "isNotEmptyArray" }] });
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AboutModal, decorators: [{
53
- type: Component,
54
- args: [{ selector: 'modal-about', template: "<ion-header>\n <ion-toolbar color=\"light\">\n\n <ion-title>\n {{'ABOUT.TITLE'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\" visible-xs visible-sm visible-mobile>\n {{'COMMON.BTN_CLOSE'|translate}}\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <ion-list lines=\"none\">\n\n <!-- Peer info -->\n <ion-item *ngIf=\"config$ | async; let config\">\n <span slot=\"start\">&nbsp;</span>\n <ion-label class=\"ion-text-wrap\" >\n <h2>\n <b>{{config.label}}</b> - <span [innerHTML]=\"config.name\"></span>\n </h2>\n <p *ngIf=\"config.description\">\n <markdown [data]=\"config.description\"\n emoji>\n </markdown>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Version info -->\n <ion-item>\n <span slot=\"start\">&nbsp;</span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n <small *ngIf=\"name\">{{'ABOUT.POWERED_BY'|translate}}</small> {{name}}\n <span *ngIf=\"version\" [innerHTML]=\"'ABOUT.VERSION'| translate: {version: version}\"></span>\n </h2>\n <p [innerHTML]=\"'ABOUT.LICENSE'| translate\"></p>\n </ion-label>\n </ion-item>\n\n <!-- Help -->\n <ion-item *ngIf=\"forumUrl || helpUrl\">\n <mat-icon slot=\"start\">help_outline</mat-icon>\n <ion-label>\n <p>\n {{'ABOUT.HELP'|translate}}\n </p>\n <p>\n <ion-button fill=\"solid\" color=\"accent\" href=\"{{helpUrl}}\" target=\"help\" size=\"default\">\n <mat-icon slot=\"start\">description</mat-icon>\n <ion-text translate>ABOUT.USER_MANUAL</ion-text>\n </ion-button>\n <ion-button fill=\"solid\" color=\"secondary\" href=\"{{forumUrl}}\" target=\"forum\" size=\"default\">\n <ion-icon slot=\"start\" name=\"chatbubbles\"></ion-icon>\n <ion-text translate>ABOUT.FORUM</ion-text>\n </ion-button>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Report issue -->\n <ion-item *ngIf=\"reportIssueUrl\">\n <ion-icon slot=\"start\" name=\"bug\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.REPORT_ISSUE'|translate}}\n </p>\n <p>\n <a color=\"primary\" href=\"{{reportIssueUrl}}\" target=\"_system\" translate>ABOUT.BTN_REPORT_ISSUE</a>\n </p>\n </ion-label>\n </ion-item>\n\n\n <!-- Source code -->\n <ion-item *ngIf=\"sourceUrl\">\n <ion-icon slot=\"start\" name=\"code\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.SOURCE_CODE'|translate}}\n </p>\n <p>\n <a color=\"primary\" href=\"{{sourceUrl}}\" target=\"_system\">{{sourceUrl}}</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Developers -->\n <ion-item *ngIf=\"developers | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"people\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{'ABOUT.DEVELOPED_BY'|translate}}\n </p>\n <ion-list lines=\"none\">\n <ion-item *ngFor=\"let item of developers\"\n class=\"ion-no-padding\">\n <img slot=\"end\" src=\"{{item.logo}}\">\n <ion-label>\n <p>\n <a color=\"primary\" href=\"{{item.siteUrl}}\" target=\"_system\">{{item.name||item.label}}</a>\n </p>\n </ion-label>\n </ion-item>\n </ion-list>\n </ion-label>\n </ion-item>\n\n <!-- Partners -->\n <ion-item class=\"item-partners\" *ngIf=\"partners | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"megaphone\" color=\"dark\"></ion-icon>\n <ion-text>\n <p>{{'ABOUT.PARTNERS'|translate}}</p>\n <p>\n <a *ngFor=\"let item of partners\" href=\"{{item.siteUrl}}\" class=\"partners\" target=\"_system\">\n <img src=\"{{item.logo}}\">\n </a>\n </p>\n </ion-text>\n </ion-item>\n </ion-list>\n\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{'COMMON.BTN_CLOSE'|translate}}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n", styles: [".item-partners ion-text{height:auto}.item-partners ion-text p:last-child{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:space-between}.item-partners ion-text p:last-child a{padding:2px}.item-partners ion-text p:last-child a img{text-align:center;display:inline-block;max-height:40px}\n"] }]
55
- }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.ModalController }, { type: i3.ConfigService }, { type: undefined, decorators: [{
56
- type: Optional
57
- }, {
58
- type: Inject,
59
- args: [ENVIRONMENT]
60
- }] }, { type: undefined, decorators: [{
61
- type: Optional
62
- }, {
63
- type: Inject,
64
- args: [APP_ABOUT_DEVELOPERS]
65
- }] }, { type: undefined, decorators: [{
66
- type: Optional
67
- }, {
68
- type: Inject,
69
- args: [APP_ABOUT_PARTNERS]
70
- }] }]; } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtYWJvdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvYWJvdXQvbW9kYWwtYWJvdXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvYWJvdXQvbW9kYWwtYWJvdXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQU03RCxPQUFPLEVBQWEsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7QUFHbkUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXdCLGlCQUFpQixDQUFDLENBQUM7QUFDakcsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQXdCLGVBQWUsQ0FBQyxDQUFDO0FBTzdGLE1BQU0sT0FBTyxVQUFVO0lBWXJCLFlBQ1ksU0FBMkIsRUFDM0IsZUFBZ0MsRUFDaEMsYUFBNEIsRUFDSyxXQUFXLEVBQ0wsVUFBaUMsRUFDbkMsUUFBK0I7UUFMcEUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ0ssZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFDTCxlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNuQyxhQUFRLEdBQVIsUUFBUSxDQUF1QjtRQVIvRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFVbEQsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7WUFDNUIsa0RBQWtEO1lBQ2xELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUkscUJBQXFCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQztTQUNyRztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFFcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNQLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsK0JBQStCO0lBRXJCLFNBQVMsQ0FBQyxNQUFzQjtRQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sRUFBRSxXQUFXLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDaEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLEVBQUUsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO0lBQy9GLENBQUM7O3VHQWxEVSxVQUFVLDhHQWdCQyxXQUFXLDZCQUNYLG9CQUFvQiw2QkFDcEIsa0JBQWtCOzJGQWxCN0IsVUFBVSxtRENyQnZCLHk2SUE0SUE7MkZEdkhhLFVBQVU7a0JBTHRCLFNBQVM7K0JBQ0UsYUFBYTs7MEJBb0JwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUM5QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQ3ZDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9uRGVzdHJveSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNb2RhbENvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7RU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge2NhcGl0YWxpemVGaXJzdExldHRlcn0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0RlcGFydG1lbnR9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2RlcGFydG1lbnQubW9kZWwnO1xuaW1wb3J0IHtQZXJzb259IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL3BlcnNvbi5tb2RlbCc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2NvbmZpZy5tb2RlbCc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NPUkVfQ09ORklHX09QVElPTlN9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy9jb3JlLmNvbmZpZyc7XG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgY29uc3QgQVBQX0FCT1VUX0RFVkVMT1BFUlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFydGlhbDxEZXBhcnRtZW50PltdPignYWJvdXREZXZlbG9wZXJzJyk7XG5leHBvcnQgY29uc3QgQVBQX0FCT1VUX1BBUlRORVJTID0gbmV3IEluamVjdGlvblRva2VuPFBhcnRpYWw8RGVwYXJ0bWVudD5bXT4oJ2Fib3V0UGFydG5lcnMnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kYWwtYWJvdXQnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC1hYm91dC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC1hYm91dC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBYm91dE1vZGFsIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkgc291cmNlVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlcG9ydElzc3VlVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbmZpZyQ6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvbj47XG4gIGZvcnVtVXJsOiBzdHJpbmc7XG4gIGhlbHBVcmw6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbW9kYWxDb250cm9sbGVyOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0FCT1VUX0RFVkVMT1BFUlMpIHB1YmxpYyBkZXZlbG9wZXJzOiBQYXJ0aWFsPERlcGFydG1lbnQ+W10sXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUFBfQUJPVVRfUEFSVE5FUlMpIHB1YmxpYyBwYXJ0bmVyczogUGFydGlhbDxEZXBhcnRtZW50PltdXG4gICkge1xuICAgIHRoaXMubmFtZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdBUFBfTkFNRScpO1xuICAgIGlmICh0aGlzLm5hbWUgPT09ICdBUFBfTkFNRScpIHtcbiAgICAgIC8vIE5vdCB0cmFuc2xhdGVkOiB1c2UgbmFtZSBmcm9tIHRoZSBlbnZpcm9ubmVtZW50XG4gICAgICB0aGlzLm5hbWUgPSBlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5uYW1lICYmIGNhcGl0YWxpemVGaXJzdExldHRlcihlbnZpcm9ubWVudC5uYW1lKSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMudmVyc2lvbiA9IGVudmlyb25tZW50ICYmIGVudmlyb25tZW50LnZlcnNpb247XG4gICAgdGhpcy5zb3VyY2VVcmwgPSBlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5zb3VyY2VVcmw7XG4gICAgdGhpcy5yZXBvcnRJc3N1ZVVybCA9IGVudmlyb25tZW50ICYmIGVudmlyb25tZW50LnJlcG9ydElzc3VlVXJsO1xuICAgIHRoaXMuZm9ydW1VcmwgPSBlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5mb3J1bVVybDtcbiAgICB0aGlzLmhlbHBVcmwgPSBlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5oZWxwVXJsO1xuICAgIHRoaXMuY29uZmlnJCA9IGNvbmZpZ1NlcnZpY2UuY29uZmlnO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuY29uZmlnJC5zdWJzY3JpYmUoY29uZmlnID0+IHRoaXMuc2V0Q29uZmlnKGNvbmZpZykpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoKSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsQ29udHJvbGxlci5kaXNtaXNzKCk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgZnVuY3Rpb25zIC0tICovXG5cbiAgcHJvdGVjdGVkIHNldENvbmZpZyhjb25maWc/OiBDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5mb3J1bVVybCA9IGNvbmZpZz8uZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5GT1JVTV9VUkwpIHx8IHRoaXMuZW52aXJvbm1lbnQuZm9ydW1Vcmw7XG4gICAgdGhpcy5oZWxwVXJsID0gY29uZmlnPy5nZXRQcm9wZXJ0eShDT1JFX0NPTkZJR19PUFRJT05TLkhFTFBfVVJMKSB8fCB0aGlzLmVudmlyb25tZW50LmhlbHBVcmw7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJsaWdodFwiPlxuXG4gICAgPGlvbi10aXRsZT5cbiAgICAgIHt7J0FCT1VULlRJVExFJ3x0cmFuc2xhdGV9fVxuICAgIDwvaW9uLXRpdGxlPlxuXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCIgdmlzaWJsZS14cyB2aXNpYmxlLXNtIHZpc2libGUtbW9iaWxlPlxuICAgICAgICB7eydDT01NT04uQlROX0NMT1NFJ3x0cmFuc2xhdGV9fVxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG5cbiAgPGlvbi1saXN0IGxpbmVzPVwibm9uZVwiPlxuXG4gICAgPCEtLSBQZWVyIGluZm8gLS0+XG4gICAgPGlvbi1pdGVtICpuZ0lmPVwiY29uZmlnJCB8IGFzeW5jOyBsZXQgY29uZmlnXCI+XG4gICAgICA8c3BhbiBzbG90PVwic3RhcnRcIj4mbmJzcDs8L3NwYW4+XG4gICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcFwiID5cbiAgICAgICAgPGgyPlxuICAgICAgICAgIDxiPnt7Y29uZmlnLmxhYmVsfX08L2I+IC0gPHNwYW4gW2lubmVySFRNTF09XCJjb25maWcubmFtZVwiPjwvc3Bhbj5cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPHAgKm5nSWY9XCJjb25maWcuZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICA8bWFya2Rvd24gW2RhdGFdPVwiY29uZmlnLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgZW1vamk+XG4gICAgICAgICAgPC9tYXJrZG93bj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9pb24tbGFiZWw+XG4gICAgPC9pb24taXRlbT5cblxuICAgIDwhLS0gVmVyc2lvbiBpbmZvIC0tPlxuICAgIDxpb24taXRlbT5cbiAgICAgIDxzcGFuIHNsb3Q9XCJzdGFydFwiPiZuYnNwOzwvc3Bhbj5cbiAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgIDxoMj5cbiAgICAgICAgICA8c21hbGwgKm5nSWY9XCJuYW1lXCI+e3snQUJPVVQuUE9XRVJFRF9CWSd8dHJhbnNsYXRlfX08L3NtYWxsPiB7e25hbWV9fVxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidmVyc2lvblwiIFtpbm5lckhUTUxdPVwiJ0FCT1VULlZFUlNJT04nfCB0cmFuc2xhdGU6IHt2ZXJzaW9uOiB2ZXJzaW9ufVwiPjwvc3Bhbj5cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPHAgW2lubmVySFRNTF09XCInQUJPVVQuTElDRU5TRSd8IHRyYW5zbGF0ZVwiPjwvcD5cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWl0ZW0+XG5cbiAgICA8IS0tIEhlbHAgLS0+XG4gICAgPGlvbi1pdGVtICpuZ0lmPVwiZm9ydW1VcmwgfHwgaGVscFVybFwiPlxuICAgICAgPG1hdC1pY29uIHNsb3Q9XCJzdGFydFwiPmhlbHBfb3V0bGluZTwvbWF0LWljb24+XG4gICAgICA8aW9uLWxhYmVsPlxuICAgICAgICA8cD5cbiAgICAgICAgICB7eydBQk9VVC5IRUxQJ3x0cmFuc2xhdGV9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwiYWNjZW50XCIgaHJlZj1cInt7aGVscFVybH19XCIgdGFyZ2V0PVwiaGVscFwiIHNpemU9XCJkZWZhdWx0XCI+XG4gICAgICAgICAgICA8bWF0LWljb24gc2xvdD1cInN0YXJ0XCI+ZGVzY3JpcHRpb248L21hdC1pY29uPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5BQk9VVC5VU0VSX01BTlVBTDwvaW9uLXRleHQ+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwic2Vjb25kYXJ5XCIgaHJlZj1cInt7Zm9ydW1Vcmx9fVwiIHRhcmdldD1cImZvcnVtXCIgc2l6ZT1cImRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwiY2hhdGJ1YmJsZXNcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5BQk9VVC5GT1JVTTwvaW9uLXRleHQ+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L3A+XG4gICAgICA8L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1pdGVtPlxuXG4gICAgPCEtLSBSZXBvcnQgaXNzdWUgLS0+XG4gICAgPGlvbi1pdGVtICpuZ0lmPVwicmVwb3J0SXNzdWVVcmxcIj5cbiAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYnVnXCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt7J0FCT1VULlJFUE9SVF9JU1NVRSd8dHJhbnNsYXRlfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8YSBjb2xvcj1cInByaW1hcnlcIiBocmVmPVwie3tyZXBvcnRJc3N1ZVVybH19XCIgdGFyZ2V0PVwiX3N5c3RlbVwiIHRyYW5zbGF0ZT5BQk9VVC5CVE5fUkVQT1JUX0lTU1VFPC9hPlxuICAgICAgICA8L3A+XG4gICAgICA8L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1pdGVtPlxuXG5cbiAgICA8IS0tIFNvdXJjZSBjb2RlIC0tPlxuICAgIDxpb24taXRlbSAqbmdJZj1cInNvdXJjZVVybFwiPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJjb2RlXCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt7J0FCT1VULlNPVVJDRV9DT0RFJ3x0cmFuc2xhdGV9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxhIGNvbG9yPVwicHJpbWFyeVwiIGhyZWY9XCJ7e3NvdXJjZVVybH19XCIgdGFyZ2V0PVwiX3N5c3RlbVwiPnt7c291cmNlVXJsfX08L2E+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWl0ZW0+XG5cbiAgICA8IS0tIERldmVsb3BlcnMgLS0+XG4gICAgPGlvbi1pdGVtICpuZ0lmPVwiZGV2ZWxvcGVycyB8IGlzTm90RW1wdHlBcnJheVwiPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJwZW9wbGVcIiBjb2xvcj1cImRhcmtcIj48L2lvbi1pY29uPlxuICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgPHA+XG4gICAgICAgICAge3snQUJPVVQuREVWRUxPUEVEX0JZJ3x0cmFuc2xhdGV9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxpb24tbGlzdCBsaW5lcz1cIm5vbmVcIj5cbiAgICAgICAgICA8aW9uLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGV2ZWxvcGVyc1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgIDxpbWcgc2xvdD1cImVuZFwiIHNyYz1cInt7aXRlbS5sb2dvfX1cIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDxhIGNvbG9yPVwicHJpbWFyeVwiIGhyZWY9XCJ7e2l0ZW0uc2l0ZVVybH19XCIgdGFyZ2V0PVwiX3N5c3RlbVwiPnt7aXRlbS5uYW1lfHxpdGVtLmxhYmVsfX08L2E+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICA8L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1pdGVtPlxuXG4gICAgPCEtLSBQYXJ0bmVycyAtLT5cbiAgICA8aW9uLWl0ZW0gY2xhc3M9XCJpdGVtLXBhcnRuZXJzXCIgKm5nSWY9XCJwYXJ0bmVycyB8IGlzTm90RW1wdHlBcnJheVwiPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJtZWdhcGhvbmVcIiBjb2xvcj1cImRhcmtcIj48L2lvbi1pY29uPlxuICAgICAgPGlvbi10ZXh0PlxuICAgICAgICA8cD57eydBQk9VVC5QQVJUTkVSUyd8dHJhbnNsYXRlfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxhICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhcnRuZXJzXCIgaHJlZj1cInt7aXRlbS5zaXRlVXJsfX1cIiBjbGFzcz1cInBhcnRuZXJzXCIgdGFyZ2V0PVwiX3N5c3RlbVwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2l0ZW0ubG9nb319XCI+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3A+XG4gICAgICA8L2lvbi10ZXh0PlxuICAgIDwvaW9uLWl0ZW0+XG4gIDwvaW9uLWxpc3Q+XG5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBub3dyYXA+XG4gICAgICA8aW9uLWNvbD48L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwic29saWRcIiBjb2xvcj1cInRlcnRpYXJ5XCIgKGNsaWNrKT1cImNsb3NlKClcIj57eydDT01NT04uQlROX0NMT1NFJ3x0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=