@workflow/web-shared 5.0.0-beta.37 → 5.0.0-beta.39

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 (313) hide show
  1. package/README.md +3 -3
  2. package/dist/components/event-list-view.d.ts.map +1 -1
  3. package/dist/components/event-list-view.js +10 -10
  4. package/dist/components/index.d.ts +4 -5
  5. package/dist/components/index.d.ts.map +1 -1
  6. package/dist/components/index.js +4 -5
  7. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  8. package/dist/components/sidebar/attribute-panel.js +32 -8
  9. package/dist/components/sidebar/attributes-block.js +3 -3
  10. package/dist/components/sidebar/copyable-data-block.js +2 -2
  11. package/dist/components/sidebar/entity-detail-panel.js +3 -3
  12. package/dist/components/sidebar/events-list.js +2 -2
  13. package/dist/components/stream-viewer-skeleton.d.ts +2 -0
  14. package/dist/components/stream-viewer-skeleton.d.ts.map +1 -0
  15. package/dist/components/stream-viewer-skeleton.js +12 -0
  16. package/dist/components/stream-viewer.d.ts +1 -1
  17. package/dist/components/stream-viewer.d.ts.map +1 -1
  18. package/dist/components/stream-viewer.js +9 -26
  19. package/dist/components/trace-viewer/components/copy-button.d.ts.map +1 -0
  20. package/dist/components/trace-viewer/components/copy-button.js +27 -0
  21. package/dist/components/trace-viewer/components/detail-panel-width.d.ts.map +1 -0
  22. package/dist/components/trace-viewer/components/detail-panel-width.js +67 -0
  23. package/dist/components/trace-viewer/components/detail-panel.d.ts.map +1 -0
  24. package/dist/components/trace-viewer/components/detail-panel.js +122 -0
  25. package/dist/components/trace-viewer/components/draggable-border.d.ts.map +1 -0
  26. package/dist/components/trace-viewer/components/draggable-border.js +140 -0
  27. package/dist/components/trace-viewer/components/event-list.d.ts.map +1 -0
  28. package/dist/components/trace-viewer/components/event-list.js +47 -0
  29. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
  30. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.js +54 -0
  31. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
  32. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
  33. package/dist/components/trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
  34. package/dist/components/trace-viewer/components/middle-truncate/truncate.js +101 -0
  35. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
  36. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
  37. package/dist/components/trace-viewer/components/minimap.d.ts.map +1 -0
  38. package/dist/components/trace-viewer/components/minimap.js +337 -0
  39. package/dist/components/trace-viewer/components/pane-constants.d.ts.map +1 -0
  40. package/dist/components/trace-viewer/components/pane-constants.js +16 -0
  41. package/dist/components/trace-viewer/components/span-markers.d.ts.map +1 -0
  42. package/dist/components/trace-viewer/components/span-markers.js +85 -0
  43. package/dist/components/trace-viewer/components/split-pane.d.ts.map +1 -0
  44. package/dist/components/trace-viewer/components/split-pane.js +41 -0
  45. package/dist/components/trace-viewer/components/timeline.d.ts.map +1 -0
  46. package/dist/components/trace-viewer/components/timeline.js +321 -0
  47. package/dist/components/trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
  48. package/dist/components/trace-viewer/components/trace-shortcut-helper.js +55 -0
  49. package/dist/components/trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  50. package/dist/components/trace-viewer/components/trace-viewer-skeleton.js +26 -0
  51. package/dist/components/trace-viewer/components/use-element-width.d.ts.map +1 -0
  52. package/dist/components/trace-viewer/components/use-element-width.js +25 -0
  53. package/dist/components/trace-viewer/components/use-row-window.d.ts.map +1 -0
  54. package/dist/components/trace-viewer/components/use-row-window.js +107 -0
  55. package/dist/components/trace-viewer/context.d.ts +14 -182
  56. package/dist/components/trace-viewer/context.d.ts.map +1 -1
  57. package/dist/components/trace-viewer/context.js +44 -351
  58. package/dist/components/trace-viewer/icons.d.ts.map +1 -0
  59. package/dist/components/trace-viewer/icons.js +15 -0
  60. package/dist/components/trace-viewer/search.d.ts.map +1 -0
  61. package/dist/components/trace-viewer/search.js +134 -0
  62. package/dist/components/trace-viewer/trace-viewer.d.ts +7 -28
  63. package/dist/components/trace-viewer/trace-viewer.d.ts.map +1 -1
  64. package/dist/components/trace-viewer/trace-viewer.js +306 -356
  65. package/dist/components/trace-viewer/types.d.ts +2 -211
  66. package/dist/components/trace-viewer/types.d.ts.map +1 -1
  67. package/dist/components/trace-viewer/types.js +1 -1
  68. package/dist/components/trace-viewer/utils.d.ts.map +1 -0
  69. package/dist/components/trace-viewer/utils.js +430 -0
  70. package/dist/components/{trace-viewer-new.d.ts → trace-viewer.d.ts} +3 -3
  71. package/dist/components/trace-viewer.d.ts.map +1 -0
  72. package/dist/components/trace-viewer.js +21 -0
  73. package/dist/components/ui/alert.js +2 -2
  74. package/dist/components/ui/button.d.ts +1 -1
  75. package/dist/components/ui/button.d.ts.map +1 -1
  76. package/dist/components/ui/button.js +3 -3
  77. package/dist/components/ui/card.d.ts.map +1 -1
  78. package/dist/components/ui/card.js +3 -3
  79. package/dist/components/ui/error-card.js +2 -2
  80. package/dist/components/ui/error-stack-block.js +4 -4
  81. package/dist/components/ui/kbd.js +3 -3
  82. package/dist/components/ui/timestamp-tooltip.js +3 -3
  83. package/dist/components/workflow-traces/trace-span-construction.d.ts +1 -1
  84. package/dist/components/workflow-traces/trace-span-construction.js +1 -1
  85. package/dist/lib/trace-builder.d.ts +1 -1
  86. package/dist/lib/trace-builder.d.ts.map +1 -1
  87. package/dist/lib/trace-builder.js +1 -1
  88. package/dist/lib/trace-types.d.ts +54 -0
  89. package/dist/lib/trace-types.d.ts.map +1 -0
  90. package/dist/lib/trace-types.js +2 -0
  91. package/package.json +6 -6
  92. package/src/components/event-list-view.tsx +12 -9
  93. package/src/components/index.ts +4 -5
  94. package/src/components/sidebar/attribute-panel.tsx +46 -8
  95. package/src/components/sidebar/attributes-block.tsx +2 -2
  96. package/src/components/sidebar/copyable-data-block.tsx +1 -1
  97. package/src/components/sidebar/entity-detail-panel.tsx +3 -3
  98. package/src/components/sidebar/events-list.tsx +1 -1
  99. package/src/components/stream-viewer-skeleton.tsx +34 -0
  100. package/src/components/stream-viewer.tsx +34 -106
  101. package/src/components/{new-trace-viewer → trace-viewer}/components/event-list.tsx +1 -1
  102. package/src/components/{new-trace-viewer → trace-viewer}/components/minimap.tsx +1 -4
  103. package/src/components/{new-trace-viewer → trace-viewer}/components/timeline.tsx +2 -5
  104. package/src/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.tsx +1 -1
  105. package/src/components/trace-viewer/context.tsx +63 -656
  106. package/src/components/trace-viewer/trace-viewer.tsx +563 -531
  107. package/src/components/trace-viewer/types.ts +2 -234
  108. package/src/components/{new-trace-viewer → trace-viewer}/utils.ts +2 -2
  109. package/src/components/{trace-viewer-new.tsx → trace-viewer.tsx} +5 -5
  110. package/src/components/ui/alert.tsx +1 -1
  111. package/src/components/ui/button.tsx +3 -3
  112. package/src/components/ui/card.tsx +2 -9
  113. package/src/components/ui/error-card.tsx +3 -3
  114. package/src/components/ui/error-stack-block.tsx +3 -3
  115. package/src/components/ui/kbd.tsx +2 -2
  116. package/src/components/ui/timestamp-tooltip.tsx +4 -4
  117. package/src/components/workflow-traces/trace-span-construction.ts +1 -1
  118. package/src/lib/trace-builder.ts +1 -1
  119. package/src/lib/trace-types.ts +56 -0
  120. package/dist/components/new-trace-viewer/components/copy-button.d.ts.map +0 -1
  121. package/dist/components/new-trace-viewer/components/copy-button.js +0 -27
  122. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts.map +0 -1
  123. package/dist/components/new-trace-viewer/components/detail-panel-width.js +0 -67
  124. package/dist/components/new-trace-viewer/components/detail-panel.d.ts.map +0 -1
  125. package/dist/components/new-trace-viewer/components/detail-panel.js +0 -122
  126. package/dist/components/new-trace-viewer/components/draggable-border.d.ts.map +0 -1
  127. package/dist/components/new-trace-viewer/components/draggable-border.js +0 -140
  128. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +0 -1
  129. package/dist/components/new-trace-viewer/components/event-list.js +0 -47
  130. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +0 -1
  131. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +0 -54
  132. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +0 -1
  133. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +0 -81
  134. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +0 -1
  135. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +0 -101
  136. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +0 -1
  137. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +0 -114
  138. package/dist/components/new-trace-viewer/components/minimap.d.ts.map +0 -1
  139. package/dist/components/new-trace-viewer/components/minimap.js +0 -337
  140. package/dist/components/new-trace-viewer/components/pane-constants.d.ts.map +0 -1
  141. package/dist/components/new-trace-viewer/components/pane-constants.js +0 -16
  142. package/dist/components/new-trace-viewer/components/span-markers.d.ts.map +0 -1
  143. package/dist/components/new-trace-viewer/components/span-markers.js +0 -85
  144. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +0 -1
  145. package/dist/components/new-trace-viewer/components/split-pane.js +0 -41
  146. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +0 -1
  147. package/dist/components/new-trace-viewer/components/timeline.js +0 -321
  148. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts.map +0 -1
  149. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +0 -55
  150. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +0 -1
  151. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +0 -26
  152. package/dist/components/new-trace-viewer/components/use-element-width.d.ts.map +0 -1
  153. package/dist/components/new-trace-viewer/components/use-element-width.js +0 -25
  154. package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +0 -1
  155. package/dist/components/new-trace-viewer/components/use-row-window.js +0 -107
  156. package/dist/components/new-trace-viewer/context.d.ts +0 -17
  157. package/dist/components/new-trace-viewer/context.d.ts.map +0 -1
  158. package/dist/components/new-trace-viewer/context.js +0 -48
  159. package/dist/components/new-trace-viewer/icons.d.ts.map +0 -1
  160. package/dist/components/new-trace-viewer/icons.js +0 -15
  161. package/dist/components/new-trace-viewer/search.d.ts.map +0 -1
  162. package/dist/components/new-trace-viewer/search.js +0 -134
  163. package/dist/components/new-trace-viewer/trace-viewer.d.ts +0 -11
  164. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +0 -1
  165. package/dist/components/new-trace-viewer/trace-viewer.js +0 -336
  166. package/dist/components/new-trace-viewer/types.d.ts +0 -3
  167. package/dist/components/new-trace-viewer/types.d.ts.map +0 -1
  168. package/dist/components/new-trace-viewer/types.js +0 -2
  169. package/dist/components/new-trace-viewer/utils.d.ts.map +0 -1
  170. package/dist/components/new-trace-viewer/utils.js +0 -430
  171. package/dist/components/run-trace-view.d.ts +0 -23
  172. package/dist/components/run-trace-view.d.ts.map +0 -1
  173. package/dist/components/run-trace-view.js +0 -11
  174. package/dist/components/trace-viewer/components/map.d.ts +0 -8
  175. package/dist/components/trace-viewer/components/map.d.ts.map +0 -1
  176. package/dist/components/trace-viewer/components/map.js +0 -162
  177. package/dist/components/trace-viewer/components/markers.d.ts +0 -23
  178. package/dist/components/trace-viewer/components/markers.d.ts.map +0 -1
  179. package/dist/components/trace-viewer/components/markers.js +0 -416
  180. package/dist/components/trace-viewer/components/node.d.ts +0 -35
  181. package/dist/components/trace-viewer/components/node.d.ts.map +0 -1
  182. package/dist/components/trace-viewer/components/node.js +0 -286
  183. package/dist/components/trace-viewer/components/search-input.d.ts +0 -9
  184. package/dist/components/trace-viewer/components/search-input.d.ts.map +0 -1
  185. package/dist/components/trace-viewer/components/search-input.js +0 -9
  186. package/dist/components/trace-viewer/components/search.d.ts +0 -3
  187. package/dist/components/trace-viewer/components/search.d.ts.map +0 -1
  188. package/dist/components/trace-viewer/components/search.js +0 -25
  189. package/dist/components/trace-viewer/components/span-content.d.ts +0 -19
  190. package/dist/components/trace-viewer/components/span-content.d.ts.map +0 -1
  191. package/dist/components/trace-viewer/components/span-content.js +0 -137
  192. package/dist/components/trace-viewer/components/span-detail-panel.d.ts +0 -10
  193. package/dist/components/trace-viewer/components/span-detail-panel.d.ts.map +0 -1
  194. package/dist/components/trace-viewer/components/span-detail-panel.js +0 -285
  195. package/dist/components/trace-viewer/components/span-segments.d.ts +0 -50
  196. package/dist/components/trace-viewer/components/span-segments.d.ts.map +0 -1
  197. package/dist/components/trace-viewer/components/span-segments.js +0 -445
  198. package/dist/components/trace-viewer/components/span-strategies.d.ts +0 -46
  199. package/dist/components/trace-viewer/components/span-strategies.d.ts.map +0 -1
  200. package/dist/components/trace-viewer/components/span-strategies.js +0 -108
  201. package/dist/components/trace-viewer/components/ui.d.ts +0 -28
  202. package/dist/components/trace-viewer/components/ui.d.ts.map +0 -1
  203. package/dist/components/trace-viewer/components/ui.js +0 -39
  204. package/dist/components/trace-viewer/components/zoom-button.d.ts +0 -3
  205. package/dist/components/trace-viewer/components/zoom-button.d.ts.map +0 -1
  206. package/dist/components/trace-viewer/components/zoom-button.js +0 -29
  207. package/dist/components/trace-viewer/components/zoom-icons.d.ts +0 -11
  208. package/dist/components/trace-viewer/components/zoom-icons.d.ts.map +0 -1
  209. package/dist/components/trace-viewer/components/zoom-icons.js +0 -11
  210. package/dist/components/trace-viewer/index.d.ts +0 -5
  211. package/dist/components/trace-viewer/index.d.ts.map +0 -1
  212. package/dist/components/trace-viewer/index.js +0 -4
  213. package/dist/components/trace-viewer/trace-viewer.module.css +0 -1465
  214. package/dist/components/trace-viewer/util/constants.d.ts +0 -9
  215. package/dist/components/trace-viewer/util/constants.d.ts.map +0 -1
  216. package/dist/components/trace-viewer/util/constants.js +0 -9
  217. package/dist/components/trace-viewer/util/scrollbar-width.d.ts +0 -2
  218. package/dist/components/trace-viewer/util/scrollbar-width.d.ts.map +0 -1
  219. package/dist/components/trace-viewer/util/scrollbar-width.js +0 -14
  220. package/dist/components/trace-viewer/util/tree.d.ts +0 -13
  221. package/dist/components/trace-viewer/util/tree.d.ts.map +0 -1
  222. package/dist/components/trace-viewer/util/tree.js +0 -227
  223. package/dist/components/trace-viewer/util/use-immediate-style.d.ts +0 -15
  224. package/dist/components/trace-viewer/util/use-immediate-style.d.ts.map +0 -1
  225. package/dist/components/trace-viewer/util/use-immediate-style.js +0 -23
  226. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts +0 -8
  227. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts.map +0 -1
  228. package/dist/components/trace-viewer/util/use-streaming-spans.js +0 -345
  229. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts +0 -6
  230. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts.map +0 -1
  231. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +0 -39
  232. package/dist/components/trace-viewer/worker.d.ts +0 -2
  233. package/dist/components/trace-viewer/worker.d.ts.map +0 -1
  234. package/dist/components/trace-viewer/worker.js +0 -109
  235. package/dist/components/trace-viewer-new.d.ts.map +0 -1
  236. package/dist/components/trace-viewer-new.js +0 -21
  237. package/dist/components/workflow-trace-view.d.ts +0 -39
  238. package/dist/components/workflow-trace-view.d.ts.map +0 -1
  239. package/dist/components/workflow-trace-view.js +0 -690
  240. package/dist/components/workflow-traces/trace-colors.d.ts +0 -15
  241. package/dist/components/workflow-traces/trace-colors.d.ts.map +0 -1
  242. package/dist/components/workflow-traces/trace-colors.js +0 -86
  243. package/src/components/new-trace-viewer/context.tsx +0 -93
  244. package/src/components/new-trace-viewer/trace-viewer.tsx +0 -632
  245. package/src/components/new-trace-viewer/types.ts +0 -2
  246. package/src/components/run-trace-view.tsx +0 -80
  247. package/src/components/trace-viewer/components/map.tsx +0 -226
  248. package/src/components/trace-viewer/components/markers.tsx +0 -612
  249. package/src/components/trace-viewer/components/node.tsx +0 -506
  250. package/src/components/trace-viewer/components/search-input.tsx +0 -52
  251. package/src/components/trace-viewer/components/search.tsx +0 -47
  252. package/src/components/trace-viewer/components/span-content.tsx +0 -247
  253. package/src/components/trace-viewer/components/span-detail-panel.tsx +0 -655
  254. package/src/components/trace-viewer/components/span-segments.ts +0 -585
  255. package/src/components/trace-viewer/components/span-strategies.ts +0 -205
  256. package/src/components/trace-viewer/components/ui.tsx +0 -156
  257. package/src/components/trace-viewer/components/zoom-button.tsx +0 -61
  258. package/src/components/trace-viewer/components/zoom-icons.tsx +0 -65
  259. package/src/components/trace-viewer/index.tsx +0 -4
  260. package/src/components/trace-viewer/trace-viewer.module.css +0 -1465
  261. package/src/components/trace-viewer/util/constants.ts +0 -8
  262. package/src/components/trace-viewer/util/scrollbar-width.ts +0 -13
  263. package/src/components/trace-viewer/util/tree.ts +0 -277
  264. package/src/components/trace-viewer/util/use-immediate-style.ts +0 -38
  265. package/src/components/trace-viewer/util/use-streaming-spans.ts +0 -426
  266. package/src/components/trace-viewer/util/use-trackpad-zoom.tsx +0 -51
  267. package/src/components/trace-viewer/worker.ts +0 -131
  268. package/src/components/workflow-trace-view.tsx +0 -1166
  269. package/src/components/workflow-traces/trace-colors.ts +0 -112
  270. package/dist/components/{new-trace-viewer → trace-viewer}/components/copy-button.d.ts +0 -0
  271. package/dist/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.d.ts +0 -0
  272. package/dist/components/{new-trace-viewer → trace-viewer}/components/detail-panel.d.ts +0 -0
  273. package/dist/components/{new-trace-viewer → trace-viewer}/components/draggable-border.d.ts +0 -0
  274. package/dist/components/{new-trace-viewer → trace-viewer}/components/event-list.d.ts +0 -0
  275. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.d.ts +0 -0
  276. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.d.ts +0 -0
  277. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.d.ts +0 -0
  278. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.d.ts +0 -0
  279. package/dist/components/{new-trace-viewer → trace-viewer}/components/minimap.d.ts +0 -0
  280. package/dist/components/{new-trace-viewer → trace-viewer}/components/pane-constants.d.ts +0 -0
  281. package/dist/components/{new-trace-viewer → trace-viewer}/components/span-markers.d.ts +0 -0
  282. package/dist/components/{new-trace-viewer → trace-viewer}/components/split-pane.d.ts +0 -0
  283. package/dist/components/{new-trace-viewer → trace-viewer}/components/timeline.d.ts +0 -0
  284. package/dist/components/{new-trace-viewer → trace-viewer}/components/timeline.module.css +0 -0
  285. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.d.ts +0 -0
  286. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.module.css +0 -0
  287. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-viewer-skeleton.d.ts +0 -0
  288. package/dist/components/{new-trace-viewer → trace-viewer}/components/use-element-width.d.ts +0 -0
  289. package/dist/components/{new-trace-viewer → trace-viewer}/components/use-row-window.d.ts +0 -0
  290. package/dist/components/{new-trace-viewer → trace-viewer}/icons.d.ts +0 -0
  291. package/dist/components/{new-trace-viewer → trace-viewer}/search.d.ts +0 -0
  292. package/dist/components/{new-trace-viewer → trace-viewer}/utils.d.ts +0 -0
  293. package/src/components/{new-trace-viewer → trace-viewer}/components/copy-button.tsx +0 -0
  294. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.test.ts +0 -0
  295. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.ts +0 -0
  296. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel.tsx +0 -0
  297. package/src/components/{new-trace-viewer → trace-viewer}/components/draggable-border.tsx +0 -0
  298. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.ts +0 -0
  299. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.tsx +1 -1
  300. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.ts +0 -0
  301. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.ts +0 -0
  302. /package/src/components/{new-trace-viewer → trace-viewer}/components/pane-constants.ts +0 -0
  303. /package/src/components/{new-trace-viewer → trace-viewer}/components/span-markers.tsx +0 -0
  304. /package/src/components/{new-trace-viewer → trace-viewer}/components/split-pane.tsx +0 -0
  305. /package/src/components/{new-trace-viewer → trace-viewer}/components/timeline.module.css +0 -0
  306. /package/src/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.module.css +0 -0
  307. /package/src/components/{new-trace-viewer → trace-viewer}/components/trace-viewer-skeleton.tsx +0 -0
  308. /package/src/components/{new-trace-viewer → trace-viewer}/components/use-element-width.ts +0 -0
  309. /package/src/components/{new-trace-viewer → trace-viewer}/components/use-row-window.ts +0 -0
  310. /package/src/components/{new-trace-viewer → trace-viewer}/icons.tsx +0 -0
  311. /package/src/components/{new-trace-viewer → trace-viewer}/search.ts +0 -0
  312. /package/src/components/{new-trace-viewer → trace-viewer}/utils.test.ts +0 -0
  313. /package/src/{components/trace-viewer/modules.d.ts → modules.d.ts} +0 -0
