@bizdoc/core 1.14.0-next.1 → 1.14.0-next.10

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 (314) hide show
  1. package/assets/themes/brown.min.css +83 -0
  2. package/assets/themes/dark.min.css +1 -0
  3. package/assets/themes/deep-purple-light-blue.min.css +90 -0
  4. package/assets/themes/deep-purple-teal.min.css +90 -0
  5. package/assets/themes/default.min.css +90 -0
  6. package/assets/themes/green.min.css +83 -0
  7. package/assets/themes/indigo.min.css +83 -0
  8. package/esm2020/lib/admin/admin-dismiss.service.mjs +3 -3
  9. package/esm2020/lib/admin/admin-menu.component.mjs +3 -3
  10. package/esm2020/lib/admin/core/ace.input.mjs +3 -3
  11. package/esm2020/lib/admin/core/color-picker.input.mjs +3 -3
  12. package/esm2020/lib/admin/core/search.input.mjs +3 -3
  13. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +3 -3
  14. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +3 -3
  15. package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  16. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +3 -3
  17. package/esm2020/lib/admin/form/form.resolve.service.mjs +3 -3
  18. package/esm2020/lib/admin/form/form.service.mjs +3 -3
  19. package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -3
  20. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +3 -3
  21. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +3 -3
  22. package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +3 -3
  23. package/esm2020/lib/admin/patterns/patterns.component.mjs +3 -3
  24. package/esm2020/lib/admin/permissions/permissions.component.mjs +3 -3
  25. package/esm2020/lib/admin/positions/positions-popup.component.mjs +3 -3
  26. package/esm2020/lib/admin/positions/positions.component.mjs +3 -3
  27. package/esm2020/lib/admin/profiler/profiler.component.mjs +3 -3
  28. package/esm2020/lib/admin/utility-wrapper.component.mjs +3 -3
  29. package/esm2020/lib/admin/utility.pane.component.mjs +3 -3
  30. package/esm2020/lib/app.component.mjs +6 -6
  31. package/esm2020/lib/bizdoc.module.mjs +7 -5
  32. package/esm2020/lib/browse/browse-items.component.mjs +10 -12
  33. package/esm2020/lib/browse/browse.mobile.component.mjs +3 -3
  34. package/esm2020/lib/browse/browse.pane.component.mjs +3 -3
  35. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +3 -3
  36. package/esm2020/lib/browse/filter/filter.component.mjs +3 -3
  37. package/esm2020/lib/browse/folders-menu.component.mjs +3 -3
  38. package/esm2020/lib/chat/chat-info.mjs +3 -3
  39. package/esm2020/lib/chat/chat.mobile.component.mjs +3 -3
  40. package/esm2020/lib/chat/chat.service.mjs +3 -3
  41. package/esm2020/lib/chat/contacts.component.mjs +6 -6
  42. package/esm2020/lib/chat/contacts.pane.component.mjs +3 -3
  43. package/esm2020/lib/chat/conversation.component.mjs +3 -3
  44. package/esm2020/lib/chat/conversation.pane.component.mjs +3 -3
  45. package/esm2020/lib/compose/action/action-picker.component.mjs +3 -3
  46. package/esm2020/lib/compose/action/action.dialog.mjs +3 -3
  47. package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +3 -3
  48. package/esm2020/lib/compose/action/assign-action.component.mjs +3 -3
  49. package/esm2020/lib/compose/action/moveto-action.component.mjs +3 -3
  50. package/esm2020/lib/compose/action/return-action.component.mjs +3 -3
  51. package/esm2020/lib/compose/attachments/attachments.component.mjs +3 -3
  52. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +3 -3
  53. package/esm2020/lib/compose/attachments/progress-button.directive.mjs +3 -3
  54. package/esm2020/lib/compose/can-deactivate-changes.service.mjs +5 -5
  55. package/esm2020/lib/compose/comments/Comments.pane.component.mjs +3 -3
  56. package/esm2020/lib/compose/comments/comment.component.mjs +3 -3
  57. package/esm2020/lib/compose/comments/comments.component.mjs +3 -3
  58. package/esm2020/lib/compose/comments/edit-comment.component.mjs +3 -3
  59. package/esm2020/lib/compose/comments/edits.component.mjs +3 -3
  60. package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +3 -3
  61. package/esm2020/lib/compose/comments/votes.component.mjs +3 -3
  62. package/esm2020/lib/compose/compose-resolve.service.mjs +6 -6
  63. package/esm2020/lib/compose/compose.mobile.component.mjs +5 -5
  64. package/esm2020/lib/compose/compose.pane.component.mjs +9 -6
  65. package/esm2020/lib/compose/copy/copy.dialog.mjs +3 -3
  66. package/esm2020/lib/compose/dismiss.service.mjs +5 -5
  67. package/esm2020/lib/compose/document-resolver.service.mjs +3 -3
  68. package/esm2020/lib/compose/document.component.mjs +3 -3
  69. package/esm2020/lib/compose/document.mobile.component.mjs +3 -3
  70. package/esm2020/lib/compose/document.pane.component.mjs +3 -3
  71. package/esm2020/lib/compose/events/events.component.mjs +3 -3
  72. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  73. package/esm2020/lib/compose/form.component.mjs +40 -31
  74. package/esm2020/lib/compose/new-menu.component.mjs +3 -3
  75. package/esm2020/lib/compose/privilage.directive.mjs +6 -6
  76. package/esm2020/lib/compose/recipient-resolver.service.mjs +3 -3
  77. package/esm2020/lib/compose/save-changes.dialog.mjs +3 -3
  78. package/esm2020/lib/compose/state.component.mjs +3 -3
  79. package/esm2020/lib/compose/tag/tags.component.mjs +5 -5
  80. package/esm2020/lib/compose/trace/flow.component.mjs +3 -3
  81. package/esm2020/lib/compose/trace/people.component.mjs +3 -3
  82. package/esm2020/lib/compose/trace/trace.base.mjs +3 -3
  83. package/esm2020/lib/compose/trace/trace.component.mjs +3 -3
  84. package/esm2020/lib/compose/trace/trace.pane.component.mjs +3 -3
  85. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +3 -3
  86. package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  87. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +3 -3
  88. package/esm2020/lib/core/NgComponentOutlet.mjs +3 -3
  89. package/esm2020/lib/core/account.service.mjs +3 -3
  90. package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  91. package/esm2020/lib/core/avatar/avatar.component.mjs +3 -3
  92. package/esm2020/lib/core/base.mjs +1 -1
  93. package/esm2020/lib/core/component-factory-resolver.mjs +4 -4
  94. package/esm2020/lib/core/configuration.mjs +6 -5
  95. package/esm2020/lib/core/controls/address.input.mjs +20 -7
  96. package/esm2020/lib/core/controls/auto-complete.input.mjs +3 -3
  97. package/esm2020/lib/core/controls/combination-picker-body.mjs +3 -3
  98. package/esm2020/lib/core/controls/combination-picker.mjs +3 -3
  99. package/esm2020/lib/core/controls/combination-pool.mjs +3 -3
  100. package/esm2020/lib/core/controls/file.input.mjs +3 -3
  101. package/esm2020/lib/core/controls/select.input.mjs +3 -3
  102. package/esm2020/lib/core/controls/time-picker.mjs +3 -3
  103. package/esm2020/lib/core/controls/timespan.input.mjs +3 -3
  104. package/esm2020/lib/core/datasource.service.mjs +3 -3
  105. package/esm2020/lib/core/functions.mjs +21 -16
  106. package/esm2020/lib/core/guide/guide.component.mjs +3 -3
  107. package/esm2020/lib/core/guide/guide.service.mjs +3 -3
  108. package/esm2020/lib/core/http.interceptor.mjs +3 -3
  109. package/esm2020/lib/core/hub.service.mjs +3 -3
  110. package/esm2020/lib/core/identity/identity.component.mjs +3 -3
  111. package/esm2020/lib/core/info/attachment-info.service.mjs +3 -3
  112. package/esm2020/lib/core/info/document-info.service.mjs +3 -3
  113. package/esm2020/lib/core/info/location-info.component.mjs +3 -3
  114. package/esm2020/lib/core/info/map-info.mjs +3 -3
  115. package/esm2020/lib/core/layout/autocomplete.field.mjs +3 -3
  116. package/esm2020/lib/core/layout/checkbox.field.mjs +3 -3
  117. package/esm2020/lib/core/layout/checkbox.mjs +3 -3
  118. package/esm2020/lib/core/layout/date-range.field.mjs +3 -3
  119. package/esm2020/lib/core/layout/date.field.mjs +3 -3
  120. package/esm2020/lib/core/layout/expression.field.mjs +3 -3
  121. package/esm2020/lib/core/layout/file.field.mjs +3 -3
  122. package/esm2020/lib/core/layout/html.field.mjs +3 -3
  123. package/esm2020/lib/core/layout/input.base.mjs +3 -3
  124. package/esm2020/lib/core/layout/input.field.mjs +3 -3
  125. package/esm2020/lib/core/layout/layout.component.mjs +3 -3
  126. package/esm2020/lib/core/layout/numeric.field.mjs +3 -3
  127. package/esm2020/lib/core/layout/select.field.mjs +3 -3
  128. package/esm2020/lib/core/layout/switch.field.mjs +3 -3
  129. package/esm2020/lib/core/layout/textarea.field.mjs +3 -3
  130. package/esm2020/lib/core/layout/timespan.field.mjs +3 -3
  131. package/esm2020/lib/core/lottie-animation.mjs +3 -3
  132. package/esm2020/lib/core/mailbox.service.mjs +10 -10
  133. package/esm2020/lib/core/none.component.mjs +3 -3
  134. package/esm2020/lib/core/pipes/action.pipe.mjs +3 -3
  135. package/esm2020/lib/core/pipes/calendar.pipe.mjs +3 -3
  136. package/esm2020/lib/core/pipes/date-format.pipe.mjs +3 -3
  137. package/esm2020/lib/core/pipes/daterange.pipe.mjs +6 -6
  138. package/esm2020/lib/core/pipes/difference.pipe.mjs +3 -3
  139. package/esm2020/lib/core/pipes/duration-format.pipe.mjs +3 -3
  140. package/esm2020/lib/core/pipes/duration.pipe.mjs +3 -3
  141. package/esm2020/lib/core/pipes/form.pipe.mjs +3 -3
  142. package/esm2020/lib/core/pipes/join.pipe.mjs +3 -3
  143. package/esm2020/lib/core/pipes/role.pipe.mjs +3 -3
  144. package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  145. package/esm2020/lib/core/pipes/sort.pipe.mjs +6 -6
  146. package/esm2020/lib/core/pipes/state.pipe.mjs +3 -3
  147. package/esm2020/lib/core/pipes/time-ago.pipe.mjs +3 -3
  148. package/esm2020/lib/core/pipes/translate.pipe.mjs +6 -6
  149. package/esm2020/lib/core/pipes/type-value.pipe.mjs +3 -3
  150. package/esm2020/lib/core/pipes/user-name.pipe.mjs +3 -3
  151. package/esm2020/lib/core/popup/popup.component.mjs +3 -3
  152. package/esm2020/lib/core/popup/popup.service.mjs +3 -3
  153. package/esm2020/lib/core/popup/tooltip.directive.mjs +6 -6
  154. package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  155. package/esm2020/lib/core/prompt/mask/mask.component.mjs +3 -3
  156. package/esm2020/lib/core/prompt.service.mjs +3 -3
  157. package/esm2020/lib/core/router.mjs +6 -6
  158. package/esm2020/lib/core/session.service.mjs +20 -9
  159. package/esm2020/lib/core/slots/pane-ref.mjs +4 -1
  160. package/esm2020/lib/core/slots/router.directive.mjs +3 -3
  161. package/esm2020/lib/core/slots/router.service.mjs +3 -3
  162. package/esm2020/lib/core/slots/slots.component.mjs +114 -76
  163. package/esm2020/lib/core/tagging/documents.component.mjs +3 -3
  164. package/esm2020/lib/core/tagging/edit-input.component.mjs +3 -3
  165. package/esm2020/lib/core/tagging/emoji.component.mjs +3 -3
  166. package/esm2020/lib/core/tagging/tagging-item.directive.mjs +3 -3
  167. package/esm2020/lib/core/tagging/tagging.component-base.mjs +3 -3
  168. package/esm2020/lib/core/tagging/tagging.directive.mjs +3 -3
  169. package/esm2020/lib/core/tagging/tagging.pipe.mjs +3 -3
  170. package/esm2020/lib/core/tagging/users.component.mjs +3 -3
  171. package/esm2020/lib/core/translate.service.mjs +3 -3
  172. package/esm2020/lib/core/window-title.service.mjs +3 -3
  173. package/esm2020/lib/cube/accum/accum.component.mjs +3 -3
  174. package/esm2020/lib/cube/chart/chart.component.mjs +3 -3
  175. package/esm2020/lib/cube/cube-info.service.mjs +3 -3
  176. package/esm2020/lib/cube/cube-menu.component.mjs +3 -3
  177. package/esm2020/lib/cube/cube-view.component.mjs +3 -3
  178. package/esm2020/lib/cube/cube.service.mjs +3 -3
  179. package/esm2020/lib/cube/explore/document-item.component.mjs +3 -3
  180. package/esm2020/lib/cube/explore/explore-item.component.mjs +3 -3
  181. package/esm2020/lib/cube/explore/explore-items.component.mjs +3 -3
  182. package/esm2020/lib/cube/explore/explore.pane.component.mjs +5 -5
  183. package/esm2020/lib/cube/explore/item-resolver.service.mjs +6 -6
  184. package/esm2020/lib/cube/explore/item.pane.component.mjs +3 -3
  185. package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  186. package/esm2020/lib/cube/filter/filter.component.mjs +3 -3
  187. package/esm2020/lib/cube/grid/grid.component.mjs +3 -3
  188. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +3 -3
  189. package/esm2020/lib/cube/matrix/matrix.base.mjs +3 -3
  190. package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  191. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +6 -6
  192. package/esm2020/lib/cube/matrix/popup.component.mjs +3 -3
  193. package/esm2020/lib/cube/matrix/table.component.mjs +3 -3
  194. package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -3
  195. package/esm2020/lib/cube/pivot/pivot.component.mjs +3 -3
  196. package/esm2020/lib/cube/sum/sum.component.mjs +3 -3
  197. package/esm2020/lib/cube/view-base.mjs +3 -3
  198. package/esm2020/lib/cube/view.mobile.component.mjs +3 -3
  199. package/esm2020/lib/cube/view.pane.component.mjs +8 -4
  200. package/esm2020/lib/dashboard/actions/actions.widget.mjs +3 -3
  201. package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +3 -3
  202. package/esm2020/lib/dashboard/cube/compare.widget.mjs +3 -3
  203. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +3 -3
  204. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
  205. package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +3 -3
  206. package/esm2020/lib/dashboard/cube/documents.widget.mjs +3 -3
  207. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  208. package/esm2020/lib/dashboard/dashboard.component.mjs +3 -3
  209. package/esm2020/lib/dashboard/dashboard.pane.component.mjs +3 -3
  210. package/esm2020/lib/dashboard/recents/recents.widget.mjs +5 -5
  211. package/esm2020/lib/dashboard/score/activity.widget.mjs +3 -3
  212. package/esm2020/lib/dashboard/score/compare-groups.widget.mjs +3 -3
  213. package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +3 -3
  214. package/esm2020/lib/dashboard/score/pending-results.widget.mjs +3 -3
  215. package/esm2020/lib/dashboard/score/personal-score.widget.mjs +18 -14
  216. package/esm2020/lib/dashboard/widget-item.component.mjs +3 -3
  217. package/esm2020/lib/desktop.module.mjs +4 -4
  218. package/esm2020/lib/home/about/about.dialog.mjs +3 -3
  219. package/esm2020/lib/home/home-base.component.mjs +3 -3
  220. package/esm2020/lib/home/home.desktop.component.mjs +3 -3
  221. package/esm2020/lib/home/home.mobile.component.mjs +3 -3
  222. package/esm2020/lib/home/notifications/notifications.component.mjs +3 -3
  223. package/esm2020/lib/home/options/options.component.mjs +3 -3
  224. package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  225. package/esm2020/lib/home/search.service.mjs +3 -3
  226. package/esm2020/lib/home/sign/sign.component.mjs +3 -3
  227. package/esm2020/lib/home/tools.component.mjs +3 -3
  228. package/esm2020/lib/impersonate/impersonate.component.mjs +3 -3
  229. package/esm2020/lib/mobile.module.mjs +4 -4
  230. package/esm2020/lib/modules/chart.module.mjs +4 -4
  231. package/esm2020/lib/modules/circular-gauge.module.mjs +4 -4
  232. package/esm2020/lib/modules/datepicker.intl.mjs +3 -3
  233. package/esm2020/lib/modules/dayjs.module.mjs +4 -4
  234. package/esm2020/lib/modules/diagram.module.mjs +4 -4
  235. package/esm2020/lib/modules/gantt.module.mjs +4 -4
  236. package/esm2020/lib/modules/grid.module.mjs +4 -4
  237. package/esm2020/lib/modules/material.module.mjs +4 -4
  238. package/esm2020/lib/modules/paginator.intl.mjs +3 -3
  239. package/esm2020/lib/modules/pivot.module.mjs +4 -4
  240. package/esm2020/lib/modules/schedule.module.mjs +4 -4
  241. package/esm2020/lib/modules/spreadsheet.module.mjs +4 -4
  242. package/esm2020/lib/modules/stepper.intl.mjs +3 -3
  243. package/esm2020/lib/modules/texteditor.module.mjs +4 -4
  244. package/esm2020/lib/notifications/filter.component.mjs +3 -3
  245. package/esm2020/lib/notifications/notifications-table.component.mjs +3 -3
  246. package/esm2020/lib/notifications/notifications.mobile.component.mjs +3 -3
  247. package/esm2020/lib/notifications/notifications.pane.component.mjs +3 -3
  248. package/esm2020/lib/notifications/notifications.service.mjs +3 -3
  249. package/esm2020/lib/notifications/types/commented.notification.mjs +3 -3
  250. package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
  251. package/esm2020/lib/notifications/types/escalated.notification.mjs +3 -3
  252. package/esm2020/lib/notifications/types/liked.notification.mjs +3 -3
  253. package/esm2020/lib/notifications/types/long-running-task.notification.mjs +3 -3
  254. package/esm2020/lib/notifications/types/notification-base.mjs +5 -5
  255. package/esm2020/lib/notifications/types/nudge.notification.mjs +3 -3
  256. package/esm2020/lib/notifications/types/state-changed.notification.mjs +3 -3
  257. package/esm2020/lib/notifications/types/tagged.notification.mjs +3 -3
  258. package/esm2020/lib/notifications/types/text.notification.mjs +3 -3
  259. package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +3 -3
  260. package/esm2020/lib/options/options.component.mjs +3 -3
  261. package/esm2020/lib/options/options.service.mjs +3 -3
  262. package/esm2020/lib/reports/arguments-component.mjs +3 -3
  263. package/esm2020/lib/reports/cube/documents.component.mjs +3 -3
  264. package/esm2020/lib/reports/cube/grid-documents.component.mjs +3 -3
  265. package/esm2020/lib/reports/cube/table-documents.component.mjs +3 -3
  266. package/esm2020/lib/reports/cube/usage-args.component.mjs +3 -3
  267. package/esm2020/lib/reports/cube/usage-base.mjs +3 -3
  268. package/esm2020/lib/reports/cube/usage-chart.component.mjs +3 -3
  269. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +3 -3
  270. package/esm2020/lib/reports/cube/usage.component.mjs +3 -3
  271. package/esm2020/lib/reports/report-viewer.component.mjs +3 -3
  272. package/esm2020/lib/reports/report.mobile.component.mjs +3 -3
  273. package/esm2020/lib/reports/report.pane.component.mjs +3 -3
  274. package/esm2020/lib/reports/reports-menu.component.mjs +3 -3
  275. package/esm2020/lib/reports/substitution/substitution.component.mjs +3 -3
  276. package/esm2020/lib/reports/table/table-view.component.mjs +3 -3
  277. package/esm2020/lib/reports/tasks/tasks.component.mjs +3 -3
  278. package/esm2020/lib/routes.desktop.mjs +18 -18
  279. package/esm2020/lib/scheduler/schedule.component.mjs +3 -3
  280. package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  281. package/esm2020/lib/scheduler/scheduler.pane.component.mjs +3 -3
  282. package/esm2020/lib/shared.module.mjs +8 -6
  283. package/esm2020/lib/system.module.mjs +4 -4
  284. package/esm2020/lib/views/cube/chart.component.mjs +3 -3
  285. package/esm2020/lib/views/cube/cube-base.mjs +3 -3
  286. package/esm2020/lib/views/cube/explore.component.mjs +3 -3
  287. package/esm2020/lib/views/cube/matrix.component.mjs +3 -3
  288. package/esm2020/lib/views/cube/parallel.component.mjs +3 -3
  289. package/esm2020/lib/views/cube/pivot.component.mjs +3 -3
  290. package/esm2020/lib/views/cube/sum.component.mjs +3 -3
  291. package/esm2020/lib/views/cube/view.component.mjs +3 -3
  292. package/esm2020/lib/views/timeline/timeline.component.exp.mjs +3 -3
  293. package/esm2020/lib/views/view-item.component.mjs +9 -13
  294. package/esm2020/lib/views/views.component.mjs +3 -3
  295. package/esm2020/lib/views/views.mobile.component.mjs +3 -3
  296. package/esm2020/lib/views/views.pane.component.mjs +3 -3
  297. package/fesm2015/bizdoc-core.mjs +1164 -1077
  298. package/fesm2015/bizdoc-core.mjs.map +1 -1
  299. package/fesm2020/bizdoc-core.mjs +1164 -1074
  300. package/fesm2020/bizdoc-core.mjs.map +1 -1
  301. package/lib/browse/browse-items.component.d.ts +0 -1
  302. package/lib/compose/compose.pane.component.d.ts +1 -0
  303. package/lib/compose/form.component.d.ts +7 -3
  304. package/lib/core/base.d.ts +3 -3
  305. package/lib/core/component-factory-resolver.d.ts +1 -1
  306. package/lib/core/configuration.d.ts +6 -5
  307. package/lib/core/controls/address.input.d.ts +5 -3
  308. package/lib/core/functions.d.ts +7 -3
  309. package/lib/core/mailbox.service.d.ts +1 -1
  310. package/lib/core/session.service.d.ts +3 -1
  311. package/lib/core/slots/pane-ref.d.ts +9 -6
  312. package/lib/core/slots/slots.component.d.ts +28 -7
  313. package/lib/views/view-item.component.d.ts +2 -4
  314. package/package.json +15 -16
