@bizdoc/core 1.16.31 → 1.16.32

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 (711) hide show
  1. package/assets/themes/brown.min.css +1 -1
  2. package/assets/themes/dark.min.css +7 -2
  3. package/assets/themes/deep-purple-light-blue.min.css +1 -1
  4. package/assets/themes/deep-purple-teal.min.css +1 -1
  5. package/assets/themes/default.min.css +1 -1
  6. package/assets/themes/green.min.css +1 -1
  7. package/assets/themes/indigo.min.css +1 -1
  8. package/bizdoc-core.d.ts.map +1 -0
  9. package/esm2020/lib/admin/admin-dismiss.service.mjs +4 -4
  10. package/esm2020/lib/admin/admin-menu.component.mjs +4 -4
  11. package/esm2020/lib/admin/configuration-designer/cube-axes-filter.component.mjs +4 -4
  12. package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +13 -13
  13. package/esm2020/lib/admin/configuration-designer/designer-privileges.component.mjs +4 -4
  14. package/esm2020/lib/admin/configuration-designer/designer.base.mjs +10 -10
  15. package/esm2020/lib/admin/configuration-designer/designer.component.mjs +7 -6
  16. package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +4 -4
  17. package/esm2020/lib/admin/configuration-designer/elements/analysis-view.component.mjs +4 -4
  18. package/esm2020/lib/admin/configuration-designer/elements/analysis-widget.component.mjs +4 -4
  19. package/esm2020/lib/admin/configuration-designer/elements/anomaly-rule.component.mjs +4 -4
  20. package/esm2020/lib/admin/configuration-designer/elements/box-form.component.mjs +4 -4
  21. package/esm2020/lib/admin/configuration-designer/elements/configuration-datasource.component.mjs +4 -4
  22. package/esm2020/lib/admin/configuration-designer/elements/cube-index-utility.component.mjs +4 -4
  23. package/esm2020/lib/admin/configuration-designer/elements/cube-view.component.mjs +4 -4
  24. package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +4 -4
  25. package/esm2020/lib/admin/configuration-designer/elements/documents-report.component.mjs +4 -4
  26. package/esm2020/lib/admin/configuration-designer/elements/documents-widget.component.mjs +4 -4
  27. package/esm2020/lib/admin/configuration-designer/elements/explore-view.component.mjs +4 -4
  28. package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +4 -4
  29. package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +4 -4
  30. package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +4 -4
  31. package/esm2020/lib/admin/configuration-designer/elements/matrix-view.component.mjs +4 -4
  32. package/esm2020/lib/admin/configuration-designer/elements/node.component.mjs +4 -4
  33. package/esm2020/lib/admin/configuration-designer/elements/parallel-view.component.mjs +4 -4
  34. package/esm2020/lib/admin/configuration-designer/elements/performance-widget.component.mjs +4 -4
  35. package/esm2020/lib/admin/configuration-designer/elements/pivot-view.component.mjs +4 -4
  36. package/esm2020/lib/admin/configuration-designer/elements/policy.component.mjs +4 -4
  37. package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +4 -4
  38. package/esm2020/lib/admin/configuration-designer/elements/return-to-role-action.component.mjs +4 -4
  39. package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +4 -4
  40. package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +4 -4
  41. package/esm2020/lib/admin/configuration-designer/elements/state.component.mjs +4 -4
  42. package/esm2020/lib/admin/configuration-designer/elements/sum-view.component.mjs +4 -4
  43. package/esm2020/lib/admin/configuration-designer/elements/tasks-report.component.mjs +4 -4
  44. package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +4 -4
  45. package/esm2020/lib/admin/configuration-designer/elements/usage-report.component.mjs +4 -4
  46. package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +4 -4
  47. package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +4 -4
  48. package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +4 -4
  49. package/esm2020/lib/admin/configuration-designer/icon-picker.component.mjs +4 -4
  50. package/esm2020/lib/admin/core/ace.input.mjs +4 -4
  51. package/esm2020/lib/admin/core/color-picker.input.mjs +4 -4
  52. package/esm2020/lib/admin/core/search.input.mjs +4 -4
  53. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +4 -4
  54. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +5 -5
  55. package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +4 -4
  56. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +4 -4
  57. package/esm2020/lib/admin/form/designer/designer.component.mjs +4 -4
  58. package/esm2020/lib/admin/form/form.resolve.service.mjs +4 -4
  59. package/esm2020/lib/admin/form/workflow/node.component.mjs +4 -4
  60. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +4 -4
  61. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +4 -4
  62. package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +4 -4
  63. package/esm2020/lib/admin/localized-string.component.mjs +4 -4
  64. package/esm2020/lib/admin/patterns/patterns.component.mjs +4 -4
  65. package/esm2020/lib/admin/permissions/permissions.component.mjs +4 -4
  66. package/esm2020/lib/admin/positions/positions-popup.component.mjs +4 -4
  67. package/esm2020/lib/admin/positions/positions.component.mjs +4 -4
  68. package/esm2020/lib/admin/profiler/outofoffice.component.mjs +4 -4
  69. package/esm2020/lib/admin/profiler/profiler.component.mjs +4 -4
  70. package/esm2020/lib/admin/system.service.mjs +8 -5
  71. package/esm2020/lib/admin/utility-wrapper.component.mjs +4 -4
  72. package/esm2020/lib/admin/utility.pane.component.mjs +4 -4
  73. package/esm2020/lib/app.component.mjs +7 -7
  74. package/esm2020/lib/bizdoc.module.mjs +5 -5
  75. package/esm2020/lib/browse/browse-items.component.mjs +4 -4
  76. package/esm2020/lib/browse/browse.mobile.component.mjs +4 -4
  77. package/esm2020/lib/browse/browse.pane.component.mjs +4 -4
  78. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +4 -4
  79. package/esm2020/lib/browse/filter/filter.component.mjs +4 -4
  80. package/esm2020/lib/browse/folders-menu.component.mjs +4 -4
  81. package/esm2020/lib/chat/chat-info.mjs +4 -4
  82. package/esm2020/lib/chat/chat.mobile.component.mjs +4 -4
  83. package/esm2020/lib/chat/chat.service.mjs +4 -4
  84. package/esm2020/lib/chat/contacts.component.mjs +7 -7
  85. package/esm2020/lib/chat/contacts.pane.component.mjs +4 -4
  86. package/esm2020/lib/chat/conversation.component.mjs +4 -4
  87. package/esm2020/lib/chat/conversation.pane.component.mjs +4 -4
  88. package/esm2020/lib/compose/action/action-picker.component.mjs +4 -4
  89. package/esm2020/lib/compose/action/action.dialog.mjs +4 -4
  90. package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +4 -4
  91. package/esm2020/lib/compose/action/assign-action.component.mjs +4 -4
  92. package/esm2020/lib/compose/action/moveto-action.component.mjs +4 -4
  93. package/esm2020/lib/compose/action/return-action.component.mjs +4 -4
  94. package/esm2020/lib/compose/attachments/attachments.component.mjs +4 -4
  95. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +4 -4
  96. package/esm2020/lib/compose/attachments/progress-button.directive.mjs +4 -4
  97. package/esm2020/lib/compose/box/box.component.mjs +4 -4
  98. package/esm2020/lib/compose/can-deactivate-changes.service.mjs +4 -4
  99. package/esm2020/lib/compose/comments/comment.component.mjs +4 -4
  100. package/esm2020/lib/compose/comments/comments.component.mjs +4 -4
  101. package/esm2020/lib/compose/comments/comments.pane.component.mjs +4 -4
  102. package/esm2020/lib/compose/comments/edit-comment.component.mjs +4 -4
  103. package/esm2020/lib/compose/comments/edits.component.mjs +4 -4
  104. package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +4 -4
  105. package/esm2020/lib/compose/comments/votes.component.mjs +4 -4
  106. package/esm2020/lib/compose/compose-resolve.service.mjs +7 -7
  107. package/esm2020/lib/compose/compose.mobile.component.mjs +4 -4
  108. package/esm2020/lib/compose/compose.pane.component.mjs +4 -4
  109. package/esm2020/lib/compose/copy/copy.dialog.mjs +4 -4
  110. package/esm2020/lib/compose/dismiss.service.mjs +4 -4
  111. package/esm2020/lib/compose/document-resolver.service.mjs +4 -4
  112. package/esm2020/lib/compose/document.component.mjs +4 -4
  113. package/esm2020/lib/compose/document.mobile.component.mjs +4 -4
  114. package/esm2020/lib/compose/document.pane.component.mjs +4 -4
  115. package/esm2020/lib/compose/events/events.component.mjs +4 -4
  116. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +4 -4
  117. package/esm2020/lib/compose/form.component.mjs +4 -4
  118. package/esm2020/lib/compose/new-menu.component.mjs +4 -4
  119. package/esm2020/lib/compose/privilage.directive.mjs +7 -7
  120. package/esm2020/lib/compose/recipient-resolver.service.mjs +4 -4
  121. package/esm2020/lib/compose/state.component.mjs +4 -4
  122. package/esm2020/lib/compose/tag/tags.component.mjs +4 -4
  123. package/esm2020/lib/compose/trace/flow.component.mjs +4 -4
  124. package/esm2020/lib/compose/trace/people.component.mjs +4 -4
  125. package/esm2020/lib/compose/trace/trace.base.mjs +4 -4
  126. package/esm2020/lib/compose/trace/trace.component.mjs +4 -4
  127. package/esm2020/lib/compose/trace/trace.pane.component.mjs +4 -4
  128. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +4 -4
  129. package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +10 -10
  130. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +4 -4
  131. package/esm2020/lib/core/NgComponentOutlet.mjs +4 -4
  132. package/esm2020/lib/core/account.service.mjs +4 -4
  133. package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +4 -4
  134. package/esm2020/lib/core/avatar/avatar.component.mjs +4 -4
  135. package/esm2020/lib/core/component-factory-resolver.mjs +4 -4
  136. package/esm2020/lib/core/controls/address.input.mjs +4 -4
  137. package/esm2020/lib/core/controls/auto-complete.input.mjs +4 -4
  138. package/esm2020/lib/core/controls/combination-picker-body.mjs +4 -4
  139. package/esm2020/lib/core/controls/combination-picker.mjs +4 -4
  140. package/esm2020/lib/core/controls/combination-pool.mjs +4 -4
  141. package/esm2020/lib/core/controls/file.input.mjs +4 -4
  142. package/esm2020/lib/core/controls/select.input.mjs +4 -4
  143. package/esm2020/lib/core/controls/signature.input.mjs +4 -4
  144. package/esm2020/lib/core/controls/time-picker.mjs +4 -4
  145. package/esm2020/lib/core/controls/timespan.input.mjs +4 -4
  146. package/esm2020/lib/core/datasource.service.mjs +4 -4
  147. package/esm2020/lib/core/guide/guide.component.mjs +4 -4
  148. package/esm2020/lib/core/guide/guide.service.mjs +4 -4
  149. package/esm2020/lib/core/guide/help-tip.component.mjs +4 -4
  150. package/esm2020/lib/core/http.interceptor.mjs +4 -4
  151. package/esm2020/lib/core/hub.service.mjs +4 -4
  152. package/esm2020/lib/core/identity/identity.component.mjs +4 -4
  153. package/esm2020/lib/core/info/attachment-info.service.mjs +4 -4
  154. package/esm2020/lib/core/info/document-info.service.mjs +4 -4
  155. package/esm2020/lib/core/info/location-info.component.mjs +4 -4
  156. package/esm2020/lib/core/info/map-info.mjs +4 -4
  157. package/esm2020/lib/core/layout/autocomplete.field.mjs +4 -4
  158. package/esm2020/lib/core/layout/checkbox.field.mjs +4 -4
  159. package/esm2020/lib/core/layout/checkbox.mjs +4 -4
  160. package/esm2020/lib/core/layout/date-range.field.mjs +4 -4
  161. package/esm2020/lib/core/layout/date.field.mjs +4 -4
  162. package/esm2020/lib/core/layout/expression.field.mjs +4 -4
  163. package/esm2020/lib/core/layout/file.field.mjs +4 -4
  164. package/esm2020/lib/core/layout/html.field.mjs +4 -4
  165. package/esm2020/lib/core/layout/input.base.mjs +4 -4
  166. package/esm2020/lib/core/layout/input.field.mjs +4 -4
  167. package/esm2020/lib/core/layout/layout.component.mjs +4 -4
  168. package/esm2020/lib/core/layout/numeric.field.mjs +4 -4
  169. package/esm2020/lib/core/layout/select.field.mjs +4 -4
  170. package/esm2020/lib/core/layout/switch.field.mjs +4 -4
  171. package/esm2020/lib/core/layout/textarea.field.mjs +4 -4
  172. package/esm2020/lib/core/layout/timespan.field.mjs +4 -4
  173. package/esm2020/lib/core/lottie-animation.mjs +4 -4
  174. package/esm2020/lib/core/mailbox.service.mjs +4 -4
  175. package/esm2020/lib/core/none.component.mjs +4 -4
  176. package/esm2020/lib/core/pipes/action.pipe.mjs +4 -4
  177. package/esm2020/lib/core/pipes/calendar.pipe.mjs +4 -4
  178. package/esm2020/lib/core/pipes/date-format.pipe.mjs +4 -4
  179. package/esm2020/lib/core/pipes/daterange.pipe.mjs +7 -7
  180. package/esm2020/lib/core/pipes/difference.pipe.mjs +4 -4
  181. package/esm2020/lib/core/pipes/duration-format.pipe.mjs +4 -4
  182. package/esm2020/lib/core/pipes/duration.pipe.mjs +4 -4
  183. package/esm2020/lib/core/pipes/form.pipe.mjs +4 -4
  184. package/esm2020/lib/core/pipes/join.pipe.mjs +4 -4
  185. package/esm2020/lib/core/pipes/localized-string.pipe.mjs +4 -4
  186. package/esm2020/lib/core/pipes/role.pipe.mjs +4 -4
  187. package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +4 -4
  188. package/esm2020/lib/core/pipes/sort.pipe.mjs +7 -7
  189. package/esm2020/lib/core/pipes/state.pipe.mjs +4 -4
  190. package/esm2020/lib/core/pipes/time-ago.pipe.mjs +7 -7
  191. package/esm2020/lib/core/pipes/translate.pipe.mjs +7 -7
  192. package/esm2020/lib/core/pipes/type-value.pipe.mjs +4 -4
  193. package/esm2020/lib/core/pipes/user-name.pipe.mjs +4 -4
  194. package/esm2020/lib/core/popup/popup.component.mjs +4 -4
  195. package/esm2020/lib/core/popup/popup.service.mjs +4 -4
  196. package/esm2020/lib/core/popup/tooltip.directive.mjs +7 -7
  197. package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +4 -4
  198. package/esm2020/lib/core/prompt/mask/mask.component.mjs +4 -4
  199. package/esm2020/lib/core/prompt.service.mjs +4 -4
  200. package/esm2020/lib/core/router.mjs +7 -7
  201. package/esm2020/lib/core/save-changes.dialog.mjs +4 -4
  202. package/esm2020/lib/core/session.service.mjs +4 -4
  203. package/esm2020/lib/core/slots/router.directive.mjs +4 -4
  204. package/esm2020/lib/core/slots/router.service.mjs +4 -4
  205. package/esm2020/lib/core/slots/slots.component.mjs +4 -4
  206. package/esm2020/lib/core/tagging/documents.component.mjs +4 -4
  207. package/esm2020/lib/core/tagging/edit-input.component.mjs +4 -4
  208. package/esm2020/lib/core/tagging/emoji.component.mjs +4 -4
  209. package/esm2020/lib/core/tagging/tagging-item.directive.mjs +4 -4
  210. package/esm2020/lib/core/tagging/tagging.component-base.mjs +4 -4
  211. package/esm2020/lib/core/tagging/tagging.directive.mjs +4 -4
  212. package/esm2020/lib/core/tagging/tagging.pipe.mjs +4 -4
  213. package/esm2020/lib/core/tagging/users.component.mjs +4 -4
  214. package/esm2020/lib/core/translate.service.mjs +4 -4
  215. package/esm2020/lib/core/window-title.service.mjs +4 -4
  216. package/esm2020/lib/cube/accum/accum.component.mjs +4 -4
  217. package/esm2020/lib/cube/chart/chart.component.mjs +4 -4
  218. package/esm2020/lib/cube/cube-info.service.mjs +4 -4
  219. package/esm2020/lib/cube/cube-menu.component.mjs +4 -4
  220. package/esm2020/lib/cube/cube-view.component.mjs +4 -4
  221. package/esm2020/lib/cube/cube.service.mjs +4 -4
  222. package/esm2020/lib/cube/explore/document-item.component.mjs +4 -4
  223. package/esm2020/lib/cube/explore/explore-item.component.mjs +4 -4
  224. package/esm2020/lib/cube/explore/explore-items.component.mjs +4 -4
  225. package/esm2020/lib/cube/explore/explore.pane.component.mjs +4 -4
  226. package/esm2020/lib/cube/explore/item-resolver.service.mjs +7 -7
  227. package/esm2020/lib/cube/explore/item.pane.component.mjs +4 -4
  228. package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +4 -4
  229. package/esm2020/lib/cube/filter/filter.component.mjs +4 -4
  230. package/esm2020/lib/cube/grid/grid.component.mjs +4 -4
  231. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +4 -4
  232. package/esm2020/lib/cube/matrix/matrix.base.mjs +4 -4
  233. package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +4 -4
  234. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +4 -4
  235. package/esm2020/lib/cube/matrix/popup.component.mjs +4 -4
  236. package/esm2020/lib/cube/matrix/table.component.mjs +4 -4
  237. package/esm2020/lib/cube/parallel/parallel.component.mjs +4 -4
  238. package/esm2020/lib/cube/pivot/pivot.component.mjs +4 -4
  239. package/esm2020/lib/cube/sum/sum.component.mjs +4 -4
  240. package/esm2020/lib/cube/view-base.mjs +4 -4
  241. package/esm2020/lib/cube/view.mobile.component.mjs +4 -4
  242. package/esm2020/lib/cube/view.pane.component.mjs +4 -4
  243. package/esm2020/lib/dashboard/actions/actions.widget.mjs +4 -4
  244. package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +4 -4
  245. package/esm2020/lib/dashboard/cube/compare.widget.mjs +4 -4
  246. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +4 -4
  247. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +4 -4
  248. package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +4 -4
  249. package/esm2020/lib/dashboard/cube/documents.widget.mjs +4 -4
  250. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +4 -4
  251. package/esm2020/lib/dashboard/dashboard.component.mjs +4 -4
  252. package/esm2020/lib/dashboard/dashboard.pane.component.mjs +4 -4
  253. package/esm2020/lib/dashboard/recents/recents.widget.mjs +4 -4
  254. package/esm2020/lib/dashboard/score/activity.widget.mjs +4 -4
  255. package/esm2020/lib/dashboard/score/compare-groups.widget.mjs +4 -4
  256. package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +4 -4
  257. package/esm2020/lib/dashboard/score/pending-results.widget.mjs +4 -4
  258. package/esm2020/lib/dashboard/score/personal-score.widget.mjs +4 -4
  259. package/esm2020/lib/dashboard/widget-item.component.mjs +4 -4
  260. package/esm2020/lib/desktop.module.mjs +5 -5
  261. package/esm2020/lib/home/about/about.dialog.mjs +4 -4
  262. package/esm2020/lib/home/home-base.component.mjs +4 -4
  263. package/esm2020/lib/home/home.desktop.component.mjs +4 -4
  264. package/esm2020/lib/home/home.mobile.component.mjs +4 -4
  265. package/esm2020/lib/home/notifications/notifications.component.mjs +4 -4
  266. package/esm2020/lib/home/options/options.component.mjs +4 -4
  267. package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +4 -4
  268. package/esm2020/lib/home/sign/sign.component.mjs +4 -4
  269. package/esm2020/lib/home/tools.component.mjs +4 -4
  270. package/esm2020/lib/impersonate/impersonate.component.mjs +4 -4
  271. package/esm2020/lib/mobile.module.mjs +5 -5
  272. package/esm2020/lib/modules/chart.module.mjs +5 -5
  273. package/esm2020/lib/modules/circular-gauge.module.mjs +5 -5
  274. package/esm2020/lib/modules/datepicker.intl.mjs +4 -4
  275. package/esm2020/lib/modules/dayjs.module.mjs +5 -5
  276. package/esm2020/lib/modules/diagram.module.mjs +5 -5
  277. package/esm2020/lib/modules/gantt.module.mjs +5 -5
  278. package/esm2020/lib/modules/grid.module.mjs +5 -5
  279. package/esm2020/lib/modules/material.module.mjs +5 -5
  280. package/esm2020/lib/modules/paginator.intl.mjs +4 -4
  281. package/esm2020/lib/modules/pivot.module.mjs +5 -5
  282. package/esm2020/lib/modules/schedule.module.mjs +5 -5
  283. package/esm2020/lib/modules/spreadsheet.module.mjs +5 -5
  284. package/esm2020/lib/modules/stepper.intl.mjs +4 -4
  285. package/esm2020/lib/modules/texteditor.module.mjs +5 -5
  286. package/esm2020/lib/notifications/filter.component.mjs +4 -4
  287. package/esm2020/lib/notifications/notifications-table.component.mjs +4 -4
  288. package/esm2020/lib/notifications/notifications.mobile.component.mjs +4 -4
  289. package/esm2020/lib/notifications/notifications.pane.component.mjs +4 -4
  290. package/esm2020/lib/notifications/notifications.service.mjs +4 -4
  291. package/esm2020/lib/notifications/types/commented.notification.mjs +4 -4
  292. package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +4 -4
  293. package/esm2020/lib/notifications/types/escalated.notification.mjs +4 -4
  294. package/esm2020/lib/notifications/types/liked.notification.mjs +4 -4
  295. package/esm2020/lib/notifications/types/long-running-task.notification.mjs +4 -4
  296. package/esm2020/lib/notifications/types/notification-base.mjs +4 -4
  297. package/esm2020/lib/notifications/types/nudge.notification.mjs +4 -4
  298. package/esm2020/lib/notifications/types/state-changed.notification.mjs +4 -4
  299. package/esm2020/lib/notifications/types/tagged.notification.mjs +4 -4
  300. package/esm2020/lib/notifications/types/text.notification.mjs +4 -4
  301. package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +4 -4
  302. package/esm2020/lib/options/options.component.mjs +4 -4
  303. package/esm2020/lib/options/options.service.mjs +4 -4
  304. package/esm2020/lib/reports/arguments-component.mjs +4 -4
  305. package/esm2020/lib/reports/cube/documents.component.mjs +4 -4
  306. package/esm2020/lib/reports/cube/grid-documents.component.mjs +4 -4
  307. package/esm2020/lib/reports/cube/table-documents.component.mjs +4 -4
  308. package/esm2020/lib/reports/cube/usage-args.component.mjs +4 -4
  309. package/esm2020/lib/reports/cube/usage-base.mjs +4 -4
  310. package/esm2020/lib/reports/cube/usage-chart.component.mjs +4 -4
  311. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +4 -4
  312. package/esm2020/lib/reports/cube/usage.component.mjs +4 -4
  313. package/esm2020/lib/reports/report-viewer.component.mjs +4 -4
  314. package/esm2020/lib/reports/report.mobile.component.mjs +4 -4
  315. package/esm2020/lib/reports/report.pane.component.mjs +4 -4
  316. package/esm2020/lib/reports/reports-menu.component.mjs +4 -4
  317. package/esm2020/lib/reports/substitution/substitution.component.mjs +4 -4
  318. package/esm2020/lib/reports/table/table-view.component.mjs +4 -4
  319. package/esm2020/lib/reports/tasks/tasks.component.mjs +4 -4
  320. package/esm2020/lib/scheduler/schedule.component.mjs +4 -4
  321. package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +4 -4
  322. package/esm2020/lib/scheduler/scheduler.pane.component.mjs +4 -4
  323. package/esm2020/lib/search/cube.component.mjs +4 -4
  324. package/esm2020/lib/search/document.component.mjs +4 -4
  325. package/esm2020/lib/search/guide.component.mjs +4 -4
  326. package/esm2020/lib/search/path.component.mjs +4 -4
  327. package/esm2020/lib/search/search.service.mjs +4 -4
  328. package/esm2020/lib/shared.module.mjs +5 -5
  329. package/esm2020/lib/system.module.mjs +5 -5
  330. package/esm2020/lib/views/cube/chart.component.mjs +4 -4
  331. package/esm2020/lib/views/cube/cube-base.mjs +4 -4
  332. package/esm2020/lib/views/cube/explore.component.mjs +4 -4
  333. package/esm2020/lib/views/cube/matrix.component.mjs +4 -4
  334. package/esm2020/lib/views/cube/parallel.component.mjs +4 -4
  335. package/esm2020/lib/views/cube/pivot.component.mjs +4 -4
  336. package/esm2020/lib/views/cube/sum.component.mjs +4 -4
  337. package/esm2020/lib/views/cube/view.component.mjs +4 -4
  338. package/esm2020/lib/views/timeline/timeline.component.exp.mjs +4 -4
  339. package/esm2020/lib/views/view-item.component.mjs +4 -4
  340. package/esm2020/lib/views/views.component.mjs +4 -4
  341. package/esm2020/lib/views/views.mobile.component.mjs +4 -4
  342. package/esm2020/lib/views/views.pane.component.mjs +4 -4
  343. package/fesm2015/bizdoc-core.mjs +1080 -1076
  344. package/fesm2015/bizdoc-core.mjs.map +1 -1
  345. package/fesm2020/bizdoc-core.mjs +1080 -1076
  346. package/fesm2020/bizdoc-core.mjs.map +1 -1
  347. package/lib/admin/admin-dismiss.service.d.ts.map +1 -0
  348. package/lib/admin/admin-menu.component.d.ts.map +1 -0
  349. package/lib/admin/configuration-designer/cube-axes-filter.component.d.ts.map +1 -0
  350. package/lib/admin/configuration-designer/declarations.d.ts.map +1 -0
  351. package/lib/admin/configuration-designer/designer-element.component.d.ts.map +1 -0
  352. package/lib/admin/configuration-designer/designer-privileges.component.d.ts.map +1 -0
  353. package/lib/admin/configuration-designer/designer.base.d.ts.map +1 -0
  354. package/lib/admin/configuration-designer/designer.component.d.ts.map +1 -0
  355. package/lib/admin/configuration-designer/elements/action.component.d.ts.map +1 -0
  356. package/lib/admin/configuration-designer/elements/analysis-view.component.d.ts.map +1 -0
  357. package/lib/admin/configuration-designer/elements/analysis-widget.component.d.ts.map +1 -0
  358. package/lib/admin/configuration-designer/elements/anomaly-rule.component.d.ts.map +1 -0
  359. package/lib/admin/configuration-designer/elements/box-form.component.d.ts.map +1 -0
  360. package/lib/admin/configuration-designer/elements/configuration-datasource.component.d.ts.map +1 -0
  361. package/lib/admin/configuration-designer/elements/cube-index-utility.component.d.ts.map +1 -0
  362. package/lib/admin/configuration-designer/elements/cube-view.component.d.ts.map +1 -0
  363. package/lib/admin/configuration-designer/elements/cube.component.d.ts.map +1 -0
  364. package/lib/admin/configuration-designer/elements/documents-report.component.d.ts.map +1 -0
  365. package/lib/admin/configuration-designer/elements/documents-widget.component.d.ts.map +1 -0
  366. package/lib/admin/configuration-designer/elements/explore-view.component.d.ts.map +1 -0
  367. package/lib/admin/configuration-designer/elements/folder.component.d.ts.map +1 -0
  368. package/lib/admin/configuration-designer/elements/form.component.d.ts.map +1 -0
  369. package/lib/admin/configuration-designer/elements/guide.component.d.ts.map +1 -0
  370. package/lib/admin/configuration-designer/elements/matrix-view.component.d.ts.map +1 -0
  371. package/lib/admin/configuration-designer/elements/node.component.d.ts.map +1 -0
  372. package/lib/admin/configuration-designer/elements/parallel-view.component.d.ts.map +1 -0
  373. package/lib/admin/configuration-designer/elements/performance-widget.component.d.ts.map +1 -0
  374. package/lib/admin/configuration-designer/elements/pivot-view.component.d.ts.map +1 -0
  375. package/lib/admin/configuration-designer/elements/policy.component.d.ts.map +1 -0
  376. package/lib/admin/configuration-designer/elements/report.component.d.ts.map +1 -0
  377. package/lib/admin/configuration-designer/elements/return-to-role-action.component.d.ts.map +1 -0
  378. package/lib/admin/configuration-designer/elements/role.component.d.ts.map +1 -0
  379. package/lib/admin/configuration-designer/elements/rule.component.d.ts.map +1 -0
  380. package/lib/admin/configuration-designer/elements/state.component.d.ts.map +1 -0
  381. package/lib/admin/configuration-designer/elements/sum-view.component.d.ts.map +1 -0
  382. package/lib/admin/configuration-designer/elements/tasks-report.component.d.ts.map +1 -0
  383. package/lib/admin/configuration-designer/elements/type.component.d.ts.map +1 -0
  384. package/lib/admin/configuration-designer/elements/usage-report.component.d.ts.map +1 -0
  385. package/lib/admin/configuration-designer/elements/utility.component.d.ts.map +1 -0
  386. package/lib/admin/configuration-designer/elements/view.component.d.ts.map +1 -0
  387. package/lib/admin/configuration-designer/elements/widget.component.d.ts.map +1 -0
  388. package/lib/admin/configuration-designer/icon-picker.component.d.ts.map +1 -0
  389. package/lib/admin/core/ace.input.d.ts.map +1 -0
  390. package/lib/admin/core/color-picker.input.d.ts.map +1 -0
  391. package/lib/admin/core/search.input.d.ts.map +1 -0
  392. package/lib/admin/diff/configuration-diff.component.d.ts.map +1 -0
  393. package/lib/admin/document-trace/document-trace.component.d.ts.map +1 -0
  394. package/lib/admin/document-trace/reassign.dialog.d.ts.map +1 -0
  395. package/lib/admin/document-trace/timeline.d.ts.map +1 -0
  396. package/lib/admin/document-trace/trace-element.component.d.ts.map +1 -0
  397. package/lib/admin/form/designer/designer.component.d.ts.map +1 -0
  398. package/lib/admin/form/form.resolve.service.d.ts.map +1 -0
  399. package/lib/admin/form/workflow/node-ref.d.ts.map +1 -0
  400. package/lib/admin/form/workflow/node.component.d.ts.map +1 -0
  401. package/lib/admin/form/workflow/role-node.component.d.ts.map +1 -0
  402. package/lib/admin/form/workflow/workflow.component.d.ts.map +1 -0
  403. package/lib/admin/indices/manage-cube-index.component.d.ts.map +1 -0
  404. package/lib/admin/localized-string.component.d.ts.map +1 -0
  405. package/lib/admin/patterns/patterns.component.d.ts.map +1 -0
  406. package/lib/admin/permissions/permissions.component.d.ts.map +1 -0
  407. package/lib/admin/positions/positions-popup.component.d.ts.map +1 -0
  408. package/lib/admin/positions/positions.component.d.ts.map +1 -0
  409. package/lib/admin/profiler/outofoffice.component.d.ts.map +1 -0
  410. package/lib/admin/profiler/profiler.component.d.ts.map +1 -0
  411. package/lib/admin/system.service.d.ts.map +1 -0
  412. package/lib/admin/utility-ref.d.ts.map +1 -0
  413. package/lib/admin/utility-wrapper.component.d.ts.map +1 -0
  414. package/lib/admin/utility.pane.component.d.ts.map +1 -0
  415. package/lib/app.component.d.ts.map +1 -0
  416. package/lib/bizdoc.module.d.ts.map +1 -0
  417. package/lib/browse/browse-items.component.d.ts.map +1 -0
  418. package/lib/browse/browse.mobile.component.d.ts.map +1 -0
  419. package/lib/browse/browse.pane.component.d.ts.map +1 -0
  420. package/lib/browse/expanded-item/expanded-item.component.d.ts.map +1 -0
  421. package/lib/browse/filter/filter.component.d.ts.map +1 -0
  422. package/lib/browse/folders-menu.component.d.ts.map +1 -0
  423. package/lib/chat/chat-info.d.ts.map +1 -0
  424. package/lib/chat/chat.mobile.component.d.ts.map +1 -0
  425. package/lib/chat/chat.service.d.ts.map +1 -0
  426. package/lib/chat/contacts.component.d.ts.map +1 -0
  427. package/lib/chat/contacts.pane.component.d.ts.map +1 -0
  428. package/lib/chat/conversation.component.d.ts.map +1 -0
  429. package/lib/chat/conversation.pane.component.d.ts.map +1 -0
  430. package/lib/compose/action/action-picker.component.d.ts.map +1 -0
  431. package/lib/compose/action/action-ref.d.ts.map +1 -0
  432. package/lib/compose/action/action.base.d.ts.map +1 -0
  433. package/lib/compose/action/action.dialog.d.ts.map +1 -0
  434. package/lib/compose/action/action.pane.dialog.exp.d.ts.map +1 -0
  435. package/lib/compose/action/assign-action.component.d.ts.map +1 -0
  436. package/lib/compose/action/moveto-action.component.d.ts.map +1 -0
  437. package/lib/compose/action/return-action.component.d.ts.map +1 -0
  438. package/lib/compose/attachments/attachments.component.d.ts.map +1 -0
  439. package/lib/compose/attachments/preview/attachment-preview.component.d.ts.map +1 -0
  440. package/lib/compose/attachments/progress-button.directive.d.ts.map +1 -0
  441. package/lib/compose/box/box.component.d.ts.map +1 -0
  442. package/lib/compose/can-deactivate-changes.service.d.ts.map +1 -0
  443. package/lib/compose/comments/comment.component.d.ts.map +1 -0
  444. package/lib/compose/comments/comments.component.d.ts.map +1 -0
  445. package/lib/compose/comments/comments.pane.component.d.ts.map +1 -0
  446. package/lib/compose/comments/edit-comment.component.d.ts.map +1 -0
  447. package/lib/compose/comments/edits.component.d.ts.map +1 -0
  448. package/lib/compose/comments/quick-comment.component.exp.d.ts.map +1 -0
  449. package/lib/compose/comments/votes.component.d.ts.map +1 -0
  450. package/lib/compose/compose-resolve.service.d.ts.map +1 -0
  451. package/lib/compose/compose.mobile.component.d.ts.map +1 -0
  452. package/lib/compose/compose.pane.component.d.ts.map +1 -0
  453. package/lib/compose/copy/copy.dialog.d.ts.map +1 -0
  454. package/lib/compose/dismiss.service.d.ts.map +1 -0
  455. package/lib/compose/document-resolver.service.d.ts.map +1 -0
  456. package/lib/compose/document.component.d.ts.map +1 -0
  457. package/lib/compose/document.mobile.component.d.ts.map +1 -0
  458. package/lib/compose/document.pane.component.d.ts.map +1 -0
  459. package/lib/compose/events/events.component.d.ts.map +1 -0
  460. package/lib/compose/form-ref.d.ts.map +1 -0
  461. package/lib/compose/form-selector/form-selector.sheet.d.ts.map +1 -0
  462. package/lib/compose/form.component.d.ts.map +1 -0
  463. package/lib/compose/new-menu.component.d.ts.map +1 -0
  464. package/lib/compose/privilage.directive.d.ts.map +1 -0
  465. package/lib/compose/recipient-resolver.service.d.ts.map +1 -0
  466. package/lib/compose/state.component.d.ts.map +1 -0
  467. package/lib/compose/tag/tags.component.d.ts.map +1 -0
  468. package/lib/compose/trace/flow.component.d.ts.map +1 -0
  469. package/lib/compose/trace/people.component.d.ts.map +1 -0
  470. package/lib/compose/trace/trace.base.d.ts.map +1 -0
  471. package/lib/compose/trace/trace.component.d.ts.map +1 -0
  472. package/lib/compose/trace/trace.pane.component.d.ts.map +1 -0
  473. package/lib/compose/version-compare/version-compare.component.d.ts.map +1 -0
  474. package/lib/compose/version-compare/version-compare.directive.d.ts.map +1 -0
  475. package/lib/compose/version-compare/version.pane.component.d.ts.map +1 -0
  476. package/lib/core/NgComponentOutlet.d.ts.map +1 -0
  477. package/lib/core/account.service.d.ts.map +1 -0
  478. package/lib/core/animated-icon/animated-icon.directive.d.ts.map +1 -0
  479. package/lib/core/animations.d.ts.map +1 -0
  480. package/lib/core/authentication.d.ts.map +1 -0
  481. package/lib/core/avatar/avatar.component.d.ts.map +1 -0
  482. package/lib/core/base.d.ts.map +1 -0
  483. package/lib/core/colors.d.ts.map +1 -0
  484. package/lib/core/component-factory-resolver.d.ts.map +1 -0
  485. package/lib/core/configuration.d.ts.map +1 -0
  486. package/lib/core/controls/address.input.d.ts.map +1 -0
  487. package/lib/core/controls/auto-complete.input.d.ts.map +1 -0
  488. package/lib/core/controls/combination-picker-body.d.ts.map +1 -0
  489. package/lib/core/controls/combination-picker.d.ts.map +1 -0
  490. package/lib/core/controls/combination-pool.d.ts.map +1 -0
  491. package/lib/core/controls/file.input.d.ts.map +1 -0
  492. package/lib/core/controls/select.input.d.ts.map +1 -0
  493. package/lib/core/controls/signature.input.d.ts.map +1 -0
  494. package/lib/core/controls/time-picker.d.ts.map +1 -0
  495. package/lib/core/controls/timespan.input.d.ts.map +1 -0
  496. package/lib/core/datasource.service.d.ts.map +1 -0
  497. package/lib/core/decorators.d.ts.map +1 -0
  498. package/lib/core/firebase.service.d.ts.map +1 -0
  499. package/lib/core/functions.d.ts.map +1 -0
  500. package/lib/core/guide/guide.component.d.ts.map +1 -0
  501. package/lib/core/guide/guide.service.d.ts.map +1 -0
  502. package/lib/core/guide/help-tip.component.d.ts.map +1 -0
  503. package/lib/core/http.interceptor.d.ts.map +1 -0
  504. package/lib/core/hub.service.d.ts.map +1 -0
  505. package/lib/core/identity/identity.component.d.ts.map +1 -0
  506. package/lib/core/info/attachment-info.service.d.ts.map +1 -0
  507. package/lib/core/info/document-info.service.d.ts.map +1 -0
  508. package/lib/core/info/location-info.component.d.ts.map +1 -0
  509. package/lib/core/info/map-info.d.ts.map +1 -0
  510. package/lib/core/layout/autocomplete.field.d.ts.map +1 -0
  511. package/lib/core/layout/checkbox.d.ts.map +1 -0
  512. package/lib/core/layout/checkbox.field.d.ts.map +1 -0
  513. package/lib/core/layout/date-range.field.d.ts.map +1 -0
  514. package/lib/core/layout/date.field.d.ts.map +1 -0
  515. package/lib/core/layout/expression.field.d.ts.map +1 -0
  516. package/lib/core/layout/file.field.d.ts.map +1 -0
  517. package/lib/core/layout/html.field.d.ts.map +1 -0
  518. package/lib/core/layout/input.base.d.ts.map +1 -0
  519. package/lib/core/layout/input.field.d.ts.map +1 -0
  520. package/lib/core/layout/layout.component.d.ts.map +1 -0
  521. package/lib/core/layout/numeric.field.d.ts.map +1 -0
  522. package/lib/core/layout/select.field.d.ts.map +1 -0
  523. package/lib/core/layout/switch.field.d.ts.map +1 -0
  524. package/lib/core/layout/textarea.field.d.ts.map +1 -0
  525. package/lib/core/layout/timespan.field.d.ts.map +1 -0
  526. package/lib/core/lottie-animation.d.ts.map +1 -0
  527. package/lib/core/mailbox.service.d.ts.map +1 -0
  528. package/lib/core/models.d.ts.map +1 -0
  529. package/lib/core/none.component.d.ts.map +1 -0
  530. package/lib/core/pipes/action.pipe.d.ts.map +1 -0
  531. package/lib/core/pipes/calendar.pipe.d.ts.map +1 -0
  532. package/lib/core/pipes/date-format.pipe.d.ts.map +1 -0
  533. package/lib/core/pipes/daterange.pipe.d.ts.map +1 -0
  534. package/lib/core/pipes/difference.pipe.d.ts.map +1 -0
  535. package/lib/core/pipes/duration-format.pipe.d.ts.map +1 -0
  536. package/lib/core/pipes/duration.pipe.d.ts.map +1 -0
  537. package/lib/core/pipes/form.pipe.d.ts.map +1 -0
  538. package/lib/core/pipes/join.pipe.d.ts.map +1 -0
  539. package/lib/core/pipes/localized-string.pipe.d.ts.map +1 -0
  540. package/lib/core/pipes/role.pipe.d.ts.map +1 -0
  541. package/lib/core/pipes/sanitize-html.pipe.d.ts.map +1 -0
  542. package/lib/core/pipes/sort.pipe.d.ts.map +1 -0
  543. package/lib/core/pipes/state.pipe.d.ts.map +1 -0
  544. package/lib/core/pipes/time-ago.pipe.d.ts.map +1 -0
  545. package/lib/core/pipes/translate.pipe.d.ts.map +1 -0
  546. package/lib/core/pipes/type-value.pipe.d.ts.map +1 -0
  547. package/lib/core/pipes/user-name.pipe.d.ts.map +1 -0
  548. package/lib/core/popup/popup-ref.d.ts.map +1 -0
  549. package/lib/core/popup/popup.component.d.ts.map +1 -0
  550. package/lib/core/popup/popup.service.d.ts.map +1 -0
  551. package/lib/core/popup/tooltip.directive.d.ts.map +1 -0
  552. package/lib/core/prompt/ask/ask.dialog.d.ts.map +1 -0
  553. package/lib/core/prompt/mask/mask.component.d.ts.map +1 -0
  554. package/lib/core/prompt.service.d.ts.map +1 -0
  555. package/lib/core/router.d.ts.map +1 -0
  556. package/lib/core/save-changes.dialog.d.ts.map +1 -0
  557. package/lib/core/session.service.d.ts.map +1 -0
  558. package/lib/core/slots/pane-ref.d.ts.map +1 -0
  559. package/lib/core/slots/router.directive.d.ts.map +1 -0
  560. package/lib/core/slots/router.service.d.ts.map +1 -0
  561. package/lib/core/slots/slots.component.d.ts.map +1 -0
  562. package/lib/core/tagging/documents.component.d.ts.map +1 -0
  563. package/lib/core/tagging/edit-input.component.d.ts.map +1 -0
  564. package/lib/core/tagging/emoji.component.d.ts.map +1 -0
  565. package/lib/core/tagging/tagging-item.directive.d.ts.map +1 -0
  566. package/lib/core/tagging/tagging.component-base.d.ts.map +1 -0
  567. package/lib/core/tagging/tagging.directive.d.ts.map +1 -0
  568. package/lib/core/tagging/tagging.pipe.d.ts.map +1 -0
  569. package/lib/core/tagging/users.component.d.ts.map +1 -0
  570. package/lib/core/translate.service.d.ts.map +1 -0
  571. package/lib/core/translations.d.ts.map +1 -0
  572. package/lib/core/window-title.service.d.ts.map +1 -0
  573. package/lib/cube/accum/accum.component.d.ts.map +1 -0
  574. package/lib/cube/chart/chart.component.d.ts.map +1 -0
  575. package/lib/cube/cube-info.service.d.ts.map +1 -0
  576. package/lib/cube/cube-menu.component.d.ts.map +1 -0
  577. package/lib/cube/cube-view.component.d.ts.map +1 -0
  578. package/lib/cube/cube.service.d.ts.map +1 -0
  579. package/lib/cube/declarations.d.ts.map +1 -0
  580. package/lib/cube/explore/document-item.component.d.ts.map +1 -0
  581. package/lib/cube/explore/explore-item.component.d.ts.map +1 -0
  582. package/lib/cube/explore/explore-items.component.d.ts.map +1 -0
  583. package/lib/cube/explore/explore.pane.component.d.ts.map +1 -0
  584. package/lib/cube/explore/item-resolver.service.d.ts.map +1 -0
  585. package/lib/cube/explore/item.pane.component.d.ts.map +1 -0
  586. package/lib/cube/filter/filter-tags.component.exp.d.ts.map +1 -0
  587. package/lib/cube/filter/filter.component.d.ts.map +1 -0
  588. package/lib/cube/grid/grid.component.d.ts.map +1 -0
  589. package/lib/cube/grid/spreadsheet.component.d.ts.map +1 -0
  590. package/lib/cube/matrix/matrix.base.d.ts.map +1 -0
  591. package/lib/cube/matrix/matrix.mobile.component.d.ts.map +1 -0
  592. package/lib/cube/matrix/matrix.pane.component.d.ts.map +1 -0
  593. package/lib/cube/matrix/popup.component.d.ts.map +1 -0
  594. package/lib/cube/matrix/table.component.d.ts.map +1 -0
  595. package/lib/cube/parallel/item.d.ts.map +1 -0
  596. package/lib/cube/parallel/parallel.component.d.ts.map +1 -0
  597. package/lib/cube/pivot/pivot.component.d.ts.map +1 -0
  598. package/lib/cube/sum/sum.component.d.ts.map +1 -0
  599. package/lib/cube/view-base.d.ts.map +1 -0
  600. package/lib/cube/view.mobile.component.d.ts.map +1 -0
  601. package/lib/cube/view.pane.component.d.ts.map +1 -0
  602. package/lib/dashboard/actions/actions.widget.d.ts.map +1 -0
  603. package/lib/dashboard/cube/accum-cube.widget.d.ts.map +1 -0
  604. package/lib/dashboard/cube/compare.widget.d.ts.map +1 -0
  605. package/lib/dashboard/cube/cube-analysis.base.d.ts.map +1 -0
  606. package/lib/dashboard/cube/cube-analysis.widget.d.ts.map +1 -0
  607. package/lib/dashboard/cube/cube-chart.widget.d.ts.map +1 -0
  608. package/lib/dashboard/cube/documents.widget.d.ts.map +1 -0
  609. package/lib/dashboard/cube/filter/filter.component.d.ts.map +1 -0
  610. package/lib/dashboard/dashboard.component.d.ts.map +1 -0
  611. package/lib/dashboard/dashboard.pane.component.d.ts.map +1 -0
  612. package/lib/dashboard/recents/recents.widget.d.ts.map +1 -0
  613. package/lib/dashboard/score/activity.widget.d.ts.map +1 -0
  614. package/lib/dashboard/score/compare-groups.widget.d.ts.map +1 -0
  615. package/lib/dashboard/score/peers-performance.widget.d.ts.map +1 -0
  616. package/lib/dashboard/score/pending-results.widget.d.ts.map +1 -0
  617. package/lib/dashboard/score/personal-score.widget.d.ts.map +1 -0
  618. package/lib/dashboard/widget-item.component.d.ts.map +1 -0
  619. package/lib/dashboard/widget-ref.d.ts.map +1 -0
  620. package/lib/desktop.module.d.ts.map +1 -0
  621. package/lib/home/about/about.dialog.d.ts.map +1 -0
  622. package/lib/home/home-base.component.d.ts.map +1 -0
  623. package/lib/home/home.desktop.component.d.ts.map +1 -0
  624. package/lib/home/home.mobile.component.d.ts.map +1 -0
  625. package/lib/home/notifications/notifications.component.d.ts.map +1 -0
  626. package/lib/home/options/options.component.d.ts.map +1 -0
  627. package/lib/home/outofoffice/outofoffice.component.d.ts.map +1 -0
  628. package/lib/home/sign/sign.component.d.ts.map +1 -0
  629. package/lib/home/tools.component.d.ts.map +1 -0
  630. package/lib/impersonate/impersonate.component.d.ts.map +1 -0
  631. package/lib/mobile.module.d.ts.map +1 -0
  632. package/lib/modules/chart.module.d.ts.map +1 -0
  633. package/lib/modules/circular-gauge.module.d.ts.map +1 -0
  634. package/lib/modules/date.adapter.d.ts.map +1 -0
  635. package/lib/modules/datepicker.intl.d.ts.map +1 -0
  636. package/lib/modules/dayjs.module.d.ts.map +1 -0
  637. package/lib/modules/diagram.module.d.ts.map +1 -0
  638. package/lib/modules/gantt.module.d.ts.map +1 -0
  639. package/lib/modules/grid.module.d.ts.map +1 -0
  640. package/lib/modules/material.module.d.ts.map +1 -0
  641. package/lib/modules/paginator.intl.d.ts.map +1 -0
  642. package/lib/modules/pivot.module.d.ts.map +1 -0
  643. package/lib/modules/schedule.module.d.ts.map +1 -0
  644. package/lib/modules/spreadsheet.module.d.ts.map +1 -0
  645. package/lib/modules/stepper.intl.d.ts.map +1 -0
  646. package/lib/modules/texteditor.module.d.ts.map +1 -0
  647. package/lib/notifications/filter.component.d.ts.map +1 -0
  648. package/lib/notifications/notifications-table.component.d.ts.map +1 -0
  649. package/lib/notifications/notifications.component-base.d.ts.map +1 -0
  650. package/lib/notifications/notifications.mobile.component.d.ts.map +1 -0
  651. package/lib/notifications/notifications.pane.component.d.ts.map +1 -0
  652. package/lib/notifications/notifications.service.d.ts.map +1 -0
  653. package/lib/notifications/types/commented.notification.d.ts.map +1 -0
  654. package/lib/notifications/types/cube-anomaly.notification.d.ts.map +1 -0
  655. package/lib/notifications/types/escalated.notification.d.ts.map +1 -0
  656. package/lib/notifications/types/liked.notification.d.ts.map +1 -0
  657. package/lib/notifications/types/long-running-task.notification.d.ts.map +1 -0
  658. package/lib/notifications/types/notification-base.d.ts.map +1 -0
  659. package/lib/notifications/types/nudge.notification.d.ts.map +1 -0
  660. package/lib/notifications/types/state-changed.notification.d.ts.map +1 -0
  661. package/lib/notifications/types/tagged.notification.d.ts.map +1 -0
  662. package/lib/notifications/types/text.notification.d.ts.map +1 -0
  663. package/lib/notifications/types/upcoming-event.notification.d.ts.map +1 -0
  664. package/lib/options/options.component.d.ts.map +1 -0
  665. package/lib/options/options.service.d.ts.map +1 -0
  666. package/lib/reports/arguments-component.d.ts.map +1 -0
  667. package/lib/reports/cube/documents.component.d.ts.map +1 -0
  668. package/lib/reports/cube/grid-documents.component.d.ts.map +1 -0
  669. package/lib/reports/cube/table-documents.component.d.ts.map +1 -0
  670. package/lib/reports/cube/usage-args.component.d.ts.map +1 -0
  671. package/lib/reports/cube/usage-base.d.ts.map +1 -0
  672. package/lib/reports/cube/usage-chart.component.d.ts.map +1 -0
  673. package/lib/reports/cube/usage-pivot.component.d.ts.map +1 -0
  674. package/lib/reports/cube/usage.component.d.ts.map +1 -0
  675. package/lib/reports/report-ref.d.ts.map +1 -0
  676. package/lib/reports/report-viewer.component.d.ts.map +1 -0
  677. package/lib/reports/report.mobile.component.d.ts.map +1 -0
  678. package/lib/reports/report.pane.component.d.ts.map +1 -0
  679. package/lib/reports/reports-menu.component.d.ts.map +1 -0
  680. package/lib/reports/substitution/substitution.component.d.ts.map +1 -0
  681. package/lib/reports/table/table-view.component.d.ts.map +1 -0
  682. package/lib/reports/tasks/tasks.component.d.ts.map +1 -0
  683. package/lib/routes.desktop.d.ts.map +1 -0
  684. package/lib/routes.mobile.d.ts.map +1 -0
  685. package/lib/scheduler/schedule.component.d.ts.map +1 -0
  686. package/lib/scheduler/scheduler.mobile.component.d.ts.map +1 -0
  687. package/lib/scheduler/scheduler.pane.component.d.ts.map +1 -0
  688. package/lib/search/cube.component.d.ts.map +1 -0
  689. package/lib/search/declarations.d.ts.map +1 -0
  690. package/lib/search/document.component.d.ts.map +1 -0
  691. package/lib/search/guide.component.d.ts.map +1 -0
  692. package/lib/search/path.component.d.ts.map +1 -0
  693. package/lib/search/search.service.d.ts.map +1 -0
  694. package/lib/shared.module.d.ts.map +1 -0
  695. package/lib/system.module.d.ts.map +1 -0
  696. package/lib/views/cube/chart.component.d.ts.map +1 -0
  697. package/lib/views/cube/cube-base.d.ts.map +1 -0
  698. package/lib/views/cube/explore.component.d.ts.map +1 -0
  699. package/lib/views/cube/matrix.component.d.ts.map +1 -0
  700. package/lib/views/cube/parallel.component.d.ts.map +1 -0
  701. package/lib/views/cube/pivot.component.d.ts.map +1 -0
  702. package/lib/views/cube/sum.component.d.ts.map +1 -0
  703. package/lib/views/cube/view.component.d.ts.map +1 -0
  704. package/lib/views/document-view-ref.d.ts.map +1 -0
  705. package/lib/views/timeline/timeline.component.exp.d.ts.map +1 -0
  706. package/lib/views/view-item.component.d.ts.map +1 -0
  707. package/lib/views/views.component.d.ts.map +1 -0
  708. package/lib/views/views.mobile.component.d.ts.map +1 -0
  709. package/lib/views/views.pane.component.d.ts.map +1 -0
  710. package/package.json +1 -1
  711. package/public-api.d.ts.map +1 -0