@@ -1,355 +1,48 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { createContext, useContext, useEffect, useMemo, useReducer, useRef, } from 'react';
4
- import { MAP_HEIGHT, MARKER_HEIGHT, ROW_HEIGHT, ROW_PADDING, SEARCH_GAP, SEARCH_HEIGHT, TIMELINE_PADDING, } from './util/constants';
5
- import { detectScrollbarWidth } from './util/scrollbar-width';
6
- export const initialState = {
7
- root: {
8
- startTime: 0,
9
- endTime: 1,
10
- duration: 1,
11
- depth: 0,
12
- children: [],
13
- },
14
- spanMap: {},
15
- resourceMap: {},
16
- filter: '',
17
- selected: null,
18
- baseScale: 1,
19
- scaleRatio: 1,
20
- scale: 1,
21
- width: 640,
22
- height: 480,
23
- timelineWidth: 640,
24
- timelineHeight: 480,
25
- panelWidth: 380,
26
- panelHeight: 480,
27
- scrollbarWidth: 0,
28
- timelineRef: { current: null },
29
- scrollSnapshotRef: { current: undefined },
30
- memoCacheRef: { current: new Map() },
31
- getQuickLinks: () => [],
32
- withPanel: false,
33
- isMobile: false,
34
- };
35
- const getMinScale = (state) => {
36
- return (state.timelineWidth - state.scrollbarWidth) / state.root.duration;
37
- };
38
- export const TraceViewerContext = createContext({
39
- state: initialState,
40
- dispatch: () => {
41
- // noop
42
- },
43
- });
44
- TraceViewerContext.displayName = 'TraceViewerContext';
45
- const reducer = (state, action) => {
46
- switch (action.type) {
47
- case 'setRoot':
48
- state.scrollSnapshotRef.current = undefined;
49
- state.memoCacheRef.current.clear();
50
- return reducer({
51
- ...state,
52
- root: action.root,
53
- spanMap: action.spanMap,
54
- resourceMap: Object.fromEntries(action.resources.map(({ name, attributes }) => [name, attributes])),
55
- }, {
56
- type: 'detectBaseScale',
57
- });
58
- case 'setSize': {
59
- const lowerHeight = action.height - MAP_HEIGHT - SEARCH_HEIGHT - 3 * SEARCH_GAP;
60
- const isMobile = state.withPanel && action.width <= 768;
61
- let newState = {
62
- ...state,
63
- width: action.width,
64
- height: action.height,
65
- timelineWidth: action.width -
66
- Number(Boolean(state.selected && state.withPanel && !isMobile)) *
67
- state.panelWidth,
68
- timelineHeight: lowerHeight,
69
- panelHeight: lowerHeight,
70
- isMobile,
71
- };
72
- if (newState.width !== state.width) {
73
- newState = reducer(newState, {
74
- type: 'detectBaseScale',
75
- });
76
- }
77
- return newState;
78
- }
79
- case 'setPanelWidth': {
80
- const panelWidth = Math.max(240, Math.min(action.width, state.width - 240));
81
- const timelineWidth = state.withPanel && state.selected && !state.isMobile
82
- ? state.width - panelWidth
83
- : state.width;
84
- return reducer({
85
- ...state,
86
- timelineWidth,
87
- panelWidth,
88
- }, {
89
- type: 'detectBaseScale',
90
- });
91
- }
92
- case 'setFilter':
93
- return {
94
- ...state,
95
- filter: action.filter,
96
- };
97
- case 'deselect':
98
- return reducer({
99
- ...state,
100
- selected: null,
101
- timelineWidth: state.width,
102
- }, {
103
- type: 'detectBaseScale',
104
- });
105
- case 'select': {
106
- const node = state.spanMap[action.id];
107
- if (!node) {
108
- return state;
109
- }
110
- return reducer({
111
- ...state,
112
- selected: node,
113
- timelineWidth: state.width -
114
- (state.withPanel && !state.isMobile ? state.panelWidth : 0),
115
- }, {
116
- type: 'detectBaseScale',
117
- });
118
- }
119
- case 'escape': {
120
- if (state.selected) {
121
- return reducer(state, {
122
- type: 'deselect',
123
- });
124
- }
125
- return reducer(state, {
126
- type: 'resetScale',
127
- });
128
- }
129
- case 'toggleSelection': {
130
- let newState = state;
131
- if (state.selected) {
132
- newState = reducer(newState, {
133
- type: 'deselect',
134
- });
135
- }
136
- if (state.selected?.span.spanId === action.id) {
137
- return newState;
138
- }
139
- return reducer(newState, {
140
- type: 'select',
141
- id: action.id,
142
- });
143
- }
144
- case 'detectBaseScale': {
145
- const baseScale = (state.timelineWidth - state.scrollbarWidth) / state.root.duration;
146
- return reducer({
147
- ...state,
148
- baseScale,
149
- scale: baseScale * state.scaleRatio,
150
- }, {
151
- type: 'minScale',
152
- });
153
- }
154
- case 'setScale':
155
- return {
156
- ...state,
157
- scaleRatio: action.scale,
158
- scale: state.baseScale * action.scale,
159
- };
160
- case 'resetScale':
161
- return reducer(state, {
162
- type: 'scaleToRange',
163
- t1: state.root.startTime,
164
- t2: state.root.endTime,
165
- });
166
- case 'scaleToNode': {
167
- const node = state.spanMap[action.id];
168
- if (!node) {
169
- return state;
170
- }
171
- return reducer(reducer(state, {
172
- type: 'setScale',
173
- scale: (state.width -
174
- state.scrollbarWidth -
175
- (state.withPanel && !state.isMobile ? state.panelWidth : 0)) /
176
- node.duration /
177
- state.baseScale,
178
- }), {
179
- type: 'setScrollSnapshot',
180
- anchorT: node.startTime - state.root.startTime,
181
- anchorX: 0,
182
- });
183
- }
184
- case 'scaleToRange': {
185
- const duration = Math.abs(action.t1 - action.t2);
186
- return reducer(reducer(state, {
187
- type: 'setScale',
188
- scale: (state.width -
189
- state.scrollbarWidth -
190
- (state.selected && state.withPanel ? state.panelWidth : 0)) /
191
- duration /
192
- state.baseScale,
193
- }), {
194
- type: 'setScrollSnapshot',
195
- anchorT: Math.min(action.t1, action.t2) - state.root.startTime,
196
- anchorX: 0,
197
- });
198
- }
199
- case 'adjustScaleRatio': {
200
- let { scaleRatio } = state;
201
- switch (action.direction) {
202
- case -1:
203
- scaleRatio *= 0.8;
204
- break;
205
- case 1:
206
- scaleRatio *= 1.25;
207
- break;
208
- default:
209
- scaleRatio = 1;
210
- break;
211
- }
212
- const $timeline = state.timelineRef.current;
213
- if (!$timeline) {
214
- console.warn('timelineRef is null');
215
- return state;
216
- }
217
- const { clientWidth, scrollLeft } = $timeline;
218
- return reducer(reducer({
219
- ...state,
220
- scaleRatio,
221
- scale: state.baseScale * scaleRatio,
222
- }, {
223
- type: 'minScale',
224
- }), {
225
- type: 'setScrollSnapshot',
226
- anchorT: (scrollLeft + clientWidth * 0.5) / state.scale,
227
- anchorX: clientWidth * 0.5,
228
- });
229
- }
230
- case 'trackpadScale': {
231
- const minScaleRatio = getMinScale(state) / state.baseScale;
232
- const scaleRatio = Math.max(minScaleRatio, state.scaleRatio *
233
- (1 +
234
- 0.2 * Math.sign(action.delta) * Math.sqrt(Math.abs(action.delta))));
235
- return reducer({
236
- ...state,
237
- scaleRatio,
238
- scale: state.baseScale * scaleRatio,
239
- }, {
240
- type: 'setScrollSnapshot',
241
- anchorT: action.anchorT,
242
- anchorX: action.anchorX,
243
- });
244
- }
245
- case 'minScale': {
246
- const minScale = getMinScale(state);
247
- if (state.scale >= minScale)
248
- return state;
249
- return {
250
- ...state,
251
- scale: minScale,
252
- scaleRatio: minScale / state.baseScale,
253
- };
254
- }
255
- case 'setScrollSnapshot': {
256
- const $timeline = state.timelineRef.current;
257
- if (!$timeline)
258
- return state;
259
- const { anchorT, anchorX } = action;
260
- const scrollLeft = anchorT * state.scale - anchorX;
261
- const { scrollTop } = $timeline;
262
- const startRow = (scrollTop - MARKER_HEIGHT - TIMELINE_PADDING) /
263
- (ROW_HEIGHT + ROW_PADDING);
264
- const endRow = startRow + Math.ceil(state.timelineHeight / (ROW_HEIGHT + ROW_PADDING));
265
- state.scrollSnapshotRef.current = {
266
- anchorT,
267
- anchorX,
268
- scrollLeft,
269
- scrollTop,
270
- startTime: state.root.startTime + scrollLeft / state.scale,
271
- endTime: state.root.startTime +
272
- (scrollLeft + state.timelineWidth) / state.scale,
273
- startRow,
274
- endRow,
275
- scale: state.scale,
276
- };
277
- return state;
278
- }
279
- case 'setWithPanel': {
280
- if (state.withPanel === action.withPanel)
281
- return state;
282
- const timelineWidth = action.withPanel && state.selected && !state.isMobile
283
- ? state.width - state.panelWidth
284
- : state.width;
285
- return reducer({
286
- ...state,
287
- withPanel: action.withPanel,
288
- timelineWidth,
289
- }, {
290
- type: 'detectBaseScale',
291
- });
292
- }
293
- case 'forceRender':
294
- state.memoCacheRef.current.set('', {});
295
- return {
296
- ...state,
297
- };
298
- case 'updateRoot':
299
- // Incremental update: preserve scroll snapshot and only invalidate
300
- // memo cache for spans whose data may have changed
301
- state.memoCacheRef.current.set('', {});
302
- return reducer({
303
- ...state,
304
- root: action.root,
305
- spanMap: action.spanMap,
306
- resourceMap: Object.fromEntries(action.resources.map(({ name, attributes }) => [name, attributes])),
307
- }, {
308
- type: 'detectBaseScale',
309
- });
3
+ import { createContext, useCallback, useContext, useEffect, useMemo, useState, } from 'react';
4
+ const ActiveSpanContext = createContext(null);
5
+ ActiveSpanContext.displayName = 'ActiveSpanContext';
6
+ export function ActiveSpanProvider({ spans, children, }) {
7
+ const [activeSpanId, setActiveSpanId] = useState(null);
8
+ useEffect(() => {
9
+ setActiveSpanId((currentSpanId) => {
10
+ if (!currentSpanId) {
11
+ return null;
12
+ }
13
+ const hasCurrentSpan = spans.some((span) => span.spanId === currentSpanId);
14
+ if (hasCurrentSpan) {
15
+ return currentSpanId;
16
+ }
17
+ return null;
18
+ });
19
+ }, [spans]);
20
+ const activeSpan = useMemo(() => {
21
+ if (!activeSpanId) {
22
+ return null;
23
+ }
24
+ return spans.find((span) => span.spanId === activeSpanId) ?? null;
25
+ }, [activeSpanId, spans]);
26
+ const setActiveSpan = useCallback((spanId) => {
27
+ setActiveSpanId(spanId);
28
+ }, []);
29
+ const clearActiveSpan = useCallback(() => {
30
+ setActiveSpanId(null);
31
+ }, []);
32
+ const value = useMemo(() => ({
33
+ activeSpanId,
34
+ activeSpan,
35
+ spans,
36
+ setActiveSpan,
37
+ clearActiveSpan,
38
+ }), [activeSpanId, activeSpan, spans, setActiveSpan, clearActiveSpan]);
39
+ return (_jsx(ActiveSpanContext.Provider, { value: value, children: children }));
40
+ }
41
+ export const useActiveSpan = () => {
42
+ const context = useContext(ActiveSpanContext);
43
+ if (!context) {
44
+ throw new Error('useActiveSpan must be used within ActiveSpanProvider');
310
45
  }
46
+ return context;
311
47
  };
312
- export function TraceViewerContextProvider({ getQuickLinks, withPanel = false, children, customSpanClassNameFunc, customSpanEventClassNameFunc, customPanelComponent = null, }) {
313
- const timelineRef = useRef(null);
314
- const scrollSnapshotRef = useRef(undefined);
315
- const getQuickLinksRef = useRef(getQuickLinks);
316
- getQuickLinksRef.current = getQuickLinks;
317
- const memoCacheRef = useRef(new Map());
318
- const quickLinksCache = useRef(new Map());
319
- const [state, dispatch] = useReducer(reducer, initialState, (initial) => {
320
- return {
321
- ...initial,
322
- scrollbarWidth: detectScrollbarWidth(),
323
- timelineRef,
324
- scrollSnapshotRef,
325
- customSpanClassNameFunc,
326
- customSpanEventClassNameFunc,
327
- memoCacheRef,
328
- withPanel,
329
- getQuickLinks: (span) => {
330
- const cacheKey = span.spanId;
331
- const existing = quickLinksCache.current.get(cacheKey);
332
- if (existing)
333
- return existing;
334
- const value = getQuickLinksRef.current?.(span) || [];
335
- quickLinksCache.current.set(cacheKey, value);
336
- return value;
337
- },
338
- };
339
- });
340
- useEffect(() => dispatch({
341
- type: 'setWithPanel',
342
- withPanel,
343
- }), [withPanel]);
344
- const value = useMemo(() => ({ state, dispatch }), [state, dispatch]);
345
- return (_jsx(CustomPanelContext.Provider, { value: customPanelComponent, children: _jsx(TraceViewerContext.Provider, { value: value, children: children }) }));
346
- }
347
- export const useTraceViewer = () => useContext(TraceViewerContext);
348
- /**
349
- * Separate context for the custom panel component. This is intentionally
350
- * outside the useReducer state so that the panel re-renders reactively
351
- * when props like spanDetailData change.
352
- */
353
- const CustomPanelContext = createContext(null);
354
- export const useCustomPanelComponent = () => useContext(CustomPanelContext);
355
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RyYWNlLXZpZXdlci9jb250ZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBR2IsT0FBTyxFQUNMLGFBQWEsRUFDYixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sT0FBTyxDQUFDO0FBWWYsT0FBTyxFQUNMLFVBQVUsRUFDVixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBbU05RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXFCO0lBQzVDLElBQUksRUFBRTtRQUNKLFNBQVMsRUFBRSxDQUFDO1FBQ1osT0FBTyxFQUFFLENBQUM7UUFDVixRQUFRLEVBQUUsQ0FBQztRQUNYLEtBQUssRUFBRSxDQUFDO1FBQ1IsUUFBUSxFQUFFLEVBQUU7S0FDYjtJQUNELE9BQU8sRUFBRSxFQUFFO0lBQ1gsV0FBVyxFQUFFLEVBQUU7SUFDZixNQUFNLEVBQUUsRUFBRTtJQUNWLFFBQVEsRUFBRSxJQUFJO0lBQ2QsU0FBUyxFQUFFLENBQUM7SUFDWixVQUFVLEVBQUUsQ0FBQztJQUNiLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLEdBQUc7SUFDVixNQUFNLEVBQUUsR0FBRztJQUNYLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLGNBQWMsRUFBRSxHQUFHO0lBQ25CLFVBQVUsRUFBRSxHQUFHO0lBQ2YsV0FBVyxFQUFFLEdBQUc7SUFDaEIsY0FBYyxFQUFFLENBQUM7SUFDakIsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtJQUM5QixpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFB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Ozs7R0FJRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFtQixJQUFJLENBQUMsQ0FBQztBQUVqRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFxQixFQUFFLENBQzVELFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgdHlwZSB7IERpc3BhdGNoLCBNdXRhYmxlUmVmT2JqZWN0LCBSZWFjdE5vZGUsIFJlZHVjZXIgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge1xuICBHZXRRdWlja0xpbmtzLFxuICBNZW1vQ2FjaGUsXG4gIE1lbW9DYWNoZUtleSxcbiAgUXVpY2tMaW5rLFxuICBSZXNvdXJjZSxcbiAgUm9vdE5vZGUsXG4gIFNjcm9sbFNuYXBzaG90LFxuICBTcGFuTm9kZSxcbiAgVmlzaWJsZVNwYW5FdmVudCxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBNQVBfSEVJR0hULFxuICBNQVJLRVJfSEVJR0hULFxuICBST1dfSEVJR0hULFxuICBST1dfUEFERElORyxcbiAgU0VBUkNIX0dBUCxcbiAgU0VBUkNIX0hFSUdIVCxcbiAgVElNRUxJTkVfUEFERElORyxcbn0gZnJvbSAnLi91dGlsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBkZXRlY3RTY3JvbGxiYXJXaWR0aCB9IGZyb20gJy4vdXRpbC9zY3JvbGxiYXItd2lkdGgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNlVmlld2VyU3RhdGUge1xuICAvKipcbiAgICogVGhlIHJvb3Qgbm9kZSBmb3IgdGhlIHRyZWVcbiAgICovXG4gIHJvb3Q6IFJvb3ROb2RlO1xuICAvKipcbiAgICogQSBtYXAgb2Ygc3BhbklkIHRvIHNwYW4gbm9kZXNcbiAgICovXG4gIHNwYW5NYXA6IFJlY29yZDxzdHJpbmcsIFNwYW5Ob2RlPjtcbiAgLyoqXG4gICAqIEEgbWFwIG9mIHJlc291cmNlIG5hbWUgdG8gcmVzb3VyY2VcbiAgICovXG4gIHJlc291cmNlTWFwOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZVsnYXR0cmlidXRlcyddPjtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IChkZWJvdW5jZWQpIHNlYXJjaCBpbnB1dCB2YWx1ZVxuICAgKi9cbiAgZmlsdGVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3BhbiB0aGF0IGlzIGN1cnJlbnRseSBmb2N1c2VkIGFuZCB2aXNpYmxlIGluIHRoZSBwYW5lbFxuICAgKi9cbiAgc2VsZWN0ZWQ6IFNwYW5Ob2RlIHwgbnVsbDtcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHNjYWxlIG9mIHRoZSB0cmFjZS4gQXQgdGhpcyBzY2FsZSB0aGUgZW50aXJlIHRyYWNlIGlzIHZpc2libGVcbiAgICovXG4gIGJhc2VTY2FsZTogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG11bHRpcGxpZXIgb2YgdGhlIGJhc2Ugc2NhbGUgdG8gZ2V0IHRoZSBjdXJyZW50IHNjYWxlXG4gICAqL1xuICBzY2FsZVJhdGlvOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgc2NhbGUgb2YgMW1zIGluIHBpeGVsc1xuICAgKi9cbiAgc2NhbGU6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSB3aWR0aCBvZiB0aGUgZW50aXJlIHRyYWNlIHZpZXdlciBpbiBwaXhlbHNcbiAgICovXG4gIHdpZHRoOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgaGVpZ2h0IG9mIHRoZSBlbnRpcmUgdHJhY2Ugdmlld2VyIGluIHBpeGVsc1xuICAgKi9cbiAgaGVpZ2h0OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgd2lkdGggb2YgdGhlIHRpbWVsaW5lIHZpZXcgaW4gcGl4ZWxzXG4gICAqL1xuICB0aW1lbGluZVdpZHRoOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgaGVpZ2h0IG9mIHRoZSB0aW1lbGluZSB2aWV3IGluIHBpeGVsc1xuICAgKi9cbiAgdGltZWxpbmVIZWlnaHQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSB3aWR0aCBvZiB0aGUgc2lkZSBwYW5lbCBpbiBwaXhlbHNcbiAgICovXG4gIHBhbmVsV2lkdGg6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhlIHNpZGUgcGFuZWwgaW4gcGl4ZWxzXG4gICAqL1xuICBwYW5lbEhlaWdodDogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHdpZHRoIG9mIHNjcm9sbGJhcnMgb24gdGhpcyBkZXZpY2VcbiAgICovXG4gIHNjcm9sbGJhcldpZHRoOiBudW1iZXI7XG4gIC8qKlxuICAgKiBBIHJlZiBmb3IgdGhlIHRpbWVsaW5lIGVsZW1lbnRcbiAgICovXG4gIHRpbWVsaW5lUmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gIC8qKlxuICAgKiBBIHJlZiBmb3IgdXBkYXRpbmcgdGltZWxpbmUgc2Nyb2xsIHBvc2l0aW9uIGltbWVkaWF0ZWx5IGFmdGVyIGEgc2NhbGUgb3BlcmF0aW9uXG4gICAqL1xuICBzY3JvbGxTbmFwc2hvdFJlZjogTXV0YWJsZVJlZk9iamVjdDxTY3JvbGxTbmFwc2hvdCB8IHVuZGVmaW5lZD47XG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSBmb3IgdGhlIGxhc3QgdGltZSBlYWNoIG5vZGUgd2FzIG11dGF0ZWQuIFVzZWQgZm9yIG1vcmUgZWZmaWNlbnQgY29udHJvbFxuICAgKiBvZiB3aGF0IFJlYWN0IHJlLXJlbmRlcnMgYW5kIHdoZW4uXG4gICAqL1xuICBtZW1vQ2FjaGVSZWY6IE11dGFibGVSZWZPYmplY3Q8TWVtb0NhY2hlPjtcbiAgLyoqXG4gICAqIEEgY29uc3RhbnQsIHdyYXBwZWQgdmVyc2lvbiBvZiB0aGUgZ2V0UXVpY2tMaW5rcyBwcm9wZXJ0eSB3aXRoIGNhY2hpbmdcbiAgICovXG4gIGdldFF1aWNrTGlua3M6IEdldFF1aWNrTGlua3M7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwYW5lbCBpcyBiZWluZyByZW5kZXJlZCBhdHRhY2hlZCB0byB0aGUgdGltZWxpbmVcbiAgICovXG4gIHdpdGhQYW5lbDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRyYWNlIHZpZXdlciBpcyBzbWFsbCBlbm91Z2ggdGhhdCBpdCBzaG91bGQgYmUgaW4gbW9iaWxlIG1vZGVcbiAgICovXG4gIGlzTW9iaWxlOiBib29sZWFuO1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0byBwcm92aWRlIGN1c3RvbSBjbGFzcyBuYW1lcyBmb3Igc3BhbnMuXG4gICAqL1xuICBjdXN0b21TcGFuQ2xhc3NOYW1lRnVuYz86IChzcGFuOiBTcGFuTm9kZSkgPT4gc3RyaW5nO1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0byBwcm92aWRlIGN1c3RvbSBjbGFzcyBuYW1lcyBmb3Igc3BhbiBldmVudHMuXG4gICAqL1xuICBjdXN0b21TcGFuRXZlbnRDbGFzc05hbWVGdW5jPzogKGV2ZW50OiBWaXNpYmxlU3BhbkV2ZW50KSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFRyYWNlVmlld2VyQWN0aW9uID1cbiAgfCB7XG4gICAgICB0eXBlOiAnc2V0Um9vdCc7XG4gICAgICByb290OiBSb290Tm9kZTtcbiAgICAgIHNwYW5NYXA6IFJlY29yZDxzdHJpbmcsIFNwYW5Ob2RlPjtcbiAgICAgIHJlc291cmNlczogUmVzb3VyY2VbXTtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogJ3NldFNpemUnO1xuICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc2V0UGFuZWxXaWR0aCc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc2V0RmlsdGVyJztcbiAgICAgIGZpbHRlcjogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnZGVzZWxlY3QnO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc2VsZWN0JztcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdlc2NhcGUnO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAndG9nZ2xlU2VsZWN0aW9uJztcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdkZXRlY3RCYXNlU2NhbGUnO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc2V0U2NhbGUnO1xuICAgICAgc2NhbGU6IG51bWJlcjtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogJ3Jlc2V0U2NhbGUnO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc2NhbGVUb05vZGUnO1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogJ3NjYWxlVG9SYW5nZSc7XG4gICAgICB0MTogbnVtYmVyO1xuICAgICAgdDI6IG51bWJlcjtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogJ2FkanVzdFNjYWxlUmF0aW8nO1xuICAgICAgZGlyZWN0aW9uOiAtMSB8IDAgfCAxO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAndHJhY2twYWRTY2FsZSc7XG4gICAgICBkZWx0YTogbnVtYmVyO1xuICAgICAgYW5jaG9yVDogbnVtYmVyO1xuICAgICAgYW5jaG9yWDogbnVtYmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnbWluU2NhbGUnO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc2V0U2Nyb2xsU25hcHNob3QnO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgdGltZSB0aGF0IHdpbGwgcmVtYWluIHRoZSBzYW1lIGxvY2F0aW9uIGFmdGVyIHNjYWxpbmdcbiAgICAgICAqL1xuICAgICAgYW5jaG9yVDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgYW5jaG9yIHBvaW50IHJlbGF0aXZlIHRvIHRoZSB0aW1lbGluZSdzIGxlZnQgcG9zaXRpb25cbiAgICAgICAqL1xuICAgICAgYW5jaG9yWDogbnVtYmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc2V0V2l0aFBhbmVsJztcbiAgICAgIHdpdGhQYW5lbDogYm9vbGVhbjtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogJ2ZvcmNlUmVuZGVyJztcbiAgICB9XG4gIHwge1xuICAgICAgLyoqIExpa2Ugc2V0Um9vdCBidXQgcHJlc2VydmVzIHNjcm9sbCBwb3NpdGlvbiBhbmQgbWVtbyBjYWNoZSAoZm9yIGluY3JlbWVudGFsIGRhdGEgdXBkYXRlcykgKi9cbiAgICAgIHR5cGU6ICd1cGRhdGVSb290JztcbiAgICAgIHJvb3Q6IFJvb3ROb2RlO1xuICAgICAgc3Bhbk1hcDogUmVjb3JkPHN0cmluZywgU3Bhbk5vZGU+O1xuICAgICAgcmVzb3VyY2VzOiBSZXNvdXJjZVtdO1xuICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2VWaWV3ZXJDb250ZXh0UHJvcHMge1xuICBzdGF0ZTogVHJhY2VWaWV3ZXJTdGF0ZTtcbiAgZGlzcGF0Y2g6IERpc3BhdGNoPFRyYWNlVmlld2VyQWN0aW9uPjtcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZTogVHJhY2VWaWV3ZXJTdGF0ZSA9IHtcbiAgcm9vdDoge1xuICAgIHN0YXJ0VGltZTogMCxcbiAgICBlbmRUaW1lOiAxLFxuICAgIGR1cmF0aW9uOiAxLFxuICAgIGRlcHRoOiAwLFxuICAgIGNoaWxkcmVuOiBbXSxcbiAgfSxcbiAgc3Bhbk1hcDoge30sXG4gIHJlc291cmNlTWFwOiB7fSxcbiAgZmlsdGVyOiAnJyxcbiAgc2VsZWN0ZWQ6IG51bGwsXG4gIGJhc2VTY2FsZTogMSxcbiAgc2NhbGVSYXRpbzogMSxcbiAgc2NhbGU6IDEsXG4gIHdpZHRoOiA2NDAsXG4gIGhlaWdodDogNDgwLFxuICB0aW1lbGluZVdpZHRoOiA2NDAsXG4gIHRpbWVsaW5lSGVpZ2h0OiA0ODAsXG4gIHBhbmVsV2lkdGg6IDM4MCxcbiAgcGFuZWxIZWlnaHQ6IDQ4MCxcbiAgc2Nyb2xsYmFyV2lkdGg6IDAsXG4gIHRpbWVsaW5lUmVmOiB7IGN1cnJlbnQ6IG51bGwgfSxcbiAgc2Nyb2xsU25hcHNob3RSZWY6IHsgY3VycmVudDogdW5kZWZpbmVkIH0sXG4gIG1lbW9DYWNoZVJlZjogeyBjdXJyZW50OiBuZXcgTWFwKCkgfSxcbiAgZ2V0UXVpY2tMaW5rczogKCkgPT4gW10sXG4gIHdpdGhQYW5lbDogZmFsc2UsXG4gIGlzTW9iaWxlOiBmYWxzZSxcbn07XG5cbmNvbnN0IGdldE1pblNjYWxlID0gKHN0YXRlOiBUcmFjZVZpZXdlclN0YXRlKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIChzdGF0ZS50aW1lbGluZVdpZHRoIC0gc3RhdGUuc2Nyb2xsYmFyV2lkdGgpIC8gc3RhdGUucm9vdC5kdXJhdGlvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBUcmFjZVZpZXdlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFRyYWNlVmlld2VyQ29udGV4dFByb3BzPih7XG4gIHN0YXRlOiBpbml0aWFsU3RhdGUsXG4gIGRpc3BhdGNoOiAoKSA9PiB7XG4gICAgLy8gbm9vcFxuICB9LFxufSk7XG5UcmFjZVZpZXdlckNvbnRleHQuZGlzcGxheU5hbWUgPSAnVHJhY2VWaWV3ZXJDb250ZXh0JztcblxuY29uc3QgcmVkdWNlcjogUmVkdWNlcjxUcmFjZVZpZXdlclN0YXRlLCBUcmFjZVZpZXdlckFjdGlvbj4gPSAoXG4gIHN0YXRlLFxuICBhY3Rpb25cbikgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnc2V0Um9vdCc6XG4gICAgICBzdGF0ZS5zY3JvbGxTbmFwc2hvdFJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgc3RhdGUubWVtb0NhY2hlUmVmLmN1cnJlbnQuY2xlYXIoKTtcbiAgICAgIHJldHVybiByZWR1Y2VyKFxuICAgICAgICB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgcm9vdDogYWN0aW9uLnJvb3QsXG4gICAgICAgICAgc3Bhbk1hcDogYWN0aW9uLnNwYW5NYXAsXG4gICAgICAgICAgcmVzb3VyY2VNYXA6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgIGFjdGlvbi5yZXNvdXJjZXMubWFwKCh7IG5hbWUsIGF0dHJpYnV0ZXMgfSkgPT4gW25hbWUsIGF0dHJpYnV0ZXNdKVxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnZGV0ZWN0QmFzZVNjYWxlJyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICBjYXNlICdzZXRTaXplJzoge1xuICAgICAgY29uc3QgbG93ZXJIZWlnaHQgPVxuICAgICAgICBhY3Rpb24uaGVpZ2h0IC0gTUFQX0hFSUdIVCAtIFNFQVJDSF9IRUlHSFQgLSAzICogU0VBUkNIX0dBUDtcblxuICAgICAgY29uc3QgaXNNb2JpbGUgPSBzdGF0ZS53aXRoUGFuZWwgJiYgYWN0aW9uLndpZHRoIDw9IDc2ODtcblxuICAgICAgbGV0IG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgd2lkdGg6IGFjdGlvbi53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBhY3Rpb24uaGVpZ2h0LFxuICAgICAgICB0aW1lbGluZVdpZHRoOlxuICAgICAgICAgIGFjdGlvbi53aWR0aCAtXG4gICAgICAgICAgTnVtYmVyKEJvb2xlYW4oc3RhdGUuc2VsZWN0ZWQgJiYgc3RhdGUud2l0aFBhbmVsICYmICFpc01vYmlsZSkpICpcbiAgICAgICAgICAgIHN0YXRlLnBhbmVsV2lkdGgsXG4gICAgICAgIHRpbWVsaW5lSGVpZ2h0OiBsb3dlckhlaWdodCxcbiAgICAgICAgcGFuZWxIZWlnaHQ6IGxvd2VySGVpZ2h0LFxuICAgICAgICBpc01vYmlsZSxcbiAgICAgIH07XG5cbiAgICAgIGlmIChuZXdTdGF0ZS53aWR0aCAhPT0gc3RhdGUud2lkdGgpIHtcbiAgICAgICAgbmV3U3RhdGUgPSByZWR1Y2VyKG5ld1N0YXRlLCB7XG4gICAgICAgICAgdHlwZTogJ2RldGVjdEJhc2VTY2FsZScsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgfVxuICAgIGNhc2UgJ3NldFBhbmVsV2lkdGgnOiB7XG4gICAgICBjb25zdCBwYW5lbFdpZHRoID0gTWF0aC5tYXgoXG4gICAgICAgIDI0MCxcbiAgICAgICAgTWF0aC5taW4oYWN0aW9uLndpZHRoLCBzdGF0ZS53aWR0aCAtIDI0MClcbiAgICAgICk7XG4gICAgICBjb25zdCB0aW1lbGluZVdpZHRoID1cbiAgICAgICAgc3RhdGUud2l0aFBhbmVsICYmIHN0YXRlLnNlbGVjdGVkICYmICFzdGF0ZS5pc01vYmlsZVxuICAgICAgICAgID8gc3RhdGUud2lkdGggLSBwYW5lbFdpZHRoXG4gICAgICAgICAgOiBzdGF0ZS53aWR0aDtcbiAgICAgIHJldHVybiByZWR1Y2VyKFxuICAgICAgICB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdGltZWxpbmVXaWR0aCxcbiAgICAgICAgICBwYW5lbFdpZHRoLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2RldGVjdEJhc2VTY2FsZScsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGNhc2UgJ3NldEZpbHRlcic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiBhY3Rpb24uZmlsdGVyLFxuICAgICAgfTtcbiAgICBjYXNlICdkZXNlbGVjdCc6XG4gICAgICByZXR1cm4gcmVkdWNlcihcbiAgICAgICAge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHNlbGVjdGVkOiBudWxsLFxuICAgICAgICAgIHRpbWVsaW5lV2lkdGg6IHN0YXRlLndpZHRoLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2RldGVjdEJhc2VTY2FsZScsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgY29uc3Qgbm9kZSA9IHN0YXRlLnNwYW5NYXBbYWN0aW9uLmlkXTtcbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWR1Y2VyKFxuICAgICAgICB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgc2VsZWN0ZWQ6IG5vZGUsXG4gICAgICAgICAgdGltZWxpbmVXaWR0aDpcbiAgICAgICAgICAgIHN0YXRlLndpZHRoIC1cbiAgICAgICAgICAgIChzdGF0ZS53aXRoUGFuZWwgJiYgIXN0YXRlLmlzTW9iaWxlID8gc3RhdGUucGFuZWxXaWR0aCA6IDApLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2RldGVjdEJhc2VTY2FsZScsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGNhc2UgJ2VzY2FwZSc6IHtcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVkdWNlcihzdGF0ZSwge1xuICAgICAgICAgIHR5cGU6ICdkZXNlbGVjdCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlZHVjZXIoc3RhdGUsIHtcbiAgICAgICAgdHlwZTogJ3Jlc2V0U2NhbGUnLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNhc2UgJ3RvZ2dsZVNlbGVjdGlvbic6IHtcbiAgICAgIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuICAgICAgaWYgKHN0YXRlLnNlbGVjdGVkKSB7XG4gICAgICAgIG5ld1N0YXRlID0gcmVkdWNlcihuZXdTdGF0ZSwge1xuICAgICAgICAgIHR5cGU6ICdkZXNlbGVjdCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXRlLnNlbGVjdGVkPy5zcGFuLnNwYW5JZCA9PT0gYWN0aW9uLmlkKSB7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWR1Y2VyKG5ld1N0YXRlLCB7XG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNhc2UgJ2RldGVjdEJhc2VTY2FsZSc6IHtcbiAgICAgIGNvbnN0IGJhc2VTY2FsZSA9XG4gICAgICAgIChzdGF0ZS50aW1lbGluZVdpZHRoIC0gc3RhdGUuc2Nyb2xsYmFyV2lkdGgpIC8gc3RhdGUucm9vdC5kdXJhdGlvbjtcblxuICAgICAgcmV0dXJuIHJlZHVjZXIoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBiYXNlU2NhbGUsXG4gICAgICAgICAgc2NhbGU6IGJhc2VTY2FsZSAqIHN0YXRlLnNjYWxlUmF0aW8sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnbWluU2NhbGUnLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICdzZXRTY2FsZSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2NhbGVSYXRpbzogYWN0aW9uLnNjYWxlLFxuICAgICAgICBzY2FsZTogc3RhdGUuYmFzZVNjYWxlICogYWN0aW9uLnNjYWxlLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNjYWxlJzpcbiAgICAgIHJldHVybiByZWR1Y2VyKHN0YXRlLCB7XG4gICAgICAgIHR5cGU6ICdzY2FsZVRvUmFuZ2UnLFxuICAgICAgICB0MTogc3RhdGUucm9vdC5zdGFydFRpbWUsXG4gICAgICAgIHQyOiBzdGF0ZS5yb290LmVuZFRpbWUsXG4gICAgICB9KTtcbiAgICBjYXNlICdzY2FsZVRvTm9kZSc6IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBzdGF0ZS5zcGFuTWFwW2FjdGlvbi5pZF07XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlZHVjZXIoXG4gICAgICAgIHJlZHVjZXIoc3RhdGUsIHtcbiAgICAgICAgICB0eXBlOiAnc2V0U2NhbGUnLFxuICAgICAgICAgIHNjYWxlOlxuICAgICAgICAgICAgKHN0YXRlLndpZHRoIC1cbiAgICAgICAgICAgICAgc3RhdGUuc2Nyb2xsYmFyV2lkdGggLVxuICAgICAgICAgICAgICAoc3RhdGUud2l0aFBhbmVsICYmICFzdGF0ZS5pc01vYmlsZSA/IHN0YXRlLnBhbmVsV2lkdGggOiAwKSkgL1xuICAgICAgICAgICAgbm9kZS5kdXJhdGlvbiAvXG4gICAgICAgICAgICBzdGF0ZS5iYXNlU2NhbGUsXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3NldFNjcm9sbFNuYXBzaG90JyxcbiAgICAgICAgICBhbmNob3JUOiBub2RlLnN0YXJ0VGltZSAtIHN0YXRlLnJvb3Quc3RhcnRUaW1lLFxuICAgICAgICAgIGFuY2hvclg6IDAsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGNhc2UgJ3NjYWxlVG9SYW5nZSc6IHtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gTWF0aC5hYnMoYWN0aW9uLnQxIC0gYWN0aW9uLnQyKTtcblxuICAgICAgcmV0dXJuIHJlZHVjZXIoXG4gICAgICAgIHJlZHVjZXIoc3RhdGUsIHtcbiAgICAgICAgICB0eXBlOiAnc2V0U2NhbGUnLFxuICAgICAgICAgIHNjYWxlOlxuICAgICAgICAgICAgKHN0YXRlLndpZHRoIC1cbiAgICAgICAgICAgICAgc3RhdGUuc2Nyb2xsYmFyV2lkdGggLVxuICAgICAgICAgICAgICAoc3RhdGUuc2VsZWN0ZWQgJiYgc3RhdGUud2l0aFBhbmVsID8gc3RhdGUucGFuZWxXaWR0aCA6IDApKSAvXG4gICAgICAgICAgICBkdXJhdGlvbiAvXG4gICAgICAgICAgICBzdGF0ZS5iYXNlU2NhbGUsXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3NldFNjcm9sbFNuYXBzaG90JyxcbiAgICAgICAgICBhbmNob3JUOiBNYXRoLm1pbihhY3Rpb24udDEsIGFjdGlvbi50MikgLSBzdGF0ZS5yb290LnN0YXJ0VGltZSxcbiAgICAgICAgICBhbmNob3JYOiAwLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICdhZGp1c3RTY2FsZVJhdGlvJzoge1xuICAgICAgbGV0IHsgc2NhbGVSYXRpbyB9ID0gc3RhdGU7XG4gICAgICBzd2l0Y2ggKGFjdGlvbi5kaXJlY3Rpb24pIHtcbiAgICAgICAgY2FzZSAtMTpcbiAgICAgICAgICBzY2FsZVJhdGlvICo9IDAuODtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHNjYWxlUmF0aW8gKj0gMS4yNTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBzY2FsZVJhdGlvID0gMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY29uc3QgJHRpbWVsaW5lID0gc3RhdGUudGltZWxpbmVSZWYuY3VycmVudDtcbiAgICAgIGlmICghJHRpbWVsaW5lKSB7XG4gICAgICAgIGNvbnNvbGUud2FybigndGltZWxpbmVSZWYgaXMgbnVsbCcpO1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgY2xpZW50V2lkdGgsIHNjcm9sbExlZnQgfSA9ICR0aW1lbGluZTtcblxuICAgICAgcmV0dXJuIHJlZHVjZXIoXG4gICAgICAgIHJlZHVjZXIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBzY2FsZVJhdGlvLFxuICAgICAgICAgICAgc2NhbGU6IHN0YXRlLmJhc2VTY2FsZSAqIHNjYWxlUmF0aW8sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnbWluU2NhbGUnLFxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdzZXRTY3JvbGxTbmFwc2hvdCcsXG4gICAgICAgICAgYW5jaG9yVDogKHNjcm9sbExlZnQgKyBjbGllbnRXaWR0aCAqIDAuNSkgLyBzdGF0ZS5zY2FsZSxcbiAgICAgICAgICBhbmNob3JYOiBjbGllbnRXaWR0aCAqIDAuNSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgY2FzZSAndHJhY2twYWRTY2FsZSc6IHtcbiAgICAgIGNvbnN0IG1pblNjYWxlUmF0aW8gPSBnZXRNaW5TY2FsZShzdGF0ZSkgLyBzdGF0ZS5iYXNlU2NhbGU7XG4gICAgICBjb25zdCBzY2FsZVJhdGlvID0gTWF0aC5tYXgoXG4gICAgICAgIG1pblNjYWxlUmF0aW8sXG4gICAgICAgIHN0YXRlLnNjYWxlUmF0aW8gKlxuICAgICAgICAgICgxICtcbiAgICAgICAgICAgIDAuMiAqIE1hdGguc2lnbihhY3Rpb24uZGVsdGEpICogTWF0aC5zcXJ0KE1hdGguYWJzKGFjdGlvbi5kZWx0YSkpKVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHJlZHVjZXIoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBzY2FsZVJhdGlvLFxuICAgICAgICAgIHNjYWxlOiBzdGF0ZS5iYXNlU2NhbGUgKiBzY2FsZVJhdGlvLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3NldFNjcm9sbFNuYXBzaG90JyxcbiAgICAgICAgICBhbmNob3JUOiBhY3Rpb24uYW5jaG9yVCxcbiAgICAgICAgICBhbmNob3JYOiBhY3Rpb24uYW5jaG9yWCxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgY2FzZSAnbWluU2NhbGUnOiB7XG4gICAgICBjb25zdCBtaW5TY2FsZSA9IGdldE1pblNjYWxlKHN0YXRlKTtcbiAgICAgIGlmIChzdGF0ZS5zY2FsZSA+PSBtaW5TY2FsZSkgcmV0dXJuIHN0YXRlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNjYWxlOiBtaW5TY2FsZSxcbiAgICAgICAgc2NhbGVSYXRpbzogbWluU2NhbGUgLyBzdGF0ZS5iYXNlU2NhbGUsXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlICdzZXRTY3JvbGxTbmFwc2hvdCc6IHtcbiAgICAgIGNvbnN0ICR0aW1lbGluZSA9IHN0YXRlLnRpbWVsaW5lUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoISR0aW1lbGluZSkgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB7IGFuY2hvclQsIGFuY2hvclggfSA9IGFjdGlvbjtcblxuICAgICAgY29uc3Qgc2Nyb2xsTGVmdCA9IGFuY2hvclQgKiBzdGF0ZS5zY2FsZSAtIGFuY2hvclg7XG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCB9ID0gJHRpbWVsaW5lO1xuICAgICAgY29uc3Qgc3RhcnRSb3cgPVxuICAgICAgICAoc2Nyb2xsVG9wIC0gTUFSS0VSX0hFSUdIVCAtIFRJTUVMSU5FX1BBRERJTkcpIC9cbiAgICAgICAgKFJPV19IRUlHSFQgKyBST1dfUEFERElORyk7XG4gICAgICBjb25zdCBlbmRSb3cgPVxuICAgICAgICBzdGFydFJvdyArIE1hdGguY2VpbChzdGF0ZS50aW1lbGluZUhlaWdodCAvIChST1dfSEVJR0hUICsgUk9XX1BBRERJTkcpKTtcblxuICAgICAgc3RhdGUuc2Nyb2xsU25hcHNob3RSZWYuY3VycmVudCA9IHtcbiAgICAgICAgYW5jaG9yVCxcbiAgICAgICAgYW5jaG9yWCxcbiAgICAgICAgc2Nyb2xsTGVmdCxcbiAgICAgICAgc2Nyb2xsVG9wLFxuICAgICAgICBzdGFydFRpbWU6IHN0YXRlLnJvb3Quc3RhcnRUaW1lICsgc2Nyb2xsTGVmdCAvIHN0YXRlLnNjYWxlLFxuICAgICAgICBlbmRUaW1lOlxuICAgICAgICAgIHN0YXRlLnJvb3Quc3RhcnRUaW1lICtcbiAgICAgICAgICAoc2Nyb2xsTGVmdCArIHN0YXRlLnRpbWVsaW5lV2lkdGgpIC8gc3RhdGUuc2NhbGUsXG4gICAgICAgIHN0YXJ0Um93LFxuICAgICAgICBlbmRSb3csXG4gICAgICAgIHNjYWxlOiBzdGF0ZS5zY2FsZSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gICAgY2FzZSAnc2V0V2l0aFBhbmVsJzoge1xuICAgICAgaWYgKHN0YXRlLndpdGhQYW5lbCA9PT0gYWN0aW9uLndpdGhQYW5lbCkgcmV0dXJuIHN0YXRlO1xuICAgICAgY29uc3QgdGltZWxpbmVXaWR0aCA9XG4gICAgICAgIGFjdGlvbi53aXRoUGFuZWwgJiYgc3RhdGUuc2VsZWN0ZWQgJiYgIXN0YXRlLmlzTW9iaWxlXG4gICAgICAgICAgPyBzdGF0ZS53aWR0aCAtIHN0YXRlLnBhbmVsV2lkdGhcbiAgICAgICAgICA6IHN0YXRlLndpZHRoO1xuICAgICAgcmV0dXJuIHJlZHVjZXIoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB3aXRoUGFuZWw6IGFjdGlvbi53aXRoUGFuZWwsXG4gICAgICAgICAgdGltZWxpbmVXaWR0aCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdkZXRlY3RCYXNlU2NhbGUnLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICdmb3JjZVJlbmRlcic6XG4gICAgICBzdGF0ZS5tZW1vQ2FjaGVSZWYuY3VycmVudC5zZXQoJycsIHt9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgfTtcbiAgICBjYXNlICd1cGRhdGVSb290JzpcbiAgICAgIC8vIEluY3JlbWVudGFsIHVwZGF0ZTogcHJlc2VydmUgc2Nyb2xsIHNuYXBzaG90IGFuZCBvbmx5IGludmFsaWRhdGVcbiAgICAgIC8vIG1lbW8gY2FjaGUgZm9yIHNwYW5zIHdob3NlIGRhdGEgbWF5IGhhdmUgY2hhbmdlZFxuICAgICAgc3RhdGUubWVtb0NhY2hlUmVmLmN1cnJlbnQuc2V0KCcnLCB7fSk7XG4gICAgICByZXR1cm4gcmVkdWNlcihcbiAgICAgICAge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHJvb3Q6IGFjdGlvbi5yb290LFxuICAgICAgICAgIHNwYW5NYXA6IGFjdGlvbi5zcGFuTWFwLFxuICAgICAgICAgIHJlc291cmNlTWFwOiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICBhY3Rpb24ucmVzb3VyY2VzLm1hcCgoeyBuYW1lLCBhdHRyaWJ1dGVzIH0pID0+IFtuYW1lLCBhdHRyaWJ1dGVzXSlcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2RldGVjdEJhc2VTY2FsZScsXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBUcmFjZVZpZXdlckNvbnRleHRQcm92aWRlcih7XG4gIGdldFF1aWNrTGlua3MsXG4gIHdpdGhQYW5lbCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgY3VzdG9tU3BhbkNsYXNzTmFtZUZ1bmMsXG4gIGN1c3RvbVNwYW5FdmVudENsYXNzTmFtZUZ1bmMsXG4gIGN1c3RvbVBhbmVsQ29tcG9uZW50ID0gbnVsbCxcbn06IHtcbiAgZ2V0UXVpY2tMaW5rcz86IEdldFF1aWNrTGlua3M7XG4gIHdpdGhQYW5lbD86IGJvb2xlYW47XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGN1c3RvbVNwYW5DbGFzc05hbWVGdW5jPzogKHNwYW46IFNwYW5Ob2RlKSA9PiBzdHJpbmc7XG4gIGN1c3RvbVNwYW5FdmVudENsYXNzTmFtZUZ1bmM/OiAoZXZlbnQ6IFZpc2libGVTcGFuRXZlbnQpID0+IHN0cmluZztcbiAgY3VzdG9tUGFuZWxDb21wb25lbnQ/OiBSZWFjdE5vZGU7XG59KTogUmVhY3ROb2RlIHtcbiAgY29uc3QgdGltZWxpbmVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBzY3JvbGxTbmFwc2hvdFJlZiA9IHVzZVJlZjxTY3JvbGxTbmFwc2hvdD4odW5kZWZpbmVkKTtcbiAgY29uc3QgZ2V0UXVpY2tMaW5rc1JlZiA9IHVzZVJlZihnZXRRdWlja0xpbmtzKTtcbiAgZ2V0UXVpY2tMaW5rc1JlZi5jdXJyZW50ID0gZ2V0UXVpY2tMaW5rcztcbiAgY29uc3QgbWVtb0NhY2hlUmVmID0gdXNlUmVmKG5ldyBNYXA8c3RyaW5nLCBNZW1vQ2FjaGVLZXk+KCkpO1xuICBjb25zdCBxdWlja0xpbmtzQ2FjaGUgPSB1c2VSZWYobmV3IE1hcDxzdHJpbmcsIFF1aWNrTGlua1tdPigpKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSwgKGluaXRpYWwpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uaW5pdGlhbCxcbiAgICAgIHNjcm9sbGJhcldpZHRoOiBkZXRlY3RTY3JvbGxiYXJXaWR0aCgpLFxuICAgICAgdGltZWxpbmVSZWYsXG4gICAgICBzY3JvbGxTbmFwc2hvdFJlZixcbiAgICAgIGN1c3RvbVNwYW5DbGFzc05hbWVGdW5jLFxuICAgICAgY3VzdG9tU3BhbkV2ZW50Q2xhc3NOYW1lRnVuYyxcbiAgICAgIG1lbW9DYWNoZVJlZixcbiAgICAgIHdpdGhQYW5lbCxcbiAgICAgIGdldFF1aWNrTGlua3M6IChzcGFuKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gc3Bhbi5zcGFuSWQ7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcXVpY2tMaW5rc0NhY2hlLmN1cnJlbnQuZ2V0KGNhY2hlS2V5KTtcbiAgICAgICAgaWYgKGV4aXN0aW5nKSByZXR1cm4gZXhpc3Rpbmc7XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRRdWlja0xpbmtzUmVmLmN1cnJlbnQ/LihzcGFuKSB8fCBbXTtcbiAgICAgICAgcXVpY2tMaW5rc0NhY2hlLmN1cnJlbnQuc2V0KGNhY2hlS2V5LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6ICdzZXRXaXRoUGFuZWwnLFxuICAgICAgICB3aXRoUGFuZWwsXG4gICAgICB9KSxcbiAgICBbd2l0aFBhbmVsXVxuICApO1xuXG4gIGNvbnN0IHZhbHVlOiBUcmFjZVZpZXdlckNvbnRleHRQcm9wcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHsgc3RhdGUsIGRpc3BhdGNoIH0pLFxuICAgIFtzdGF0ZSwgZGlzcGF0Y2hdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tUGFuZWxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjdXN0b21QYW5lbENvbXBvbmVudH0+XG4gICAgICA8VHJhY2VWaWV3ZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvVHJhY2VWaWV3ZXJDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tUGFuZWxDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufVxuXG5leHBvcnQgY29uc3QgdXNlVHJhY2VWaWV3ZXIgPSAoKTogVHJhY2VWaWV3ZXJDb250ZXh0UHJvcHMgPT5cbiAgdXNlQ29udGV4dChUcmFjZVZpZXdlckNvbnRleHQpO1xuXG4vKipcbiAqIFNlcGFyYXRlIGNvbnRleHQgZm9yIHRoZSBjdXN0b20gcGFuZWwgY29tcG9uZW50LiBUaGlzIGlzIGludGVudGlvbmFsbHlcbiAqIG91dHNpZGUgdGhlIHVzZVJlZHVjZXIgc3RhdGUgc28gdGhhdCB0aGUgcGFuZWwgcmUtcmVuZGVycyByZWFjdGl2ZWx5XG4gKiB3aGVuIHByb3BzIGxpa2Ugc3BhbkRldGFpbERhdGEgY2hhbmdlLlxuICovXG5jb25zdCBDdXN0b21QYW5lbENvbnRleHQgPSBjcmVhdGVDb250ZXh0PFJlYWN0Tm9kZSB8IG51bGw+KG51bGwpO1xuXG5leHBvcnQgY29uc3QgdXNlQ3VzdG9tUGFuZWxDb21wb25lbnQgPSAoKTogUmVhY3ROb2RlIHwgbnVsbCA9PlxuICB1c2VDb250ZXh0KEN1c3RvbVBhbmVsQ29udGV4dCk7XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RyYWNlLXZpZXdlci9jb250ZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBRWIsT0FBTyxFQUNMLGFBQWEsRUFFYixXQUFXLEVBQ1gsVUFBVSxFQUNWLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxHQUNULE1BQU0sT0FBTyxDQUFDO0FBWWYsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQWdDLElBQUksQ0FBQyxDQUFDO0FBQzdFLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQztBQUVwRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsRUFDakMsS0FBSyxFQUNMLFFBQVEsR0FJVDtJQUNDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLEdBQUcsUUFBUSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUV0RSxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsZUFBZSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUMvQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQ3hDLENBQUM7WUFDRixJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFWixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3BFLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRTFCLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO1FBQ25ELGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ3ZDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQ25CLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDTCxZQUFZO1FBQ1osVUFBVTtRQUNWLEtBQUs7UUFDTCxhQUFhO1FBQ2IsZUFBZTtLQUNoQixDQUFDLEVBQ0YsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQ2xFLENBQUM7SUFFRixPQUFPLENBQ0wsS0FBQyxpQkFBaUIsQ0FBQyxRQUFRLElBQUMsS0FBSyxFQUFFLEtBQUssWUFDckMsUUFBUSxHQUNrQixDQUM5QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUEyQixFQUFFO0lBQ3hELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVDb250ZXh0LFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUNvbnRleHQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgU3BhbiB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgQWN0aXZlU3BhbkNvbnRleHRWYWx1ZSB7XG4gIGFjdGl2ZVNwYW5JZDogc3RyaW5nIHwgbnVsbDtcbiAgYWN0aXZlU3BhbjogU3BhbiB8IG51bGw7XG4gIC8qKiBUaGUgZnVsbCBzcGFuIGxpc3QgdGhlIHNlbGVjdGlvbiBsaXZlcyBpbiAob3JkZXJlZCBhcyByZW5kZXJlZCkuICovXG4gIHNwYW5zOiBTcGFuW107XG4gIHNldEFjdGl2ZVNwYW46IChzcGFuSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgY2xlYXJBY3RpdmVTcGFuOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBBY3RpdmVTcGFuQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8QWN0aXZlU3BhbkNvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuQWN0aXZlU3BhbkNvbnRleHQuZGlzcGxheU5hbWUgPSAnQWN0aXZlU3BhbkNvbnRleHQnO1xuXG5leHBvcnQgZnVuY3Rpb24gQWN0aXZlU3BhblByb3ZpZGVyKHtcbiAgc3BhbnMsXG4gIGNoaWxkcmVuLFxufToge1xuICBzcGFuczogU3BhbltdO1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufSkge1xuICBjb25zdCBbYWN0aXZlU3BhbklkLCBzZXRBY3RpdmVTcGFuSWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRBY3RpdmVTcGFuSWQoKGN1cnJlbnRTcGFuSWQpID0+IHtcbiAgICAgIGlmICghY3VycmVudFNwYW5JZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFzQ3VycmVudFNwYW4gPSBzcGFucy5zb21lKFxuICAgICAgICAoc3BhbikgPT4gc3Bhbi5zcGFuSWQgPT09IGN1cnJlbnRTcGFuSWRcbiAgICAgICk7XG4gICAgICBpZiAoaGFzQ3VycmVudFNwYW4pIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRTcGFuSWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICB9LCBbc3BhbnNdKTtcblxuICBjb25zdCBhY3RpdmVTcGFuID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFhY3RpdmVTcGFuSWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBzcGFucy5maW5kKChzcGFuKSA9PiBzcGFuLnNwYW5JZCA9PT0gYWN0aXZlU3BhbklkKSA/PyBudWxsO1xuICB9LCBbYWN0aXZlU3BhbklkLCBzcGFuc10pO1xuXG4gIGNvbnN0IHNldEFjdGl2ZVNwYW4gPSB1c2VDYWxsYmFjaygoc3BhbklkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRBY3RpdmVTcGFuSWQoc3BhbklkKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGNsZWFyQWN0aXZlU3BhbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRBY3RpdmVTcGFuSWQobnVsbCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW88QWN0aXZlU3BhbkNvbnRleHRWYWx1ZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIGFjdGl2ZVNwYW5JZCxcbiAgICAgIGFjdGl2ZVNwYW4sXG4gICAgICBzcGFucyxcbiAgICAgIHNldEFjdGl2ZVNwYW4sXG4gICAgICBjbGVhckFjdGl2ZVNwYW4sXG4gICAgfSksXG4gICAgW2FjdGl2ZVNwYW5JZCwgYWN0aXZlU3Bhbiwgc3BhbnMsIHNldEFjdGl2ZVNwYW4sIGNsZWFyQWN0aXZlU3Bhbl1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxBY3RpdmVTcGFuQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQWN0aXZlU3BhbkNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59XG5cbmV4cG9ydCBjb25zdCB1c2VBY3RpdmVTcGFuID0gKCk6IEFjdGl2ZVNwYW5Db250ZXh0VmFsdWUgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChBY3RpdmVTcGFuQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlQWN0aXZlU3BhbiBtdXN0IGJlIHVzZWQgd2l0aGluIEFjdGl2ZVNwYW5Qcm92aWRlcicpO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/components/trace-viewer/icons.tsx"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY,+CAgBjB,CAAC;AAEF,QAAA,MAAM,WAAW,+CAkBhB,CAAC;AAEF,QAAA,MAAM,SAAS,+CAkBd,CAAC;AAEF,QAAA,MAAM,eAAe,+CAkBpB,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ const WorkflowIcon = () => {
3
+ return (_jsx("svg", { "data-testid": "geist-icon", height: "16", strokeLinejoin: "round", style: { color: 'currentColor' }, viewBox: "0 0 16 16", width: "16", children: _jsx("path", { d: "M5.75 7L6.4209 7.33594L4.85254 10.4717C5.38789 10.771 5.75 11.3431 5.75 12V14C5.75 14.9665 4.96648 15.75 4 15.75H2C1.03352 15.75 0.25 14.9665 0.25 14V12C0.25 11.0335 1.03352 10.25 2 10.25H3.28711L5.0791 6.66504L5.75 7ZM14 10.25C14.9665 10.25 15.75 11.0335 15.75 12V14C15.75 14.9665 14.9665 15.75 14 15.75H12C11.1185 15.75 10.3909 15.098 10.2695 14.25H7V12.75H10.25V12C10.25 11.0335 11.0335 10.25 12 10.25H14ZM2 11.75C1.86192 11.75 1.75 11.8619 1.75 12V14C1.75 14.1381 1.86192 14.25 2 14.25H4C4.13808 14.25 4.25 14.1381 4.25 14V12C4.25 11.8619 4.13808 11.75 4 11.75H2ZM12 11.75C11.8619 11.75 11.75 11.8619 11.75 12V14C11.75 14.1381 11.8619 14.25 12 14.25H14C14.1381 14.25 14.25 14.1381 14.25 14V12C14.25 11.8619 14.1381 11.75 14 11.75H12ZM9 0.25C9.96649 0.25 10.75 1.03351 10.75 2V4C10.75 4.44642 10.5808 4.85197 10.3057 5.16113L12.2041 8.6416L10.8877 9.36035L8.91895 5.75H7C6.03351 5.75 5.25 4.96649 5.25 4V2C5.25 1.03351 6.03351 0.25 7 0.25H9ZM7 1.75C6.86193 1.75 6.75 1.86193 6.75 2V4C6.75 4.13807 6.86193 4.25 7 4.25H9C9.13807 4.25 9.25 4.13807 9.25 4V2C9.25 1.86193 9.13807 1.75 9 1.75H7Z", fill: "currentColor" }) }));
4
+ };
5
+ const WebhookIcon = () => {
6
+ return (_jsx("svg", { "data-testid": "geist-icon", height: "16", strokeLinejoin: "round", viewBox: "0 0 16 16", width: "16", style: { color: 'currentColor' }, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M5.8349 3.24994C5.14454 4.44567 5.55423 5.97464 6.74996 6.665L7.39465 7.03721L7.02726 7.68466L5.14599 11C5.21289 11.1531 5.25 11.3222 5.25 11.5C5.25 12.1904 4.69036 12.75 4 12.75C3.30964 12.75 2.75 12.1904 2.75 11.5C2.75 10.8634 3.22584 10.338 3.84123 10.26L5.38944 7.5316C3.95909 6.30274 3.55857 4.19264 4.53586 2.49994C5.64043 0.586765 8.08679 -0.0687357 9.99996 1.03583C11.836 2.09584 12.5137 4.39156 11.5892 6.26591L10.4949 4.33754C10.4418 3.53274 10.0009 2.76843 9.24996 2.33487C8.05423 1.64452 6.52525 2.0542 5.8349 3.24994ZM9.146 4.99996C9.21289 4.84686 9.25 4.67776 9.25 4.5C9.25 3.80964 8.69036 3.25 8 3.25C7.30964 3.25 6.75 3.80964 6.75 4.5C6.75 5.13659 7.22586 5.66203 7.84127 5.74002L9.72266 9.05556L10.0956 9.71274L10.75 9.33493C11.9457 8.64458 13.4747 9.05427 14.165 10.25C14.8554 11.4457 14.4457 12.9747 13.25 13.6651C12.5047 14.0953 11.63 14.0983 10.9096 13.75H8.69252C9.85895 15.4685 12.1727 16.0191 14 14.9641C15.9131 13.8595 16.5686 11.4132 15.4641 9.5C14.4886 7.81038 12.4665 7.10169 10.6895 7.71998L9.146 4.99996ZM13.25 11.5C13.25 12.1904 12.6904 12.75 12 12.75C11.591 12.75 11.228 12.5536 10.9999 12.25H7.9298C7.57875 14.1006 5.95279 15.5 4 15.5C1.79086 15.5 0 13.7091 0 11.5C0 9.40018 1.61801 7.67826 3.67529 7.51299L2.58098 9.44147C1.92792 9.89251 1.5 10.6463 1.5 11.5C1.5 12.8807 2.61929 14 4 14C5.38071 14 6.5 12.8807 6.5 11.5V10.75H7.25H10.9999C11.228 10.4464 11.591 10.25 12 10.25C12.6904 10.25 13.25 10.8096 13.25 11.5Z", fill: "currentColor" }) }));
7
+ };
8
+ const SleepIcon = () => {
9
+ return (_jsx("svg", { "data-testid": "geist-icon", height: "16", strokeLinejoin: "round", viewBox: "0 0 16 16", width: "16", style: { color: 'currentColor' }, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M7.25 1.25V2.03971C5.87928 2.18571 4.62678 2.72736 3.6089 3.54824L3.03033 2.96967L2.5 2.43934L1.43934 3.5L1.96967 4.03033L2.54824 4.6089C1.57979 5.80976 1 7.33717 1 9C1 12.866 4.13401 16 8 16C11.866 16 15 12.866 15 9C15 7.33717 14.4202 5.80976 13.4518 4.6089L14.0303 4.03033L14.5607 3.5L13.5 2.43934L12.9697 2.96967L12.3911 3.54824C11.3732 2.72736 10.1207 2.18571 8.75 2.03971V1.25H9.25H10V-0.25H9.25H8.75H7.25H6.75H6V1.25H6.75H7.25ZM2.5 9C2.5 5.96243 4.96243 3.5 8 3.5C11.0376 3.5 13.5 5.96243 13.5 9C13.5 12.0376 11.0376 14.5 8 14.5C4.96243 14.5 2.5 12.0376 2.5 9ZM8.75 6.75V6H7.25V6.75V9V9.75H8.75V9V6.75Z", fill: "currentColor" }) }));
10
+ };
11
+ const StepForwardIcon = () => {
12
+ return (_jsx("svg", { "data-testid": "geist-icon", height: "16", strokeLinejoin: "round", viewBox: "0 0 16 16", width: "16", style: { color: 'currentColor' }, children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.21969 12.5303L4.75002 13.0607L5.81068 12L5.28035 11.4697L1.81068 7.99999L5.28035 4.53032L5.81068 3.99999L4.75002 2.93933L4.21969 3.46966L0.39647 7.29289C0.00594562 7.68341 0.00594562 8.31658 0.39647 8.7071L4.21969 12.5303ZM11.7804 12.5303L11.25 13.0607L10.1894 12L10.7197 11.4697L14.1894 7.99999L10.7197 4.53032L10.1894 3.99999L11.25 2.93933L11.7804 3.46966L15.6036 7.29289C15.9941 7.68341 15.9941 8.31658 15.6036 8.7071L11.7804 12.5303Z", fill: "currentColor" }) }));
13
+ };
14
+ export { WorkflowIcon, WebhookIcon, SleepIcon, StepForwardIcon };
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy90cmFjZS12aWV3ZXIvaWNvbnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLFlBQVksR0FBRyxHQUFHLEVBQUU7SUFDeEIsT0FBTyxDQUNMLDZCQUNjLFlBQVksRUFDeEIsTUFBTSxFQUFDLElBQUksRUFDWCxjQUFjLEVBQUMsT0FBTyxFQUN0QixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEVBQ2hDLE9BQU8sRUFBQyxXQUFXLEVBQ25CLEtBQUssRUFBQyxJQUFJLFlBRVYsZUFDRSxDQUFDLEVBQUMsc2tDQUFza0MsRUFDeGtDLElBQUksRUFBQyxjQUFjLEdBQ2IsR0FDSixDQUNQLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7SUFDdkIsT0FBTyxDQUNMLDZCQUNjLFlBQVksRUFDeEIsTUFBTSxFQUFDLElBQUksRUFDWCxjQUFjLEVBQUMsT0FBTyxFQUN0QixPQUFPLEVBQUMsV0FBVyxFQUNuQixLQUFLLEVBQUMsSUFBSSxFQUNWLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsWUFFaEMsZUFDRSxRQUFRLEVBQUMsU0FBUyxFQUNsQixRQUFRLEVBQUMsU0FBUyxFQUNsQixDQUFDLEVBQUMsMDZDQUEwNkMsRUFDNTZDLElBQUksRUFBQyxjQUFjLEdBQ2IsR0FDSixDQUNQLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUU7SUFDckIsT0FBTyxDQUNMLDZCQUNjLFlBQVksRUFDeEIsTUFBTSxFQUFDLElBQUksRUFDWCxjQUFjLEVBQUMsT0FBTyxFQUN0QixPQUFPLEVBQUMsV0FBVyxFQUNuQixLQUFLLEVBQUMsSUFBSSxFQUNWLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsWUFFaEMsZUFDRSxRQUFRLEVBQUMsU0FBUyxFQUNsQixRQUFRLEVBQUMsU0FBUyxFQUNsQixDQUFDLEVBQUMsa21CQUFrbUIsRUFDcG1CLElBQUksRUFBQyxjQUFjLEdBQ2IsR0FDSixDQUNQLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxHQUFHLEVBQUU7SUFDM0IsT0FBTyxDQUNMLDZCQUNjLFlBQVksRUFDeEIsTUFBTSxFQUFDLElBQUksRUFDWCxjQUFjLEVBQUMsT0FBTyxFQUN0QixPQUFPLEVBQUMsV0FBVyxFQUNuQixLQUFLLEVBQUMsSUFBSSxFQUNWLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsWUFFaEMsZUFDRSxRQUFRLEVBQUMsU0FBUyxFQUNsQixRQUFRLEVBQUMsU0FBUyxFQUNsQixDQUFDLEVBQUMsMGJBQTBiLEVBQzViLElBQUksRUFBQyxjQUFjLEdBQ2IsR0FDSixDQUNQLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBXb3JrZmxvd0ljb24gPSAoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgZGF0YS10ZXN0aWQ9XCJnZWlzdC1pY29uXCJcbiAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgc3R5bGU9e3sgY29sb3I6ICdjdXJyZW50Q29sb3InIH19XG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIHdpZHRoPVwiMTZcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNS43NSA3TDYuNDIwOSA3LjMzNTk0TDQuODUyNTQgMTAuNDcxN0M1LjM4Nzg5IDEwLjc3MSA1Ljc1IDExLjM0MzEgNS43NSAxMlYxNEM1Ljc1IDE0Ljk2NjUgNC45NjY0OCAxNS43NSA0IDE1Ljc1SDJDMS4wMzM1MiAxNS43NSAwLjI1IDE0Ljk2NjUgMC4yNSAxNFYxMkMwLjI1IDExLjAzMzUgMS4wMzM1MiAxMC4yNSAyIDEwLjI1SDMuMjg3MTFMNS4wNzkxIDYuNjY1MDRMNS43NSA3Wk0xNCAxMC4yNUMxNC45NjY1IDEwLjI1IDE1Ljc1IDExLjAzMzUgMTUuNzUgMTJWMTRDMTUuNzUgMTQuOTY2NSAxNC45NjY1IDE1Ljc1IDE0IDE1Ljc1SDEyQzExLjExODUgMTUuNzUgMTAuMzkwOSAxNS4wOTggMTAuMjY5NSAxNC4yNUg3VjEyLjc1SDEwLjI1VjEyQzEwLjI1IDExLjAzMzUgMTEuMDMzNSAxMC4yNSAxMiAxMC4yNUgxNFpNMiAxMS43NUMxLjg2MTkyIDExLjc1IDEuNzUgMTEuODYxOSAxLjc1IDEyVjE0QzEuNzUgMTQuMTM4MSAxLjg2MTkyIDE0LjI1IDIgMTQuMjVINEM0LjEzODA4IDE0LjI1IDQuMjUgMTQuMTM4MSA0LjI1IDE0VjEyQzQuMjUgMTEuODYxOSA0LjEzODA4IDExLjc1IDQgMTEuNzVIMlpNMTIgMTEuNzVDMTEuODYxOSAxMS43NSAxMS43NSAxMS44NjE5IDExLjc1IDEyVjE0QzExLjc1IDE0LjEzODEgMTEuODYxOSAxNC4yNSAxMiAxNC4yNUgxNEMxNC4xMzgxIDE0LjI1IDE0LjI1IDE0LjEzODEgMTQuMjUgMTRWMTJDMTQuMjUgMTEuODYxOSAxNC4xMzgxIDExLjc1IDE0IDExLjc1SDEyWk05IDAuMjVDOS45NjY0OSAwLjI1IDEwLjc1IDEuMDMzNTEgMTAuNzUgMlY0QzEwLjc1IDQuNDQ2NDIgMTAuNTgwOCA0Ljg1MTk3IDEwLjMwNTcgNS4xNjExM0wxMi4yMDQxIDguNjQxNkwxMC44ODc3IDkuMzYwMzVMOC45MTg5NSA1Ljc1SDdDNi4wMzM1MSA1Ljc1IDUuMjUgNC45NjY0OSA1LjI1IDRWMkM1LjI1IDEuMDMzNTEgNi4wMzM1MSAwLjI1IDcgMC4yNUg5Wk03IDEuNzVDNi44NjE5MyAxLjc1IDYuNzUgMS44NjE5MyA2Ljc1IDJWNEM2Ljc1IDQuMTM4MDcgNi44NjE5MyA0LjI1IDcgNC4yNUg5QzkuMTM4MDcgNC4yNSA5LjI1IDQuMTM4MDcgOS4yNSA0VjJDOS4yNSAxLjg2MTkzIDkuMTM4MDcgMS43NSA5IDEuNzVIN1pcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59O1xuXG5jb25zdCBXZWJob29rSWNvbiA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICBkYXRhLXRlc3RpZD1cImdlaXN0LWljb25cIlxuICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgc3R5bGU9e3sgY29sb3I6ICdjdXJyZW50Q29sb3InIH19XG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk01LjgzNDkgMy4yNDk5NEM1LjE0NDU0IDQuNDQ1NjcgNS41NTQyMyA1Ljk3NDY0IDYuNzQ5OTYgNi42NjVMNy4zOTQ2NSA3LjAzNzIxTDcuMDI3MjYgNy42ODQ2Nkw1LjE0NTk5IDExQzUuMjEyODkgMTEuMTUzMSA1LjI1IDExLjMyMjIgNS4yNSAxMS41QzUuMjUgMTIuMTkwNCA0LjY5MDM2IDEyLjc1IDQgMTIuNzVDMy4zMDk2NCAxMi43NSAyLjc1IDEyLjE5MDQgMi43NSAxMS41QzIuNzUgMTAuODYzNCAzLjIyNTg0IDEwLjMzOCAzLjg0MTIzIDEwLjI2TDUuMzg5NDQgNy41MzE2QzMuOTU5MDkgNi4zMDI3NCAzLjU1ODU3IDQuMTkyNjQgNC41MzU4NiAyLjQ5OTk0QzUuNjQwNDMgMC41ODY3NjUgOC4wODY3OSAtMC4wNjg3MzU3IDkuOTk5OTYgMS4wMzU4M0MxMS44MzYgMi4wOTU4NCAxMi41MTM3IDQuMzkxNTYgMTEuNTg5MiA2LjI2NTkxTDEwLjQ5NDkgNC4zMzc1NEMxMC40NDE4IDMuNTMyNzQgMTAuMDAwOSAyLjc2ODQzIDkuMjQ5OTYgMi4zMzQ4N0M4LjA1NDIzIDEuNjQ0NTIgNi41MjUyNSAyLjA1NDIgNS44MzQ5IDMuMjQ5OTRaTTkuMTQ2IDQuOTk5OTZDOS4yMTI4OSA0Ljg0Njg2IDkuMjUgNC42Nzc3NiA5LjI1IDQuNUM5LjI1IDMuODA5NjQgOC42OTAzNiAzLjI1IDggMy4yNUM3LjMwOTY0IDMuMjUgNi43NSAzLjgwOTY0IDYuNzUgNC41QzYuNzUgNS4xMzY1OSA3LjIyNTg2IDUuNjYyMDMgNy44NDEyNyA1Ljc0MDAyTDkuNzIyNjYgOS4wNTU1NkwxMC4wOTU2IDkuNzEyNzRMMTAuNzUgOS4zMzQ5M0MxMS45NDU3IDguNjQ0NTggMTMuNDc0NyA5LjA1NDI3IDE0LjE2NSAxMC4yNUMxNC44NTU0IDExLjQ0NTcgMTQuNDQ1NyAxMi45NzQ3IDEzLjI1IDEzLjY2NTFDMTIuNTA0NyAxNC4wOTUzIDExLjYzIDE0LjA5ODMgMTAuOTA5NiAxMy43NUg4LjY5MjUyQzkuODU4OTUgMTUuNDY4NSAxMi4xNzI3IDE2LjAxOTEgMTQgMTQuOTY0MUMxNS45MTMxIDEzLjg1OTUgMTYuNTY4NiAxMS40MTMyIDE1LjQ2NDEgOS41QzE0LjQ4ODYgNy44MTAzOCAxMi40NjY1IDcuMTAxNjkgMTAuNjg5NSA3LjcxOTk4TDkuMTQ2IDQuOTk5OTZaTTEzLjI1IDExLjVDMTMuMjUgMTIuMTkwNCAxMi42OTA0IDEyLjc1IDEyIDEyLjc1QzExLjU5MSAxMi43NSAxMS4yMjggMTIuNTUzNiAxMC45OTk5IDEyLjI1SDcuOTI5OEM3LjU3ODc1IDE0LjEwMDYgNS45NTI3OSAxNS41IDQgMTUuNUMxLjc5MDg2IDE1LjUgMCAxMy43MDkxIDAgMTEuNUMwIDkuNDAwMTggMS42MTgwMSA3LjY3ODI2IDMuNjc1MjkgNy41MTI5OUwyLjU4MDk4IDkuNDQxNDdDMS45Mjc5MiA5Ljg5MjUxIDEuNSAxMC42NDYzIDEuNSAxMS41QzEuNSAxMi44ODA3IDIuNjE5MjkgMTQgNCAxNEM1LjM4MDcxIDE0IDYuNSAxMi44ODA3IDYuNSAxMS41VjEwLjc1SDcuMjVIMTAuOTk5OUMxMS4yMjggMTAuNDQ2NCAxMS41OTEgMTAuMjUgMTIgMTAuMjVDMTIuNjkwNCAxMC4yNSAxMy4yNSAxMC44MDk2IDEzLjI1IDExLjVaXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICApO1xufTtcblxuY29uc3QgU2xlZXBJY29uID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGRhdGEtdGVzdGlkPVwiZ2Vpc3QtaWNvblwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBzdHlsZT17eyBjb2xvcjogJ2N1cnJlbnRDb2xvcicgfX1cbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTcuMjUgMS4yNVYyLjAzOTcxQzUuODc5MjggMi4xODU3MSA0LjYyNjc4IDIuNzI3MzYgMy42MDg5IDMuNTQ4MjRMMy4wMzAzMyAyLjk2OTY3TDIuNSAyLjQzOTM0TDEuNDM5MzQgMy41TDEuOTY5NjcgNC4wMzAzM0wyLjU0ODI0IDQuNjA4OUMxLjU3OTc5IDUuODA5NzYgMSA3LjMzNzE3IDEgOUMxIDEyLjg2NiA0LjEzNDAxIDE2IDggMTZDMTEuODY2IDE2IDE1IDEyLjg2NiAxNSA5QzE1IDcuMzM3MTcgMTQuNDIwMiA1LjgwOTc2IDEzLjQ1MTggNC42MDg5TDE0LjAzMDMgNC4wMzAzM0wxNC41NjA3IDMuNUwxMy41IDIuNDM5MzRMMTIuOTY5NyAyLjk2OTY3TDEyLjM5MTEgMy41NDgyNEMxMS4zNzMyIDIuNzI3MzYgMTAuMTIwNyAyLjE4NTcxIDguNzUgMi4wMzk3MVYxLjI1SDkuMjVIMTBWLTAuMjVIOS4yNUg4Ljc1SDcuMjVINi43NUg2VjEuMjVINi43NUg3LjI1Wk0yLjUgOUMyLjUgNS45NjI0MyA0Ljk2MjQzIDMuNSA4IDMuNUMxMS4wMzc2IDMuNSAxMy41IDUuOTYyNDMgMTMuNSA5QzEzLjUgMTIuMDM3NiAxMS4wMzc2IDE0LjUgOCAxNC41QzQuOTYyNDMgMTQuNSAyLjUgMTIuMDM3NiAyLjUgOVpNOC43NSA2Ljc1VjZINy4yNVY2Ljc1VjlWOS43NUg4Ljc1VjlWNi43NVpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gICk7XG59O1xuXG5jb25zdCBTdGVwRm9yd2FyZEljb24gPSAoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgZGF0YS10ZXN0aWQ9XCJnZWlzdC1pY29uXCJcbiAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICB3aWR0aD1cIjE2XCJcbiAgICAgIHN0eWxlPXt7IGNvbG9yOiAnY3VycmVudENvbG9yJyB9fVxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGxSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNNC4yMTk2OSAxMi41MzAzTDQuNzUwMDIgMTMuMDYwN0w1LjgxMDY4IDEyTDUuMjgwMzUgMTEuNDY5N0wxLjgxMDY4IDcuOTk5OTlMNS4yODAzNSA0LjUzMDMyTDUuODEwNjggMy45OTk5OUw0Ljc1MDAyIDIuOTM5MzNMNC4yMTk2OSAzLjQ2OTY2TDAuMzk2NDcgNy4yOTI4OUMwLjAwNTk0NTYyIDcuNjgzNDEgMC4wMDU5NDU2MiA4LjMxNjU4IDAuMzk2NDcgOC43MDcxTDQuMjE5NjkgMTIuNTMwM1pNMTEuNzgwNCAxMi41MzAzTDExLjI1IDEzLjA2MDdMMTAuMTg5NCAxMkwxMC43MTk3IDExLjQ2OTdMMTQuMTg5NCA3Ljk5OTk5TDEwLjcxOTcgNC41MzAzMkwxMC4xODk0IDMuOTk5OTlMMTEuMjUgMi45MzkzM0wxMS43ODA0IDMuNDY5NjZMMTUuNjAzNiA3LjI5Mjg5QzE1Ljk5NDEgNy42ODM0MSAxNS45OTQxIDguMzE2NTggMTUuNjAzNiA4LjcwNzFMMTEuNzgwNCAxMi41MzAzWlwiXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFdvcmtmbG93SWNvbiwgV2ViaG9va0ljb24sIFNsZWVwSWNvbiwgU3RlcEZvcndhcmRJY29uIH07XG4iXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/components/trace-viewer/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAIpC,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,aAAa,EAAE,IAAI,EAAE,CAAC;IACtB,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,CAkB5E;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAET;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAa7E"}