@bizdoc/core 2.3.20 → 2.3.22

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 (411) hide show
  1. package/assets/system/icons.json +1 -1
  2. package/assets/themes/brown.min.css +1 -90
  3. package/assets/themes/dark.min.css +1 -90
  4. package/assets/themes/deep-purple-light-blue.min.css +1 -90
  5. package/assets/themes/deep-purple-teal.min.css +1 -90
  6. package/assets/themes/default.min.css +4 -4
  7. package/assets/themes/green.min.css +1 -90
  8. package/assets/themes/indigo.min.css +1 -90
  9. package/assets/themes/spreadsheet.min.css +15 -0
  10. package/esm2022/lib/admin/admin-dismiss.service.mjs +3 -3
  11. package/esm2022/lib/admin/admin-menu.component.mjs +3 -3
  12. package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +3 -3
  13. package/esm2022/lib/admin/architecture/designer-element.component.mjs +57 -59
  14. package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +3 -3
  15. package/esm2022/lib/admin/architecture/designer.base.mjs +19 -35
  16. package/esm2022/lib/admin/architecture/designer.component.mjs +18 -8
  17. package/esm2022/lib/admin/architecture/elements/action.component.mjs +5 -5
  18. package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +5 -5
  19. package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +3 -3
  20. package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +3 -3
  21. package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +5 -5
  22. package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +3 -3
  23. package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +3 -3
  24. package/esm2022/lib/admin/architecture/elements/control.component.mjs +5 -9
  25. package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +3 -3
  26. package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +5 -5
  27. package/esm2022/lib/admin/architecture/elements/cube.component.mjs +5 -5
  28. package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +3 -3
  29. package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +3 -3
  30. package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +3 -3
  31. package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +3 -3
  32. package/esm2022/lib/admin/architecture/elements/folder.component.mjs +5 -5
  33. package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +3 -3
  34. package/esm2022/lib/admin/architecture/elements/form.component.mjs +5 -5
  35. package/esm2022/lib/admin/architecture/elements/guide.component.mjs +5 -5
  36. package/esm2022/lib/admin/architecture/elements/job.component.mjs +5 -5
  37. package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +22 -5
  38. package/esm2022/lib/admin/architecture/elements/node.component.mjs +5 -5
  39. package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +5 -5
  40. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +3 -3
  41. package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +3 -3
  42. package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +8 -7
  43. package/esm2022/lib/admin/architecture/elements/policy.component.mjs +5 -5
  44. package/esm2022/lib/admin/architecture/elements/report.component.mjs +5 -5
  45. package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +3 -3
  46. package/esm2022/lib/admin/architecture/elements/role.component.mjs +5 -5
  47. package/esm2022/lib/admin/architecture/elements/rule.component.mjs +5 -5
  48. package/esm2022/lib/admin/architecture/elements/source.component.mjs +5 -5
  49. package/esm2022/lib/admin/architecture/elements/state.component.mjs +5 -5
  50. package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +3 -3
  51. package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +3 -3
  52. package/esm2022/lib/admin/architecture/elements/type.component.mjs +5 -5
  53. package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +3 -3
  54. package/esm2022/lib/admin/architecture/elements/utility.component.mjs +5 -5
  55. package/esm2022/lib/admin/architecture/elements/view.component.mjs +5 -5
  56. package/esm2022/lib/admin/architecture/elements/widget.component.mjs +5 -5
  57. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +3 -3
  58. package/esm2022/lib/admin/core/ace.input.mjs +3 -3
  59. package/esm2022/lib/admin/core/color-picker.input.mjs +3 -3
  60. package/esm2022/lib/admin/core/localized-string.component.mjs +3 -3
  61. package/esm2022/lib/admin/core/search.input.mjs +3 -3
  62. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +3 -3
  63. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +3 -3
  64. package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  65. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +3 -3
  66. package/esm2022/lib/admin/form/designer/box-designer.component.mjs +3 -3
  67. package/esm2022/lib/admin/form/designer/design-control.component.mjs +3 -3
  68. package/esm2022/lib/admin/form/designer/properties.component.mjs +3 -3
  69. package/esm2022/lib/admin/form/designer/section.component.mjs +3 -3
  70. package/esm2022/lib/admin/form/designer/settings.component.mjs +3 -3
  71. package/esm2022/lib/admin/form/form.resolve.service.mjs +3 -3
  72. package/esm2022/lib/admin/form/workflow/node.component.mjs +3 -3
  73. package/esm2022/lib/admin/form/workflow/role-node.component.mjs +3 -3
  74. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +3 -3
  75. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +3 -3
  76. package/esm2022/lib/admin/patterns/patterns.component.mjs +3 -3
  77. package/esm2022/lib/admin/permissions/permissions.component.mjs +3 -3
  78. package/esm2022/lib/admin/positions/positions-popup.component.mjs +3 -3
  79. package/esm2022/lib/admin/positions/positions.component.mjs +3 -3
  80. package/esm2022/lib/admin/profiler/outofoffice.component.mjs +3 -3
  81. package/esm2022/lib/admin/profiler/profiler.component.mjs +3 -3
  82. package/esm2022/lib/admin/system.service.mjs +3 -3
  83. package/esm2022/lib/admin/utility-wrapper.component.mjs +3 -3
  84. package/esm2022/lib/admin/utility.pane.component.mjs +3 -3
  85. package/esm2022/lib/app.component.mjs +6 -6
  86. package/esm2022/lib/bizdoc.module.mjs +4 -4
  87. package/esm2022/lib/browse/browse-items.component.mjs +11 -9
  88. package/esm2022/lib/browse/browse.mobile.component.mjs +5 -5
  89. package/esm2022/lib/browse/browse.pane.component.mjs +3 -3
  90. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +3 -3
  91. package/esm2022/lib/browse/filter/filter.component.mjs +5 -5
  92. package/esm2022/lib/browse/folders-menu.component.mjs +3 -3
  93. package/esm2022/lib/chat/chat-info.mjs +3 -3
  94. package/esm2022/lib/chat/chat.mobile.component.mjs +3 -3
  95. package/esm2022/lib/chat/chat.service.mjs +3 -3
  96. package/esm2022/lib/chat/contacts.component.mjs +6 -6
  97. package/esm2022/lib/chat/contacts.pane.component.mjs +3 -3
  98. package/esm2022/lib/chat/conversation.component.mjs +3 -3
  99. package/esm2022/lib/chat/conversation.pane.component.mjs +3 -3
  100. package/esm2022/lib/compose/action/action-picker.component.mjs +3 -3
  101. package/esm2022/lib/compose/action/action.dialog.mjs +3 -3
  102. package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +3 -3
  103. package/esm2022/lib/compose/action/assign-action.component.mjs +3 -3
  104. package/esm2022/lib/compose/action/moveto-action.component.mjs +3 -3
  105. package/esm2022/lib/compose/action/return-action.component.mjs +3 -3
  106. package/esm2022/lib/compose/attachments/attachments.component.mjs +3 -3
  107. package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +3 -3
  108. package/esm2022/lib/compose/attachments/progress-button.directive.mjs +3 -3
  109. package/esm2022/lib/compose/box/box.component.mjs +3 -3
  110. package/esm2022/lib/compose/box/control.component.mjs +3 -3
  111. package/esm2022/lib/compose/box/row.component.mjs +3 -3
  112. package/esm2022/lib/compose/can-deactivate-changes.service.mjs +3 -3
  113. package/esm2022/lib/compose/comments/comment.component.mjs +3 -3
  114. package/esm2022/lib/compose/comments/comments.component.mjs +3 -3
  115. package/esm2022/lib/compose/comments/comments.pane.component.mjs +3 -3
  116. package/esm2022/lib/compose/comments/edit-comment.component.mjs +3 -3
  117. package/esm2022/lib/compose/comments/edits.component.mjs +3 -3
  118. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +3 -3
  119. package/esm2022/lib/compose/comments/votes.component.mjs +3 -3
  120. package/esm2022/lib/compose/compose-resolve.service.mjs +6 -6
  121. package/esm2022/lib/compose/compose.mobile.component.mjs +7 -11
  122. package/esm2022/lib/compose/compose.pane.component.mjs +9 -12
  123. package/esm2022/lib/compose/copy/copy.dialog.mjs +3 -3
  124. package/esm2022/lib/compose/dismiss.service.mjs +3 -3
  125. package/esm2022/lib/compose/document-resolver.service.mjs +3 -3
  126. package/esm2022/lib/compose/document.component.mjs +3 -3
  127. package/esm2022/lib/compose/document.mobile.component.mjs +3 -3
  128. package/esm2022/lib/compose/document.pane.component.mjs +3 -3
  129. package/esm2022/lib/compose/events/events.component.mjs +3 -3
  130. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  131. package/esm2022/lib/compose/form.component.mjs +3 -3
  132. package/esm2022/lib/compose/new-menu.component.mjs +3 -3
  133. package/esm2022/lib/compose/privilage.directive.mjs +6 -6
  134. package/esm2022/lib/compose/recipient-resolver.service.mjs +3 -3
  135. package/esm2022/lib/compose/state.component.mjs +3 -3
  136. package/esm2022/lib/compose/tag/tags.component.mjs +3 -3
  137. package/esm2022/lib/compose/trace/flow.component.mjs +3 -3
  138. package/esm2022/lib/compose/trace/people.component.mjs +3 -3
  139. package/esm2022/lib/compose/trace/trace.base.mjs +3 -3
  140. package/esm2022/lib/compose/trace/trace.component.mjs +3 -3
  141. package/esm2022/lib/compose/trace/trace.pane.component.mjs +3 -3
  142. package/esm2022/lib/compose/version-compare/version-compare.component.mjs +3 -3
  143. package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  144. package/esm2022/lib/compose/version-compare/version.pane.component.mjs +3 -3
  145. package/esm2022/lib/core/StickyToolbar.mjs +30 -0
  146. package/esm2022/lib/core/account.service.mjs +3 -3
  147. package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  148. package/esm2022/lib/core/animations.mjs +2 -2
  149. package/esm2022/lib/core/avatar/avatar.component.mjs +3 -3
  150. package/esm2022/lib/core/checkbox.mjs +3 -3
  151. package/esm2022/lib/core/component-factory-resolver.mjs +3 -3
  152. package/esm2022/lib/core/datasource.service.mjs +3 -3
  153. package/esm2022/lib/core/fields/address.designer.mjs +3 -3
  154. package/esm2022/lib/core/fields/address.field.mjs +3 -3
  155. package/esm2022/lib/core/fields/autocomplete.field.mjs +6 -6
  156. package/esm2022/lib/core/fields/checkbox.designer.mjs +3 -3
  157. package/esm2022/lib/core/fields/checkbox.field.mjs +3 -3
  158. package/esm2022/lib/core/fields/checklist.designer.mjs +3 -3
  159. package/esm2022/lib/core/fields/checklist.field.mjs +3 -3
  160. package/esm2022/lib/core/fields/date-range.designer.mjs +3 -3
  161. package/esm2022/lib/core/fields/date-range.field.mjs +3 -3
  162. package/esm2022/lib/core/fields/date.designer.mjs +3 -3
  163. package/esm2022/lib/core/fields/date.field.mjs +3 -3
  164. package/esm2022/lib/core/fields/expression.field.mjs +6 -6
  165. package/esm2022/lib/core/fields/file.designer.mjs +3 -3
  166. package/esm2022/lib/core/fields/file.field.mjs +3 -3
  167. package/esm2022/lib/core/fields/html.designer.mjs +3 -3
  168. package/esm2022/lib/core/fields/html.field.mjs +3 -3
  169. package/esm2022/lib/core/fields/input.designer.mjs +3 -3
  170. package/esm2022/lib/core/fields/input.field.mjs +3 -3
  171. package/esm2022/lib/core/fields/localized-string.field.mjs +6 -6
  172. package/esm2022/lib/core/fields/numeric.designer.mjs +3 -3
  173. package/esm2022/lib/core/fields/numeric.field.mjs +3 -3
  174. package/esm2022/lib/core/fields/options.base.mjs +6 -6
  175. package/esm2022/lib/core/fields/options.component.mjs +3 -3
  176. package/esm2022/lib/core/fields/radio-button.designer.mjs +3 -3
  177. package/esm2022/lib/core/fields/radio-button.field.mjs +3 -3
  178. package/esm2022/lib/core/fields/select.designer.mjs +3 -3
  179. package/esm2022/lib/core/fields/select.field.mjs +3 -3
  180. package/esm2022/lib/core/fields/signature.designer.mjs +3 -3
  181. package/esm2022/lib/core/fields/signature.field.mjs +3 -3
  182. package/esm2022/lib/core/fields/switch.field.mjs +3 -3
  183. package/esm2022/lib/core/fields/tags.designer.mjs +3 -3
  184. package/esm2022/lib/core/fields/tags.field.mjs +3 -3
  185. package/esm2022/lib/core/fields/textarea.designer.mjs +3 -3
  186. package/esm2022/lib/core/fields/textarea.field.mjs +3 -3
  187. package/esm2022/lib/core/fields/time.designer.mjs +3 -3
  188. package/esm2022/lib/core/fields/time.field.mjs +3 -3
  189. package/esm2022/lib/core/fields/timespan.field.mjs +6 -6
  190. package/esm2022/lib/core/fields/yesno.designer.mjs +3 -3
  191. package/esm2022/lib/core/fields/yesno.field.mjs +3 -3
  192. package/esm2022/lib/core/guide/guide.component.mjs +3 -3
  193. package/esm2022/lib/core/guide/guide.service.mjs +3 -3
  194. package/esm2022/lib/core/guide/help-tip.component.mjs +3 -3
  195. package/esm2022/lib/core/http.interceptor.mjs +3 -3
  196. package/esm2022/lib/core/hub.service.mjs +3 -3
  197. package/esm2022/lib/core/identity/identity.component.mjs +3 -3
  198. package/esm2022/lib/core/info/attachment-info.service.mjs +3 -3
  199. package/esm2022/lib/core/info/document-info.service.mjs +3 -3
  200. package/esm2022/lib/core/info/location-info.component.mjs +3 -3
  201. package/esm2022/lib/core/info/map-info.mjs +3 -3
  202. package/esm2022/lib/core/inputs/address.input.mjs +3 -3
  203. package/esm2022/lib/core/inputs/auto-complete.input.mjs +3 -3
  204. package/esm2022/lib/core/inputs/combination-picker-body.mjs +3 -3
  205. package/esm2022/lib/core/inputs/combination-picker.mjs +5 -5
  206. package/esm2022/lib/core/inputs/combination-pool.mjs +3 -3
  207. package/esm2022/lib/core/inputs/file.input.mjs +3 -3
  208. package/esm2022/lib/core/inputs/select.input.mjs +3 -3
  209. package/esm2022/lib/core/inputs/signature.input.mjs +3 -3
  210. package/esm2022/lib/core/inputs/time-picker.mjs +3 -3
  211. package/esm2022/lib/core/inputs/timespan.input.mjs +3 -3
  212. package/esm2022/lib/core/layout.component.mjs +3 -3
  213. package/esm2022/lib/core/lottie-animation.mjs +3 -3
  214. package/esm2022/lib/core/mailbox.service.mjs +3 -3
  215. package/esm2022/lib/core/none.component.mjs +3 -3
  216. package/esm2022/lib/core/pipes/action.pipe.mjs +3 -3
  217. package/esm2022/lib/core/pipes/calendar.pipe.mjs +3 -3
  218. package/esm2022/lib/core/pipes/date-format.pipe.mjs +3 -3
  219. package/esm2022/lib/core/pipes/daterange.pipe.mjs +6 -6
  220. package/esm2022/lib/core/pipes/difference.pipe.mjs +3 -3
  221. package/esm2022/lib/core/pipes/duration-format.pipe.mjs +3 -3
  222. package/esm2022/lib/core/pipes/duration.pipe.mjs +3 -3
  223. package/esm2022/lib/core/pipes/form.pipe.mjs +3 -3
  224. package/esm2022/lib/core/pipes/join.pipe.mjs +3 -3
  225. package/esm2022/lib/core/pipes/localized-string.pipe.mjs +3 -3
  226. package/esm2022/lib/core/pipes/role.pipe.mjs +3 -3
  227. package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  228. package/esm2022/lib/core/pipes/sort.pipe.mjs +6 -6
  229. package/esm2022/lib/core/pipes/state.pipe.mjs +3 -3
  230. package/esm2022/lib/core/pipes/time-ago.pipe.mjs +6 -6
  231. package/esm2022/lib/core/pipes/translate.pipe.mjs +9 -9
  232. package/esm2022/lib/core/pipes/type-value.pipe.mjs +3 -3
  233. package/esm2022/lib/core/pipes/user-name.pipe.mjs +3 -3
  234. package/esm2022/lib/core/popup/popup.component.mjs +3 -3
  235. package/esm2022/lib/core/popup/popup.service.mjs +3 -3
  236. package/esm2022/lib/core/popup/tooltip.directive.mjs +6 -6
  237. package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  238. package/esm2022/lib/core/prompt/mask/mask.component.mjs +3 -3
  239. package/esm2022/lib/core/prompt.service.mjs +3 -3
  240. package/esm2022/lib/core/router.mjs +6 -6
  241. package/esm2022/lib/core/save-changes.dialog.mjs +3 -3
  242. package/esm2022/lib/core/session.service.mjs +3 -3
  243. package/esm2022/lib/core/slots/router.directive.mjs +3 -3
  244. package/esm2022/lib/core/slots/router.service.mjs +3 -3
  245. package/esm2022/lib/core/slots/slots.component.mjs +5 -5
  246. package/esm2022/lib/core/tagging/documents.component.mjs +3 -3
  247. package/esm2022/lib/core/tagging/edit-input.component.mjs +3 -3
  248. package/esm2022/lib/core/tagging/emoji.component.mjs +3 -3
  249. package/esm2022/lib/core/tagging/tagging-item.directive.mjs +3 -3
  250. package/esm2022/lib/core/tagging/tagging.component-base.mjs +3 -3
  251. package/esm2022/lib/core/tagging/tagging.directive.mjs +3 -3
  252. package/esm2022/lib/core/tagging/tagging.pipe.mjs +3 -3
  253. package/esm2022/lib/core/tagging/users.component.mjs +3 -3
  254. package/esm2022/lib/core/translate.service.mjs +3 -3
  255. package/esm2022/lib/core/translations.mjs +4 -2
  256. package/esm2022/lib/core/window-title.service.mjs +3 -3
  257. package/esm2022/lib/cube/accum/accum.component.mjs +3 -3
  258. package/esm2022/lib/cube/chart/chart.component.mjs +3 -3
  259. package/esm2022/lib/cube/cube-info.service.mjs +3 -3
  260. package/esm2022/lib/cube/cube-menu.component.mjs +3 -3
  261. package/esm2022/lib/cube/cube-view.component.mjs +5 -5
  262. package/esm2022/lib/cube/cube.service.mjs +3 -3
  263. package/esm2022/lib/cube/explore/document-item.component.mjs +3 -3
  264. package/esm2022/lib/cube/explore/explore-item.component.mjs +3 -3
  265. package/esm2022/lib/cube/explore/explore-items.component.mjs +3 -3
  266. package/esm2022/lib/cube/explore/explore.pane.component.mjs +3 -3
  267. package/esm2022/lib/cube/explore/item-resolver.service.mjs +6 -6
  268. package/esm2022/lib/cube/explore/item.pane.component.mjs +3 -3
  269. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  270. package/esm2022/lib/cube/filter/filter.component.mjs +3 -3
  271. package/esm2022/lib/cube/grid/grid.component.mjs +3 -3
  272. package/esm2022/lib/cube/matrix/matrix.base.mjs +3 -3
  273. package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  274. package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  275. package/esm2022/lib/cube/matrix/popup.component.mjs +3 -3
  276. package/esm2022/lib/cube/matrix/table.component.mjs +8 -5
  277. package/esm2022/lib/cube/parallel/parallel.component.mjs +3 -3
  278. package/esm2022/lib/cube/pivot/pivot.component.mjs +3 -3
  279. package/esm2022/lib/cube/spreadsheet/spreadsheet.component.mjs +391 -0
  280. package/esm2022/lib/cube/spreadsheet/spreadsheet.container.mjs +19 -0
  281. package/esm2022/lib/cube/sum/sum.component.mjs +11 -9
  282. package/esm2022/lib/cube/view-base.mjs +3 -3
  283. package/esm2022/lib/cube/view.mobile.component.mjs +3 -3
  284. package/esm2022/lib/cube/view.pane.component.mjs +3 -3
  285. package/esm2022/lib/dashboard/actions/actions.widget.mjs +3 -3
  286. package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +3 -3
  287. package/esm2022/lib/dashboard/cube/compare.widget.mjs +3 -3
  288. package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +3 -3
  289. package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
  290. package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +3 -3
  291. package/esm2022/lib/dashboard/cube/document-state.widget.mjs +3 -3
  292. package/esm2022/lib/dashboard/cube/documents.widget.mjs +3 -3
  293. package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  294. package/esm2022/lib/dashboard/dashboard.component.mjs +3 -3
  295. package/esm2022/lib/dashboard/dashboard.pane.component.mjs +3 -3
  296. package/esm2022/lib/dashboard/recents/recents.widget.mjs +7 -5
  297. package/esm2022/lib/dashboard/score/activity.widget.mjs +3 -3
  298. package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +3 -3
  299. package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +3 -3
  300. package/esm2022/lib/dashboard/score/pending-results.widget.mjs +3 -3
  301. package/esm2022/lib/dashboard/score/personal-score.widget.mjs +3 -3
  302. package/esm2022/lib/dashboard/widget-item.component.mjs +3 -3
  303. package/esm2022/lib/designer.module.mjs +4 -4
  304. package/esm2022/lib/desktop.module.mjs +4 -4
  305. package/esm2022/lib/home/about/about.dialog.mjs +3 -3
  306. package/esm2022/lib/home/home-base.component.mjs +3 -3
  307. package/esm2022/lib/home/home.desktop.component.mjs +3 -3
  308. package/esm2022/lib/home/home.mobile.component.mjs +6 -6
  309. package/esm2022/lib/home/notifications/notifications.component.mjs +3 -3
  310. package/esm2022/lib/home/options/options.component.mjs +3 -3
  311. package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  312. package/esm2022/lib/home/sign/sign.component.mjs +3 -3
  313. package/esm2022/lib/home/tools.component.mjs +3 -3
  314. package/esm2022/lib/impersonate/impersonate.component.mjs +3 -3
  315. package/esm2022/lib/mobile.module.mjs +4 -4
  316. package/esm2022/lib/modules/chart.module.mjs +4 -4
  317. package/esm2022/lib/modules/circular-gauge.module.mjs +4 -4
  318. package/esm2022/lib/modules/datepicker.intl.mjs +3 -3
  319. package/esm2022/lib/modules/dayjs.module.mjs +4 -4
  320. package/esm2022/lib/modules/diagram.module.mjs +4 -4
  321. package/esm2022/lib/modules/gantt.module.mjs +7 -7
  322. package/esm2022/lib/modules/grid.module.mjs +4 -4
  323. package/esm2022/lib/modules/linear-gauge.module.mjs +4 -4
  324. package/esm2022/lib/modules/material.module.mjs +4 -4
  325. package/esm2022/lib/modules/paginator.intl.mjs +3 -3
  326. package/esm2022/lib/modules/pivot.module.mjs +4 -4
  327. package/esm2022/lib/modules/schedule.module.mjs +4 -4
  328. package/esm2022/lib/modules/spreadsheet.module.mjs +4 -4
  329. package/esm2022/lib/modules/stepper.intl.mjs +3 -3
  330. package/esm2022/lib/modules/texteditor.module.mjs +4 -4
  331. package/esm2022/lib/notifications/filter.component.mjs +3 -3
  332. package/esm2022/lib/notifications/notifications-table.component.mjs +3 -3
  333. package/esm2022/lib/notifications/notifications.mobile.component.mjs +3 -3
  334. package/esm2022/lib/notifications/notifications.pane.component.mjs +3 -3
  335. package/esm2022/lib/notifications/notifications.service.mjs +3 -3
  336. package/esm2022/lib/notifications/types/commented.notification.mjs +3 -3
  337. package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
  338. package/esm2022/lib/notifications/types/escalated.notification.mjs +3 -3
  339. package/esm2022/lib/notifications/types/invite.notification.mjs +3 -3
  340. package/esm2022/lib/notifications/types/liked.notification.mjs +3 -3
  341. package/esm2022/lib/notifications/types/long-running-task.notification.mjs +3 -3
  342. package/esm2022/lib/notifications/types/notification-base.mjs +3 -3
  343. package/esm2022/lib/notifications/types/nudge.notification.mjs +3 -3
  344. package/esm2022/lib/notifications/types/state-changed.notification.mjs +3 -3
  345. package/esm2022/lib/notifications/types/tagged.notification.mjs +3 -3
  346. package/esm2022/lib/notifications/types/text.notification.mjs +3 -3
  347. package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +3 -3
  348. package/esm2022/lib/options/options.component.mjs +3 -3
  349. package/esm2022/lib/options/options.service.mjs +3 -3
  350. package/esm2022/lib/reports/arguments-component.mjs +3 -3
  351. package/esm2022/lib/reports/cube/documents.component.mjs +3 -3
  352. package/esm2022/lib/reports/cube/grid-documents.component.mjs +3 -3
  353. package/esm2022/lib/reports/cube/role-performance.component.mjs +3 -3
  354. package/esm2022/lib/reports/cube/table-documents.component.mjs +3 -3
  355. package/esm2022/lib/reports/cube/usage-args.component.mjs +3 -3
  356. package/esm2022/lib/reports/cube/usage-base.mjs +3 -3
  357. package/esm2022/lib/reports/cube/usage-chart.component.mjs +3 -3
  358. package/esm2022/lib/reports/cube/usage-pivot.component.mjs +3 -3
  359. package/esm2022/lib/reports/cube/usage.component.mjs +3 -3
  360. package/esm2022/lib/reports/report-viewer.component.mjs +3 -3
  361. package/esm2022/lib/reports/report.mobile.component.mjs +3 -3
  362. package/esm2022/lib/reports/report.pane.component.mjs +3 -3
  363. package/esm2022/lib/reports/reports-menu.component.mjs +3 -3
  364. package/esm2022/lib/reports/substitution/substitution.component.mjs +3 -3
  365. package/esm2022/lib/reports/table/table-view.component.mjs +3 -3
  366. package/esm2022/lib/reports/tasks/tasks.component.mjs +3 -3
  367. package/esm2022/lib/routes.mobile.mjs +4 -7
  368. package/esm2022/lib/scheduler/schedule.component.mjs +3 -3
  369. package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  370. package/esm2022/lib/scheduler/scheduler.pane.component.mjs +5 -5
  371. package/esm2022/lib/search/cube.component.mjs +3 -3
  372. package/esm2022/lib/search/document.component.mjs +3 -3
  373. package/esm2022/lib/search/guide.component.mjs +3 -3
  374. package/esm2022/lib/search/path.component.mjs +3 -3
  375. package/esm2022/lib/search/search.service.mjs +3 -3
  376. package/esm2022/lib/shared.module.mjs +24 -15
  377. package/esm2022/lib/system.module.mjs +17 -17
  378. package/esm2022/lib/views/cube/chart.component.mjs +3 -3
  379. package/esm2022/lib/views/cube/cube-base.mjs +14 -9
  380. package/esm2022/lib/views/cube/explore.component.mjs +3 -3
  381. package/esm2022/lib/views/cube/matrix.component.mjs +6 -4
  382. package/esm2022/lib/views/cube/parallel.component.mjs +3 -3
  383. package/esm2022/lib/views/cube/pivot.component.mjs +3 -3
  384. package/esm2022/lib/views/cube/sum.component.mjs +3 -3
  385. package/esm2022/lib/views/cube/view.component.mjs +3 -3
  386. package/esm2022/lib/views/timeline/timeline.component.exp.mjs +41 -41
  387. package/esm2022/lib/views/view-item.component.mjs +3 -3
  388. package/esm2022/lib/views/views.component.mjs +3 -3
  389. package/esm2022/lib/views/views.mobile.component.mjs +3 -3
  390. package/esm2022/lib/views/views.pane.component.mjs +5 -5
  391. package/esm2022/public-api.mjs +4 -2
  392. package/fesm2022/bizdoc-core.mjs +1510 -1429
  393. package/fesm2022/bizdoc-core.mjs.map +1 -1
  394. package/lib/admin/architecture/designer-element.component.d.ts +26 -22
  395. package/lib/admin/architecture/designer.base.d.ts +7 -12
  396. package/lib/admin/architecture/elements/control.component.d.ts +0 -1
  397. package/lib/admin/architecture/elements/matrix-view.component.d.ts +13 -3
  398. package/lib/browse/browse-items.component.d.ts +1 -1
  399. package/lib/compose/compose.mobile.component.d.ts +1 -2
  400. package/lib/compose/compose.pane.component.d.ts +1 -2
  401. package/lib/core/StickyToolbar.d.ts +13 -0
  402. package/lib/core/translations.d.ts +2 -0
  403. package/lib/cube/{grid → spreadsheet}/spreadsheet.component.d.ts +9 -2
  404. package/lib/cube/spreadsheet/spreadsheet.container.d.ts +5 -0
  405. package/lib/shared.module.d.ts +140 -138
  406. package/lib/system.module.d.ts +1 -1
  407. package/lib/views/cube/cube-base.d.ts +1 -1
  408. package/lib/views/timeline/timeline.component.exp.d.ts +10 -2
  409. package/package.json +17 -17
  410. package/public-api.d.ts +3 -1
  411. package/esm2022/lib/cube/grid/spreadsheet.component.mjs +0 -376
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { Component, Inject, HostBinding } from '@angular/core';
3
3
  import dayjs from 'dayjs';