@@ -495,18 +495,18 @@ let DocumentTraceComponent = class DocumentTraceComponent {
495
495
  this._destroy.complete();
496
496
  }
497
497
  };
498
- DocumentTraceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: DocumentTraceComponent, deps: [{ token: UtilityRef }, { token: i1.SystemService }, { token: i2.SessionService }, { token: i3.PaneRef }, { token: i4.PanesRouter }, { token: i5.PromptService }, { token: i6.TranslateService }, { token: i7.Popup }, { token: i8.GuideService }, { token: i0.ChangeDetectorRef }, { token: i9.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
499
- DocumentTraceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "diagramElement", first: true, predicate: ["diagram"], descendants: true }, { propertyName: "filterArgs", first: true, predicate: ["args"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["search"], descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "rangeNavigator", first: true, predicate: RangeNavigator, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"mode\">\r\n <!-- diagram -->\r\n <div *ngSwitchCase=\"'diagram'\" class=\"column\" fxFlex>\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\r\n |\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n </mat-toolbar>\r\n <div class=\"row\" fxFlex>\r\n <!-- timeline -->\r\n <div class=\"timeline\" *ngIf=\"timeline?.items.length > 1\" data-help=\"timeline\">\r\n <div *ngFor=\"let date of timeline.items; let last = last\" class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n <ng-container *ngIf=\"!last || !timeline.estimate; else estimate\">\r\n <span class=\"who\" *ngIf=\"userId\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n </div>\r\n <!-- browse -->\r\n <div *ngSwitchDefault fxFlex fxLayout=\"column\" fxFlexFill>\r\n <mat-toolbar fxLayout=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </mat-toolbar>\r\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- table -->\r\n <mat-table fxFlex [dataSource]=\"dataSource\" matSort>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n <!-- StateId column -->\r\n <ng-container matColumnDef=\"stateId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\r\n (click)=\"open(item)\">\r\n </mat-row>\r\n </mat-table>\r\n <!-- range -->\r\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM-dd' background=\"transparent\"\r\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\r\n groupBy=\"Years\" intervalType='Days'\r\n (changed)='rangeChanged($event)'>\r\n <e-rangenavigator-series-collection>\r\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\r\n </e-rangenavigator-series>\r\n </e-rangenavigator-series-collection>\r\n </ejs-rangenavigator>\r\n </div>\r\n</ng-container>\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\r\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n<ng-template #estimate>\r\n {{'Estimate' | translate}}\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-row{cursor:pointer}form{margin:8px}\n"], dependencies: [{ kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i11.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i11.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i12.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i13.RangeNavigatorComponent, selector: "ejs-rangenavigator", inputs: ["allowIntervalData", "allowSnapping", "animationDuration", "background", "dataSource", "disableRangeSelector", "enableDeferredUpdate", "enableGrouping", "enablePersistence", "enableRtl", "groupBy", "height", "interval", "intervalType", "labelFormat", "labelIntersectAction", "labelPosition", "labelStyle", "locale", "logBase", "majorGridLines", "majorTickLines", "margin", "maximum", "minimum", "navigatorBorder", "navigatorStyleSettings", "periodSelectorSettings", "query", "secondaryLabelAlignment", "series", "skeleton", "skeletonType", "theme", "tickPosition", "tooltip", "useGroupingSeparator", "value", "valueType", "width", "xName", "yName"], outputs: ["beforePrint", "beforeResize", "changed", "labelRender", "load", "loaded", "resized", "selectorRender", "tooltipRender", "dataSourceChange"] }, { kind: "directive", type: i13.RangenavigatorSeriesDirective, selector: "e-rangenavigator-series-collection>e-rangenavigator-series", inputs: ["animation", "border", "dashArray", "dataSource", "fill", "opacity", "query", "type", "width", "xName", "yName"] }, { kind: "directive", type: i13.RangenavigatorSeriesCollectionDirective, selector: "ej-rangenavigator>e-rangenavigator-series-collection" }, { kind: "directive", type: i14.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i15.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i15.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i15.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i15.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i15.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i15.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i15.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i15.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i15.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i15.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i16.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i16.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i17.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i18.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i19.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i19.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i20.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"] }, { kind: "directive", type: i21.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"] }, { kind: "component", type: i22.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i23.StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "directive", type: i24.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i25.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i26.DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: i27.UserNamePipe, name: "userName" }, { kind: "pipe", type: i28.TranslatePipe, name: "translate" }], animations: [trigger('element', EnterExitRight)] });
498
+ DocumentTraceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DocumentTraceComponent, deps: [{ token: UtilityRef }, { token: i1.SystemService }, { token: i2.SessionService }, { token: i3.PaneRef }, { token: i4.PanesRouter }, { token: i5.PromptService }, { token: i6.TranslateService }, { token: i7.Popup }, { token: i8.GuideService }, { token: i0.ChangeDetectorRef }, { token: i9.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
499
+ DocumentTraceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "diagramElement", first: true, predicate: ["diagram"], descendants: true }, { propertyName: "filterArgs", first: true, predicate: ["args"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["search"], descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "rangeNavigator", first: true, predicate: RangeNavigator, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"mode\">\r\n <!-- diagram -->\r\n <div *ngSwitchCase=\"'diagram'\" class=\"column\" fxFlex>\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\r\n |\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n </mat-toolbar>\r\n <div class=\"row\" fxFlex>\r\n <!-- timeline -->\r\n <div class=\"timeline\" *ngIf=\"timeline?.items.length > 1\" data-help=\"timeline\">\r\n <div *ngFor=\"let date of timeline.items; let last = last\" class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n <ng-container *ngIf=\"!last || !timeline.estimate; else estimate\">\r\n <span class=\"who\" *ngIf=\"userId\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n </div>\r\n <!-- browse -->\r\n <div *ngSwitchDefault fxFlex fxLayout=\"column\" fxFlexFill>\r\n <mat-toolbar fxLayout=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </mat-toolbar>\r\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- table -->\r\n <mat-table fxFlex [dataSource]=\"dataSource\" matSort>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n <!-- StateId column -->\r\n <ng-container matColumnDef=\"stateId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\r\n (click)=\"open(item)\">\r\n </mat-row>\r\n </mat-table>\r\n <!-- range -->\r\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\r\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\r\n groupBy=\"Years\" intervalType='Months'\r\n (changed)='rangeChanged($event)'>\r\n <e-rangenavigator-series-collection>\r\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\r\n </e-rangenavigator-series>\r\n </e-rangenavigator-series-collection>\r\n </ejs-rangenavigator>\r\n </div>\r\n</ng-container>\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\r\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n<ng-template #estimate>\r\n {{'Estimate' | translate}}\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-row{cursor:pointer}form{margin:8px}\n"], dependencies: [{ kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i11.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i11.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i12.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i13.RangeNavigatorComponent, selector: "ejs-rangenavigator", inputs: ["allowIntervalData", "allowSnapping", "animationDuration", "background", "dataSource", "disableRangeSelector", "enableDeferredUpdate", "enableGrouping", "enablePersistence", "enableRtl", "groupBy", "height", "interval", "intervalType", "labelFormat", "labelIntersectAction", "labelPosition", "labelStyle", "locale", "logBase", "majorGridLines", "majorTickLines", "margin", "maximum", "minimum", "navigatorBorder", "navigatorStyleSettings", "periodSelectorSettings", "query", "secondaryLabelAlignment", "series", "skeleton", "skeletonType", "theme", "tickPosition", "tooltip", "useGroupingSeparator", "value", "valueType", "width", "xName", "yName"], outputs: ["beforePrint", "beforeResize", "changed", "labelRender", "load", "loaded", "resized", "selectorRender", "tooltipRender", "dataSourceChange"] }, { kind: "directive", type: i13.RangenavigatorSeriesDirective, selector: "e-rangenavigator-series-collection>e-rangenavigator-series", inputs: ["animation", "border", "dashArray", "dataSource", "fill", "opacity", "query", "type", "width", "xName", "yName"] }, { kind: "directive", type: i13.RangenavigatorSeriesCollectionDirective, selector: "ej-rangenavigator>e-rangenavigator-series-collection" }, { kind: "directive", type: i14.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i15.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i15.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i15.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i15.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i15.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i15.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i15.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i15.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i15.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i15.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i16.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i16.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i17.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i18.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i19.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i19.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i20.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"] }, { kind: "directive", type: i21.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"] }, { kind: "component", type: i22.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i23.StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "directive", type: i24.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i25.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i26.DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: i27.UserNamePipe, name: "userName" }, { kind: "pipe", type: i28.TranslatePipe, name: "translate" }], animations: [trigger('element', EnterExitRight)] });
500
500
  DocumentTraceComponent = __decorate([
501
501
  BizDoc({ selector: 'bizdoc-trace-utility' })
502
502
  /** workflow component*/
503
503
  ], DocumentTraceComponent);
