@bizdoc/core 3.0.7 → 3.2.3

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 (653) hide show
  1. package/assets/themes/brown.min.css +1 -1
  2. package/assets/themes/dark.min.css +1 -1
  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 +26 -16
  6. package/assets/themes/green.min.css +1 -1
  7. package/assets/themes/indigo-amber.min.css +1 -1
  8. package/assets/themes/indigo.min.css +1 -1
  9. package/esm2022/bizdoc-core.mjs +1 -1
  10. package/esm2022/lib/admin/admin-dismiss.service.mjs +4 -4
  11. package/esm2022/lib/admin/admin-menu.component.mjs +4 -4
  12. package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +10 -10
  13. package/esm2022/lib/admin/architecture/declarations.mjs +3 -2
  14. package/esm2022/lib/admin/architecture/designer-element.component.mjs +25 -22
  15. package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +5 -5
  16. package/esm2022/lib/admin/architecture/designer.base.mjs +11 -14
  17. package/esm2022/lib/admin/architecture/designer.component.mjs +8 -7
  18. package/esm2022/lib/admin/architecture/elements/action.component.mjs +4 -5
  19. package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +4 -4
  20. package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +4 -4
  21. package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +4 -4
  22. package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +4 -5
  23. package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +4 -4
  24. package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +4 -4
  25. package/esm2022/lib/admin/architecture/elements/control.component.mjs +4 -7
  26. package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +4 -4
  27. package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +4 -4
  28. package/esm2022/lib/admin/architecture/elements/cube.component.mjs +14 -15
  29. package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +5 -7
  30. package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +4 -4
  31. package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +4 -4
  32. package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +4 -4
  33. package/esm2022/lib/admin/architecture/elements/folder.component.mjs +4 -5
  34. package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +8 -10
  35. package/esm2022/lib/admin/architecture/elements/form.component.mjs +12 -13
  36. package/esm2022/lib/admin/architecture/elements/guide.component.mjs +4 -5
  37. package/esm2022/lib/admin/architecture/elements/job.component.mjs +4 -5
  38. package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +5 -5
  39. package/esm2022/lib/admin/architecture/elements/node.component.mjs +4 -4
  40. package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +4 -4
  41. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +4 -4
  42. package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +4 -4
  43. package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +4 -4
  44. package/esm2022/lib/admin/architecture/elements/policy.component.mjs +4 -4
  45. package/esm2022/lib/admin/architecture/elements/report.component.mjs +4 -5
  46. package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +4 -4
  47. package/esm2022/lib/admin/architecture/elements/role.component.mjs +4 -5
  48. package/esm2022/lib/admin/architecture/elements/rule.component.mjs +4 -4
  49. package/esm2022/lib/admin/architecture/elements/source.component.mjs +4 -4
  50. package/esm2022/lib/admin/architecture/elements/state.component.mjs +4 -5
  51. package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +4 -4
  52. package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +4 -4
  53. package/esm2022/lib/admin/architecture/elements/type.component.mjs +6 -7
  54. package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +5 -5
  55. package/esm2022/lib/admin/architecture/elements/utility.component.mjs +4 -4
  56. package/esm2022/lib/admin/architecture/elements/view.component.mjs +4 -4
  57. package/esm2022/lib/admin/architecture/elements/widget.component.mjs +4 -5
  58. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +11 -6
  59. package/esm2022/lib/admin/core/ace.input.mjs +14 -13
  60. package/esm2022/lib/admin/core/color-picker.input.mjs +4 -4
  61. package/esm2022/lib/admin/core/localized-string.component.mjs +7 -6
  62. package/esm2022/lib/admin/core/search.input.mjs +5 -5
  63. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +7 -6
  64. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +18 -12
  65. package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +4 -4
  66. package/esm2022/lib/admin/document-trace/timeline.mjs +1 -1
  67. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +5 -5
  68. package/esm2022/lib/admin/form/designer/box-designer.component.mjs +7 -7
  69. package/esm2022/lib/admin/form/designer/declarations.mjs +1 -1
  70. package/esm2022/lib/admin/form/designer/design-control.component.mjs +4 -4
  71. package/esm2022/lib/admin/form/designer/properties.component.mjs +5 -5
  72. package/esm2022/lib/admin/form/designer/section.component.mjs +4 -4
  73. package/esm2022/lib/admin/form/designer/settings.component.mjs +4 -4
  74. package/esm2022/lib/admin/form/form.resolve.service.mjs +4 -4
  75. package/esm2022/lib/admin/form/workflow/node-ref.mjs +1 -1
  76. package/esm2022/lib/admin/form/workflow/node.component.mjs +34 -34
  77. package/esm2022/lib/admin/form/workflow/role-node.component.mjs +4 -4
  78. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +33 -33
  79. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +8 -8
  80. package/esm2022/lib/admin/patterns/patterns.component.mjs +4 -4
  81. package/esm2022/lib/admin/permissions/permissions.component.mjs +4 -4
  82. package/esm2022/lib/admin/positions/positions-popup.component.mjs +7 -6
  83. package/esm2022/lib/admin/positions/positions.component.mjs +8 -8
  84. package/esm2022/lib/admin/profiler/outofoffice.component.mjs +5 -5
  85. package/esm2022/lib/admin/profiler/profiler.component.mjs +6 -6
  86. package/esm2022/lib/admin/system.service.mjs +15 -11
  87. package/esm2022/lib/admin/utility-ref.mjs +7 -5
  88. package/esm2022/lib/admin/utility-wrapper.component.mjs +4 -4
  89. package/esm2022/lib/admin/utility.pane.component.mjs +4 -4
  90. package/esm2022/lib/app.component.mjs +7 -7
  91. package/esm2022/lib/bizdoc.module.mjs +5 -5
  92. package/esm2022/lib/browse/browse-items.component.mjs +34 -33
  93. package/esm2022/lib/browse/browse.mobile.component.mjs +11 -8
  94. package/esm2022/lib/browse/browse.pane.component.mjs +9 -9
  95. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +11 -11
  96. package/esm2022/lib/browse/filter/filter.component.mjs +27 -39
  97. package/esm2022/lib/browse/folders-menu.component.mjs +4 -4
  98. package/esm2022/lib/chat/chat-info.mjs +9 -8
  99. package/esm2022/lib/chat/chat.mobile.component.mjs +4 -4
  100. package/esm2022/lib/chat/chat.service.mjs +6 -6
  101. package/esm2022/lib/chat/contacts.component.mjs +9 -8
  102. package/esm2022/lib/chat/contacts.pane.component.mjs +4 -4
  103. package/esm2022/lib/chat/conversation.component.mjs +7 -7
  104. package/esm2022/lib/chat/conversation.pane.component.mjs +4 -4
  105. package/esm2022/lib/compose/action/action-picker.component.mjs +6 -9
  106. package/esm2022/lib/compose/action/action-ref.mjs +1 -1
  107. package/esm2022/lib/compose/action/action.base.mjs +1 -1
  108. package/esm2022/lib/compose/action/action.dialog.mjs +5 -5
  109. package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +7 -7
  110. package/esm2022/lib/compose/action/assign-action.component.mjs +4 -4
  111. package/esm2022/lib/compose/action/moveto-action.component.mjs +5 -5
  112. package/esm2022/lib/compose/action/return-action.component.mjs +4 -4
  113. package/esm2022/lib/compose/attachments/attachments.component.mjs +4 -4
  114. package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +4 -4
  115. package/esm2022/lib/compose/attachments/progress-button.directive.mjs +4 -4
  116. package/esm2022/lib/compose/box/box.component.mjs +4 -4
  117. package/esm2022/lib/compose/box/control.component.mjs +4 -4
  118. package/esm2022/lib/compose/box/row.component.mjs +4 -4
  119. package/esm2022/lib/compose/can-deactivate-changes.service.mjs +4 -4
  120. package/esm2022/lib/compose/comments/comment.component.mjs +17 -14
  121. package/esm2022/lib/compose/comments/comments.component.mjs +6 -6
  122. package/esm2022/lib/compose/comments/comments.pane.component.mjs +5 -5
  123. package/esm2022/lib/compose/comments/edit-comment.component.mjs +4 -4
  124. package/esm2022/lib/compose/comments/edits.component.mjs +4 -4
  125. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +5 -5
  126. package/esm2022/lib/compose/comments/votes.component.mjs +4 -4
  127. package/esm2022/lib/compose/compose-resolve.service.mjs +4 -4
  128. package/esm2022/lib/compose/compose.mobile.component.mjs +8 -8
  129. package/esm2022/lib/compose/compose.pane.component.mjs +11 -11
  130. package/esm2022/lib/compose/copy/copy.dialog.mjs +4 -4
  131. package/esm2022/lib/compose/dismiss.service.mjs +4 -4
  132. package/esm2022/lib/compose/document-resolve.service.mjs +7 -7
  133. package/esm2022/lib/compose/document-resolver.service.mjs +4 -4
  134. package/esm2022/lib/compose/document.component.mjs +4 -4
  135. package/esm2022/lib/compose/document.mobile.component.mjs +4 -4
  136. package/esm2022/lib/compose/document.pane.component.mjs +4 -4
  137. package/esm2022/lib/compose/events/events.component.mjs +4 -4
  138. package/esm2022/lib/compose/form-ref.mjs +1 -1
  139. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +4 -4
  140. package/esm2022/lib/compose/form.component.mjs +58 -22
  141. package/esm2022/lib/compose/new-menu.component.mjs +7 -6
  142. package/esm2022/lib/compose/overlay.component.exp.mjs +4 -4
  143. package/esm2022/lib/compose/privilage.directive.mjs +7 -7
  144. package/esm2022/lib/compose/recipient-resolver.service.mjs +4 -4
  145. package/esm2022/lib/compose/state.component.mjs +4 -4
  146. package/esm2022/lib/compose/tag/tags.component.mjs +4 -4
  147. package/esm2022/lib/compose/trace/flow.component.mjs +16 -17
  148. package/esm2022/lib/compose/trace/people.component.mjs +14 -9
  149. package/esm2022/lib/compose/trace/trace.base.mjs +6 -7
  150. package/esm2022/lib/compose/trace/trace.component.mjs +5 -5
  151. package/esm2022/lib/compose/trace/trace.pane.component.mjs +4 -4
  152. package/esm2022/lib/compose/version-compare/version-compare.component.mjs +5 -4
  153. package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +14 -14
  154. package/esm2022/lib/compose/version-compare/version.pane.component.mjs +4 -4
  155. package/esm2022/lib/core/account.service.mjs +4 -4
  156. package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +4 -4
  157. package/esm2022/lib/core/animations.mjs +1 -1
  158. package/esm2022/lib/core/authentication.mjs +1 -4
  159. package/esm2022/lib/core/avatar/avatar.component.mjs +52 -43
  160. package/esm2022/lib/core/base.mjs +1 -1
  161. package/esm2022/lib/core/checkbox.mjs +4 -4
  162. package/esm2022/lib/core/colors.mjs +1 -1
  163. package/esm2022/lib/core/component-factory-resolver.mjs +5 -5
  164. package/esm2022/lib/core/configuration.mjs +1 -1
  165. package/esm2022/lib/core/datasource.service.mjs +4 -4
  166. package/esm2022/lib/core/decorators.mjs +1 -1
  167. package/esm2022/lib/core/document-factory.service.mjs +4 -11
  168. package/esm2022/lib/core/fields/address.designer.mjs +4 -4
  169. package/esm2022/lib/core/fields/address.field.mjs +4 -4
  170. package/esm2022/lib/core/fields/autocomplete.field.mjs +7 -7
  171. package/esm2022/lib/core/fields/axes-picker.designer.mjs +4 -4
  172. package/esm2022/lib/core/fields/axes-picker.field.mjs +4 -4
  173. package/esm2022/lib/core/fields/checkbox.designer.mjs +4 -4
  174. package/esm2022/lib/core/fields/checkbox.field.mjs +4 -4
  175. package/esm2022/lib/core/fields/checklist.designer.mjs +4 -4
  176. package/esm2022/lib/core/fields/checklist.field.mjs +4 -4
  177. package/esm2022/lib/core/fields/date-range.designer.mjs +4 -4
  178. package/esm2022/lib/core/fields/date-range.field.mjs +4 -4
  179. package/esm2022/lib/core/fields/date.designer.mjs +4 -4
  180. package/esm2022/lib/core/fields/date.field.mjs +4 -4
  181. package/esm2022/lib/core/fields/expression.field.mjs +7 -7
  182. package/esm2022/lib/core/fields/file.designer.mjs +4 -4
  183. package/esm2022/lib/core/fields/file.field.mjs +4 -4
  184. package/esm2022/lib/core/fields/html.designer.mjs +4 -4
  185. package/esm2022/lib/core/fields/html.field.mjs +4 -4
  186. package/esm2022/lib/core/fields/input.designer.mjs +4 -4
  187. package/esm2022/lib/core/fields/input.field.mjs +4 -4
  188. package/esm2022/lib/core/fields/localized-string.field.mjs +7 -7
  189. package/esm2022/lib/core/fields/numeric.designer.mjs +4 -4
  190. package/esm2022/lib/core/fields/numeric.field.mjs +4 -4
  191. package/esm2022/lib/core/fields/options.base.mjs +8 -8
  192. package/esm2022/lib/core/fields/options.component.mjs +4 -4
  193. package/esm2022/lib/core/fields/radio-button.designer.mjs +4 -4
  194. package/esm2022/lib/core/fields/radio-button.field.mjs +4 -4
  195. package/esm2022/lib/core/fields/select.designer.mjs +4 -4
  196. package/esm2022/lib/core/fields/select.field.mjs +4 -4
  197. package/esm2022/lib/core/fields/signature.designer.mjs +4 -4
  198. package/esm2022/lib/core/fields/signature.field.mjs +4 -4
  199. package/esm2022/lib/core/fields/switch.field.mjs +4 -4
  200. package/esm2022/lib/core/fields/tags.designer.mjs +4 -4
  201. package/esm2022/lib/core/fields/tags.field.mjs +4 -4
  202. package/esm2022/lib/core/fields/textarea.designer.mjs +4 -4
  203. package/esm2022/lib/core/fields/textarea.field.mjs +4 -4
  204. package/esm2022/lib/core/fields/time.designer.mjs +4 -4
  205. package/esm2022/lib/core/fields/time.field.mjs +4 -4
  206. package/esm2022/lib/core/fields/timespan.field.mjs +7 -7
  207. package/esm2022/lib/core/fields/yesno.designer.mjs +4 -4
  208. package/esm2022/lib/core/fields/yesno.field.mjs +4 -4
  209. package/esm2022/lib/core/firebase.service.mjs +1 -1
  210. package/esm2022/lib/core/functions.mjs +4 -1
  211. package/esm2022/lib/core/guide/guide.component.mjs +4 -4
  212. package/esm2022/lib/core/guide/guide.service.mjs +11 -7
  213. package/esm2022/lib/core/guide/help-tip.component.mjs +5 -5
  214. package/esm2022/lib/core/http.interceptor.mjs +6 -6
  215. package/esm2022/lib/core/hub.service.mjs +4 -4
  216. package/esm2022/lib/core/identity/identity.component.mjs +4 -4
  217. package/esm2022/lib/core/info/attachment-info.service.mjs +4 -4
  218. package/esm2022/lib/core/info/document-info.service.mjs +4 -4
  219. package/esm2022/lib/core/info/location-info.component.mjs +4 -4
  220. package/esm2022/lib/core/info/map-info.mjs +4 -4
  221. package/esm2022/lib/core/inputs/address.input.mjs +4 -4
  222. package/esm2022/lib/core/inputs/auto-complete.input.mjs +7 -6
  223. package/esm2022/lib/core/inputs/combination-picker-body.mjs +10 -12
  224. package/esm2022/lib/core/inputs/combination-picker.mjs +5 -6
  225. package/esm2022/lib/core/inputs/combination-pool.mjs +6 -5
  226. package/esm2022/lib/core/inputs/file.input.mjs +29 -23
  227. package/esm2022/lib/core/inputs/select.input.mjs +4 -4
  228. package/esm2022/lib/core/inputs/signature.input.mjs +4 -4
  229. package/esm2022/lib/core/inputs/time-picker.mjs +7 -7
  230. package/esm2022/lib/core/inputs/timespan.input.mjs +7 -7
  231. package/esm2022/lib/core/layout.component.mjs +11 -5
  232. package/esm2022/lib/core/lottie-animation.exp.mjs +49 -0
  233. package/esm2022/lib/core/mailbox.service.mjs +20 -14
  234. package/esm2022/lib/core/models.mjs +2 -1
  235. package/esm2022/lib/core/none.component.mjs +4 -4
  236. package/esm2022/lib/core/pipes/action.pipe.mjs +4 -4
  237. package/esm2022/lib/core/pipes/calendar.pipe.mjs +4 -4
  238. package/esm2022/lib/core/pipes/date-format.pipe.mjs +4 -4
  239. package/esm2022/lib/core/pipes/daterange.pipe.mjs +7 -7
  240. package/esm2022/lib/core/pipes/difference.pipe.mjs +4 -4
  241. package/esm2022/lib/core/pipes/duration-format.pipe.mjs +4 -4
  242. package/esm2022/lib/core/pipes/duration.pipe.mjs +4 -4
  243. package/esm2022/lib/core/pipes/filter.pipe.mjs +25 -0
  244. package/esm2022/lib/core/pipes/form.pipe.mjs +4 -4
  245. package/esm2022/lib/core/pipes/join.pipe.mjs +4 -4
  246. package/esm2022/lib/core/pipes/localized-string.pipe.mjs +4 -4
  247. package/esm2022/lib/core/pipes/role.pipe.mjs +4 -4
  248. package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +4 -4
  249. package/esm2022/lib/core/pipes/sort.pipe.mjs +8 -30
  250. package/esm2022/lib/core/pipes/state.pipe.mjs +4 -4
  251. package/esm2022/lib/core/pipes/time-ago.pipe.mjs +4 -4
  252. package/esm2022/lib/core/pipes/to-now.pipe.mjs +4 -4
  253. package/esm2022/lib/core/pipes/translate.pipe.mjs +10 -10
  254. package/esm2022/lib/core/pipes/type-value.pipe.mjs +4 -4
  255. package/esm2022/lib/core/pipes/user-name.pipe.mjs +4 -4
  256. package/esm2022/lib/core/popup/popup-ref.mjs +1 -1
  257. package/esm2022/lib/core/popup/popup.component.mjs +4 -4
  258. package/esm2022/lib/core/popup/popup.service.mjs +7 -5
  259. package/esm2022/lib/core/popup/tooltip.directive.mjs +10 -11
  260. package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +4 -4
  261. package/esm2022/lib/core/prompt/mask/mask.component.mjs +4 -4
  262. package/esm2022/lib/core/prompt.service.mjs +6 -6
  263. package/esm2022/lib/core/router.mjs +9 -9
  264. package/esm2022/lib/core/save-changes.dialog.mjs +4 -4
  265. package/esm2022/lib/core/session.service.mjs +47 -36
  266. package/esm2022/lib/core/slots/pane-ref.mjs +2 -2
  267. package/esm2022/lib/core/slots/router.directive.mjs +4 -4
  268. package/esm2022/lib/core/slots/router.service.mjs +6 -5
  269. package/esm2022/lib/core/slots/slots.component.mjs +25 -22
  270. package/esm2022/lib/core/sticky-toolbar.exp.mjs +9 -6
  271. package/esm2022/lib/core/tagging/documents.component.mjs +4 -4
  272. package/esm2022/lib/core/tagging/edit-input.component.mjs +16 -13
  273. package/esm2022/lib/core/tagging/emoji.component.mjs +4 -4
  274. package/esm2022/lib/core/tagging/tagging-item.directive.mjs +4 -4
  275. package/esm2022/lib/core/tagging/tagging.component-base.mjs +4 -4
  276. package/esm2022/lib/core/tagging/tagging.directive.mjs +5 -5
  277. package/esm2022/lib/core/tagging/tagging.pipe.mjs +4 -4
  278. package/esm2022/lib/core/tagging/users.component.mjs +5 -5
  279. package/esm2022/lib/core/translate.service.mjs +5 -4
  280. package/esm2022/lib/core/translations.mjs +8 -6
  281. package/esm2022/lib/core/virtual-tabs.component.exp.mjs +7 -7
  282. package/esm2022/lib/core/window-title.service.mjs +14 -6
  283. package/esm2022/lib/cube/accum/accum.component.mjs +4 -4
  284. package/esm2022/lib/cube/chart/chart.component.mjs +8 -7
  285. package/esm2022/lib/cube/cube-info.service.mjs +13 -10
  286. package/esm2022/lib/cube/cube-menu.component.mjs +4 -4
  287. package/esm2022/lib/cube/cube-view.component.mjs +5 -5
  288. package/esm2022/lib/cube/cube.service.mjs +21 -19
  289. package/esm2022/lib/cube/declarations.mjs +1 -1
  290. package/esm2022/lib/cube/explore/document-item.component.mjs +4 -4
  291. package/esm2022/lib/cube/explore/explore-item.component.mjs +4 -4
  292. package/esm2022/lib/cube/explore/explore-items.component.mjs +8 -8
  293. package/esm2022/lib/cube/explore/explore.pane.component.mjs +5 -5
  294. package/esm2022/lib/cube/explore/item-resolver.service.mjs +7 -7
  295. package/esm2022/lib/cube/explore/item.pane.component.mjs +5 -5
  296. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +4 -4
  297. package/esm2022/lib/cube/filter/filter.component.mjs +14 -13
  298. package/esm2022/lib/cube/grid/grid.component.mjs +9 -8
  299. package/esm2022/lib/cube/matrix/matrix.base.mjs +20 -18
  300. package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +4 -4
  301. package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +5 -5
  302. package/esm2022/lib/cube/matrix/popup.component.mjs +4 -4
  303. package/esm2022/lib/cube/matrix/table.component.mjs +9 -8
  304. package/esm2022/lib/cube/parallel/item.mjs +1 -2
  305. package/esm2022/lib/cube/parallel/parallel.component.mjs +5 -5
  306. package/esm2022/lib/cube/pivot/pivot.component.mjs +16 -7
  307. package/esm2022/lib/cube/spreadsheet/spreadsheet.component.mjs +6 -6
  308. package/esm2022/lib/cube/spreadsheet/spreadsheet.container.exp.mjs +4 -4
  309. package/esm2022/lib/cube/sum/sum.component.mjs +19 -18
  310. package/esm2022/lib/cube/view-base.mjs +5 -5
  311. package/esm2022/lib/cube/view.mobile.component.mjs +5 -5
  312. package/esm2022/lib/cube/view.pane.component.mjs +4 -4
  313. package/esm2022/lib/dashboard/actions/actions.widget.mjs +7 -6
  314. package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +4 -8
  315. package/esm2022/lib/dashboard/cube/compare.widget.mjs +5 -7
  316. package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +8 -6
  317. package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +4 -4
  318. package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +5 -4
  319. package/esm2022/lib/dashboard/cube/document-state.widget.mjs +6 -5
  320. package/esm2022/lib/dashboard/cube/documents.widget.mjs +4 -4
  321. package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +4 -4
  322. package/esm2022/lib/dashboard/dashboard.component.mjs +4 -4
  323. package/esm2022/lib/dashboard/dashboard.pane.component.mjs +4 -4
  324. package/esm2022/lib/dashboard/recents/recents.widget.mjs +13 -16
  325. package/esm2022/lib/dashboard/score/activity.widget.mjs +6 -5
  326. package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +12 -5
  327. package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +9 -8
  328. package/esm2022/lib/dashboard/score/pending-results.widget.mjs +4 -4
  329. package/esm2022/lib/dashboard/score/personal-score.widget.mjs +19 -18
  330. package/esm2022/lib/dashboard/widget-item.component.mjs +4 -4
  331. package/esm2022/lib/dashboard/widget-ref.mjs +1 -1
  332. package/esm2022/lib/designer.module.mjs +5 -5
  333. package/esm2022/lib/desktop.module.mjs +8 -12
  334. package/esm2022/lib/home/about/about.dialog.mjs +5 -5
  335. package/esm2022/lib/home/home-base.component.mjs +18 -10
  336. package/esm2022/lib/home/home.desktop.component.mjs +14 -24
  337. package/esm2022/lib/home/home.mobile.component.mjs +29 -32
  338. package/esm2022/lib/home/notifications/notifications.component.mjs +21 -23
  339. package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +9 -9
  340. package/esm2022/lib/home/sign/sign.component.mjs +20 -24
  341. package/esm2022/lib/impersonate/impersonate.component.mjs +36 -34
  342. package/esm2022/lib/mobile.module.mjs +8 -11
  343. package/esm2022/lib/modules/chart.module.mjs +13 -11
  344. package/esm2022/lib/modules/circular-gauge.module.mjs +9 -7
  345. package/esm2022/lib/modules/date.adapter.mjs +1 -1
  346. package/esm2022/lib/modules/datepicker.intl.mjs +4 -4
  347. package/esm2022/lib/modules/dayjs.module.mjs +5 -5
  348. package/esm2022/lib/modules/diagram.module.mjs +9 -7
  349. package/esm2022/lib/modules/gantt.module.mjs +11 -9
  350. package/esm2022/lib/modules/grid.module.mjs +9 -7
  351. package/esm2022/lib/modules/linear-gauge.module.mjs +5 -5
  352. package/esm2022/lib/modules/material.module.mjs +5 -5
  353. package/esm2022/lib/modules/paginator.intl.mjs +4 -4
  354. package/esm2022/lib/modules/pivot.module.mjs +9 -7
  355. package/esm2022/lib/modules/schedule.module.mjs +9 -7
  356. package/esm2022/lib/modules/spreadsheet.module.mjs +5 -5
  357. package/esm2022/lib/modules/stepper.intl.mjs +4 -4
  358. package/esm2022/lib/modules/texteditor.module.mjs +7 -6
  359. package/esm2022/lib/notifications/filter.component.mjs +4 -4
  360. package/esm2022/lib/notifications/notifications-table.component.mjs +6 -7
  361. package/esm2022/lib/notifications/notifications.component-base.mjs +1 -1
  362. package/esm2022/lib/notifications/notifications.mobile.component.mjs +4 -4
  363. package/esm2022/lib/notifications/notifications.pane.component.mjs +4 -4
  364. package/esm2022/lib/notifications/notifications.service.mjs +13 -6
  365. package/esm2022/lib/notifications/types/commented.notification.mjs +4 -4
  366. package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +4 -4
  367. package/esm2022/lib/notifications/types/escalated.notification.mjs +4 -4
  368. package/esm2022/lib/notifications/types/invite.notification.mjs +4 -4
  369. package/esm2022/lib/notifications/types/liked.notification.mjs +4 -4
  370. package/esm2022/lib/notifications/types/long-running-task.notification.mjs +4 -4
  371. package/esm2022/lib/notifications/types/notification-base.mjs +4 -4
  372. package/esm2022/lib/notifications/types/nudge.notification.mjs +4 -4
  373. package/esm2022/lib/notifications/types/state-changed.notification.mjs +4 -4
  374. package/esm2022/lib/notifications/types/tagged.notification.mjs +4 -4
  375. package/esm2022/lib/notifications/types/text.notification.mjs +4 -4
  376. package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +4 -4
  377. package/esm2022/lib/options/options.component.mjs +91 -49
  378. package/esm2022/lib/options/options.desktop.component.mjs +26 -0
  379. package/esm2022/lib/options/options.mobile.component.mjs +23 -0
  380. package/esm2022/lib/reports/arguments-component.mjs +4 -4
  381. package/esm2022/lib/reports/cube/documents.component.mjs +4 -4
  382. package/esm2022/lib/reports/cube/grid-documents.component.mjs +4 -4
  383. package/esm2022/lib/reports/cube/performance-hilo.component.mjs +5 -5
  384. package/esm2022/lib/reports/cube/performance-wind.component.mjs +4 -4
  385. package/esm2022/lib/reports/cube/table-documents.component.mjs +6 -5
  386. package/esm2022/lib/reports/cube/usage-args.component.mjs +6 -5
  387. package/esm2022/lib/reports/cube/usage-base.mjs +8 -8
  388. package/esm2022/lib/reports/cube/usage-chart.component.mjs +6 -6
  389. package/esm2022/lib/reports/cube/usage-pivot.component.mjs +5 -5
  390. package/esm2022/lib/reports/cube/usage.component.mjs +4 -4
  391. package/esm2022/lib/reports/report-ref.mjs +1 -1
  392. package/esm2022/lib/reports/report-viewer.component.mjs +5 -5
  393. package/esm2022/lib/reports/report.mobile.component.mjs +4 -4
  394. package/esm2022/lib/reports/report.pane.component.mjs +4 -4
  395. package/esm2022/lib/reports/reports-menu.component.mjs +4 -4
  396. package/esm2022/lib/reports/substitution/substitution.component.mjs +4 -4
  397. package/esm2022/lib/reports/table/table-view.component.mjs +4 -4
  398. package/esm2022/lib/reports/tasks/tasks.component.mjs +4 -4
  399. package/esm2022/lib/routes.desktop.mjs +24 -5
  400. package/esm2022/lib/routes.mobile.mjs +12 -2
  401. package/esm2022/lib/scheduler/schedule.component.mjs +5 -5
  402. package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +4 -4
  403. package/esm2022/lib/scheduler/scheduler.pane.component.mjs +4 -4
  404. package/esm2022/lib/search/cube.component.mjs +8 -9
  405. package/esm2022/lib/search/declarations.mjs +1 -1
  406. package/esm2022/lib/search/document.component.mjs +4 -4
  407. package/esm2022/lib/search/guide.component.mjs +4 -4
  408. package/esm2022/lib/search/path.component.mjs +4 -4
  409. package/esm2022/lib/search/search.service.mjs +5 -5
  410. package/esm2022/lib/shared.module.mjs +15 -15
  411. package/esm2022/lib/system.module.mjs +5 -5
  412. package/esm2022/lib/views/cube/chart.component.mjs +4 -4
  413. package/esm2022/lib/views/cube/cube-base.mjs +4 -4
  414. package/esm2022/lib/views/cube/explore.component.mjs +5 -5
  415. package/esm2022/lib/views/cube/matrix.component.mjs +6 -6
  416. package/esm2022/lib/views/cube/parallel.component.mjs +4 -4
  417. package/esm2022/lib/views/cube/pivot.component.mjs +4 -4
  418. package/esm2022/lib/views/cube/sum.component.mjs +4 -4
  419. package/esm2022/lib/views/cube/view.component.mjs +6 -6
  420. package/esm2022/lib/views/document-view-ref.mjs +1 -1
  421. package/esm2022/lib/views/timeline/timeline.component.mjs +7 -8
  422. package/esm2022/lib/views/view-item.component.mjs +4 -4
  423. package/esm2022/lib/views/views.component.mjs +5 -5
  424. package/esm2022/lib/views/views.mobile.component.mjs +6 -6
  425. package/esm2022/lib/views/views.pane.component.mjs +8 -8
  426. package/esm2022/public-api.mjs +4 -3
  427. package/fesm2022/bizdoc-core.mjs +3267 -3149
  428. package/fesm2022/bizdoc-core.mjs.map +1 -1
  429. package/lib/admin/architecture/cube-axes-filter.component.d.ts +4 -1
  430. package/lib/admin/architecture/declarations.d.ts +14 -9
  431. package/lib/admin/architecture/designer-element.component.d.ts +1 -0
  432. package/lib/admin/architecture/designer-privileges.component.d.ts +4 -2
  433. package/lib/admin/architecture/designer.base.d.ts +1 -4
  434. package/lib/admin/architecture/designer.component.d.ts +3 -3
  435. package/lib/admin/architecture/elements/action.component.d.ts +13 -13
  436. package/lib/admin/architecture/elements/analysis-view.component.d.ts +8 -8
  437. package/lib/admin/architecture/elements/analysis-widget.component.d.ts +7 -7
  438. package/lib/admin/architecture/elements/anomaly-rule.component.d.ts +3 -3
  439. package/lib/admin/architecture/elements/attribute.component.d.ts +1 -1
  440. package/lib/admin/architecture/elements/box-form.component.d.ts +5 -5
  441. package/lib/admin/architecture/elements/configuration-datasource.component.d.ts +1 -1
  442. package/lib/admin/architecture/elements/control.component.d.ts +1 -2
  443. package/lib/admin/architecture/elements/cube-index-utility.component.d.ts +3 -4
  444. package/lib/admin/architecture/elements/cube-view.component.d.ts +4 -4
  445. package/lib/admin/architecture/elements/cube.component.d.ts +9 -10
  446. package/lib/admin/architecture/elements/document-state-widget.component.d.ts +3 -6
  447. package/lib/admin/architecture/elements/documents-report.component.d.ts +4 -5
  448. package/lib/admin/architecture/elements/documents-widget.component.d.ts +5 -5
  449. package/lib/admin/architecture/elements/explore-view.component.d.ts +4 -4
  450. package/lib/admin/architecture/elements/folder.component.d.ts +2 -2
  451. package/lib/admin/architecture/elements/form-invite.dialog.d.ts +7 -7
  452. package/lib/admin/architecture/elements/form.component.d.ts +10 -9
  453. package/lib/admin/architecture/elements/guide.component.d.ts +1 -1
  454. package/lib/admin/architecture/elements/matrix-view.component.d.ts +16 -16
  455. package/lib/admin/architecture/elements/parallel-view.component.d.ts +9 -10
  456. package/lib/admin/architecture/elements/performance-report.component.d.ts +2 -3
  457. package/lib/admin/architecture/elements/performance-widget.component.d.ts +4 -5
  458. package/lib/admin/architecture/elements/pivot-view.component.d.ts +9 -10
  459. package/lib/admin/architecture/elements/report.component.d.ts +1 -1
  460. package/lib/admin/architecture/elements/return-to-role-action.component.d.ts +1 -1
  461. package/lib/admin/architecture/elements/role.component.d.ts +4 -4
  462. package/lib/admin/architecture/elements/source.component.d.ts +2 -3
  463. package/lib/admin/architecture/elements/state.component.d.ts +4 -4
  464. package/lib/admin/architecture/elements/sum-view.component.d.ts +7 -8
  465. package/lib/admin/architecture/elements/tasks-report.component.d.ts +4 -4
  466. package/lib/admin/architecture/elements/type.component.d.ts +8 -4
  467. package/lib/admin/architecture/elements/usage-report.component.d.ts +7 -7
  468. package/lib/admin/architecture/elements/widget.component.d.ts +1 -1
  469. package/lib/admin/architecture/icon-picker.component.d.ts +5 -3
  470. package/lib/admin/core/ace.input.d.ts +2 -5
  471. package/lib/admin/core/localized-string.component.d.ts +3 -2
  472. package/lib/admin/document-trace/document-trace.component.d.ts +6 -5
  473. package/lib/admin/document-trace/reassign.dialog.d.ts +2 -2
  474. package/lib/admin/document-trace/timeline.d.ts +2 -2
  475. package/lib/admin/form/designer/box-designer.component.d.ts +13 -13
  476. package/lib/admin/form/designer/section.component.d.ts +5 -5
  477. package/lib/admin/form/workflow/node-ref.d.ts +1 -1
  478. package/lib/admin/form/workflow/node.component.d.ts +3 -2
  479. package/lib/admin/form/workflow/role-node.component.d.ts +11 -11
  480. package/lib/admin/form/workflow/workflow.component.d.ts +9 -11
  481. package/lib/admin/indices/manage-cube-index.component.d.ts +3 -3
  482. package/lib/admin/patterns/patterns.component.d.ts +2 -2
  483. package/lib/admin/positions/positions-popup.component.d.ts +1 -1
  484. package/lib/admin/positions/positions.component.d.ts +6 -6
  485. package/lib/admin/profiler/outofoffice.component.d.ts +15 -15
  486. package/lib/admin/profiler/profiler.component.d.ts +3 -3
  487. package/lib/admin/system.service.d.ts +8 -9
  488. package/lib/admin/utility-ref.d.ts +2 -2
  489. package/lib/browse/browse-items.component.d.ts +6 -7
  490. package/lib/browse/browse.mobile.component.d.ts +2 -2
  491. package/lib/browse/browse.pane.component.d.ts +2 -2
  492. package/lib/browse/filter/filter.component.d.ts +10 -11
  493. package/lib/chat/chat-info.d.ts +1 -1
  494. package/lib/chat/chat.service.d.ts +1 -1
  495. package/lib/chat/conversation.component.d.ts +2 -2
  496. package/lib/compose/action/action.base.d.ts +2 -1
  497. package/lib/compose/action/assign-action.component.d.ts +5 -5
  498. package/lib/compose/action/moveto-action.component.d.ts +3 -3
  499. package/lib/compose/action/return-action.component.d.ts +4 -4
  500. package/lib/compose/box/box.component.d.ts +1 -1
  501. package/lib/compose/comments/comments.component.d.ts +4 -4
  502. package/lib/compose/compose.mobile.component.d.ts +5 -5
  503. package/lib/compose/compose.pane.component.d.ts +3 -3
  504. package/lib/compose/copy/copy.dialog.d.ts +1 -1
  505. package/lib/compose/form-ref.d.ts +5 -5
  506. package/lib/compose/form.component.d.ts +36 -2
  507. package/lib/compose/new-menu.component.d.ts +2 -1
  508. package/lib/compose/privilage.directive.d.ts +1 -1
  509. package/lib/compose/tag/tags.component.d.ts +1 -1
  510. package/lib/compose/trace/flow.component.d.ts +1 -0
  511. package/lib/compose/trace/people.component.d.ts +5 -2
  512. package/lib/compose/trace/trace.base.d.ts +1 -1
  513. package/lib/compose/version-compare/version-compare.directive.d.ts +1 -1
  514. package/lib/core/account.service.d.ts +1 -1
  515. package/lib/core/authentication.d.ts +2 -2
  516. package/lib/core/avatar/avatar.component.d.ts +13 -11
  517. package/lib/core/base.d.ts +9 -9
  518. package/lib/core/colors.d.ts +1 -0
  519. package/lib/core/configuration.d.ts +3 -2
  520. package/lib/core/datasource.service.d.ts +1 -1
  521. package/lib/core/document-factory.service.d.ts +0 -1
  522. package/lib/core/fields/address.designer.d.ts +3 -3
  523. package/lib/core/fields/address.field.d.ts +1 -1
  524. package/lib/core/fields/autocomplete.field.d.ts +5 -5
  525. package/lib/core/fields/axes-picker.designer.d.ts +3 -3
  526. package/lib/core/fields/axes-picker.field.d.ts +1 -1
  527. package/lib/core/fields/checkbox.designer.d.ts +2 -2
  528. package/lib/core/fields/checkbox.field.d.ts +1 -1
  529. package/lib/core/fields/checklist.designer.d.ts +4 -4
  530. package/lib/core/fields/checklist.field.d.ts +1 -2
  531. package/lib/core/fields/date-range.designer.d.ts +6 -6
  532. package/lib/core/fields/date-range.field.d.ts +2 -2
  533. package/lib/core/fields/date.designer.d.ts +5 -5
  534. package/lib/core/fields/file.designer.d.ts +3 -3
  535. package/lib/core/fields/html.designer.d.ts +4 -4
  536. package/lib/core/fields/input.designer.d.ts +8 -9
  537. package/lib/core/fields/numeric.designer.d.ts +7 -7
  538. package/lib/core/fields/options.base.d.ts +1 -1
  539. package/lib/core/fields/radio-button.designer.d.ts +3 -3
  540. package/lib/core/fields/radio-button.field.d.ts +2 -3
  541. package/lib/core/fields/select.designer.d.ts +5 -5
  542. package/lib/core/fields/select.field.d.ts +1 -2
  543. package/lib/core/fields/signature.designer.d.ts +2 -2
  544. package/lib/core/fields/switch.field.d.ts +1 -1
  545. package/lib/core/fields/textarea.designer.d.ts +6 -6
  546. package/lib/core/fields/time.designer.d.ts +5 -5
  547. package/lib/core/fields/yesno.designer.d.ts +3 -3
  548. package/lib/core/fields/yesno.field.d.ts +1 -1
  549. package/lib/core/firebase.service.d.ts +1 -1
  550. package/lib/core/functions.d.ts +7 -4
  551. package/lib/core/guide/help-tip.component.d.ts +1 -1
  552. package/lib/core/http.interceptor.d.ts +1 -1
  553. package/lib/core/hub.service.d.ts +2 -2
  554. package/lib/core/inputs/address.input.d.ts +4 -4
  555. package/lib/core/inputs/auto-complete.input.d.ts +4 -4
  556. package/lib/core/inputs/combination-picker-body.d.ts +2 -2
  557. package/lib/core/inputs/file.input.d.ts +4 -4
  558. package/lib/core/inputs/time-picker.d.ts +2 -2
  559. package/lib/core/inputs/timespan.input.d.ts +7 -7
  560. package/lib/core/{lottie-animation.d.ts → lottie-animation.exp.d.ts} +0 -1
  561. package/lib/core/mailbox.service.d.ts +2 -3
  562. package/lib/core/models.d.ts +6 -5
  563. package/lib/core/pipes/filter.pipe.d.ts +7 -0
  564. package/lib/core/pipes/localized-string.pipe.d.ts +1 -1
  565. package/lib/core/pipes/sort.pipe.d.ts +1 -6
  566. package/lib/core/pipes/time-ago.pipe.d.ts +1 -1
  567. package/lib/core/pipes/user-name.pipe.d.ts +1 -1
  568. package/lib/core/popup/popup-ref.d.ts +4 -4
  569. package/lib/core/popup/tooltip.directive.d.ts +2 -3
  570. package/lib/core/router.d.ts +3 -3
  571. package/lib/core/session.service.d.ts +11 -8
  572. package/lib/core/slots/pane-ref.d.ts +16 -16
  573. package/lib/core/slots/router.directive.d.ts +2 -2
  574. package/lib/core/slots/router.service.d.ts +1 -1
  575. package/lib/core/slots/slots.component.d.ts +3 -3
  576. package/lib/core/sticky-toolbar.exp.d.ts +1 -0
  577. package/lib/core/tagging/edit-input.component.d.ts +5 -5
  578. package/lib/core/tagging/emoji.component.d.ts +1 -1
  579. package/lib/core/tagging/tagging.component-base.d.ts +1 -1
  580. package/lib/core/tagging/tagging.directive.d.ts +1 -1
  581. package/lib/core/tagging/tagging.pipe.d.ts +1 -1
  582. package/lib/core/translate.service.d.ts +2 -2
  583. package/lib/core/translations.d.ts +2 -1049
  584. package/lib/core/virtual-tabs.component.exp.d.ts +2 -2
  585. package/lib/core/window-title.service.d.ts +2 -1
  586. package/lib/cube/accum/accum.component.d.ts +1 -1
  587. package/lib/cube/chart/chart.component.d.ts +5 -5
  588. package/lib/cube/cube-info.service.d.ts +1 -1
  589. package/lib/cube/cube.service.d.ts +2 -2
  590. package/lib/cube/declarations.d.ts +3 -3
  591. package/lib/cube/explore/explore-items.component.d.ts +2 -2
  592. package/lib/cube/filter/filter.component.d.ts +1 -1
  593. package/lib/cube/grid/grid.component.d.ts +4 -4
  594. package/lib/cube/matrix/matrix.base.d.ts +9 -8
  595. package/lib/cube/matrix/matrix.pane.component.d.ts +2 -1
  596. package/lib/cube/matrix/table.component.d.ts +3 -3
  597. package/lib/cube/pivot/pivot.component.d.ts +6 -7
  598. package/lib/cube/spreadsheet/spreadsheet.component.d.ts +3 -3
  599. package/lib/cube/sum/sum.component.d.ts +5 -5
  600. package/lib/cube/view-base.d.ts +3 -2
  601. package/lib/cube/view.mobile.component.d.ts +1 -1
  602. package/lib/dashboard/cube/accum-cube.widget.d.ts +0 -1
  603. package/lib/dashboard/cube/cube-analysis.base.d.ts +9 -6
  604. package/lib/dashboard/cube/filter/filter.component.d.ts +3 -2
  605. package/lib/dashboard/recents/recents.widget.d.ts +5 -6
  606. package/lib/dashboard/score/activity.widget.d.ts +1 -0
  607. package/lib/dashboard/score/peers-performance.widget.d.ts +1 -0
  608. package/lib/dashboard/score/personal-score.widget.d.ts +2 -4
  609. package/lib/desktop.module.d.ts +5 -6
  610. package/lib/home/about/about.dialog.d.ts +2 -2
  611. package/lib/home/home-base.component.d.ts +2 -0
  612. package/lib/home/home.desktop.component.d.ts +6 -9
  613. package/lib/home/home.mobile.component.d.ts +4 -6
  614. package/lib/home/notifications/notifications.component.d.ts +3 -5
  615. package/lib/home/outofoffice/outofoffice.component.d.ts +3 -3
  616. package/lib/home/sign/sign.component.d.ts +4 -2
  617. package/lib/impersonate/impersonate.component.d.ts +11 -12
  618. package/lib/mobile.module.d.ts +3 -3
  619. package/lib/modules/chart.module.d.ts +1 -0
  620. package/lib/modules/circular-gauge.module.d.ts +1 -0
  621. package/lib/modules/diagram.module.d.ts +1 -0
  622. package/lib/modules/gantt.module.d.ts +1 -0
  623. package/lib/modules/grid.module.d.ts +1 -0
  624. package/lib/modules/pivot.module.d.ts +1 -0
  625. package/lib/modules/schedule.module.d.ts +1 -0
  626. package/lib/notifications/filter.component.d.ts +2 -2
  627. package/lib/options/options.component.d.ts +54 -31
  628. package/lib/options/options.desktop.component.d.ts +10 -0
  629. package/lib/options/options.mobile.component.d.ts +9 -0
  630. package/lib/reports/arguments-component.d.ts +2 -2
  631. package/lib/reports/cube/performance-hilo.component.d.ts +1 -1
  632. package/lib/reports/cube/performance-wind.component.d.ts +2 -2
  633. package/lib/reports/cube/usage-args.component.d.ts +3 -1
  634. package/lib/reports/cube/usage-base.d.ts +9 -7
  635. package/lib/reports/cube/usage-chart.component.d.ts +1 -1
  636. package/lib/reports/cube/usage-pivot.component.d.ts +1 -1
  637. package/lib/reports/report.mobile.component.d.ts +3 -1
  638. package/lib/search/cube.component.d.ts +1 -1
  639. package/lib/search/declarations.d.ts +2 -2
  640. package/lib/shared.module.d.ts +154 -153
  641. package/lib/views/cube/chart.component.d.ts +2 -2
  642. package/lib/views/cube/cube-base.d.ts +6 -6
  643. package/lib/views/cube/sum.component.d.ts +2 -2
  644. package/lib/views/timeline/timeline.component.d.ts +3 -2
  645. package/lib/views/views.component.d.ts +1 -1
  646. package/package.json +19 -18
  647. package/public-api.d.ts +3 -2
  648. package/assets/themes/readme.md +0 -0
  649. package/esm2022/lib/core/lottie-animation.mjs +0 -48
  650. package/esm2022/lib/home/options/options.component.mjs +0 -97
  651. package/esm2022/lib/options/options.service.mjs +0 -42
  652. package/lib/home/options/options.component.d.ts +0 -45
  653. package/lib/options/options.service.d.ts +0 -14