4
4
  import { tap } from 'rxjs/operators';
5
- import { forkJoin, catchError } from 'rxjs';
5
+ import { forkJoin } from 'rxjs';
6
6
  import { DayMarkersService, Gantt, SelectionService } from '@syncfusion/ej2-angular-gantt';
7
7
  import { BIZDOC_CONFIG } from '../../core/configuration';
8
8
  import { BizDoc } from '../../core/decorators';
@@ -107,6 +107,7 @@ let TimelineViewComponent = class TimelineViewComponent {
107
107
  // durationUnit: 'Hour',
108
108
  taskbarHeight: 30,
109
109
  rowHeight: 40,
110
+ height: '420px',
110
111
  width: '100%', //this.width
111
112
  // dayWorkingTime: this.dayWorkingTime
112
113
  }, this._element.nativeElement);
@@ -116,7 +117,7 @@ let TimelineViewComponent = class TimelineViewComponent {
116
117
  evt.taskbarBgColor = this._session.getAccent();
117
118
  }
118
119
  _prepare() {
119
- const promisses = [];
120
+ const observables = [], tasks = [];
120
121
  let i = 0;
121
122
  //const observable = this._mailbox.timeline(model.documentId).pipe(tap(t => {
122
123
  //}))
@@ -145,7 +146,7 @@ let TimelineViewComponent = class TimelineViewComponent {
145
146
  }
146
147
  else
147
148
  task.ending = this.model.completed ? new Date(l.time) : new Date();
148
- this.tasks.push(task);
149
+ tasks.push(task);
149
150
  break;
150
151
  }