504
504
  export { DocumentTraceComponent };
505
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: DocumentTraceComponent, decorators: [{
505
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DocumentTraceComponent, decorators: [{
506
506
  type: Component,
507
507
  args: [{ host: {
508
508
  class: 'pane'
509
- }, animations: [trigger('element', EnterExitRight)], template: "<ng-container [ngSwitch]=\"mode\">\r\n <!-- diagram -->\r\n <div *ngSwitchCase=\"'diagram'\" class=\"column\" fxFlex>\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\r\n |\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n </mat-toolbar>\r\n <div class=\"row\" fxFlex>\r\n <!-- timeline -->\r\n <div class=\"timeline\" *ngIf=\"timeline?.items.length > 1\" data-help=\"timeline\">\r\n <div *ngFor=\"let date of timeline.items; let last = last\" class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n <ng-container *ngIf=\"!last || !timeline.estimate; else estimate\">\r\n <span class=\"who\" *ngIf=\"userId\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n </div>\r\n <!-- browse -->\r\n <div *ngSwitchDefault fxFlex fxLayout=\"column\" fxFlexFill>\r\n <mat-toolbar fxLayout=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </mat-toolbar>\r\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- table -->\r\n <mat-table fxFlex [dataSource]=\"dataSource\" matSort>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n <!-- StateId column -->\r\n <ng-container matColumnDef=\"stateId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\r\n (click)=\"open(item)\">\r\n </mat-row>\r\n </mat-table>\r\n <!-- range -->\r\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM-dd' background=\"transparent\"\r\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\r\n groupBy=\"Years\" intervalType='Days'\r\n (changed)='rangeChanged($event)'>\r\n <e-rangenavigator-series-collection>\r\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\r\n </e-rangenavigator-series>\r\n </e-rangenavigator-series-collection>\r\n </ejs-rangenavigator>\r\n </div>\r\n</ng-container>\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\r\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n<ng-template #estimate>\r\n {{'Estimate' | translate}}\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-row{cursor:pointer}form{margin:8px}\n"] }]
509
+ }, animations: [trigger('element', EnterExitRight)], template: "<ng-container [ngSwitch]=\"mode\">\r\n <!-- diagram -->\r\n <div *ngSwitchCase=\"'diagram'\" class=\"column\" fxFlex>\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\r\n |\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n </mat-toolbar>\r\n <div class=\"row\" fxFlex>\r\n <!-- timeline -->\r\n <div class=\"timeline\" *ngIf=\"timeline?.items.length > 1\" data-help=\"timeline\">\r\n <div *ngFor=\"let date of timeline.items; let last = last\" class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n <ng-container *ngIf=\"!last || !timeline.estimate; else estimate\">\r\n <span class=\"who\" *ngIf=\"userId\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div fxFlex #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n </div>\r\n <!-- browse -->\r\n <div *ngSwitchDefault fxFlex fxLayout=\"column\" fxFlexFill>\r\n <mat-toolbar fxLayout=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </mat-toolbar>\r\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- table -->\r\n <mat-table fxFlex [dataSource]=\"dataSource\" matSort>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n <!-- StateId column -->\r\n <ng-container matColumnDef=\"stateId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\r\n (click)=\"open(item)\">\r\n </mat-row>\r\n </mat-table>\r\n <!-- range -->\r\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\r\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\r\n groupBy=\"Years\" intervalType='Months'\r\n (changed)='rangeChanged($event)'>\r\n <e-rangenavigator-series-collection>\r\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\r\n </e-rangenavigator-series>\r\n </e-rangenavigator-series-collection>\r\n </ejs-rangenavigator>\r\n </div>\r\n</ng-container>\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\r\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n<ng-template #estimate>\r\n {{'Estimate' | translate}}\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-row{cursor:pointer}form{margin:8px}\n"] }]
510
510
  }], ctorParameters: function () { return [{ type: i29.UtilityRef, decorators: [{
511
511
  type: Inject,
512
512
  args: [UtilityRef]
@@ -529,4 +529,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
529
529
  type: HostListener,
530
530
  args: ['window:keydown.f1', ['$event']]
531
531
  }] } });