@@ -67,13 +67,15 @@ class InfoTool extends ToolBase {
67
67
  this.tap = tap;
68
68
  }
69
69
  }
70
+ /** */
70
71
  let DocumentTraceComponent = class DocumentTraceComponent {
71
72
  getTool(action) {
72
73
  let tool;
73
74
  if (action === 'info') {
74
75
  tool = new InfoTool(this.diagram, this._tap);
76
+ return tool;
75
77
  }
76
- return tool;
78
+ return null;
77
79
  }
78
80
  /** workflow ctor */
79
81
  constructor(_utilityRef, _service, _session, _pane, _router, _sb, _translate, _popup, _guide, _cd, _fb) {
@@ -90,7 +92,10 @@ let DocumentTraceComponent = class DocumentTraceComponent {
90
92
  this._fb = _fb;
91
93
  this.theme = this._session.theme.dark ? 'Material3Dark' : 'Material3';
92
94
  this.accent = this._session.getAccent();
93
- this.form = this._fb.group({ search: null, formId: null });
95
+ this.form = this._fb.group({
96
+ search: undefined,
97
+ formId: undefined
98
+ });
94
99
  this.diagramConstraints = DiagramConstraints.Default | DiagramConstraints.Bridging |
95
100
  DiagramConstraints.LineRouting |
96
101
  DiagramConstraints.Pan |
@@ -139,7 +144,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
139
144
  this._destroy = new Subject();
140
145
  this._dateschange = new Subject();
141
146
  this.nodeDefaults = (node) => {
142
- const { indicator, virtual } = node.addInfo || {};
147
+ const { indicator } = node.addInfo || {};
143
148
  if (indicator) {
144
149
  node.constraints = NodeConstraints.PointerEvents | NodeConstraints.Tooltip,
145
150
  node.style.strokeWidth = 0,
@@ -154,7 +159,6 @@ let DocumentTraceComponent = class DocumentTraceComponent {
154
159
  return node;
155
160
  };
156
161
  this.connDefaults = (connector) => {
157
- const { virtual } = connector.addInfo || {};
158
162
  connector.constraints = ConnectorConstraints.ReadOnly & ~ConnectorConstraints.Select;
159
163
  this._decorateConnector(connector);
160
164
  };
@@ -269,7 +273,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
269
273
  _timeline() {
270
274
  const items = [], submissions = [];
271
275
  let minDate, maxDate, estimate;
272
- this.model.log.forEach(l => {
276
+ for (let l of this.model.log) {
273
277
  const { time, userId } = l;
274
278
  switch (l.type) {
275
279
  case 'Submit':
@@ -285,7 +289,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
285
289
  maxDate = time;
286
290
  if (l.estimate)
287
291
  estimate = true;
288
- });
292
+ }
289
293
  this.timeline = {
290
294
  items, minDate, maxDate,
291
295
  submissions, estimate
@@ -443,7 +447,7 @@ let DocumentTraceComponent = class DocumentTraceComponent {
443
447
  this._router.collapse();
444
448
  }
445
449
  else
446
- this.node = null;
450
+ this.node = undefined;
447
451
  }
448
452
  highlightTime(time) {
449
453
  this.timeline.date = time;
@@ -456,7 +460,9 @@ let DocumentTraceComponent = class DocumentTraceComponent {
456
460
  for (let i = 0; i < this.diagram.connectors.length; i++)
457
461
  this._decorateConnector(this.diagram.connectors[i]);
458
462
  }
459
- const ids = this.timeline.log.filter(l => l.nodeId && l.time === time).map(l => l.nodeId).
463
+ const ids = this.timeline.log.
464
+ filter(l => l.nodeId && l.time === time).
465
+ map(l => l.nodeId).
460
466
  filter((v, i, a) => a.indexOf(v) === i);
461
467
  this._highlight(ids);
462
468
  this.diagram.dataBind();
@@ -495,15 +501,15 @@ let DocumentTraceComponent = class DocumentTraceComponent {
495
501
  this._destroy.next();
496
502
  this._destroy.complete();
497
503
  }
498
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", 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
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" } }, 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: "@switch (mode) {\r\n<!-- diagram -->\r\n @case ('diagram') {\r\n<div class=\"column flex\">\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 flex\">\r\n <!-- timeline -->\r\n @if (timeline?.items.length > 1) {\r\n <div class=\"timeline\" data-help=\"timeline\">\r\n @for (date of timeline.items; track date; let last = $last) {\r\n <div class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n @if (!last || !timeline.estimate) {\r\n @if (date.userId) {\r\n <span class=\"who\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n }\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n } @else {\r\n {{'Estimate' | translate}}\r\n }\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"flex\" #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n</div>\r\n }\r\n<!-- browse -->\r\n @default {\r\n<div class=\"flex column fill\">\r\n <mat-toolbar class=\"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 class=\"flex\" [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 <!-- 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 }\r\n}\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column gap\">\r\n <mat-form-field subscriptSizing=\"dynamic\">\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 subscriptSizing=\"dynamic\">\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;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"], dependencies: [{ 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: i10.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i11.RangeNavigatorComponent, selector: "ejs-rangenavigator", inputs: ["allowIntervalData", "allowSnapping", "animationDuration", "background", "dataSource", "disableRangeSelector", "enableDeferredUpdate", "enableGrouping", "enablePersistence", "enableRtl", "groupBy", "height", "interval", "intervalType", "labelFormat", "labelIntersectAction", "labelPlacement", "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: i11.RangenavigatorSeriesDirective, selector: "e-rangenavigator-series-collection>e-rangenavigator-series", inputs: ["animation", "border", "dashArray", "dataSource", "fill", "opacity", "query", "type", "width", "xName", "yName"] }, { kind: "directive", type: i11.RangenavigatorSeriesCollectionDirective, selector: "ej-rangenavigator>e-rangenavigator-series-collection" }, { kind: "directive", type: i12.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i13.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i13.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i13.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i13.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i13.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i13.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i13.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i13.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i13.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i13.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i14.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i14.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i15.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i16.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i17.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i17.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i18.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i19.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: i20.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i21.StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "directive", type: i22.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i23.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i24.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: i26.UserNamePipe, name: "userName" }, { kind: "pipe", type: i27.TranslatePipe, name: "translate" }], animations: [trigger('element', EnterExitRight)] }); }
504
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", 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 }); }
505
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" } }, 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: "@switch (mode) {\r\n<!-- diagram -->\r\n @case ('diagram') {\r\n<div class=\"column flex\">\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 flex\">\r\n <!-- timeline -->\r\n @if (timeline?.items.length > 1) {\r\n <div class=\"timeline\" data-help=\"timeline\">\r\n @for (date of timeline.items; track date; let last = $last) {\r\n <div class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n @if (!last || !timeline.estimate) {\r\n @if (date.userId) {\r\n <span class=\"who\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n }\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n } @else {\r\n {{'Estimate' | translate}}\r\n }\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"flex\" #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n</div>\r\n }\r\n<!-- browse -->\r\n @default {\r\n<div class=\"flex column fill\">\r\n <mat-toolbar class=\"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 class=\"flex\" [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 <!-- 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 }\r\n}\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column gap\">\r\n <mat-form-field subscriptSizing=\"dynamic\">\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 subscriptSizing=\"dynamic\">\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;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"], dependencies: [{ 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: i10.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i11.RangeNavigatorComponent, selector: "ejs-rangenavigator", inputs: ["allowIntervalData", "allowSnapping", "animationDuration", "background", "dataSource", "disableRangeSelector", "enableDeferredUpdate", "enableGrouping", "enablePersistence", "enableRtl", "groupBy", "height", "interval", "intervalType", "labelFormat", "labelIntersectAction", "labelPlacement", "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: i11.RangenavigatorSeriesDirective, selector: "e-rangenavigator-series-collection>e-rangenavigator-series", inputs: ["animation", "border", "dashArray", "dataSource", "fill", "opacity", "query", "type", "width", "xName", "yName"] }, { kind: "directive", type: i11.RangenavigatorSeriesCollectionDirective, selector: "ej-rangenavigator>e-rangenavigator-series-collection" }, { kind: "directive", type: i12.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i13.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i13.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i13.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i13.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i13.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i13.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i13.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i13.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i13.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i13.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i14.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i14.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i15.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i16.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i17.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i17.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i18.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i19.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: i20.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i21.StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "directive", type: i22.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i23.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i24.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: i26.UserNamePipe, name: "userName" }, { kind: "pipe", type: i27.TranslatePipe, name: "translate" }], animations: [trigger('element', EnterExitRight)] }); }
500
506
  };
501
507
  DocumentTraceComponent = __decorate([
502
508
  BizDoc({ selector: 'bizdoc-trace-utility' })
503
509
  /** workflow component*/
504
510
  ], DocumentTraceComponent);
505
511
  export { DocumentTraceComponent };
506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: DocumentTraceComponent, decorators: [{
512
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DocumentTraceComponent, decorators: [{
507
513
  type: Component,
508
514
  args: [{ animations: [trigger('element', EnterExitRight)], template: "@switch (mode) {\r\n<!-- diagram -->\r\n @case ('diagram') {\r\n<div class=\"column flex\">\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 flex\">\r\n <!-- timeline -->\r\n @if (timeline?.items.length > 1) {\r\n <div class=\"timeline\" data-help=\"timeline\">\r\n @for (date of timeline.items; track date; let last = $last) {\r\n <div class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n @if (!last || !timeline.estimate) {\r\n @if (date.userId) {\r\n <span class=\"who\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n }\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n } @else {\r\n {{'Estimate' | translate}}\r\n }\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"flex\" #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n</div>\r\n }\r\n<!-- browse -->\r\n @default {\r\n<div class=\"flex column fill\">\r\n <mat-toolbar class=\"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 class=\"flex\" [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 <!-- 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 }\r\n}\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column gap\">\r\n <mat-form-field subscriptSizing=\"dynamic\">\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 subscriptSizing=\"dynamic\">\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;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"] }]
509
515
  }], ctorParameters: () => [{ type: i28.UtilityRef, decorators: [{
@@ -528,4 +534,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
528
534
  type: HostListener,
529
535
  args: ['window:keydown.f1', ['$event']]
530
536
  }] } });
531
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9kb2N1bWVudC10cmFjZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLFlBQVksRUFBOEMsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFDTCxrQkFBa0IsRUFBa0IsZUFBZSxFQUFzQyxtQkFBbUIsRUFDNUcsUUFBUSxFQUFFLE9BQU8sRUFBZ0UsWUFBWSxFQUFhLG9CQUFvQixFQUF5QyxxQkFBcUIsRUFDN0wsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxN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QUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBM2NVLHNCQUFzQixrQkE0RXZCLFVBQVU7a0dBNUVULHNCQUFzQixrYUFtRXRCLE9BQU8saUZBQ1AsY0FBYyxnREN2STNCLHUwSkEyR0Esa3JNRDVDYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7O0FBSXJDLHNCQUFzQjtJQUZsQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztJQUM3Qyx3QkFBd0I7R0FDWCxzQkFBc0IsQ0E0Y2xDOzsyRkE1Y1ksc0JBQXNCO2tCQVBsQyxTQUFTO2lDQUdJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQzs7MEJBZ0Y3QyxNQUFNOzJCQUFDLFVBQVU7c1RBM0VFLGNBQWM7c0JBQW5DLFNBQVM7dUJBQUMsU0FBUztnQkErREQsVUFBVTtzQkFBNUIsU0FBUzt1QkFBQyxNQUFNO2dCQUNJLFdBQVc7c0JBQS9CLFNBQVM7dUJBQUMsUUFBUTtnQkFFQyxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBQ1MsY0FBYztzQkFBeEMsU0FBUzt1QkFBQyxjQUFjO2dCQWlFekIsS0FBSztzQkFESixZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE9uSW5pdCwgT25EZXN0cm95LCBJbmplY3QsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHtcclxuICBEaWFncmFtQ29uc3RyYWludHMsIFBvaW50UG9ydE1vZGVsLCBOb2RlQ29uc3RyYWludHMsIFNjcm9sbFNldHRpbmdzTW9kZWwsIFNlbGVjdG9yTW9kZWwsIFNlbGVjdG9yQ29uc3RyYWludHMsXHJcbiAgVG9vbEJhc2UsIERpYWdyYW0sIE1vdXNlRXZlbnRBcmdzLCBDb25uZWN0b3JNb2RlbCwgTm9kZU1vZGVsLCBTbmFwU2V0dGluZ3NNb2RlbCwgRGlhZ3JhbVRvb2xzLCBUZXh0TW9kZWwsIENvbm5lY3RvckNvbnN0cmFpbnRzLCBJU2VsZWN0aW9uQ2hhbmdlRXZlbnRBcmdzLCBMYXllck1vZGVsLCBDb25uZWN0aW9uUG9pbnRPcmlnaW4sIExheW91dE1vZGVsXHJcbn0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWRpYWdyYW1zJztcclxuaW1wb3J0IHsgSUNoYW5nZWRFdmVudEFyZ3MsIFJhbmdlTmF2aWdhdG9yIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IGdldFdhcm4gfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEd1aWRlU3RlcCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5UmVmIH0gZnJvbSAnLi4vdXRpbGl0eS1yZWYnO1xyXG5pbXBvcnQgeyBEb2N1bWVudEluZm8sIFN5c3RlbVNlcnZpY2UsIFJhbmdlSW5mbyB9IGZyb20gJy4uL3N5c3RlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHdWlkZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2d1aWRlL2d1aWRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lUmVmIH0gZnJvbSAnLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZic7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25uZWN0b3JEYXRhLCBEaWFncmFtSW5mbywgTW92ZU1vZGVsLCBOb2RlRGF0YSwgVGltZWxpbmUgfSBmcm9tICcuL3RpbWVsaW5lJztcclxuaW1wb3J0IHsgRW50ZXJFeGl0UmlnaHQgfSBmcm9tICcuLi8uLi9jb3JlL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uLy4uL2NvcmUvcG9wdXAvcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IEVsZW1lbnREYXRhLCBUcmFjZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL3RyYWNlLWVsZW1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcblxyXG5jb25zdCBXQVJOTklOR19QQVRIID0gJ00gMTMuNzYzNzM1LDEuODQzMzczNSBIIDYuMzAzNzM0OSBsIC01LjI3LDUuMjcgdiA3LjQ1OTk5OTUgbCA1LjI3LDUuMjcgaCA3LjQ2MDAwMDEgbCA1LjI3LC01LjI3IFYgNy4xMTMzNzM1IFogbSAtMy43MywxNC4yOTk5OTk1IGMgLTAuNzIwMDAwMSwwIC0xLjMwMDAwMDEsLTAuNTggLTEuMzAwMDAwMSwtMS4zIDAsLTAuNzIgMC41OCwtMS4zIDEuMzAwMDAwMSwtMS4zIDAuNzIsMCAxLjMsMC41OCAxLjMsMS4zIDAsMC43MiAtMC41OCwxLjMgLTEuMywxLjMgeiBtIDEsLTQuMyBIIDkuMDMzNzM0OSBWIDUuODQzMzczNSBoIDIuMDAwMDAwMSB6JyxcclxuICBKVU1QX1BBVEggPSAnTSA2LDE4IDE0LjUsMTIgNiw2IFogTSAxNiw2IHYgMTIgaCAyIFYgNiBaJztcclxuXHJcbmZ1bmN0aW9uIGdldFBvcnRzKCk6IFBvaW50UG9ydE1vZGVsW10ge1xyXG4gIHJldHVybiBbXHJcbiAgICB7IGlkOiAncG9ydDEnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLCB5OiAwLjUgfSB9LFxyXG4gICAgeyBpZDogJ3BvcnQyJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMC41LCB5OiAxIH0gfSxcclxuICAgIHsgaWQ6ICdwb3J0MycsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDEsIHk6IDAuNSB9IH0sXHJcbiAgICB7IGlkOiAncG9ydDQnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLjUsIHk6IDAgfSB9XHJcbiAgXTtcclxufVxyXG5cclxuY2xhc3MgSW5mb1Rvb2wgZXh0ZW5kcyBUb29sQmFzZSB7XHJcbiAgcHVibGljIG92ZXJyaWRlIG1vdXNlRG93bihhcmdzOiBNb3VzZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzWzBdO1xyXG4gICAgICBzdXBlci5tb3VzZURvd24oYXJncylcclxuICAgICAgdGhpcy50YXAubmV4dChub2RlKTtcclxuICAgICAgdGhpcy5pbkFjdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFncmFtOiBEaWFncmFtLCBwdWJsaWMgdGFwOiBTdWJqZWN0PE5vZGVNb2RlbD4pIHtcclxuICAgIHN1cGVyKGRpYWdyYW0uY29tbWFuZEhhbmRsZXIpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgU2VhcmNoTW9kZWwge1xyXG4gIHNlYXJjaD86IHN0cmluZywgZm9ybUlkPzogc3RyaW5nXHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudC10cmFjZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCdlbGVtZW50JywgRW50ZXJFeGl0UmlnaHQpXVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtdHJhY2UtdXRpbGl0eScgfSlcclxuLyoqIHdvcmtmbG93IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBEb2N1bWVudFRyYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWdyYW0nKSBkaWFncmFtRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgdGhlbWUgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWwzRGFyaycgOiAnTWF0ZXJpYWwzJztcclxuICBhY2NlbnQgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCgpO1xyXG4gIGRpYWdyYW06IERpYWdyYW07XHJcbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwPFNlYXJjaE1vZGVsPih7IHNlYXJjaDogbnVsbCwgZm9ybUlkOiBudWxsIH0pO1xyXG4gIG1vZGVsOiBEaWFncmFtSW5mbztcclxuICB0aW1lbGluZTogVGltZWxpbmU7XHJcbiAgZGlhZ3JhbUNvbnN0cmFpbnRzOiBEaWFncmFtQ29uc3RyYWludHMgPSBEaWFncmFtQ29uc3RyYWludHMuRGVmYXVsdCB8IERpYWdyYW1Db25zdHJhaW50cy5CcmlkZ2luZyB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuTGluZVJvdXRpbmcgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbiB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuWm9vbTtcclxuICBkaWFncmFtVG9vbDogRGlhZ3JhbVRvb2xzID0gRGlhZ3JhbVRvb2xzLlNpbmdsZVNlbGVjdDtcclxuICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0ID0ge1xyXG4gICAgdHlwZTogJ0NvbXBsZXhIaWVyYXJjaGljYWxUcmVlJyxcclxuICAgIGNvbm5lY3Rpb25Qb2ludE9yaWdpbjogQ29ubmVjdGlvblBvaW50T3JpZ2luLkRpZmZlcmVudFBvaW50LFxyXG4gICAgaG9yaXpvbnRhbFNwYWNpbmc6IDUwLFxyXG4gICAgZW5hYmxlUm91dGluZzogdHJ1ZSxcclxuICAgIHZlcnRpY2FsU3BhY2luZzogNTAsXHJcbiAgICBob3Jpem9udGFsQWxpZ25tZW50OiAnQ2VudGVyJyxcclxuICAgIGNvbm5lY3Rpb25EaXJlY3Rpb246ICdPcmllbnRhdGlvbicsXHJcbiAgICBvcmllbnRhdGlvbjogJ1RvcFRvQm90dG9tJ1xyXG4gIH0gYXMgTGF5b3V0TW9kZWw7XHJcbiAgcmVhZG9ubHkgc25hcFNldHRpbmdzOiBTbmFwU2V0dGluZ3NNb2RlbCA9IHtcclxuICB9O1xyXG4gIHJlYWRvbmx5IHNjcm9sbFNldHRpbmdzOiBTY3JvbGxTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgbWluWm9vbTogLjUsXHJcbiAgICBtYXhab29tOiAyLjVcclxuICB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjY2VudENvbG9yID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoODAwKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9wcmltZXJ5Q29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldFByaW1lcnkoKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtczogU2VsZWN0b3JNb2RlbCA9IHtcclxuICAgIGNvbnN0cmFpbnRzOiBTZWxlY3RvckNvbnN0cmFpbnRzLlVzZXJIYW5kbGUsXHJcbiAgICB1c2VySGFuZGxlczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ2luZm8nLFxyXG4gICAgICAgIHBhdGhEYXRhOiAnTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6JyxcclxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICBzaWRlOiAnUmlnaHQnLFxyXG4gICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnQm90dG9tJyxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgICAgcGF0aENvbG9yOiB0aGlzLl9wcmltZXJ5Q29sb3IsXHJcbiAgICAgICAgc2l6ZTogNDAsXHJcbiAgICAgICAgbWFyZ2luOiB7IHRvcDogMCwgYm90dG9tOiAwLCBsZWZ0OiAwLCByaWdodDogMCB9XHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9O1xyXG4gIHB1YmxpYyBnZXRDdXN0b21Ub29sOiBGdW5jdGlvbiA9IHRoaXMuZ2V0VG9vbC5iaW5kKHRoaXMpO1xyXG4gIG5vZGU6IE5vZGVNb2RlbDtcclxuICBwcml2YXRlIF9zdGFydDogRGF0ZTtcclxuICBwcml2YXRlIF9lbmQ6IERhdGU7XHJcbiAgcHJpdmF0ZSBfaW5mb1JlZjogUGFuZVJlZjxUcmFjZUVsZW1lbnRDb21wb25lbnQ+O1xyXG4gIHB1YmxpYyBnZXRUb29sKGFjdGlvbjogc3RyaW5nKTogVG9vbEJhc2Uge1xyXG4gICAgbGV0IHRvb2w6IFRvb2xCYXNlO1xyXG4gICAgaWYgKGFjdGlvbiA9PT0gJ2luZm8nKSB7XHJcbiAgICAgIHRvb2wgPSBuZXcgSW5mb1Rvb2wodGhpcy5kaWFncmFtLCB0aGlzLl90YXApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvb2w7XHJcbiAgfVxyXG4gIG1vZGU6ICdkaWFncmFtJyB8ICdicm93c2UnIHwgbnVsbCA9ICdicm93c2UnO1xyXG4gIHJhbmdlOiAoRGF0ZSB8IG51bWJlcilbXTtcclxuICByYW5nZURhdGE6IFJhbmdlSW5mb1tdO1xyXG4gIGxvYWRpbmc6IFByb2dyZXNzQmFyTW9kZSA9ICdxdWVyeSc7XHJcbiAgQFZpZXdDaGlsZCgnYXJncycpIGZpbHRlckFyZ3M6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoJykgc2VhcmNoSW5wdXQ6IE1hdElucHV0O1xyXG4gIGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxEb2N1bWVudEluZm8+O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydDogTWF0U29ydDtcclxuICBAVmlld0NoaWxkKFJhbmdlTmF2aWdhdG9yKSByYW5nZU5hdmlnYXRvcjogUmFuZ2VOYXZpZ2F0b3I7XHJcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyA9IFsnbnVtYmVyJywgJ3N1YmplY3QnLCAnc3RhdGVJZCddO1xyXG4gIHByaXZhdGUgX2hpZ2hMaWdodGVkSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhcCA9IG5ldyBTdWJqZWN0PE5vZGVNb2RlbD4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRlc2NoYW5nZSA9IG5ldyBTdWJqZWN0PHsgc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSB9PigpO1xyXG4gIC8qKiB3b3JrZmxvdyBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFV0aWxpdHlSZWYpXHJcbiAgICBwcml2YXRlIF91dGlsaXR5UmVmOiBVdGlsaXR5UmVmPERpYWdyYW1JbmZvLCBNb3ZlTW9kZWwsIERpYWdyYW1JbmZvLCBudW1iZXI+LFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGFuZTogUGFuZVJlZjxEb2N1bWVudFRyYWNlQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BvcHVwOiBQb3B1cCxcclxuICAgIHByaXZhdGUgX2d1aWRlOiBHdWlkZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBub3cgPSBkYXlqcygpO1xyXG4gICAgdGhpcy5fc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICB0aGlzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsM0RhcmsnIDogJ01hdGVyaWFsMyc7XHJcbiAgICAgIHRoaXMuYWNjZW50ID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICAgICAgLy90aGlzLnJhbmdlTmF2aWdhdG9yLnJlZnJlc2goKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fc2VydmljZS5yYW5nZSgpLnN1YnNjcmliZShyID0+IHRoaXMucmFuZ2VEYXRhID0gcik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5fc3RhcnQgPSByLnN0YXJ0LCB0aGlzLl9lbmQgPSByLmVuZDtcclxuICAgICAgdGhpcy5fbGlzdCgpO1xyXG4gICAgfSk7XHJcbiAgICAvL2xldCByID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RyYWNlLXJhbmdlJyk7XHJcblxyXG4gICAgdGhpcy5yYW5nZSA9IFtub3cuYWRkKC0yLCAndycpLnRvRGF0ZSgpLFxyXG4gICAgbm93LnRvRGF0ZSgpXTtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksIGRlYm91bmNlVGltZSgyMDApKS5cclxuICAgICAgc3Vic2NyaWJlKHRoaXMuX2xpc3QuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLl9wYW5lLnF1ZXJ5UGFyYW1zQ2hhbmdlKCkuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICBjb25zdCB7IGRvY3VtZW50SWQgfSA9IHA7XHJcbiAgICAgIGRvY3VtZW50SWQgJiYgdGhpcy5fb3BlbigoZG9jdW1lbnRJZCBhcyBzdHJpbmcpLmRlY29kZUlkKCkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9wYW5lLnJlc2l6ZWQoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+XHJcbiAgICAgIHRoaXMuZGlhZ3JhbT8ucmVmcmVzaCgpXHJcbiAgICApO1xyXG4gIH1cclxuICBvcGVuRmlsdGVyKGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMuX3BvcHVwLm9wZW4odGhpcy5maWx0ZXJBcmdzLCBldnQudGFyZ2V0IGFzIEhUTUxCdXR0b25FbGVtZW50KS5vcGVuZWQoKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5mb2N1cygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfbGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9ICdxdWVyeSc7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLmZpbmRBbGwoeyAuLi50aGlzLmZvcm0udmFsdWUsIHN0YXJ0OiB0aGlzLl9zdGFydCwgZW5kOiB0aGlzLl9lbmQgfSkuc3Vic2NyaWJlKGwgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGwpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJhbmdlQ2hhbmdlZChhcmdzOiBJQ2hhbmdlZEV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgLy9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndHJhY2UtcmFuZ2UnLCBhcmdzLik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5uZXh0KGFyZ3MgYXMgYW55KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZjEnLCBbJyRldmVudCddKVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qgc3RlcHM6IEd1aWRlU3RlcFtdID0gW107XHJcbiAgICBpZiAodGhpcy50aW1lbGluZSkge1xyXG4gICAgICBpZiAodGhpcy50aW1lbGluZS5pdGVtcy5sZW5ndGggPiAxKVxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXRpbWVsaW5lXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZVRpbWVsaW5lSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnZ1tpZF49c3RhcnRdJyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZUVsZW1lbnRIZWxwJyksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBzdGVwcy5wdXNoKHtcclxuICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXNlYXJjaF0nLFxyXG4gICAgICBwb3NpdGlvbjogJ0JlbG93JyxcclxuICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnVHJhY2VTZWFyY2hIZWxwJylcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZ3VpZGUuc3RhcnQoe1xyXG4gICAgICBuYW1lOiAndHJhY2UnLFxyXG4gICAgICBzdGVwc1xyXG4gICAgfSk7XHJcbiAgICBldnQgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIGJyb3dzZSgpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSk7XHJcbiAgICB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIHRoaXMubW9kZSA9ICdicm93c2UnO1xyXG4gICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29wZW4oaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5kaWFncmFtPy5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSAnYnVmZmVyJztcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYucG9wdWxhdGUoaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuX2hpZ2hMaWdodGVkSWRzID0gW107XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IGU7XHJcbiAgICAgICAgdGhpcy5fdGltZWxpbmUoKTtcclxuICAgICAgICB0aGlzLm1vZGUgPSAnZGlhZ3JhbSc7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtID0gbmV3IERpYWdyYW0oe1xyXG4gICAgICAgICAgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgICBzbmFwU2V0dGluZ3M6IHRoaXMuc25hcFNldHRpbmdzLFxyXG4gICAgICAgICAgbGF5b3V0OiB0aGlzLmxheW91dCxcclxuICAgICAgICAgIGdldENvbm5lY3RvckRlZmF1bHRzOiB0aGlzLmNvbm5EZWZhdWx0cyxcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgIHRvb2w6IHRoaXMuZGlhZ3JhbVRvb2wsXHJcbiAgICAgICAgICBjb25zdHJhaW50czogdGhpcy5kaWFncmFtQ29uc3RyYWludHMsXHJcbiAgICAgICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMubm9kZURlZmF1bHRzLFxyXG4gICAgICAgICAgc2Nyb2xsU2V0dGluZ3M6IHRoaXMuc2Nyb2xsU2V0dGluZ3MsXHJcbiAgICAgICAgICBub2RlczogZS5kaWFncmFtLm5vZGVzLFxyXG4gICAgICAgICAgY29ubmVjdG9yczogZS5kaWFncmFtLmNvbm5lY3RvcnMsXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2U6IHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICB9LCB0aGlzLmRpYWdyYW1FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuX3ZlcnNpb24oKTtcclxuICAgICAgICB0aGlzLl9pbmRpY2F0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSgpO1xyXG5cclxuICAgICAgfSwgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBub2RlRGVmYXVsdHMgPSAobm9kZTogTm9kZU1vZGVsKTogTm9kZU1vZGVsID0+IHtcclxuICAgIGNvbnN0IHsgaW5kaWNhdG9yLCB2aXJ0dWFsIH0gPSBub2RlLmFkZEluZm8gYXMgTm9kZURhdGEgfHwge307XHJcblxyXG4gICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICBub2RlLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLlBvaW50ZXJFdmVudHMgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCxcclxuICAgICAgICBub2RlLnN0eWxlLnN0cm9rZVdpZHRoID0gMCxcclxuICAgICAgICBub2RlLndpZHRoID0gbm9kZS5oZWlnaHQgPSAxNTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vZGUuaWQgIT09ICd2ZXJzaW9uJykge1xyXG4gICAgICBub2RlLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLkluQ29ubmVjdCB8IE5vZGVDb25zdHJhaW50cy5PdXRDb25uZWN0IHxcclxuICAgICAgICBOb2RlQ29uc3RyYWludHMuUG9pbnRlckV2ZW50cyB8IE5vZGVDb25zdHJhaW50cy5TZWxlY3Q7XHJcbiAgICAgIHRoaXMuX2RlY29yYXRlTm9kZShub2RlKTtcclxuICAgICAgbm9kZS5wb3J0cyA9IGdldFBvcnRzKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcbiAgcHVibGljIGNvbm5EZWZhdWx0cyA9IChjb25uZWN0b3I6IENvbm5lY3Rvck1vZGVsKSA9PiB7XHJcbiAgICBjb25zdCB7IHZpcnR1YWwgfSA9IGNvbm5lY3Rvci5hZGRJbmZvIGFzIENvbm5lY3RvckRhdGEgfHwge307XHJcbiAgICBjb25uZWN0b3IuY29uc3RyYWludHMgPSBDb25uZWN0b3JDb25zdHJhaW50cy5SZWFkT25seSAmIH5Db25uZWN0b3JDb25zdHJhaW50cy5TZWxlY3Q7XHJcblxyXG4gICAgdGhpcy5fZGVjb3JhdGVDb25uZWN0b3IoY29ubmVjdG9yKTtcclxuICB9XHJcbiAgb3BlbihpdGVtOiBEb2N1bWVudEluZm8pIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwgeyBxdWVyeVBhcmFtczogeyBkb2N1bWVudElkOiBpdGVtLmlkLmVuY29kZUlkKCkgfSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RpbWVsaW5lKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSBbXSwgc3VibWlzc2lvbnM6IERhdGVbXSA9IFtdO1xyXG4gICAgbGV0IG1pbkRhdGU6IERhdGUsIG1heERhdGU6IERhdGUsIGVzdGltYXRlOiBib29sZWFuO1xyXG4gICAgdGhpcy5tb2RlbC5sb2cuZm9yRWFjaChsID0+IHtcclxuICAgICAgY29uc3QgeyB0aW1lLCB1c2VySWQgfSA9IGw7XHJcbiAgICAgIHN3aXRjaCAobC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnU3VibWl0JzpcclxuICAgICAgICAgIHN1Ym1pc3Npb25zLnB1c2godGltZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICB9XHJcbiAgICAgIGlmICghaXRlbXMuZmluZCh0ID0+IHQudGltZSA9PT0gdGltZSkpXHJcbiAgICAgICAgaXRlbXMucHVzaCh7IHRpbWUsIHVzZXJJZCB9KTtcclxuICAgICAgaWYgKCFtaW5EYXRlIHx8IGRheWpzKHRpbWUpLmlzQmVmb3JlKG1pbkRhdGUpKSBtaW5EYXRlID0gdGltZTtcclxuICAgICAgaWYgKCFtYXhEYXRlIHx8IGRheWpzKHRpbWUpLmlzQWZ0ZXIobWF4RGF0ZSkpIG1heERhdGUgPSB0aW1lO1xyXG4gICAgICBpZiAobC5lc3RpbWF0ZSkgZXN0aW1hdGUgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRpbWVsaW5lID0ge1xyXG4gICAgICBpdGVtcywgbWluRGF0ZSwgbWF4RGF0ZSxcclxuICAgICAgc3VibWlzc2lvbnMsIGVzdGltYXRlXHJcbiAgICB9IGFzIGFueTtcclxuICAgIHRoaXMuX3Njb3BlKHN1Ym1pc3Npb25zW3N1Ym1pc3Npb25zLmxlbmd0aCAtIDFdKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGRhdGVcclxuICAgKi9cclxuICBwcml2YXRlIF9zY29wZShkYXRlOiBEYXRlKSB7XHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnRpbWVsaW5lLnN1Ym1pc3Npb25zLnJldmVyc2UoKS5cclxuICAgICAgZmluZChzID0+IHMgPD0gZGF0ZSksXHJcbiAgICAgIG5leHREYXRlID0gdGhpcy50aW1lbGluZS5zdWJtaXNzaW9ucy5maW5kKHMgPT4gcyA+IGRhdGUpLFxyXG4gICAgICBlbmREYXRlID0gbmV4dERhdGUgPyBuZXcgRGF0ZShuZXcgRGF0ZShuZXh0RGF0ZSkudmFsdWVPZigpIC0gMSkudG9KU09OKCkgYXMgYW55IDogdGhpcy50aW1lbGluZS5tYXhEYXRlO1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnRpbWVsaW5lLCB7XHJcbiAgICAgIHN0YXJ0RGF0ZSxcclxuICAgICAgZW5kRGF0ZSxcclxuICAgICAgcmVjaXBpZW50czogdGhpcy5tb2RlbC5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIucmVjZWl2ZWQgPj0gc3RhcnREYXRlICYmIHIucmVjZWl2ZWQgPD0gZW5kRGF0ZSksXHJcbiAgICAgIGxvZzogdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50aW1lID49IHN0YXJ0RGF0ZSAmJiBsLnRpbWUgPD0gZW5kRGF0ZSlcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9pbmRpY2F0b3JzKCkge1xyXG4gICAgY29uc3QgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gPSBbXTtcclxuICAgIHRoaXMubW9kZWwubG9nLmZvckVhY2gobCA9PiB7XHJcbiAgICAgIHN3aXRjaCAobC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnTm9kZSc6XHJcbiAgICAgICAgICBpZiAobC5lcnJvcilcclxuICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogV0FSTk5JTkdfUEFUSCxcclxuICAgICAgICAgICAgICAgIGFsaWduOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBsLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdCb3R0b21DZW50ZXInXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgZmlsbDogZ2V0V2Fybig4MDApXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogbC5ub2RlSWRcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTm9kZUp1bXAnOlxyXG4gICAgICAgICAgLy9pbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgLy8gIHNoYXBlOiB7XHJcbiAgICAgICAgICAvLyAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAvLyAgICBkYXRhOiBKVU1QX1BBVEgsXHJcbiAgICAgICAgICAvLyAgICBhbGlnbjogJ1hNaW5ZTWF4J1xyXG4gICAgICAgICAgLy8gIH0sXHJcbiAgICAgICAgICAvLyAgc3R5bGU6IHtcclxuICAgICAgICAgIC8vICAgIGZpbGw6ICdibGFjaydcclxuICAgICAgICAgIC8vICB9LFxyXG4gICAgICAgICAgLy8gIGFkZEluZm86IHtcclxuICAgICAgICAgIC8vICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgIC8vICAgIHBhcmVudElkOiBsLm5vZGVJZFxyXG4gICAgICAgICAgLy8gIH1cclxuICAgICAgICAgIC8vfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWdyYW0ucmVtb3ZlTGF5ZXIoJ2luZGljYXRvcnMnKTtcclxuICAgIGluZGljYXRvcnMuZm9yRWFjaChpID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QoKGkuYWRkSW5mbyBhcyBOb2RlRGF0YSkucGFyZW50SWQpO1xyXG4gICAgICBpLm9mZnNldFggPSBwYXJlbnQub2Zmc2V0WCArIHBhcmVudC53aWR0aCAvIDIgLSAxNSxcclxuICAgICAgICBpLm9mZnNldFkgPSBwYXJlbnQub2Zmc2V0WSArIHBhcmVudC5oZWlnaHQgLyAyIC0gMTU7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5hZGQoaSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGRMYXllcih7IGlkOiAnaW5kaWNhdG9ycycgfSwgaW5kaWNhdG9ycyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RlY29yYXRlTm9kZShub2RlOiBOb2RlTW9kZWwpIHtcclxuICAgIGNvbnN0IGxvZyA9IHRoaXMudGltZWxpbmUubG9nLmZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkKTtcclxuXHJcbiAgICBpZiAobG9nLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gdGhpcy50aW1lbGluZS5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkKTtcclxuXHJcbiAgICAgIG5vZGUuc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgbm9kZS5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSBsb2cuZmluZChsID0+IGwuZXN0aW1hdGUpID8gJzMgMicgOiAnJztcclxuXHJcbiAgICAgIG5vZGUuc3R5bGUuZmlsbCA9IHJlY2lwaWVudHMuZmluZChyID0+IHIucGVuZGluZyAmJiAhci5lc3RpbWF0ZSkgPyB0aGlzLl9hY2NlbnRDb2xvciA6ICd3aGl0ZSc7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIG5vZGUuc3R5bGUuZmlsbCA9ICd3aGl0ZScsXHJcbiAgICAgICAgbm9kZS5zdHlsZS5zdHJva2VDb2xvciA9ICdkYXJrZ3JheScsXHJcbiAgICAgICAgbm9kZS5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSAnNiAyJztcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGVjb3JhdGVDb25uZWN0b3IoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkge1xyXG4gICAgY29uc3QgbG9nID0gdGhpcy50aW1lbGluZS5sb2cuZmlsdGVyKGwgPT4gbC5zb3VyY2VJZCA9PT0gY29ubmVjdG9yLnNvdXJjZUlEICYmIGwudGFyZ2V0SWQgPT0gY29ubmVjdG9yLnRhcmdldElEKTtcclxuXHJcbiAgICBpZiAobG9nLmxlbmd0aCkge1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID1cclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9IGxvZy5maW5kKGwgPT4gbC5lc3RpbWF0ZSkgPyAnMyAyJyA6ICcnO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID0gJ2RhcmtncmF5JyxcclxuICAgICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlRGFzaEFycmF5ID0gJzYgMic7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ZlcnNpb24oKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0ucmVtb3ZlTGF5ZXIoXHJcbiAgICAgICd2ZXJzaW9uJyk7XHJcbiAgICBjb25zdCB2ZXJzaW9uID0ge1xyXG4gICAgICBpZDogJ3ZlcnNpb24nLFxyXG4gICAgICBzaGFwZToge1xyXG4gICAgICAgIHR5cGU6ICdUZXh0JyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdEaWFncmFtVmVyc2lvbicsIHRoaXMubW9kZWwuZGlhZ3JhbS52ZXJzaW9uKVxyXG4gICAgICB9LFxyXG4gICAgICBvZmZzZXRZOiA1LFxyXG4gICAgICBvZmZzZXRYOiA1LFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIGZvbnRTaXplOiA1MCxcclxuICAgICAgICBvcGFjaXR5OiAuMVxyXG4gICAgICB9LFxyXG4gICAgICBjb25zdHJhaW50czogTm9kZUNvbnN0cmFpbnRzLlJlYWRPbmx5XHJcbiAgICB9IGFzIFRleHRNb2RlbDtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGRMYXllcih7XHJcbiAgICAgIGlkOiAndmVyc2lvbicsXHJcbiAgICAgIG9iamVjdHM6IFtcclxuICAgICAgICB2ZXJzaW9uXVxyXG4gICAgfSBhcyBMYXllck1vZGVsKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5hZGQodmVyc2lvbik7XHJcbiAgfVxyXG4gIHNlbGVjdGlvbkNoYW5nZShldnQ6IElTZWxlY3Rpb25DaGFuZ2VFdmVudEFyZ3MpIHtcclxuICAgIGlmIChldnQuc3RhdGUgIT09ICdDaGFuZ2VkJykgcmV0dXJuO1xyXG4gICAgdGhpcy5fdW5oaWdobGlnaHQoKTtcclxuICAgIGlmIChldnQubmV3VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBub2RlID0gZXZ0Lm5ld1ZhbHVlWzBdIGFzIE5vZGVNb2RlbDtcclxuXHJcbiAgICAgIGNvbnN0IHsgaW5kaWNhdG9yLCBwYXJlbnRJZCB9ID0gbm9kZS5hZGRJbmZvIGFzIE5vZGVEYXRhIHx8IHt9O1xyXG5cclxuICAgICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICAgIG5vZGUgPSB0aGlzLmRpYWdyYW0uZ2V0Tm9kZU9iamVjdChwYXJlbnRJZCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtLnNlbGVjdChbbm9kZV0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGlkcyA9ICgobm9kZSBhcyBhbnkpLmluRWRnZXMpLmNvbmNhdCgobm9kZSBhcyBhbnkpLm91dEVkZ2VzKTtcclxuICAgICAgICBpZHMucHVzaChub2RlLmlkKTtcclxuICAgICAgICB0aGlzLl9oaWdobGlnaHQoaWRzKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICBpZiAodGhpcy5faW5mb1JlZikgdGhpcy5faW5mb1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShUcmFjZUVsZW1lbnRDb21wb25lbnQsIHtcclxuICAgICAgICAgIHN0YXRlOiB7XHJcbiAgICAgICAgICAgIG5vZGUsXHJcbiAgICAgICAgICAgIHRpbWVsaW5lOiB0aGlzLnRpbWVsaW5lLFxyXG4gICAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcclxuICAgICAgICAgICAgdXRpbGl0eVJlZjogdGhpcy5fdXRpbGl0eVJlZixcclxuICAgICAgICAgIH0gYXMgRWxlbWVudERhdGEsXHJcbiAgICAgICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuVGFiXHJcbiAgICAgICAgfSkudGhlbigoZTogUGFuZVJlZikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5faW5mb1JlZiA9IGU7XHJcbiAgICAgICAgICBlLmFuaW1hdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgdGhpcy5fcm91dGVyLmNvbGxhcHNlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMubm9kZSA9IG51bGw7XHJcbiAgfVxyXG4gIHB1YmxpYyBoaWdobGlnaHRUaW1lKHRpbWU6IERhdGUpIHtcclxuICAgIHRoaXMudGltZWxpbmUuZGF0ZSA9IHRpbWU7XHJcbiAgICB0aGlzLmRpYWdyYW0uY2xlYXJTZWxlY3Rpb24oKTtcclxuICAgIHRoaXMuX3VuaGlnaGxpZ2h0KCk7XHJcbiAgICBpZiAodGltZSA8IHRoaXMudGltZWxpbmUuc3RhcnREYXRlIHx8IHRpbWUgPiB0aGlzLnRpbWVsaW5lLmVuZERhdGUpIHtcclxuICAgICAgdGhpcy5fc2NvcGUodGltZSk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kaWFncmFtLm5vZGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlTm9kZSh0aGlzLmRpYWdyYW0ubm9kZXNbaV0pO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGlhZ3JhbS5jb25uZWN0b3JzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlQ29ubmVjdG9yKHRoaXMuZGlhZ3JhbS5jb25uZWN0b3JzW2ldKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpZHMgPSB0aGlzLnRpbWVsaW5lLmxvZy5maWx0ZXIobCA9PiBsLm5vZGVJZCAmJiBsLnRpbWUgPT09IHRpbWUpLm1hcChsID0+IGwubm9kZUlkKS5cclxuICAgICAgZmlsdGVyKCh2LCBpLCBhKSA9PiBhLmluZGV4T2YodikgPT09IGkpO1xyXG5cclxuICAgIHRoaXMuX2hpZ2hsaWdodChpZHMpO1xyXG4gICAgdGhpcy5kaWFncmFtLmRhdGFCaW5kKCk7XHJcbiAgfVxyXG5cclxuICBwYW4oKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgPSB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgfCBEaWFncmFtQ29uc3RyYWludHMuUGFuO1xyXG4gICAgdGhpcy5kaWFncmFtLnRvb2wgPSBEaWFncmFtVG9vbHMuWm9vbVBhbjtcclxuICB9XHJcbiAgY3Vyc29yKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzID0gdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzICYgfkRpYWdyYW1Db25zdHJhaW50cy5QYW47XHJcbiAgICB0aGlzLmRpYWdyYW0udG9vbCA9IERpYWdyYW1Ub29scy5TaW5nbGVTZWxlY3Q7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hpZ2hsaWdodChpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBvYmogPSB0aGlzLmRpYWdyYW0uZ2V0T2JqZWN0KGlkc1tpXSkgYXMgYW55O1xyXG4gICAgICBpZiAob2JqLnNvdXJjZUlEKVxyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9XHJcbiAgICAgICAgICBvYmoudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICAgIG9iai50YXJnZXREZWNvcmF0b3Iuc3R5bGUuZmlsbCA9IHRoaXMuX3ByaW1lcnlDb2xvcjtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX3ByaW1lcnlDb2xvcjtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hMaWdodGVkSWRzID0gaWRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5oaWdobGlnaHQoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSB0aGlzLl9oaWdoTGlnaHRlZElkcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBvYmogPSB0aGlzLmRpYWdyYW0uZ2V0T2JqZWN0KHRoaXMuX2hpZ2hMaWdodGVkSWRzW2ldKSBhcyBhbnk7XHJcbiAgICAgIGlmIChvYmouc291cmNlSUQpXHJcbiAgICAgICAgdGhpcy5fZGVjb3JhdGVDb25uZWN0b3Iob2JqKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlTm9kZShvYmopO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faGlnaExpZ2h0ZWRJZHMgPSBbXTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiQHN3aXRjaCAobW9kZSkge1xyXG48IS0tIGRpYWdyYW0gLS0+XHJcbiAgQGNhc2UgKCdkaWFncmFtJykge1xyXG48ZGl2IGNsYXNzPVwiY29sdW1uIGZsZXhcIj5cclxuICA8bWF0LXRvb2xiYXI+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiYnJvd3NlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQmFjaycgfCB0cmFuc2xhdGVcIj48bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+YXJyb3dfYmFjazwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICB8XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicGFuKClcIiBbYml6ZG9jVG9vbHRpcF09XCInUGFuJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLXBhblwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjdXJzb3IoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidDdXJzb3InIHwgdHJhbnNsYXRlXCI+PHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tY3Vyc29yXCI+PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImd1aWRlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInSGVscCcgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8L21hdC10b29sYmFyPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgZmxleFwiPlxyXG4gICAgPCEtLSB0aW1lbGluZSAtLT5cclxuICAgIEBpZiAodGltZWxpbmU/Lml0ZW1zLmxlbmd0aCA+IDEpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZVwiIGRhdGEtaGVscD1cInRpbWVsaW5lXCI+XHJcbiAgICAgIEBmb3IgKGRhdGUgb2YgdGltZWxpbmUuaXRlbXM7IHRyYWNrIGRhdGU7IGxldCBsYXN0ID0gJGxhc3QpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIlxyXG4gICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZGF0ZS50aW1lID09PSB0aW1lbGluZS5kYXRlXCJcclxuICAgICAgICAgICAoY2xpY2spPVwiaGlnaGxpZ2h0VGltZShkYXRlLnRpbWUpXCIgbWF0UmlwcGxlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgQGlmICghbGFzdCB8fCAhdGltZWxpbmUuZXN0aW1hdGUpIHtcclxuICAgICAgICAgIEBpZiAoZGF0ZS51c2VySWQpIHtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2hvXCI+XHJcbiAgICAgICAgICAgIHt7ZGF0ZS51c2VySWQgfCB1c2VyTmFtZSB8IGFzeW5jIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZVwiPlxyXG4gICAgICAgICAgICB7e2RhdGUudGltZSB8IGFtRGF0ZUZvcm1hdDogJ01NTSBEbyBIOm1tJyB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICB7eydFc3RpbWF0ZScgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmRpY2F0b3ItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5kaWNhdG9yXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4XCIgI2RpYWdyYW0gZGlyPVwibHRyXCI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiAgfVxyXG48IS0tIGJyb3dzZSAtLT5cclxuICBAZGVmYXVsdCB7XHJcbjxkaXYgY2xhc3M9XCJmbGV4IGNvbHVtbiBmaWxsXCI+XHJcbiAgPG1hdC10b29sYmFyIGNsYXNzPVwicm93XCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkZpbHRlcigkZXZlbnQpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZpbHRlcid8dHJhbnNsYXRlXCI+PG1hdC1pY29uPmZpbHRlcl9saXN0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8L21hdC10b29sYmFyPlxyXG4gIDxtYXQtcHJvZ3Jlc3MtYmFyIFttb2RlXT1cImxvYWRpbmdcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJsb2FkaW5nID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gIDwhLS0gdGFibGUgLS0+XHJcbiAgPG1hdC10YWJsZSBjbGFzcz1cImZsZXhcIiBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgbWF0U29ydD5cclxuICAgIDwhLS0gTnVtYmVyIGNvbHVtbiAtLT5cclxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibnVtYmVyXCI+XHJcbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J051bWJlcicgfCB0cmFuc2xhdGV9fTwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIj4ge3tpdGVtLm51bWJlcn19IDwvbWF0LWNlbGw+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gU3ViamVjdCBjb2x1bW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN1YmplY3RcIj5cclxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+e3snU3ViamVjdCcgfCB0cmFuc2xhdGV9fTwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIj4ge3tpdGVtLnN1YmplY3R9fSA8L21hdC1jZWxsPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIFN0YXRlSWQgY29sdW1uIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0ZUlkXCI+XHJcbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPVwic3RhdGVJZFwiPnt7J1N0YXR1cycgfCB0cmFuc2xhdGUgfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+XHJcbiAgICAgICAgPGJpemRvYy1zdGF0dXMgW3N0YXRlSWRdPVwiaXRlbS5zdGF0ZUlkXCI+PC9iaXpkb2Mtc3RhdHVzPlxyXG4gICAgICA8L21hdC1jZWxsPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XHJcbiAgICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IGl0ZW07IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcclxuICAgICAgICAgICAgIChjbGljayk9XCJvcGVuKGl0ZW0pXCI+XHJcbiAgICA8L21hdC1yb3c+XHJcbiAgPC9tYXQtdGFibGU+XHJcbiAgPCEtLSByYW5nZSAtLT5cclxuICA8ZWpzLXJhbmdlbmF2aWdhdG9yIHZhbHVlVHlwZT0nRGF0ZVRpbWUnIFt2YWx1ZV09cmFuZ2UgbGFiZWxGb3JtYXQ9J01NTScgYmFja2dyb3VuZD1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt0aGVtZV09XCJ0aGVtZVwiIGxhYmVsSW50ZXJzZWN0QWN0aW9uPSdIaWRlJyBlbmFibGVHcm91cGluZz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGdyb3VwQnk9XCJZZWFyc1wiIGludGVydmFsVHlwZT0nTW9udGhzJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWQpPSdyYW5nZUNoYW5nZWQoJGV2ZW50KSc+XHJcbiAgICA8ZS1yYW5nZW5hdmlnYXRvci1zZXJpZXMtY29sbGVjdGlvbj5cclxuICAgICAgPGUtcmFuZ2VuYXZpZ2F0b3Itc2VyaWVzIFtkYXRhU291cmNlXT0ncmFuZ2VEYXRhJyBbZmlsbF09XCJhY2NlbnRcIiB0eXBlPSdBcmVhJyB4TmFtZT0nZGF0ZScgeU5hbWU9J2NvdW50JyB3aWR0aD0yPlxyXG4gICAgICA8L2UtcmFuZ2VuYXZpZ2F0b3Itc2VyaWVzPlxyXG4gICAgPC9lLXJhbmdlbmF2aWdhdG9yLXNlcmllcy1jb2xsZWN0aW9uPlxyXG4gIDwvZWpzLXJhbmdlbmF2aWdhdG9yPlxyXG48L2Rpdj5cclxuICB9XHJcbn1cclxuPCEtLSBhcmdzIC0tPlxyXG48bmctdGVtcGxhdGUgI2FyZ3M+XHJcbiAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJjb2x1bW4gZ2FwXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInNlYXJjaFwiICNzZWFyY2ggZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCIgZGF0YS1oZWxwPVwic2VhcmNoXCIgW3BsYWNlaG9sZGVyXT1cIidOdW1iZXInfHRyYW5zbGF0ZVwiIC8+XHJcbiAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXggY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICA8Yml6ZG9jLXNlbGVjdCB0eXBlPVwiZm9ybXNcIiBbcGxhY2Vob2xkZXJdPVwiJ0Zvcm0nfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImZvcm1JZFwiPjwvYml6ZG9jLXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9mb3JtPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2VzdGltYXRlPlxyXG4gIHt7J0VzdGltYXRlJyB8IHRyYW5zbGF0ZX19XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
537
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9kb2N1bWVudC10cmFjZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQThDLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQ0wsa0JBQWtCLEVBQWtCLGVBQWUsRUFBc0MsbUJBQW1CLEVBQzVHLFFBQVEsRUFBRSxPQUFPLEVBQWdFLFlBQVksRUFBYSxvQkFBb0IsRUFBeUMscUJBQXFCLEVBQzdMLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFxQixjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFB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LFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQXJkVSxzQkFBc0Isa0JBZ0Z2QixVQUFVO2tHQWhGVCxzQkFBc0Isa2FBdUV0QixPQUFPLGlGQUNQLGNBQWMsZ0RDNUkzQix1MEpBMkdBLGtyTUQzQ2MsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDOztBQUlyQyxzQkFBc0I7SUFGbEMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDN0Msd0JBQXdCO0dBQ1gsc0JBQXNCLENBc2RsQzs7MkZBdGRZLHNCQUFzQjtrQkFQbEMsU0FBUztpQ0FHSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7OzBCQW9GN0MsTUFBTTsyQkFBQyxVQUFVO3NUQS9FRSxjQUFjO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBbUVELFVBQVU7c0JBQTVCLFNBQVM7dUJBQUMsTUFBTTtnQkFDSSxXQUFXO3NCQUEvQixTQUFTO3VCQUFDLFFBQVE7Z0JBRUMsSUFBSTtzQkFBdkIsU0FBUzt1QkFBQyxPQUFPO2dCQUNTLGNBQWM7c0JBQXhDLFNBQVM7dUJBQUMsY0FBYztnQkFpRXpCLEtBQUs7c0JBREosWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE9uRGVzdHJveSwgSW5qZWN0LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7XHJcbiAgRGlhZ3JhbUNvbnN0cmFpbnRzLCBQb2ludFBvcnRNb2RlbCwgTm9kZUNvbnN0cmFpbnRzLCBTY3JvbGxTZXR0aW5nc01vZGVsLCBTZWxlY3Rvck1vZGVsLCBTZWxlY3RvckNvbnN0cmFpbnRzLFxyXG4gIFRvb2xCYXNlLCBEaWFncmFtLCBNb3VzZUV2ZW50QXJncywgQ29ubmVjdG9yTW9kZWwsIE5vZGVNb2RlbCwgU25hcFNldHRpbmdzTW9kZWwsIERpYWdyYW1Ub29scywgVGV4dE1vZGVsLCBDb25uZWN0b3JDb25zdHJhaW50cywgSVNlbGVjdGlvbkNoYW5nZUV2ZW50QXJncywgTGF5ZXJNb2RlbCwgQ29ubmVjdGlvblBvaW50T3JpZ2luLCBMYXlvdXRNb2RlbFxyXG59IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1kaWFncmFtcyc7XHJcbmltcG9ydCB7IElDaGFuZ2VkRXZlbnRBcmdzLCBSYW5nZU5hdmlnYXRvciB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1jaGFydHMnO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBnZXRXYXJuIH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBHdWlkZVN0ZXAgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbGl0eVJlZiB9IGZyb20gJy4uL3V0aWxpdHktcmVmJztcclxuaW1wb3J0IHsgRG9jdW1lbnRJbmZvLCBTeXN0ZW1TZXJ2aWNlLCBSYW5nZUluZm8gfSBmcm9tICcuLi9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3VpZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9ndWlkZS9ndWlkZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcGFuZS1yZWYnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhZ3JhbUluZm8sIE1vdmVNb2RlbCwgTm9kZURhdGEsIFRpbWVsaW5lIH0gZnJvbSAnLi90aW1lbGluZSc7XHJcbmltcG9ydCB7IEVudGVyRXhpdFJpZ2h0IH0gZnJvbSAnLi4vLi4vY29yZS9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgUG9wdXAgfSBmcm9tICcuLi8uLi9jb3JlL3BvcHVwL3BvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbGVtZW50RGF0YSwgVHJhY2VFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi90cmFjZS1lbGVtZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9wZW5Qb2xpY3kgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5cclxuY29uc3QgV0FSTk5JTkdfUEFUSCA9ICdNIDEzLjc2MzczNSwxLjg0MzM3MzUgSCA2LjMwMzczNDkgbCAtNS4yNyw1LjI3IHYgNy40NTk5OTk1IGwgNS4yNyw1LjI3IGggNy40NjAwMDAxIGwgNS4yNywtNS4yNyBWIDcuMTEzMzczNSBaIG0gLTMuNzMsMTQuMjk5OTk5NSBjIC0wLjcyMDAwMDEsMCAtMS4zMDAwMDAxLC0wLjU4IC0xLjMwMDAwMDEsLTEuMyAwLC0wLjcyIDAuNTgsLTEuMyAxLjMwMDAwMDEsLTEuMyAwLjcyLDAgMS4zLDAuNTggMS4zLDEuMyAwLDAuNzIgLTAuNTgsMS4zIC0xLjMsMS4zIHogbSAxLC00LjMgSCA5LjAzMzczNDkgViA1Ljg0MzM3MzUgaCAyLjAwMDAwMDEgeicsXHJcbiAgSlVNUF9QQVRIID0gJ00gNiwxOCAxNC41LDEyIDYsNiBaIE0gMTYsNiB2IDEyIGggMiBWIDYgWic7XHJcblxyXG5mdW5jdGlvbiBnZXRQb3J0cygpOiBQb2ludFBvcnRNb2RlbFtdIHtcclxuICByZXR1cm4gW1xyXG4gICAgeyBpZDogJ3BvcnQxJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMCwgeTogMC41IH0gfSxcclxuICAgIHsgaWQ6ICdwb3J0MicsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAuNSwgeTogMSB9IH0sXHJcbiAgICB7IGlkOiAncG9ydDMnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAxLCB5OiAwLjUgfSB9LFxyXG4gICAgeyBpZDogJ3BvcnQ0Jywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMC41LCB5OiAwIH0gfVxyXG4gIF07XHJcbn1cclxuXHJcbmNsYXNzIEluZm9Ub29sIGV4dGVuZHMgVG9vbEJhc2Uge1xyXG4gIHB1YmxpYyBvdmVycmlkZSBtb3VzZURvd24oYXJnczogTW91c2VFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2RlcyEubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMhWzBdO1xyXG4gICAgICBzdXBlci5tb3VzZURvd24oYXJncylcclxuICAgICAgdGhpcy50YXAubmV4dChub2RlKTtcclxuICAgICAgdGhpcy5pbkFjdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFncmFtOiBEaWFncmFtLCBwdWJsaWMgdGFwOiBTdWJqZWN0PE5vZGVNb2RlbD4pIHtcclxuICAgIHN1cGVyKGRpYWdyYW0uY29tbWFuZEhhbmRsZXIpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgU2VhcmNoTW9kZWwge1xyXG4gIHNlYXJjaD86IHN0cmluZywgZm9ybUlkPzogc3RyaW5nXHJcbn1cclxuLyoqICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudC10cmFjZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbdHJpZ2dlcignZWxlbWVudCcsIEVudGVyRXhpdFJpZ2h0KV1cclxufSlcclxuQEJpekRvYyh7IHNlbGVjdG9yOiAnYml6ZG9jLXRyYWNlLXV0aWxpdHknIH0pXHJcbi8qKiB3b3JrZmxvdyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRUcmFjZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdkaWFncmFtJykgZGlhZ3JhbUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIHRoZW1lID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ01hdGVyaWFsM0RhcmsnIDogJ01hdGVyaWFsMyc7XHJcbiAgYWNjZW50ID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICBkaWFncmFtOiBEaWFncmFtO1xyXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9mYi5ncm91cDxTZWFyY2hNb2RlbD4oe1xyXG4gICAgc2VhcmNoOiB1bmRlZmluZWQsXHJcbiAgICBmb3JtSWQ6IHVuZGVmaW5lZFxyXG4gIH0pO1xyXG4gIG1vZGVsOiBEaWFncmFtSW5mbztcclxuICB0aW1lbGluZTogVGltZWxpbmU7XHJcbiAgZGlhZ3JhbUNvbnN0cmFpbnRzOiBEaWFncmFtQ29uc3RyYWludHMgPSBEaWFncmFtQ29uc3RyYWludHMuRGVmYXVsdCB8IERpYWdyYW1Db25zdHJhaW50cy5CcmlkZ2luZyB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuTGluZVJvdXRpbmcgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbiB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuWm9vbTtcclxuICBkaWFncmFtVG9vbDogRGlhZ3JhbVRvb2xzID0gRGlhZ3JhbVRvb2xzLlNpbmdsZVNlbGVjdDtcclxuICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0ID0ge1xyXG4gICAgdHlwZTogJ0NvbXBsZXhIaWVyYXJjaGljYWxUcmVlJyxcclxuICAgIGNvbm5lY3Rpb25Qb2ludE9yaWdpbjogQ29ubmVjdGlvblBvaW50T3JpZ2luLkRpZmZlcmVudFBvaW50LFxyXG4gICAgaG9yaXpvbnRhbFNwYWNpbmc6IDUwLFxyXG4gICAgZW5hYmxlUm91dGluZzogdHJ1ZSxcclxuICAgIHZlcnRpY2FsU3BhY2luZzogNTAsXHJcbiAgICBob3Jpem9udGFsQWxpZ25tZW50OiAnQ2VudGVyJyxcclxuICAgIGNvbm5lY3Rpb25EaXJlY3Rpb246ICdPcmllbnRhdGlvbicsXHJcbiAgICBvcmllbnRhdGlvbjogJ1RvcFRvQm90dG9tJ1xyXG4gIH0gYXMgTGF5b3V0TW9kZWw7XHJcbiAgcmVhZG9ubHkgc25hcFNldHRpbmdzOiBTbmFwU2V0dGluZ3NNb2RlbCA9IHtcclxuICB9O1xyXG4gIHJlYWRvbmx5IHNjcm9sbFNldHRpbmdzOiBTY3JvbGxTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgbWluWm9vbTogLjUsXHJcbiAgICBtYXhab29tOiAyLjVcclxuICB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjY2VudENvbG9yID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoODAwKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9wcmltZXJ5Q29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldFByaW1lcnkoKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtczogU2VsZWN0b3JNb2RlbCA9IHtcclxuICAgIGNvbnN0cmFpbnRzOiBTZWxlY3RvckNvbnN0cmFpbnRzLlVzZXJIYW5kbGUsXHJcbiAgICB1c2VySGFuZGxlczogW1xyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ2luZm8nLFxyXG4gICAgICAgIHBhdGhEYXRhOiAnTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6JyxcclxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICBzaWRlOiAnUmlnaHQnLFxyXG4gICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnQm90dG9tJyxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgICAgcGF0aENvbG9yOiB0aGlzLl9wcmltZXJ5Q29sb3IsXHJcbiAgICAgICAgc2l6ZTogNDAsXHJcbiAgICAgICAgbWFyZ2luOiB7IHRvcDogMCwgYm90dG9tOiAwLCBsZWZ0OiAwLCByaWdodDogMCB9XHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9O1xyXG4gIHB1YmxpYyBnZXRDdXN0b21Ub29sOiBGdW5jdGlvbiA9IHRoaXMuZ2V0VG9vbC5iaW5kKHRoaXMpO1xyXG4gIG5vZGU/OiBOb2RlTW9kZWw7XHJcbiAgcHJpdmF0ZSBfc3RhcnQ6IERhdGU7XHJcbiAgcHJpdmF0ZSBfZW5kOiBEYXRlO1xyXG4gIHByaXZhdGUgX2luZm9SZWY6IFBhbmVSZWY8VHJhY2VFbGVtZW50Q29tcG9uZW50PjtcclxuICBwdWJsaWMgZ2V0VG9vbChhY3Rpb246IHN0cmluZyk6IFRvb2xCYXNlIHwgbnVsbHtcclxuICAgIGxldCB0b29sOiBUb29sQmFzZTtcclxuICAgIGlmIChhY3Rpb24gPT09ICdpbmZvJykge1xyXG4gICAgICB0b29sID0gbmV3IEluZm9Ub29sKHRoaXMuZGlhZ3JhbSwgdGhpcy5fdGFwKTtcclxuICAgICAgcmV0dXJuIHRvb2w7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgbW9kZTogJ2RpYWdyYW0nIHwgJ2Jyb3dzZScgfCBudWxsID0gJ2Jyb3dzZSc7XHJcbiAgcmFuZ2U6IChEYXRlIHwgbnVtYmVyKVtdO1xyXG4gIHJhbmdlRGF0YTogUmFuZ2VJbmZvW107XHJcbiAgbG9hZGluZzogUHJvZ3Jlc3NCYXJNb2RlIHwgbnVsbCA9ICdxdWVyeSc7XHJcbiAgQFZpZXdDaGlsZCgnYXJncycpIGZpbHRlckFyZ3M6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoJykgc2VhcmNoSW5wdXQ6IE1hdElucHV0O1xyXG4gIGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxEb2N1bWVudEluZm8+O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydDogTWF0U29ydDtcclxuICBAVmlld0NoaWxkKFJhbmdlTmF2aWdhdG9yKSByYW5nZU5hdmlnYXRvcjogUmFuZ2VOYXZpZ2F0b3I7XHJcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyA9IFsnbnVtYmVyJywgJ3N1YmplY3QnLCAnc3RhdGVJZCddO1xyXG4gIHByaXZhdGUgX2hpZ2hMaWdodGVkSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhcCA9IG5ldyBTdWJqZWN0PE5vZGVNb2RlbD4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRlc2NoYW5nZSA9IG5ldyBTdWJqZWN0PHsgc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSB9PigpO1xyXG4gIC8qKiB3b3JrZmxvdyBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFV0aWxpdHlSZWYpXHJcbiAgICBwcml2YXRlIF91dGlsaXR5UmVmOiBVdGlsaXR5UmVmPERpYWdyYW1JbmZvLCBNb3ZlTW9kZWwsIERpYWdyYW1JbmZvLCBudW1iZXI+LFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGFuZTogUGFuZVJlZjxEb2N1bWVudFRyYWNlQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BvcHVwOiBQb3B1cCxcclxuICAgIHByaXZhdGUgX2d1aWRlOiBHdWlkZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBub3cgPSBkYXlqcygpO1xyXG4gICAgdGhpcy5fc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICB0aGlzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsM0RhcmsnIDogJ01hdGVyaWFsMyc7XHJcbiAgICAgIHRoaXMuYWNjZW50ID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICAgICAgLy90aGlzLnJhbmdlTmF2aWdhdG9yLnJlZnJlc2goKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fc2VydmljZS5yYW5nZSgpLnN1YnNjcmliZShyID0+IHRoaXMucmFuZ2VEYXRhID0gcik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5fc3RhcnQgPSByLnN0YXJ0LCB0aGlzLl9lbmQgPSByLmVuZDtcclxuICAgICAgdGhpcy5fbGlzdCgpO1xyXG4gICAgfSk7XHJcbiAgICAvL2xldCByID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RyYWNlLXJhbmdlJyk7XHJcblxyXG4gICAgdGhpcy5yYW5nZSA9IFtub3cuYWRkKC0yLCAndycpLnRvRGF0ZSgpLFxyXG4gICAgbm93LnRvRGF0ZSgpXTtcclxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksIGRlYm91bmNlVGltZSgyMDApKS5cclxuICAgICAgc3Vic2NyaWJlKHRoaXMuX2xpc3QuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLl9wYW5lLnF1ZXJ5UGFyYW1zQ2hhbmdlKCkuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICBjb25zdCB7IGRvY3VtZW50SWQgfSA9IHA7XHJcbiAgICAgIGRvY3VtZW50SWQgJiYgdGhpcy5fb3BlbigoZG9jdW1lbnRJZCBhcyBzdHJpbmcpLmRlY29kZUlkKCkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9wYW5lLnJlc2l6ZWQoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+XHJcbiAgICAgIHRoaXMuZGlhZ3JhbT8ucmVmcmVzaCgpXHJcbiAgICApO1xyXG4gIH1cclxuICBvcGVuRmlsdGVyKGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMuX3BvcHVwLm9wZW4odGhpcy5maWx0ZXJBcmdzLCBldnQudGFyZ2V0IGFzIEhUTUxCdXR0b25FbGVtZW50KS5vcGVuZWQoKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5mb2N1cygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfbGlzdCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9ICdxdWVyeSc7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLmZpbmRBbGwoeyAuLi50aGlzLmZvcm0udmFsdWUsIHN0YXJ0OiB0aGlzLl9zdGFydCwgZW5kOiB0aGlzLl9lbmQgfSkuc3Vic2NyaWJlKGwgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGwpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJhbmdlQ2hhbmdlZChhcmdzOiBJQ2hhbmdlZEV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgLy9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndHJhY2UtcmFuZ2UnLCBhcmdzLik7XHJcbiAgICB0aGlzLl9kYXRlc2NoYW5nZS5uZXh0KGFyZ3MgYXMgYW55KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZjEnLCBbJyRldmVudCddKVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3Qgc3RlcHM6IEd1aWRlU3RlcFtdID0gW107XHJcbiAgICBpZiAodGhpcy50aW1lbGluZSkge1xyXG4gICAgICBpZiAodGhpcy50aW1lbGluZS5pdGVtcy5sZW5ndGggPiAxKVxyXG4gICAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXRpbWVsaW5lXScsXHJcbiAgICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZVRpbWVsaW5lSGVscCcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHN0ZXBzLnB1c2goe1xyXG4gICAgICAgIHNlbGVjdG9yOiAnZ1tpZF49c3RhcnRdJyxcclxuICAgICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZUVsZW1lbnRIZWxwJyksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBzdGVwcy5wdXNoKHtcclxuICAgICAgc2VsZWN0b3I6ICdbZGF0YS1oZWxwPXNlYXJjaF0nLFxyXG4gICAgICBwb3NpdGlvbjogJ0JlbG93JyxcclxuICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnVHJhY2VTZWFyY2hIZWxwJylcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZ3VpZGUuc3RhcnQoe1xyXG4gICAgICBuYW1lOiAndHJhY2UnLFxyXG4gICAgICBzdGVwc1xyXG4gICAgfSk7XHJcbiAgICBldnQgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIGJyb3dzZSgpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSk7XHJcbiAgICB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIHRoaXMubW9kZSA9ICdicm93c2UnO1xyXG4gICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29wZW4oaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5kaWFncmFtPy5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSAnYnVmZmVyJztcclxuICAgIHRoaXMuX3V0aWxpdHlSZWYucG9wdWxhdGUoaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuX2hpZ2hMaWdodGVkSWRzID0gW107XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IGU7XHJcbiAgICAgICAgdGhpcy5fdGltZWxpbmUoKTtcclxuICAgICAgICB0aGlzLm1vZGUgPSAnZGlhZ3JhbSc7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtID0gbmV3IERpYWdyYW0oe1xyXG4gICAgICAgICAgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgICBzbmFwU2V0dGluZ3M6IHRoaXMuc25hcFNldHRpbmdzLFxyXG4gICAgICAgICAgbGF5b3V0OiB0aGlzLmxheW91dCxcclxuICAgICAgICAgIGdldENvbm5lY3RvckRlZmF1bHRzOiB0aGlzLmNvbm5EZWZhdWx0cyxcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgIHRvb2w6IHRoaXMuZGlhZ3JhbVRvb2wsXHJcbiAgICAgICAgICBjb25zdHJhaW50czogdGhpcy5kaWFncmFtQ29uc3RyYWludHMsXHJcbiAgICAgICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMubm9kZURlZmF1bHRzLFxyXG4gICAgICAgICAgc2Nyb2xsU2V0dGluZ3M6IHRoaXMuc2Nyb2xsU2V0dGluZ3MsXHJcbiAgICAgICAgICBub2RlczogZS5kaWFncmFtLm5vZGVzLFxyXG4gICAgICAgICAgY29ubmVjdG9yczogZS5kaWFncmFtLmNvbm5lY3RvcnMsXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2U6IHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICB9LCB0aGlzLmRpYWdyYW1FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuX3ZlcnNpb24oKTtcclxuICAgICAgICB0aGlzLl9pbmRpY2F0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSgpO1xyXG5cclxuICAgICAgfSwgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBub2RlRGVmYXVsdHMgPSAobm9kZTogTm9kZU1vZGVsKTogTm9kZU1vZGVsID0+IHtcclxuICAgIGNvbnN0IHsgaW5kaWNhdG9yIH0gPSBub2RlLmFkZEluZm8gYXMgTm9kZURhdGEgfHwge307XHJcblxyXG4gICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICBub2RlLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLlBvaW50ZXJFdmVudHMgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCxcclxuICAgICAgICBub2RlLnN0eWxlIS5zdHJva2VXaWR0aCA9IDAsXHJcbiAgICAgICAgbm9kZS53aWR0aCA9IG5vZGUuaGVpZ2h0ID0gMTU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChub2RlLmlkICE9PSAndmVyc2lvbicpIHtcclxuICAgICAgbm9kZS5jb25zdHJhaW50cyA9IE5vZGVDb25zdHJhaW50cy5JbkNvbm5lY3QgfCBOb2RlQ29uc3RyYWludHMuT3V0Q29ubmVjdCB8XHJcbiAgICAgICAgTm9kZUNvbnN0cmFpbnRzLlBvaW50ZXJFdmVudHMgfCBOb2RlQ29uc3RyYWludHMuU2VsZWN0O1xyXG4gICAgICB0aGlzLl9kZWNvcmF0ZU5vZGUobm9kZSk7XHJcbiAgICAgIG5vZGUucG9ydHMgPSBnZXRQb3J0cygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG4gIHB1YmxpYyBjb25uRGVmYXVsdHMgPSAoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkgPT4ge1xyXG4gICAgY29ubmVjdG9yLmNvbnN0cmFpbnRzID0gQ29ubmVjdG9yQ29uc3RyYWludHMuUmVhZE9ubHkgJiB+Q29ubmVjdG9yQ29uc3RyYWludHMuU2VsZWN0O1xyXG5cclxuICAgIHRoaXMuX2RlY29yYXRlQ29ubmVjdG9yKGNvbm5lY3Rvcik7XHJcbiAgfVxyXG4gIG9wZW4oaXRlbTogRG9jdW1lbnRJbmZvKSB7XHJcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHsgcXVlcnlQYXJhbXM6IHsgZG9jdW1lbnRJZDogaXRlbS5pZC5lbmNvZGVJZCgpIH0gfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90aW1lbGluZSgpIHtcclxuICAgIGNvbnN0IGl0ZW1zIDp7XHJcbiAgICAgIHRpbWU/OiBEYXRlO1xyXG4gICAgdXNlcklkID86IHN0cmluZztcclxuICAgIHN0YXRlID86IHN0cmluZztcclxuICB9IFtdID0gW10sIHN1Ym1pc3Npb25zOiBEYXRlW10gPSBbXTtcclxuICAgIGxldCBtaW5EYXRlOiBEYXRlIHwgdW5kZWZpbmVkLCBtYXhEYXRlOiBEYXRlIHwgdW5kZWZpbmVkLCBlc3RpbWF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICAgIGZvcihsZXQgbCBvZiBcclxuICAgICAgdGhpcy5tb2RlbC5sb2cpIHtcclxuICAgICAgY29uc3QgeyB0aW1lLCB1c2VySWQgfSA9IGw7XHJcbiAgICAgIHN3aXRjaCAobC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnU3VibWl0JzpcclxuICAgICAgICAgIHN1Ym1pc3Npb25zLnB1c2godGltZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICB9XHJcbiAgICAgIGlmICghaXRlbXMuZmluZCh0ID0+IHQudGltZSA9PT0gdGltZSkpXHJcbiAgICAgICAgaXRlbXMucHVzaCh7IHRpbWUsIHVzZXJJZCB9KTtcclxuICAgICAgaWYgKCFtaW5EYXRlIHx8IGRheWpzKHRpbWUpLmlzQmVmb3JlKG1pbkRhdGUpKSBtaW5EYXRlID0gdGltZTtcclxuICAgICAgaWYgKCFtYXhEYXRlIHx8IGRheWpzKHRpbWUpLmlzQWZ0ZXIobWF4RGF0ZSkpIG1heERhdGUgPSB0aW1lO1xyXG4gICAgICBpZiAobC5lc3RpbWF0ZSkgZXN0aW1hdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy50aW1lbGluZSA9IHtcclxuICAgICAgaXRlbXMsIG1pbkRhdGUsIG1heERhdGUsXHJcbiAgICAgIHN1Ym1pc3Npb25zLCBlc3RpbWF0ZVxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICB0aGlzLl9zY29wZShzdWJtaXNzaW9uc1tzdWJtaXNzaW9ucy5sZW5ndGggLSAxXSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBkYXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfc2NvcGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy50aW1lbGluZS5zdWJtaXNzaW9ucy5yZXZlcnNlKCkuXHJcbiAgICAgIGZpbmQocyA9PiBzIDw9IGRhdGUpISxcclxuICAgICAgbmV4dERhdGUgPSB0aGlzLnRpbWVsaW5lLnN1Ym1pc3Npb25zLmZpbmQocyA9PiBzID4gZGF0ZSksXHJcbiAgICAgIGVuZERhdGUgPSBuZXh0RGF0ZSA/IG5ldyBEYXRlKG5ldyBEYXRlKG5leHREYXRlKS52YWx1ZU9mKCkgLSAxKS50b0pTT04oKSBhcyBhbnkgOiB0aGlzLnRpbWVsaW5lLm1heERhdGU7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMudGltZWxpbmUsIHtcclxuICAgICAgc3RhcnREYXRlLFxyXG4gICAgICBlbmREYXRlLFxyXG4gICAgICByZWNpcGllbnRzOiB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5yZWNlaXZlZCA+PSBzdGFydERhdGUgJiYgci5yZWNlaXZlZCA8PSBlbmREYXRlKSxcclxuICAgICAgbG9nOiB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLnRpbWUgPj0gc3RhcnREYXRlICYmIGwudGltZSA8PSBlbmREYXRlKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luZGljYXRvcnMoKSB7XHJcbiAgICBjb25zdCBpbmRpY2F0b3JzOiBOb2RlTW9kZWxbXSA9IFtdO1xyXG4gICAgdGhpcy5tb2RlbC5sb2cuZm9yRWFjaChsID0+IHtcclxuICAgICAgc3dpdGNoIChsLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdOb2RlJzpcclxuICAgICAgICAgIGlmIChsLmVycm9yKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBXQVJOTklOR19QQVRILFxyXG4gICAgICAgICAgICAgICAgYWxpZ246ICdYTWluWU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGwuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ0JvdHRvbUNlbnRlcidcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiBnZXRXYXJuKDgwMClcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBsLm5vZGVJZFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdOb2RlSnVtcCc6XHJcbiAgICAgICAgICAvL2luZGljYXRvcnMucHVzaCh7XHJcbiAgICAgICAgICAvLyAgc2hhcGU6IHtcclxuICAgICAgICAgIC8vICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgIC8vICAgIGRhdGE6IEpVTVBfUEFUSCxcclxuICAgICAgICAgIC8vICAgIGFsaWduOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAvLyAgfSxcclxuICAgICAgICAgIC8vICBzdHlsZToge1xyXG4gICAgICAgICAgLy8gICAgZmlsbDogJ2JsYWNrJ1xyXG4gICAgICAgICAgLy8gIH0sXHJcbiAgICAgICAgICAvLyAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgLy8gICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgLy8gICAgcGFyZW50SWQ6IGwubm9kZUlkXHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgICAgLy99KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5yZW1vdmVMYXllcignaW5kaWNhdG9ycycpO1xyXG4gICAgaW5kaWNhdG9ycy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmRpYWdyYW0uZ2V0Tm9kZU9iamVjdCgoaS5hZGRJbmZvIGFzIE5vZGVEYXRhKS5wYXJlbnRJZCEpO1xyXG4gICAgICBpLm9mZnNldFggPSBwYXJlbnQub2Zmc2V0WCEgKyBwYXJlbnQud2lkdGghIC8gMiAtIDE1LFxyXG4gICAgICAgIGkub2Zmc2V0WSA9IHBhcmVudC5vZmZzZXRZISArIHBhcmVudC5oZWlnaHQhIC8gMiAtIDE1O1xyXG4gICAgICB0aGlzLmRpYWdyYW0uYWRkKGkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uYWRkTGF5ZXIoeyBpZDogJ2luZGljYXRvcnMnIH0sIGluZGljYXRvcnMpO1xyXG4gIH1cclxuICBwcml2YXRlIF9kZWNvcmF0ZU5vZGUobm9kZTogTm9kZU1vZGVsKSB7XHJcbiAgICBjb25zdCBsb2cgPSB0aGlzLnRpbWVsaW5lLmxvZy5maWx0ZXIociA9PiByLm5vZGVJZCA9PT0gbm9kZS5pZCk7XHJcblxyXG4gICAgaWYgKGxvZy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IHRoaXMudGltZWxpbmUucmVjaXBpZW50cy5maWx0ZXIociA9PiByLm5vZGVJZCA9PT0gbm9kZS5pZCk7XHJcblxyXG4gICAgICBub2RlLnN0eWxlIS5zdHJva2VDb2xvciA9IHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICBub2RlLnN0eWxlIS5zdHJva2VEYXNoQXJyYXkgPSBsb2cuZmluZChsID0+IGwuZXN0aW1hdGUpID8gJzMgMicgOiAnJztcclxuXHJcbiAgICAgIG5vZGUuc3R5bGUhLmZpbGwgPSByZWNpcGllbnRzLmZpbmQociA9PiByLnBlbmRpbmcgJiYgIXIuZXN0aW1hdGUpID8gdGhpcy5fYWNjZW50Q29sb3IgOiAnd2hpdGUnO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBub2RlLnN0eWxlIS5maWxsID0gJ3doaXRlJyxcclxuICAgICAgICBub2RlLnN0eWxlIS5zdHJva2VDb2xvciA9ICdkYXJrZ3JheScsXHJcbiAgICAgICAgbm9kZS5zdHlsZSEuc3Ryb2tlRGFzaEFycmF5ID0gJzYgMic7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RlY29yYXRlQ29ubmVjdG9yKGNvbm5lY3RvcjogQ29ubmVjdG9yTW9kZWwpIHtcclxuICAgIGNvbnN0IGxvZyA9IHRoaXMudGltZWxpbmUubG9nLmZpbHRlcihsID0+IGwuc291cmNlSWQgPT09IGNvbm5lY3Rvci5zb3VyY2VJRCAmJiBsLnRhcmdldElkID09IGNvbm5lY3Rvci50YXJnZXRJRCk7XHJcblxyXG4gICAgaWYgKGxvZy5sZW5ndGgpIHtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlIS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IhLnN0eWxlIS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IhLnN0eWxlIS5maWxsID1cclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlIS5zdHJva2VEYXNoQXJyYXkgPSBsb2cuZmluZChsID0+IGwuZXN0aW1hdGUpID8gJzMgMicgOiAnJztcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgY29ubmVjdG9yLnN0eWxlIS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IhLnN0eWxlIS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IhLnN0eWxlIS5maWxsID0gJ2RhcmtncmF5JyxcclxuICAgICAgICBjb25uZWN0b3Iuc3R5bGUhLnN0cm9rZURhc2hBcnJheSA9ICc2IDInO1xyXG4gIH1cclxuICBwcml2YXRlIF92ZXJzaW9uKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLnJlbW92ZUxheWVyKFxyXG4gICAgICAndmVyc2lvbicpO1xyXG4gICAgY29uc3QgdmVyc2lvbiA9IHtcclxuICAgICAgaWQ6ICd2ZXJzaW9uJyxcclxuICAgICAgc2hhcGU6IHtcclxuICAgICAgICB0eXBlOiAnVGV4dCcsXHJcbiAgICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnRGlhZ3JhbVZlcnNpb24nLCB0aGlzLm1vZGVsLmRpYWdyYW0udmVyc2lvbilcclxuICAgICAgfSxcclxuICAgICAgb2Zmc2V0WTogNSxcclxuICAgICAgb2Zmc2V0WDogNSxcclxuICAgICAgc3R5bGU6IHtcclxuICAgICAgICBmb250U2l6ZTogNTAsXHJcbiAgICAgICAgb3BhY2l0eTogLjFcclxuICAgICAgfSxcclxuICAgICAgY29uc3RyYWludHM6IE5vZGVDb25zdHJhaW50cy5SZWFkT25seVxyXG4gICAgfSBhcyBUZXh0TW9kZWw7XHJcbiAgICB0aGlzLmRpYWdyYW0uYWRkTGF5ZXIoe1xyXG4gICAgICBpZDogJ3ZlcnNpb24nLFxyXG4gICAgICBvYmplY3RzOiBbXHJcbiAgICAgICAgdmVyc2lvbl1cclxuICAgIH0gYXMgTGF5ZXJNb2RlbCk7XHJcbiAgICB0aGlzLmRpYWdyYW0uYWRkKHZlcnNpb24pO1xyXG4gIH1cclxuICBzZWxlY3Rpb25DaGFuZ2UoZXZ0OiBJU2VsZWN0aW9uQ2hhbmdlRXZlbnRBcmdzKSB7XHJcbiAgICBpZiAoZXZ0LnN0YXRlICE9PSAnQ2hhbmdlZCcpIHJldHVybjtcclxuICAgIHRoaXMuX3VuaGlnaGxpZ2h0KCk7XHJcbiAgICBpZiAoZXZ0Lm5ld1ZhbHVlLmxlbmd0aCkge1xyXG4gICAgICBsZXQgbm9kZSA9IGV2dC5uZXdWYWx1ZVswXSBhcyBOb2RlTW9kZWw7XHJcblxyXG4gICAgICBjb25zdCB7IGluZGljYXRvciwgcGFyZW50SWQgfSA9IG5vZGUuYWRkSW5mbyBhcyBOb2RlRGF0YSB8fCB7fTtcclxuXHJcbiAgICAgIGlmIChpbmRpY2F0b3IpIHtcclxuICAgICAgICBub2RlID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QocGFyZW50SWQhKTtcclxuICAgICAgICB0aGlzLmRpYWdyYW0uc2VsZWN0KFtub2RlXSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgaWRzID0gKChub2RlIGFzIGFueSkuaW5FZGdlcykuY29uY2F0KChub2RlIGFzIGFueSkub3V0RWRnZXMpO1xyXG4gICAgICAgIGlkcy5wdXNoKG5vZGUuaWQpO1xyXG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodChpZHMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbmZvUmVmKSB0aGlzLl9pbmZvUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFRyYWNlRWxlbWVudENvbXBvbmVudCwge1xyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgbm9kZSxcclxuICAgICAgICAgICAgdGltZWxpbmU6IHRoaXMudGltZWxpbmUsXHJcbiAgICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLFxyXG4gICAgICAgICAgICB1dGlsaXR5UmVmOiB0aGlzLl91dGlsaXR5UmVmLFxyXG4gICAgICAgICAgfSBhcyBFbGVtZW50RGF0YSxcclxuICAgICAgICAgIHBvbGljeTogT3BlblBvbGljeS5UYWJcclxuICAgICAgICB9KS50aGVuKChlOiBQYW5lUmVmKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9pbmZvUmVmID0gZTtcclxuICAgICAgICAgIGUuYW5pbWF0aW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5ub2RlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBwdWJsaWMgaGlnaGxpZ2h0VGltZSh0aW1lOiBEYXRlKSB7XHJcbiAgICB0aGlzLnRpbWVsaW5lLmRhdGUgPSB0aW1lO1xyXG4gICAgdGhpcy5kaWFncmFtLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgICB0aGlzLl91bmhpZ2hsaWdodCgpO1xyXG4gICAgaWYgKHRpbWUgPCB0aGlzLnRpbWVsaW5lLnN0YXJ0RGF0ZSB8fCB0aW1lID4gdGhpcy50aW1lbGluZS5lbmREYXRlKSB7XHJcbiAgICAgIHRoaXMuX3Njb3BlKHRpbWUpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGlhZ3JhbS5ub2Rlcy5sZW5ndGg7IGkrKylcclxuICAgICAgICB0aGlzLl9kZWNvcmF0ZU5vZGUodGhpcy5kaWFncmFtLm5vZGVzW2ldKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRpYWdyYW0uY29ubmVjdG9ycy5sZW5ndGg7IGkrKylcclxuICAgICAgICB0aGlzLl9kZWNvcmF0ZUNvbm5lY3Rvcih0aGlzLmRpYWdyYW0uY29ubmVjdG9yc1tpXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaWRzID0gdGhpcy50aW1lbGluZS5sb2cuXHJcbiAgICAgIGZpbHRlcihsID0+IGwubm9kZUlkICYmIGwudGltZSA9PT0gdGltZSkuXHJcbiAgICAgIG1hcChsID0+IGwubm9kZUlkISkuXHJcbiAgICAgIGZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKTtcclxuXHJcbiAgICB0aGlzLl9oaWdobGlnaHQoaWRzKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gIH1cclxuXHJcbiAgcGFuKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzID0gdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzIHwgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbjtcclxuICAgIHRoaXMuZGlhZ3JhbS50b29sID0gRGlhZ3JhbVRvb2xzLlpvb21QYW47XHJcbiAgfVxyXG4gIGN1cnNvcigpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyA9IHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyAmIH5EaWFncmFtQ29uc3RyYWludHMuUGFuO1xyXG4gICAgdGhpcy5kaWFncmFtLnRvb2wgPSBEaWFncmFtVG9vbHMuU2luZ2xlU2VsZWN0O1xyXG4gIH1cclxuICBwcml2YXRlIF9oaWdobGlnaHQoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgb2JqID0gdGhpcy5kaWFncmFtLmdldE9iamVjdChpZHNbaV0pIGFzIGFueTtcclxuICAgICAgaWYgKG9iai5zb3VyY2VJRClcclxuICAgICAgICBvYmouc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgICAgb2JqLnRhcmdldERlY29yYXRvci5zdHlsZS5zdHJva2VDb2xvciA9XHJcbiAgICAgICAgICBvYmoudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPSB0aGlzLl9wcmltZXJ5Q29sb3I7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBvYmouc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9wcmltZXJ5Q29sb3I7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWdoTGlnaHRlZElkcyA9IGlkcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VuaGlnaGxpZ2h0KCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gdGhpcy5faGlnaExpZ2h0ZWRJZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgY29uc3Qgb2JqID0gdGhpcy5kaWFncmFtLmdldE9iamVjdCh0aGlzLl9oaWdoTGlnaHRlZElkc1tpXSkgYXMgYW55O1xyXG4gICAgICBpZiAob2JqLnNvdXJjZUlEKVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlQ29ubmVjdG9yKG9iaik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLl9kZWNvcmF0ZU5vZGUob2JqKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hMaWdodGVkSWRzID0gW107XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIkBzd2l0Y2ggKG1vZGUpIHtcclxuPCEtLSBkaWFncmFtIC0tPlxyXG4gIEBjYXNlICgnZGlhZ3JhbScpIHtcclxuPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4XCI+XHJcbiAgPG1hdC10b29sYmFyPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImJyb3dzZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0JhY2snIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmFycm93X2JhY2s8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgfFxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInBhbigpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1BhbicgfCB0cmFuc2xhdGVcIj48c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1wYW5cIj48L3NwYW4+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY3Vyc29yKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQ3Vyc29yJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWN1cnNvclwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJndWlkZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPmhlbHBfb3V0bGluZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPC9tYXQtdG9vbGJhcj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGZsZXhcIj5cclxuICAgIDwhLS0gdGltZWxpbmUgLS0+XHJcbiAgICBAaWYgKHRpbWVsaW5lPy5pdGVtcy5sZW5ndGggPiAxKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmVcIiBkYXRhLWhlbHA9XCJ0aW1lbGluZVwiPlxyXG4gICAgICBAZm9yIChkYXRlIG9mIHRpbWVsaW5lLml0ZW1zOyB0cmFjayBkYXRlOyBsZXQgbGFzdCA9ICRsYXN0KSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCJcclxuICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImRhdGUudGltZSA9PT0gdGltZWxpbmUuZGF0ZVwiXHJcbiAgICAgICAgICAgKGNsaWNrKT1cImhpZ2hsaWdodFRpbWUoZGF0ZS50aW1lKVwiIG1hdFJpcHBsZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICAgIEBpZiAoIWxhc3QgfHwgIXRpbWVsaW5lLmVzdGltYXRlKSB7XHJcbiAgICAgICAgICBAaWYgKGRhdGUudXNlcklkKSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIndob1wiPlxyXG4gICAgICAgICAgICB7e2RhdGUudXNlcklkIHwgdXNlck5hbWUgfCBhc3luYyB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj5cclxuICAgICAgICAgICAge3tkYXRlLnRpbWUgfCBhbURhdGVGb3JtYXQ6ICdNTU0gRG8gSDptbScgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAge3snRXN0aW1hdGUnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5kaWNhdG9yLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZGljYXRvclwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiICNkaWFncmFtIGRpcj1cImx0clwiPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4gIH1cclxuPCEtLSBicm93c2UgLS0+XHJcbiAgQGRlZmF1bHQge1xyXG48ZGl2IGNsYXNzPVwiZmxleCBjb2x1bW4gZmlsbFwiPlxyXG4gIDxtYXQtdG9vbGJhciBjbGFzcz1cInJvd1wiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5GaWx0ZXIoJGV2ZW50KVwiIFtiaXpkb2NUb29sdGlwXT1cIidGaWx0ZXInfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPC9tYXQtdG9vbGJhcj5cclxuICA8bWF0LXByb2dyZXNzLWJhciBbbW9kZV09XCJsb2FkaW5nXCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICA8IS0tIHRhYmxlIC0tPlxyXG4gIDxtYXQtdGFibGUgY2xhc3M9XCJmbGV4XCIgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIG1hdFNvcnQ+XHJcbiAgICA8IS0tIE51bWJlciBjb2x1bW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm51bWJlclwiPlxyXG4gICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj57eydOdW1iZXInIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+IHt7aXRlbS5udW1iZXJ9fSA8L21hdC1jZWxsPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIFN1YmplY3QgY29sdW1uIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdWJqZWN0XCI+XHJcbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1N1YmplY3QnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+IHt7aXRlbS5zdWJqZWN0fX0gPC9tYXQtY2VsbD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBTdGF0ZUlkIGNvbHVtbiAtLT5cclxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3RhdGVJZFwiPlxyXG4gICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj1cInN0YXRlSWRcIj57eydTdGF0dXMnIHwgdHJhbnNsYXRlIH19PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPlxyXG4gICAgICAgIDxiaXpkb2Mtc3RhdHVzIFtzdGF0ZUlkXT1cIml0ZW0uc3RhdGVJZFwiPjwvYml6ZG9jLXN0YXR1cz5cclxuICAgICAgPC9tYXQtY2VsbD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L21hdC1oZWFkZXItcm93PlxyXG4gICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCBpdGVtOyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwib3BlbihpdGVtKVwiPlxyXG4gICAgPC9tYXQtcm93PlxyXG4gIDwvbWF0LXRhYmxlPlxyXG4gIDwhLS0gcmFuZ2UgLS0+XHJcbiAgPGVqcy1yYW5nZW5hdmlnYXRvciB2YWx1ZVR5cGU9J0RhdGVUaW1lJyBbdmFsdWVdPXJhbmdlIGxhYmVsRm9ybWF0PSdNTU0nIGJhY2tncm91bmQ9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdGhlbWVdPVwidGhlbWVcIiBsYWJlbEludGVyc2VjdEFjdGlvbj0nSGlkZScgZW5hYmxlR3JvdXBpbmc9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBncm91cEJ5PVwiWWVhcnNcIiBpbnRlcnZhbFR5cGU9J01vbnRocydcclxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VkKT0ncmFuZ2VDaGFuZ2VkKCRldmVudCknPlxyXG4gICAgPGUtcmFuZ2VuYXZpZ2F0b3Itc2VyaWVzLWNvbGxlY3Rpb24+XHJcbiAgICAgIDxlLXJhbmdlbmF2aWdhdG9yLXNlcmllcyBbZGF0YVNvdXJjZV09J3JhbmdlRGF0YScgW2ZpbGxdPVwiYWNjZW50XCIgdHlwZT0nQXJlYScgeE5hbWU9J2RhdGUnIHlOYW1lPSdjb3VudCcgd2lkdGg9Mj5cclxuICAgICAgPC9lLXJhbmdlbmF2aWdhdG9yLXNlcmllcz5cclxuICAgIDwvZS1yYW5nZW5hdmlnYXRvci1zZXJpZXMtY29sbGVjdGlvbj5cclxuICA8L2Vqcy1yYW5nZW5hdmlnYXRvcj5cclxuPC9kaXY+XHJcbiAgfVxyXG59XHJcbjwhLS0gYXJncyAtLT5cclxuPG5nLXRlbXBsYXRlICNhcmdzPlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiY29sdW1uIGdhcFwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJzZWFyY2hcIiAjc2VhcmNoIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIGRhdGEtaGVscD1cInNlYXJjaFwiIFtwbGFjZWhvbGRlcl09XCInTnVtYmVyJ3x0cmFuc2xhdGVcIiAvPlxyXG4gICAgICA8bWF0LWljb24gbWF0U3VmZml4IGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgPGJpemRvYy1zZWxlY3QgdHlwZT1cImZvcm1zXCIgW3BsYWNlaG9sZGVyXT1cIidGb3JtJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmb3JtSWRcIj48L2JpemRvYy1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNlc3RpbWF0ZT5cclxuICB7eydFc3RpbWF0ZScgfCB0cmFuc2xhdGV9fVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -26,14 +26,14 @@ export class ReassignDialog {
26
26
  this.users$ = account.findAll('').
27
27
  pipe(map(r => r.filter(u => this._data.exclude.indexOf(u.id) < 0)));
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.SessionService }, { token: i2.AccountService }], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", 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\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n @for (u of users$ | async; track u) {\r\n <mat-option [value]=\"u.id\">{{u.name}}</mat-option>\r\n }\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.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i10.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "pipe", type: i11.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ReassignDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.SessionService }, { token: i2.AccountService }], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", 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\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n @for (u of users$ | async; track u) {\r\n <mat-option [value]=\"u.id\">{{u.name}}</mat-option>\r\n }\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.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i10.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "pipe", type: i11.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignDialog, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ReassignDialog, decorators: [{
33
33
  type: Component,
34
34
  args: [{ template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n @for (u of users$ | async; track u) {\r\n <mat-option [value]=\"u.id\">{{u.name}}</mat-option>\r\n }\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" }]
35
35
  }], ctorParameters: () => [{ type: undefined, decorators: [{
36
36
  type: Inject,
37
37
  args: [MAT_DIALOG_DATA]
38
38
  }] }, { type: i1.SessionService }, { type: i2.AccountService }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhc3NpZ24uZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9yZWFzc2lnbi5kaWFsb2cudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL3JlYXNzaWduLmRpYWxvZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBS3JDLE1BQU0sT0FBTyxjQUFjO0lBT3pCLFlBQTZDLEtBQW1CLEVBQUUsT0FBdUIsRUFBRSxPQUF1QjtRQUFyRSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBTnZELFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUM1QixNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BELElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7U0FDNUIsQ0FBQyxDQUFDO1FBSUQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQzs4R0FYVSxjQUFjLGtCQU9MLGVBQWU7a0dBUHhCLGNBQWMsb0RDWjNCLCt5Q0EwQkE7OzJGRGRhLGNBQWM7a0JBSDFCLFNBQVM7OzswQkFVSyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBSb2xlLCBVc2VySW5mbyB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVhc3NpZ24uZGlhbG9nLmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWFzc2lnbkRpYWxvZyB7XHJcbiAgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgdXNlcklkOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIG5vdGU6IG5ldyBGb3JtQ29udHJvbChudWxsKVxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IHJvbGVzOiBSb2xlW107XHJcbiAgcmVhZG9ubHkgdXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJJbmZvW10+O1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhOiBSZWFzc2lnbkRhdGEsIHNlc3Npb246IFNlc3Npb25TZXJ2aWNlLCBhY2NvdW50OiBBY2NvdW50U2VydmljZSkge1xyXG4gICAgdGhpcy5yb2xlcyA9IHNlc3Npb24ucHJvZmlsZS5yb2xlcztcclxuICAgIHRoaXMudXNlcnMkID0gYWNjb3VudC5maW5kQWxsKCcnKS5cclxuICAgICAgcGlwZShtYXAociA9PiByLmZpbHRlcih1ID0+IHRoaXMuX2RhdGEuZXhjbHVkZS5pbmRleE9mKHUuaWQpIDwgMCkpKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBSZWFzc2lnbkRhdGEge1xyXG4gIGV4Y2x1ZGU6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlYXNzaWduTW9kZWwge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4vLyAgcm9sZT86IHN0cmluZztcclxuICBub3RlPzogc3RyaW5nO1xyXG59XHJcbiIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlPnt7J1JlYXNzaWduJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJjb2x1bW5cIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJ7eydXaG8nIHwgdHJhbnNsYXRlfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VySWRcIiByZXF1aXJlZD5cclxuICAgICAgICBAZm9yICh1IG9mIHVzZXJzJCB8IGFzeW5jOyB0cmFjayB1KSB7XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwidS5pZFwiPnt7dS5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPCEtLTxtYXQtZm9ybS1maWVsZD5cclxuICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwie3snUm9sZScgfCB0cmFuc2xhdGV9fVwiIGZvcm1Db250cm9sTmFtZT1cInJvbGVcIj5cclxuICAgICAgPG1hdC1vcHRpb24+e3snTm9uZSd8IHRyYW5zbGF0ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgciBvZiByb2xlc1wiIFt2YWx1ZV09XCJyLm5hbWVcIj57e3IudGl0bGV9fTwvbWF0LW9wdGlvbj5cclxuICAgIDwvbWF0LXNlbGVjdD5cclxuICA8L21hdC1mb3JtLWZpZWxkPi0tPlxyXG4gIDxtYXQtZm9ybS1maWVsZD5cclxuICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBjZGtUZXh0YXJlYUF1dG9zaXplIGZvcm1Db250cm9sTmFtZT1cIm5vdGVcIiBwbGFjZWhvbGRlcj1cInt7J05vdGUnfCB0cmFuc2xhdGV9fVwiIG1heGxlbmd0aD1cIjIwMFwiPjwvdGV4dGFyZWE+XHJcbiAgICA8bWF0LWhpbnQgYWxpZ249XCJlbmRcIj57e2Zvcm0uY29udHJvbHMubm90ZS52YWx1ZT8ubGVuZ3RoIHx8IDB9fSAvIHt7MjAwfX08L21hdC1oaW50PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvZm9ybT5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbjxtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImZvcm0udmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWRcIj57eydPSycgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlPnt7J0NhbmNlbCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG48L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhc3NpZ24uZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL3JlYXNzaWduLmRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9yZWFzc2lnbi5kaWFsb2cuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJM0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUtyQyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUE2QyxLQUFtQixFQUFFLE9BQXVCLEVBQUUsT0FBdUI7UUFBckUsVUFBSyxHQUFMLEtBQUssQ0FBYztRQU52RCxTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDNUIsTUFBTSxFQUFFLElBQUksV0FBVyxDQUFnQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkUsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFnQixJQUFJLENBQUM7U0FDM0MsQ0FBQyxDQUFDO1FBSUQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQzs4R0FYVSxjQUFjLGtCQU9MLGVBQWU7a0dBUHhCLGNBQWMsb0RDWjNCLCt5Q0EwQkE7OzJGRGRhLGNBQWM7a0JBSDFCLFNBQVM7OzswQkFVSyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBSb2xlLCBVc2VySW5mbyB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVhc3NpZ24uZGlhbG9nLmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWFzc2lnbkRpYWxvZyB7XHJcbiAgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgdXNlcklkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIG5vdGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKVxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IHJvbGVzOiBSb2xlW107XHJcbiAgcmVhZG9ubHkgdXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJJbmZvW10+O1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhOiBSZWFzc2lnbkRhdGEsIHNlc3Npb246IFNlc3Npb25TZXJ2aWNlLCBhY2NvdW50OiBBY2NvdW50U2VydmljZSkge1xyXG4gICAgdGhpcy5yb2xlcyA9IHNlc3Npb24ucHJvZmlsZS5yb2xlcztcclxuICAgIHRoaXMudXNlcnMkID0gYWNjb3VudC5maW5kQWxsKCcnKS5cclxuICAgICAgcGlwZShtYXAociA9PiByLmZpbHRlcih1ID0+IHRoaXMuX2RhdGEuZXhjbHVkZS5pbmRleE9mKHUuaWQpIDwgMCkpKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBSZWFzc2lnbkRhdGEge1xyXG4gIGV4Y2x1ZGU6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlYXNzaWduTW9kZWwge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIC8vICByb2xlPzogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbn1cclxuIiwiPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3snUmVhc3NpZ24nIHwgdHJhbnNsYXRlIH19PC9oMj5cclxuPG1hdC1kaWFsb2ctY29udGVudD5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImNvbHVtblwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cInt7J1dobycgfCB0cmFuc2xhdGV9fVwiIGZvcm1Db250cm9sTmFtZT1cInVzZXJJZFwiIHJlcXVpcmVkPlxyXG4gICAgICAgIEBmb3IgKHUgb2YgdXNlcnMkIHwgYXN5bmM7IHRyYWNrIHUpIHtcclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ1LmlkXCI+e3t1Lm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8IS0tPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJ7eydSb2xlJyB8IHRyYW5zbGF0ZX19XCIgZm9ybUNvbnRyb2xOYW1lPVwicm9sZVwiPlxyXG4gICAgICA8bWF0LW9wdGlvbj57eydOb25lJ3wgdHJhbnNsYXRlfX08L21hdC1vcHRpb24+XHJcbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByIG9mIHJvbGVzXCIgW3ZhbHVlXT1cInIubmFtZVwiPnt7ci50aXRsZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+LS0+XHJcbiAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgPHRleHRhcmVhIG1hdElucHV0IGNka1RleHRhcmVhQXV0b3NpemUgZm9ybUNvbnRyb2xOYW1lPVwibm90ZVwiIHBsYWNlaG9sZGVyPVwie3snTm90ZSd8IHRyYW5zbGF0ZX19XCIgbWF4bGVuZ3RoPVwiMjAwXCI+PC90ZXh0YXJlYT5cclxuICAgIDxtYXQtaGludCBhbGlnbj1cImVuZFwiPnt7Zm9ybS5jb250cm9scy5ub3RlLnZhbHVlPy5sZW5ndGggfHwgMH19IC8ge3syMDB9fTwvbWF0LWhpbnQ+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9mb3JtPlxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiZm9ybS52YWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiPnt7J09LJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+e3snQ2FuY2VsJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL3RpbWVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRhY2htZW50LCBMb2csIFJlY2lwaWVudCwgV29ya2Zsb3cgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1vdmVNb2RlbCB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICB1c2VySWQ6IHN0cmluZztcclxuICBub3RlPzogc3RyaW5nO1xyXG4gIHJvbGU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhZ3JhbUluZm8ge1xyXG4gIGRpYWdyYW06IFdvcmtmbG93O1xyXG4gIGRvY3VtZW50SWQ6IG51bWJlcjtcclxuICBsb2c6IExvZ1tdO1xyXG4gIGZvcm06IHN0cmluZztcclxuICBtb2RlbDogYW55O1xyXG4gIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50W107XHJcbiAgcmVjaXBpZW50czogUmVjaXBpZW50W107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTm9kZURhdGEge1xyXG4gIHBhcmVudElkPzogc3RyaW5nO1xyXG4gIGluZGljYXRvcj86IGJvb2xlYW47XHJcbiAgdmlydHVhbD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdG9yRGF0YSB7XHJcbiAgdmlydHVhbD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGltZWxpbmUge1xyXG4gICAgZGF0ZTogRGF0ZTtcclxuICAgIHN1Ym1pc3Npb25zOiBEYXRlW107XHJcbiAgICBtaW5EYXRlOiBEYXRlO1xyXG4gICAgbWF4RGF0ZTogRGF0ZTtcclxuICAgIGl0ZW1zOiB7XHJcbiAgICAgICAgdGltZT86IERhdGU7XHJcbiAgICAgICAgdXNlcklkPzogc3RyaW5nO1xyXG4gICAgICAgIHN0YXRlPzogc3RyaW5nO1xyXG4gICAgfVtdO1xyXG4gICAgZXN0aW1hdGU6IGJvb2xlYW47XHJcbiAgICBzdGFydERhdGU6IERhdGU7XHJcbiAgICBlbmREYXRlOiBEYXRlO1xyXG4gICAgcmVjaXBpZW50cz86IFJlY2lwaWVudFtdO1xyXG4gICAgbG9nPzogTG9nW107XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYWRtaW4vZG9jdW1lbnQtdHJhY2UvdGltZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dGFjaG1lbnQsIExvZywgUmVjaXBpZW50LCBXb3JrZmxvdyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW92ZU1vZGVsIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbiAgcm9sZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFncmFtSW5mbyB7XHJcbiAgZGlhZ3JhbTogV29ya2Zsb3c7XHJcbiAgZG9jdW1lbnRJZDogbnVtYmVyO1xyXG4gIGxvZzogTG9nW107XHJcbiAgZm9ybTogc3RyaW5nO1xyXG4gIG1vZGVsOiBhbnk7XHJcbiAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRbXTtcclxuICByZWNpcGllbnRzOiBSZWNpcGllbnRbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOb2RlRGF0YSB7XHJcbiAgcGFyZW50SWQ/OiBzdHJpbmc7XHJcbiAgaW5kaWNhdG9yPzogYm9vbGVhbjtcclxuICB2aXJ0dWFsPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0b3JEYXRhIHtcclxuICB2aXJ0dWFsPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUaW1lbGluZSB7XHJcbiAgICBkYXRlOiBEYXRlO1xyXG4gICAgc3VibWlzc2lvbnM6IERhdGVbXTtcclxuICAgIG1pbkRhdGU6IERhdGU7XHJcbiAgICBtYXhEYXRlOiBEYXRlO1xyXG4gICAgaXRlbXM6IHtcclxuICAgICAgICB0aW1lPzogRGF0ZTtcclxuICAgICAgICB1c2VySWQ/OiBzdHJpbmc7XHJcbiAgICAgICAgc3RhdGU/OiBzdHJpbmc7XHJcbiAgICB9W107XHJcbiAgICBlc3RpbWF0ZTogYm9vbGVhbjtcclxuICAgIHN0YXJ0RGF0ZTogRGF0ZTtcclxuICAgIGVuZERhdGU6IERhdGU7XHJcbiAgICByZWNpcGllbnRzOiBSZWNpcGllbnRbXTtcclxuICAgIGxvZzogTG9nW107XHJcbn1cclxuIl19