151
152
  case 'ModelChange':
@@ -163,14 +164,14 @@ let TimelineViewComponent = class TimelineViewComponent {
163
164
  }
164
165
  else
165
166
  task.ending = new Date();
166
- const state = this.tasks.find(t => t.type === 'StateChange' && t.time <= task.time && (!t.ending || t.ending >= task.ending));
167
+ const state = tasks.find(t => t.type === 'StateChange' && t.time <= task.time && (!t.ending || t.ending >= task.ending));
167
168
  if (state) {
168
169
  if (!state.subtasks)
169
170
  state.subtasks = [];
170
171
  state.subtasks.push(task);
171
172
  }
172
173
  else
173
- this.tasks.push(task);
174
+ tasks.push(task);
174
175
  break;
175
176
  }
176
177
  case 'ActionTaken':
@@ -190,19 +191,19 @@ let TimelineViewComponent = class TimelineViewComponent {
190
191
  };
191
192
  if (l.nodeId) {
192
193
  this.model.workflow.connectors.filter(c => c.targetId === l.nodeId).forEach(c => {
193
- const dependencies = this.tasks.filter(l => l.nodeId === c.sourceId).map(l => `FS${l.id}`);
194
+ const dependencies = tasks.filter(l => l.nodeId === c.sourceId).map(l => `FS${l.id}`);
194
195
  if (dependencies.length)
195
196
  task.dependencies = dependencies.join(',');
196
197
  });
197
198
  }
198
- const state = this.tasks.find(t => t.type === 'StateChange' && t.time <= task.time && (!t.ending || t.ending >= task.ending));
199
+ const state = tasks.find(t => t.type === 'StateChange' && t.time <= task.time && (!t.ending || t.ending >= task.ending));
199
200
  if (state) {
200
201
  if (!state.subtasks)
201
202
  state.subtasks = [];
202
203
  state.subtasks.push(task);
203
204
  }
204
205
  else
205
- this.tasks.push(task);
206
+ tasks.push(task);
206
207
  break;
207
208
  }
208
209
  default:
@@ -210,31 +211,25 @@ let TimelineViewComponent = class TimelineViewComponent {
210
211
  }