532
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9kb2N1bWVudC10cmFjZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLFlBQVksRUFBOEMsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFDTCxrQkFBa0IsRUFBa0IsZUFBZSxFQUFzQyxtQkFBbUIsRUFDNUcsUUFBUSxFQUFFLE9BQU8sRUFBZ0UsWUFBWSxFQUFhLG9CQUFvQixFQUF5QyxxQkFBcUIsRUFDN0wsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxN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SXhDLHNCQUFzQjtJQUZsQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztJQUM3Qyx3QkFBd0I7R0FDWCxzQkFBc0IsQ0EwY2xDO1NBMWNZLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQVRsQyxTQUFTOzJCQUdGO3dCQUNKLEtBQUssRUFBRSxNQUFNO3FCQUNkLGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDOzswQkFnRmhELE1BQU07MkJBQUMsVUFBVTt5VEEzRUUsY0FBYztzQkFBbkMsU0FBUzt1QkFBQyxTQUFTO2dCQStERCxVQUFVO3NCQUE1QixTQUFTO3VCQUFDLE1BQU07Z0JBQ0ksV0FBVztzQkFBL0IsU0FBUzt1QkFBQyxRQUFRO2dCQUVDLElBQUk7c0JBQXZCLFNBQVM7dUJBQUMsT0FBTztnQkFDUyxjQUFjO3NCQUF4QyxTQUFTO3VCQUFDLGNBQWM7Z0JBaUV6QixLQUFLO3NCQURKLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgT25Jbml0LCBPbkRlc3Ryb3ksIEluamVjdCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIERpYWdyYW1Db25zdHJhaW50cywgUG9pbnRQb3J0TW9kZWwsIE5vZGVDb25zdHJhaW50cywgU2Nyb2xsU2V0dGluZ3NNb2RlbCwgU2VsZWN0b3JNb2RlbCwgU2VsZWN0b3JDb25zdHJhaW50cyxcclxuICBUb29sQmFzZSwgRGlhZ3JhbSwgTW91c2VFdmVudEFyZ3MsIENvbm5lY3Rvck1vZGVsLCBOb2RlTW9kZWwsIFNuYXBTZXR0aW5nc01vZGVsLCBEaWFncmFtVG9vbHMsIFRleHRNb2RlbCwgQ29ubmVjdG9yQ29uc3RyYWludHMsIElTZWxlY3Rpb25DaGFuZ2VFdmVudEFyZ3MsIExheWVyTW9kZWwsIENvbm5lY3Rpb25Qb2ludE9yaWdpbiwgTGF5b3V0TW9kZWxcclxufSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kaWFncmFtcyc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7IElDaGFuZ2VkRXZlbnRBcmdzLCBSYW5nZU5hdmlnYXRvciB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IGdldFdhcm4gfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEd1aWRlU3RlcCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5UmVmIH0gZnJvbSAnLi4vdXRpbGl0eS1yZWYnO1xyXG5pbXBvcnQgeyBEb2N1bWVudEluZm8sIFN5c3RlbVNlcnZpY2UsIFJhbmdlSW5mbyB9IGZyb20gJy4uL3N5c3RlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHdWlkZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2d1aWRlL2d1aWRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lUmVmIH0gZnJvbSAnLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZic7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25uZWN0b3JEYXRhLCBEaWFncmFtSW5mbywgTW92ZU1vZGVsLCBOb2RlRGF0YSwgVGltZWxpbmUgfSBmcm9tICcuL3RpbWVsaW5lJztcclxuaW1wb3J0IHsgRW50ZXJFeGl0UmlnaHQgfSBmcm9tICcuLi8uLi9jb3JlL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uLy4uL2NvcmUvcG9wdXAvcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IEVsZW1lbnREYXRhLCBUcmFjZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL3RyYWNlLWVsZW1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcblxyXG5jb25zdCBXQVJOTklOR19QQVRIID0gJ00gMTMuNzYzNzM1LDEuODQzMzczNSBIIDYuMzAzNzM0OSBsIC01LjI3LDUuMjcgdiA3LjQ1OTk5OTUgbCA1LjI3LDUuMjcgaCA3LjQ2MDAwMDEgbCA1LjI3LC01LjI3IFYgNy4xMTMzNzM1IFogbSAtMy43MywxNC4yOTk5OTk1IGMgLTAuNzIwMDAwMSwwIC0xLjMwMDAwMDEsLTAuNTggLTEuMzAwMDAwMSwtMS4zIDAsLTAuNzIgMC41OCwtMS4zIDEuMzAwMDAwMSwtMS4zIDAuNzIsMCAxLjMsMC41OCAxLjMsMS4zIDAsMC43MiAtMC41OCwxLjMgLTEuMywxLjMgeiBtIDEsLTQuMyBIIDkuMDMzNzM0OSBWIDUuODQzMzczNSBoIDIuMDAwMDAwMSB6JyxcclxuICBKVU1QX1BBVEggPSAnTSA2LDE4IDE0LjUsMTIgNiw2IFogTSAxNiw2IHYgMTIgaCAyIFYgNiBaJztcclxuXHJcbmZ1bmN0aW9uIGdldFBvcnRzKCk6IFBvaW50UG9ydE1vZGVsW10ge1xyXG4gIHJldHVybiBbXHJcbiAgICB7IGlkOiAncG9ydDEnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLCB5OiAwLjUgfSB9LFxyXG4gICAgeyBpZDogJ3BvcnQyJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMC41LCB5OiAxIH0gfSxcclxuICAgIHsgaWQ6ICdwb3J0MycsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDEsIHk6IDAuNSB9IH0sXHJcbiAgICB7IGlkOiAncG9ydDQnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLjUsIHk6IDAgfSB9XHJcbiAgXTtcclxufVxyXG5cclxuY2xhc3MgSW5mb1Rvb2wgZXh0ZW5kcyBUb29sQmFzZSB7XHJcbiAgcHVibGljIG92ZXJyaWRlIG1vdXNlRG93bihhcmdzOiBNb3VzZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzWzBdO1xyXG4gICAgICBzdXBlci5tb3VzZURvd24oYXJncylcclxuICAgICAgdGhpcy50YXAubmV4dChub2RlKTtcclxuICAgICAgdGhpcy5pbkFjdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFncmFtOiBEaWFncmFtLCBwdWJsaWMgdGFwOiBTdWJqZWN0PE5vZGVNb2RlbD4pIHtcclxuICAgIHN1cGVyKGRpYWdyYW0uY29tbWFuZEhhbmRsZXIpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgU2VhcmNoTW9kZWwge1xyXG4gIHNlYXJjaD86IHN0cmluZywgZm9ybUlkPzogc3RyaW5nXHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudC10cmFjZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAncGFuZSdcclxuICB9LCBhbmltYXRpb25zOiBbdHJpZ2dlcignZWxlbWVudCcsIEVudGVyRXhpdFJpZ2h0KV1cclxufSlcclxuQEJpekRvYyh7IHNlbGVjdG9yOiAnYml6ZG9jLXRyYWNlLXV0aWxpdHknIH0pXHJcbi8qKiB3b3JrZmxvdyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRUcmFjZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdkaWFncmFtJykgZGlhZ3JhbUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIHRoZW1lID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gIGFjY2VudCA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgZGlhZ3JhbTogRGlhZ3JhbTtcclxuICByZWFkb25seSBmb3JtID0gdGhpcy5fZmIuZ3JvdXA8U2VhcmNoTW9kZWw+KHsgc2VhcmNoOiBudWxsLCBmb3JtSWQ6IG51bGwgfSk7XHJcbiAgbW9kZWw6IERpYWdyYW1JbmZvO1xyXG4gIHRpbWVsaW5lOiBUaW1lbGluZTtcclxuICBkaWFncmFtQ29uc3RyYWludHM6IERpYWdyYW1Db25zdHJhaW50cyA9IERpYWdyYW1Db25zdHJhaW50cy5EZWZhdWx0IHwgRGlhZ3JhbUNvbnN0cmFpbnRzLkJyaWRnaW5nIHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5MaW5lUm91dGluZyB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuUGFuIHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5ab29tO1xyXG4gIGRpYWdyYW1Ub29sOiBEaWFncmFtVG9vbHMgPSBEaWFncmFtVG9vbHMuU2luZ2xlU2VsZWN0O1xyXG4gIHB1YmxpYyByZWFkb25seSBsYXlvdXQgPSB7XHJcbiAgICB0eXBlOiAnQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUnLFxyXG4gICAgY29ubmVjdGlvblBvaW50T3JpZ2luOiBDb25uZWN0aW9uUG9pbnRPcmlnaW4uRGlmZmVyZW50UG9pbnQsXHJcbiAgICBob3Jpem9udGFsU3BhY2luZzogNTAsXHJcbiAgICBlbmFibGVSb3V0aW5nOiB0cnVlLFxyXG4gICAgdmVydGljYWxTcGFjaW5nOiA1MCxcclxuICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdDZW50ZXInLFxyXG4gICAgY29ubmVjdGlvbkRpcmVjdGlvbjogJ09yaWVudGF0aW9uJyxcclxuICAgIG9yaWVudGF0aW9uOiAnVG9wVG9Cb3R0b20nXHJcbiAgfSBhcyBMYXlvdXRNb2RlbDtcclxuICByZWFkb25seSBzbmFwU2V0dGluZ3M6IFNuYXBTZXR0aW5nc01vZGVsID0ge1xyXG4gIH07XHJcbiAgcmVhZG9ubHkgc2Nyb2xsU2V0dGluZ3M6IFNjcm9sbFNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICBtaW5ab29tOiAuNSxcclxuICAgIG1heFpvb206IDIuNVxyXG4gIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWNjZW50Q29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCg4MDApO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ByaW1lcnlDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0UHJpbWVyeSgpO1xyXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZEl0ZW1zOiBTZWxlY3Rvck1vZGVsID0ge1xyXG4gICAgY29uc3RyYWludHM6IFNlbGVjdG9yQ29uc3RyYWludHMuVXNlckhhbmRsZSxcclxuICAgIHVzZXJIYW5kbGVzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnaW5mbycsXHJcbiAgICAgICAgcGF0aERhdGE6ICdNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnonLFxyXG4gICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICAgIHNpZGU6ICdSaWdodCcsXHJcbiAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6ICdCb3R0b20nLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcclxuICAgICAgICBwYXRoQ29sb3I6IHRoaXMuX3ByaW1lcnlDb2xvcixcclxuICAgICAgICBzaXplOiA0MCxcclxuICAgICAgICBtYXJnaW46IHsgdG9wOiAwLCBib3R0b206IDAsIGxlZnQ6IDAsIHJpZ2h0OiAwIH1cclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH07XHJcbiAgcHVibGljIGdldEN1c3RvbVRvb2w6IEZ1bmN0aW9uID0gdGhpcy5nZXRUb29sLmJpbmQodGhpcyk7XHJcbiAgbm9kZTogTm9kZU1vZGVsO1xyXG4gIHByaXZhdGUgX3N0YXJ0OiBEYXRlO1xyXG4gIHByaXZhdGUgX2VuZDogRGF0ZTtcclxuICBwcml2YXRlIF9pbmZvUmVmOiBQYW5lUmVmPFRyYWNlRWxlbWVudENvbXBvbmVudD47XHJcbiAgcHVibGljIGdldFRvb2woYWN0aW9uOiBzdHJpbmcpOiBUb29sQmFzZSB7XHJcbiAgICBsZXQgdG9vbDogVG9vbEJhc2U7XHJcbiAgICBpZiAoYWN0aW9uID09PSAnaW5mbycpIHtcclxuICAgICAgdG9vbCA9IG5ldyBJbmZvVG9vbCh0aGlzLmRpYWdyYW0sIHRoaXMuX3RhcCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG9vbDtcclxuICB9XHJcbiAgbW9kZTogJ2RpYWdyYW0nIHwgJ2Jyb3dzZScgfCBudWxsID0gJ2Jyb3dzZSc7XHJcbiAgcmFuZ2U6IChEYXRlIHwgbnVtYmVyKVtdO1xyXG4gIHJhbmdlRGF0YTogUmFuZ2VJbmZvW107XHJcbiAgbG9hZGluZzogUHJvZ3Jlc3NCYXJNb2RlID0gJ3F1ZXJ5JztcclxuICBAVmlld0NoaWxkKCdhcmdzJykgZmlsdGVyQXJnczogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdzZWFyY2gnKSBzZWFyY2hJbnB1dDogTWF0SW5wdXQ7XHJcbiAgZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPERvY3VtZW50SW5mbz47XHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0OiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoUmFuZ2VOYXZpZ2F0b3IpIHJhbmdlTmF2aWdhdG9yOiBSYW5nZU5hdmlnYXRvcjtcclxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gWydudW1iZXInLCAnc3ViamVjdCcsICdzdGF0ZUlkJ107XHJcbiAgcHJpdmF0ZSBfaGlnaExpZ2h0ZWRJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdGFwID0gbmV3IFN1YmplY3Q8Tm9kZU1vZGVsPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGVzY2hhbmdlID0gbmV3IFN1YmplY3Q8eyBzdGFydDogRGF0ZSwgZW5kOiBEYXRlIH0+KCk7XHJcbiAgLyoqIHdvcmtmbG93IGN0b3IgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoVXRpbGl0eVJlZilcclxuICAgIHByaXZhdGUgX3V0aWxpdHlSZWY6IFV0aWxpdHlSZWY8RGlhZ3JhbUluZm8sIE1vdmVNb2RlbCwgRGlhZ3JhbUluZm8sIG51bWJlcj4sXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wYW5lOiBQYW5lUmVmPERvY3VtZW50VHJhY2VDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBQYW5lc1JvdXRlcixcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcG9wdXA6IFBvcHVwLFxyXG4gICAgcHJpdmF0ZSBfZ3VpZGU6IEd1aWRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcikge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XHJcbiAgICB0aGlzLl9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgIHRoaXMudGhlbWUgPSB0LmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgICAgIHRoaXMuYWNjZW50ID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICAgICAgLy90aGlzLnJhbmdlTmF2aWdhdG9yLnJlZnJlc2goKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fc2VydmljZS5yYW5nZSgpLnN1YnNjcmliZShyID0+IHRoaXMucmFuZ2VEYXRhID0gcik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5fc3RhcnQgPSByLnN0YXJ0LCB0aGlzLl9lbmQgPSByLmVuZDtcclxuICAgICAgdGhpcy5fbGlzdCgpO1xyXG4gICAgfSk7XHJcbiAgICAvL2xldCByID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RyYWNlLXJhbmdlJyk7XHJcblxyXG4gICAgdGhpcy5yYW5nZSA9IFtub3cuYWRkKC0yLCAndycpLnRvRGF0ZSgpLFxyXG4gICAgbm93LnRvRGF0ZSgpXTtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksIGRlYm91bmNlVGltZSgyMDApKS5cclxuICAgICAgc3Vic2NyaWJlKHRoaXMuX2xpc3QuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLl9wYW5lLnF1ZXJ5UGFyYW1zQ2hhbmdlLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgY29uc3QgeyBkb2N1bWVudElkIH0gPSBwO1xyXG4gICAgICBkb2N1bWVudElkICYmIHRoaXMuX29wZW4oKGRvY3VtZW50SWQgYXMgc3RyaW5nKS5kZWNvZGVJZCgpKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fcGFuZS5yZXNpemVkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5kaWFncmFtPy5yZWZyZXNoKClcclxuICAgICk7XHJcbiAgfVxyXG4gIG9wZW5GaWx0ZXIoZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5fcG9wdXAub3Blbih0aGlzLmZpbHRlckFyZ3MsIGV2dC50YXJnZXQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQpLm9wZW5lZC5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5mb2N1cygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfbGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9ICdxdWVyeSc7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLmZpbmRBbGwoeyAuLi50aGlzLmZvcm0udmFsdWUsIHN0YXJ0OiB0aGlzLl9zdGFydCwgZW5kOiB0aGlzLl9lbmQgfSkuc3Vic2NyaWJlKGwgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGwpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJhbmdlQ2hhbmdlZChhcmdzOiBJQ2hhbmdlZEV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgLy9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndHJhY2UtcmFuZ2UnLCBhcmdzLik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5uZXh0KGFyZ3MgYXMgYW55KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZjEnLCBbJyRldmVudCddKVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qgc3RlcHM6IEd1aWRlU3RlcFtdID0gW107XHJcbiAgICBpZiAodGhpcy50aW1lbGluZSkge1xyXG4gICAgICBpZiAodGhpcy50aW1lbGluZS5pdGVtcy5sZW5ndGggPiAxKVxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXRpbWVsaW5lXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZVRpbWVsaW5lSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnZ1tpZF49c3RhcnRdJyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZUVsZW1lbnRIZWxwJyksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBzdGVwcy5wdXNoKHtcclxuICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXNlYXJjaF0nLFxyXG4gICAgICBwb3NpdGlvbjogJ0JlbG93JyxcclxuICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnVHJhY2VTZWFyY2hIZWxwJylcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZ3VpZGUuc3RhcnQoe1xyXG4gICAgICBuYW1lOiAndHJhY2UnLFxyXG4gICAgICBzdGVwc1xyXG4gICAgfSk7XHJcbiAgICBldnQgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIGJyb3dzZSgpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSk7XHJcbiAgICB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIHRoaXMubW9kZSA9ICdicm93c2UnO1xyXG4gICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29wZW4oaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5kaWFncmFtPy5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSAnYnVmZmVyJztcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYucG9wdWxhdGUoaWQpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgdGhpcy5faGlnaExpZ2h0ZWRJZHMgPSBbXTtcclxuICAgICAgdGhpcy5tb2RlbCA9IGU7XHJcbiAgICAgIHRoaXMuX3RpbWVsaW5lKCk7XHJcbiAgICAgIHRoaXMubW9kZSA9ICdkaWFncmFtJztcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmRpYWdyYW0gPSBuZXcgRGlhZ3JhbSh7XHJcbiAgICAgICAgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgc25hcFNldHRpbmdzOiB0aGlzLnNuYXBTZXR0aW5ncyxcclxuICAgICAgICBsYXlvdXQ6IHRoaXMubGF5b3V0LFxyXG4gICAgICAgIGdldENvbm5lY3RvckRlZmF1bHRzOiB0aGlzLmNvbm5EZWZhdWx0cyxcclxuICAgICAgICBzZWxlY3RlZEl0ZW1zOiB0aGlzLnNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgdG9vbDogdGhpcy5kaWFncmFtVG9vbCxcclxuICAgICAgICBjb25zdHJhaW50czogdGhpcy5kaWFncmFtQ29uc3RyYWludHMsXHJcbiAgICAgICAgZ2V0Tm9kZURlZmF1bHRzOiB0aGlzLm5vZGVEZWZhdWx0cyxcclxuICAgICAgICBzY3JvbGxTZXR0aW5nczogdGhpcy5zY3JvbGxTZXR0aW5ncyxcclxuICAgICAgICBub2RlczogZS5kaWFncmFtLm5vZGVzLFxyXG4gICAgICAgIGNvbm5lY3RvcnM6IGUuZGlhZ3JhbS5jb25uZWN0b3JzLFxyXG4gICAgICAgIHNlbGVjdGlvbkNoYW5nZTogdGhpcy5zZWxlY3Rpb25DaGFuZ2UuYmluZCh0aGlzKVxyXG4gICAgICB9LCB0aGlzLmRpYWdyYW1FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB0aGlzLl92ZXJzaW9uKCk7XHJcbiAgICAgIHRoaXMuX2luZGljYXRvcnMoKTtcclxuICAgICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSgpO1xyXG5cclxuICAgIH0sICgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgICAgdGhpcy5fc2IuZXJyb3IoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBub2RlRGVmYXVsdHMgPSAobm9kZTogTm9kZU1vZGVsKTogTm9kZU1vZGVsID0+IHtcclxuICAgIGNvbnN0IHsgaW5kaWNhdG9yLCB2aXJ0dWFsIH0gPSBub2RlLmFkZEluZm8gYXMgTm9kZURhdGEgfHwge307XHJcblxyXG4gICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICBub2RlLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLlBvaW50ZXJFdmVudHMgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCxcclxuICAgICAgICBub2RlLnN0eWxlLnN0cm9rZVdpZHRoID0gMCxcclxuICAgICAgICBub2RlLndpZHRoID0gbm9kZS5oZWlnaHQgPSAxNTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vZGUuaWQgIT09ICd2ZXJzaW9uJykge1xyXG4gICAgICBub2RlLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLkluQ29ubmVjdCB8IE5vZGVDb25zdHJhaW50cy5PdXRDb25uZWN0IHxcclxuICAgICAgICBOb2RlQ29uc3RyYWludHMuUG9pbnRlckV2ZW50cyB8IE5vZGVDb25zdHJhaW50cy5TZWxlY3Q7XHJcbiAgICAgIHRoaXMuX2RlY29yYXRlTm9kZShub2RlKTtcclxuICAgICAgbm9kZS5wb3J0cyA9IGdldFBvcnRzKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcbiAgcHVibGljIGNvbm5EZWZhdWx0cyA9IChjb25uZWN0b3I6IENvbm5lY3Rvck1vZGVsKSA9PiB7XHJcbiAgICBjb25zdCB7IHZpcnR1YWwgfSA9IGNvbm5lY3Rvci5hZGRJbmZvIGFzIENvbm5lY3RvckRhdGEgfHwge307XHJcbiAgICBjb25uZWN0b3IuY29uc3RyYWludHMgPSBDb25uZWN0b3JDb25zdHJhaW50cy5SZWFkT25seSAmIH5Db25uZWN0b3JDb25zdHJhaW50cy5TZWxlY3Q7XHJcblxyXG4gICAgdGhpcy5fZGVjb3JhdGVDb25uZWN0b3IoY29ubmVjdG9yKTtcclxuICB9XHJcbiAgb3BlbihpdGVtOiBEb2N1bWVudEluZm8pIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwgeyBxdWVyeVBhcmFtczogeyBkb2N1bWVudElkOiBpdGVtLmlkLmVuY29kZUlkKCkgfSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RpbWVsaW5lKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSBbXSwgc3VibWlzc2lvbnM6IERhdGVbXSA9IFtdO1xyXG4gICAgbGV0IG1pbkRhdGU6IERhdGUsIG1heERhdGU6IERhdGUsIGVzdGltYXRlOiBib29sZWFuO1xyXG4gICAgdGhpcy5tb2RlbC5sb2cuZm9yRWFjaChsID0+IHtcclxuICAgICAgY29uc3QgeyB0aW1lLCB1c2VySWQgfSA9IGw7XHJcbiAgICAgIHN3aXRjaCAobC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnU3VibWl0JzpcclxuICAgICAgICAgIHN1Ym1pc3Npb25zLnB1c2godGltZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICB9XHJcbiAgICAgIGlmICghaXRlbXMuZmluZCh0ID0+IHQudGltZSA9PT0gdGltZSkpXHJcbiAgICAgICAgaXRlbXMucHVzaCh7IHRpbWUsIHVzZXJJZCB9KTtcclxuICAgICAgaWYgKCFtaW5EYXRlIHx8IGRheWpzKHRpbWUpLmlzQmVmb3JlKG1pbkRhdGUpKSBtaW5EYXRlID0gdGltZTtcclxuICAgICAgaWYgKCFtYXhEYXRlIHx8IGRheWpzKHRpbWUpLmlzQWZ0ZXIobWF4RGF0ZSkpIG1heERhdGUgPSB0aW1lO1xyXG4gICAgICBpZiAobC5lc3RpbWF0ZSkgZXN0aW1hdGUgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRpbWVsaW5lID0ge1xyXG4gICAgICBpdGVtcywgbWluRGF0ZSwgbWF4RGF0ZSxcclxuICAgICAgc3VibWlzc2lvbnMsIGVzdGltYXRlXHJcbiAgICB9IGFzIGFueTtcclxuICAgIHRoaXMuX3Njb3BlKHN1Ym1pc3Npb25zW3N1Ym1pc3Npb25zLmxlbmd0aCAtIDFdKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRhdGVcclxuICAgKi9cclxuICBwcml2YXRlIF9zY29wZShkYXRlOiBEYXRlKSB7XHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnRpbWVsaW5lLnN1Ym1pc3Npb25zLnJldmVyc2UoKS5cclxuICAgICAgZmluZChzID0+IHMgPD0gZGF0ZSksXHJcbiAgICAgIG5leHREYXRlID0gdGhpcy50aW1lbGluZS5zdWJtaXNzaW9ucy5maW5kKHMgPT4gcyA+IGRhdGUpLFxyXG4gICAgICBlbmREYXRlID0gbmV4dERhdGUgPyBuZXcgRGF0ZShuZXcgRGF0ZShuZXh0RGF0ZSkudmFsdWVPZigpIC0gMSkudG9KU09OKCkgYXMgYW55IDogdGhpcy50aW1lbGluZS5tYXhEYXRlO1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnRpbWVsaW5lLCB7XHJcbiAgICAgIHN0YXJ0RGF0ZSxcclxuICAgICAgZW5kRGF0ZSxcclxuICAgICAgcmVjaXBpZW50czogdGhpcy5tb2RlbC5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIucmVjZWl2ZWQgPj0gc3RhcnREYXRlICYmIHIucmVjZWl2ZWQgPD0gZW5kRGF0ZSksXHJcbiAgICAgIGxvZzogdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50aW1lID49IHN0YXJ0RGF0ZSAmJiBsLnRpbWUgPD0gZW5kRGF0ZSlcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9pbmRpY2F0b3JzKCkge1xyXG4gICAgY29uc3QgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gPSBbXTtcclxuICAgIHRoaXMubW9kZWwubG9nLmZvckVhY2gobCA9PiB7XHJcbiAgICAgIHN3aXRjaCAobC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnTm9kZSc6XHJcbiAgICAgICAgICBpZiAobC5lcnJvcilcclxuICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogV0FSTk5JTkdfUEFUSCxcclxuICAgICAgICAgICAgICAgIGFsaWduOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBsLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdCb3R0b21DZW50ZXInXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgZmlsbDogZ2V0V2Fybig4MDApXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogbC5ub2RlSWRcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTm9kZUp1bXAnOlxyXG4gICAgICAgICAgLy9pbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgLy8gIHNoYXBlOiB7XHJcbiAgICAgICAgICAvLyAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAvLyAgICBkYXRhOiBKVU1QX1BBVEgsXHJcbiAgICAgICAgICAvLyAgICBhbGlnbjogJ1hNaW5ZTWF4J1xyXG4gICAgICAgICAgLy8gIH0sXHJcbiAgICAgICAgICAvLyAgc3R5bGU6IHtcclxuICAgICAgICAgIC8vICAgIGZpbGw6ICdibGFjaydcclxuICAgICAgICAgIC8vICB9LFxyXG4gICAgICAgICAgLy8gIGFkZEluZm86IHtcclxuICAgICAgICAgIC8vICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgIC8vICAgIHBhcmVudElkOiBsLm5vZGVJZFxyXG4gICAgICAgICAgLy8gIH1cclxuICAgICAgICAgIC8vfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWdyYW0ucmVtb3ZlTGF5ZXIoJ2luZGljYXRvcnMnKTtcclxuICAgIGluZGljYXRvcnMuZm9yRWFjaChpID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QoKGkuYWRkSW5mbyBhcyBOb2RlRGF0YSkucGFyZW50SWQpO1xyXG4gICAgICBpLm9mZnNldFggPSBwYXJlbnQub2Zmc2V0WCArIHBhcmVudC53aWR0aCAvIDIgLSAxNSxcclxuICAgICAgICBpLm9mZnNldFkgPSBwYXJlbnQub2Zmc2V0WSArIHBhcmVudC5oZWlnaHQgLyAyIC0gMTU7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5hZGQoaSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGRMYXllcih7IGlkOiAnaW5kaWNhdG9ycycgfSwgaW5kaWNhdG9ycyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RlY29yYXRlTm9kZShub2RlOiBOb2RlTW9kZWwpIHtcclxuICAgIGNvbnN0IGxvZyA9IHRoaXMudGltZWxpbmUubG9nLmZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkKTtcclxuXHJcbiAgICBpZiAobG9nLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gdGhpcy50aW1lbGluZS5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkKTtcclxuXHJcbiAgICAgIG5vZGUuc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgbm9kZS5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSBsb2cuZmluZChsID0+IGwuZXN0aW1hdGUpID8gJzMgMicgOiAnJztcclxuXHJcbiAgICAgIG5vZGUuc3R5bGUuZmlsbCA9IHJlY2lwaWVudHMuZmluZChyID0+IHIucGVuZGluZyAmJiAhci5lc3RpbWF0ZSkgPyB0aGlzLl9hY2NlbnRDb2xvciA6ICd3aGl0ZSc7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIG5vZGUuc3R5bGUuZmlsbCA9ICd3aGl0ZScsXHJcbiAgICAgICAgbm9kZS5zdHlsZS5zdHJva2VDb2xvciA9ICdkYXJrZ3JheScsXHJcbiAgICAgICAgbm9kZS5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSAnNiAyJztcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGVjb3JhdGVDb25uZWN0b3IoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkge1xyXG4gICAgY29uc3QgbG9nID0gdGhpcy50aW1lbGluZS5sb2cuZmlsdGVyKGwgPT4gbC5zb3VyY2VJZCA9PT0gY29ubmVjdG9yLnNvdXJjZUlEICYmIGwudGFyZ2V0SWQgPT0gY29ubmVjdG9yLnRhcmdldElEKTtcclxuXHJcbiAgICBpZiAobG9nLmxlbmd0aCkge1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID1cclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9IGxvZy5maW5kKGwgPT4gbC5lc3RpbWF0ZSkgPyAnMyAyJyA6ICcnO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID0gJ2RhcmtncmF5JyxcclxuICAgICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlRGFzaEFycmF5ID0gJzYgMic7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ZlcnNpb24oKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0ucmVtb3ZlTGF5ZXIoXHJcbiAgICAgICd2ZXJzaW9uJyk7XHJcbiAgICBjb25zdCB2ZXJzaW9uID0ge1xyXG4gICAgICBpZDogJ3ZlcnNpb24nLFxyXG4gICAgICBzaGFwZToge1xyXG4gICAgICAgIHR5cGU6ICdUZXh0JyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdEaWFncmFtVmVyc2lvbicsIHRoaXMubW9kZWwuZGlhZ3JhbS52ZXJzaW9uKVxyXG4gICAgICB9LFxyXG4gICAgICBvZmZzZXRZOiA1LFxyXG4gICAgICBvZmZzZXRYOiA1LFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIGZvbnRTaXplOiA1MCxcclxuICAgICAgICBvcGFjaXR5OiAuMVxyXG4gICAgICB9LFxyXG4gICAgICBjb25zdHJhaW50czogTm9kZUNvbnN0cmFpbnRzLlJlYWRPbmx5XHJcbiAgICB9IGFzIFRleHRNb2RlbDtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGRMYXllcih7XHJcbiAgICAgIGlkOiAndmVyc2lvbicsXHJcbiAgICAgIG9iamVjdHM6IFtcclxuICAgICAgICB2ZXJzaW9uXVxyXG4gICAgfSBhcyBMYXllck1vZGVsKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGQodmVyc2lvbik7XHJcbiAgfVxyXG4gIHNlbGVjdGlvbkNoYW5nZShldnQ6IElTZWxlY3Rpb25DaGFuZ2VFdmVudEFyZ3MpIHtcclxuICAgIGlmIChldnQuc3RhdGUgIT09ICdDaGFuZ2VkJykgcmV0dXJuO1xyXG4gICAgdGhpcy5fdW5oaWdobGlnaHQoKTtcclxuICAgIGlmIChldnQubmV3VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBub2RlID0gZXZ0Lm5ld1ZhbHVlWzBdIGFzIE5vZGVNb2RlbDtcclxuXHJcbiAgICAgIGNvbnN0IHsgaW5kaWNhdG9yLCBwYXJlbnRJZCB9ID0gbm9kZS5hZGRJbmZvIGFzIE5vZGVEYXRhIHx8IHt9O1xyXG5cclxuICAgICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICAgIG5vZGUgPSB0aGlzLmRpYWdyYW0uZ2V0Tm9kZU9iamVjdChwYXJlbnRJZCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtLnNlbGVjdChbbm9kZV0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGlkcyA9ICgobm9kZSBhcyBhbnkpLmluRWRnZXMpLmNvbmNhdCgobm9kZSBhcyBhbnkpLm91dEVkZ2VzKTtcclxuICAgICAgICBpZHMucHVzaChub2RlLmlkKTtcclxuICAgICAgICB0aGlzLl9oaWdobGlnaHQoaWRzKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICBpZiAodGhpcy5faW5mb1JlZikgdGhpcy5faW5mb1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShUcmFjZUVsZW1lbnRDb21wb25lbnQsIHtcclxuICAgICAgICAgIHN0YXRlOiB7XHJcbiAgICAgICAgICAgIG5vZGUsXHJcbiAgICAgICAgICAgIHRpbWVsaW5lOiB0aGlzLnRpbWVsaW5lLFxyXG4gICAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcclxuICAgICAgICAgICAgdXRpbGl0eVJlZjogdGhpcy5fdXRpbGl0eVJlZixcclxuICAgICAgICAgIH0gYXMgRWxlbWVudERhdGEsXHJcbiAgICAgICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuVGFiXHJcbiAgICAgICAgfSkudGhlbigoZTogUGFuZVJlZikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5faW5mb1JlZiA9IGU7XHJcbiAgICAgICAgICBlLmFuaW1hdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgdGhpcy5fcm91dGVyLmNvbGxhcHNlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMubm9kZSA9IG51bGw7XHJcbiAgfVxyXG4gIHB1YmxpYyBoaWdobGlnaHRUaW1lKHRpbWU6IERhdGUpIHtcclxuICAgIHRoaXMudGltZWxpbmUuZGF0ZSA9IHRpbWU7XHJcbiAgICB0aGlzLmRpYWdyYW0uY2xlYXJTZWxlY3Rpb24oKTtcclxuICAgIHRoaXMuX3VuaGlnaGxpZ2h0KCk7XHJcbiAgICBpZiAodGltZSA8IHRoaXMudGltZWxpbmUuc3RhcnREYXRlIHx8IHRpbWUgPiB0aGlzLnRpbWVsaW5lLmVuZERhdGUpIHtcclxuICAgICAgdGhpcy5fc2NvcGUodGltZSk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kaWFncmFtLm5vZGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlTm9kZSh0aGlzLmRpYWdyYW0ubm9kZXNbaV0pO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGlhZ3JhbS5jb25uZWN0b3JzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlQ29ubmVjdG9yKHRoaXMuZGlhZ3JhbS5jb25uZWN0b3JzW2ldKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpZHMgPSB0aGlzLnRpbWVsaW5lLmxvZy5maWx0ZXIobCA9PiBsLm5vZGVJZCAmJiBsLnRpbWUgPT09IHRpbWUpLm1hcChsID0+IGwubm9kZUlkKS5cclxuICAgICAgZmlsdGVyKCh2LCBpLCBhKSA9PiBhLmluZGV4T2YodikgPT09IGkpO1xyXG5cclxuICAgIHRoaXMuX2hpZ2hsaWdodChpZHMpO1xyXG4gICAgdGhpcy5kaWFncmFtLmRhdGFCaW5kKCk7XHJcbiAgfVxyXG5cclxuICBwYW4oKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgPSB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgfCBEaWFncmFtQ29uc3RyYWludHMuUGFuO1xyXG4gICAgdGhpcy5kaWFncmFtLnRvb2wgPSBEaWFncmFtVG9vbHMuWm9vbVBhbjtcclxuICB9XHJcbiAgY3Vyc29yKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzID0gdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzICYgfkRpYWdyYW1Db25zdHJhaW50cy5QYW47XHJcbiAgICB0aGlzLmRpYWdyYW0udG9vbCA9IERpYWdyYW1Ub29scy5TaW5nbGVTZWxlY3Q7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hpZ2hsaWdodChpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBvYmogPSB0aGlzLmRpYWdyYW0uZ2V0T2JqZWN0KGlkc1tpXSkgYXMgYW55O1xyXG4gICAgICBpZiAob2JqLnNvdXJjZUlEKVxyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9XHJcbiAgICAgICAgICBvYmoudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICAgIG9iai50YXJnZXREZWNvcmF0b3Iuc3R5bGUuZmlsbCA9IHRoaXMuX3ByaW1lcnlDb2xvcjtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX3ByaW1lcnlDb2xvcjtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hMaWdodGVkSWRzID0gaWRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5oaWdobGlnaHQoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSB0aGlzLl9oaWdoTGlnaHRlZElkcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBvYmogPSB0aGlzLmRpYWdyYW0uZ2V0T2JqZWN0KHRoaXMuX2hpZ2hMaWdodGVkSWRzW2ldKSBhcyBhbnk7XHJcbiAgICAgIGlmIChvYmouc291cmNlSUQpXHJcbiAgICAgICAgdGhpcy5fZGVjb3JhdGVDb25uZWN0b3Iob2JqKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlTm9kZShvYmopO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faGlnaExpZ2h0ZWRJZHMgPSBbXTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibW9kZVwiPlxyXG4gIDwhLS0gZGlhZ3JhbSAtLT5cclxuICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZGlhZ3JhbSdcIiBjbGFzcz1cImNvbHVtblwiIGZ4RmxleD5cclxuICAgIDxtYXQtdG9vbGJhcj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImJyb3dzZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0JhY2snIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmFycm93X2JhY2s8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICB8XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwYW4oKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQYW4nIHwgdHJhbnNsYXRlXCI+PHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tcGFuXCI+PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY3Vyc29yKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQ3Vyc29yJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWN1cnNvclwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZ3VpZGUoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5oZWxwX291dGxpbmU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBmeEZsZXg+XHJcbiAgICAgIDwhLS0gdGltZWxpbmUgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZVwiICpuZ0lmPVwidGltZWxpbmU/Lml0ZW1zLmxlbmd0aCA+IDFcIiBkYXRhLWhlbHA9XCJ0aW1lbGluZVwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGUgb2YgdGltZWxpbmUuaXRlbXM7IGxldCBsYXN0ID0gbGFzdFwiIGNsYXNzPVwiaXRlbVwiXHJcbiAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImRhdGUudGltZSA9PT0gdGltZWxpbmUuZGF0ZVwiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwiaGlnaGxpZ2h0VGltZShkYXRlLnRpbWUpXCIgbWF0UmlwcGxlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbGFzdCB8fCAhdGltZWxpbmUuZXN0aW1hdGU7IGVsc2UgZXN0aW1hdGVcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndob1wiICpuZ0lmPVwidXNlcklkXCI+XHJcbiAgICAgICAgICAgICAgICB7e2RhdGUudXNlcklkIHwgdXNlck5hbWUgfCBhc3luYyB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj5cclxuICAgICAgICAgICAgICAgIHt7ZGF0ZS50aW1lIHwgYW1EYXRlRm9ybWF0OiAnTU1NIERvIEg6bW0nIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZGljYXRvci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZGljYXRvclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleCAjZGlhZ3JhbSBkaXI9XCJsdHJcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIGJyb3dzZSAtLT5cclxuICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQgZnhGbGV4IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4RmlsbD5cclxuICAgIDxtYXQtdG9vbGJhciBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvcGVuRmlsdGVyKCRldmVudClcIiBbYml6ZG9jVG9vbHRpcF09XCInRmlsdGVyJ3x0cmFuc2xhdGVcIj48bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIFttb2RlXT1cImxvYWRpbmdcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJsb2FkaW5nID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgPCEtLSB0YWJsZSAtLT5cclxuICAgIDxtYXQtdGFibGUgZnhGbGV4IFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0PlxyXG4gICAgICA8IS0tIE51bWJlciBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibnVtYmVyXCI+XHJcbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+e3snTnVtYmVyJyB8IHRyYW5zbGF0ZX19PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+IHt7aXRlbS5udW1iZXJ9fSA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gU3ViamVjdCBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3ViamVjdFwiPlxyXG4gICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1N1YmplY3QnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIj4ge3tpdGVtLnN1YmplY3R9fSA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBTdGF0ZUlkIGNvbHVtbiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0ZUlkXCI+XHJcbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI9XCJzdGF0ZUlkXCI+e3snU3RhdHVzJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPlxyXG4gICAgICAgICAgPGJpemRvYy1zdGF0dXMgW3N0YXRlSWRdPVwiaXRlbS5zdGF0ZUlkXCI+PC9iaXpkb2Mtc3RhdHVzPlxyXG4gICAgICAgIDwvbWF0LWNlbGw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XHJcbiAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgaXRlbTsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbihpdGVtKVwiPlxyXG4gICAgICA8L21hdC1yb3c+XHJcbiAgICA8L21hdC10YWJsZT5cclxuICAgIDwhLS0gcmFuZ2UgLS0+XHJcbiAgICA8ZWpzLXJhbmdlbmF2aWdhdG9yIHZhbHVlVHlwZT0nRGF0ZVRpbWUnIFt2YWx1ZV09cmFuZ2UgbGFiZWxGb3JtYXQ9J01NTS1kZCcgYmFja2dyb3VuZD1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RoZW1lXT1cInRoZW1lXCIgbGFiZWxJbnRlcnNlY3RBY3Rpb249J0hpZGUnIGVuYWJsZUdyb3VwaW5nPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cEJ5PVwiWWVhcnNcIiBpbnRlcnZhbFR5cGU9J0RheXMnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VkKT0ncmFuZ2VDaGFuZ2VkKCRldmVudCknPlxyXG4gICAgICA8ZS1yYW5nZW5hdmlnYXRvci1zZXJpZXMtY29sbGVjdGlvbj5cclxuICAgICAgICA8ZS1yYW5nZW5hdmlnYXRvci1zZXJpZXMgW2RhdGFTb3VyY2VdPSdyYW5nZURhdGEnIFtmaWxsXT1cImFjY2VudFwiIHR5cGU9J0FyZWEnIHhOYW1lPSdkYXRlJyB5TmFtZT0nY291bnQnIHdpZHRoPTI+XHJcbiAgICAgICAgPC9lLXJhbmdlbmF2aWdhdG9yLXNlcmllcz5cclxuICAgICAgPC9lLXJhbmdlbmF2aWdhdG9yLXNlcmllcy1jb2xsZWN0aW9uPlxyXG4gICAgPC9lanMtcmFuZ2VuYXZpZ2F0b3I+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG48IS0tIGFyZ3MgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjYXJncz5cclxuICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInNlYXJjaFwiICNzZWFyY2ggZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCIgZGF0YS1oZWxwPVwic2VhcmNoXCIgW3BsYWNlaG9sZGVyXT1cIidOdW1iZXInfHRyYW5zbGF0ZVwiIC8+XHJcbiAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXggY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxiaXpkb2Mtc2VsZWN0IHR5cGU9XCJmb3Jtc1wiIFtwbGFjZWhvbGRlcl09XCInRm9ybSd8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZm9ybUlkXCI+PC9iaXpkb2Mtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Zvcm0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZXN0aW1hdGU+XHJcbiAge3snRXN0aW1hdGUnIHwgdHJhbnNsYXRlfX1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
532
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9kb2N1bWVudC10cmFjZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLFlBQVksRUFBOEMsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFDTCxrQkFBa0IsRUFBa0IsZUFBZSxFQUFzQyxtQkFBbUIsRUFDNUcsUUFBUSxFQUFFLE9BQU8sRUFBZ0UsWUFBWSxFQUFhLG9CQUFvQixFQUF5QyxxQkFBcUIsRUFDN0wsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxN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SXhDLHNCQUFzQjtJQUZsQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztJQUM3Qyx3QkFBd0I7R0FDWCxzQkFBc0IsQ0EwY2xDO1NBMWNZLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQVRsQyxTQUFTOzJCQUdGO3dCQUNKLEtBQUssRUFBRSxNQUFNO3FCQUNkLGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDOzswQkFnRmhELE1BQU07MkJBQUMsVUFBVTt5VEEzRUUsY0FBYztzQkFBbkMsU0FBUzt1QkFBQyxTQUFTO2dCQStERCxVQUFVO3NCQUE1QixTQUFTO3VCQUFDLE1BQU07Z0JBQ0ksV0FBVztzQkFBL0IsU0FBUzt1QkFBQyxRQUFRO2dCQUVDLElBQUk7c0JBQXZCLFNBQVM7dUJBQUMsT0FBTztnQkFDUyxjQUFjO3NCQUF4QyxTQUFTO3VCQUFDLGNBQWM7Z0JBaUV6QixLQUFLO3NCQURKLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgT25Jbml0LCBPbkRlc3Ryb3ksIEluamVjdCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIERpYWdyYW1Db25zdHJhaW50cywgUG9pbnRQb3J0TW9kZWwsIE5vZGVDb25zdHJhaW50cywgU2Nyb2xsU2V0dGluZ3NNb2RlbCwgU2VsZWN0b3JNb2RlbCwgU2VsZWN0b3JDb25zdHJhaW50cyxcclxuICBUb29sQmFzZSwgRGlhZ3JhbSwgTW91c2VFdmVudEFyZ3MsIENvbm5lY3Rvck1vZGVsLCBOb2RlTW9kZWwsIFNuYXBTZXR0aW5nc01vZGVsLCBEaWFncmFtVG9vbHMsIFRleHRNb2RlbCwgQ29ubmVjdG9yQ29uc3RyYWludHMsIElTZWxlY3Rpb25DaGFuZ2VFdmVudEFyZ3MsIExheWVyTW9kZWwsIENvbm5lY3Rpb25Qb2ludE9yaWdpbiwgTGF5b3V0TW9kZWxcclxufSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kaWFncmFtcyc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7IElDaGFuZ2VkRXZlbnRBcmdzLCBSYW5nZU5hdmlnYXRvciB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IGdldFdhcm4gfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEd1aWRlU3RlcCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5UmVmIH0gZnJvbSAnLi4vdXRpbGl0eS1yZWYnO1xyXG5pbXBvcnQgeyBEb2N1bWVudEluZm8sIFN5c3RlbVNlcnZpY2UsIFJhbmdlSW5mbyB9IGZyb20gJy4uL3N5c3RlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHdWlkZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2d1aWRlL2d1aWRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lUmVmIH0gZnJvbSAnLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZic7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25uZWN0b3JEYXRhLCBEaWFncmFtSW5mbywgTW92ZU1vZGVsLCBOb2RlRGF0YSwgVGltZWxpbmUgfSBmcm9tICcuL3RpbWVsaW5lJztcclxuaW1wb3J0IHsgRW50ZXJFeGl0UmlnaHQgfSBmcm9tICcuLi8uLi9jb3JlL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uLy4uL2NvcmUvcG9wdXAvcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IEVsZW1lbnREYXRhLCBUcmFjZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL3RyYWNlLWVsZW1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcblxyXG5jb25zdCBXQVJOTklOR19QQVRIID0gJ00gMTMuNzYzNzM1LDEuODQzMzczNSBIIDYuMzAzNzM0OSBsIC01LjI3LDUuMjcgdiA3LjQ1OTk5OTUgbCA1LjI3LDUuMjcgaCA3LjQ2MDAwMDEgbCA1LjI3LC01LjI3IFYgNy4xMTMzNzM1IFogbSAtMy43MywxNC4yOTk5OTk1IGMgLTAuNzIwMDAwMSwwIC0xLjMwMDAwMDEsLTAuNTggLTEuMzAwMDAwMSwtMS4zIDAsLTAuNzIgMC41OCwtMS4zIDEuMzAwMDAwMSwtMS4zIDAuNzIsMCAxLjMsMC41OCAxLjMsMS4zIDAsMC43MiAtMC41OCwxLjMgLTEuMywxLjMgeiBtIDEsLTQuMyBIIDkuMDMzNzM0OSBWIDUuODQzMzczNSBoIDIuMDAwMDAwMSB6JyxcclxuICBKVU1QX1BBVEggPSAnTSA2LDE4IDE0LjUsMTIgNiw2IFogTSAxNiw2IHYgMTIgaCAyIFYgNiBaJztcclxuXHJcbmZ1bmN0aW9uIGdldFBvcnRzKCk6IFBvaW50UG9ydE1vZGVsW10ge1xyXG4gIHJldHVybiBbXHJcbiAgICB7IGlkOiAncG9ydDEnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLCB5OiAwLjUgfSB9LFxyXG4gICAgeyBpZDogJ3BvcnQyJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMC41LCB5OiAxIH0gfSxcclxuICAgIHsgaWQ6ICdwb3J0MycsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDEsIHk6IDAuNSB9IH0sXHJcbiAgICB7IGlkOiAncG9ydDQnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLjUsIHk6IDAgfSB9XHJcbiAgXTtcclxufVxyXG5cclxuY2xhc3MgSW5mb1Rvb2wgZXh0ZW5kcyBUb29sQmFzZSB7XHJcbiAgcHVibGljIG92ZXJyaWRlIG1vdXNlRG93bihhcmdzOiBNb3VzZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzWzBdO1xyXG4gICAgICBzdXBlci5tb3VzZURvd24oYXJncylcclxuICAgICAgdGhpcy50YXAubmV4dChub2RlKTtcclxuICAgICAgdGhpcy5pbkFjdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFncmFtOiBEaWFncmFtLCBwdWJsaWMgdGFwOiBTdWJqZWN0PE5vZGVNb2RlbD4pIHtcclxuICAgIHN1cGVyKGRpYWdyYW0uY29tbWFuZEhhbmRsZXIpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgU2VhcmNoTW9kZWwge1xyXG4gIHNlYXJjaD86IHN0cmluZywgZm9ybUlkPzogc3RyaW5nXHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudC10cmFjZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAncGFuZSdcclxuICB9LCBhbmltYXRpb25zOiBbdHJpZ2dlcignZWxlbWVudCcsIEVudGVyRXhpdFJpZ2h0KV1cclxufSlcclxuQEJpekRvYyh7IHNlbGVjdG9yOiAnYml6ZG9jLXRyYWNlLXV0aWxpdHknIH0pXHJcbi8qKiB3b3JrZmxvdyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRUcmFjZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdkaWFncmFtJykgZGlhZ3JhbUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIHRoZW1lID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gIGFjY2VudCA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgZGlhZ3JhbTogRGlhZ3JhbTtcclxuICByZWFkb25seSBmb3JtID0gdGhpcy5fZmIuZ3JvdXA8U2VhcmNoTW9kZWw+KHsgc2VhcmNoOiBudWxsLCBmb3JtSWQ6IG51bGwgfSk7XHJcbiAgbW9kZWw6IERpYWdyYW1JbmZvO1xyXG4gIHRpbWVsaW5lOiBUaW1lbGluZTtcclxuICBkaWFncmFtQ29uc3RyYWludHM6IERpYWdyYW1Db25zdHJhaW50cyA9IERpYWdyYW1Db25zdHJhaW50cy5EZWZhdWx0IHwgRGlhZ3JhbUNvbnN0cmFpbnRzLkJyaWRnaW5nIHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5MaW5lUm91dGluZyB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuUGFuIHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5ab29tO1xyXG4gIGRpYWdyYW1Ub29sOiBEaWFncmFtVG9vbHMgPSBEaWFncmFtVG9vbHMuU2luZ2xlU2VsZWN0O1xyXG4gIHB1YmxpYyByZWFkb25seSBsYXlvdXQgPSB7XHJcbiAgICB0eXBlOiAnQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUnLFxyXG4gICAgY29ubmVjdGlvblBvaW50T3JpZ2luOiBDb25uZWN0aW9uUG9pbnRPcmlnaW4uRGlmZmVyZW50UG9pbnQsXHJcbiAgICBob3Jpem9udGFsU3BhY2luZzogNTAsXHJcbiAgICBlbmFibGVSb3V0aW5nOiB0cnVlLFxyXG4gICAgdmVydGljYWxTcGFjaW5nOiA1MCxcclxuICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdDZW50ZXInLFxyXG4gICAgY29ubmVjdGlvbkRpcmVjdGlvbjogJ09yaWVudGF0aW9uJyxcclxuICAgIG9yaWVudGF0aW9uOiAnVG9wVG9Cb3R0b20nXHJcbiAgfSBhcyBMYXlvdXRNb2RlbDtcclxuICByZWFkb25seSBzbmFwU2V0dGluZ3M6IFNuYXBTZXR0aW5nc01vZGVsID0ge1xyXG4gIH07XHJcbiAgcmVhZG9ubHkgc2Nyb2xsU2V0dGluZ3M6IFNjcm9sbFNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICBtaW5ab29tOiAuNSxcclxuICAgIG1heFpvb206IDIuNVxyXG4gIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWNjZW50Q29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCg4MDApO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ByaW1lcnlDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0UHJpbWVyeSgpO1xyXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZEl0ZW1zOiBTZWxlY3Rvck1vZGVsID0ge1xyXG4gICAgY29uc3RyYWludHM6IFNlbGVjdG9yQ29uc3RyYWludHMuVXNlckhhbmRsZSxcclxuICAgIHVzZXJIYW5kbGVzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnaW5mbycsXHJcbiAgICAgICAgcGF0aERhdGE6ICdNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnonLFxyXG4gICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICAgIHNpZGU6ICdSaWdodCcsXHJcbiAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6ICdCb3R0b20nLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcclxuICAgICAgICBwYXRoQ29sb3I6IHRoaXMuX3ByaW1lcnlDb2xvcixcclxuICAgICAgICBzaXplOiA0MCxcclxuICAgICAgICBtYXJnaW46IHsgdG9wOiAwLCBib3R0b206IDAsIGxlZnQ6IDAsIHJpZ2h0OiAwIH1cclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH07XHJcbiAgcHVibGljIGdldEN1c3RvbVRvb2w6IEZ1bmN0aW9uID0gdGhpcy5nZXRUb29sLmJpbmQodGhpcyk7XHJcbiAgbm9kZTogTm9kZU1vZGVsO1xyXG4gIHByaXZhdGUgX3N0YXJ0OiBEYXRlO1xyXG4gIHByaXZhdGUgX2VuZDogRGF0ZTtcclxuICBwcml2YXRlIF9pbmZvUmVmOiBQYW5lUmVmPFRyYWNlRWxlbWVudENvbXBvbmVudD47XHJcbiAgcHVibGljIGdldFRvb2woYWN0aW9uOiBzdHJpbmcpOiBUb29sQmFzZSB7XHJcbiAgICBsZXQgdG9vbDogVG9vbEJhc2U7XHJcbiAgICBpZiAoYWN0aW9uID09PSAnaW5mbycpIHtcclxuICAgICAgdG9vbCA9IG5ldyBJbmZvVG9vbCh0aGlzLmRpYWdyYW0sIHRoaXMuX3RhcCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG9vbDtcclxuICB9XHJcbiAgbW9kZTogJ2RpYWdyYW0nIHwgJ2Jyb3dzZScgfCBudWxsID0gJ2Jyb3dzZSc7XHJcbiAgcmFuZ2U6IChEYXRlIHwgbnVtYmVyKVtdO1xyXG4gIHJhbmdlRGF0YTogUmFuZ2VJbmZvW107XHJcbiAgbG9hZGluZzogUHJvZ3Jlc3NCYXJNb2RlID0gJ3F1ZXJ5JztcclxuICBAVmlld0NoaWxkKCdhcmdzJykgZmlsdGVyQXJnczogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdzZWFyY2gnKSBzZWFyY2hJbnB1dDogTWF0SW5wdXQ7XHJcbiAgZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPERvY3VtZW50SW5mbz47XHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0OiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoUmFuZ2VOYXZpZ2F0b3IpIHJhbmdlTmF2aWdhdG9yOiBSYW5nZU5hdmlnYXRvcjtcclxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gWydudW1iZXInLCAnc3ViamVjdCcsICdzdGF0ZUlkJ107XHJcbiAgcHJpdmF0ZSBfaGlnaExpZ2h0ZWRJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdGFwID0gbmV3IFN1YmplY3Q8Tm9kZU1vZGVsPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGVzY2hhbmdlID0gbmV3IFN1YmplY3Q8eyBzdGFydDogRGF0ZSwgZW5kOiBEYXRlIH0+KCk7XHJcbiAgLyoqIHdvcmtmbG93IGN0b3IgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoVXRpbGl0eVJlZilcclxuICAgIHByaXZhdGUgX3V0aWxpdHlSZWY6IFV0aWxpdHlSZWY8RGlhZ3JhbUluZm8sIE1vdmVNb2RlbCwgRGlhZ3JhbUluZm8sIG51bWJlcj4sXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wYW5lOiBQYW5lUmVmPERvY3VtZW50VHJhY2VDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBQYW5lc1JvdXRlcixcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcG9wdXA6IFBvcHVwLFxyXG4gICAgcHJpdmF0ZSBfZ3VpZGU6IEd1aWRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcikge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XHJcbiAgICB0aGlzLl9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgIHRoaXMudGhlbWUgPSB0LmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgICAgIHRoaXMuYWNjZW50ID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICAgICAgLy90aGlzLnJhbmdlTmF2aWdhdG9yLnJlZnJlc2goKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fc2VydmljZS5yYW5nZSgpLnN1YnNjcmliZShyID0+IHRoaXMucmFuZ2VEYXRhID0gcik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5fc3RhcnQgPSByLnN0YXJ0LCB0aGlzLl9lbmQgPSByLmVuZDtcclxuICAgICAgdGhpcy5fbGlzdCgpO1xyXG4gICAgfSk7XHJcbiAgICAvL2xldCByID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RyYWNlLXJhbmdlJyk7XHJcblxyXG4gICAgdGhpcy5yYW5nZSA9IFtub3cuYWRkKC0yLCAndycpLnRvRGF0ZSgpLFxyXG4gICAgbm93LnRvRGF0ZSgpXTtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksIGRlYm91bmNlVGltZSgyMDApKS5cclxuICAgICAgc3Vic2NyaWJlKHRoaXMuX2xpc3QuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLl9wYW5lLnF1ZXJ5UGFyYW1zQ2hhbmdlLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgY29uc3QgeyBkb2N1bWVudElkIH0gPSBwO1xyXG4gICAgICBkb2N1bWVudElkICYmIHRoaXMuX29wZW4oKGRvY3VtZW50SWQgYXMgc3RyaW5nKS5kZWNvZGVJZCgpKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fcGFuZS5yZXNpemVkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5kaWFncmFtPy5yZWZyZXNoKClcclxuICAgICk7XHJcbiAgfVxyXG4gIG9wZW5GaWx0ZXIoZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5fcG9wdXAub3Blbih0aGlzLmZpbHRlckFyZ3MsIGV2dC50YXJnZXQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQpLm9wZW5lZC5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5mb2N1cygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfbGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9ICdxdWVyeSc7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLmZpbmRBbGwoeyAuLi50aGlzLmZvcm0udmFsdWUsIHN0YXJ0OiB0aGlzLl9zdGFydCwgZW5kOiB0aGlzLl9lbmQgfSkuc3Vic2NyaWJlKGwgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGwpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJhbmdlQ2hhbmdlZChhcmdzOiBJQ2hhbmdlZEV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgLy9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndHJhY2UtcmFuZ2UnLCBhcmdzLik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5uZXh0KGFyZ3MgYXMgYW55KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZjEnLCBbJyRldmVudCddKVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qgc3RlcHM6IEd1aWRlU3RlcFtdID0gW107XHJcbiAgICBpZiAodGhpcy50aW1lbGluZSkge1xyXG4gICAgICBpZiAodGhpcy50aW1lbGluZS5pdGVtcy5sZW5ndGggPiAxKVxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXRpbWVsaW5lXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZVRpbWVsaW5lSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnZ1tpZF49c3RhcnRdJyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZUVsZW1lbnRIZWxwJyksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBzdGVwcy5wdXNoKHtcclxuICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXNlYXJjaF0nLFxyXG4gICAgICBwb3NpdGlvbjogJ0JlbG93JyxcclxuICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnVHJhY2VTZWFyY2hIZWxwJylcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZ3VpZGUuc3RhcnQoe1xyXG4gICAgICBuYW1lOiAndHJhY2UnLFxyXG4gICAgICBzdGVwc1xyXG4gICAgfSk7XHJcbiAgICBldnQgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIGJyb3dzZSgpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSk7XHJcbiAgICB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIHRoaXMubW9kZSA9ICdicm93c2UnO1xyXG4gICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29wZW4oaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5kaWFncmFtPy5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSAnYnVmZmVyJztcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYucG9wdWxhdGUoaWQpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgdGhpcy5faGlnaExpZ2h0ZWRJZHMgPSBbXTtcclxuICAgICAgdGhpcy5tb2RlbCA9IGU7XHJcbiAgICAgIHRoaXMuX3RpbWVsaW5lKCk7XHJcbiAgICAgIHRoaXMubW9kZSA9ICdkaWFncmFtJztcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmRpYWdyYW0gPSBuZXcgRGlhZ3JhbSh7XHJcbiAgICAgICAgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgc25hcFNldHRpbmdzOiB0aGlzLnNuYXBTZXR0aW5ncyxcclxuICAgICAgICBsYXlvdXQ6IHRoaXMubGF5b3V0LFxyXG4gICAgICAgIGdldENvbm5lY3RvckRlZmF1bHRzOiB0aGlzLmNvbm5EZWZhdWx0cyxcclxuICAgICAgICBzZWxlY3RlZEl0ZW1zOiB0aGlzLnNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgdG9vbDogdGhpcy5kaWFncmFtVG9vbCxcclxuICAgICAgICBjb25zdHJhaW50czogdGhpcy5kaWFncmFtQ29uc3RyYWludHMsXHJcbiAgICAgICAgZ2V0Tm9kZURlZmF1bHRzOiB0aGlzLm5vZGVEZWZhdWx0cyxcclxuICAgICAgICBzY3JvbGxTZXR0aW5nczogdGhpcy5zY3JvbGxTZXR0aW5ncyxcclxuICAgICAgICBub2RlczogZS5kaWFncmFtLm5vZGVzLFxyXG4gICAgICAgIGNvbm5lY3RvcnM6IGUuZGlhZ3JhbS5jb25uZWN0b3JzLFxyXG4gICAgICAgIHNlbGVjdGlvbkNoYW5nZTogdGhpcy5zZWxlY3Rpb25DaGFuZ2UuYmluZCh0aGlzKVxyXG4gICAgICB9LCB0aGlzLmRpYWdyYW1FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB0aGlzLl92ZXJzaW9uKCk7XHJcbiAgICAgIHRoaXMuX2luZGljYXRvcnMoKTtcclxuICAgICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSgpO1xyXG5cclxuICAgIH0sICgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgICAgdGhpcy5fc2IuZXJyb3IoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBub2RlRGVmYXVsdHMgPSAobm9kZTogTm9kZU1vZGVsKTogTm9kZU1vZGVsID0+IHtcclxuICAgIGNvbnN0IHsgaW5kaWNhdG9yLCB2aXJ0dWFsIH0gPSBub2RlLmFkZEluZm8gYXMgTm9kZURhdGEgfHwge307XHJcblxyXG4gICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICBub2RlLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLlBvaW50ZXJFdmVudHMgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCxcclxuICAgICAgICBub2RlLnN0eWxlLnN0cm9rZVdpZHRoID0gMCxcclxuICAgICAgICBub2RlLndpZHRoID0gbm9kZS5oZWlnaHQgPSAxNTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vZGUuaWQgIT09ICd2ZXJzaW9uJykge1xyXG4gICAgICBub2RlLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLkluQ29ubmVjdCB8IE5vZGVDb25zdHJhaW50cy5PdXRDb25uZWN0IHxcclxuICAgICAgICBOb2RlQ29uc3RyYWludHMuUG9pbnRlckV2ZW50cyB8IE5vZGVDb25zdHJhaW50cy5TZWxlY3Q7XHJcbiAgICAgIHRoaXMuX2RlY29yYXRlTm9kZShub2RlKTtcclxuICAgICAgbm9kZS5wb3J0cyA9IGdldFBvcnRzKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcbiAgcHVibGljIGNvbm5EZWZhdWx0cyA9IChjb25uZWN0b3I6IENvbm5lY3Rvck1vZGVsKSA9PiB7XHJcbiAgICBjb25zdCB7IHZpcnR1YWwgfSA9IGNvbm5lY3Rvci5hZGRJbmZvIGFzIENvbm5lY3RvckRhdGEgfHwge307XHJcbiAgICBjb25uZWN0b3IuY29uc3RyYWludHMgPSBDb25uZWN0b3JDb25zdHJhaW50cy5SZWFkT25seSAmIH5Db25uZWN0b3JDb25zdHJhaW50cy5TZWxlY3Q7XHJcblxyXG4gICAgdGhpcy5fZGVjb3JhdGVDb25uZWN0b3IoY29ubmVjdG9yKTtcclxuICB9XHJcbiAgb3BlbihpdGVtOiBEb2N1bWVudEluZm8pIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwgeyBxdWVyeVBhcmFtczogeyBkb2N1bWVudElkOiBpdGVtLmlkLmVuY29kZUlkKCkgfSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RpbWVsaW5lKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSBbXSwgc3VibWlzc2lvbnM6IERhdGVbXSA9IFtdO1xyXG4gICAgbGV0IG1pbkRhdGU6IERhdGUsIG1heERhdGU6IERhdGUsIGVzdGltYXRlOiBib29sZWFuO1xyXG4gICAgdGhpcy5tb2RlbC5sb2cuZm9yRWFjaChsID0+IHtcclxuICAgICAgY29uc3QgeyB0aW1lLCB1c2VySWQgfSA9IGw7XHJcbiAgICAgIHN3aXRjaCAobC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnU3VibWl0JzpcclxuICAgICAgICAgIHN1Ym1pc3Npb25zLnB1c2godGltZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICB9XHJcbiAgICAgIGlmICghaXRlbXMuZmluZCh0ID0+IHQudGltZSA9PT0gdGltZSkpXHJcbiAgICAgICAgaXRlbXMucHVzaCh7IHRpbWUsIHVzZXJJZCB9KTtcclxuICAgICAgaWYgKCFtaW5EYXRlIHx8IGRheWpzKHRpbWUpLmlzQmVmb3JlKG1pbkRhdGUpKSBtaW5EYXRlID0gdGltZTtcclxuICAgICAgaWYgKCFtYXhEYXRlIHx8IGRheWpzKHRpbWUpLmlzQWZ0ZXIobWF4RGF0ZSkpIG1heERhdGUgPSB0aW1lO1xyXG4gICAgICBpZiAobC5lc3RpbWF0ZSkgZXN0aW1hdGUgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRpbWVsaW5lID0ge1xyXG4gICAgICBpdGVtcywgbWluRGF0ZSwgbWF4RGF0ZSxcclxuICAgICAgc3VibWlzc2lvbnMsIGVzdGltYXRlXHJcbiAgICB9IGFzIGFueTtcclxuICAgIHRoaXMuX3Njb3BlKHN1Ym1pc3Npb25zW3N1Ym1pc3Npb25zLmxlbmd0aCAtIDFdKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRhdGVcclxuICAgKi9cclxuICBwcml2YXRlIF9zY29wZShkYXRlOiBEYXRlKSB7XHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnRpbWVsaW5lLnN1Ym1pc3Npb25zLnJldmVyc2UoKS5cclxuICAgICAgZmluZChzID0+IHMgPD0gZGF0ZSksXHJcbiAgICAgIG5leHREYXRlID0gdGhpcy50aW1lbGluZS5zdWJtaXNzaW9ucy5maW5kKHMgPT4gcyA+IGRhdGUpLFxyXG4gICAgICBlbmREYXRlID0gbmV4dERhdGUgPyBuZXcgRGF0ZShuZXcgRGF0ZShuZXh0RGF0ZSkudmFsdWVPZigpIC0gMSkudG9KU09OKCkgYXMgYW55IDogdGhpcy50aW1lbGluZS5tYXhEYXRlO1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnRpbWVsaW5lLCB7XHJcbiAgICAgIHN0YXJ0RGF0ZSxcclxuICAgICAgZW5kRGF0ZSxcclxuICAgICAgcmVjaXBpZW50czogdGhpcy5tb2RlbC5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIucmVjZWl2ZWQgPj0gc3RhcnREYXRlICYmIHIucmVjZWl2ZWQgPD0gZW5kRGF0ZSksXHJcbiAgICAgIGxvZzogdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50aW1lID49IHN0YXJ0RGF0ZSAmJiBsLnRpbWUgPD0gZW5kRGF0ZSlcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9pbmRpY2F0b3JzKCkge1xyXG4gICAgY29uc3QgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gPSBbXTtcclxuICAgIHRoaXMubW9kZWwubG9nLmZvckVhY2gobCA9PiB7XHJcbiAgICAgIHN3aXRjaCAobC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnTm9kZSc6XHJcbiAgICAgICAgICBpZiAobC5lcnJvcilcclxuICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogV0FSTk5JTkdfUEFUSCxcclxuICAgICAgICAgICAgICAgIGFsaWduOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBsLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdCb3R0b21DZW50ZXInXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgZmlsbDogZ2V0V2Fybig4MDApXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogbC5ub2RlSWRcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTm9kZUp1bXAnOlxyXG4gICAgICAgICAgLy9pbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgLy8gIHNoYXBlOiB7XHJcbiAgICAgICAgICAvLyAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAvLyAgICBkYXRhOiBKVU1QX1BBVEgsXHJcbiAgICAgICAgICAvLyAgICBhbGlnbjogJ1hNaW5ZTWF4J1xyXG4gICAgICAgICAgLy8gIH0sXHJcbiAgICAgICAgICAvLyAgc3R5bGU6IHtcclxuICAgICAgICAgIC8vICAgIGZpbGw6ICdibGFjaydcclxuICAgICAgICAgIC8vICB9LFxyXG4gICAgICAgICAgLy8gIGFkZEluZm86IHtcclxuICAgICAgICAgIC8vICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgIC8vICAgIHBhcmVudElkOiBsLm5vZGVJZFxyXG4gICAgICAgICAgLy8gIH1cclxuICAgICAgICAgIC8vfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWdyYW0ucmVtb3ZlTGF5ZXIoJ2luZGljYXRvcnMnKTtcclxuICAgIGluZGljYXRvcnMuZm9yRWFjaChpID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QoKGkuYWRkSW5mbyBhcyBOb2RlRGF0YSkucGFyZW50SWQpO1xyXG4gICAgICBpLm9mZnNldFggPSBwYXJlbnQub2Zmc2V0WCArIHBhcmVudC53aWR0aCAvIDIgLSAxNSxcclxuICAgICAgICBpLm9mZnNldFkgPSBwYXJlbnQub2Zmc2V0WSArIHBhcmVudC5oZWlnaHQgLyAyIC0gMTU7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5hZGQoaSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGRMYXllcih7IGlkOiAnaW5kaWNhdG9ycycgfSwgaW5kaWNhdG9ycyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RlY29yYXRlTm9kZShub2RlOiBOb2RlTW9kZWwpIHtcclxuICAgIGNvbnN0IGxvZyA9IHRoaXMudGltZWxpbmUubG9nLmZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkKTtcclxuXHJcbiAgICBpZiAobG9nLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gdGhpcy50aW1lbGluZS5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkKTtcclxuXHJcbiAgICAgIG5vZGUuc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgbm9kZS5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSBsb2cuZmluZChsID0+IGwuZXN0aW1hdGUpID8gJzMgMicgOiAnJztcclxuXHJcbiAgICAgIG5vZGUuc3R5bGUuZmlsbCA9IHJlY2lwaWVudHMuZmluZChyID0+IHIucGVuZGluZyAmJiAhci5lc3RpbWF0ZSkgPyB0aGlzLl9hY2NlbnRDb2xvciA6ICd3aGl0ZSc7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIG5vZGUuc3R5bGUuZmlsbCA9ICd3aGl0ZScsXHJcbiAgICAgICAgbm9kZS5zdHlsZS5zdHJva2VDb2xvciA9ICdkYXJrZ3JheScsXHJcbiAgICAgICAgbm9kZS5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSAnNiAyJztcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGVjb3JhdGVDb25uZWN0b3IoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkge1xyXG4gICAgY29uc3QgbG9nID0gdGhpcy50aW1lbGluZS5sb2cuZmlsdGVyKGwgPT4gbC5zb3VyY2VJZCA9PT0gY29ubmVjdG9yLnNvdXJjZUlEICYmIGwudGFyZ2V0SWQgPT0gY29ubmVjdG9yLnRhcmdldElEKTtcclxuXHJcbiAgICBpZiAobG9nLmxlbmd0aCkge1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID1cclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9IGxvZy5maW5kKGwgPT4gbC5lc3RpbWF0ZSkgPyAnMyAyJyA6ICcnO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID0gJ2RhcmtncmF5JyxcclxuICAgICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlRGFzaEFycmF5ID0gJzYgMic7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ZlcnNpb24oKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0ucmVtb3ZlTGF5ZXIoXHJcbiAgICAgICd2ZXJzaW9uJyk7XHJcbiAgICBjb25zdCB2ZXJzaW9uID0ge1xyXG4gICAgICBpZDogJ3ZlcnNpb24nLFxyXG4gICAgICBzaGFwZToge1xyXG4gICAgICAgIHR5cGU6ICdUZXh0JyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdEaWFncmFtVmVyc2lvbicsIHRoaXMubW9kZWwuZGlhZ3JhbS52ZXJzaW9uKVxyXG4gICAgICB9LFxyXG4gICAgICBvZmZzZXRZOiA1LFxyXG4gICAgICBvZmZzZXRYOiA1LFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIGZvbnRTaXplOiA1MCxcclxuICAgICAgICBvcGFjaXR5OiAuMVxyXG4gICAgICB9LFxyXG4gICAgICBjb25zdHJhaW50czogTm9kZUNvbnN0cmFpbnRzLlJlYWRPbmx5XHJcbiAgICB9IGFzIFRleHRNb2RlbDtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGRMYXllcih7XHJcbiAgICAgIGlkOiAndmVyc2lvbicsXHJcbiAgICAgIG9iamVjdHM6IFtcclxuICAgICAgICB2ZXJzaW9uXVxyXG4gICAgfSBhcyBMYXllck1vZGVsKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGQodmVyc2lvbik7XHJcbiAgfVxyXG4gIHNlbGVjdGlvbkNoYW5nZShldnQ6IElTZWxlY3Rpb25DaGFuZ2VFdmVudEFyZ3MpIHtcclxuICAgIGlmIChldnQuc3RhdGUgIT09ICdDaGFuZ2VkJykgcmV0dXJuO1xyXG4gICAgdGhpcy5fdW5oaWdobGlnaHQoKTtcclxuICAgIGlmIChldnQubmV3VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBub2RlID0gZXZ0Lm5ld1ZhbHVlWzBdIGFzIE5vZGVNb2RlbDtcclxuXHJcbiAgICAgIGNvbnN0IHsgaW5kaWNhdG9yLCBwYXJlbnRJZCB9ID0gbm9kZS5hZGRJbmZvIGFzIE5vZGVEYXRhIHx8IHt9O1xyXG5cclxuICAgICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICAgIG5vZGUgPSB0aGlzLmRpYWdyYW0uZ2V0Tm9kZU9iamVjdChwYXJlbnRJZCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtLnNlbGVjdChbbm9kZV0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGlkcyA9ICgobm9kZSBhcyBhbnkpLmluRWRnZXMpLmNvbmNhdCgobm9kZSBhcyBhbnkpLm91dEVkZ2VzKTtcclxuICAgICAgICBpZHMucHVzaChub2RlLmlkKTtcclxuICAgICAgICB0aGlzLl9oaWdobGlnaHQoaWRzKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICBpZiAodGhpcy5faW5mb1JlZikgdGhpcy5faW5mb1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShUcmFjZUVsZW1lbnRDb21wb25lbnQsIHtcclxuICAgICAgICAgIHN0YXRlOiB7XHJcbiAgICAgICAgICAgIG5vZGUsXHJcbiAgICAgICAgICAgIHRpbWVsaW5lOiB0aGlzLnRpbWVsaW5lLFxyXG4gICAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcclxuICAgICAgICAgICAgdXRpbGl0eVJlZjogdGhpcy5fdXRpbGl0eVJlZixcclxuICAgICAgICAgIH0gYXMgRWxlbWVudERhdGEsXHJcbiAgICAgICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuVGFiXHJcbiAgICAgICAgfSkudGhlbigoZTogUGFuZVJlZikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5faW5mb1JlZiA9IGU7XHJcbiAgICAgICAgICBlLmFuaW1hdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgdGhpcy5fcm91dGVyLmNvbGxhcHNlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMubm9kZSA9IG51bGw7XHJcbiAgfVxyXG4gIHB1YmxpYyBoaWdobGlnaHRUaW1lKHRpbWU6IERhdGUpIHtcclxuICAgIHRoaXMudGltZWxpbmUuZGF0ZSA9IHRpbWU7XHJcbiAgICB0aGlzLmRpYWdyYW0uY2xlYXJTZWxlY3Rpb24oKTtcclxuICAgIHRoaXMuX3VuaGlnaGxpZ2h0KCk7XHJcbiAgICBpZiAodGltZSA8IHRoaXMudGltZWxpbmUuc3RhcnREYXRlIHx8IHRpbWUgPiB0aGlzLnRpbWVsaW5lLmVuZERhdGUpIHtcclxuICAgICAgdGhpcy5fc2NvcGUodGltZSk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kaWFncmFtLm5vZGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlTm9kZSh0aGlzLmRpYWdyYW0ubm9kZXNbaV0pO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGlhZ3JhbS5jb25uZWN0b3JzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlQ29ubmVjdG9yKHRoaXMuZGlhZ3JhbS5jb25uZWN0b3JzW2ldKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpZHMgPSB0aGlzLnRpbWVsaW5lLmxvZy5maWx0ZXIobCA9PiBsLm5vZGVJZCAmJiBsLnRpbWUgPT09IHRpbWUpLm1hcChsID0+IGwubm9kZUlkKS5cclxuICAgICAgZmlsdGVyKCh2LCBpLCBhKSA9PiBhLmluZGV4T2YodikgPT09IGkpO1xyXG5cclxuICAgIHRoaXMuX2hpZ2hsaWdodChpZHMpO1xyXG4gICAgdGhpcy5kaWFncmFtLmRhdGFCaW5kKCk7XHJcbiAgfVxyXG5cclxuICBwYW4oKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgPSB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgfCBEaWFncmFtQ29uc3RyYWludHMuUGFuO1xyXG4gICAgdGhpcy5kaWFncmFtLnRvb2wgPSBEaWFncmFtVG9vbHMuWm9vbVBhbjtcclxuICB9XHJcbiAgY3Vyc29yKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzID0gdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzICYgfkRpYWdyYW1Db25zdHJhaW50cy5QYW47XHJcbiAgICB0aGlzLmRpYWdyYW0udG9vbCA9IERpYWdyYW1Ub29scy5TaW5nbGVTZWxlY3Q7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hpZ2hsaWdodChpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBvYmogPSB0aGlzLmRpYWdyYW0uZ2V0T2JqZWN0KGlkc1tpXSkgYXMgYW55O1xyXG4gICAgICBpZiAob2JqLnNvdXJjZUlEKVxyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9XHJcbiAgICAgICAgICBvYmoudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICAgIG9iai50YXJnZXREZWNvcmF0b3Iuc3R5bGUuZmlsbCA9IHRoaXMuX3ByaW1lcnlDb2xvcjtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX3ByaW1lcnlDb2xvcjtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hMaWdodGVkSWRzID0gaWRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5oaWdobGlnaHQoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSB0aGlzLl9oaWdoTGlnaHRlZElkcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBvYmogPSB0aGlzLmRpYWdyYW0uZ2V0T2JqZWN0KHRoaXMuX2hpZ2hMaWdodGVkSWRzW2ldKSBhcyBhbnk7XHJcbiAgICAgIGlmIChvYmouc291cmNlSUQpXHJcbiAgICAgICAgdGhpcy5fZGVjb3JhdGVDb25uZWN0b3Iob2JqKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlTm9kZShvYmopO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faGlnaExpZ2h0ZWRJZHMgPSBbXTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibW9kZVwiPlxyXG4gIDwhLS0gZGlhZ3JhbSAtLT5cclxuICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZGlhZ3JhbSdcIiBjbGFzcz1cImNvbHVtblwiIGZ4RmxleD5cclxuICAgIDxtYXQtdG9vbGJhcj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImJyb3dzZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0JhY2snIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmFycm93X2JhY2s8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICB8XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwYW4oKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQYW4nIHwgdHJhbnNsYXRlXCI+PHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tcGFuXCI+PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY3Vyc29yKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQ3Vyc29yJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWN1cnNvclwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZ3VpZGUoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5oZWxwX291dGxpbmU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBmeEZsZXg+XHJcbiAgICAgIDwhLS0gdGltZWxpbmUgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZVwiICpuZ0lmPVwidGltZWxpbmU/Lml0ZW1zLmxlbmd0aCA+IDFcIiBkYXRhLWhlbHA9XCJ0aW1lbGluZVwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGUgb2YgdGltZWxpbmUuaXRlbXM7IGxldCBsYXN0ID0gbGFzdFwiIGNsYXNzPVwiaXRlbVwiXHJcbiAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImRhdGUudGltZSA9PT0gdGltZWxpbmUuZGF0ZVwiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwiaGlnaGxpZ2h0VGltZShkYXRlLnRpbWUpXCIgbWF0UmlwcGxlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbGFzdCB8fCAhdGltZWxpbmUuZXN0aW1hdGU7IGVsc2UgZXN0aW1hdGVcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndob1wiICpuZ0lmPVwidXNlcklkXCI+XHJcbiAgICAgICAgICAgICAgICB7e2RhdGUudXNlcklkIHwgdXNlck5hbWUgfCBhc3luYyB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj5cclxuICAgICAgICAgICAgICAgIHt7ZGF0ZS50aW1lIHwgYW1EYXRlRm9ybWF0OiAnTU1NIERvIEg6bW0nIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZGljYXRvci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZGljYXRvclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleCAjZGlhZ3JhbSBkaXI9XCJsdHJcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIGJyb3dzZSAtLT5cclxuICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQgZnhGbGV4IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4RmlsbD5cclxuICAgIDxtYXQtdG9vbGJhciBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvcGVuRmlsdGVyKCRldmVudClcIiBbYml6ZG9jVG9vbHRpcF09XCInRmlsdGVyJ3x0cmFuc2xhdGVcIj48bWF0LWljb24+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIFttb2RlXT1cImxvYWRpbmdcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJsb2FkaW5nID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgPCEtLSB0YWJsZSAtLT5cclxuICAgIDxtYXQtdGFibGUgZnhGbGV4IFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0PlxyXG4gICAgICA8IS0tIE51bWJlciBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibnVtYmVyXCI+XHJcbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+e3snTnVtYmVyJyB8IHRyYW5zbGF0ZX19PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+IHt7aXRlbS5udW1iZXJ9fSA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gU3ViamVjdCBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3ViamVjdFwiPlxyXG4gICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1N1YmplY3QnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIj4ge3tpdGVtLnN1YmplY3R9fSA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBTdGF0ZUlkIGNvbHVtbiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0ZUlkXCI+XHJcbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI9XCJzdGF0ZUlkXCI+e3snU3RhdHVzJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPlxyXG4gICAgICAgICAgPGJpemRvYy1zdGF0dXMgW3N0YXRlSWRdPVwiaXRlbS5zdGF0ZUlkXCI+PC9iaXpkb2Mtc3RhdHVzPlxyXG4gICAgICAgIDwvbWF0LWNlbGw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XHJcbiAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgaXRlbTsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbihpdGVtKVwiPlxyXG4gICAgICA8L21hdC1yb3c+XHJcbiAgICA8L21hdC10YWJsZT5cclxuICAgIDwhLS0gcmFuZ2UgLS0+XHJcbiAgICA8ZWpzLXJhbmdlbmF2aWdhdG9yIHZhbHVlVHlwZT0nRGF0ZVRpbWUnIFt2YWx1ZV09cmFuZ2UgbGFiZWxGb3JtYXQ9J01NTScgYmFja2dyb3VuZD1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RoZW1lXT1cInRoZW1lXCIgbGFiZWxJbnRlcnNlY3RBY3Rpb249J0hpZGUnIGVuYWJsZUdyb3VwaW5nPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cEJ5PVwiWWVhcnNcIiBpbnRlcnZhbFR5cGU9J01vbnRocydcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWQpPSdyYW5nZUNoYW5nZWQoJGV2ZW50KSc+XHJcbiAgICAgIDxlLXJhbmdlbmF2aWdhdG9yLXNlcmllcy1jb2xsZWN0aW9uPlxyXG4gICAgICAgIDxlLXJhbmdlbmF2aWdhdG9yLXNlcmllcyBbZGF0YVNvdXJjZV09J3JhbmdlRGF0YScgW2ZpbGxdPVwiYWNjZW50XCIgdHlwZT0nQXJlYScgeE5hbWU9J2RhdGUnIHlOYW1lPSdjb3VudCcgd2lkdGg9Mj5cclxuICAgICAgICA8L2UtcmFuZ2VuYXZpZ2F0b3Itc2VyaWVzPlxyXG4gICAgICA8L2UtcmFuZ2VuYXZpZ2F0b3Itc2VyaWVzLWNvbGxlY3Rpb24+XHJcbiAgICA8L2Vqcy1yYW5nZW5hdmlnYXRvcj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbjwhLS0gYXJncyAtLT5cclxuPG5nLXRlbXBsYXRlICNhcmdzPlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwic2VhcmNoXCIgI3NlYXJjaCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBkYXRhLWhlbHA9XCJzZWFyY2hcIiBbcGxhY2Vob2xkZXJdPVwiJ051bWJlcid8dHJhbnNsYXRlXCIgLz5cclxuICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeCBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGJpemRvYy1zZWxlY3QgdHlwZT1cImZvcm1zXCIgW3BsYWNlaG9sZGVyXT1cIidGb3JtJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmb3JtSWRcIj48L2JpemRvYy1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNlc3RpbWF0ZT5cclxuICB7eydFc3RpbWF0ZScgfCB0cmFuc2xhdGV9fVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -28,13 +28,13 @@ export class ReassignDialog {
28
28
  pipe(map(r => r.filter(u => this._data.exclude.indexOf(u.id) < 0)));
29
29
  }