@@ -1,10 +1,10 @@
1
1
  import { Component, Input, HostBinding, Optional, Self, EventEmitter, Output, ViewChild } from '@angular/core';
2
2
  import { FormControl, Validators } from '@angular/forms';
3
- import { Subject } from 'rxjs';
3
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
4
  import { MatFormFieldControl } from '@angular/material/form-field';
5
+ import { Subject } from 'rxjs';
5
6
  import { debounceTime, takeUntil } from 'rxjs/operators';
6
7
  import { isObject } from '../functions';
7
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/forms";
10
10
  import * as i2 from "@angular/cdk/a11y";
@@ -120,8 +120,17 @@ export class AddressInput {
120
120
  }
121
121
  ngOnInit() {
122
122
  const service = new google.maps.places.AutocompleteService();
123
+ let componentRestrictions;
124
+ if (this.country)
125
+ componentRestrictions = { country: this.country };
126
+ else
127
+ componentRestrictions = null;
123
128
  this.control.valueChanges.pipe(debounceTime(this.debounce), takeUntil(this._destroy)).subscribe(input => {
124
- service.getQueryPredictions({ input }, (r, s) => {
129
+ service.getQueryPredictions({
130
+ input,
131
+ location: this.location || null,
132
+ componentRestrictions
133
+ }, (r, s) => {
125
134
  if (s === google.maps.places.PlacesServiceStatus.OK)
126
135
  this._addresses = r;
127
136
  else
@@ -137,8 +146,8 @@ export class AddressInput {
137
146
  }
138
147
  }
139
148
  AddressInput.nextId = 0;
140
- AddressInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: AddressInput, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
141
- AddressInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: AddressInput, selector: "bizdoc-address", inputs: { debounce: "debounce", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, outputs: { optionSelected: "optionSelected" }, host: { properties: { "class.floating": "shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: AddressInput }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="address-container">
149
+ AddressInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AddressInput, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
150
+ AddressInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: AddressInput, selector: "bizdoc-address", inputs: { debounce: "debounce", location: "location", country: "country", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, outputs: { optionSelected: "optionSelected" }, host: { properties: { "class.floating": "shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: AddressInput }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="address-container">
142
151
  <input matInput [matAutocomplete]="address" [formControl]="control" [placeholder]="placeholder" #input
143
152
  (focus)="onFocus()" (blur)="onBlur()"/>
144
153
  <mat-autocomplete #address (optionSelected)="selected($event)" [displayWith]="displayFn">
@@ -146,7 +155,7 @@ AddressInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
146
155
  <span matLine>{{a.description}}</span>
147
156
  </mat-option>
148
157
  </mat-autocomplete></div>`, isInline: true, styles: [".address-container{display:flex}\n"], components: [{ type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatLine, selector: "[mat-line], [matLine]" }] });
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: AddressInput, decorators: [{
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AddressInput, decorators: [{
150
159
  type: Component,
151
160
  args: [{
152
161
  selector: 'bizdoc-address',
@@ -178,6 +187,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
178
187
  type: Output
179
188
  }], debounce: [{
180
189
  type: Input
190
+ }], location: [{
191
+ type: Input
192
+ }], country: [{
193
+ type: Input
181
194
  }], placeholder: [{
182
195
  type: Input
183
196
  }], required: [{
@@ -190,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
190
203
  }], value: [{
191
204
  type: Input
192
205
  }] } });
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb250cm9scy9hZGRyZXNzLmlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFzQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQW1DLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFDOUQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBa0IxQixNQUFNLE9BQ0UsWUFBWTtJQXFHbEIsWUFBdUMsU0FBb0IsRUFBVSxHQUFpQixFQUFVLE1BQStCO1FBQXhGLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBeUI7UUFsR3ZILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUtqQixZQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM1QixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDcEIsT0FBRSxHQUFHLGlCQUFpQixZQUFZLENBQUMsTUFBTSxFQUFF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LENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBaEljLG1CQUFNLEdBQUcsQ0FBRSxDQUFBO3lHQURwQixZQUFZOzZGQUFaLFlBQVksZ1ZBaEJQLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDLCtJQUM5RDs7Ozs7Ozs4QkFPa0I7MkZBUXRCLFlBQVk7a0JBbEJuQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsY0FBYyxFQUFFLENBQUM7b0JBQ3hFLFFBQVEsRUFBRTs7Ozs7Ozs4QkFPa0I7b0JBQzVCLE1BQU0sRUFBRSxDQUFDLG9DQUFvQyxDQUFDO29CQUM5QyxJQUFJLEVBQUU7d0JBQ0osa0JBQWtCLEVBQUUsa0JBQWtCO3dCQUN0Qyx5QkFBeUIsRUFBRSxhQUFhO3FCQUN6QztpQkFDRjs7MEJBdUdjLFFBQVE7OzBCQUFJLElBQUk7Z0dBMUZMLEVBQUU7c0JBQXpCLFdBQVc7Z0JBQzBCLFlBQVk7c0JBQWpELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDakIsY0FBYztzQkFBaEMsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBYUYsUUFBUTtzQkFEWCxLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSztnQkFjZ0MsV0FBVztzQkFBaEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBb0J2QixLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBIb3N0QmluZGluZywgT3B0aW9uYWwsIFNlbGYsIE9uSW5pdCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmNvbnN0IERFQk9VTkNFX1RJTUUgPSAyNTA7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWFkZHJlc3MnLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IEFkZHJlc3NJbnB1dCB9XSxcclxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJhZGRyZXNzLWNvbnRhaW5lclwiPlxyXG4gICAgPGlucHV0IG1hdElucHV0IFttYXRBdXRvY29tcGxldGVdPVwiYWRkcmVzc1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgI2lucHV0XHJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiLz5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhZGRyZXNzIChvcHRpb25TZWxlY3RlZCk9XCJzZWxlY3RlZCgkZXZlbnQpXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgYSBvZiBfYWRkcmVzc2VzXCIgW3ZhbHVlXT1cImFcIj5cclxuICAgICAgICA8c3BhbiBtYXRMaW5lPnt7YS5kZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+PC9kaXY+YCxcclxuICBzdHlsZXM6IFsnLmFkZHJlc3MtY29udGFpbmVyIHtkaXNwbGF5OiBmbGV4fSddLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbY2xhc3MuZmxvYXRpbmddJzogJ3Nob3VsZExhYmVsRmxvYXQnLFxyXG4gICAgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ2Rlc2NyaWJlZEJ5J1xyXG4gIH1cclxufSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgQWRkcmVzc0lucHV0IGltcGxlbWVudHMgTWF0Rm9ybUZpZWxkQ29udHJvbDxzdHJpbmc+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdmFsdWU/OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfb25DaGFuZ2U6IGFueTtcclxuICBwcml2YXRlIF9vblRvdWNoZWQ6IGFueTtcclxuICBfYWRkcmVzc2VzOiBnb29nbGUubWFwcy5wbGFjZXMuUXVlcnlBdXRvY29tcGxldGVQcmVkaWN0aW9uW107XHJcbiAgcmVhZG9ubHkgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgQEhvc3RCaW5kaW5nKCkgcmVhZG9ubHkgaWQgPSBgYWRkcmVzcy1pbnB1dC0ke0FkZHJlc3NJbnB1dC5uZXh0SWQrK31gO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBvcHRpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QWRkcmVzc0NoYW5nZUV2ZW50PigpO1xyXG4gIEBJbnB1dCgpIGRlYm91bmNlID0gREVCT1VOQ0VfVElNRTtcclxuICBASW5wdXQoKSBnZXQgcGxhY2Vob2xkZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG4gIHNldCBwbGFjZWhvbGRlcihwbGgpIHtcclxuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBmb2N1c2VkID0gZmFsc2U7XHJcbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMuY29udHJvbC52YWx1ZTsgfVxyXG4gIGdldCBzaG91bGRMYWJlbEZsb2F0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBnZXQgcmVxdWlyZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XHJcbiAgfVxyXG4gIHNldCByZXF1aXJlZChyZXEpIHtcclxuICAgIHRoaXMuX3JlcXVpcmVkID0gcmVxO1xyXG4gICAgaWYgKHJlcSlcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxyXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuY29udHJvbC5kaXNhYmxlZCAhPT0gdGhpcy5fZGlzYWJsZWQpIHtcclxuICAgICAgaWYgKHZhbHVlKVxyXG4gICAgICAgIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIGVycm9yU3RhdGUgPSBmYWxzZTtcclxuICBjb250cm9sVHlwZT86IHN0cmluZyA9ICdiaXpkb2MtYWRkcmVzcy1pbnB1dCc7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xyXG5cclxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcclxuICB9XHJcbiAgb25Db250YWluZXJDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgd3JpdGVWYWx1ZSh2YWw6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2V0VmFsdWUodmFsLCBmYWxzZSk7XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuICBASW5wdXQoKSBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgc2V0IHZhbHVlKHZhbDogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuX3NldFZhbHVlKHZhbCwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2V0VmFsdWUodmFsOiBzdHJpbmcsIGVtaXRFdmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsID8geyBkZXNjcmlwdGlvbjogdmFsIH0gOiBudWxsLCB7ZW1pdEV2ZW50fSk7XHJcbiAgICB9XHJcblxyXG4gIG9uRm9jdXMoKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gIH1cclxuICBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICB9XHJcbiAgZGlzcGxheUZuKGFkZHJlc3M6IGdvb2dsZS5tYXBzLnBsYWNlcy5RdWVyeUF1dG9jb21wbGV0ZVByZWRpY3Rpb24gfCBzdHJpbmcpIHtcclxuICAgIHJldHVybiBpc09iamVjdChhZGRyZXNzKSA/IChhZGRyZXNzIGFzIGdvb2dsZS5tYXBzLnBsYWNlcy5RdWVyeUF1dG9jb21wbGV0ZVByZWRpY3Rpb24pLmRlc2NyaXB0aW9uIDogYWRkcmVzcyBhcyBzdHJpbmc7XHJcbiAgfVxyXG4gIHNlbGVjdGVkKGU6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpIHtcclxuICAgIGNvbnN0IGFkZHJlc3MgPSBlLm9wdGlvbi52YWx1ZSBhcyBnb29nbGUubWFwcy5wbGFjZXMuUXVlcnlBdXRvY29tcGxldGVQcmVkaWN0aW9uO1xyXG4gICAgdGhpcy5fb25DaGFuZ2UoYWRkcmVzcy5kZXNjcmlwdGlvbik7XHJcbiAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQoeyBhZGRyZXNzOiBhZGRyZXNzLmRlc2NyaXB0aW9uLCBwbGFjZUlkOiBhZGRyZXNzLnBsYWNlX2lkIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgcHJpdmF0ZSBfZm06IEZvY3VzTW9uaXRvciwgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICAgIF9mbS5tb25pdG9yKF9lbFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKS5zdWJzY3JpYmUob3JpZ2luID0+IHtcclxuICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwdWJsaWMgZm9jdXMoKSB7XHJcbiAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2VydmljZSgpO1xyXG4gICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoaW5wdXQgPT4ge1xyXG4gICAgICBzZXJ2aWNlLmdldFF1ZXJ5UHJlZGljdGlvbnMoeyBpbnB1dCB9LCAociwgcykgPT4ge1xyXG4gICAgICAgIGlmIChzID09PSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1cy5PSylcclxuICAgICAgICAgIHRoaXMuX2FkZHJlc3NlcyA9IHI7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgY29uc29sZS5sb2coYGFkZHJlc3MgZ29vZ2xlIGFwaSBlcnJvciBjb2RlOiAke3N9YClcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICAgIHRoaXMuX2ZtLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzQ2hhbmdlRXZlbnQge1xyXG4gIGFkZHJlc3M6IHN0cmluZztcclxuICBwbGFjZUlkOiBzdHJpbmc7XHJcbn1cclxuIl19
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb250cm9scy9hZGRyZXNzLmlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFzQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQW1DLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFDeEMsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBa0IxQixNQUFNLE9BQ0UsWUFBWTtJQXVHbEIsWUFBdUMsU0FBb0IsRUFBVSxHQUFpQixFQUFVLE1BQStCO1FBQXhGLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBeUI7UUFwR3ZILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUtqQixZQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM1QixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDcEIsT0FBRSxHQUFHLGlCQUFpQixZQUFZLENBQUMsTUFBTSxFQUFF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WCxLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSztnQkFjZ0MsV0FBVztzQkFBaEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBb0J2QixLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBIb3N0QmluZGluZywgT3B0aW9uYWwsIFNlbGYsIE9uSW5pdCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XHJcbmNvbnN0IERFQk9VTkNFX1RJTUUgPSAyNTA7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWFkZHJlc3MnLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IEFkZHJlc3NJbnB1dCB9XSxcclxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJhZGRyZXNzLWNvbnRhaW5lclwiPlxyXG4gICAgPGlucHV0IG1hdElucHV0IFttYXRBdXRvY29tcGxldGVdPVwiYWRkcmVzc1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgI2lucHV0XHJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiLz5cclxuICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhZGRyZXNzIChvcHRpb25TZWxlY3RlZCk9XCJzZWxlY3RlZCgkZXZlbnQpXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGblwiPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgYSBvZiBfYWRkcmVzc2VzXCIgW3ZhbHVlXT1cImFcIj5cclxuICAgICAgICA8c3BhbiBtYXRMaW5lPnt7YS5kZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+PC9kaXY+YCxcclxuICBzdHlsZXM6IFsnLmFkZHJlc3MtY29udGFpbmVyIHtkaXNwbGF5OiBmbGV4fSddLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbY2xhc3MuZmxvYXRpbmddJzogJ3Nob3VsZExhYmVsRmxvYXQnLFxyXG4gICAgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ2Rlc2NyaWJlZEJ5J1xyXG4gIH1cclxufSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgQWRkcmVzc0lucHV0IGltcGxlbWVudHMgTWF0Rm9ybUZpZWxkQ29udHJvbDxzdHJpbmc+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdmFsdWU/OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfb25DaGFuZ2U6IGFueTtcclxuICBwcml2YXRlIF9vblRvdWNoZWQ6IGFueTtcclxuICBfYWRkcmVzc2VzOiBnb29nbGUubWFwcy5wbGFjZXMuUXVlcnlBdXRvY29tcGxldGVQcmVkaWN0aW9uW107XHJcbiAgcmVhZG9ubHkgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgQEhvc3RCaW5kaW5nKCkgcmVhZG9ubHkgaWQgPSBgYWRkcmVzcy1pbnB1dC0ke0FkZHJlc3NJbnB1dC5uZXh0SWQrK31gO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBvcHRpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QWRkcmVzc0NoYW5nZUV2ZW50PigpO1xyXG4gIEBJbnB1dCgpIGRlYm91bmNlID0gREVCT1VOQ0VfVElNRTtcclxuICBASW5wdXQoKSBsb2NhdGlvbj86IGdvb2dsZS5tYXBzLkxhdExuZztcclxuICBASW5wdXQoKSBjb3VudHJ5Pzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgQElucHV0KCkgZ2V0IHBsYWNlaG9sZGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xyXG4gIH1cclxuICBzZXQgcGxhY2Vob2xkZXIocGxoKSB7XHJcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHBsaDtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgZm9jdXNlZCA9IGZhbHNlO1xyXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLmNvbnRyb2wudmFsdWU7IH1cclxuICBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHJlcXVpcmVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xyXG4gIH1cclxuICBzZXQgcmVxdWlyZWQocmVxKSB7XHJcbiAgICB0aGlzLl9yZXF1aXJlZCA9IHJlcTtcclxuICAgIGlmIChyZXEpXHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmNvbnRyb2wuZGlzYWJsZWQgIT09IHRoaXMuX2Rpc2FibGVkKSB7XHJcbiAgICAgIGlmICh2YWx1ZSlcclxuICAgICAgICB0aGlzLmNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5jb250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBlcnJvclN0YXRlID0gZmFsc2U7XHJcbiAgY29udHJvbFR5cGU/OiBzdHJpbmcgPSAnYml6ZG9jLWFkZHJlc3MtaW5wdXQnO1xyXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgZGVzY3JpYmVkQnkgPSAnJztcclxuXHJcbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XHJcbiAgfVxyXG4gIG9uQ29udGFpbmVyQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldFZhbHVlKHZhbCwgZmFsc2UpO1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbiAgQElucHV0KCkgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG4gIHNldCB2YWx1ZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc2V0VmFsdWUodmFsLCB0cnVlKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2V0VmFsdWUodmFsOiBzdHJpbmcsIGVtaXRFdmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsID8geyBkZXNjcmlwdGlvbjogdmFsIH0gOiBudWxsLCB7IGVtaXRFdmVudCB9KTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gIH1cclxuICBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICB9XHJcbiAgZGlzcGxheUZuKGFkZHJlc3M6IGdvb2dsZS5tYXBzLnBsYWNlcy5RdWVyeUF1dG9jb21wbGV0ZVByZWRpY3Rpb24gfCBzdHJpbmcpIHtcclxuICAgIHJldHVybiBpc09iamVjdChhZGRyZXNzKSA/IChhZGRyZXNzIGFzIGdvb2dsZS5tYXBzLnBsYWNlcy5RdWVyeUF1dG9jb21wbGV0ZVByZWRpY3Rpb24pLmRlc2NyaXB0aW9uIDogYWRkcmVzcyBhcyBzdHJpbmc7XHJcbiAgfVxyXG4gIHNlbGVjdGVkKGU6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpIHtcclxuICAgIGNvbnN0IGFkZHJlc3MgPSBlLm9wdGlvbi52YWx1ZSBhcyBnb29nbGUubWFwcy5wbGFjZXMuUXVlcnlBdXRvY29tcGxldGVQcmVkaWN0aW9uO1xyXG4gICAgdGhpcy5fb25DaGFuZ2UoYWRkcmVzcy5kZXNjcmlwdGlvbik7XHJcbiAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQoeyBhZGRyZXNzOiBhZGRyZXNzLmRlc2NyaXB0aW9uLCBwbGFjZUlkOiBhZGRyZXNzLnBsYWNlX2lkIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgcHJpdmF0ZSBfZm06IEZvY3VzTW9uaXRvciwgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICAgIF9mbS5tb25pdG9yKF9lbFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKS5zdWJzY3JpYmUob3JpZ2luID0+IHtcclxuICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwdWJsaWMgZm9jdXMoKSB7XHJcbiAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2VydmljZSgpO1xyXG4gICAgbGV0IGNvbXBvbmVudFJlc3RyaWN0aW9uczogYW55O1xyXG4gICAgaWYgKHRoaXMuY291bnRyeSkgXHJcbiAgICAgIGNvbXBvbmVudFJlc3RyaWN0aW9ucyA9IHsgY291bnRyeTogdGhpcy5jb3VudHJ5IH07XHJcbiAgICBlbHNlIGNvbXBvbmVudFJlc3RyaWN0aW9ucyA9IG51bGw7XHJcbiAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2UpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShpbnB1dCA9PiB7XHJcbiAgICAgIHNlcnZpY2UuZ2V0UXVlcnlQcmVkaWN0aW9ucyh7XHJcbiAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgbG9jYXRpb246IHRoaXMubG9jYXRpb24gfHwgbnVsbCxcclxuICAgICAgICBjb21wb25lbnRSZXN0cmljdGlvbnNcclxuICAgICAgfSBhcyBhbnksIChyLCBzKSA9PiB7XHJcbiAgICAgICAgaWYgKHMgPT09IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LKVxyXG4gICAgICAgICAgdGhpcy5fYWRkcmVzc2VzID0gcjtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhgYWRkcmVzcyBnb29nbGUgYXBpIGVycm9yIGNvZGU6ICR7c31gKVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5fZm0uc3RvcE1vbml0b3JpbmcodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NDaGFuZ2VFdmVudCB7XHJcbiAgYWRkcmVzczogc3RyaW5nO1xyXG4gIHBsYWNlSWQ6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -181,8 +181,8 @@ export class TypeAutocomplete {
181
181
  }
182
182
  }
183
183
  TypeAutocomplete.nextId = 0;
184
- TypeAutocomplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TypeAutocomplete, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i3.SessionService }, { token: i4.DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
185
- TypeAutocomplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: TypeAutocomplete, selector: "bizdoc-autocomplete", inputs: { _type: ["type", "_type"], placeholder: "placeholder", text: "text", required: "required", disabled: "disabled", value: "value", minimumChars: "minimumChars", textFormControlName: "textFormControlName", textFormControl: "textFormControl" }, outputs: { textChange: "textChange", optionSelected: "optionSelected" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" }, classAttribute: "row" }, providers: [{ provide: MatFormFieldControl, useExisting: TypeAutocomplete }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "trigger", first: true, predicate: ["input"], descendants: true, read: MatAutocompleteTrigger, static: true }], ngImport: i0, template: `<input matInput [matAutocomplete]="auto" [placeholder]="placeholder" [formControl]="_control" #input
184
+ TypeAutocomplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TypeAutocomplete, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i3.SessionService }, { token: i4.DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
185
+ TypeAutocomplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: TypeAutocomplete, selector: "bizdoc-autocomplete", inputs: { _type: ["type", "_type"], placeholder: "placeholder", text: "text", required: "required", disabled: "disabled", value: "value", minimumChars: "minimumChars", textFormControlName: "textFormControlName", textFormControl: "textFormControl" }, outputs: { textChange: "textChange", optionSelected: "optionSelected" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" }, classAttribute: "row" }, providers: [{ provide: MatFormFieldControl, useExisting: TypeAutocomplete }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "trigger", first: true, predicate: ["input"], descendants: true, read: MatAutocompleteTrigger, static: true }], ngImport: i0, template: `<input matInput [matAutocomplete]="auto" [placeholder]="placeholder" [formControl]="_control" #input
186
186
  (focus)="_onFocus()" (blur)="_onBlur()" [required]="required"/>
187
187
  <mat-autocomplete #auto (optionSelected)="_optionSelected($event)" [displayWith]='displayFn'>
188
188
  <mat-option *ngFor="let v of _items$ | async" [value]="v">
@@ -191,7 +191,7 @@ TypeAutocomplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
191
191
  </mat-option>
192
192
  </mat-autocomplete>
193
193
  <button mat-icon-button matSuffix (click)="clear()" *ngIf="_control.value"><mat-icon>close</mat-icon></button>`, isInline: true, components: [{ type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.MatSuffix, selector: "[matSuffix]" }], pipes: { "async": i10.AsyncPipe } });
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TypeAutocomplete, decorators: [{
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TypeAutocomplete, decorators: [{
195
195
  type: Component,
196
196
  args: [{
197
197
  selector: 'bizdoc-autocomplete',
@@ -151,9 +151,9 @@ export class CombinationPickerBody {
151
151
  this.modeChange.complete();
152
152
  }
153
153
  }
154
- CombinationPickerBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CombinationPickerBody, deps: [{ token: MAT_DIALOG_DATA, optional: true }, { token: COMBINATION_PICKER_BODY, optional: true }, { token: i1.FormBuilder }, { token: i2.PromptService }, { token: i3.CubeInfo }, { token: i4.DatasourceService }, { token: i0.ChangeDetectorRef }, { token: i5.SessionService }, { token: i6.CubeService }], target: i0.ɵɵFactoryTarget.Component });
155
- CombinationPickerBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: CombinationPickerBody, selector: "bizdoc-combination-picker-body", viewQueries: [{ propertyName: "axes", predicate: MatSelect, descendants: true }], ngImport: i0, template: "<div [ngSwitch]=\"mode\" class=\"account-picker-popup\" cdkTrapFocus>\r\n <!--[@transformPanel]=\"enter\"-->\r\n <ng-container *ngSwitchCase=\"'filter'\">\r\n <mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"_working ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- filter -->\r\n <form [formGroup]=\"_form\">\r\n <mat-form-field *ngFor=\"let a of _axes; let i = index\">\r\n <mat-label>{{a.title}}</mat-label>\r\n <mat-select [formControlName]=\"a.name\">\r\n <mat-option *ngIf=\"_keys[a.name].length>1\">{{'All'|translate}}</mat-option>\r\n <mat-option *ngFor=\"let key of _keys[a.name]\" [value]=\"key\">{{_values[a.dataType][key]}}</mat-option>\r\n </mat-select>\r\n <mat-hint>{{_form.controls[a.name].value}}</mat-hint>\r\n </mat-form-field>\r\n </form>\r\n <div class=\"actions\">\r\n <button mat-icon-button (click)=\"_filter()\" [disabled]=\"_working\" [bizdocTooltip]=\"'Search'|translate\" class=\"mat-icon-rtl-mirror\" [tabIndex]=\"_axes.length\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <!-- results -->\r\n <ng-container *ngSwitchCase=\"'results'\">\r\n <div class=\"actions\">\r\n <button mat-icon-button (click)=\"_switchMode('filter')\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <mat-action-list>\r\n <mat-list-item *ngFor=\"let codes of _combinations\" (click)=\"_select(codes)\">\r\n <h3 matLine>{{_nameOf(codes)}}</h3>\r\n <p matLine *ngIf=\"_explorable\"><a (click)=\"_info(codes, $event)\">{{_codeOf(codes)}}</a></p>\r\n </mat-list-item>\r\n </mat-action-list>\r\n </ng-container>\r\n</div>\r\n", styles: [".account-picker-popup{display:flex;flex-direction:column;width:100%}.account-picker-popup form{padding:8px;flex-flow:column wrap;box-sizing:border-box;display:flex}.account-picker-popup form>*{flex:1 1 100%;box-sizing:border-box;max-width:50%;padding:0 5px 5px 0}.account-picker-popup .actions{display:flex;flex-direction:row;place-content:center flex-end;align-items:center;padding:8px}.account-picker-popup ::ng-deep .mat-list-base{overflow:auto}.account-picker-popup ::ng-deep .mat-list-base .mat-list-item .mat-line:nth-child(n+2){font-size:14px}@media screen and (min-width: 600px){.account-picker-popup form{flex-flow:row wrap}}\n"], components: [{ type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i10.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i13.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { type: i13.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }], directives: [{ type: i14.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i14.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MatLabel, selector: "mat-label" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.MatLine, selector: "[mat-line], [matLine]" }], pipes: { "translate": i16.TranslatePipe } });
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CombinationPickerBody, decorators: [{
154
+ CombinationPickerBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CombinationPickerBody, deps: [{ token: MAT_DIALOG_DATA, optional: true }, { token: COMBINATION_PICKER_BODY, optional: true }, { token: i1.FormBuilder }, { token: i2.PromptService }, { token: i3.CubeInfo }, { token: i4.DatasourceService }, { token: i0.ChangeDetectorRef }, { token: i5.SessionService }, { token: i6.CubeService }], target: i0.ɵɵFactoryTarget.Component });
155
+ CombinationPickerBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: CombinationPickerBody, selector: "bizdoc-combination-picker-body", viewQueries: [{ propertyName: "axes", predicate: MatSelect, descendants: true }], ngImport: i0, template: "<div [ngSwitch]=\"mode\" class=\"account-picker-popup\" cdkTrapFocus>\r\n <!--[@transformPanel]=\"enter\"-->\r\n <ng-container *ngSwitchCase=\"'filter'\">\r\n <mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"_working ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- filter -->\r\n <form [formGroup]=\"_form\">\r\n <mat-form-field *ngFor=\"let a of _axes; let i = index\">\r\n <mat-label>{{a.title}}</mat-label>\r\n <mat-select [formControlName]=\"a.name\">\r\n <mat-option *ngIf=\"_keys[a.name].length>1\">{{'All'|translate}}</mat-option>\r\n <mat-option *ngFor=\"let key of _keys[a.name]\" [value]=\"key\">{{_values[a.dataType][key]}}</mat-option>\r\n </mat-select>\r\n <mat-hint>{{_form.controls[a.name].value}}</mat-hint>\r\n </mat-form-field>\r\n </form>\r\n <div class=\"actions\">\r\n <button mat-icon-button (click)=\"_filter()\" [disabled]=\"_working\" [bizdocTooltip]=\"'Search'|translate\" class=\"mat-icon-rtl-mirror\" [tabIndex]=\"_axes.length\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <!-- results -->\r\n <ng-container *ngSwitchCase=\"'results'\">\r\n <div class=\"actions\">\r\n <button mat-icon-button (click)=\"_switchMode('filter')\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <mat-action-list>\r\n <mat-list-item *ngFor=\"let codes of _combinations\" (click)=\"_select(codes)\">\r\n <h3 matLine>{{_nameOf(codes)}}</h3>\r\n <p matLine *ngIf=\"_explorable\"><a (click)=\"_info(codes, $event)\">{{_codeOf(codes)}}</a></p>\r\n </mat-list-item>\r\n </mat-action-list>\r\n </ng-container>\r\n</div>\r\n", styles: [".account-picker-popup{display:flex;flex-direction:column;width:100%}.account-picker-popup form{padding:8px;flex-flow:column wrap;box-sizing:border-box;display:flex}.account-picker-popup form>*{flex:1 1 100%;box-sizing:border-box;max-width:50%;padding:0 5px 5px 0}.account-picker-popup .actions{display:flex;flex-direction:row;place-content:center flex-end;align-items:center;padding:8px}.account-picker-popup ::ng-deep .mat-list-base{overflow:auto}.account-picker-popup ::ng-deep .mat-list-base .mat-list-item .mat-line:nth-child(n+2){font-size:14px}@media screen and (min-width: 600px){.account-picker-popup form{flex-flow:row wrap}}\n"], components: [{ type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i10.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i13.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { type: i13.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }], directives: [{ type: i14.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i14.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MatLabel, selector: "mat-label" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.MatLine, selector: "[mat-line], [matLine]" }], pipes: { "translate": i16.TranslatePipe } });
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CombinationPickerBody, decorators: [{
157
157
  type: Component,
158
158
  args: [{ selector: 'bizdoc-combination-picker-body', template: "<div [ngSwitch]=\"mode\" class=\"account-picker-popup\" cdkTrapFocus>\r\n <!--[@transformPanel]=\"enter\"-->\r\n <ng-container *ngSwitchCase=\"'filter'\">\r\n <mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"_working ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- filter -->\r\n <form [formGroup]=\"_form\">\r\n <mat-form-field *ngFor=\"let a of _axes; let i = index\">\r\n <mat-label>{{a.title}}</mat-label>\r\n <mat-select [formControlName]=\"a.name\">\r\n <mat-option *ngIf=\"_keys[a.name].length>1\">{{'All'|translate}}</mat-option>\r\n <mat-option *ngFor=\"let key of _keys[a.name]\" [value]=\"key\">{{_values[a.dataType][key]}}</mat-option>\r\n </mat-select>\r\n <mat-hint>{{_form.controls[a.name].value}}</mat-hint>\r\n </mat-form-field>\r\n </form>\r\n <div class=\"actions\">\r\n <button mat-icon-button (click)=\"_filter()\" [disabled]=\"_working\" [bizdocTooltip]=\"'Search'|translate\" class=\"mat-icon-rtl-mirror\" [tabIndex]=\"_axes.length\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <!-- results -->\r\n <ng-container *ngSwitchCase=\"'results'\">\r\n <div class=\"actions\">\r\n <button mat-icon-button (click)=\"_switchMode('filter')\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <mat-action-list>\r\n <mat-list-item *ngFor=\"let codes of _combinations\" (click)=\"_select(codes)\">\r\n <h3 matLine>{{_nameOf(codes)}}</h3>\r\n <p matLine *ngIf=\"_explorable\"><a (click)=\"_info(codes, $event)\">{{_codeOf(codes)}}</a></p>\r\n </mat-list-item>\r\n </mat-action-list>\r\n </ng-container>\r\n</div>\r\n", styles: [".account-picker-popup{display:flex;flex-direction:column;width:100%}.account-picker-popup form{padding:8px;flex-flow:column wrap;box-sizing:border-box;display:flex}.account-picker-popup form>*{flex:1 1 100%;box-sizing:border-box;max-width:50%;padding:0 5px 5px 0}.account-picker-popup .actions{display:flex;flex-direction:row;place-content:center flex-end;align-items:center;padding:8px}.account-picker-popup ::ng-deep .mat-list-base{overflow:auto}.account-picker-popup ::ng-deep .mat-list-base .mat-list-item .mat-line:nth-child(n+2){font-size:14px}@media screen and (min-width: 600px){.account-picker-popup form{flex-flow:row wrap}}\n"] }]
159
159
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -223,9 +223,9 @@ export class CombinationPicker {
223
223
  }
224
224
  }
225
225
  CombinationPicker.nextId = 0;
226
- CombinationPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CombinationPicker, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.MatFormField, optional: true }, { token: i3.Overlay }, { token: i4.MatDialog }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i5.FocusMonitor }, { token: i0.ElementRef }, { token: i6.Directionality }], target: i0.ɵɵFactoryTarget.Component });
227
- CombinationPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: CombinationPicker, selector: "bizdoc-combination-picker", inputs: { _divider: ["divider", "_divider"], _displayDivider: ["displayDivider", "_displayDivider"], limit: "limit", cube: "cube", exploreSettings: "exploreSettings", description: "description", touchUi: "touchUi", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, outputs: { optionSelected: "optionSelected", descriptionChange: "descriptionChange" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: CombinationPicker }], ngImport: i0, template: "<div class=\"account-picker-element\">\r\n <textarea class=\"mat-input-element\" [disabled]=\"disabled\" (keydown)=\"_keyDown($event)\" [value]=\"description\"></textarea>\r\n <div class=\"mat-form-field-suffix\">\r\n <button mat-icon-button [disableRipple]=true (click)=\"open($event)\" matSuffix [disabled]=\"disabled\" tabindex=\"-1\" [class.mat-warn]=\"errorState\"><mat-icon>arrow_drop_down</mat-icon></button>\r\n </div>\r\n</div>\r\n", styles: [".account-picker-element{display:flex;flex-direction:row}.account-picker-element textarea{resize:none;flex:auto}\n"], components: [{ type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.MatSuffix, selector: "[matSuffix]" }] });
228
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CombinationPicker, decorators: [{
226
+ CombinationPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CombinationPicker, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.MatFormField, optional: true }, { token: i3.Overlay }, { token: i4.MatDialog }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i5.FocusMonitor }, { token: i0.ElementRef }, { token: i6.Directionality }], target: i0.ɵɵFactoryTarget.Component });
227
+ CombinationPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: CombinationPicker, selector: "bizdoc-combination-picker", inputs: { _divider: ["divider", "_divider"], _displayDivider: ["displayDivider", "_displayDivider"], limit: "limit", cube: "cube", exploreSettings: "exploreSettings", description: "description", touchUi: "touchUi", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, outputs: { optionSelected: "optionSelected", descriptionChange: "descriptionChange" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: CombinationPicker }], ngImport: i0, template: "<div class=\"account-picker-element\">\r\n <textarea class=\"mat-input-element\" [disabled]=\"disabled\" (keydown)=\"_keyDown($event)\" [value]=\"description\"></textarea>\r\n <div class=\"mat-form-field-suffix\">\r\n <button mat-icon-button [disableRipple]=true (click)=\"open($event)\" matSuffix [disabled]=\"disabled\" tabindex=\"-1\" [class.mat-warn]=\"errorState\"><mat-icon>arrow_drop_down</mat-icon></button>\r\n </div>\r\n</div>\r\n", styles: [".account-picker-element{display:flex;flex-direction:row}.account-picker-element textarea{resize:none;flex:auto}\n"], components: [{ type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.MatSuffix, selector: "[matSuffix]" }] });
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CombinationPicker, decorators: [{
229
229
  type: Component,
230
230
  args: [{ selector: 'bizdoc-combination-picker', providers: [{ provide: MatFormFieldControl, useExisting: CombinationPicker }], host: {
231
231
  '[class.floating]': 'shouldLabelFloat',
@@ -83,9 +83,9 @@ export class CombinationPool {
83
83
  this._destroy.next();
84
84
  }
85
85
  }
86
- CombinationPool.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CombinationPool, deps: [{ token: i1.CubeService }, { token: i2.FormBuilder }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component });
87
- CombinationPool.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: CombinationPool, selector: "bizdoc-combination-pool", inputs: { form: ["formGroup", "form"], appearance: "appearance", cube: "cube", model: "model", source: "source" }, outputs: { modelChange: "modelChange" }, ngImport: i0, template: "<form [formGroup]=\"form\">\r\n <mat-form-field *ngFor=\"let a of _axes\" [appearance]=\"appearance\">\r\n <mat-label>{{a.title}}</mat-label>\r\n <mat-select [formControlName]=\"a.name\">\r\n <mat-option *ngIf=\"form.controls[a.name].value\">{{'Dashes'|translate:('Clear'|translate)}}</mat-option>\r\n <mat-option *ngFor=\"let key of _keys[a.dataType]\" [value]=\"key\">{{_values[a.dataType][key]}}</mat-option>\r\n </mat-select>\r\n <mat-hint>{{form.controls[a.name].value}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", styles: [":host{flex:1 1 auto}form{flex-flow:row wrap;box-sizing:border-box;display:flex;padding:0!important}form>*{flex:1 1 auto;box-sizing:border-box;width:50%;padding:0 5px 0 0}[dir=rtl] form>*{padding:0 0 5px}@media (max-width: 599px){form{flex-flow:column}form>*{width:unset}}\n"], components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": i8.TranslatePipe } });
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CombinationPool, decorators: [{
86
+ CombinationPool.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CombinationPool, deps: [{ token: i1.CubeService }, { token: i2.FormBuilder }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component });
87
+ CombinationPool.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: CombinationPool, selector: "bizdoc-combination-pool", inputs: { form: ["formGroup", "form"], appearance: "appearance", cube: "cube", model: "model", source: "source" }, outputs: { modelChange: "modelChange" }, ngImport: i0, template: "<form [formGroup]=\"form\">\r\n <mat-form-field *ngFor=\"let a of _axes\" [appearance]=\"appearance\">\r\n <mat-label>{{a.title}}</mat-label>\r\n <mat-select [formControlName]=\"a.name\">\r\n <mat-option *ngIf=\"form.controls[a.name].value\">{{'Dashes'|translate:('Clear'|translate)}}</mat-option>\r\n <mat-option *ngFor=\"let key of _keys[a.dataType]\" [value]=\"key\">{{_values[a.dataType][key]}}</mat-option>\r\n </mat-select>\r\n <mat-hint>{{form.controls[a.name].value}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", styles: [":host{flex:1 1 auto}form{flex-flow:row wrap;box-sizing:border-box;display:flex;padding:0!important}form>*{flex:1 1 auto;box-sizing:border-box;width:50%;padding:0 5px 0 0}[dir=rtl] form>*{padding:0 0 5px}@media (max-width: 599px){form{flex-flow:column}form>*{width:unset}}\n"], components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": i8.TranslatePipe } });
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CombinationPool, decorators: [{
89
89
  type: Component,
90
90
  args: [{ selector: 'bizdoc-combination-pool', template: "<form [formGroup]=\"form\">\r\n <mat-form-field *ngFor=\"let a of _axes\" [appearance]=\"appearance\">\r\n <mat-label>{{a.title}}</mat-label>\r\n <mat-select [formControlName]=\"a.name\">\r\n <mat-option *ngIf=\"form.controls[a.name].value\">{{'Dashes'|translate:('Clear'|translate)}}</mat-option>\r\n <mat-option *ngFor=\"let key of _keys[a.dataType]\" [value]=\"key\">{{_values[a.dataType][key]}}</mat-option>\r\n </mat-select>\r\n <mat-hint>{{form.controls[a.name].value}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", styles: [":host{flex:1 1 auto}form{flex-flow:row wrap;box-sizing:border-box;display:flex;padding:0!important}form>*{flex:1 1 auto;box-sizing:border-box;width:50%;padding:0 5px 0 0}[dir=rtl] form>*{padding:0 0 5px}@media (max-width: 599px){form{flex-flow:column}form>*{width:unset}}\n"] }]
91
91
  }], ctorParameters: function () { return [{ type: i1.CubeService }, { type: i2.FormBuilder }, { type: i3.SessionService }]; }, propDecorators: { form: [{
@@ -367,9 +367,9 @@ export class FileInput {
367
367
  }
368
368
  }
369
369
  FileInput.nextId = 0;
370
- FileInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: FileInput, deps: [{ token: i0.ElementRef }, { token: i1.MailboxService }, { token: i2.DomSanitizer }, { token: i3.AttachmentInfo }, { token: i4.TranslateService }, { token: i5.SessionService }, { token: i6.PromptService }, { token: i7.NgControl, optional: true, self: true }, { token: DOCUMENT_MODEL }], target: i0.ɵɵFactoryTarget.Component });
371
- FileInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: FileInput, selector: "bizdoc-file-upload", inputs: { multiple: "multiple", accept: "accept", icon: "icon", value: "value", placeholder: "placeholder", required: "required", disabled: "disabled" }, host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)" }, properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy" }, classAttribute: "file-dropable" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<button mat-button *ngIf=\"!items.length; else preview\" (click)=\"open()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <div class=\"file-preview\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"apreview(a)\" height=\"80\">\r\n <button mat-icon-button *ngIf=\"a.hasPreview && !a.isImage\" [bizdocTooltip]=\"'Preview'|translate\" (click)=\"apreview(a)\" [ngSwitch]=\"a.icon !== undefined\">\r\n <mat-icon *ngSwitchCase=\"true\" [svgIcon]=\"a.icon\" [inline]=\"false\"></mat-icon>\r\n <mat-icon *ngSwitchDefault class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"!a.hasPreview && a.icon\" [svgIcon]=\"a.icon\" [inline]=\"false\"></mat-icon>\r\n </div>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"multiple\" (click)=\"open()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"a.hasPreview\" (click)=\"apreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersions(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative;display:inline-flex}.attachment-item img{cursor:zoom-in}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"], components: [{ type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ProgressDirective, selector: "[progressIndicator]", inputs: ["progressIndicator"] }, { type: i14.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i12.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i12.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i12.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "translate": i15.TranslatePipe, "amCalendar": i16.CalendarPipe } });
372
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: FileInput, decorators: [{
370
+ FileInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FileInput, deps: [{ token: i0.ElementRef }, { token: i1.MailboxService }, { token: i2.DomSanitizer }, { token: i3.AttachmentInfo }, { token: i4.TranslateService }, { token: i5.SessionService }, { token: i6.PromptService }, { token: i7.NgControl, optional: true, self: true }, { token: DOCUMENT_MODEL }], target: i0.ɵɵFactoryTarget.Component });
371
+ FileInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: FileInput, selector: "bizdoc-file-upload", inputs: { multiple: "multiple", accept: "accept", icon: "icon", value: "value", placeholder: "placeholder", required: "required", disabled: "disabled" }, host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)" }, properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy" }, classAttribute: "file-dropable" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<button mat-button *ngIf=\"!items.length; else preview\" (click)=\"open()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <div class=\"file-preview\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"apreview(a)\" height=\"80\">\r\n <button mat-icon-button *ngIf=\"a.hasPreview && !a.isImage\" [bizdocTooltip]=\"'Preview'|translate\" (click)=\"apreview(a)\" [ngSwitch]=\"a.icon !== undefined\">\r\n <mat-icon *ngSwitchCase=\"true\" [svgIcon]=\"a.icon\" [inline]=\"false\"></mat-icon>\r\n <mat-icon *ngSwitchDefault class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"!a.hasPreview && a.icon\" [svgIcon]=\"a.icon\" [inline]=\"false\"></mat-icon>\r\n </div>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"multiple\" (click)=\"open()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"a.hasPreview\" (click)=\"apreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersions(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative;display:inline-flex}.attachment-item img{cursor:zoom-in}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"], components: [{ type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ProgressDirective, selector: "[progressIndicator]", inputs: ["progressIndicator"] }, { type: i14.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i12.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i12.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i12.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "translate": i15.TranslatePipe, "amCalendar": i16.CalendarPipe } });
372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FileInput, decorators: [{
373
373
  type: Component,
374
374
  args: [{ host: { class: 'file-dropable' }, selector: 'bizdoc-file-upload', template: "<button mat-button *ngIf=\"!items.length; else preview\" (click)=\"open()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <div class=\"file-preview\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"apreview(a)\" height=\"80\">\r\n <button mat-icon-button *ngIf=\"a.hasPreview && !a.isImage\" [bizdocTooltip]=\"'Preview'|translate\" (click)=\"apreview(a)\" [ngSwitch]=\"a.icon !== undefined\">\r\n <mat-icon *ngSwitchCase=\"true\" [svgIcon]=\"a.icon\" [inline]=\"false\"></mat-icon>\r\n <mat-icon *ngSwitchDefault class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"!a.hasPreview && a.icon\" [svgIcon]=\"a.icon\" [inline]=\"false\"></mat-icon>\r\n </div>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"multiple\" (click)=\"open()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"a.hasPreview\" (click)=\"apreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersions(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative;display:inline-flex}.attachment-item img{cursor:zoom-in}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"] }]
375
375
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.MailboxService }, { type: i2.DomSanitizer }, { type: i3.AttachmentInfo }, { type: i4.TranslateService }, { type: i5.SessionService }, { type: i6.PromptService }, { type: i7.NgControl, decorators: [{
@@ -167,8 +167,8 @@ export class TypeSelect {
167
167
  }
168
168
  }
169
169
  TypeSelect.nextId = 0;
170
- TypeSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TypeSelect, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i3.SessionService }, { token: i4.DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
171
- TypeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: TypeSelect, selector: "bizdoc-select", inputs: { type: "type", scope: "scope", multiple: "multiple", placeholder: "placeholder", required: "required", disabled: "disabled", text: "text", value: "value" }, outputs: { selectionChange: "selectionChange", textChange: "textChange" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: TypeSelect }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: MatSelect, descendants: true, static: true }], ngImport: i0, template: `<mat-select [placeholder]="placeholder" [formControl]="_control" [multiple]='multiple'
170
+ TypeSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TypeSelect, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i3.SessionService }, { token: i4.DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
171
+ TypeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: TypeSelect, selector: "bizdoc-select", inputs: { type: "type", scope: "scope", multiple: "multiple", placeholder: "placeholder", required: "required", disabled: "disabled", text: "text", value: "value" }, outputs: { selectionChange: "selectionChange", textChange: "textChange" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: TypeSelect }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: MatSelect, descendants: true, static: true }], ngImport: i0, template: `<mat-select [placeholder]="placeholder" [formControl]="_control" [multiple]='multiple'
172
172
  (focusin)="_onFocus()" (focusout)="_onBlur()" [compareWith]='_compareWithKey' [required]="required">
173
173
  <mat-option *ngIf="!required && !multiple" [value]="null">
174
174
  {{ 'None' | translate }}
@@ -178,7 +178,7 @@ TypeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "1
178
178
  <span *ngIf="_column">{{v.value[_column.name]}}</span>
179
179
  </mat-option>
180
180
  </mat-select>`, isInline: true, components: [{ type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i8.TranslatePipe, "async": i7.AsyncPipe } });
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TypeSelect, decorators: [{
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TypeSelect, decorators: [{
182
182
  type: Component,
183
183
  args: [{
184
184
  selector: 'bizdoc-select',
@@ -169,9 +169,9 @@ export class TimePicker {
169
169
  }
170
170
  }
171
171
  TimePicker.nextId = 0;
172
- TimePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TimePicker, deps: [{ token: i1.FocusMonitor }, { token: i0.ElementRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
173
- TimePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: TimePicker, selector: "mat-time-picker", inputs: { dateControlName: "dateControlName", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, host: { properties: { "class.floating": "shouldLabelFloat", "id": "id", "attr.aria-describedby": "describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: TimePicker }], ngImport: i0, template: "<input matInput type=\"text\" [matAutocomplete]=\"auto\" [formControl]=\"control\" [placeholder]=\"placeholder\">\r\n<mat-autocomplete #auto>\r\n <mat-option *ngFor=\"let o of options\" [value]=\"o\">{{o}}</mat-option>\r\n</mat-autocomplete>\r\n", components: [{ type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TimePicker, decorators: [{
172
+ TimePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TimePicker, deps: [{ token: i1.FocusMonitor }, { token: i0.ElementRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
173
+ TimePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: TimePicker, selector: "mat-time-picker", inputs: { dateControlName: "dateControlName", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, host: { properties: { "class.floating": "shouldLabelFloat", "id": "id", "attr.aria-describedby": "describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: TimePicker }], ngImport: i0, template: "<input matInput type=\"text\" [matAutocomplete]=\"auto\" [formControl]=\"control\" [placeholder]=\"placeholder\">\r\n<mat-autocomplete #auto>\r\n <mat-option *ngFor=\"let o of options\" [value]=\"o\">{{o}}</mat-option>\r\n</mat-autocomplete>\r\n", components: [{ type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TimePicker, decorators: [{
175
175
  type: Component,
176
176
  args: [{ selector: 'mat-time-picker', providers: [{ provide: MatFormFieldControl, useExisting: TimePicker }], host: {
177
177
  '[class.floating]': 'shouldLabelFloat',
@@ -134,8 +134,8 @@ export class TimespanInput {
134
134
  }
135
135
  }
136
136
  TimespanInput.nextId = 0;
137
- TimespanInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TimespanInput, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i1.FormBuilder }, { token: i2.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
138
- TimespanInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: TimespanInput, selector: "bizdoc-timespan-input", inputs: { placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: TimespanInput }], ngImport: i0, template: `<div [formGroup]="parts" class="ts-input-container">
137
+ TimespanInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TimespanInput, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i1.FormBuilder }, { token: i2.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
138
+ TimespanInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: TimespanInput, selector: "bizdoc-timespan-input", inputs: { placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: TimespanInput }], ngImport: i0, template: `<div [formGroup]="parts" class="ts-input-container">
139
139
  <input class="ts-input-element" formControlName="days" size="2" pattern="\\d*" #inp>
140
140
  <span class="ts-input-spacer">{{'DaysPart' | translate}}</span>
141
141
  <input class="ts-input-element" formControlName="hours" size="2" max="24" min="0" pattern="\\d*">
@@ -143,7 +143,7 @@ TimespanInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
143
143
  <input class="ts-input-element" formControlName="minutes" size="2" max="60" min="0" pattern="\\d*">
144
144
  <span class="ts-input-spacer">{{'MinutesPart' | translate}}</span>
145
145
  </div>`, isInline: true, styles: [".ts-input-container{display:flex}.ts-input-element{border:none;background:none;padding:0;outline:none;font:inherit;text-align:center}.ts-input-spacer{opacity:0;font-size:x-small;text-transform:uppercase;transition:opacity .2s}:host.floating .ts-input-spacer{opacity:1}\n"], directives: [{ type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }], pipes: { "translate": i3.TranslatePipe } });
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TimespanInput, decorators: [{
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TimespanInput, decorators: [{
147
147
  type: Component,
148
148
  args: [{
149
149
  selector: 'bizdoc-timespan-input',
@@ -66,9 +66,9 @@ export class DatasourceService {
66
66
  return this.map(type, queryParams).pipe(map(mapToArray));
67
67
  }
68
68
  }
69
- DatasourceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DatasourceService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
70
- DatasourceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DatasourceService, providedIn: 'root' });
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DatasourceService, decorators: [{
69
+ DatasourceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DatasourceService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
70
+ DatasourceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DatasourceService, providedIn: 'root' });
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DatasourceService, decorators: [{
72
72
  type: Injectable,
73
73
  args: [{ providedIn: 'root' }]
74
74
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
@@ -68,30 +68,30 @@ export function playAudio(name) {
68
68
  * @param o1
69
69
  * @param o2
70
70
  */
71
- Object.deepAssign = function (o1, o2) {
71
+ export function deepAssign(o1, o2) {
72
72
  o2 && Object.keys(o2).forEach(p => {
73
- const val = o2[p], val2 = o1[p];
74
- if (val2 === undefined || val2 === null || isPrimitive(val))
75
- o1[p] = val;
76
- else if (isArray(val)) {
77
- if (val.length && !isPrimitive(val[0])) {
78
- for (let i = 0; i < val.length; i++) {
79
- if (val2[i] !== undefined)
80
- Object.deepAssign(val2[i], val[i]);
73
+ const val2 = o2[p], val1 = o1[p];
74
+ if (val1 === undefined || val1 === null || isPrimitive(val2)) // val !== 'object' && !Array.isArray(val)
75
+ o1[p] = val2;
76
+ else if (Array.isArray(val2)) {
77
+ if (val2.length && !isPrimitive(val2[0])) {
78
+ for (let i = 0; i < val2.length; i++) {
79
+ if (val1[i] !== undefined)
80
+ deepAssign(val1[i], val2[i]);
81
81
  else
82
- val2.push(val[i]);
82
+ val1.push(val2[i]);
83
83
  }
84
- val2.splice(val.length);
84
+ val1.splice(val2.length);
85
85
  }
86
86
  else
87
87
  //(val2 as any[]).splice(0, val2.length, ...val);
88
- o1[p] = val;
88
+ o1[p] = val2;
89
89
  }
90
- else if (isObject(val))
91
- Object.deepAssign(val2, val);
90
+ else //if (isObject(val2))
91
+ deepAssign(val1, val2);
92
92
  });
93
93
  return o1;
94
- };
94
+ }
95
95
  function generateEncryptionMap() {
96
96
  const values = {};
97
97
  for (let i = 65; i < 91; i++) {
@@ -151,6 +151,11 @@ Array.prototype.average = function (predicate) {
151
151
  this.forEach(i => average += predicate(i));
152
152
  return average !== 0 ? average / this.length : 0;
153
153
  };
154
+ Array.prototype.distinct = function (predicate) {
155
+ const values = new Set();
156
+ this.forEach(i => values.add(predicate(i)));
157
+ return values;
158
+ };
154
159
  Array.prototype.max = function (predicate) {
155
160
  let n = 0;
156
161
  this.forEach(i => n = Math.max(n, predicate(i)));
@@ -197,4 +202,4 @@ function getParameterByName(name, url = window.location.href) {
197
202
  return '';
198
203
  return decodeURIComponent(results[2].replace(/\+/g, ' '));
199
204
  }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJN0MsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUV6RSxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQTJCO0lBQ3BELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLFdBQW1CO0lBQ3pDLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxNQUFNO0lBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMxRixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxN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SSxDQUFDLE9BQU87UUFBRSxPQUFPLElBQUksQ0FBQztJQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTUFURVJJQUxfUEFMRVRURVMgfSBmcm9tIFwiLi9jb2xvcnNcIjtcclxuXHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgTWF0ZXJpYWxNb2RlID0gNTAgfCAxMDAgfCAyMDAgfCAzMDAgfCA0MDAgfCA1MDAgfCA2MDAgfCA3MDAgfCA4MDAgfCA5MDAgfCAnQTEwMCcgfCAnQTIwMCcgfCAnQTQwMCcgfCAnQTcwMCc7XHJcblxyXG5jb25zdCBJTUFHRV9UWVBFID0gWydpbWFnZS9wbmcnLCAnaW1hZ2UvanBlZycsICdpbWFnZS9qcGcnLCAnaW1hZ2UvZ2lmJ107XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9BcnJheShtYXA6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcclxuICByZXR1cm4gT2JqZWN0LmtleXMobWFwKS5tYXAoayA9PiAoeyBrZXk6IGssIHZhbHVlOiBtYXBba10gfSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNJbWFnZShjb250ZW50VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIElNQUdFX1RZUEUuaW5kZXhPZihjb250ZW50VHlwZSkgPiAtMTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFudXAocGFyYW1zKSB7XHJcbiAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgY29uc3QgdmFsID0gcGFyYW1zW2tdO1xyXG4gICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCB8fCAoaXNBcnJheSh2YWwpICYmICF2YWwubGVuZ3RoKSkgZGVsZXRlIHBhcmFtc1trXVxyXG4gIH0pO1xyXG4gIHJldHVybiBwYXJhbXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvdXRPZkJvdW5kKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgY29uc3QgYm91bmRpbmcgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gIHJldHVybiBib3VuZGluZy50b3AgPCAwIHx8XHJcbiAgICBib3VuZGluZy5sZWZ0IDwgMCB8fFxyXG4gICAgYm91bmRpbmcucmlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHxcclxuICAgIGJvdW5kaW5nLmJvdHRvbSA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbn1cclxuXHJcbmNvbnN0IElTX01PQklMRSA9IC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcclxuZXhwb3J0IGZ1bmN0aW9uIGlzTW9iaWxlKCkge1xyXG4gIHJldHVybiBJU19NT0JJTEUgLyp8fCBkb2N1bWVudC5jb29raWUuaW5kZXhPZignYXJpYT0xJykgPiAtMSovO1xyXG59IGV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbCk6IHZhbCBpcyBGdW5jdGlvbiB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbic7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQm9vbGVhbih2YWwpOiB2YWwgaXMgYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdib29sZWFuJztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XHJcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNQcmltaXRpdmUodmFsKSB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgIT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbCk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZShvYmopOiBvYmogaXMgUHJvbWlzZTxhbnk+IHtcclxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUHJvbWlzZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKHZhbCk6IHZhbCBpcyBEYXRlIHtcclxuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRGF0ZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNBcnJheSh2YWwpOiB2YWwgaXMgQXJyYXk8YW55PiB7XHJcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nIHtcclxuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdmFsIGluc3RhbmNlb2YgU3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Fybihtb2RlOiBNYXRlcmlhbE1vZGUgPSA1MDApIHtcclxuICByZXR1cm4gTUFURVJJQUxfUEFMRVRURVNbJ3JlZCddW21vZGVdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGxheUF1ZGlvKG5hbWU6ICdub3RpZmljYXRpb25fc2ltcGxlLTAxJyB8ICdhbGVydF9lcnJvci0wMycpIHtcclxuICB0cnkge1xyXG4gICAgY29uc3QgYXVkaW8gPSBuZXcgQXVkaW8oKTtcclxuICAgIGF1ZGlvLnNyYyA9IGAvYXNzZXRzL3NvdW5kcy8ke25hbWV9Lm9nZ2A7XHJcbiAgICBhdWRpby5sb2FkKCk7XHJcbiAgICBhdWRpby5wbGF5KCk7XHJcbiAgfSBjYXRjaCAoZSkge1xyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogXHJcbiAqIEBwYXJhbSBvMVxyXG4gKiBAcGFyYW0gbzJcclxuICovXHJcbk9iamVjdC5kZWVwQXNzaWduID0gZnVuY3Rpb24gKG8xLCBvMikge1xyXG4gIG8yICYmIE9iamVjdC5rZXlzKG8yKS5mb3JFYWNoKHAgPT4ge1xyXG4gICAgY29uc3QgdmFsID0gbzJbcF0sIHZhbDIgPSBvMVtwXTtcclxuICAgIGlmICh2YWwyID09PSB1bmRlZmluZWQgfHwgdmFsMiA9PT0gbnVsbCB8fCBpc1ByaW1pdGl2ZSh2YWwpKVxyXG4gICAgICBvMVtwXSA9IHZhbDtcclxuICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSkge1xyXG4gICAgICBpZiAodmFsLmxlbmd0aCAmJiAhaXNQcmltaXRpdmUodmFsWzBdKSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodmFsMltpXSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICBPYmplY3QuZGVlcEFzc2lnbih2YWwyW2ldLCB2YWxbaV0pO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB2YWwyLnB1c2godmFsW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgKHZhbDIgYXMgYW55W10pLnNwbGljZSh2YWwubGVuZ3RoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgLy8odmFsMiBhcyBhbnlbXSkuc3BsaWNlKDAsIHZhbDIubGVuZ3RoLCAuLi52YWwpO1xyXG4gICAgICAgIG8xW3BdID0gdmFsO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QodmFsKSlcclxuICAgICAgT2JqZWN0LmRlZXBBc3NpZ24odmFsMiwgdmFsKTtcclxuICB9KTtcclxuICByZXR1cm4gbzE7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdlbmVyYXRlRW5jcnlwdGlvbk1hcCgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9IHtcclxuICBjb25zdCB2YWx1ZXMgPSB7fTtcclxuICBmb3IgKGxldCBpID0gNjU7IGkgPCA5MTsgaSsrKSB7XHJcbiAgICBjb25zdCBkID0gKGkgLSA2NSkudG9TdHJpbmcoKSxcclxuICAgICAgYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XHJcbiAgICB2YWx1ZXNbZF0gPSBjO1xyXG4gICAgdmFsdWVzW2NdID0gZDtcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IDk3OyBpIDwgMTIzOyBpKyspIHtcclxuICAgIGNvbnN0IGQgPSAoaSAtIDcxKS50b1N0cmluZygpLFxyXG4gICAgICBjID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcclxuICAgIHZhbHVlc1tkXSA9IGM7XHJcbiAgICB2YWx1ZXNbY10gPSBkO1xyXG4gIH1cclxuICByZXR1cm4gdmFsdWVzO1xyXG59XHJcbmNvbnN0IGRlY29kZSA9IGdlbmVyYXRlRW5jcnlwdGlvbk1hcCgpO1xyXG5kZWNsYXJlIGdsb2JhbCB7XHJcbiAgaW50ZXJmYWNlIFN0cmluZyB7XHJcbiAgICBkZWNvZGVJZDogKCkgPT4gbnVtYmVyO1xyXG4gIH1cclxuICBpbnRlcmZhY2UgTnVtYmVyIHtcclxuICAgIGVuY29kZUlkOiAoKSA9PiBzdHJpbmc7XHJcbiAgfVxyXG59XHJcblN0cmluZy5wcm90b3R5cGUuZGVjb2RlSWQgPSBmdW5jdGlvbiAoKTogbnVtYmVyIHtcclxuICBsZXQgdiA9ICcnO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG4gICAgY29uc3QgYyA9IHRoaXMuY2hhckF0KGkpO1xyXG4gICAgdiArPSBkZWNvZGVbY107XHJcbiAgfVxyXG4gIHJldHVybiBwYXJzZUludCh2KTtcclxufTtcclxuTnVtYmVyLnByb3RvdHlwZS5lbmNvZGVJZCA9IGZ1bmN0aW9uICgpOiBzdHJpbmcge1xyXG4gIGxldCB2ID0gJycsXHJcbiAgICBkID0gdGhpcy50b1N0cmluZygpO1xyXG4gIHdoaWxlIChkLmxlbmd0aCA+IDApIHtcclxuICAgIGxldCBpID0gNTEsXHJcbiAgICAgIGMgPSBpLnRvU3RyaW5nKCk7XHJcbiAgICB3aGlsZSAoIWQuc3RhcnRzV2l0aChjKSkge1xyXG4gICAgICAtLWksIGMgPSBpLnRvU3RyaW5nKCk7XHJcbiAgICB9IHYgKz0gZGVjb2RlW2NdO1xyXG4gICAgZCA9IGQuc3Vic3RyaW5nKGMubGVuZ3RoKTtcclxuICB9XHJcbiAgcmV0dXJuIHY7XHJcbn07XHJcblxyXG4vKiogZ2xvYmFsIGV4dGVuZGVkIGFycmF5IGZ1bmN0aW9ucyAqL1xyXG4od2luZG93IGFzIGFueSkuZ2xvYmFsID0gd2luZG93O1xyXG5kZWNsYXJlIGdsb2JhbCB7XHJcbiAgaW50ZXJmYWNlIEFycmF5PFQ+IHtcclxuICAgIHJlbW92ZShpdGVtOiBUKTogVFtdO1xyXG4gICAgbGFzdCgpOiBUO1xyXG4gICAgYXZlcmFnZShwcmVkaWNhdGU6IChpOiBUKSA9PiBudW1iZXIpOiBudW1iZXI7XHJcbiAgICBzdW0ocHJlZGljYXRlOiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyO1xyXG4gICAgbWF4KHByZWRpY2F0ZTogKGk6IFQpID0+IG51bWJlcik6IG51bWJlcjtcclxuICB9XHJcbiAgaW50ZXJmYWNlIFN0cmluZyB7XHJcbiAgICBmb3JtYXRBcmdzKC4uLmFyZ3MpOiBzdHJpbmc7XHJcbiAgICBub3JtYWxpemUoKTogc3RyaW5nO1xyXG4gIH1cclxuICBpbnRlcmZhY2UgT2JqZWN0IHtcclxuICAgIGRlZXBBc3NpZ24odmFsMSwgdmFsMik6IGFueTtcclxuICB9XHJcbn1cclxuU3RyaW5nLnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgcmV0dXJuIHRoaXMucmVwbGFjZSgvIC9nLCAnXycpLnJlcGxhY2UoL1teXFx3XS9nLCAnJykudG9Mb3dlckNhc2UoKTtcclxufVxyXG5cclxuU3RyaW5nLnByb3RvdHlwZS5mb3JtYXRBcmdzID0gZnVuY3Rpb24gKC4uLmFyZ3MpOiBzdHJpbmcge1xyXG4gIHJldHVybiB0aGlzLnJlcGxhY2UoL3soXFxkKyl9L2csIChfLCBpbmRleCkgPT4gYXJnc1tpbmRleF0gfHwgJycpO1xyXG59XHJcbkFycmF5LnByb3RvdHlwZS5sYXN0ID0gZnVuY3Rpb24gKCkge1xyXG4gIHJldHVybiB0aGlzW3RoaXMubGVuZ3RoIC0gMV07XHJcbn1cclxuLyoqIHJlbW92ZSBlbGVtZW50IGZyb20gYXJyYXkgKi9cclxuQXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIDxUPih2YWx1ZTogVCk6IFRbXSB7XHJcbiAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4T2YodmFsdWUpO1xyXG4gIGlmIChpbmRleCA+IC0xKSB0aGlzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgcmV0dXJuIHRoaXM7XHJcbn07XHJcbi8qKiBjYWxjdWxhdGUgYXZlcmFnZSB1c2luZyBlbGVtZW50IHByZWRpY2F0ZSAqL1xyXG5BcnJheS5wcm90b3R5cGUuYXZlcmFnZSA9IGZ1bmN0aW9uIDxUPihwcmVkaWNhdGU/OiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyIHtcclxuICBsZXQgYXZlcmFnZSA9IDA7XHJcbiAgdGhpcy5mb3JFYWNoKGkgPT5cclxuICAgIGF2ZXJhZ2UgKz0gcHJlZGljYXRlKGkpXHJcbiAgKTtcclxuICByZXR1cm4gYXZlcmFnZSAhPT0gMCA/IGF2ZXJhZ2UgLyB0aGlzLmxlbmd0aCA6IDA7XHJcbn1cclxuQXJyYXkucHJvdG90eXBlLm1heCA9IGZ1bmN0aW9uIDxUPihwcmVkaWNhdGU/OiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyIHtcclxuICBsZXQgbiA9IDA7XHJcbiAgdGhpcy5mb3JFYWNoKGkgPT5cclxuICAgIG4gPSBNYXRoLm1heChuLCBwcmVkaWNhdGUoaSkpXHJcbiAgKTtcclxuICByZXR1cm4gbjtcclxufVxyXG4vKiogc3VtIGVsZW1lbnRzIHVzaW5nIHByZWRpY2F0ZSAqL1xyXG5BcnJheS5wcm90b3R5cGUuc3VtID0gZnVuY3Rpb24gPFQ+KHByZWRpY2F0ZT86IChpOiBUKSA9PiBudW1iZXIpOiBudW1iZXIge1xyXG4gIGxldCBuID0gMDtcclxuICB0aGlzLmZvckVhY2goaSA9PlxyXG4gICAgbiArPSBwcmVkaWNhdGUoaSlcclxuICApO1xyXG4gIHJldHVybiBuO1xyXG59XHJcbi8qKlxyXG4gKiBcclxuICogQHBhcmFtIGFyZ3NcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVBhcmFtcyhhcmdzOiBhbnkpIHtcclxuICBjb25zdCBwYXJhbXMgPSB7fTtcclxuICBhcmdzICYmXHJcbiAgICBPYmplY3Qua2V5cyhhcmdzKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICBjb25zdCB2YWwgPSBhcmdzW2tdO1xyXG5cclxuICAgICAgaWYgKHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChpc1N0cmluZyh2YWwpKVxyXG4gICAgICAgICAgcGFyYW1zW2tdID0gdmFsO1xyXG4gICAgICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSAmJiB2YWwubGVuZ3RoKVxyXG4gICAgICAgICAgcGFyYW1zW2tdID0gdmFsO1xyXG4gICAgICAgIGVsc2UgaWYgKGlzRGF0ZSh2YWwpKVxyXG4gICAgICAgICAgcGFyYW1zW2tdID0gdmFsLnRvSlNPTigpO1xyXG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpIHtcclxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh2YWwpLmxlbmd0aCkgcGFyYW1zW2tdID0gcXVlcnlQYXJhbXModmFsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcGFyYW1zW2tdID0gdmFsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICByZXR1cm4gcGFyYW1zO1xyXG59XHJcbmZ1bmN0aW9uIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lLCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZikge1xyXG4gIG5hbWUgPSBuYW1lLnJlcGxhY2UoL1tcXFtcXF1dL2csICdcXFxcJCYnKTtcclxuICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCdbPyZdJyArIG5hbWUgKyAnKD0oW14mI10qKXwmfCN8JCknKSxcclxuICAgIHJlc3VsdHMgPSByZWdleC5leGVjKHVybCk7XHJcbiAgaWYgKCFyZXN1bHRzKSByZXR1cm4gbnVsbDtcclxuICBpZiAoIXJlc3VsdHNbMl0pIHJldHVybiAnJztcclxuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMl0ucmVwbGFjZSgvXFwrL2csICcgJykpO1xyXG59XHJcbiJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJN0MsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUV6RSxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQTJCO0lBQ3BELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLFdBQW1CO0lBQ3pDLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxNQUFNO0lBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMxRixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxN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LENBQUMsSUFBSTtJQUMxRCxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxFQUN6RCxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDM0IsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNQVRFUklBTF9QQUxFVFRFUyB9IGZyb20gXCIuL2NvbG9yc1wiO1xyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBNYXRlcmlhbE1vZGUgPSA1MCB8IDEwMCB8IDIwMCB8IDMwMCB8IDQwMCB8IDUwMCB8IDYwMCB8IDcwMCB8IDgwMCB8IDkwMCB8ICdBMTAwJyB8ICdBMjAwJyB8ICdBNDAwJyB8ICdBNzAwJztcclxuXHJcbmNvbnN0IElNQUdFX1RZUEUgPSBbJ2ltYWdlL3BuZycsICdpbWFnZS9qcGVnJywgJ2ltYWdlL2pwZycsICdpbWFnZS9naWYnXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXBUb0FycmF5KG1hcDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xyXG4gIHJldHVybiBPYmplY3Qua2V5cyhtYXApLm1hcChrID0+ICh7IGtleTogaywgdmFsdWU6IG1hcFtrXSB9KSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0ltYWdlKGNvbnRlbnRUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICByZXR1cm4gSU1BR0VfVFlQRS5pbmRleE9mKGNvbnRlbnRUeXBlKSA+IC0xO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2xlYW51cChwYXJhbXMpIHtcclxuICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goayA9PiB7XHJcbiAgICBjb25zdCB2YWwgPSBwYXJhbXNba107XHJcbiAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8IChpc0FycmF5KHZhbCkgJiYgIXZhbC5sZW5ndGgpKSBkZWxldGUgcGFyYW1zW2tdXHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBhcmFtcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG91dE9mQm91bmQoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcclxuICBjb25zdCBib3VuZGluZyA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgcmV0dXJuIGJvdW5kaW5nLnRvcCA8IDAgfHxcclxuICAgIGJvdW5kaW5nLmxlZnQgPCAwIHx8XHJcbiAgICBib3VuZGluZy5yaWdodCA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fFxyXG4gICAgYm91bmRpbmcuYm90dG9tID4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcclxufVxyXG5cclxuY29uc3QgSVNfTU9CSUxFID0gL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xyXG5leHBvcnQgZnVuY3Rpb24gaXNNb2JpbGUoKSB7XHJcbiAgcmV0dXJuIElTX01PQklMRSAvKnx8IGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKCdhcmlhPTEnKSA+IC0xKi87XHJcbn0gZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKTogdmFsIGlzIEZ1bmN0aW9uIHtcclxuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbCk6IHZhbCBpcyBib29sZWFuIHtcclxuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2YWwpIHtcclxuICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc1ByaW1pdGl2ZSh2YWwpIHtcclxuICByZXR1cm4gdHlwZW9mIHZhbCAhPT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9taXNlKG9iaik6IG9iaiBpcyBQcm9taXNlPGFueT4ge1xyXG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBQcm9taXNlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGUodmFsKTogdmFsIGlzIERhdGUge1xyXG4gIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEYXRlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc0FycmF5KHZhbCk6IHZhbCBpcyBBcnJheTxhbnk+IHtcclxuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWw6IGFueSk6IHZhbCBpcyBzdHJpbmcge1xyXG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB2YWwgaW5zdGFuY2VvZiBTdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRXYXJuKG1vZGU6IE1hdGVyaWFsTW9kZSA9IDUwMCkge1xyXG4gIHJldHVybiBNQVRFUklBTF9QQUxFVFRFU1sncmVkJ11bbW9kZV07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwbGF5QXVkaW8obmFtZTogJ25vdGlmaWNhdGlvbl9zaW1wbGUtMDEnIHwgJ2FsZXJ0X2Vycm9yLTAzJykge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBhdWRpbyA9IG5ldyBBdWRpbygpO1xyXG4gICAgYXVkaW8uc3JjID0gYC9hc3NldHMvc291bmRzLyR7bmFtZX0ub2dnYDtcclxuICAgIGF1ZGlvLmxvYWQoKTtcclxuICAgIGF1ZGlvLnBsYXkoKTtcclxuICB9IGNhdGNoIChlKSB7XHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBcclxuICogQHBhcmFtIG8xXHJcbiAqIEBwYXJhbSBvMlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBBc3NpZ24obzEsIG8yKSB7XHJcbiAgbzIgJiYgT2JqZWN0LmtleXMobzIpLmZvckVhY2gocCA9PiB7XHJcbiAgICBjb25zdCB2YWwyID0gbzJbcF0sIHZhbDEgPSBvMVtwXTtcclxuICAgIGlmICh2YWwxID09PSB1bmRlZmluZWQgfHwgdmFsMSA9PT0gbnVsbCB8fCBpc1ByaW1pdGl2ZSh2YWwyKSkgLy8gdmFsICE9PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpXHJcbiAgICAgIG8xW3BdID0gdmFsMjtcclxuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsMikpIHtcclxuICAgICAgaWYgKHZhbDIubGVuZ3RoICYmICFpc1ByaW1pdGl2ZSh2YWwyWzBdKSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsMi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHZhbDFbaV0gIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgZGVlcEFzc2lnbih2YWwxW2ldLCB2YWwyW2ldKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdmFsMS5wdXNoKHZhbDJbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAodmFsMSBhcyBhbnlbXSkuc3BsaWNlKHZhbDIubGVuZ3RoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgLy8odmFsMiBhcyBhbnlbXSkuc3BsaWNlKDAsIHZhbDIubGVuZ3RoLCAuLi52YWwpO1xyXG4gICAgICAgIG8xW3BdID0gdmFsMjtcclxuICAgIH1cclxuICAgIGVsc2UgLy9pZiAoaXNPYmplY3QodmFsMikpXHJcbiAgICAgIGRlZXBBc3NpZ24odmFsMSwgdmFsMik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG8xO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZW5lcmF0ZUVuY3J5cHRpb25NYXAoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSB7XHJcbiAgY29uc3QgdmFsdWVzID0ge307XHJcbiAgZm9yIChsZXQgaSA9IDY1OyBpIDwgOTE7IGkrKykge1xyXG4gICAgY29uc3QgZCA9IChpIC0gNjUpLnRvU3RyaW5nKCksXHJcbiAgICAgIGMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpO1xyXG4gICAgdmFsdWVzW2RdID0gYztcclxuICAgIHZhbHVlc1tjXSA9IGQ7XHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSA5NzsgaSA8IDEyMzsgaSsrKSB7XHJcbiAgICBjb25zdCBkID0gKGkgLSA3MSkudG9TdHJpbmcoKSxcclxuICAgICAgYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XHJcbiAgICB2YWx1ZXNbZF0gPSBjO1xyXG4gICAgdmFsdWVzW2NdID0gZDtcclxuICB9XHJcbiAgcmV0dXJuIHZhbHVlcztcclxufVxyXG5jb25zdCBkZWNvZGUgPSBnZW5lcmF0ZUVuY3J5cHRpb25NYXAoKTtcclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIGludGVyZmFjZSBTdHJpbmcge1xyXG4gICAgZGVjb2RlSWQ6ICgpID0+IG51bWJlcjtcclxuICB9XHJcbiAgaW50ZXJmYWNlIE51bWJlciB7XHJcbiAgICBlbmNvZGVJZDogKCkgPT4gc3RyaW5nO1xyXG4gIH1cclxufVxyXG5TdHJpbmcucHJvdG90eXBlLmRlY29kZUlkID0gZnVuY3Rpb24gKCk6IG51bWJlciB7XHJcbiAgbGV0IHYgPSAnJztcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGNvbnN0IGMgPSB0aGlzLmNoYXJBdChpKTtcclxuICAgIHYgKz0gZGVjb2RlW2NdO1xyXG4gIH1cclxuICByZXR1cm4gcGFyc2VJbnQodik7XHJcbn07XHJcbk51bWJlci5wcm90b3R5cGUuZW5jb2RlSWQgPSBmdW5jdGlvbiAoKTogc3RyaW5nIHtcclxuICBsZXQgdiA9ICcnLFxyXG4gICAgZCA9IHRoaXMudG9TdHJpbmcoKTtcclxuICB3aGlsZSAoZC5sZW5ndGggPiAwKSB7XHJcbiAgICBsZXQgaSA9IDUxLFxyXG4gICAgICBjID0gaS50b1N0cmluZygpO1xyXG4gICAgd2hpbGUgKCFkLnN0YXJ0c1dpdGgoYykpIHtcclxuICAgICAgLS1pLCBjID0gaS50b1N0cmluZygpO1xyXG4gICAgfSB2ICs9IGRlY29kZVtjXTtcclxuICAgIGQgPSBkLnN1YnN0cmluZyhjLmxlbmd0aCk7XHJcbiAgfVxyXG4gIHJldHVybiB2O1xyXG59O1xyXG5cclxuLyoqIGdsb2JhbCBleHRlbmRlZCBhcnJheSBmdW5jdGlvbnMgKi9cclxuKHdpbmRvdyBhcyBhbnkpLmdsb2JhbCA9IHdpbmRvdztcclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIGludGVyZmFjZSBBcnJheTxUPiB7XHJcbiAgICByZW1vdmUoaXRlbTogVCk6IFRbXTtcclxuICAgIGxhc3QoKTogVDtcclxuICAgIGF2ZXJhZ2UocHJlZGljYXRlOiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyO1xyXG4gICAgZGlzdGluY3Q8TT4ocHJlZGljYXRlOiAoaTogVCkgPT4gTSk6IFNldDxNPjtcclxuICAgIHN1bShwcmVkaWNhdGU6IChpOiBUKSA9PiBudW1iZXIpOiBudW1iZXI7XHJcbiAgICBtYXgocHJlZGljYXRlOiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyO1xyXG4gIH1cclxuICBpbnRlcmZhY2UgU3RyaW5nIHtcclxuICAgIGZvcm1hdEFyZ3MoLi4uYXJncyk6IHN0cmluZztcclxuICAgIG5vcm1hbGl6ZSgpOiBzdHJpbmc7XHJcbiAgfVxyXG59XHJcblN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gKCkge1xyXG4gIHJldHVybiB0aGlzLnJlcGxhY2UoLyAvZywgJ18nKS5yZXBsYWNlKC9bXlxcd10vZywgJycpLnRvTG93ZXJDYXNlKCk7XHJcbn1cclxuXHJcblN0cmluZy5wcm90b3R5cGUuZm9ybWF0QXJncyA9IGZ1bmN0aW9uICguLi5hcmdzKTogc3RyaW5nIHtcclxuICByZXR1cm4gdGhpcy5yZXBsYWNlKC97KFxcZCspfS9nLCAoXywgaW5kZXgpID0+IGFyZ3NbaW5kZXhdIHx8ICcnKTtcclxufVxyXG5BcnJheS5wcm90b3R5cGUubGFzdCA9IGZ1bmN0aW9uICgpIHtcclxuICByZXR1cm4gdGhpc1t0aGlzLmxlbmd0aCAtIDFdO1xyXG59XHJcbi8qKiByZW1vdmUgZWxlbWVudCBmcm9tIGFycmF5ICovXHJcbkFycmF5LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiA8VD4odmFsdWU6IFQpOiBUW10ge1xyXG4gIGNvbnN0IGluZGV4ID0gdGhpcy5pbmRleE9mKHZhbHVlKTtcclxuICBpZiAoaW5kZXggPiAtMSkgdGhpcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIHJldHVybiB0aGlzO1xyXG59O1xyXG4vKiogY2FsY3VsYXRlIGF2ZXJhZ2UgdXNpbmcgZWxlbWVudCBwcmVkaWNhdGUgKi9cclxuQXJyYXkucHJvdG90eXBlLmF2ZXJhZ2UgPSBmdW5jdGlvbiA8VD4ocHJlZGljYXRlPzogKGk6IFQpID0+IG51bWJlcik6IG51bWJlciB7XHJcbiAgbGV0IGF2ZXJhZ2UgPSAwO1xyXG4gIHRoaXMuZm9yRWFjaChpID0+XHJcbiAgICBhdmVyYWdlICs9IHByZWRpY2F0ZShpKVxyXG4gICk7XHJcbiAgcmV0dXJuIGF2ZXJhZ2UgIT09IDAgPyBhdmVyYWdlIC8gdGhpcy5sZW5ndGggOiAwO1xyXG59XHJcbkFycmF5LnByb3RvdHlwZS5kaXN0aW5jdCA9IGZ1bmN0aW9uIDxULCBNPihwcmVkaWNhdGU/OiAoaTogVCkgPT4gTSk6IFNldDxNPiB7XHJcbiAgY29uc3QgdmFsdWVzID0gbmV3IFNldDxNPigpO1xyXG4gIHRoaXMuZm9yRWFjaChpID0+XHJcbiAgICB2YWx1ZXMuYWRkKHByZWRpY2F0ZShpKSlcclxuICApO1xyXG4gIHJldHVybiB2YWx1ZXM7XHJcbn1cclxuQXJyYXkucHJvdG90eXBlLm1heCA9IGZ1bmN0aW9uIDxUPihwcmVkaWNhdGU/OiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyIHtcclxuICBsZXQgbiA9IDA7XHJcbiAgdGhpcy5mb3JFYWNoKGkgPT5cclxuICAgIG4gPSBNYXRoLm1heChuLCBwcmVkaWNhdGUoaSkpXHJcbiAgKTtcclxuICByZXR1cm4gbjtcclxufVxyXG4vKiogc3VtIGVsZW1lbnRzIHVzaW5nIHByZWRpY2F0ZSAqL1xyXG5BcnJheS5wcm90b3R5cGUuc3VtID0gZnVuY3Rpb24gPFQ+KHByZWRpY2F0ZT86IChpOiBUKSA9PiBudW1iZXIpOiBudW1iZXIge1xyXG4gIGxldCBuID0gMDtcclxuICB0aGlzLmZvckVhY2goaSA9PlxyXG4gICAgbiArPSBwcmVkaWNhdGUoaSlcclxuICApO1xyXG4gIHJldHVybiBuO1xyXG59XHJcbi8qKlxyXG4gKiBcclxuICogQHBhcmFtIGFyZ3NcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVBhcmFtcyhhcmdzOiBhbnkpIHtcclxuICBjb25zdCBwYXJhbXMgPSB7fTtcclxuICBhcmdzICYmXHJcbiAgICBPYmplY3Qua2V5cyhhcmdzKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICBjb25zdCB2YWwgPSBhcmdzW2tdO1xyXG5cclxuICAgICAgaWYgKHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChpc1N0cmluZyh2YWwpKVxyXG4gICAgICAgICAgcGFyYW1zW2tdID0gdmFsO1xyXG4gICAgICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSAmJiB2YWwubGVuZ3RoKVxyXG4gICAgICAgICAgcGFyYW1zW2tdID0gdmFsO1xyXG4gICAgICAgIGVsc2UgaWYgKGlzRGF0ZSh2YWwpKVxyXG4gICAgICAgICAgcGFyYW1zW2tdID0gdmFsLnRvSlNPTigpO1xyXG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpIHtcclxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh2YWwpLmxlbmd0aCkgcGFyYW1zW2tdID0gcXVlcnlQYXJhbXModmFsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcGFyYW1zW2tdID0gdmFsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICByZXR1cm4gcGFyYW1zO1xyXG59XHJcbmZ1bmN0aW9uIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lLCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZikge1xyXG4gIG5hbWUgPSBuYW1lLnJlcGxhY2UoL1tcXFtcXF1dL2csICdcXFxcJCYnKTtcclxuICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCdbPyZdJyArIG5hbWUgKyAnKD0oW14mI10qKXwmfCN8JCknKSxcclxuICAgIHJlc3VsdHMgPSByZWdleC5leGVjKHVybCk7XHJcbiAgaWYgKCFyZXN1bHRzKSByZXR1cm4gbnVsbDtcclxuICBpZiAoIXJlc3VsdHNbMl0pIHJldHVybiAnJztcclxuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMl0ucmVwbGFjZSgvXFwrL2csICcgJykpO1xyXG59XHJcbiJdfQ==