211
212
  if (l.byId) {
212
213
  const who = this._users.get(l.userId), by = this._users.get(l.byId);
213
- const promise = forkJoin([who, by]).pipe(tap(ns => {
214
+ const observe = forkJoin([who, by]).pipe(tap(ns => {
214
215
  const [who, by] = ns;
215
216
  task.name = this._translate.get('By', who.name, by.name);
216
217
  // if (l.role) {
217
218
  // const role = this.session.profile.roles.find(o => o.name === l.role);
218
219
  // if (role) task.name += `, ${role.name}`;
219
220
  // }
220
- }), catchError(() => {
221
- this._ps.error();
222
- throw new Error();
223
221
  }));
224
- promisses.push(promise);
222
+ observables.push(observe);
225
223
  }
226
224
  else if (l.userId) {
227
- const promise = this._users.get(l.userId).pipe(tap(u => {
225
+ const observe = this._users.get(l.userId).pipe(tap(u => {
228
226
  task.name = u.name;
229
227
  // if (l.role) {
230
228
  // const role = this.session.profile.roles.find(o => o.name === l.role);
231
229
  // if (role) task.name += `, ${role.name}`;
232
230
  // }
233
- }), catchError(() => {
234
- this._ps.error();
235
- throw new Error();
236
231
  }));
237
- promisses.push(promise);
232
+ observables.push(observe);
238
233
  }
239
234
  });
240
235
  this.model.events.forEach(e => {
@@ -255,7 +250,7 @@ let TimelineViewComponent = class TimelineViewComponent {
255
250
  if (r.substituteId) {
256
251
  const by = this._users.get(r.substituteId);
257
252
  const who = this._users.get(r.userId);
258
- const promise = forkJoin([who, by]).pipe(tap(u => {
253
+ const observe = forkJoin([who, by]).pipe(tap(u => {
259
254
  task.name = this._translate.get('WhoSubstituting', u[0].name, u[1].name);
260
255
  if (u[0].role)
261
256
  task.name += `, ${u[0].role}`;
@@ -264,14 +259,11 @@ let TimelineViewComponent = class TimelineViewComponent {
264
259
  if (role)
265
260
  task.name += `, ${role.name}`;
266
261
  }
267
- }), catchError(() => {
268
- this._ps.error();
269
- throw new Error();
270
262
  }));
271
- promisses.push(promise);
263
+ observables.push(observe);
272
264
  }
273
265
  else {
274
- const promise = this._users.get(r.userId).pipe(tap(u => {
266
+ const observe = this._users.get(r.userId).pipe(tap(u => {
275
267
  task.name = u.name;
276
268
  if (u.role)
277
269
  task.name += `, ${u.role}`;
@@ -280,53 +272,61 @@ let TimelineViewComponent = class TimelineViewComponent {
280
272
  if (role)
281
273
  task.name += `, ${role.name}`;
282
274
  }
283
- }), catchError(() => {
284
- this._ps.error();
285
- throw new Error();
286
275
  }));
287
- promisses.push(promise);
276
+ observables.push(observe);
288
277
  }
289
278
  if (r.nodeId) {
290
279
  this.model.workflow.connectors.filter(c => c.targetId === r.nodeId).forEach(c => {
291
- const predecessors = this.tasks.filter(l => l.nodeId === c.sourceId).map(l => l.id);
280
+ const predecessors = tasks.filter(l => l.nodeId === c.sourceId).map(l => l.id);
292
281
  if (predecessors.length)
293
282
  task.dependencies = predecessors.join(',');
294
283
  });
295
284
  }
296
- const state = this.tasks.find(t => t.type === 'StateChange' && t.time <= task.time && (!t.ending || t.ending >= task.time));
285
+ const state = tasks.find(t => t.type === 'StateChange' && t.time <= task.time && (!t.ending || t.ending >= task.time));
297
286
  if (state) {
298
287
  if (!state.subtasks)
299
288
  state.subtasks = [];
300
289
  state.subtasks.push(task);
301
290
  }
302
291
  else
303
- this.tasks.push(task);
292
+ tasks.push(task);
304
293
  });
305
- return forkJoin(promisses).
306
- pipe(tap(() => this.tasks = this.tasks.sort((t0, t1) => t0.time > t1.time ? 1 : -1)));
294
+ return forkJoin(observables).
295
+ pipe(tap(() => this.tasks = tasks.sort((t0, t1) => t0.time > t1.time ? 1 : -1)));
307
296
  }
308
- rowSelecting(r) {
309
- if (r.data.taskData.type === 'ModelChange')
310
- this._compare(r.data);
297
+ /**
298
+ *
299
+ * @param row
300
+ */
301
+ rowSelecting(row) {
302
+ if (row.data.taskData.type === 'ModelChange')
303
+ this._compare(row.data);
311
304
  }
305
+ /**
306
+ *
307
+ * @param task
308
+ */
312
309
  _compare(task) {
313
310
  this._router.navigate(['mailbox/d', this.model.documentId.encodeId(), 'version', task.time.valueOf().encodeId()], { state: { item: this.model } });
314
311
  }
315
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: TimelineViewComponent, deps: [{ token: i1.PromptService }, { token: i2.DocumentViewRef }, { token: BIZDOC_CONFIG }, { token: i3.AccountService }, { token: i4.SessionService }, { token: i5.TranslateService }, { token: i6.RouterImpl }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
316
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: TimelineViewComponent, selector: "bizdoc-timeline", host: { properties: { "dir": "this.dir" }, classAttribute: "view" }, providers: [SelectionService, DayMarkersService], ngImport: i0, template: '', isInline: true, styles: [":host{padding:8px}:host ::ng-deep .e-split-bar{display:none!important}\n"] }); }
312
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TimelineViewComponent, deps: [{ token: i1.PromptService }, { token: i2.DocumentViewRef }, { token: BIZDOC_CONFIG }, { token: i3.AccountService }, { token: i4.SessionService }, { token: i5.TranslateService }, { token: i6.RouterImpl }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
313
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: TimelineViewComponent, selector: "bizdoc-timeline", host: { attributes: { "id": "doc-timeline" }, properties: { "dir": "this.dir" }, classAttribute: "view" }, providers: [SelectionService, DayMarkersService], ngImport: i0, template: '', isInline: true, styles: [":host{padding:8px}:host ::ng-deep .e-split-bar{display:none!important}\n"] }); }
317
314
  };
318
315
  TimelineViewComponent = __decorate([
319
316
  BizDoc({ selector: 'bizdoc-timeline-view' })
320
317
  /** timeline-view component*/
321
318
  ], TimelineViewComponent);
322
319
  export { TimelineViewComponent };
323
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: TimelineViewComponent, decorators: [{
320
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TimelineViewComponent, decorators: [{
324
321
  type: Component,
325
- args: [{ selector: 'bizdoc-timeline', template: '', host: { class: 'view' }, providers: [SelectionService, DayMarkersService], styles: [":host{padding:8px}:host ::ng-deep .e-split-bar{display:none!important}\n"] }]
322
+ args: [{ selector: 'bizdoc-timeline', template: '', host: {
323
+ class: 'view',
324
+ id: 'doc-timeline'
325
+ }, providers: [SelectionService, DayMarkersService], styles: [":host{padding:8px}:host ::ng-deep .e-split-bar{display:none!important}\n"] }]
326
326
  }], ctorParameters: () => [{ type: i1.PromptService }, { type: i2.DocumentViewRef }, { type: undefined, decorators: [{
327
327
  type: Inject,
328
328
  args: [BIZDOC_CONFIG]
329
329
  }] }, { type: i3.AccountService }, { type: i4.SessionService }, { type: i5.TranslateService }, { type: i6.RouterImpl }, { type: i0.ElementRef }], propDecorators: { dir: [{
330
330
  type: HostBinding
331
331
  }] } });
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmV4cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvdmlld3MvdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50LmV4cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFjLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFlLGlCQUFpQixFQUF5QyxLQUFLLEVBQWdFLGdCQUFnQixFQUF5RixNQUFNLCtCQUErQixDQUFDO0FBT3BTLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQWF4QyxJQUFNLHFCQUFxQixHQUEzQixNQUFNLHFCQUFxQjtJQVdoQyx5QkFBeUI7SUFDekIsWUFDVSxHQUFrQixFQUMxQixPQUFpQyxFQUNWLE1BQW9CLEVBQ25DLE1BQXNCLEVBQ3RCLFFBQXdCLEVBQ3hCLFVBQTRCLEVBQzVCLE9BQW1CLEVBQ25CLFFBQW9CO1FBUHBCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFHbEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBbEJyQixRQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDOUIsV0FBTSxH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QWpSVSxxQkFBcUIsOEVBZXRCLGFBQWE7a0dBZloscUJBQXFCLCtHQUpyQixDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLDBCQUh0QyxFQUFFOztBQU9ELHFCQUFxQjtJQUZqQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztJQUM3Qyw2QkFBNkI7R0FDaEIscUJBQXFCLENBb1RqQzs7MkZBcFRZLHFCQUFxQjtrQkFUakMsU0FBUzsrQkFDRSxpQkFBaUIsWUFDakIsRUFBRSxRQUVOLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxhQUNaLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUM7OzBCQW1CN0MsTUFBTTsyQkFBQyxhQUFhO29MQWJkLEdBQUc7c0JBRFgsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBIb3N0QmluZGluZywgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyB0YXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZm9ya0pvaW4sIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29sdW1uTW9kZWwsIERheU1hcmtlcnNTZXJ2aWNlLCBEYXlXb3JraW5nVGltZU1vZGVsLCBFdmVudE1hcmtlck1vZGVsLCBHYW50dCwgSG9saWRheU1vZGVsLCBJUXVlcnlUYXNrYmFySW5mb0V2ZW50QXJncywgTGFiZWxTZXR0aW5nc01vZGVsLCBTZWxlY3Rpb25TZXJ2aWNlLCBTZWxlY3Rpb25TZXR0aW5nc01vZGVsLCBTcGxpdHRlclNldHRpbmdzTW9kZWwsIFRhc2tGaWVsZHNNb2RlbCwgVGltZWxpbmVTZXR0aW5nc01vZGVsIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZ2FudHQnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFZpZXdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UnO1xyXG5pbXBvcnQgeyBDaGFpbiwgRG9jdW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgQml6RG9jQ29uZmlnLCBCSVpET0NfQ09ORklHIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgUm91dGVySW1wbCB9IGZyb20gJy4uLy4uL2NvcmUvcm91dGVyJztcclxuaW1wb3J0IHsgRG9jdW1lbnRWaWV3UmVmIH0gZnJvbSAnLi4vZG9jdW1lbnQtdmlldy1yZWYnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtdGltZWxpbmUnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBzdHlsZVVybHM6IFsndGltZWxpbmUuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7IGNsYXNzOiAndmlldycgfSxcclxuICBwcm92aWRlcnM6IFtTZWxlY3Rpb25TZXJ2aWNlLCBEYXlNYXJrZXJzU2VydmljZV1cclxufSlcclxuQEJpekRvYyh7IHNlbGVjdG9yOiAnYml6ZG9jLXRpbWVsaW5lLXZpZXcnIH0pXHJcbi8qKiB0aW1lbGluZS12aWV3IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBUaW1lbGluZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBEb2N1bWVudFZpZXdDb21wb25lbnQge1xyXG4gIEBIb3N0QmluZGluZygpXHJcbiAgcmVhZG9ubHkgZGlyID0gdGhpcy5fc2Vzc2lvbi5kaXJlY3Rpb247XHJcbiAgcmVhZG9ubHkgbG9jYWxlID0gdGhpcy5fc2Vzc2lvbi5sYW5ndWFnZTtcclxuICBtb2RlbDogRG9jdW1lbnRNb2RlbDxhbnk+O1xyXG4gIGdhbnR0OiBHYW50dDtcclxuICBkYXRlRm9ybWF0OiBzdHJpbmc7XHJcbiAgaG9saWRheXM6IEhvbGlkYXlNb2RlbFtdO1xyXG4gIHdpZHRoOiBudW1iZXIgPSAwO1xyXG4gIHJlYWRvbmx5IHNlbGVjdGlvblNldHRpbmdzID0ge30gYXMgU2VsZWN0aW9uU2V0dGluZ3NNb2RlbDtcclxuICB0YXNrczogVGFza1tdO1xyXG4gIC8qKiB0aW1lbGluZS12aWV3IGN0b3IgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3BzOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgdmlld1JlZjogRG9jdW1lbnRWaWV3UmVmPE9wdGlvbnM+LFxyXG4gICAgQEluamVjdChCSVpET0NfQ09ORklHKSBjb25maWc6IEJpekRvY0NvbmZpZyxcclxuICAgIHByaXZhdGUgX3VzZXJzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXJJbXBsLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gW1xyXG4gICAgICB7IGZpZWxkOiAndGl0bGUnLCBoZWFkZXJUZXh0OiBfdHJhbnNsYXRlLmdldCgnVGFzaycpIH0sXHJcbiAgICAgIHsgZmllbGQ6ICduYW1lJywgaGVhZGVyVGV4dDogX3RyYW5zbGF0ZS5nZXQoJ1dobycpIH0sXHJcbiAgICAgIHsgZmllbGQ6ICd0aW1lJywgaGVhZGVyVGV4dDogX3RyYW5zbGF0ZS5nZXQoJ1doZW4nKSB9XHJcbiAgICBdO1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0ID0gY29uZmlnICYmIGNvbmZpZy5mb3JtYXRzICYmIGNvbmZpZy5mb3JtYXRzLmRhdGVUaW1lIHx8ICdNTU1NIGQsIHl5eXkgaGg6bW0nO1xyXG4gICAgdGhpcy5ob2xpZGF5cyA9IF9zZXNzaW9uLnByb2ZpbGUuaG9saWRheXMgJiZcclxuICAgICAgX3Nlc3Npb24ucHJvZmlsZS5ob2xpZGF5cy5tYXAoaCA9PiAoeyBmcm9tOiBoLnN0YXJ0RGF0ZSwgdG86IGguZnJvbURhdGUsIGxhYmVsOiBoLnRpdGxlIH0pKVxyXG4gICAgdmlld1JlZi5yZXNpemUuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICB0aGlzLndpZHRoID0gZC53aWR0aCAtIDE2O1xyXG4gICAgICBpZiAodGhpcy5nYW50dCkge1xyXG4gICAgICAgIHRoaXMuZ2FudHQud2lkdGggPSBkLndpZHRoIC0gMTY7XHJcbiAgICAgICAgdGhpcy5nYW50dC53aW5kb3dSZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG9uQmluZChtb2RlbDogRG9jdW1lbnRNb2RlbDxhbnk+KSB7XHJcbiAgICB0aGlzLm1vZGVsID0gbW9kZWw7XHJcbiAgICB0aGlzLl9wcmVwYXJlKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICAvL3RoaXMuZ2FudHQuc2Nyb2xsVG9EYXRlKG5ldyBEYXRlKCkudG9TdHJpbmcoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIHRoaXMuZ2FudHQgJiYgdGhpcy5nYW50dC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmdhbnR0ID0gbmV3IEdhbnR0KHtcclxuICAgICAgZGF0YVNvdXJjZTogdGhpcy50YXNrcyxcclxuICAgICAgcXVlcnlUYXNrYmFySW5mbzogdGhpcy5xdWVyeVRhc2tiYXJJbmZvLmJpbmQodGhpcyksXHJcbiAgICAgIHRhc2tGaWVsZHM6IHRoaXMudGFza0ZpZWxkcyxcclxuICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAvL3ZpZXdUeXBlOiAnUHJvamVjdFZpZXcnLFxyXG4gICAgICAvL2FsbG93RXhjZWxFeHBvcnQ6IHRydWUsXHJcbiAgICAgIGVuYWJsZVJ0bDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgICAvLyAgdGltZWxpbmVTZXR0aW5nczogdGhpcy50aW1lbGluZVNldHRpbmdzLFxyXG4gICAgICBsYWJlbFNldHRpbmdzOiB0aGlzLmxhYmVsU2V0dGluZ3MsXHJcbiAgICAgIGV2ZW50TWFya2VyczogdGhpcy5ldmVudE1hcmtlcnMsXHJcbiAgICAgIHJlYWRPbmx5OiB0cnVlLFxyXG4gICAgICBzZWxlY3Rpb25TZXR0aW5nczogdGhpcy5zZWxlY3Rpb25TZXR0aW5ncyxcclxuICAgICAgYWxsb3dTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgIGRhdGVGb3JtYXQ6IHRoaXMuZGF0ZUZvcm1hdCxcclxuICAgICAgdG9vbHRpcFNldHRpbmdzOiB0aGlzLnRvb2x0aXBTZXR0aW5ncyxcclxuICAgICAgLy90aW1lbGluZVNldHRpbmdzOiB7fSxcclxuICAgICAgcm93U2VsZWN0aW5nOiB0aGlzLnJvd1NlbGVjdGluZy5iaW5kKHRoaXMpLFxyXG4gICAgICBob2xpZGF5czogdGhpcy5ob2xpZGF5cyxcclxuICAgICAgLy8gIGluY2x1ZGVXZWVrZW5kOiB0cnVlLFxyXG4gICAgICBzcGxpdHRlclNldHRpbmdzOiB0aGlzLnNwbGl0dGVyU2V0dGluZ3MsXHJcbiAgICAgIC8vICBkdXJhdGlvblVuaXQ6ICdIb3VyJyxcclxuICAgICAgdGFza2JhckhlaWdodDogMzAsXHJcbiAgICAgIHJvd0hlaWdodDogNDAsXHJcbiAgICAgIHdpZHRoOiAnMTAwJScsIC8vdGhpcy53aWR0aFxyXG4gICAgICAvLyAgZGF5V29ya2luZ1RpbWU6IHRoaXMuZGF5V29ya2luZ1RpbWVcclxuICAgIH0sIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudClcclxuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGMgPT5cclxuICAgICAgdGhpcy5nYW50dC5oaWRlQ29sdW1uKGMuZmllbGQpXHJcbiAgICApXHJcbiAgfVxyXG4gIHF1ZXJ5VGFza2JhckluZm8oZXZ0OiBJUXVlcnlUYXNrYmFySW5mb0V2ZW50QXJncykge1xyXG4gICAgZXZ0LnRhc2tiYXJCZ0NvbG9yID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcHJlcGFyZSgpOiBPYnNlcnZhYmxlPFRhc2tbXT4ge1xyXG4gICAgY29uc3QgcHJvbWlzc2VzOiBPYnNlcnZhYmxlPGFueT5bXSA9IFtdO1xyXG4gICAgbGV0IGkgPSAwO1xyXG5cclxuICAgIC8vY29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMuX21haWxib3gudGltZWxpbmUobW9kZWwuZG9jdW1lbnRJZCkucGlwZSh0YXAodCA9PiB7XHJcbiAgICAvL30pKVxyXG5cclxuICAgIHRoaXMubW9kZWwubG9nLmZvckVhY2gobCA9PiB7XHJcbiAgICAgIGxldCB0YXNrOiBUYXNrO1xyXG4gICAgICBzd2l0Y2ggKGwudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ1N1Ym1pdCc6XHJcbiAgICAgICAgICB0aGlzLmV2ZW50TWFya2Vycy5wdXNoKHtcclxuICAgICAgICAgICAgZGF5OiBuZXcgRGF0ZShsLnRpbWUpLFxyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlLmdldCgnU3VibWl0aW9uJylcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGNhc2UgJ1N0YXRlQ2hhbmdlJzpcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuc3RhdGVzLmZpbmQocyA9PiBzLm5hbWUgPT09IGwuc3RhdGUpO1xyXG4gICAgICAgICAgICB0YXNrID0ge1xyXG4gICAgICAgICAgICAgIGlkOiBpKyssXHJcbiAgICAgICAgICAgICAgdHlwZTogbC50eXBlLFxyXG4gICAgICAgICAgICAgIG5vZGVJZDogbC5ub2RlSWQsXHJcbiAgICAgICAgICAgICAgdGltZTogbmV3IERhdGUobC50aW1lKSxcclxuICAgICAgICAgICAgICB0aXRsZTogc3RhdGUgPyBzdGF0ZS5wYXN0IHx8IHN0YXRlLnRpdGxlIDogbC5zdGF0ZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAobC5kdXJhdGlvbikge1xyXG4gICAgICAgICAgICAgIHRhc2suZW5kaW5nID0gbmV3IERhdGUodGFzay50aW1lLnZhbHVlT2YoKSArIGwuZHVyYXRpb24gKiAxMDAwKTtcclxuICAgICAgICAgICAgICB0YXNrLmR1cmF0aW9uID0gbC5kdXJhdGlvbiAqIDEwMDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRhc2suZW5kaW5nID0gdGhpcy5tb2RlbC5jb21wbGV0ZWQgPyBuZXcgRGF0ZShsLnRpbWUpIDogbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy50YXNrcy5wdXNoKHRhc2spO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICBjYXNlICdNb2RlbENoYW5nZSc6XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRhc2sgPSB7XHJcbiAgICAgICAgICAgICAgaWQ6IGkrKyxcclxuICAgICAgICAgICAgICB0eXBlOiBsLnR5cGUsXHJcbiAgICAgICAgICAgICAgbm9kZUlkOiBsLm5vZGVJZCxcclxuICAgICAgICAgICAgICB0aW1lOiBuZXcgRGF0ZShsLnRpbWUpLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdFZGl0ZWQnKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAobC5kdXJhdGlvbikge1xyXG4gICAgICAgICAgICAgIHRhc2suZW5kaW5nID0gbmV3IERhdGUodGFzay50aW1lLnZhbHVlT2YoKSArIGwuZHVyYXRpb24gKiAxMDAwKTtcclxuICAgICAgICAgICAgICB0YXNrLmR1cmF0aW9uID0gbC5kdXJhdGlvbiAqIDEwMDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB0YXNrLmVuZGluZyA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMudGFza3MuZmluZCh0ID0+IHQudHlwZSA9PT0gJ1N0YXRlQ2hhbmdlJyAmJiB0LnRpbWUgPD0gdGFzay50aW1lICYmICghdC5lbmRpbmcgfHwgdC5lbmRpbmcgPj0gdGFzay5lbmRpbmcpKTtcclxuICAgICAgICAgICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFzdGF0ZS5zdWJ0YXNrcykgc3RhdGUuc3VidGFza3MgPSBbXTtcclxuICAgICAgICAgICAgICBzdGF0ZS5zdWJ0YXNrcy5wdXNoKHRhc2spO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0aGlzLnRhc2tzLnB1c2godGFzayk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0FjdGlvblRha2VuJzpcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gbC5hY3Rpb24pO1xyXG4gICAgICAgICAgICBpZiAobC5hY3Rpb24gPT09ICdkZWxldGUnKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWUgPSBkYXlqcyhsLnRpbWUpO1xyXG4gICAgICAgICAgICB0YXNrID0ge1xyXG4gICAgICAgICAgICAgIGlkOiBpKyssXHJcbiAgICAgICAgICAgICAgdHlwZTogbC50eXBlLFxyXG4gICAgICAgICAgICAgIG5vZGVJZDogbC5ub2RlSWQsXHJcbiAgICAgICAgICAgICAgZW5kaW5nOiB0aW1lLnRvRGF0ZSgpLFxyXG4gICAgICAgICAgICAgIHRpbWU6IHRpbWUuYWRkKC0gbC5kdXJhdGlvbiwgJ3MnKS50b0RhdGUoKSxcclxuICAgICAgICAgICAgICBkdXJhdGlvbjogbC5kdXJhdGlvbiAqIDEwMDAsXHJcbiAgICAgICAgICAgICAgdGl0bGU6IGFjdGlvbiA/IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZSA6IGwuYWN0aW9uXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChsLm5vZGVJZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZWwud29ya2Zsb3cuY29ubmVjdG9ycy5maWx0ZXIoYyA9PiBjLnRhcmdldElkID09PSBsLm5vZGVJZCkuZm9yRWFjaChjID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMudGFza3MuZmlsdGVyKGwgPT4gbC5ub2RlSWQgPT09IGMuc291cmNlSWQpLm1hcChsID0+IGBGUyR7bC5pZH1gKTtcclxuICAgICAgICAgICAgICAgIGlmIChkZXBlbmRlbmNpZXMubGVuZ3RoKSB0YXNrLmRlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2llcy5qb2luKCcsJyk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnRhc2tzLmZpbmQodCA9PiB0LnR5cGUgPT09ICdTdGF0ZUNoYW5nZScgJiYgdC50aW1lIDw9IHRhc2sudGltZSAmJiAoIXQuZW5kaW5nIHx8IHQuZW5kaW5nID49IHRhc2suZW5kaW5nKSk7XHJcbiAgICAgICAgICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAgIGlmICghc3RhdGUuc3VidGFza3MpIHN0YXRlLnN1YnRhc2tzID0gW107XHJcbiAgICAgICAgICAgICAgc3RhdGUuc3VidGFza3MucHVzaCh0YXNrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy50YXNrcy5wdXNoKHRhc2spO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChsLmJ5SWQpIHtcclxuICAgICAgICBjb25zdCB3aG8gPSB0aGlzLl91c2Vycy5nZXQobC51c2VySWQpLFxyXG4gICAgICAgICAgYnkgPSB0aGlzLl91c2Vycy5nZXQobC5ieUlkKTtcclxuICAgICAgICBjb25zdCBwcm9taXNlID0gZm9ya0pvaW4oW3dobywgYnldKS5waXBlKHRhcChucyA9PiB7XHJcbiAgICAgICAgICBjb25zdCBbd2hvLCBieV0gPSBucztcclxuICAgICAgICAgIHRhc2submFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0J5Jywgd2hvLm5hbWUsIGJ5Lm5hbWUpO1xyXG4gICAgICAgICAgLy8gICAgaWYgKGwucm9sZSkge1xyXG4gICAgICAgICAgLy8gICAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLnNlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKG8gPT4gby5uYW1lID09PSBsLnJvbGUpO1xyXG4gICAgICAgICAgLy8gICAgICAgIGlmIChyb2xlKSB0YXNrLm5hbWUgKz0gYCwgJHtyb2xlLm5hbWV9YDtcclxuICAgICAgICAgIC8vICAgIH1cclxuICAgICAgICB9KSwgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9wcy5lcnJvcigpO1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICBwcm9taXNzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChsLnVzZXJJZCkge1xyXG4gICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl91c2Vycy5nZXQobC51c2VySWQpLnBpcGUodGFwKHUgPT4ge1xyXG4gICAgICAgICAgdGFzay5uYW1lID0gdS5uYW1lO1xyXG4gICAgICAgICAgLy8gICAgaWYgKGwucm9sZSkge1xyXG4gICAgICAgICAgLy8gICAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLnNlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKG8gPT4gby5uYW1lID09PSBsLnJvbGUpO1xyXG4gICAgICAgICAgLy8gICAgICAgIGlmIChyb2xlKSB0YXNrLm5hbWUgKz0gYCwgJHtyb2xlLm5hbWV9YDtcclxuICAgICAgICAgIC8vICAgIH1cclxuICAgICAgICB9KSwgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9wcy5lcnJvcigpO1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHByb21pc3Nlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMubW9kZWwuZXZlbnRzLmZvckVhY2goZSA9PiB7XHJcbiAgICAgIHRoaXMuZXZlbnRNYXJrZXJzLnB1c2goe1xyXG4gICAgICAgIGRheTogbmV3IERhdGUoZS5zdGFydGluZyksXHJcbiAgICAgICAgbGFiZWw6IGUudGl0bGVcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubW9kZWwucmVjaXBpZW50cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBpZiAoIXIucGVuZGluZylcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNvbnN0IHRhc2s6IFRhc2sgPSB7XHJcbiAgICAgICAgaWQ6IGkrKyxcclxuICAgICAgICB0eXBlOiAncGVuZGluZycsXHJcbiAgICAgICAgdGltZTogbmV3IERhdGUoci5yZWNlaXZlZCksXHJcbiAgICAgICAgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0lzUGVuZGluZycpXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChyLnN1YnN0aXR1dGVJZCkge1xyXG4gICAgICAgIGNvbnN0IGJ5ID0gdGhpcy5fdXNlcnMuZ2V0KHIuc3Vic3RpdHV0ZUlkKTtcclxuICAgICAgICBjb25zdCB3aG8gPSB0aGlzLl91c2Vycy5nZXQoci51c2VySWQpO1xyXG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBmb3JrSm9pbihbd2hvLCBieV0pLnBpcGUodGFwKHUgPT4ge1xyXG4gICAgICAgICAgdGFzay5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnV2hvU3Vic3RpdHV0aW5nJywgdVswXS5uYW1lLCB1WzFdLm5hbWUpO1xyXG4gICAgICAgICAgaWYgKHVbMF0ucm9sZSlcclxuICAgICAgICAgICAgdGFzay5uYW1lICs9IGAsICR7dVswXS5yb2xlfWA7XHJcbiAgICAgICAgICBpZiAoci5yb2xlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUucm9sZXMuZmluZChvID0+IG8ubmFtZSA9PT0gci5yb2xlKTtcclxuICAgICAgICAgICAgaWYgKHJvbGUpIHRhc2submFtZSArPSBgLCAke3JvbGUubmFtZX1gO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLCBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3BzLmVycm9yKCk7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIHByb21pc3Nlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl91c2Vycy5nZXQoci51c2VySWQpLnBpcGUodGFwKHUgPT4ge1xyXG4gICAgICAgICAgdGFzay5uYW1lID0gdS5uYW1lO1xyXG4gICAgICAgICAgaWYgKHUucm9sZSlcclxuICAgICAgICAgICAgdGFzay5uYW1lICs9IGAsICR7dS5yb2xlfWA7XHJcbiAgICAgICAgICBlbHNlIGlmIChyLnJvbGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgcm9sZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKG8gPT4gby5uYW1lID09PSByLnJvbGUpO1xyXG4gICAgICAgICAgICBpZiAocm9sZSkgdGFzay5uYW1lICs9IGAsICR7cm9sZS5uYW1lfWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fcHMuZXJyb3IoKTtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgICBwcm9taXNzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoci5ub2RlSWQpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLndvcmtmbG93LmNvbm5lY3RvcnMuZmlsdGVyKGMgPT4gYy50YXJnZXRJZCA9PT0gci5ub2RlSWQpLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICBjb25zdCBwcmVkZWNlc3NvcnMgPSB0aGlzLnRhc2tzLmZpbHRlcihsID0+IGwubm9kZUlkID09PSBjLnNvdXJjZUlkKS5tYXAobCA9PiBsLmlkKTtcclxuICAgICAgICAgIGlmIChwcmVkZWNlc3NvcnMubGVuZ3RoKSB0YXNrLmRlcGVuZGVuY2llcyA9IHByZWRlY2Vzc29ycy5qb2luKCcsJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnRhc2tzLmZpbmQodCA9PiB0LnR5cGUgPT09ICdTdGF0ZUNoYW5nZScgJiYgdC50aW1lIDw9IHRhc2sudGltZSAmJiAoIXQuZW5kaW5nIHx8IHQuZW5kaW5nID49IHRhc2sudGltZSkpO1xyXG4gICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICBpZiAoIXN0YXRlLnN1YnRhc2tzKSBzdGF0ZS5zdWJ0YXNrcyA9IFtdO1xyXG4gICAgICAgIHN0YXRlLnN1YnRhc2tzLnB1c2godGFzayk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMudGFza3MucHVzaCh0YXNrKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZvcmtKb2luKHByb21pc3NlcykuXHJcbiAgICAgIHBpcGUodGFwKCgpID0+IHRoaXMudGFza3MgPSB0aGlzLnRhc2tzLnNvcnQoKHQwLCB0MSkgPT4gdDAudGltZSA+IHQxLnRpbWUgPyAxIDogLTEpKSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGluZyhyKSB7XHJcbiAgICBpZiAoci5kYXRhLnRhc2tEYXRhLnR5cGUgPT09ICdNb2RlbENoYW5nZScpXHJcbiAgICAgIHRoaXMuX2NvbXBhcmUoci5kYXRhKTtcclxuICB9XHJcbiAgcHVibGljIF9jb21wYXJlKHRhc2s6IFRhc2spIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ21haWxib3gvZCcsIHRoaXMubW9kZWwuZG9jdW1lbnRJZC5lbmNvZGVJZCgpLCAndmVyc2lvbicsIHRhc2sudGltZS52YWx1ZU9mKCkuZW5jb2RlSWQoKV0sIHsgc3RhdGU6IHsgaXRlbTogdGhpcy5tb2RlbCB9IH0pXHJcbiAgfVxyXG4gIHJlYWRvbmx5IHRhc2tGaWVsZHM6IFRhc2tGaWVsZHNNb2RlbCA9IHtcclxuICAgIGlkOiAnaWQnLFxyXG4gICAgbmFtZTogJ3RpdGxlJyxcclxuICAgIHN0YXJ0RGF0ZTogJ3RpbWUnLFxyXG4gICAgZW5kRGF0ZTogJ2VuZGluZycsXHJcbiAgICBkdXJhdGlvbjogJ2R1cmF0aW9uJyxcclxuICAgIGRlcGVuZGVuY3k6ICdkZXBlbmRlbmNpZXMnLFxyXG4gICAgY2hpbGQ6ICdzdWJ0YXNrcydcclxuICB9O1xyXG4gIGNvbHVtbnM6IENvbHVtbk1vZGVsW107XHJcbiAgcmVhZG9ubHkgdG9vbHRpcFNldHRpbmdzID0geyBzaG93VG9vbHRpcDogZmFsc2UgfTtcclxuICByZWFkb25seSB0aW1lbGluZVNldHRpbmdzOiBUaW1lbGluZVNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICB0aW1lbGluZVVuaXRTaXplOiA2MCxcclxuICAgIHRvcFRpZXI6IHtcclxuICAgICAgZm9ybWF0OiAnTU1NIGRkLCB5eXl5JyxcclxuICAgICAgdW5pdDogJ0RheScsXHJcbiAgICB9LFxyXG4gICAgYm90dG9tVGllcjoge1xyXG4gICAgICB1bml0OiAnSG91cicsXHJcbiAgICAgIGZvcm1hdDogJ2gubW0gYSdcclxuICAgIH1cclxuICB9O1xyXG4gIHJlYWRvbmx5IGV2ZW50TWFya2VyczogRXZlbnRNYXJrZXJNb2RlbFtdID0gW1xyXG4gIF07XHJcbiAgcHVibGljIGxhYmVsU2V0dGluZ3M6IExhYmVsU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIHJpZ2h0TGFiZWw6ICduYW1lJywgbGVmdExhYmVsOiAndGl0bGUnXHJcbiAgfTtcclxuICBwdWJsaWMgc3BsaXR0ZXJTZXR0aW5nczogU3BsaXR0ZXJTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgY29sdW1uSW5kZXg6IDMsXHJcbiAgICB2aWV3OiAnQ2hhcnQnLFxyXG4gICAgcG9zaXRpb246ICcwJyxcclxuICAgIHNlcGFyYXRvclNpemU6IDBcclxuICB9O1xyXG4gIHB1YmxpYyBkYXlXb3JraW5nVGltZTogRGF5V29ya2luZ1RpbWVNb2RlbFtdID0gW3sgZnJvbTogMCwgdG86IDI0IH1dO1xyXG59XHJcbmludGVyZmFjZSBUYXNrIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBub2RlSWQ/OiBzdHJpbmc7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICB0aW1lOiBEYXRlO1xyXG4gIGVuZGluZz86IERhdGU7XHJcbiAgZHVyYXRpb24/OiBudW1iZXI7XHJcbiAgc3VidGFza3M/OiBUYXNrW107XHJcbiAgZGVwZW5kZW5jaWVzPzogc3RyaW5nO1xyXG4gIGluZGljYXRvcnM/OiBhbnlbXSxcclxufVxyXG5pbnRlcmZhY2UgT3B0aW9ucyB7XHJcblxyXG59XHJcbiJdfQ==
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmV4cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvdmlld3MvdGltZWxpbmUvdGltZWxpbmUuY29tcG9uZW50LmV4cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFjLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQWUsaUJBQWlCLEVBQXlDLEtBQUssRUFBZ0UsZ0JBQWdCLEVBQXlGLE1BQU0sK0JBQStCLENBQUM7QUFPcFMsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7O0FBZ0J4QyxJQUFNLHFCQUFxQixHQUEzQixNQUFNLHFCQUFxQjtJQVVoQyx5QkFBeUI7SUFDekIsWUFDVSxHQUFrQixFQUMxQixPQUFpQyxFQUNWLE1BQW9CLEVBQ25DLE1BQXNCLEVBQ3RCLFFBQXdCLEVBQ3hCLFVBQTRCLEVBQzVCLE9BQW1CLEVBQ25CLFFBQW9CO1FBUHBCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFHbEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBakJyQixRQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDOUIsV0FBTSxHQUFHLElBQUks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QUc7UUFDZCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxhQUFhO1lBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRDs7O09BR0c7SUFDSSxRQUFRLENBQUMsSUFBVTtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDcEosQ0FBQzs4R0E3UVUscUJBQXFCLDhFQWN0QixhQUFhO2tHQWRaLHFCQUFxQixxSkFKckIsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQywwQkFOdEMsRUFBRTs7QUFVRCxxQkFBcUI7SUFGakMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDN0MsNkJBQTZCO0dBQ2hCLHFCQUFxQixDQWlUakM7OzJGQWpUWSxxQkFBcUI7a0JBWmpDLFNBQVM7K0JBQ0UsaUJBQWlCLFlBQ2pCLEVBQUUsUUFFTjt3QkFDSixLQUFLLEVBQUUsTUFBTTt3QkFDYixFQUFFLEVBQUUsY0FBYztxQkFDbkIsYUFDVSxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDOzswQkFrQjdDLE1BQU07MkJBQUMsYUFBYTtvTEFaZCxHQUFHO3NCQURYLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSG9zdEJpbmRpbmcsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgdGFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbHVtbk1vZGVsLCBEYXlNYXJrZXJzU2VydmljZSwgRGF5V29ya2luZ1RpbWVNb2RlbCwgRXZlbnRNYXJrZXJNb2RlbCwgR2FudHQsIEhvbGlkYXlNb2RlbCwgSVF1ZXJ5VGFza2JhckluZm9FdmVudEFyZ3MsIExhYmVsU2V0dGluZ3NNb2RlbCwgU2VsZWN0aW9uU2VydmljZSwgU2VsZWN0aW9uU2V0dGluZ3NNb2RlbCwgU3BsaXR0ZXJTZXR0aW5nc01vZGVsLCBUYXNrRmllbGRzTW9kZWwsIFRpbWVsaW5lU2V0dGluZ3NNb2RlbCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWdhbnR0JztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG9jdW1lbnRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlJztcclxuaW1wb3J0IHsgQ2hhaW4sIERvY3VtZW50TW9kZWwgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IEJpekRvY0NvbmZpZywgQklaRE9DX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IFJvdXRlckltcGwgfSBmcm9tICcuLi8uLi9jb3JlL3JvdXRlcic7XHJcbmltcG9ydCB7IERvY3VtZW50Vmlld1JlZiB9IGZyb20gJy4uL2RvY3VtZW50LXZpZXctcmVmJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLXRpbWVsaW5lJyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgc3R5bGVVcmxzOiBbJ3RpbWVsaW5lLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICd2aWV3JyxcclxuICAgIGlkOiAnZG9jLXRpbWVsaW5lJ1xyXG4gIH0sXHJcbiAgcHJvdmlkZXJzOiBbU2VsZWN0aW9uU2VydmljZSwgRGF5TWFya2Vyc1NlcnZpY2VdXHJcbn0pXHJcbkBCaXpEb2MoeyBzZWxlY3RvcjogJ2JpemRvYy10aW1lbGluZS12aWV3JyB9KVxyXG4vKiogdGltZWxpbmUtdmlldyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgVGltZWxpbmVWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgRG9jdW1lbnRWaWV3Q29tcG9uZW50IHtcclxuICBASG9zdEJpbmRpbmcoKVxyXG4gIHJlYWRvbmx5IGRpciA9IHRoaXMuX3Nlc3Npb24uZGlyZWN0aW9uO1xyXG4gIHJlYWRvbmx5IGxvY2FsZSA9IHRoaXMuX3Nlc3Npb24ubGFuZ3VhZ2U7XHJcbiAgbW9kZWw6IERvY3VtZW50TW9kZWw8YW55PjtcclxuICBnYW50dDogR2FudHQ7XHJcbiAgZGF0ZUZvcm1hdDogc3RyaW5nO1xyXG4gIGhvbGlkYXlzOiBIb2xpZGF5TW9kZWxbXTtcclxuICB3aWR0aDogbnVtYmVyID0gMDtcclxuICB0YXNrczogVGFza1tdO1xyXG4gIC8qKiB0aW1lbGluZS12aWV3IGN0b3IgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3BzOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgdmlld1JlZjogRG9jdW1lbnRWaWV3UmVmPE9wdGlvbnM+LFxyXG4gICAgQEluamVjdChCSVpET0NfQ09ORklHKSBjb25maWc6IEJpekRvY0NvbmZpZyxcclxuICAgIHByaXZhdGUgX3VzZXJzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXJJbXBsLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gW1xyXG4gICAgICB7IGZpZWxkOiAndGl0bGUnLCBoZWFkZXJUZXh0OiBfdHJhbnNsYXRlLmdldCgnVGFzaycpIH0sXHJcbiAgICAgIHsgZmllbGQ6ICduYW1lJywgaGVhZGVyVGV4dDogX3RyYW5zbGF0ZS5nZXQoJ1dobycpIH0sXHJcbiAgICAgIHsgZmllbGQ6ICd0aW1lJywgaGVhZGVyVGV4dDogX3RyYW5zbGF0ZS5nZXQoJ1doZW4nKSB9XHJcbiAgICBdO1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0ID0gY29uZmlnICYmIGNvbmZpZy5mb3JtYXRzICYmIGNvbmZpZy5mb3JtYXRzLmRhdGVUaW1lIHx8ICdNTU1NIGQsIHl5eXkgaGg6bW0nO1xyXG4gICAgdGhpcy5ob2xpZGF5cyA9IF9zZXNzaW9uLnByb2ZpbGUuaG9saWRheXMgJiZcclxuICAgICAgX3Nlc3Npb24ucHJvZmlsZS5ob2xpZGF5cy5tYXAoaCA9PiAoeyBmcm9tOiBoLnN0YXJ0RGF0ZSwgdG86IGguZnJvbURhdGUsIGxhYmVsOiBoLnRpdGxlIH0pKVxyXG4gICAgdmlld1JlZi5yZXNpemUuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICB0aGlzLndpZHRoID0gZC53aWR0aCAtIDE2O1xyXG4gICAgICBpZiAodGhpcy5nYW50dCkge1xyXG4gICAgICAgIHRoaXMuZ2FudHQud2lkdGggPSBkLndpZHRoIC0gMTY7XHJcbiAgICAgICAgdGhpcy5nYW50dC53aW5kb3dSZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG9uQmluZChtb2RlbDogRG9jdW1lbnRNb2RlbDxhbnk+KSB7XHJcbiAgICB0aGlzLm1vZGVsID0gbW9kZWw7XHJcbiAgICB0aGlzLl9wcmVwYXJlKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICAvL3RoaXMuZ2FudHQuc2Nyb2xsVG9EYXRlKG5ldyBEYXRlKCkudG9TdHJpbmcoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIHRoaXMuZ2FudHQgJiYgdGhpcy5nYW50dC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmdhbnR0ID0gbmV3IEdhbnR0KHtcclxuICAgICAgZGF0YVNvdXJjZTogdGhpcy50YXNrcyxcclxuICAgICAgcXVlcnlUYXNrYmFySW5mbzogdGhpcy5xdWVyeVRhc2tiYXJJbmZvLmJpbmQodGhpcyksXHJcbiAgICAgIHRhc2tGaWVsZHM6IHRoaXMudGFza0ZpZWxkcyxcclxuICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAvL3ZpZXdUeXBlOiAnUHJvamVjdFZpZXcnLFxyXG4gICAgICAvL2FsbG93RXhjZWxFeHBvcnQ6IHRydWUsXHJcbiAgICAgIGVuYWJsZVJ0bDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgICAvLyAgdGltZWxpbmVTZXR0aW5nczogdGhpcy50aW1lbGluZVNldHRpbmdzLFxyXG4gICAgICBsYWJlbFNldHRpbmdzOiB0aGlzLmxhYmVsU2V0dGluZ3MsXHJcbiAgICAgIGV2ZW50TWFya2VyczogdGhpcy5ldmVudE1hcmtlcnMsXHJcbiAgICAgIHJlYWRPbmx5OiB0cnVlLFxyXG4gICAgICBzZWxlY3Rpb25TZXR0aW5nczogdGhpcy5zZWxlY3Rpb25TZXR0aW5ncyxcclxuICAgICAgYWxsb3dTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgIGRhdGVGb3JtYXQ6IHRoaXMuZGF0ZUZvcm1hdCxcclxuICAgICAgdG9vbHRpcFNldHRpbmdzOiB0aGlzLnRvb2x0aXBTZXR0aW5ncyxcclxuICAgICAgLy90aW1lbGluZVNldHRpbmdzOiB7fSxcclxuICAgICAgcm93U2VsZWN0aW5nOiB0aGlzLnJvd1NlbGVjdGluZy5iaW5kKHRoaXMpLFxyXG4gICAgICBob2xpZGF5czogdGhpcy5ob2xpZGF5cyxcclxuICAgICAgLy8gIGluY2x1ZGVXZWVrZW5kOiB0cnVlLFxyXG4gICAgICBzcGxpdHRlclNldHRpbmdzOiB0aGlzLnNwbGl0dGVyU2V0dGluZ3MsXHJcbiAgICAgIC8vICBkdXJhdGlvblVuaXQ6ICdIb3VyJyxcclxuICAgICAgdGFza2JhckhlaWdodDogMzAsXHJcbiAgICAgIHJvd0hlaWdodDogNDAsXHJcbiAgICAgIGhlaWdodDogJzQyMHB4JyxcclxuICAgICAgd2lkdGg6ICcxMDAlJywgLy90aGlzLndpZHRoXHJcbiAgICAgIC8vICBkYXlXb3JraW5nVGltZTogdGhpcy5kYXlXb3JraW5nVGltZVxyXG4gICAgfSwgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50KVxyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PlxyXG4gICAgICB0aGlzLmdhbnR0LmhpZGVDb2x1bW4oYy5maWVsZClcclxuICAgIClcclxuICB9XHJcbiAgcXVlcnlUYXNrYmFySW5mbyhldnQ6IElRdWVyeVRhc2tiYXJJbmZvRXZlbnRBcmdzKSB7XHJcbiAgICBldnQudGFza2JhckJnQ29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9wcmVwYXJlKCk6IE9ic2VydmFibGU8VGFza1tdPiB7XHJcbiAgICBjb25zdCBvYnNlcnZhYmxlczogT2JzZXJ2YWJsZTxhbnk+W10gPSBbXSwgdGFza3MgOiBUYXNrW10gPSBbXTtcclxuICAgIGxldCBpID0gMDtcclxuXHJcbiAgICAvL2NvbnN0IG9ic2VydmFibGUgPSB0aGlzLl9tYWlsYm94LnRpbWVsaW5lKG1vZGVsLmRvY3VtZW50SWQpLnBpcGUodGFwKHQgPT4ge1xyXG4gICAgLy99KSlcclxuXHJcbiAgICB0aGlzLm1vZGVsLmxvZy5mb3JFYWNoKGwgPT4ge1xyXG4gICAgICBsZXQgdGFzazogVGFzaztcclxuICAgICAgc3dpdGNoIChsLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdTdWJtaXQnOlxyXG4gICAgICAgICAgdGhpcy5ldmVudE1hcmtlcnMucHVzaCh7XHJcbiAgICAgICAgICAgIGRheTogbmV3IERhdGUobC50aW1lKSxcclxuICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N1Ym1pdGlvbicpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBjYXNlICdTdGF0ZUNoYW5nZSc6XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnN0YXRlcy5maW5kKHMgPT4gcy5uYW1lID09PSBsLnN0YXRlKTtcclxuICAgICAgICAgICAgdGFzayA9IHtcclxuICAgICAgICAgICAgICBpZDogaSsrLFxyXG4gICAgICAgICAgICAgIHR5cGU6IGwudHlwZSxcclxuICAgICAgICAgICAgICBub2RlSWQ6IGwubm9kZUlkLFxyXG4gICAgICAgICAgICAgIHRpbWU6IG5ldyBEYXRlKGwudGltZSksXHJcbiAgICAgICAgICAgICAgdGl0bGU6IHN0YXRlID8gc3RhdGUucGFzdCB8fCBzdGF0ZS50aXRsZSA6IGwuc3RhdGVcclxuICAgICAgICAgICAgfSBhcyBUYXNrO1xyXG4gICAgICAgICAgICBpZiAobC5kdXJhdGlvbikge1xyXG4gICAgICAgICAgICAgIHRhc2suZW5kaW5nID0gbmV3IERhdGUodGFzay50aW1lLnZhbHVlT2YoKSArIGwuZHVyYXRpb24gKiAxMDAwKTtcclxuICAgICAgICAgICAgICB0YXNrLmR1cmF0aW9uID0gbC5kdXJhdGlvbiAqIDEwMDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRhc2suZW5kaW5nID0gdGhpcy5tb2RlbC5jb21wbGV0ZWQgPyBuZXcgRGF0ZShsLnRpbWUpIDogbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgdGFza3MucHVzaCh0YXNrKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTW9kZWxDaGFuZ2UnOlxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0YXNrID0ge1xyXG4gICAgICAgICAgICAgIGlkOiBpKyssXHJcbiAgICAgICAgICAgICAgdHlwZTogbC50eXBlLFxyXG4gICAgICAgICAgICAgIG5vZGVJZDogbC5ub2RlSWQsXHJcbiAgICAgICAgICAgICAgdGltZTogbmV3IERhdGUobC50aW1lKSxcclxuICAgICAgICAgICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnRWRpdGVkJylcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKGwuZHVyYXRpb24pIHtcclxuICAgICAgICAgICAgICB0YXNrLmVuZGluZyA9IG5ldyBEYXRlKHRhc2sudGltZS52YWx1ZU9mKCkgKyBsLmR1cmF0aW9uICogMTAwMCk7XHJcbiAgICAgICAgICAgICAgdGFzay5kdXJhdGlvbiA9IGwuZHVyYXRpb24gKiAxMDAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgdGFzay5lbmRpbmcgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0YXNrcy5maW5kKHQgPT4gdC50eXBlID09PSAnU3RhdGVDaGFuZ2UnICYmIHQudGltZSA8PSB0YXNrLnRpbWUgJiYgKCF0LmVuZGluZyB8fCB0LmVuZGluZyA+PSB0YXNrLmVuZGluZykpO1xyXG4gICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICBpZiAoIXN0YXRlLnN1YnRhc2tzKSBzdGF0ZS5zdWJ0YXNrcyA9IFtdO1xyXG4gICAgICAgICAgICAgIHN0YXRlLnN1YnRhc2tzLnB1c2godGFzayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRhc2tzLnB1c2godGFzayk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0FjdGlvblRha2VuJzpcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gbC5hY3Rpb24pO1xyXG4gICAgICAgICAgICBpZiAobC5hY3Rpb24gPT09ICdkZWxldGUnKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWUgPSBkYXlqcyhsLnRpbWUpO1xyXG4gICAgICAgICAgICB0YXNrID0ge1xyXG4gICAgICAgICAgICAgIGlkOiBpKyssXHJcbiAgICAgICAgICAgICAgdHlwZTogbC50eXBlLFxyXG4gICAgICAgICAgICAgIG5vZGVJZDogbC5ub2RlSWQsXHJcbiAgICAgICAgICAgICAgZW5kaW5nOiB0aW1lLnRvRGF0ZSgpLFxyXG4gICAgICAgICAgICAgIHRpbWU6IHRpbWUuYWRkKC0gbC5kdXJhdGlvbiwgJ3MnKS50b0RhdGUoKSxcclxuICAgICAgICAgICAgICBkdXJhdGlvbjogbC5kdXJhdGlvbiAqIDEwMDAsXHJcbiAgICAgICAgICAgICAgdGl0bGU6IGFjdGlvbiA/IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZSA6IGwuYWN0aW9uXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChsLm5vZGVJZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZWwud29ya2Zsb3cuY29ubmVjdG9ycy5maWx0ZXIoYyA9PiBjLnRhcmdldElkID09PSBsLm5vZGVJZCkuZm9yRWFjaChjID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRhc2tzLmZpbHRlcihsID0+IGwubm9kZUlkID09PSBjLnNvdXJjZUlkKS5tYXAobCA9PiBgRlMke2wuaWR9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGVwZW5kZW5jaWVzLmxlbmd0aCkgdGFzay5kZXBlbmRlbmNpZXMgPSBkZXBlbmRlbmNpZXMuam9pbignLCcpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGFza3MuZmluZCh0ID0+IHQudHlwZSA9PT0gJ1N0YXRlQ2hhbmdlJyAmJiB0LnRpbWUgPD0gdGFzay50aW1lICYmICghdC5lbmRpbmcgfHwgdC5lbmRpbmcgPj0gdGFzay5lbmRpbmcpKTtcclxuICAgICAgICAgICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFzdGF0ZS5zdWJ0YXNrcykgc3RhdGUuc3VidGFza3MgPSBbXTtcclxuICAgICAgICAgICAgICBzdGF0ZS5zdWJ0YXNrcy5wdXNoKHRhc2spO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0YXNrcy5wdXNoKHRhc2spO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChsLmJ5SWQpIHtcclxuICAgICAgICBjb25zdCB3aG8gPSB0aGlzLl91c2Vycy5nZXQobC51c2VySWQpLFxyXG4gICAgICAgICAgYnkgPSB0aGlzLl91c2Vycy5nZXQobC5ieUlkKTtcclxuICAgICAgICBjb25zdCBvYnNlcnZlID0gZm9ya0pvaW4oW3dobywgYnldKS5waXBlKHRhcChucyA9PiB7XHJcbiAgICAgICAgICBjb25zdCBbd2hvLCBieV0gPSBucztcclxuICAgICAgICAgIHRhc2submFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0J5Jywgd2hvLm5hbWUsIGJ5Lm5hbWUpO1xyXG4gICAgICAgICAgLy8gICAgaWYgKGwucm9sZSkge1xyXG4gICAgICAgICAgLy8gICAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLnNlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKG8gPT4gby5uYW1lID09PSBsLnJvbGUpO1xyXG4gICAgICAgICAgLy8gICAgICAgIGlmIChyb2xlKSB0YXNrLm5hbWUgKz0gYCwgJHtyb2xlLm5hbWV9YDtcclxuICAgICAgICAgIC8vICAgIH1cclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2ZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAobC51c2VySWQpIHtcclxuICAgICAgICBjb25zdCBvYnNlcnZlID0gdGhpcy5fdXNlcnMuZ2V0KGwudXNlcklkKS5waXBlKHRhcCh1ID0+IHtcclxuICAgICAgICAgIHRhc2submFtZSA9IHUubmFtZTtcclxuICAgICAgICAgIC8vICAgIGlmIChsLnJvbGUpIHtcclxuICAgICAgICAgIC8vICAgICAgICBjb25zdCByb2xlID0gdGhpcy5zZXNzaW9uLnByb2ZpbGUucm9sZXMuZmluZChvID0+IG8ubmFtZSA9PT0gbC5yb2xlKTtcclxuICAgICAgICAgIC8vICAgICAgICBpZiAocm9sZSkgdGFzay5uYW1lICs9IGAsICR7cm9sZS5uYW1lfWA7XHJcbiAgICAgICAgICAvLyAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5tb2RlbC5ldmVudHMuZm9yRWFjaChlID0+IHtcclxuICAgICAgdGhpcy5ldmVudE1hcmtlcnMucHVzaCh7XHJcbiAgICAgICAgZGF5OiBuZXcgRGF0ZShlLnN0YXJ0aW5nKSxcclxuICAgICAgICBsYWJlbDogZS50aXRsZVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tb2RlbC5yZWNpcGllbnRzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGlmICghci5wZW5kaW5nKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY29uc3QgdGFzazogVGFzayA9IHtcclxuICAgICAgICBpZDogaSsrLFxyXG4gICAgICAgIHR5cGU6ICdwZW5kaW5nJyxcclxuICAgICAgICB0aW1lOiBuZXcgRGF0ZShyLnJlY2VpdmVkKSxcclxuICAgICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnSXNQZW5kaW5nJylcclxuICAgICAgfTtcclxuICAgICAgaWYgKHIuc3Vic3RpdHV0ZUlkKSB7XHJcbiAgICAgICAgY29uc3QgYnkgPSB0aGlzLl91c2Vycy5nZXQoci5zdWJzdGl0dXRlSWQpO1xyXG4gICAgICAgIGNvbnN0IHdobyA9IHRoaXMuX3VzZXJzLmdldChyLnVzZXJJZCk7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZSA9IGZvcmtKb2luKFt3aG8sIGJ5XSkucGlwZSh0YXAodSA9PiB7XHJcbiAgICAgICAgICB0YXNrLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdXaG9TdWJzdGl0dXRpbmcnLCB1WzBdLm5hbWUsIHVbMV0ubmFtZSk7XHJcbiAgICAgICAgICBpZiAodVswXS5yb2xlKVxyXG4gICAgICAgICAgICB0YXNrLm5hbWUgKz0gYCwgJHt1WzBdLnJvbGV9YDtcclxuICAgICAgICAgIGlmIChyLnJvbGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgcm9sZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKG8gPT4gby5uYW1lID09PSByLnJvbGUpO1xyXG4gICAgICAgICAgICBpZiAocm9sZSkgdGFzay5uYW1lICs9IGAsICR7cm9sZS5uYW1lfWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICBvYnNlcnZhYmxlcy5wdXNoKG9ic2VydmUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmUgPSB0aGlzLl91c2Vycy5nZXQoci51c2VySWQpLnBpcGUodGFwKHUgPT4ge1xyXG4gICAgICAgICAgdGFzay5uYW1lID0gdS5uYW1lO1xyXG4gICAgICAgICAgaWYgKHUucm9sZSlcclxuICAgICAgICAgICAgdGFzay5uYW1lICs9IGAsICR7dS5yb2xlfWA7XHJcbiAgICAgICAgICBlbHNlIGlmIChyLnJvbGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgcm9sZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKG8gPT4gby5uYW1lID09PSByLnJvbGUpO1xyXG4gICAgICAgICAgICBpZiAocm9sZSkgdGFzay5uYW1lICs9IGAsICR7cm9sZS5uYW1lfWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHIubm9kZUlkKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC53b3JrZmxvdy5jb25uZWN0b3JzLmZpbHRlcihjID0+IGMudGFyZ2V0SWQgPT09IHIubm9kZUlkKS5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcHJlZGVjZXNzb3JzID0gdGFza3MuZmlsdGVyKGwgPT4gbC5ub2RlSWQgPT09IGMuc291cmNlSWQpLm1hcChsID0+IGwuaWQpO1xyXG4gICAgICAgICAgaWYgKHByZWRlY2Vzc29ycy5sZW5ndGgpIHRhc2suZGVwZW5kZW5jaWVzID0gcHJlZGVjZXNzb3JzLmpvaW4oJywnKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBzdGF0ZSA9IHRhc2tzLmZpbmQodCA9PiB0LnR5cGUgPT09ICdTdGF0ZUNoYW5nZScgJiYgdC50aW1lIDw9IHRhc2sudGltZSAmJiAoIXQuZW5kaW5nIHx8IHQuZW5kaW5nID49IHRhc2sudGltZSkpO1xyXG4gICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICBpZiAoIXN0YXRlLnN1YnRhc2tzKSBzdGF0ZS5zdWJ0YXNrcyA9IFtdO1xyXG4gICAgICAgIHN0YXRlLnN1YnRhc2tzLnB1c2godGFzayk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRhc2tzLnB1c2godGFzayk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNlcnZhYmxlcykuXHJcbiAgICAgIHBpcGUodGFwKCgpID0+IHRoaXMudGFza3MgPSB0YXNrcy5zb3J0KCh0MCwgdDEpID0+IHQwLnRpbWUgPiB0MS50aW1lID8gMSA6IC0xKSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gcm93XHJcbiAgICovXHJcbiAgcm93U2VsZWN0aW5nKHJvdykge1xyXG4gICAgaWYgKHJvdy5kYXRhLnRhc2tEYXRhLnR5cGUgPT09ICdNb2RlbENoYW5nZScpXHJcbiAgICAgIHRoaXMuX2NvbXBhcmUocm93LmRhdGEpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gdGFza1xyXG4gICAqL1xyXG4gIHB1YmxpYyBfY29tcGFyZSh0YXNrOiBUYXNrKSB7XHJcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWydtYWlsYm94L2QnLCB0aGlzLm1vZGVsLmRvY3VtZW50SWQuZW5jb2RlSWQoKSwgJ3ZlcnNpb24nLCB0YXNrLnRpbWUudmFsdWVPZigpLmVuY29kZUlkKCldLCB7IHN0YXRlOiB7IGl0ZW06IHRoaXMubW9kZWwgfSB9KVxyXG4gIH1cclxuICByZWFkb25seSBzZWxlY3Rpb25TZXR0aW5ncyA9IHt9IGFzIFNlbGVjdGlvblNldHRpbmdzTW9kZWw7XHJcbiAgcmVhZG9ubHkgdGFza0ZpZWxkczogVGFza0ZpZWxkc01vZGVsID0ge1xyXG4gICAgaWQ6ICdpZCcsXHJcbiAgICBuYW1lOiAndGl0bGUnLFxyXG4gICAgc3RhcnREYXRlOiAndGltZScsXHJcbiAgICBlbmREYXRlOiAnZW5kaW5nJyxcclxuICAgIGR1cmF0aW9uOiAnZHVyYXRpb24nLFxyXG4gICAgZGVwZW5kZW5jeTogJ2RlcGVuZGVuY2llcycsXHJcbiAgICBjaGlsZDogJ3N1YnRhc2tzJ1xyXG4gIH07XHJcbiAgY29sdW1uczogQ29sdW1uTW9kZWxbXTtcclxuICByZWFkb25seSB0b29sdGlwU2V0dGluZ3MgPSB7IHNob3dUb29sdGlwOiBmYWxzZSB9O1xyXG4gIHJlYWRvbmx5IHRpbWVsaW5lU2V0dGluZ3M6IFRpbWVsaW5lU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIHRpbWVsaW5lVW5pdFNpemU6IDYwLFxyXG4gICAgdG9wVGllcjoge1xyXG4gICAgICBmb3JtYXQ6ICdNTU0gZGQsIHl5eXknLFxyXG4gICAgICB1bml0OiAnRGF5JyxcclxuICAgIH0sXHJcbiAgICBib3R0b21UaWVyOiB7XHJcbiAgICAgIHVuaXQ6ICdIb3VyJyxcclxuICAgICAgZm9ybWF0OiAnaC5tbSBhJ1xyXG4gICAgfVxyXG4gIH07XHJcbiAgcmVhZG9ubHkgZXZlbnRNYXJrZXJzOiBFdmVudE1hcmtlck1vZGVsW10gPSBbXHJcbiAgXTtcclxuICBwdWJsaWMgbGFiZWxTZXR0aW5nczogTGFiZWxTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgcmlnaHRMYWJlbDogJ25hbWUnLCBsZWZ0TGFiZWw6ICd0aXRsZSdcclxuICB9O1xyXG4gIHB1YmxpYyBzcGxpdHRlclNldHRpbmdzOiBTcGxpdHRlclNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICBjb2x1bW5JbmRleDogMyxcclxuICAgIHZpZXc6ICdDaGFydCcsXHJcbiAgICBwb3NpdGlvbjogJzAnLFxyXG4gICAgc2VwYXJhdG9yU2l6ZTogMFxyXG4gIH07XHJcbiAgcHVibGljIGRheVdvcmtpbmdUaW1lOiBEYXlXb3JraW5nVGltZU1vZGVsW10gPSBbeyBmcm9tOiAwLCB0bzogMjQgfV07XHJcbn1cclxuaW50ZXJmYWNlIFRhc2sge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIG5vZGVJZD86IHN0cmluZztcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHRpbWU6IERhdGU7XHJcbiAgZW5kaW5nPzogRGF0ZTtcclxuICBkdXJhdGlvbj86IG51bWJlcjtcclxuICBzdWJ0YXNrcz86IFRhc2tbXTtcclxuICBkZXBlbmRlbmNpZXM/OiBzdHJpbmc7XHJcbiAgaW5kaWNhdG9ycz86IGFueVtdLFxyXG59XHJcbmludGVyZmFjZSBPcHRpb25zIHtcclxuXHJcbn1cclxuIl19
@@ -45,10 +45,10 @@ export class ViewItemComponent {
45
45
  this._destroy.next();
46
46
  this._destroy.complete();
47
47
  }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ViewItemComponent, deps: [{ token: i1.HttpClient }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i2.BizDocComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: ViewItemComponent, selector: "bizdoc-document-view-item", inputs: { model: "model", view: "view" }, host: { listeners: { "window:resize": "resize()" } }, ngImport: i0, template: '', isInline: true }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ViewItemComponent, deps: [{ token: i1.HttpClient }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i2.BizDocComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ViewItemComponent, selector: "bizdoc-document-view-item", inputs: { model: "model", view: "view" }, host: { listeners: { "window:resize": "resize()" } }, ngImport: i0, template: '', isInline: true }); }
50
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ViewItemComponent, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ViewItemComponent, decorators: [{
52
52
  type: Component,
53
53
  args: [{
54
54
  selector: 'bizdoc-document-view-item',
@@ -17,10 +17,10 @@ export class DocumentViewsComponent {
17
17
  resize() {
18
18
  this.components.forEach(c => c.resize());
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DocumentViewsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SessionService }], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: DocumentViewsComponent, selector: "bizdoc-document-views", inputs: { model: "model" }, viewQueries: [{ propertyName: "components", predicate: ViewItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@for (v of views; track v; let last = $last) {\n <bizdoc-document-view-item [model]=\"model\" [view]=\"v\" #view></bizdoc-document-view-item>\n <!--<hr *ngIf=\"!view.hidden && !last\" />-->\n}\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}hr{opacity:.4;margin:4px 8px}:host ::ng-deep .nav-toolbar{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row}:host ::ng-deep .view{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;position:relative}:host ::ng-deep .loading-view{position:absolute;width:100%;height:100%;text-align:-webkit-center}\n"], dependencies: [{ kind: "component", type: i2.ViewItemComponent, selector: "bizdoc-document-view-item", inputs: ["model", "view"] }] }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DocumentViewsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SessionService }], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: DocumentViewsComponent, selector: "bizdoc-document-views", inputs: { model: "model" }, viewQueries: [{ propertyName: "components", predicate: ViewItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@for (v of views; track v; let last = $last) {\n <bizdoc-document-view-item [model]=\"model\" [view]=\"v\" #view></bizdoc-document-view-item>\n <!--<hr *ngIf=\"!view.hidden && !last\" />-->\n}\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}hr{opacity:.4;margin:4px 8px}:host ::ng-deep .nav-toolbar{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row}:host ::ng-deep .view{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;position:relative}:host ::ng-deep .loading-view{position:absolute;width:100%;height:100%;text-align:-webkit-center}\n"], dependencies: [{ kind: "component", type: i2.ViewItemComponent, selector: "bizdoc-document-view-item", inputs: ["model", "view"] }] }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DocumentViewsComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DocumentViewsComponent, decorators: [{
24
24
  type: Component,
25
25
  args: [{ selector: 'bizdoc-document-views', template: "@for (v of views; track v; let last = $last) {\n <bizdoc-document-view-item [model]=\"model\" [view]=\"v\" #view></bizdoc-document-view-item>\n <!--<hr *ngIf=\"!view.hidden && !last\" />-->\n}\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}hr{opacity:.4;margin:4px 8px}:host ::ng-deep .nav-toolbar{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row}:host ::ng-deep .view{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;position:relative}:host ::ng-deep .loading-view{position:absolute;width:100%;height:100%;text-align:-webkit-center}\n"] }]
26
26
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SessionService }], propDecorators: { components: [{
@@ -10,10 +10,10 @@ export class DocumentViewMobileComponent {
10
10
  title.set(`#${this.model.number}`);
11
11
  });
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DocumentViewMobileComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.WindowTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: DocumentViewMobileComponent, selector: "ng-component", ngImport: i0, template: '<bizdoc-document-views [model]=model></bizdoc-document-views>', isInline: true, dependencies: [{ kind: "component", type: i3.DocumentViewsComponent, selector: "bizdoc-document-views", inputs: ["model"] }] }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DocumentViewMobileComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.WindowTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: DocumentViewMobileComponent, selector: "ng-component", ngImport: i0, template: '<bizdoc-document-views [model]=model></bizdoc-document-views>', isInline: true, dependencies: [{ kind: "component", type: i3.DocumentViewsComponent, selector: "bizdoc-document-views", inputs: ["model"] }] }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DocumentViewMobileComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DocumentViewMobileComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ template: '<bizdoc-document-views [model]=model></bizdoc-document-views>' }]
19
19
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.WindowTitleService }] });
@@ -7,7 +7,7 @@ import * as i3 from "../core/slots/pane-ref";
7
7
  import * as i4 from "./views.component";
8
8
  export class DocumentViewPaneComponent {
9
9
  constructor(session, translate, pane) {
10
- pane.title = translate.get('View');
10
+ pane.title = translate.get('Views');
11
11
  pane.dataChange().subscribe(d => {
12
12
  this.model = d['item'];
13
13
  const form = session.profile.forms.find(f => f.name === this.model.formId);
@@ -16,14 +16,14 @@ export class DocumentViewPaneComponent {
16
16
  });
17
17
  pane.resized().subscribe(() => this.views.resize());
18
18
  }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DocumentViewPaneComponent, deps: [{ token: i1.SessionService }, { token: i2.TranslateService }, { token: i3.PaneRef }], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: DocumentViewPaneComponent, selector: "ng-component", viewQueries: [{ propertyName: "views", first: true, predicate: DocumentViewsComponent, descendants: true }], ngImport: i0, template: '<bizdoc-document-views [model]=model></bizdoc-document-views>', isInline: true, styles: [":host{min-width:450px;flex-grow:1}\n"], dependencies: [{ kind: "component", type: i4.DocumentViewsComponent, selector: "bizdoc-document-views", inputs: ["model"] }] }); }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DocumentViewPaneComponent, deps: [{ token: i1.SessionService }, { token: i2.TranslateService }, { token: i3.PaneRef }], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: DocumentViewPaneComponent, selector: "ng-component", viewQueries: [{ propertyName: "views", first: true, predicate: DocumentViewsComponent, descendants: true }], ngImport: i0, template: '<bizdoc-document-views [model]=model></bizdoc-document-views>', isInline: true, styles: [":host{min-width:450px;flex-grow:1}\n"], dependencies: [{ kind: "component", type: i4.DocumentViewsComponent, selector: "bizdoc-document-views", inputs: ["model"] }] }); }