30
30
  }
31
- ReassignDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReassignDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.SessionService }, { token: i2.AccountService }], target: i0.ɵɵFactoryTarget.Component });
32
- ReassignDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ReassignDialog, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i6.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i10.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"] }, { kind: "directive", type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i12.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"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReassignDialog, decorators: [{
31
+ ReassignDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ReassignDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.SessionService }, { token: i2.AccountService }], target: i0.ɵɵFactoryTarget.Component });
32
+ ReassignDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ReassignDialog, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i6.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i10.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"] }, { kind: "directive", type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i12.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"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ReassignDialog, decorators: [{
34
34
  type: Component,
35
35
  args: [{ template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n" }]
36
36
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
37
37
  type: Inject,
38
38
  args: [MAT_DIALOG_DATA]
39
39
  }] }, { type: i1.SessionService }, { type: i2.AccountService }]; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhc3NpZ24uZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9yZWFzc2lnbi5kaWFsb2cudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL3JlYXNzaWduLmRpYWxvZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUtyQyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUE2QyxLQUFtQixFQUFFLE9BQXVCLEVBQUUsT0FBdUI7UUFBckUsVUFBSyxHQUFMLEtBQUssQ0FBYztRQU52RCxTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDNUIsTUFBTSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQzVCLENBQUMsQ0FBQztRQUlELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7OzJHQVhVLGNBQWMsa0JBT0wsZUFBZTsrRkFQeEIsY0FBYyxvRENaM0Isb3lDQXdCQTsyRkRaYSxjQUFjO2tCQUgxQixTQUFTOzs7MEJBVUssTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgUm9sZSwgVXNlckluZm8gfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlYXNzaWduLmRpYWxvZy5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVhc3NpZ25EaWFsb2cge1xyXG4gIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIHVzZXJJZDogbmV3IEZvcm1Db250cm9sKG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICBub3RlOiBuZXcgRm9ybUNvbnRyb2wobnVsbClcclxuICB9KTtcclxuICByZWFkb25seSByb2xlczogUm9sZVtdO1xyXG4gIHJlYWRvbmx5IHVzZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YTogUmVhc3NpZ25EYXRhLCBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSwgYWNjb3VudDogQWNjb3VudFNlcnZpY2UpIHtcclxuICAgIHRoaXMucm9sZXMgPSBzZXNzaW9uLnByb2ZpbGUucm9sZXM7XHJcbiAgICB0aGlzLnVzZXJzJCA9IGFjY291bnQuZmluZEFsbCgnJykuXHJcbiAgICAgIHBpcGUobWFwKHIgPT4gci5maWx0ZXIodSA9PiB0aGlzLl9kYXRhLmV4Y2x1ZGUuaW5kZXhPZih1LmlkKSA8IDApKSk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVhc3NpZ25EYXRhIHtcclxuICBleGNsdWRlOiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWFzc2lnbk1vZGVsIHtcclxuICB1c2VySWQ6IHN0cmluZztcclxuLy8gIHJvbGU/OiBzdHJpbmc7XHJcbiAgbm90ZT86IHN0cmluZztcclxufVxyXG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57eydSZWFzc2lnbicgfCB0cmFuc2xhdGUgfX08L2gyPlxyXG48bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwie3snV2hvJyB8IHRyYW5zbGF0ZX19XCIgZm9ybUNvbnRyb2xOYW1lPVwidXNlcklkXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgdXNlcnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwidS5pZFwiPnt7dS5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8IS0tPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cInt7J1JvbGUnIHwgdHJhbnNsYXRlfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJyb2xlXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24+e3snTm9uZSd8IHRyYW5zbGF0ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByIG9mIHJvbGVzXCIgW3ZhbHVlXT1cInIubmFtZVwiPnt7ci50aXRsZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPi0tPlxyXG4gIDxtYXQtZm9ybS1maWVsZD5cclxuICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBjZGtUZXh0YXJlYUF1dG9zaXplIGZvcm1Db250cm9sTmFtZT1cIm5vdGVcIiBwbGFjZWhvbGRlcj1cInt7J05vdGUnfCB0cmFuc2xhdGV9fVwiIG1heGxlbmd0aD1cIjIwMFwiPjwvdGV4dGFyZWE+XHJcbiAgICA8bWF0LWhpbnQgYWxpZ249XCJlbmRcIj57e2Zvcm0uY29udHJvbHNbJ25vdGUnXS52YWx1ZT8ubGVuZ3RoIHx8IDB9fSAvIHt7MjAwfX08L21hdC1oaW50PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9mb3JtPlxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiZm9ybS52YWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiPnt7J09LJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+e3snQ2FuY2VsJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhc3NpZ24uZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9yZWFzc2lnbi5kaWFsb2cudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL3JlYXNzaWduLmRpYWxvZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUtyQyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUE2QyxLQUFtQixFQUFFLE9BQXVCLEVBQUUsT0FBdUI7UUFBckUsVUFBSyxHQUFMLEtBQUssQ0FBYztRQU52RCxTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDNUIsTUFBTSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQzVCLENBQUMsQ0FBQztRQUlELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7OzRHQVhVLGNBQWMsa0JBT0wsZUFBZTtnR0FQeEIsY0FBYyxvRENaM0Isb3lDQXdCQTs0RkRaYSxjQUFjO2tCQUgxQixTQUFTOzs7MEJBVUssTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgUm9sZSwgVXNlckluZm8gfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlYXNzaWduLmRpYWxvZy5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVhc3NpZ25EaWFsb2cge1xyXG4gIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIHVzZXJJZDogbmV3IEZvcm1Db250cm9sKG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICBub3RlOiBuZXcgRm9ybUNvbnRyb2wobnVsbClcclxuICB9KTtcclxuICByZWFkb25seSByb2xlczogUm9sZVtdO1xyXG4gIHJlYWRvbmx5IHVzZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YTogUmVhc3NpZ25EYXRhLCBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSwgYWNjb3VudDogQWNjb3VudFNlcnZpY2UpIHtcclxuICAgIHRoaXMucm9sZXMgPSBzZXNzaW9uLnByb2ZpbGUucm9sZXM7XHJcbiAgICB0aGlzLnVzZXJzJCA9IGFjY291bnQuZmluZEFsbCgnJykuXHJcbiAgICAgIHBpcGUobWFwKHIgPT4gci5maWx0ZXIodSA9PiB0aGlzLl9kYXRhLmV4Y2x1ZGUuaW5kZXhPZih1LmlkKSA8IDApKSk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVhc3NpZ25EYXRhIHtcclxuICBleGNsdWRlOiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWFzc2lnbk1vZGVsIHtcclxuICB1c2VySWQ6IHN0cmluZztcclxuLy8gIHJvbGU/OiBzdHJpbmc7XHJcbiAgbm90ZT86IHN0cmluZztcclxufVxyXG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57eydSZWFzc2lnbicgfCB0cmFuc2xhdGUgfX08L2gyPlxyXG48bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwie3snV2hvJyB8IHRyYW5zbGF0ZX19XCIgZm9ybUNvbnRyb2xOYW1lPVwidXNlcklkXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHUgb2YgdXNlcnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwidS5pZFwiPnt7dS5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8IS0tPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cInt7J1JvbGUnIHwgdHJhbnNsYXRlfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJyb2xlXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24+e3snTm9uZSd8IHRyYW5zbGF0ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByIG9mIHJvbGVzXCIgW3ZhbHVlXT1cInIubmFtZVwiPnt7ci50aXRsZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPi0tPlxyXG4gIDxtYXQtZm9ybS1maWVsZD5cclxuICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBjZGtUZXh0YXJlYUF1dG9zaXplIGZvcm1Db250cm9sTmFtZT1cIm5vdGVcIiBwbGFjZWhvbGRlcj1cInt7J05vdGUnfCB0cmFuc2xhdGV9fVwiIG1heGxlbmd0aD1cIjIwMFwiPjwvdGV4dGFyZWE+XHJcbiAgICA8bWF0LWhpbnQgYWxpZ249XCJlbmRcIj57e2Zvcm0uY29udHJvbHNbJ25vdGUnXS52YWx1ZT8ubGVuZ3RoIHx8IDB9fSAvIHt7MjAwfX08L21hdC1oaW50PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9mb3JtPlxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiZm9ybS52YWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiPnt7J09LJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+e3snQ2FuY2VsJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4iXX0=