21
21
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DocumentViewPaneComponent, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: DocumentViewPaneComponent, decorators: [{
23
23
  type: Component,
24
24
  args: [{ template: '<bizdoc-document-views [model]=model></bizdoc-document-views>', styles: [":host{min-width:450px;flex-grow:1}\n"] }]
25
25
  }], ctorParameters: () => [{ type: i1.SessionService }, { type: i2.TranslateService }, { type: i3.PaneRef }], propDecorators: { views: [{
26
26
  type: ViewChild,
27
27
  args: [DocumentViewsComponent]
28
28
  }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MucGFuZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL3ZpZXdzL3ZpZXdzLnBhbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3JELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7QUFRM0QsTUFBTSxPQUFPLHlCQUF5QjtJQUdwQyxZQUNFLE9BQXVCLEVBQ3ZCLFNBQTJCLEVBQzNCLElBQWE7UUFFYixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQzs4R0FoQlUseUJBQXlCO2tHQUF6Qix5QkFBeUIsMkZBQ3pCLHNCQUFzQixnREFOdkIsK0RBQStEOzsyRkFLOUQseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLCtEQUErRDt3SUFNdEMsS0FBSztzQkFBdkMsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERvY3VtZW50TW9kZWwgfSBmcm9tIFwiLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gXCIuLi9jb3JlL3Nsb3RzL3BhbmUtcmVmXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vY29yZS90cmFuc2xhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEb2N1bWVudFZpZXdzQ29tcG9uZW50IH0gZnJvbSBcIi4vdmlld3MuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJzxiaXpkb2MtZG9jdW1lbnQtdmlld3MgW21vZGVsXT1tb2RlbD48L2JpemRvYy1kb2N1bWVudC12aWV3cz4nLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgbWluLXdpZHRoOiA0NTBweDtcclxuICAgIGZsZXgtZ3JvdzogMTt9YF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERvY3VtZW50Vmlld1BhbmVDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoRG9jdW1lbnRWaWV3c0NvbXBvbmVudCkgdmlld3M6IERvY3VtZW50Vmlld3NDb21wb25lbnQ7XHJcbiAgbW9kZWw6IERvY3VtZW50TW9kZWw7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHBhbmU6IFBhbmVSZWZcclxuICApIHtcclxuICAgIHBhbmUudGl0bGUgPSB0cmFuc2xhdGUuZ2V0KCdWaWV3Jyk7XHJcbiAgICBwYW5lLmRhdGFDaGFuZ2UoKS5zdWJzY3JpYmUoZCA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSBkWydpdGVtJ107XHJcbiAgICAgIGNvbnN0IGZvcm0gPSBzZXNzaW9uLnByb2ZpbGUuZm9ybXMuZmluZChmID0+IGYubmFtZSA9PT0gdGhpcy5tb2RlbC5mb3JtSWQpO1xyXG4gICAgICBwYW5lLmdyb3VwID0gYCMke3RoaXMubW9kZWwubnVtYmVyfWA7XHJcbiAgICAgIHBhbmUuaWNvbiA9IGZvcm0uaWNvbjtcclxuICAgIH0pO1xyXG4gICAgcGFuZS5yZXNpemVkKCkuc3Vic2NyaWJlKCgpPT4gdGhpcy52aWV3cy5yZXNpemUoKSk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MucGFuZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL3ZpZXdzL3ZpZXdzLnBhbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3JELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7QUFRM0QsTUFBTSxPQUFPLHlCQUF5QjtJQUdwQyxZQUNFLE9BQXVCLEVBQ3ZCLFNBQTJCLEVBQzNCLElBQWE7UUFFYixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQzs4R0FoQlUseUJBQXlCO2tHQUF6Qix5QkFBeUIsMkZBQ3pCLHNCQUFzQixnREFOdkIsK0RBQStEOzsyRkFLOUQseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLCtEQUErRDt3SUFNdEMsS0FBSztzQkFBdkMsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERvY3VtZW50TW9kZWwgfSBmcm9tIFwiLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gXCIuLi9jb3JlL3Nsb3RzL3BhbmUtcmVmXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vY29yZS90cmFuc2xhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEb2N1bWVudFZpZXdzQ29tcG9uZW50IH0gZnJvbSBcIi4vdmlld3MuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJzxiaXpkb2MtZG9jdW1lbnQtdmlld3MgW21vZGVsXT1tb2RlbD48L2JpemRvYy1kb2N1bWVudC12aWV3cz4nLFxyXG4gIHN0eWxlczogW2A6aG9zdCB7XHJcbiAgbWluLXdpZHRoOiA0NTBweDtcclxuICAgIGZsZXgtZ3JvdzogMTt9YF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERvY3VtZW50Vmlld1BhbmVDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoRG9jdW1lbnRWaWV3c0NvbXBvbmVudCkgdmlld3M6IERvY3VtZW50Vmlld3NDb21wb25lbnQ7XHJcbiAgbW9kZWw6IERvY3VtZW50TW9kZWw7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHBhbmU6IFBhbmVSZWZcclxuICApIHtcclxuICAgIHBhbmUudGl0bGUgPSB0cmFuc2xhdGUuZ2V0KCdWaWV3cycpO1xyXG4gICAgcGFuZS5kYXRhQ2hhbmdlKCkuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICB0aGlzLm1vZGVsID0gZFsnaXRlbSddO1xyXG4gICAgICBjb25zdCBmb3JtID0gc2Vzc2lvbi5wcm9maWxlLmZvcm1zLmZpbmQoZiA9PiBmLm5hbWUgPT09IHRoaXMubW9kZWwuZm9ybUlkKTtcclxuICAgICAgcGFuZS5ncm91cCA9IGAjJHt0aGlzLm1vZGVsLm51bWJlcn1gO1xyXG4gICAgICBwYW5lLmljb24gPSBmb3JtLmljb247XHJcbiAgICB9KTtcclxuICAgIHBhbmUucmVzaXplZCgpLnN1YnNjcmliZSgoKT0+IHRoaXMudmlld3MucmVzaXplKCkpO1xyXG4gIH1cclxufVxyXG5cclxuIl19