@carto/kepler.gl 0.0.85 → 0.0.86-alpha.deck9.1

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 (430) hide show
  1. package/dist/actions/action-wrapper.js +36 -41
  2. package/dist/actions/actions.js +15 -21
  3. package/dist/actions/identity-actions.js +14 -20
  4. package/dist/actions/index.js +16 -16
  5. package/dist/actions/map-state-actions.js +12 -18
  6. package/dist/actions/map-style-actions.js +30 -46
  7. package/dist/actions/provider-actions.js +49 -73
  8. package/dist/actions/ui-state-actions.js +73 -113
  9. package/dist/actions/vis-state-actions.js +152 -148
  10. package/dist/cloud-providers/index.js +6 -7
  11. package/dist/cloud-providers/provider.js +189 -279
  12. package/dist/components/bottom-widget.js +105 -117
  13. package/dist/components/common/action-panel.js +122 -74
  14. package/dist/components/common/animation-control/animation-control.js +69 -54
  15. package/dist/components/common/animation-control/animation-controller.js +134 -160
  16. package/dist/components/common/animation-control/animation-speed-slider.js +47 -54
  17. package/dist/components/common/animation-control/floating-time-display.js +120 -100
  18. package/dist/components/common/animation-control/playback-controls.js +147 -144
  19. package/dist/components/common/animation-control/speed-control.js +31 -23
  20. package/dist/components/common/checkbox.js +56 -70
  21. package/dist/components/common/color-legend.js +83 -110
  22. package/dist/components/common/data-table/button.js +31 -23
  23. package/dist/components/common/data-table/canvas.js +11 -5
  24. package/dist/components/common/data-table/cell-size.js +51 -61
  25. package/dist/components/common/data-table/grid.js +40 -59
  26. package/dist/components/common/data-table/index.js +464 -348
  27. package/dist/components/common/data-table/option-dropdown.js +50 -33
  28. package/dist/components/common/dataset-label.js +17 -13
  29. package/dist/components/common/error-boundary.js +27 -45
  30. package/dist/components/common/field-selector.js +99 -139
  31. package/dist/components/common/field-token.js +24 -9
  32. package/dist/components/common/file-uploader/file-drop.js +96 -115
  33. package/dist/components/common/file-uploader/file-upload-progress.js +68 -45
  34. package/dist/components/common/file-uploader/file-upload.js +215 -187
  35. package/dist/components/common/file-uploader/upload-button.js +35 -22
  36. package/dist/components/common/histogram-plot.js +47 -58
  37. package/dist/components/common/icons/add.js +14 -27
  38. package/dist/components/common/icons/anchor_window.js +16 -18
  39. package/dist/components/common/icons/arrow-down-alt.js +14 -27
  40. package/dist/components/common/icons/arrow-down-solid.js +14 -27
  41. package/dist/components/common/icons/arrow-down.js +14 -27
  42. package/dist/components/common/icons/arrow-left.js +17 -30
  43. package/dist/components/common/icons/arrow-right.js +14 -27
  44. package/dist/components/common/icons/arrow-up-alt.js +15 -28
  45. package/dist/components/common/icons/arrow-up-solid.js +14 -27
  46. package/dist/components/common/icons/arrow-up.js +14 -27
  47. package/dist/components/common/icons/base.js +39 -57
  48. package/dist/components/common/icons/bug.js +16 -29
  49. package/dist/components/common/icons/cancel.js +14 -27
  50. package/dist/components/common/icons/checkmark.js +18 -31
  51. package/dist/components/common/icons/chevron-right.js +20 -33
  52. package/dist/components/common/icons/clipboard.js +15 -28
  53. package/dist/components/common/icons/clock.js +16 -29
  54. package/dist/components/common/icons/close.js +19 -32
  55. package/dist/components/common/icons/code-alt.js +16 -29
  56. package/dist/components/common/icons/copy.js +18 -31
  57. package/dist/components/common/icons/crosshairs.js +16 -29
  58. package/dist/components/common/icons/cube-3d.js +18 -31
  59. package/dist/components/common/icons/cursor-click.js +18 -31
  60. package/dist/components/common/icons/data-table.js +15 -28
  61. package/dist/components/common/icons/db.js +15 -28
  62. package/dist/components/common/icons/delete.js +16 -29
  63. package/dist/components/common/icons/docs.js +30 -43
  64. package/dist/components/common/icons/drag-n-drop.js +16 -29
  65. package/dist/components/common/icons/draw-polygon.js +33 -46
  66. package/dist/components/common/icons/email.js +18 -31
  67. package/dist/components/common/icons/expand.js +16 -29
  68. package/dist/components/common/icons/eye-seen.js +16 -29
  69. package/dist/components/common/icons/eye-unseen.js +16 -29
  70. package/dist/components/common/icons/file-type.js +35 -19
  71. package/dist/components/common/icons/file.js +14 -27
  72. package/dist/components/common/icons/files.js +14 -26
  73. package/dist/components/common/icons/filter-funnel.js +14 -27
  74. package/dist/components/common/icons/free-window.js +16 -18
  75. package/dist/components/common/icons/gear.js +16 -29
  76. package/dist/components/common/icons/hash.js +14 -27
  77. package/dist/components/common/icons/histogram.js +15 -27
  78. package/dist/components/common/icons/index.js +156 -156
  79. package/dist/components/common/icons/info.js +25 -38
  80. package/dist/components/common/icons/layers.js +14 -27
  81. package/dist/components/common/icons/left-arrow.js +16 -29
  82. package/dist/components/common/icons/legend.js +14 -27
  83. package/dist/components/common/icons/line-chart.js +14 -27
  84. package/dist/components/common/icons/login.js +17 -30
  85. package/dist/components/common/icons/logout.js +16 -29
  86. package/dist/components/common/icons/map-icon.js +18 -32
  87. package/dist/components/common/icons/map.js +18 -32
  88. package/dist/components/common/icons/messages.js +14 -27
  89. package/dist/components/common/icons/minus.js +14 -27
  90. package/dist/components/common/icons/order-by-dataset.js +15 -17
  91. package/dist/components/common/icons/order-by-list.js +7 -9
  92. package/dist/components/common/icons/pause.js +14 -27
  93. package/dist/components/common/icons/picture.js +14 -26
  94. package/dist/components/common/icons/pin.js +17 -30
  95. package/dist/components/common/icons/play.js +14 -27
  96. package/dist/components/common/icons/polygon.js +35 -48
  97. package/dist/components/common/icons/rectangle.js +36 -49
  98. package/dist/components/common/icons/reduce.js +17 -30
  99. package/dist/components/common/icons/reset.js +14 -27
  100. package/dist/components/common/icons/rocket.js +14 -27
  101. package/dist/components/common/icons/save.js +16 -29
  102. package/dist/components/common/icons/save2.js +20 -33
  103. package/dist/components/common/icons/search.js +16 -29
  104. package/dist/components/common/icons/settings.js +16 -29
  105. package/dist/components/common/icons/share.js +14 -27
  106. package/dist/components/common/icons/split.js +42 -55
  107. package/dist/components/common/icons/square-select.js +16 -29
  108. package/dist/components/common/icons/swap-horizontal.js +18 -31
  109. package/dist/components/common/icons/table.js +14 -27
  110. package/dist/components/common/icons/trash.js +16 -29
  111. package/dist/components/common/icons/upload.js +14 -27
  112. package/dist/components/common/icons/vert-dots.js +52 -65
  113. package/dist/components/common/icons/vert-three-dots.js +27 -40
  114. package/dist/components/common/icons/warning.js +26 -39
  115. package/dist/components/common/image-preview.js +71 -33
  116. package/dist/components/common/info-helper.js +36 -29
  117. package/dist/components/common/item-selector/accessor.js +7 -13
  118. package/dist/components/common/item-selector/chickleted-input.js +72 -56
  119. package/dist/components/common/item-selector/dropdown-list.js +182 -214
  120. package/dist/components/common/item-selector/item-selector-submenu.js +34 -55
  121. package/dist/components/common/item-selector/item-selector.js +183 -194
  122. package/dist/components/common/item-selector/typeahead.js +236 -248
  123. package/dist/components/common/line-chart.js +80 -58
  124. package/dist/components/common/loading-spinner.js +46 -31
  125. package/dist/components/common/logo.js +61 -48
  126. package/dist/components/common/map-layer-selector.js +31 -25
  127. package/dist/components/common/modal.js +167 -106
  128. package/dist/components/common/portaled.js +169 -189
  129. package/dist/components/common/progress-bar.js +27 -24
  130. package/dist/components/common/range-brush.js +176 -215
  131. package/dist/components/common/range-plot.js +52 -63
  132. package/dist/components/common/range-slider.js +206 -231
  133. package/dist/components/common/slider/mouse-event.js +59 -66
  134. package/dist/components/common/slider/slider-bar-handle.js +51 -61
  135. package/dist/components/common/slider/slider-handle.js +127 -102
  136. package/dist/components/common/slider/slider.js +143 -162
  137. package/dist/components/common/styled-components.js +518 -256
  138. package/dist/components/common/switch.js +11 -11
  139. package/dist/components/common/time-range-slider-time-title.js +49 -32
  140. package/dist/components/common/time-range-slider.js +56 -45
  141. package/dist/components/common/time-slider-marker.js +71 -52
  142. package/dist/components/common/tippy-tooltip.js +89 -59
  143. package/dist/components/common/toolbar-item.js +53 -45
  144. package/dist/components/common/toolbar.js +24 -18
  145. package/dist/components/common/vertical-toolbar.js +13 -6
  146. package/dist/components/container.js +87 -119
  147. package/dist/components/context.js +6 -8
  148. package/dist/components/editor/constants.js +4 -4
  149. package/dist/components/editor/editor.js +122 -157
  150. package/dist/components/editor/feature-action-panel.js +52 -59
  151. package/dist/components/editor/feature-styles.js +46 -29
  152. package/dist/components/editor/handle-style.js +38 -29
  153. package/dist/components/filters/components.js +8 -4
  154. package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +33 -43
  155. package/dist/components/filters/filter-panels/multi-select-filter-panel.js +20 -21
  156. package/dist/components/filters/filter-panels/new-filter-panel.js +24 -31
  157. package/dist/components/filters/filter-panels/polygon-filter-panel.js +26 -31
  158. package/dist/components/filters/filter-panels/range-filter-panel.js +20 -21
  159. package/dist/components/filters/filter-panels/single-select-filter-panel.js +20 -21
  160. package/dist/components/filters/filter-panels/time-range-filter-panel.js +28 -31
  161. package/dist/components/filters/index.js +10 -10
  162. package/dist/components/filters/multi-select-filter.js +11 -9
  163. package/dist/components/filters/polygon-filter.js +26 -41
  164. package/dist/components/filters/range-filter.js +9 -7
  165. package/dist/components/filters/single-select-filter.js +11 -13
  166. package/dist/components/filters/time-range-filter.js +16 -14
  167. package/dist/components/filters/time-widget.js +125 -84
  168. package/dist/components/geocoder/geocoder.js +158 -177
  169. package/dist/components/geocoder-panel.js +66 -87
  170. package/dist/components/index.js +328 -329
  171. package/dist/components/injector.js +44 -63
  172. package/dist/components/kepler-gl.js +325 -361
  173. package/dist/components/map/coordinate-info.js +18 -16
  174. package/dist/components/map/layer-hover-info.js +108 -86
  175. package/dist/components/map/layer-selector-panel.js +50 -48
  176. package/dist/components/map/locale-panel.js +38 -44
  177. package/dist/components/map/map-control-panel.js +70 -47
  178. package/dist/components/map/map-control-toolbar.js +9 -6
  179. package/dist/components/map/map-control-tooltip.js +10 -8
  180. package/dist/components/map/map-control.js +35 -27
  181. package/dist/components/map/map-draw-panel.js +38 -48
  182. package/dist/components/map/map-legend-panel.js +47 -50
  183. package/dist/components/map/map-legend.js +133 -116
  184. package/dist/components/map/map-popover.js +155 -100
  185. package/dist/components/map/split-map-button.js +30 -34
  186. package/dist/components/map/toggle-3d-button.js +25 -27
  187. package/dist/components/map-container.js +313 -359
  188. package/dist/components/maps-layout.js +16 -26
  189. package/dist/components/modal-container.js +359 -355
  190. package/dist/components/modals/add-map-style-modal.js +233 -194
  191. package/dist/components/modals/cloud-tile.js +96 -67
  192. package/dist/components/modals/data-table-modal.js +155 -152
  193. package/dist/components/modals/delete-data-modal.js +20 -20
  194. package/dist/components/modals/error-display.js +9 -7
  195. package/dist/components/modals/export-data-modal.js +118 -140
  196. package/dist/components/modals/export-image-modal.js +82 -69
  197. package/dist/components/modals/export-map-modal/components.js +20 -18
  198. package/dist/components/modals/export-map-modal/export-html-map.js +82 -74
  199. package/dist/components/modals/export-map-modal/export-json-map.js +65 -45
  200. package/dist/components/modals/export-map-modal/export-map-modal.js +42 -47
  201. package/dist/components/modals/image-modal-container.js +20 -21
  202. package/dist/components/modals/load-data-modal.js +28 -30
  203. package/dist/components/modals/load-storage-map.js +277 -178
  204. package/dist/components/modals/loading-dialog.js +41 -19
  205. package/dist/components/modals/modal-dialog.js +4 -6
  206. package/dist/components/modals/modal-tabs.js +83 -48
  207. package/dist/components/modals/overwrite-map-modal.js +41 -30
  208. package/dist/components/modals/provider-modal-container.js +23 -42
  209. package/dist/components/modals/save-map-modal.js +107 -83
  210. package/dist/components/modals/share-map-modal.js +101 -95
  211. package/dist/components/modals/status-panel.js +63 -43
  212. package/dist/components/modals/storage-map-viewer.js +133 -70
  213. package/dist/components/notification-panel/notification-item.js +94 -97
  214. package/dist/components/notification-panel.js +35 -43
  215. package/dist/components/performance.js +49 -53
  216. package/dist/components/plot-container.js +151 -169
  217. package/dist/components/side-panel/cloud-storage-dropdown.js +13 -15
  218. package/dist/components/side-panel/common/dataset-info.js +16 -12
  219. package/dist/components/side-panel/common/dataset-tag.js +48 -27
  220. package/dist/components/side-panel/common/dataset-title.js +119 -116
  221. package/dist/components/side-panel/common/source-data-catalog.js +31 -32
  222. package/dist/components/side-panel/common/source-data-selector.js +52 -77
  223. package/dist/components/side-panel/custom-panel.js +6 -8
  224. package/dist/components/side-panel/filter-manager.js +48 -62
  225. package/dist/components/side-panel/filter-panel/filter-panel-header.js +35 -25
  226. package/dist/components/side-panel/filter-panel/filter-panel.js +46 -64
  227. package/dist/components/side-panel/interaction-manager.js +20 -18
  228. package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
  229. package/dist/components/side-panel/interaction-panel/interaction-panel.js +76 -95
  230. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +118 -143
  231. package/dist/components/side-panel/interaction-panel/tooltip-config.js +95 -76
  232. package/dist/components/side-panel/layer-manager.js +105 -115
  233. package/dist/components/side-panel/layer-panel/add-layer-button.js +92 -54
  234. package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +5 -5
  235. package/dist/components/side-panel/layer-panel/color-palette.js +50 -37
  236. package/dist/components/side-panel/layer-panel/color-range-selector.js +196 -207
  237. package/dist/components/side-panel/layer-panel/color-selector.js +104 -110
  238. package/dist/components/side-panel/layer-panel/column-selector.js +34 -22
  239. package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +4 -4
  240. package/dist/components/side-panel/layer-panel/custom-palette.js +248 -205
  241. package/dist/components/side-panel/layer-panel/custom-picker.js +51 -69
  242. package/dist/components/side-panel/layer-panel/dataset-layer-group.js +37 -42
  243. package/dist/components/side-panel/layer-panel/dataset-layer-section.js +31 -27
  244. package/dist/components/side-panel/layer-panel/dataset-section.js +45 -35
  245. package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +14 -13
  246. package/dist/components/side-panel/layer-panel/hex-column-config.js +32 -55
  247. package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +5 -5
  248. package/dist/components/side-panel/layer-panel/layer-column-config.js +42 -46
  249. package/dist/components/side-panel/layer-panel/layer-config-group.js +178 -144
  250. package/dist/components/side-panel/layer-panel/layer-configurator.js +826 -830
  251. package/dist/components/side-panel/layer-panel/layer-list.js +101 -94
  252. package/dist/components/side-panel/layer-panel/layer-panel-header.js +124 -82
  253. package/dist/components/side-panel/layer-panel/layer-panel.js +111 -105
  254. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +67 -58
  255. package/dist/components/side-panel/layer-panel/layer-type-list-item.js +47 -32
  256. package/dist/components/side-panel/layer-panel/layer-type-selector.js +30 -41
  257. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +42 -43
  258. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +55 -57
  259. package/dist/components/side-panel/layer-panel/single-color-palette.js +48 -33
  260. package/dist/components/side-panel/layer-panel/text-label-panel.js +81 -116
  261. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +88 -102
  262. package/dist/components/side-panel/layer-panel/vis-config-slider.js +99 -85
  263. package/dist/components/side-panel/layer-panel/vis-config-switch.js +38 -29
  264. package/dist/components/side-panel/map-manager.js +70 -89
  265. package/dist/components/side-panel/map-style-panel/map-layer-selector.js +72 -60
  266. package/dist/components/side-panel/map-style-panel/map-style-selector.js +64 -42
  267. package/dist/components/side-panel/panel-dropdown.js +21 -37
  268. package/dist/components/side-panel/panel-header-action.js +60 -65
  269. package/dist/components/side-panel/panel-header.js +165 -184
  270. package/dist/components/side-panel/panel-tab.js +35 -29
  271. package/dist/components/side-panel/panel-title.js +15 -18
  272. package/dist/components/side-panel/panel-toggle.js +30 -31
  273. package/dist/components/side-panel/side-bar.js +100 -91
  274. package/dist/components/side-panel.js +108 -123
  275. package/dist/connect/keplergl-connect.js +17 -26
  276. package/dist/connect/with-local-selector.js +31 -63
  277. package/dist/constants/action-types.js +113 -115
  278. package/dist/constants/color-palette.js +14 -16
  279. package/dist/constants/color-ranges.js +23 -28
  280. package/dist/constants/custom-color-ranges.js +12 -12
  281. package/dist/constants/default-settings.js +323 -254
  282. package/dist/constants/index.js +63 -63
  283. package/dist/constants/keyevent.js +4 -4
  284. package/dist/constants/tooltip.js +5 -5
  285. package/dist/constants/user-feedbacks.js +9 -5
  286. package/dist/constants/user-guides.js +10 -10
  287. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +37 -63
  288. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +52 -56
  289. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +165 -168
  290. package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +24 -43
  291. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.d.ts +2 -2
  292. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +27 -40
  293. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +27 -40
  294. package/dist/deckgl-layers/layer-utils/cluster-utils.js +60 -68
  295. package/dist/deckgl-layers/layer-utils/cpu-aggregator.d.ts +4 -4
  296. package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +281 -282
  297. package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
  298. package/dist/deckgl-layers/line-layer/line-layer.js +62 -70
  299. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +37 -51
  300. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +65 -85
  301. package/dist/index.js +15 -16
  302. package/dist/layers/aggregation-layer.js +299 -331
  303. package/dist/layers/arc-layer/arc-layer-icon.js +27 -41
  304. package/dist/layers/arc-layer/arc-layer.js +174 -201
  305. package/dist/layers/base-layer.d.ts +1 -1
  306. package/dist/layers/base-layer.js +1371 -1544
  307. package/dist/layers/cluster-layer/cluster-layer-icon.js +30 -44
  308. package/dist/layers/cluster-layer/cluster-layer.js +89 -103
  309. package/dist/layers/default-layer-icon.js +39 -53
  310. package/dist/layers/geojson-layer/geojson-layer-icon.js +42 -55
  311. package/dist/layers/geojson-layer/geojson-layer.js +292 -353
  312. package/dist/layers/geojson-layer/geojson-utils.js +31 -36
  313. package/dist/layers/grid-layer/grid-layer-icon.js +87 -100
  314. package/dist/layers/grid-layer/grid-layer.js +51 -61
  315. package/dist/layers/grid-layer/grid-utils.js +13 -9
  316. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +21 -35
  317. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +225 -260
  318. package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
  319. package/dist/layers/heatmap-layer/heatmap-layer-icon.js +39 -52
  320. package/dist/layers/heatmap-layer/heatmap-layer.js +140 -171
  321. package/dist/layers/hexagon-layer/hexagon-layer-icon.js +51 -64
  322. package/dist/layers/hexagon-layer/hexagon-layer.js +49 -63
  323. package/dist/layers/hexagon-layer/hexagon-utils.js +15 -14
  324. package/dist/layers/icon-layer/icon-info-modal.js +82 -75
  325. package/dist/layers/icon-layer/icon-layer-icon.js +24 -37
  326. package/dist/layers/icon-layer/icon-layer.js +274 -303
  327. package/dist/layers/index.js +43 -29
  328. package/dist/layers/layer-factory.js +25 -41
  329. package/dist/layers/layer-text-label.js +21 -23
  330. package/dist/layers/layer-update.js +16 -18
  331. package/dist/layers/line-layer/line-layer-icon.js +30 -43
  332. package/dist/layers/line-layer/line-layer.js +123 -142
  333. package/dist/layers/mapbox-utils.js +61 -62
  334. package/dist/layers/mapboxgl-layer.js +124 -169
  335. package/dist/layers/point-layer/point-layer-icon.js +45 -59
  336. package/dist/layers/point-layer/point-layer.d.ts +2 -2
  337. package/dist/layers/point-layer/point-layer.js +355 -386
  338. package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +208 -238
  339. package/dist/layers/s2-geometry-layer/s2-layer-icon.js +21 -35
  340. package/dist/layers/s2-geometry-layer/s2-utils.js +9 -8
  341. package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +24 -25
  342. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +102 -115
  343. package/dist/layers/scenegraph-layer/scenegraph-layer.js +148 -172
  344. package/dist/layers/trip-layer/trip-info-modal.js +50 -30
  345. package/dist/layers/trip-layer/trip-layer-icon.js +40 -53
  346. package/dist/layers/trip-layer/trip-layer.js +239 -307
  347. package/dist/layers/trip-layer/trip-utils.js +34 -50
  348. package/dist/layers/types.js +2 -2
  349. package/dist/localization/formatted-message.js +8 -10
  350. package/dist/localization/index.js +7 -7
  351. package/dist/localization/locales.js +6 -9
  352. package/dist/localization/messages.js +13 -10
  353. package/dist/localization/translations/ca.js +11 -13
  354. package/dist/localization/translations/cn.js +11 -13
  355. package/dist/localization/translations/en.js +11 -13
  356. package/dist/localization/translations/es.js +11 -13
  357. package/dist/localization/translations/fi.js +11 -13
  358. package/dist/localization/translations/ja.js +11 -13
  359. package/dist/localization/translations/pt.js +11 -13
  360. package/dist/localization/translations/ru.js +11 -13
  361. package/dist/middleware/index.js +3 -5
  362. package/dist/processors/data-processor.js +164 -201
  363. package/dist/processors/file-handler.js +111 -233
  364. package/dist/processors/index.js +4 -4
  365. package/dist/reducers/combined-updaters.js +41 -41
  366. package/dist/reducers/composer-helpers.js +20 -45
  367. package/dist/reducers/composers.js +9 -8
  368. package/dist/reducers/core.js +31 -35
  369. package/dist/reducers/index.js +21 -22
  370. package/dist/reducers/map-state-updaters.js +65 -47
  371. package/dist/reducers/map-state.js +23 -15
  372. package/dist/reducers/map-style-updaters.js +233 -159
  373. package/dist/reducers/map-style.js +30 -16
  374. package/dist/reducers/provider-state-updaters.js +217 -229
  375. package/dist/reducers/provider-state.js +29 -17
  376. package/dist/reducers/root.js +86 -58
  377. package/dist/reducers/ui-state-updaters.js +337 -218
  378. package/dist/reducers/ui-state.js +45 -16
  379. package/dist/reducers/vis-state-merger.js +205 -209
  380. package/dist/reducers/vis-state-selectors.js +5 -19
  381. package/dist/reducers/vis-state-updaters.js +1003 -876
  382. package/dist/reducers/vis-state.js +75 -16
  383. package/dist/schemas/dataset-schema.js +84 -108
  384. package/dist/schemas/index.js +28 -29
  385. package/dist/schemas/map-state-schema.js +21 -18
  386. package/dist/schemas/map-style-schema.js +47 -55
  387. package/dist/schemas/schema-manager.js +147 -161
  388. package/dist/schemas/schema-utils.js +8 -9
  389. package/dist/schemas/schema.js +72 -87
  390. package/dist/schemas/versions.js +3 -3
  391. package/dist/schemas/vis-state-schema.js +441 -583
  392. package/dist/styles/base.js +1217 -1021
  393. package/dist/styles/index.js +3 -3
  394. package/dist/styles/media-breakpoints.js +23 -18
  395. package/dist/tasks/tasks.js +36 -39
  396. package/dist/templates/export-map-html.js +233 -4
  397. package/dist/utils/aggregate-utils.js +13 -16
  398. package/dist/utils/color-utils.js +29 -37
  399. package/dist/utils/custom-scales.js +3 -3
  400. package/dist/utils/data-scale-utils.js +6 -13
  401. package/dist/utils/data-utils.js +60 -83
  402. package/dist/utils/dataset-utils.js +48 -77
  403. package/dist/utils/dom-to-image.js +108 -163
  404. package/dist/utils/dom-utils.js +88 -105
  405. package/dist/utils/export-utils.js +116 -103
  406. package/dist/utils/filter-utils.js +379 -374
  407. package/dist/utils/gl-utils.js +16 -15
  408. package/dist/utils/gpu-filter-utils.js +54 -73
  409. package/dist/utils/index.js +47 -48
  410. package/dist/utils/interaction-utils.js +53 -46
  411. package/dist/utils/layer-utils.js +89 -78
  412. package/dist/utils/locale-utils.js +24 -16
  413. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +67 -76
  414. package/dist/utils/map-style-utils/mapbox-utils.js +4 -3
  415. package/dist/utils/mapbox-utils.js +3 -4
  416. package/dist/utils/notifications-utils.js +33 -38
  417. package/dist/utils/observe-dimensions.js +42 -54
  418. package/dist/utils/projection-utils.js +14 -11
  419. package/dist/utils/split-map-utils.js +30 -33
  420. package/dist/utils/table-utils/data-container-utils.js +15 -14
  421. package/dist/utils/table-utils/data-row.js +58 -65
  422. package/dist/utils/table-utils/index.js +2 -2
  423. package/dist/utils/table-utils/indexed-data-container.js +105 -173
  424. package/dist/utils/table-utils/kepler-table.js +362 -386
  425. package/dist/utils/table-utils/row-data-container.js +99 -164
  426. package/dist/utils/utils.js +29 -30
  427. package/package.json +21 -21
  428. package/src/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.ts +2 -2
  429. package/src/deckgl-layers/layer-utils/cpu-aggregator.ts +21 -11
  430. package/src/layers/base-layer.ts +17 -10
@@ -1,15 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.FilterAnimationControllerFactory = FilterAnimationControllerFactory;
9
8
  exports.LayerAnimationControllerFactory = LayerAnimationControllerFactory;
10
- exports["default"] = BottomWidgetFactory;
9
+ exports.default = BottomWidgetFactory;
11
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
11
  var _react = _interopRequireWildcard(require("react"));
14
12
  var _styledComponents = _interopRequireDefault(require("styled-components"));
15
13
  var _timeWidget = _interopRequireDefault(require("./filters/time-widget"));
@@ -18,7 +16,9 @@ var _animationController = _interopRequireDefault(require("./common/animation-co
18
16
  var _defaultSettings = require("../constants/default-settings");
19
17
  var _filterUtils = require("../utils/filter-utils");
20
18
  var _mediaBreakpoints = require("../styles/media-breakpoints");
21
- var _templateObject, _templateObject2; // Copyright (c) 2022 Uber Technologies, Inc.
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
+ // Copyright (c) 2022 Uber Technologies, Inc.
22
22
  //
23
23
  // Permission is hereby granted, free of charge, to any person obtaining a copy
24
24
  // of this software and associated documentation files (the "Software"), to deal
@@ -37,39 +37,39 @@ var _templateObject, _templateObject2; // Copyright (c) 2022 Uber Technologies,
37
37
  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
38
38
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
39
39
  // THE SOFTWARE.
40
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
41
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
42
- var maxWidth = 1080;
43
- var BottomWidgetContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n padding-top: ", "px;\n padding-right: ", "px;\n padding-bottom: ", "px;\n padding-left: ", "px;\n pointer-events: none !important; /* prevent padding from blocking input */\n & > * {\n /* all children should allow input */\n pointer-events: all;\n }\n width: ", "px;\n z-index: 1;\n ", "\n"])), function (props) {
44
- return props.hasPadding ? props.theme.bottomWidgetPaddingTop : 0;
45
- }, function (props) {
46
- return props.hasPadding ? props.theme.bottomWidgetPaddingRight : 0;
47
- }, function (props) {
48
- return props.hasPadding ? props.theme.bottomWidgetPaddingBottom : 0;
49
- }, function (props) {
50
- return props.hasPadding ? props.theme.bottomWidgetPaddingLeft : 0;
51
- }, function (props) {
52
- return props.width;
53
- }, _mediaBreakpoints.media.portable(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["padding: 0;"]))));
54
- FilterAnimationControllerFactory.deps = [_animationController["default"]];
40
+
41
+ const maxWidth = 1080;
42
+ const BottomWidgetContainer = _styledComponents.default.div`
43
+ display: flex;
44
+ flex-direction: column;
45
+ padding-top: ${props => props.hasPadding ? props.theme.bottomWidgetPaddingTop : 0}px;
46
+ padding-right: ${props => props.hasPadding ? props.theme.bottomWidgetPaddingRight : 0}px;
47
+ padding-bottom: ${props => props.hasPadding ? props.theme.bottomWidgetPaddingBottom : 0}px;
48
+ padding-left: ${props => props.hasPadding ? props.theme.bottomWidgetPaddingLeft : 0}px;
49
+ pointer-events: none !important; /* prevent padding from blocking input */
50
+ & > * {
51
+ /* all children should allow input */
52
+ pointer-events: all;
53
+ }
54
+ width: ${props => props.width}px;
55
+ z-index: 1;
56
+ ${_mediaBreakpoints.media.portable`padding: 0;`}
57
+ `;
58
+ FilterAnimationControllerFactory.deps = [_animationController.default];
55
59
  function FilterAnimationControllerFactory(AnimationController) {
56
- var FilterAnimationController = function FilterAnimationController(_ref) {
57
- var filter = _ref.filter,
58
- filterIdx = _ref.filterIdx,
59
- setFilterAnimationTime = _ref.setFilterAnimationTime,
60
- children = _ref.children;
61
- var intervalBins = (0, _react.useMemo)(function () {
62
- return (0, _filterUtils.getIntervalBins)(filter);
63
- }, [filter]);
64
- var steps = (0, _react.useMemo)(function () {
65
- return intervalBins ? intervalBins.map(function (x) {
66
- return x.x0;
67
- }) : null;
68
- }, [intervalBins]);
69
- var updateAnimation = (0, _react.useCallback)(function (value) {
60
+ const FilterAnimationController = _ref => {
61
+ let {
62
+ filter,
63
+ filterIdx,
64
+ setFilterAnimationTime,
65
+ children
66
+ } = _ref;
67
+ const intervalBins = (0, _react.useMemo)(() => (0, _filterUtils.getIntervalBins)(filter), [filter]);
68
+ const steps = (0, _react.useMemo)(() => intervalBins ? intervalBins.map(x => x.x0) : null, [intervalBins]);
69
+ const updateAnimation = (0, _react.useCallback)(value => {
70
70
  switch (filter.animationWindow) {
71
71
  case _defaultSettings.ANIMATION_WINDOW.interval:
72
- var idx = value[1];
72
+ const idx = value[1];
73
73
  setFilterAnimationTime(filterIdx, 'value', [intervalBins[idx].x0, intervalBins[idx].x1 - 1]);
74
74
  break;
75
75
  default:
@@ -77,7 +77,7 @@ function FilterAnimationControllerFactory(AnimationController) {
77
77
  break;
78
78
  }
79
79
  }, [filterIdx, intervalBins, filter.animationWindow, setFilterAnimationTime]);
80
- return /*#__PURE__*/_react["default"].createElement(AnimationController, {
80
+ return /*#__PURE__*/_react.default.createElement(AnimationController, {
81
81
  key: "filter-control",
82
82
  value: filter.value,
83
83
  domain: filter.domain,
@@ -91,13 +91,15 @@ function FilterAnimationControllerFactory(AnimationController) {
91
91
  };
92
92
  return FilterAnimationController;
93
93
  }
94
- LayerAnimationControllerFactory.deps = [_animationController["default"]];
94
+ LayerAnimationControllerFactory.deps = [_animationController.default];
95
95
  function LayerAnimationControllerFactory(AnimationController) {
96
- var LayerAnimationController = function LayerAnimationController(_ref2) {
97
- var animationConfig = _ref2.animationConfig,
98
- setLayerAnimationTime = _ref2.setLayerAnimationTime,
99
- children = _ref2.children;
100
- return /*#__PURE__*/_react["default"].createElement(AnimationController, {
96
+ const LayerAnimationController = _ref2 => {
97
+ let {
98
+ animationConfig,
99
+ setLayerAnimationTime,
100
+ children
101
+ } = _ref2;
102
+ return /*#__PURE__*/_react.default.createElement(AnimationController, {
101
103
  key: "layer-control",
102
104
  value: Number(animationConfig.currentTime),
103
105
  domain: animationConfig.domain,
@@ -111,107 +113,93 @@ function LayerAnimationControllerFactory(AnimationController) {
111
113
  };
112
114
  return LayerAnimationController;
113
115
  }
114
- BottomWidgetFactory.deps = [_timeWidget["default"], _animationControl["default"], FilterAnimationControllerFactory, LayerAnimationControllerFactory];
116
+ BottomWidgetFactory.deps = [_timeWidget.default, _animationControl.default, FilterAnimationControllerFactory, LayerAnimationControllerFactory];
115
117
 
116
118
  /* eslint-disable complexity */
117
119
  function BottomWidgetFactory(TimeWidget, AnimationControl, FilterAnimationController, LayerAnimationController) {
118
- var BottomWidget = function BottomWidget(props) {
120
+ const BottomWidget = props => {
119
121
  var _uiState$mapControls, _uiState$mapControls$, _uiState$mapControls2, _uiState$mapControls3;
120
- var datasets = props.datasets,
121
- filters = props.filters,
122
- animationConfig = props.animationConfig,
123
- visStateActions = props.visStateActions,
124
- containerW = props.containerW,
125
- uiState = props.uiState,
126
- sidePanelWidth = props.sidePanelWidth,
127
- layers = props.layers;
128
- var activeSidePanel = uiState.activeSidePanel,
129
- readOnly = uiState.readOnly;
130
- var isOpen = Boolean(activeSidePanel);
131
- var enlargedFilterIdx = (0, _react.useMemo)(function () {
132
- return filters.findIndex(function (f) {
133
- return f.enlarged && f.type === _defaultSettings.FILTER_TYPES.timeRange;
134
- });
135
- }, [filters]);
136
- var animatedFilterIdx = (0, _react.useMemo)(function () {
137
- return filters.findIndex(function (f) {
138
- return f.isAnimating;
139
- });
140
- }, [filters]);
141
- var animatedFilter = animatedFilterIdx > -1 ? filters[animatedFilterIdx] : null;
142
- var isLegendPinned = ((_uiState$mapControls = uiState.mapControls) === null || _uiState$mapControls === void 0 ? void 0 : (_uiState$mapControls$ = _uiState$mapControls.mapLegend) === null || _uiState$mapControls$ === void 0 ? void 0 : _uiState$mapControls$.show) && ((_uiState$mapControls2 = uiState.mapControls) === null || _uiState$mapControls2 === void 0 ? void 0 : (_uiState$mapControls3 = _uiState$mapControls2.mapLegend) === null || _uiState$mapControls3 === void 0 ? void 0 : _uiState$mapControls3.active);
143
- var spaceForLegendWidth = isLegendPinned ? _defaultSettings.DIMENSIONS.mapControl.width + _defaultSettings.DIMENSIONS.mapControl.mapLegend.pinned.right : 0;
144
- var enlargedFilterWidth = (isOpen ? containerW - sidePanelWidth : containerW) - spaceForLegendWidth;
122
+ const {
123
+ datasets,
124
+ filters,
125
+ animationConfig,
126
+ visStateActions,
127
+ containerW,
128
+ uiState,
129
+ sidePanelWidth,
130
+ layers
131
+ } = props;
132
+ const {
133
+ activeSidePanel,
134
+ readOnly
135
+ } = uiState;
136
+ const isOpen = Boolean(activeSidePanel);
137
+ const enlargedFilterIdx = (0, _react.useMemo)(() => filters.findIndex(f => f.enlarged && f.type === _defaultSettings.FILTER_TYPES.timeRange), [filters]);
138
+ const animatedFilterIdx = (0, _react.useMemo)(() => filters.findIndex(f => f.isAnimating), [filters]);
139
+ const animatedFilter = animatedFilterIdx > -1 ? filters[animatedFilterIdx] : null;
140
+ const isLegendPinned = ((_uiState$mapControls = uiState.mapControls) === null || _uiState$mapControls === void 0 ? void 0 : (_uiState$mapControls$ = _uiState$mapControls.mapLegend) === null || _uiState$mapControls$ === void 0 ? void 0 : _uiState$mapControls$.show) && ((_uiState$mapControls2 = uiState.mapControls) === null || _uiState$mapControls2 === void 0 ? void 0 : (_uiState$mapControls3 = _uiState$mapControls2.mapLegend) === null || _uiState$mapControls3 === void 0 ? void 0 : _uiState$mapControls3.active);
141
+ const spaceForLegendWidth = isLegendPinned ? _defaultSettings.DIMENSIONS.mapControl.width + _defaultSettings.DIMENSIONS.mapControl.mapLegend.pinned.right : 0;
142
+ const enlargedFilterWidth = (isOpen ? containerW - sidePanelWidth : containerW) - spaceForLegendWidth;
145
143
 
146
144
  // show playback control if layers contain trip layer & at least one trip layer is visible
147
- var animatableLayer = (0, _react.useMemo)(function () {
148
- return layers.filter(function (l) {
149
- return l.config.animation && l.config.animation.enabled && l.config.isVisible;
150
- });
151
- }, [layers]);
152
- var readyToAnimation = Array.isArray(animationConfig.domain) && Number.isFinite(animationConfig.currentTime);
145
+ const animatableLayer = (0, _react.useMemo)(() => layers.filter(l => l.config.animation && l.config.animation.enabled && l.config.isVisible), [layers]);
146
+ const readyToAnimation = Array.isArray(animationConfig.domain) && Number.isFinite(animationConfig.currentTime);
153
147
  // if animation control is showing, hide time display in time slider
154
- var showFloatingTimeDisplay = !animatableLayer.length;
155
- var showAnimationControl = animatableLayer.length && readyToAnimation && !animationConfig.hideControl;
156
- var showTimeWidget = enlargedFilterIdx > -1 && Object.keys(datasets).length > 0;
148
+ const showFloatingTimeDisplay = !animatableLayer.length;
149
+ const showAnimationControl = animatableLayer.length && readyToAnimation && !animationConfig.hideControl;
150
+ const showTimeWidget = enlargedFilterIdx > -1 && Object.keys(datasets).length > 0;
157
151
 
158
152
  // if filter is not animating, pass in enlarged filter here because
159
153
  // animation controller needs to call reset on it
160
- var filter = animatedFilter || filters[enlargedFilterIdx];
161
- return /*#__PURE__*/_react["default"].createElement(BottomWidgetContainer, {
154
+ const filter = animatedFilter || filters[enlargedFilterIdx];
155
+ return /*#__PURE__*/_react.default.createElement(BottomWidgetContainer, {
162
156
  width: Math.min(maxWidth, enlargedFilterWidth),
163
157
  style: {
164
158
  marginRight: spaceForLegendWidth
165
159
  },
166
160
  className: "bottom-widget--container",
167
161
  hasPadding: showAnimationControl || showTimeWidget
168
- }, /*#__PURE__*/_react["default"].createElement(LayerAnimationController, {
162
+ }, /*#__PURE__*/_react.default.createElement(LayerAnimationController, {
169
163
  animationConfig: animationConfig,
170
164
  setLayerAnimationTime: visStateActions.setLayerAnimationTime
171
- }, function (isAnimating, start, pause, reset) {
172
- return showAnimationControl ? /*#__PURE__*/_react["default"].createElement(AnimationControl, {
173
- animationConfig: animationConfig,
174
- setLayerAnimationTime: visStateActions.setLayerAnimationTime,
175
- updateAnimationSpeed: visStateActions.updateLayerAnimationSpeed,
176
- toggleAnimation: visStateActions.toggleLayerAnimation,
177
- isAnimatable: !animatedFilter,
178
- isAnimating: isAnimating,
179
- resetAnimation: reset
180
- }) : null;
181
- }), filter && /*#__PURE__*/_react["default"].createElement(FilterAnimationController, {
165
+ }, (isAnimating, start, pause, reset) => showAnimationControl ? /*#__PURE__*/_react.default.createElement(AnimationControl, {
166
+ animationConfig: animationConfig,
167
+ setLayerAnimationTime: visStateActions.setLayerAnimationTime,
168
+ updateAnimationSpeed: visStateActions.updateLayerAnimationSpeed,
169
+ toggleAnimation: visStateActions.toggleLayerAnimation,
170
+ isAnimatable: !animatedFilter,
171
+ isAnimating: isAnimating,
172
+ resetAnimation: reset
173
+ }) : null), filter && /*#__PURE__*/_react.default.createElement(FilterAnimationController, {
182
174
  filter: filter,
183
175
  filterIdx: animatedFilterIdx > -1 ? animatedFilterIdx : enlargedFilterIdx,
184
176
  setFilterAnimationTime: visStateActions.setFilterAnimationTime
185
- }, function (isAnimating, start, pause, resetAnimation) {
186
- return showTimeWidget ? /*#__PURE__*/_react["default"].createElement(TimeWidget
187
- // TimeWidget uses React.memo, here we pass width
188
- // even though it doesnt use it, to force rerender
189
- , {
190
- filter: filters[enlargedFilterIdx],
191
- index: enlargedFilterIdx,
192
- datasets: datasets,
193
- readOnly: readOnly,
194
- showTimeDisplay: showFloatingTimeDisplay,
195
- setFilterPlot: visStateActions.setFilterPlot,
196
- setFilterAnimationTime: visStateActions.setFilterAnimationTime,
197
- setFilterAnimationWindow: visStateActions.setFilterAnimationWindow,
198
- toggleAnimation: visStateActions.toggleFilterAnimation,
199
- updateAnimationSpeed: visStateActions.updateFilterAnimationSpeed,
200
- enlargeFilter: visStateActions.enlargeFilter,
201
- resetAnimation: resetAnimation,
202
- isAnimatable: !animationConfig || !animationConfig.isAnimating
203
- }) : null;
204
- }));
177
+ }, (isAnimating, start, pause, resetAnimation) => showTimeWidget ? /*#__PURE__*/_react.default.createElement(TimeWidget
178
+ // TimeWidget uses React.memo, here we pass width
179
+ // even though it doesnt use it, to force rerender
180
+ , {
181
+ filter: filters[enlargedFilterIdx],
182
+ index: enlargedFilterIdx,
183
+ datasets: datasets,
184
+ readOnly: readOnly,
185
+ showTimeDisplay: showFloatingTimeDisplay,
186
+ setFilterPlot: visStateActions.setFilterPlot,
187
+ setFilterAnimationTime: visStateActions.setFilterAnimationTime,
188
+ setFilterAnimationWindow: visStateActions.setFilterAnimationWindow,
189
+ toggleAnimation: visStateActions.toggleFilterAnimation,
190
+ updateAnimationSpeed: visStateActions.updateFilterAnimationSpeed,
191
+ enlargeFilter: visStateActions.enlargeFilter,
192
+ resetAnimation: resetAnimation,
193
+ isAnimatable: !animationConfig || !animationConfig.isAnimating
194
+ }) : null));
205
195
  };
206
196
 
207
197
  /* eslint-disable react/display-name */
208
198
  // @ts-ignore
209
- return /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
210
- return /*#__PURE__*/_react["default"].createElement(BottomWidget, (0, _extends2["default"])({}, props, {
211
- rootRef: ref
212
- }));
213
- });
199
+ return /*#__PURE__*/(0, _react.forwardRef)((props, ref) => /*#__PURE__*/_react.default.createElement(BottomWidget, (0, _extends2.default)({}, props, {
200
+ rootRef: ref
201
+ })));
214
202
  /* eslint-enable react/display-name */
215
203
  }
216
204
  /* eslint-enable complexity */
217
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdGltZVdpZGdldCIsIl9hbmltYXRpb25Db250cm9sIiwiX2FuaW1hdGlvbkNvbnRyb2xsZXIiLCJfZGVmYXVsdFNldHRpbmdzIiwiX2ZpbHRlclV0aWxzIiwiX21lZGlhQnJlYWtwb2ludHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwibWF4V2lkdGgiLCJCb3R0b21XaWRnZXRDb250YWluZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwiaGFzUGFkZGluZyIsInRoZW1lIiwiYm90dG9tV2lkZ2V0UGFkZGluZ1RvcCIsImJvdHRvbVdpZGdldFBhZGRpbmdSaWdodCIsImJvdHRvbVdpZGdldFBhZGRpbmdCb3R0b20iLCJib3R0b21XaWRnZXRQYWRkaW5nTGVmdCIsIndpZHRoIiwibWVkaWEiLCJwb3J0YWJsZSIsIkZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5IiwiZGVwcyIsIkFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5IiwiQW5pbWF0aW9uQ29udHJvbGxlciIsIkZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXIiLCJfcmVmIiwiZmlsdGVyIiwiZmlsdGVySWR4Iiwic2V0RmlsdGVyQW5pbWF0aW9uVGltZSIsImNoaWxkcmVuIiwiaW50ZXJ2YWxCaW5zIiwidXNlTWVtbyIsImdldEludGVydmFsQmlucyIsInN0ZXBzIiwibWFwIiwieCIsIngwIiwidXBkYXRlQW5pbWF0aW9uIiwidXNlQ2FsbGJhY2siLCJ2YWx1ZSIsImFuaW1hdGlvbldpbmRvdyIsIkFOSU1BVElPTl9XSU5ET1ciLCJpbnRlcnZhbCIsImlkeCIsIngxIiwiY3JlYXRlRWxlbWVudCIsImtleSIsImRvbWFpbiIsInNwZWVkIiwiaXNBbmltYXRpbmciLCJMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5IiwiTGF5ZXJBbmltYXRpb25Db250cm9sbGVyIiwiX3JlZjIiLCJhbmltYXRpb25Db25maWciLCJzZXRMYXllckFuaW1hdGlvblRpbWUiLCJOdW1iZXIiLCJjdXJyZW50VGltZSIsInRpbWVTdGVwcyIsInBvaW50IiwiQm90dG9tV2lkZ2V0RmFjdG9yeSIsIlRpbWVXaWRnZXRGYWN0b3J5IiwiQW5pbWF0aW9uQ29udHJvbEZhY3RvcnkiLCJUaW1lV2lkZ2V0IiwiQW5pbWF0aW9uQ29udHJvbCIsIkJvdHRvbVdpZGdldCIsIl91aVN0YXRlJG1hcENvbnRyb2xzIiwiX3VpU3RhdGUkbWFwQ29udHJvbHMkIiwiX3VpU3RhdGUkbWFwQ29udHJvbHMyIiwiX3VpU3RhdGUkbWFwQ29udHJvbHMzIiwiZGF0YXNldHMiLCJmaWx0ZXJzIiwidmlzU3RhdGVBY3Rpb25zIiwiY29udGFpbmVyVyIsInVpU3RhdGUiLCJzaWRlUGFuZWxXaWR0aCIsImxheWVycyIsImFjdGl2ZVNpZGVQYW5lbCIsInJlYWRPbmx5IiwiaXNPcGVuIiwiQm9vbGVhbiIsImVubGFyZ2VkRmlsdGVySWR4IiwiZmluZEluZGV4IiwiZiIsImVubGFyZ2VkIiwidHlwZSIsIkZJTFRFUl9UWVBFUyIsInRpbWVSYW5nZSIsImFuaW1hdGVkRmlsdGVySWR4IiwiYW5pbWF0ZWRGaWx0ZXIiLCJpc0xlZ2VuZFBpbm5lZCIsIm1hcENvbnRyb2xzIiwibWFwTGVnZW5kIiwic2hvdyIsImFjdGl2ZSIsInNwYWNlRm9yTGVnZW5kV2lkdGgiLCJESU1FTlNJT05TIiwibWFwQ29udHJvbCIsInBpbm5lZCIsInJpZ2h0IiwiZW5sYXJnZWRGaWx0ZXJXaWR0aCIsImFuaW1hdGFibGVMYXllciIsImwiLCJjb25maWciLCJhbmltYXRpb24iLCJlbmFibGVkIiwiaXNWaXNpYmxlIiwicmVhZHlUb0FuaW1hdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImlzRmluaXRlIiwic2hvd0Zsb2F0aW5nVGltZURpc3BsYXkiLCJsZW5ndGgiLCJzaG93QW5pbWF0aW9uQ29udHJvbCIsImhpZGVDb250cm9sIiwic2hvd1RpbWVXaWRnZXQiLCJrZXlzIiwiTWF0aCIsIm1pbiIsInN0eWxlIiwibWFyZ2luUmlnaHQiLCJjbGFzc05hbWUiLCJzdGFydCIsInBhdXNlIiwicmVzZXQiLCJ1cGRhdGVBbmltYXRpb25TcGVlZCIsInVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWQiLCJ0b2dnbGVBbmltYXRpb24iLCJ0b2dnbGVMYXllckFuaW1hdGlvbiIsImlzQW5pbWF0YWJsZSIsInJlc2V0QW5pbWF0aW9uIiwiaW5kZXgiLCJzaG93VGltZURpc3BsYXkiLCJzZXRGaWx0ZXJQbG90Iiwic2V0RmlsdGVyQW5pbWF0aW9uV2luZG93IiwidG9nZ2xlRmlsdGVyQW5pbWF0aW9uIiwidXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWQiLCJlbmxhcmdlRmlsdGVyIiwiZm9yd2FyZFJlZiIsInJlZiIsIl9leHRlbmRzMiIsInJvb3RSZWYiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9ib3R0b20td2lkZ2V0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgZm9yd2FyZFJlZiwgdXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgVGltZVdpZGdldEZhY3RvcnkgZnJvbSAnLi9maWx0ZXJzL3RpbWUtd2lkZ2V0JztcbmltcG9ydCBBbmltYXRpb25Db250cm9sRmFjdG9yeSBmcm9tICcuL2NvbW1vbi9hbmltYXRpb24tY29udHJvbC9hbmltYXRpb24tY29udHJvbCc7XG5pbXBvcnQgQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkgZnJvbSAnLi9jb21tb24vYW5pbWF0aW9uLWNvbnRyb2wvYW5pbWF0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IHtBTklNQVRJT05fV0lORE9XLCBESU1FTlNJT05TLCBGSUxURVJfVFlQRVN9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7Z2V0SW50ZXJ2YWxCaW5zfSBmcm9tICd1dGlscy9maWx0ZXItdXRpbHMnO1xuaW1wb3J0IHttZWRpYX0gZnJvbSAnc3R5bGVzL21lZGlhLWJyZWFrcG9pbnRzJztcbmltcG9ydCB7QW5pbWF0aW9uQ29uZmlnLCBUaW1lUmFuZ2VGaWx0ZXJ9IGZyb20gJ3JlZHVjZXJzJztcbmltcG9ydCB7Ym90dG9tV2lkZ2V0U2VsZWN0b3J9IGZyb20gJy4va2VwbGVyLWdsJztcblxuY29uc3QgbWF4V2lkdGggPSAxMDgwO1xuXG5pbnRlcmZhY2UgQm90dG9tV2lkZ2V0Q29udGFpbmVyUHJvcHMge1xuICBoYXNQYWRkaW5nPzogYm9vbGVhbjtcbiAgd2lkdGg/OiBudW1iZXI7XG59XG5cbmNvbnN0IEJvdHRvbVdpZGdldENvbnRhaW5lciA9IHN0eWxlZC5kaXY8Qm90dG9tV2lkZ2V0Q29udGFpbmVyUHJvcHM+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nLXRvcDogJHtwcm9wcyA9PiAocHJvcHMuaGFzUGFkZGluZyA/IHByb3BzLnRoZW1lLmJvdHRvbVdpZGdldFBhZGRpbmdUb3AgOiAwKX1weDtcbiAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiAocHJvcHMuaGFzUGFkZGluZyA/IHByb3BzLnRoZW1lLmJvdHRvbVdpZGdldFBhZGRpbmdSaWdodCA6IDApfXB4O1xuICBwYWRkaW5nLWJvdHRvbTogJHtwcm9wcyA9PiAocHJvcHMuaGFzUGFkZGluZyA/IHByb3BzLnRoZW1lLmJvdHRvbVdpZGdldFBhZGRpbmdCb3R0b20gOiAwKX1weDtcbiAgcGFkZGluZy1sZWZ0OiAke3Byb3BzID0+IChwcm9wcy5oYXNQYWRkaW5nID8gcHJvcHMudGhlbWUuYm90dG9tV2lkZ2V0UGFkZGluZ0xlZnQgOiAwKX1weDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsgLyogcHJldmVudCBwYWRkaW5nIGZyb20gYmxvY2tpbmcgaW5wdXQgKi9cbiAgJiA+ICoge1xuICAgIC8qIGFsbCBjaGlsZHJlbiBzaG91bGQgYWxsb3cgaW5wdXQgKi9cbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICB9XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRofXB4O1xuICB6LWluZGV4OiAxO1xuICAke21lZGlhLnBvcnRhYmxlYHBhZGRpbmc6IDA7YH1cbmA7XG5cbmludGVyZmFjZSBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyUHJvcHMge1xuICBjaGlsZHJlbj86IEZ1bmN0aW9uO1xuICBmaWx0ZXI6IFRpbWVSYW5nZUZpbHRlciAmIHthbmltYXRpb25XaW5kb3c/OiBzdHJpbmd9O1xuICBmaWx0ZXJJZHg6IG51bWJlcjtcbiAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZTogKGlkeDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nLCBhOiBhbnlbXSkgPT4gdm9pZDtcbn1cblxuRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkuZGVwcyA9IFtBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkoXG4gIEFuaW1hdGlvbkNvbnRyb2xsZXI6IFJldHVyblR5cGU8dHlwZW9mIEFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXI6IFJlYWN0LkZDPEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJQcm9wcz4gPSAoe1xuICAgIGZpbHRlcixcbiAgICBmaWx0ZXJJZHgsXG4gICAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZSxcbiAgICBjaGlsZHJlblxuICB9KSA9PiB7XG4gICAgY29uc3QgaW50ZXJ2YWxCaW5zID0gdXNlTWVtbygoKSA9PiBnZXRJbnRlcnZhbEJpbnMoZmlsdGVyKSwgW2ZpbHRlcl0pO1xuXG4gICAgY29uc3Qgc3RlcHMgPSB1c2VNZW1vKCgpID0+IChpbnRlcnZhbEJpbnMgPyBpbnRlcnZhbEJpbnMubWFwKHggPT4geC54MCkgOiBudWxsKSwgW1xuICAgICAgaW50ZXJ2YWxCaW5zXG4gICAgXSk7XG5cbiAgICBjb25zdCB1cGRhdGVBbmltYXRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIuYW5pbWF0aW9uV2luZG93KSB7XG4gICAgICAgICAgY2FzZSBBTklNQVRJT05fV0lORE9XLmludGVydmFsOlxuICAgICAgICAgICAgY29uc3QgaWR4ID0gdmFsdWVbMV07XG4gICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lKGZpbHRlcklkeCwgJ3ZhbHVlJywgW1xuICAgICAgICAgICAgICBpbnRlcnZhbEJpbnNbaWR4XS54MCxcbiAgICAgICAgICAgICAgaW50ZXJ2YWxCaW5zW2lkeF0ueDEgLSAxXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lKGZpbHRlcklkeCwgJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbZmlsdGVySWR4LCBpbnRlcnZhbEJpbnMsIGZpbHRlci5hbmltYXRpb25XaW5kb3csIHNldEZpbHRlckFuaW1hdGlvblRpbWVdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8QW5pbWF0aW9uQ29udHJvbGxlclxuICAgICAgICBrZXk9XCJmaWx0ZXItY29udHJvbFwiXG4gICAgICAgIHZhbHVlPXtmaWx0ZXIudmFsdWV9XG4gICAgICAgIGRvbWFpbj17ZmlsdGVyLmRvbWFpbn1cbiAgICAgICAgc3BlZWQ9e2ZpbHRlci5zcGVlZH1cbiAgICAgICAgaXNBbmltYXRpbmc9e2ZpbHRlci5pc0FuaW1hdGluZ31cbiAgICAgICAgYW5pbWF0aW9uV2luZG93PXtmaWx0ZXIuYW5pbWF0aW9uV2luZG93fVxuICAgICAgICBzdGVwcz17c3RlcHN9XG4gICAgICAgIHVwZGF0ZUFuaW1hdGlvbj17dXBkYXRlQW5pbWF0aW9ufVxuICAgICAgICBjaGlsZHJlbj17Y2hpbGRyZW59XG4gICAgICAvPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyO1xufVxuXG5pbnRlcmZhY2UgTGF5ZXJBbmltYXRpb25Db250cm9sbGVyUHJvcHMge1xuICBjaGlsZHJlbj86IEZ1bmN0aW9uO1xuICBhbmltYXRpb25Db25maWc6IEFuaW1hdGlvbkNvbmZpZyAmIHt0aW1lU3RlcHM/OiBudW1iZXJbXSB8IG51bGx9O1xuICBzZXRMYXllckFuaW1hdGlvblRpbWU6ICh4OiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbkxheWVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkuZGVwcyA9IFtBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeShcbiAgQW5pbWF0aW9uQ29udHJvbGxlcjogUmV0dXJuVHlwZTx0eXBlb2YgQW5pbWF0aW9uQ29udHJvbGxlckZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOiBSZWFjdC5GQzxMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJQcm9wcz4gPSAoe1xuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBzZXRMYXllckFuaW1hdGlvblRpbWUsXG4gICAgY2hpbGRyZW5cbiAgfSkgPT4gKFxuICAgIDxBbmltYXRpb25Db250cm9sbGVyPG51bWJlcj5cbiAgICAgIGtleT1cImxheWVyLWNvbnRyb2xcIlxuICAgICAgdmFsdWU9e051bWJlcihhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUpfVxuICAgICAgZG9tYWluPXthbmltYXRpb25Db25maWcuZG9tYWlufVxuICAgICAgc3BlZWQ9e2FuaW1hdGlvbkNvbmZpZy5zcGVlZH1cbiAgICAgIGlzQW5pbWF0aW5nPXthbmltYXRpb25Db25maWcuaXNBbmltYXRpbmd9XG4gICAgICB1cGRhdGVBbmltYXRpb249e3NldExheWVyQW5pbWF0aW9uVGltZX1cbiAgICAgIHN0ZXBzPXthbmltYXRpb25Db25maWcudGltZVN0ZXBzfVxuICAgICAgYW5pbWF0aW9uV2luZG93PXtcbiAgICAgICAgYW5pbWF0aW9uQ29uZmlnLnRpbWVTdGVwcyA/IEFOSU1BVElPTl9XSU5ET1cuaW50ZXJ2YWwgOiBBTklNQVRJT05fV0lORE9XLnBvaW50XG4gICAgICB9XG4gICAgICBjaGlsZHJlbj17Y2hpbGRyZW59XG4gICAgLz5cbiAgKTtcbiAgcmV0dXJuIExheWVyQW5pbWF0aW9uQ29udHJvbGxlcjtcbn1cblxudHlwZSBCb3R0b21XaWRnZXRQcm9wcyA9IHtcbiAgY29udGFpbmVyVzogbnVtYmVyO1xufSAmIFJldHVyblR5cGU8dHlwZW9mIGJvdHRvbVdpZGdldFNlbGVjdG9yPjtcblxuQm90dG9tV2lkZ2V0RmFjdG9yeS5kZXBzID0gW1xuICBUaW1lV2lkZ2V0RmFjdG9yeSxcbiAgQW5pbWF0aW9uQ29udHJvbEZhY3RvcnksXG4gIEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5LFxuICBMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5XG5dO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCb3R0b21XaWRnZXRGYWN0b3J5KFxuICBUaW1lV2lkZ2V0OiBSZXR1cm5UeXBlPHR5cGVvZiBUaW1lV2lkZ2V0RmFjdG9yeT4sXG4gIEFuaW1hdGlvbkNvbnRyb2w6IFJldHVyblR5cGU8dHlwZW9mIEFuaW1hdGlvbkNvbnRyb2xGYWN0b3J5PixcbiAgRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlcjogUmV0dXJuVHlwZTx0eXBlb2YgRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3Rvcnk+LFxuICBMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6IFJldHVyblR5cGU8dHlwZW9mIExheWVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgQm90dG9tV2lkZ2V0ID0gKHByb3BzOiBCb3R0b21XaWRnZXRQcm9wcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGRhdGFzZXRzLFxuICAgICAgZmlsdGVycyxcbiAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgIGNvbnRhaW5lclcsXG4gICAgICB1aVN0YXRlLFxuICAgICAgc2lkZVBhbmVsV2lkdGgsXG4gICAgICBsYXllcnNcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCB7YWN0aXZlU2lkZVBhbmVsLCByZWFkT25seX0gPSB1aVN0YXRlO1xuICAgIGNvbnN0IGlzT3BlbiA9IEJvb2xlYW4oYWN0aXZlU2lkZVBhbmVsKTtcblxuICAgIGNvbnN0IGVubGFyZ2VkRmlsdGVySWR4ID0gdXNlTWVtbyhcbiAgICAgICgpID0+IGZpbHRlcnMuZmluZEluZGV4KGYgPT4gZi5lbmxhcmdlZCAmJiBmLnR5cGUgPT09IEZJTFRFUl9UWVBFUy50aW1lUmFuZ2UpLFxuICAgICAgW2ZpbHRlcnNdXG4gICAgKTtcbiAgICBjb25zdCBhbmltYXRlZEZpbHRlcklkeCA9IHVzZU1lbW8oKCkgPT4gZmlsdGVycy5maW5kSW5kZXgoZiA9PiBmLmlzQW5pbWF0aW5nKSwgW2ZpbHRlcnNdKTtcbiAgICBjb25zdCBhbmltYXRlZEZpbHRlciA9IGFuaW1hdGVkRmlsdGVySWR4ID4gLTEgPyBmaWx0ZXJzW2FuaW1hdGVkRmlsdGVySWR4XSA6IG51bGw7XG5cbiAgICBjb25zdCBpc0xlZ2VuZFBpbm5lZCA9XG4gICAgICB1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LnNob3cgJiYgdWlTdGF0ZS5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5hY3RpdmU7XG4gICAgY29uc3Qgc3BhY2VGb3JMZWdlbmRXaWR0aCA9IGlzTGVnZW5kUGlubmVkXG4gICAgICA/IERJTUVOU0lPTlMubWFwQ29udHJvbC53aWR0aCArIERJTUVOU0lPTlMubWFwQ29udHJvbC5tYXBMZWdlbmQucGlubmVkLnJpZ2h0XG4gICAgICA6IDA7XG5cbiAgICBjb25zdCBlbmxhcmdlZEZpbHRlcldpZHRoID1cbiAgICAgIChpc09wZW4gPyBjb250YWluZXJXIC0gc2lkZVBhbmVsV2lkdGggOiBjb250YWluZXJXKSAtIHNwYWNlRm9yTGVnZW5kV2lkdGg7XG5cbiAgICAvLyBzaG93IHBsYXliYWNrIGNvbnRyb2wgaWYgbGF5ZXJzIGNvbnRhaW4gdHJpcCBsYXllciAmIGF0IGxlYXN0IG9uZSB0cmlwIGxheWVyIGlzIHZpc2libGVcbiAgICBjb25zdCBhbmltYXRhYmxlTGF5ZXIgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgbGF5ZXJzLmZpbHRlcihsID0+IGwuY29uZmlnLmFuaW1hdGlvbiAmJiBsLmNvbmZpZy5hbmltYXRpb24uZW5hYmxlZCAmJiBsLmNvbmZpZy5pc1Zpc2libGUpLFxuICAgICAgW2xheWVyc11cbiAgICApO1xuXG4gICAgY29uc3QgcmVhZHlUb0FuaW1hdGlvbiA9XG4gICAgICBBcnJheS5pc0FycmF5KGFuaW1hdGlvbkNvbmZpZy5kb21haW4pICYmIE51bWJlci5pc0Zpbml0ZShhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUpO1xuICAgIC8vIGlmIGFuaW1hdGlvbiBjb250cm9sIGlzIHNob3dpbmcsIGhpZGUgdGltZSBkaXNwbGF5IGluIHRpbWUgc2xpZGVyXG4gICAgY29uc3Qgc2hvd0Zsb2F0aW5nVGltZURpc3BsYXkgPSAhYW5pbWF0YWJsZUxheWVyLmxlbmd0aDtcbiAgICBjb25zdCBzaG93QW5pbWF0aW9uQ29udHJvbCA9XG4gICAgICBhbmltYXRhYmxlTGF5ZXIubGVuZ3RoICYmIHJlYWR5VG9BbmltYXRpb24gJiYgIWFuaW1hdGlvbkNvbmZpZy5oaWRlQ29udHJvbDtcbiAgICBjb25zdCBzaG93VGltZVdpZGdldCA9IGVubGFyZ2VkRmlsdGVySWR4ID4gLTEgJiYgT2JqZWN0LmtleXMoZGF0YXNldHMpLmxlbmd0aCA+IDA7XG5cbiAgICAvLyBpZiBmaWx0ZXIgaXMgbm90IGFuaW1hdGluZywgcGFzcyBpbiBlbmxhcmdlZCBmaWx0ZXIgaGVyZSBiZWNhdXNlXG4gICAgLy8gYW5pbWF0aW9uIGNvbnRyb2xsZXIgbmVlZHMgdG8gY2FsbCByZXNldCBvbiBpdFxuICAgIGNvbnN0IGZpbHRlciA9IChhbmltYXRlZEZpbHRlciBhcyBUaW1lUmFuZ2VGaWx0ZXIpIHx8IGZpbHRlcnNbZW5sYXJnZWRGaWx0ZXJJZHhdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxCb3R0b21XaWRnZXRDb250YWluZXJcbiAgICAgICAgd2lkdGg9e01hdGgubWluKG1heFdpZHRoLCBlbmxhcmdlZEZpbHRlcldpZHRoKX1cbiAgICAgICAgc3R5bGU9e3ttYXJnaW5SaWdodDogc3BhY2VGb3JMZWdlbmRXaWR0aH19XG4gICAgICAgIGNsYXNzTmFtZT1cImJvdHRvbS13aWRnZXQtLWNvbnRhaW5lclwiXG4gICAgICAgIGhhc1BhZGRpbmc9e3Nob3dBbmltYXRpb25Db250cm9sIHx8IHNob3dUaW1lV2lkZ2V0fVxuICAgICAgPlxuICAgICAgICA8TGF5ZXJBbmltYXRpb25Db250cm9sbGVyXG4gICAgICAgICAgYW5pbWF0aW9uQ29uZmlnPXthbmltYXRpb25Db25maWd9XG4gICAgICAgICAgc2V0TGF5ZXJBbmltYXRpb25UaW1lPXt2aXNTdGF0ZUFjdGlvbnMuc2V0TGF5ZXJBbmltYXRpb25UaW1lfVxuICAgICAgICA+XG4gICAgICAgICAgeyhpc0FuaW1hdGluZywgc3RhcnQsIHBhdXNlLCByZXNldCkgPT5cbiAgICAgICAgICAgIHNob3dBbmltYXRpb25Db250cm9sID8gKFxuICAgICAgICAgICAgICA8QW5pbWF0aW9uQ29udHJvbFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkNvbmZpZz17YW5pbWF0aW9uQ29uZmlnfVxuICAgICAgICAgICAgICAgIHNldExheWVyQW5pbWF0aW9uVGltZT17dmlzU3RhdGVBY3Rpb25zLnNldExheWVyQW5pbWF0aW9uVGltZX1cbiAgICAgICAgICAgICAgICB1cGRhdGVBbmltYXRpb25TcGVlZD17dmlzU3RhdGVBY3Rpb25zLnVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWR9XG4gICAgICAgICAgICAgICAgdG9nZ2xlQW5pbWF0aW9uPXt2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJBbmltYXRpb259XG4gICAgICAgICAgICAgICAgaXNBbmltYXRhYmxlPXshYW5pbWF0ZWRGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgaXNBbmltYXRpbmc9e2lzQW5pbWF0aW5nfVxuICAgICAgICAgICAgICAgIHJlc2V0QW5pbWF0aW9uPXtyZXNldH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICA8L0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj5cbiAgICAgICAge2ZpbHRlciAmJiAoXG4gICAgICAgICAgPEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJcbiAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyIGFzIGFueX1cbiAgICAgICAgICAgIGZpbHRlcklkeD17YW5pbWF0ZWRGaWx0ZXJJZHggPiAtMSA/IGFuaW1hdGVkRmlsdGVySWR4IDogZW5sYXJnZWRGaWx0ZXJJZHh9XG4gICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lPXt2aXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyQW5pbWF0aW9uVGltZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7KGlzQW5pbWF0aW5nLCBzdGFydCwgcGF1c2UsIHJlc2V0QW5pbWF0aW9uKSA9PlxuICAgICAgICAgICAgICBzaG93VGltZVdpZGdldCA/IChcbiAgICAgICAgICAgICAgICA8VGltZVdpZGdldFxuICAgICAgICAgICAgICAgICAgLy8gVGltZVdpZGdldCB1c2VzIFJlYWN0Lm1lbW8sIGhlcmUgd2UgcGFzcyB3aWR0aFxuICAgICAgICAgICAgICAgICAgLy8gZXZlbiB0aG91Z2ggaXQgZG9lc250IHVzZSBpdCwgdG8gZm9yY2UgcmVyZW5kZXJcbiAgICAgICAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyc1tlbmxhcmdlZEZpbHRlcklkeF0gYXMgVGltZVJhbmdlRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2VubGFyZ2VkRmlsdGVySWR4fVxuICAgICAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICAgICAgICAgICAgc2hvd1RpbWVEaXNwbGF5PXtzaG93RmxvYXRpbmdUaW1lRGlzcGxheX1cbiAgICAgICAgICAgICAgICAgIHNldEZpbHRlclBsb3Q9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJQbG90fVxuICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZT17dmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlckFuaW1hdGlvblRpbWV9XG4gICAgICAgICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25XaW5kb3c9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJBbmltYXRpb25XaW5kb3d9XG4gICAgICAgICAgICAgICAgICB0b2dnbGVBbmltYXRpb249e3Zpc1N0YXRlQWN0aW9ucy50b2dnbGVGaWx0ZXJBbmltYXRpb259XG4gICAgICAgICAgICAgICAgICB1cGRhdGVBbmltYXRpb25TcGVlZD17dmlzU3RhdGVBY3Rpb25zLnVwZGF0ZUZpbHRlckFuaW1hdGlvblNwZWVkfVxuICAgICAgICAgICAgICAgICAgZW5sYXJnZUZpbHRlcj17dmlzU3RhdGVBY3Rpb25zLmVubGFyZ2VGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICByZXNldEFuaW1hdGlvbj17cmVzZXRBbmltYXRpb259XG4gICAgICAgICAgICAgICAgICBpc0FuaW1hdGFibGU9eyFhbmltYXRpb25Db25maWcgfHwgIWFuaW1hdGlvbkNvbmZpZy5pc0FuaW1hdGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlcj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm90dG9tV2lkZ2V0Q29udGFpbmVyPlxuICAgICk7XG4gIH07XG5cbiAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZGlzcGxheS1uYW1lICovXG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGZvcndhcmRSZWYoKHByb3BzOiBCb3R0b21XaWRnZXRQcm9wcywgcmVmKSA9PiA8Qm90dG9tV2lkZ2V0IHsuLi5wcm9wc30gcm9vdFJlZj17cmVmfSAvPik7XG4gIC8qIGVzbGludC1lbmFibGUgcmVhY3QvZGlzcGxheS1uYW1lICovXG59XG4vKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cbiJdLCJtYXBwaW5ncyI6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
205
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdGltZVdpZGdldCIsIl9hbmltYXRpb25Db250cm9sIiwiX2FuaW1hdGlvbkNvbnRyb2xsZXIiLCJfZGVmYXVsdFNldHRpbmdzIiwiX2ZpbHRlclV0aWxzIiwiX21lZGlhQnJlYWtwb2ludHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJtYXhXaWR0aCIsIkJvdHRvbVdpZGdldENvbnRhaW5lciIsInN0eWxlZCIsImRpdiIsInByb3BzIiwiaGFzUGFkZGluZyIsInRoZW1lIiwiYm90dG9tV2lkZ2V0UGFkZGluZ1RvcCIsImJvdHRvbVdpZGdldFBhZGRpbmdSaWdodCIsImJvdHRvbVdpZGdldFBhZGRpbmdCb3R0b20iLCJib3R0b21XaWRnZXRQYWRkaW5nTGVmdCIsIndpZHRoIiwibWVkaWEiLCJwb3J0YWJsZSIsIkZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5IiwiZGVwcyIsIkFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5IiwiQW5pbWF0aW9uQ29udHJvbGxlciIsIkZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXIiLCJfcmVmIiwiZmlsdGVyIiwiZmlsdGVySWR4Iiwic2V0RmlsdGVyQW5pbWF0aW9uVGltZSIsImNoaWxkcmVuIiwiaW50ZXJ2YWxCaW5zIiwidXNlTWVtbyIsImdldEludGVydmFsQmlucyIsInN0ZXBzIiwibWFwIiwieCIsIngwIiwidXBkYXRlQW5pbWF0aW9uIiwidXNlQ2FsbGJhY2siLCJ2YWx1ZSIsImFuaW1hdGlvbldpbmRvdyIsIkFOSU1BVElPTl9XSU5ET1ciLCJpbnRlcnZhbCIsImlkeCIsIngxIiwiY3JlYXRlRWxlbWVudCIsImtleSIsImRvbWFpbiIsInNwZWVkIiwiaXNBbmltYXRpbmciLCJMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5IiwiTGF5ZXJBbmltYXRpb25Db250cm9sbGVyIiwiX3JlZjIiLCJhbmltYXRpb25Db25maWciLCJzZXRMYXllckFuaW1hdGlvblRpbWUiLCJOdW1iZXIiLCJjdXJyZW50VGltZSIsInRpbWVTdGVwcyIsInBvaW50IiwiQm90dG9tV2lkZ2V0RmFjdG9yeSIsIlRpbWVXaWRnZXRGYWN0b3J5IiwiQW5pbWF0aW9uQ29udHJvbEZhY3RvcnkiLCJUaW1lV2lkZ2V0IiwiQW5pbWF0aW9uQ29udHJvbCIsIkJvdHRvbVdpZGdldCIsIl91aVN0YXRlJG1hcENvbnRyb2xzIiwiX3VpU3RhdGUkbWFwQ29udHJvbHMkIiwiX3VpU3RhdGUkbWFwQ29udHJvbHMyIiwiX3VpU3RhdGUkbWFwQ29udHJvbHMzIiwiZGF0YXNldHMiLCJmaWx0ZXJzIiwidmlzU3RhdGVBY3Rpb25zIiwiY29udGFpbmVyVyIsInVpU3RhdGUiLCJzaWRlUGFuZWxXaWR0aCIsImxheWVycyIsImFjdGl2ZVNpZGVQYW5lbCIsInJlYWRPbmx5IiwiaXNPcGVuIiwiQm9vbGVhbiIsImVubGFyZ2VkRmlsdGVySWR4IiwiZmluZEluZGV4IiwiZiIsImVubGFyZ2VkIiwidHlwZSIsIkZJTFRFUl9UWVBFUyIsInRpbWVSYW5nZSIsImFuaW1hdGVkRmlsdGVySWR4IiwiYW5pbWF0ZWRGaWx0ZXIiLCJpc0xlZ2VuZFBpbm5lZCIsIm1hcENvbnRyb2xzIiwibWFwTGVnZW5kIiwic2hvdyIsImFjdGl2ZSIsInNwYWNlRm9yTGVnZW5kV2lkdGgiLCJESU1FTlNJT05TIiwibWFwQ29udHJvbCIsInBpbm5lZCIsInJpZ2h0IiwiZW5sYXJnZWRGaWx0ZXJXaWR0aCIsImFuaW1hdGFibGVMYXllciIsImwiLCJjb25maWciLCJhbmltYXRpb24iLCJlbmFibGVkIiwiaXNWaXNpYmxlIiwicmVhZHlUb0FuaW1hdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImlzRmluaXRlIiwic2hvd0Zsb2F0aW5nVGltZURpc3BsYXkiLCJsZW5ndGgiLCJzaG93QW5pbWF0aW9uQ29udHJvbCIsImhpZGVDb250cm9sIiwic2hvd1RpbWVXaWRnZXQiLCJrZXlzIiwiTWF0aCIsIm1pbiIsInN0eWxlIiwibWFyZ2luUmlnaHQiLCJjbGFzc05hbWUiLCJzdGFydCIsInBhdXNlIiwicmVzZXQiLCJ1cGRhdGVBbmltYXRpb25TcGVlZCIsInVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWQiLCJ0b2dnbGVBbmltYXRpb24iLCJ0b2dnbGVMYXllckFuaW1hdGlvbiIsImlzQW5pbWF0YWJsZSIsInJlc2V0QW5pbWF0aW9uIiwiaW5kZXgiLCJzaG93VGltZURpc3BsYXkiLCJzZXRGaWx0ZXJQbG90Iiwic2V0RmlsdGVyQW5pbWF0aW9uV2luZG93IiwidG9nZ2xlRmlsdGVyQW5pbWF0aW9uIiwidXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWQiLCJlbmxhcmdlRmlsdGVyIiwiZm9yd2FyZFJlZiIsInJlZiIsIl9leHRlbmRzMiIsInJvb3RSZWYiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9ib3R0b20td2lkZ2V0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgZm9yd2FyZFJlZiwgdXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgVGltZVdpZGdldEZhY3RvcnkgZnJvbSAnLi9maWx0ZXJzL3RpbWUtd2lkZ2V0JztcbmltcG9ydCBBbmltYXRpb25Db250cm9sRmFjdG9yeSBmcm9tICcuL2NvbW1vbi9hbmltYXRpb24tY29udHJvbC9hbmltYXRpb24tY29udHJvbCc7XG5pbXBvcnQgQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkgZnJvbSAnLi9jb21tb24vYW5pbWF0aW9uLWNvbnRyb2wvYW5pbWF0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IHtBTklNQVRJT05fV0lORE9XLCBESU1FTlNJT05TLCBGSUxURVJfVFlQRVN9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7Z2V0SW50ZXJ2YWxCaW5zfSBmcm9tICd1dGlscy9maWx0ZXItdXRpbHMnO1xuaW1wb3J0IHttZWRpYX0gZnJvbSAnc3R5bGVzL21lZGlhLWJyZWFrcG9pbnRzJztcbmltcG9ydCB7QW5pbWF0aW9uQ29uZmlnLCBUaW1lUmFuZ2VGaWx0ZXJ9IGZyb20gJ3JlZHVjZXJzJztcbmltcG9ydCB7Ym90dG9tV2lkZ2V0U2VsZWN0b3J9IGZyb20gJy4va2VwbGVyLWdsJztcblxuY29uc3QgbWF4V2lkdGggPSAxMDgwO1xuXG5pbnRlcmZhY2UgQm90dG9tV2lkZ2V0Q29udGFpbmVyUHJvcHMge1xuICBoYXNQYWRkaW5nPzogYm9vbGVhbjtcbiAgd2lkdGg/OiBudW1iZXI7XG59XG5cbmNvbnN0IEJvdHRvbVdpZGdldENvbnRhaW5lciA9IHN0eWxlZC5kaXY8Qm90dG9tV2lkZ2V0Q29udGFpbmVyUHJvcHM+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nLXRvcDogJHtwcm9wcyA9PiAocHJvcHMuaGFzUGFkZGluZyA/IHByb3BzLnRoZW1lLmJvdHRvbVdpZGdldFBhZGRpbmdUb3AgOiAwKX1weDtcbiAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiAocHJvcHMuaGFzUGFkZGluZyA/IHByb3BzLnRoZW1lLmJvdHRvbVdpZGdldFBhZGRpbmdSaWdodCA6IDApfXB4O1xuICBwYWRkaW5nLWJvdHRvbTogJHtwcm9wcyA9PiAocHJvcHMuaGFzUGFkZGluZyA/IHByb3BzLnRoZW1lLmJvdHRvbVdpZGdldFBhZGRpbmdCb3R0b20gOiAwKX1weDtcbiAgcGFkZGluZy1sZWZ0OiAke3Byb3BzID0+IChwcm9wcy5oYXNQYWRkaW5nID8gcHJvcHMudGhlbWUuYm90dG9tV2lkZ2V0UGFkZGluZ0xlZnQgOiAwKX1weDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsgLyogcHJldmVudCBwYWRkaW5nIGZyb20gYmxvY2tpbmcgaW5wdXQgKi9cbiAgJiA+ICoge1xuICAgIC8qIGFsbCBjaGlsZHJlbiBzaG91bGQgYWxsb3cgaW5wdXQgKi9cbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICB9XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRofXB4O1xuICB6LWluZGV4OiAxO1xuICAke21lZGlhLnBvcnRhYmxlYHBhZGRpbmc6IDA7YH1cbmA7XG5cbmludGVyZmFjZSBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyUHJvcHMge1xuICBjaGlsZHJlbj86IEZ1bmN0aW9uO1xuICBmaWx0ZXI6IFRpbWVSYW5nZUZpbHRlciAmIHthbmltYXRpb25XaW5kb3c/OiBzdHJpbmd9O1xuICBmaWx0ZXJJZHg6IG51bWJlcjtcbiAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZTogKGlkeDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nLCBhOiBhbnlbXSkgPT4gdm9pZDtcbn1cblxuRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkuZGVwcyA9IFtBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkoXG4gIEFuaW1hdGlvbkNvbnRyb2xsZXI6IFJldHVyblR5cGU8dHlwZW9mIEFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXI6IFJlYWN0LkZDPEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJQcm9wcz4gPSAoe1xuICAgIGZpbHRlcixcbiAgICBmaWx0ZXJJZHgsXG4gICAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZSxcbiAgICBjaGlsZHJlblxuICB9KSA9PiB7XG4gICAgY29uc3QgaW50ZXJ2YWxCaW5zID0gdXNlTWVtbygoKSA9PiBnZXRJbnRlcnZhbEJpbnMoZmlsdGVyKSwgW2ZpbHRlcl0pO1xuXG4gICAgY29uc3Qgc3RlcHMgPSB1c2VNZW1vKCgpID0+IChpbnRlcnZhbEJpbnMgPyBpbnRlcnZhbEJpbnMubWFwKHggPT4geC54MCkgOiBudWxsKSwgW1xuICAgICAgaW50ZXJ2YWxCaW5zXG4gICAgXSk7XG5cbiAgICBjb25zdCB1cGRhdGVBbmltYXRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIuYW5pbWF0aW9uV2luZG93KSB7XG4gICAgICAgICAgY2FzZSBBTklNQVRJT05fV0lORE9XLmludGVydmFsOlxuICAgICAgICAgICAgY29uc3QgaWR4ID0gdmFsdWVbMV07XG4gICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lKGZpbHRlcklkeCwgJ3ZhbHVlJywgW1xuICAgICAgICAgICAgICBpbnRlcnZhbEJpbnNbaWR4XS54MCxcbiAgICAgICAgICAgICAgaW50ZXJ2YWxCaW5zW2lkeF0ueDEgLSAxXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lKGZpbHRlcklkeCwgJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbZmlsdGVySWR4LCBpbnRlcnZhbEJpbnMsIGZpbHRlci5hbmltYXRpb25XaW5kb3csIHNldEZpbHRlckFuaW1hdGlvblRpbWVdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8QW5pbWF0aW9uQ29udHJvbGxlclxuICAgICAgICBrZXk9XCJmaWx0ZXItY29udHJvbFwiXG4gICAgICAgIHZhbHVlPXtmaWx0ZXIudmFsdWV9XG4gICAgICAgIGRvbWFpbj17ZmlsdGVyLmRvbWFpbn1cbiAgICAgICAgc3BlZWQ9e2ZpbHRlci5zcGVlZH1cbiAgICAgICAgaXNBbmltYXRpbmc9e2ZpbHRlci5pc0FuaW1hdGluZ31cbiAgICAgICAgYW5pbWF0aW9uV2luZG93PXtmaWx0ZXIuYW5pbWF0aW9uV2luZG93fVxuICAgICAgICBzdGVwcz17c3RlcHN9XG4gICAgICAgIHVwZGF0ZUFuaW1hdGlvbj17dXBkYXRlQW5pbWF0aW9ufVxuICAgICAgICBjaGlsZHJlbj17Y2hpbGRyZW59XG4gICAgICAvPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyO1xufVxuXG5pbnRlcmZhY2UgTGF5ZXJBbmltYXRpb25Db250cm9sbGVyUHJvcHMge1xuICBjaGlsZHJlbj86IEZ1bmN0aW9uO1xuICBhbmltYXRpb25Db25maWc6IEFuaW1hdGlvbkNvbmZpZyAmIHt0aW1lU3RlcHM/OiBudW1iZXJbXSB8IG51bGx9O1xuICBzZXRMYXllckFuaW1hdGlvblRpbWU6ICh4OiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbkxheWVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkuZGVwcyA9IFtBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeShcbiAgQW5pbWF0aW9uQ29udHJvbGxlcjogUmV0dXJuVHlwZTx0eXBlb2YgQW5pbWF0aW9uQ29udHJvbGxlckZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOiBSZWFjdC5GQzxMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJQcm9wcz4gPSAoe1xuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBzZXRMYXllckFuaW1hdGlvblRpbWUsXG4gICAgY2hpbGRyZW5cbiAgfSkgPT4gKFxuICAgIDxBbmltYXRpb25Db250cm9sbGVyPG51bWJlcj5cbiAgICAgIGtleT1cImxheWVyLWNvbnRyb2xcIlxuICAgICAgdmFsdWU9e051bWJlcihhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUpfVxuICAgICAgZG9tYWluPXthbmltYXRpb25Db25maWcuZG9tYWlufVxuICAgICAgc3BlZWQ9e2FuaW1hdGlvbkNvbmZpZy5zcGVlZH1cbiAgICAgIGlzQW5pbWF0aW5nPXthbmltYXRpb25Db25maWcuaXNBbmltYXRpbmd9XG4gICAgICB1cGRhdGVBbmltYXRpb249e3NldExheWVyQW5pbWF0aW9uVGltZX1cbiAgICAgIHN0ZXBzPXthbmltYXRpb25Db25maWcudGltZVN0ZXBzfVxuICAgICAgYW5pbWF0aW9uV2luZG93PXtcbiAgICAgICAgYW5pbWF0aW9uQ29uZmlnLnRpbWVTdGVwcyA/IEFOSU1BVElPTl9XSU5ET1cuaW50ZXJ2YWwgOiBBTklNQVRJT05fV0lORE9XLnBvaW50XG4gICAgICB9XG4gICAgICBjaGlsZHJlbj17Y2hpbGRyZW59XG4gICAgLz5cbiAgKTtcbiAgcmV0dXJuIExheWVyQW5pbWF0aW9uQ29udHJvbGxlcjtcbn1cblxudHlwZSBCb3R0b21XaWRnZXRQcm9wcyA9IHtcbiAgY29udGFpbmVyVzogbnVtYmVyO1xufSAmIFJldHVyblR5cGU8dHlwZW9mIGJvdHRvbVdpZGdldFNlbGVjdG9yPjtcblxuQm90dG9tV2lkZ2V0RmFjdG9yeS5kZXBzID0gW1xuICBUaW1lV2lkZ2V0RmFjdG9yeSxcbiAgQW5pbWF0aW9uQ29udHJvbEZhY3RvcnksXG4gIEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5LFxuICBMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5XG5dO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCb3R0b21XaWRnZXRGYWN0b3J5KFxuICBUaW1lV2lkZ2V0OiBSZXR1cm5UeXBlPHR5cGVvZiBUaW1lV2lkZ2V0RmFjdG9yeT4sXG4gIEFuaW1hdGlvbkNvbnRyb2w6IFJldHVyblR5cGU8dHlwZW9mIEFuaW1hdGlvbkNvbnRyb2xGYWN0b3J5PixcbiAgRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlcjogUmV0dXJuVHlwZTx0eXBlb2YgRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3Rvcnk+LFxuICBMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6IFJldHVyblR5cGU8dHlwZW9mIExheWVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgQm90dG9tV2lkZ2V0ID0gKHByb3BzOiBCb3R0b21XaWRnZXRQcm9wcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGRhdGFzZXRzLFxuICAgICAgZmlsdGVycyxcbiAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgIGNvbnRhaW5lclcsXG4gICAgICB1aVN0YXRlLFxuICAgICAgc2lkZVBhbmVsV2lkdGgsXG4gICAgICBsYXllcnNcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCB7YWN0aXZlU2lkZVBhbmVsLCByZWFkT25seX0gPSB1aVN0YXRlO1xuICAgIGNvbnN0IGlzT3BlbiA9IEJvb2xlYW4oYWN0aXZlU2lkZVBhbmVsKTtcblxuICAgIGNvbnN0IGVubGFyZ2VkRmlsdGVySWR4ID0gdXNlTWVtbyhcbiAgICAgICgpID0+IGZpbHRlcnMuZmluZEluZGV4KGYgPT4gZi5lbmxhcmdlZCAmJiBmLnR5cGUgPT09IEZJTFRFUl9UWVBFUy50aW1lUmFuZ2UpLFxuICAgICAgW2ZpbHRlcnNdXG4gICAgKTtcbiAgICBjb25zdCBhbmltYXRlZEZpbHRlcklkeCA9IHVzZU1lbW8oKCkgPT4gZmlsdGVycy5maW5kSW5kZXgoZiA9PiBmLmlzQW5pbWF0aW5nKSwgW2ZpbHRlcnNdKTtcbiAgICBjb25zdCBhbmltYXRlZEZpbHRlciA9IGFuaW1hdGVkRmlsdGVySWR4ID4gLTEgPyBmaWx0ZXJzW2FuaW1hdGVkRmlsdGVySWR4XSA6IG51bGw7XG5cbiAgICBjb25zdCBpc0xlZ2VuZFBpbm5lZCA9XG4gICAgICB1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LnNob3cgJiYgdWlTdGF0ZS5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5hY3RpdmU7XG4gICAgY29uc3Qgc3BhY2VGb3JMZWdlbmRXaWR0aCA9IGlzTGVnZW5kUGlubmVkXG4gICAgICA/IERJTUVOU0lPTlMubWFwQ29udHJvbC53aWR0aCArIERJTUVOU0lPTlMubWFwQ29udHJvbC5tYXBMZWdlbmQucGlubmVkLnJpZ2h0XG4gICAgICA6IDA7XG5cbiAgICBjb25zdCBlbmxhcmdlZEZpbHRlcldpZHRoID1cbiAgICAgIChpc09wZW4gPyBjb250YWluZXJXIC0gc2lkZVBhbmVsV2lkdGggOiBjb250YWluZXJXKSAtIHNwYWNlRm9yTGVnZW5kV2lkdGg7XG5cbiAgICAvLyBzaG93IHBsYXliYWNrIGNvbnRyb2wgaWYgbGF5ZXJzIGNvbnRhaW4gdHJpcCBsYXllciAmIGF0IGxlYXN0IG9uZSB0cmlwIGxheWVyIGlzIHZpc2libGVcbiAgICBjb25zdCBhbmltYXRhYmxlTGF5ZXIgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgbGF5ZXJzLmZpbHRlcihsID0+IGwuY29uZmlnLmFuaW1hdGlvbiAmJiBsLmNvbmZpZy5hbmltYXRpb24uZW5hYmxlZCAmJiBsLmNvbmZpZy5pc1Zpc2libGUpLFxuICAgICAgW2xheWVyc11cbiAgICApO1xuXG4gICAgY29uc3QgcmVhZHlUb0FuaW1hdGlvbiA9XG4gICAgICBBcnJheS5pc0FycmF5KGFuaW1hdGlvbkNvbmZpZy5kb21haW4pICYmIE51bWJlci5pc0Zpbml0ZShhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUpO1xuICAgIC8vIGlmIGFuaW1hdGlvbiBjb250cm9sIGlzIHNob3dpbmcsIGhpZGUgdGltZSBkaXNwbGF5IGluIHRpbWUgc2xpZGVyXG4gICAgY29uc3Qgc2hvd0Zsb2F0aW5nVGltZURpc3BsYXkgPSAhYW5pbWF0YWJsZUxheWVyLmxlbmd0aDtcbiAgICBjb25zdCBzaG93QW5pbWF0aW9uQ29udHJvbCA9XG4gICAgICBhbmltYXRhYmxlTGF5ZXIubGVuZ3RoICYmIHJlYWR5VG9BbmltYXRpb24gJiYgIWFuaW1hdGlvbkNvbmZpZy5oaWRlQ29udHJvbDtcbiAgICBjb25zdCBzaG93VGltZVdpZGdldCA9IGVubGFyZ2VkRmlsdGVySWR4ID4gLTEgJiYgT2JqZWN0LmtleXMoZGF0YXNldHMpLmxlbmd0aCA+IDA7XG5cbiAgICAvLyBpZiBmaWx0ZXIgaXMgbm90IGFuaW1hdGluZywgcGFzcyBpbiBlbmxhcmdlZCBmaWx0ZXIgaGVyZSBiZWNhdXNlXG4gICAgLy8gYW5pbWF0aW9uIGNvbnRyb2xsZXIgbmVlZHMgdG8gY2FsbCByZXNldCBvbiBpdFxuICAgIGNvbnN0IGZpbHRlciA9IChhbmltYXRlZEZpbHRlciBhcyBUaW1lUmFuZ2VGaWx0ZXIpIHx8IGZpbHRlcnNbZW5sYXJnZWRGaWx0ZXJJZHhdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxCb3R0b21XaWRnZXRDb250YWluZXJcbiAgICAgICAgd2lkdGg9e01hdGgubWluKG1heFdpZHRoLCBlbmxhcmdlZEZpbHRlcldpZHRoKX1cbiAgICAgICAgc3R5bGU9e3ttYXJnaW5SaWdodDogc3BhY2VGb3JMZWdlbmRXaWR0aH19XG4gICAgICAgIGNsYXNzTmFtZT1cImJvdHRvbS13aWRnZXQtLWNvbnRhaW5lclwiXG4gICAgICAgIGhhc1BhZGRpbmc9e3Nob3dBbmltYXRpb25Db250cm9sIHx8IHNob3dUaW1lV2lkZ2V0fVxuICAgICAgPlxuICAgICAgICA8TGF5ZXJBbmltYXRpb25Db250cm9sbGVyXG4gICAgICAgICAgYW5pbWF0aW9uQ29uZmlnPXthbmltYXRpb25Db25maWd9XG4gICAgICAgICAgc2V0TGF5ZXJBbmltYXRpb25UaW1lPXt2aXNTdGF0ZUFjdGlvbnMuc2V0TGF5ZXJBbmltYXRpb25UaW1lfVxuICAgICAgICA+XG4gICAgICAgICAgeyhpc0FuaW1hdGluZywgc3RhcnQsIHBhdXNlLCByZXNldCkgPT5cbiAgICAgICAgICAgIHNob3dBbmltYXRpb25Db250cm9sID8gKFxuICAgICAgICAgICAgICA8QW5pbWF0aW9uQ29udHJvbFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkNvbmZpZz17YW5pbWF0aW9uQ29uZmlnfVxuICAgICAgICAgICAgICAgIHNldExheWVyQW5pbWF0aW9uVGltZT17dmlzU3RhdGVBY3Rpb25zLnNldExheWVyQW5pbWF0aW9uVGltZX1cbiAgICAgICAgICAgICAgICB1cGRhdGVBbmltYXRpb25TcGVlZD17dmlzU3RhdGVBY3Rpb25zLnVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWR9XG4gICAgICAgICAgICAgICAgdG9nZ2xlQW5pbWF0aW9uPXt2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJBbmltYXRpb259XG4gICAgICAgICAgICAgICAgaXNBbmltYXRhYmxlPXshYW5pbWF0ZWRGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgaXNBbmltYXRpbmc9e2lzQW5pbWF0aW5nfVxuICAgICAgICAgICAgICAgIHJlc2V0QW5pbWF0aW9uPXtyZXNldH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICA8L0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj5cbiAgICAgICAge2ZpbHRlciAmJiAoXG4gICAgICAgICAgPEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJcbiAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyIGFzIGFueX1cbiAgICAgICAgICAgIGZpbHRlcklkeD17YW5pbWF0ZWRGaWx0ZXJJZHggPiAtMSA/IGFuaW1hdGVkRmlsdGVySWR4IDogZW5sYXJnZWRGaWx0ZXJJZHh9XG4gICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lPXt2aXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyQW5pbWF0aW9uVGltZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7KGlzQW5pbWF0aW5nLCBzdGFydCwgcGF1c2UsIHJlc2V0QW5pbWF0aW9uKSA9PlxuICAgICAgICAgICAgICBzaG93VGltZVdpZGdldCA/IChcbiAgICAgICAgICAgICAgICA8VGltZVdpZGdldFxuICAgICAgICAgICAgICAgICAgLy8gVGltZVdpZGdldCB1c2VzIFJlYWN0Lm1lbW8sIGhlcmUgd2UgcGFzcyB3aWR0aFxuICAgICAgICAgICAgICAgICAgLy8gZXZlbiB0aG91Z2ggaXQgZG9lc250IHVzZSBpdCwgdG8gZm9yY2UgcmVyZW5kZXJcbiAgICAgICAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyc1tlbmxhcmdlZEZpbHRlcklkeF0gYXMgVGltZVJhbmdlRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2VubGFyZ2VkRmlsdGVySWR4fVxuICAgICAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICAgICAgICAgICAgc2hvd1RpbWVEaXNwbGF5PXtzaG93RmxvYXRpbmdUaW1lRGlzcGxheX1cbiAgICAgICAgICAgICAgICAgIHNldEZpbHRlclBsb3Q9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJQbG90fVxuICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZT17dmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlckFuaW1hdGlvblRpbWV9XG4gICAgICAgICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25XaW5kb3c9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJBbmltYXRpb25XaW5kb3d9XG4gICAgICAgICAgICAgICAgICB0b2dnbGVBbmltYXRpb249e3Zpc1N0YXRlQWN0aW9ucy50b2dnbGVGaWx0ZXJBbmltYXRpb259XG4gICAgICAgICAgICAgICAgICB1cGRhdGVBbmltYXRpb25TcGVlZD17dmlzU3RhdGVBY3Rpb25zLnVwZGF0ZUZpbHRlckFuaW1hdGlvblNwZWVkfVxuICAgICAgICAgICAgICAgICAgZW5sYXJnZUZpbHRlcj17dmlzU3RhdGVBY3Rpb25zLmVubGFyZ2VGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICByZXNldEFuaW1hdGlvbj17cmVzZXRBbmltYXRpb259XG4gICAgICAgICAgICAgICAgICBpc0FuaW1hdGFibGU9eyFhbmltYXRpb25Db25maWcgfHwgIWFuaW1hdGlvbkNvbmZpZy5pc0FuaW1hdGluZ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlcj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm90dG9tV2lkZ2V0Q29udGFpbmVyPlxuICAgICk7XG4gIH07XG5cbiAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZGlzcGxheS1uYW1lICovXG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGZvcndhcmRSZWYoKHByb3BzOiBCb3R0b21XaWRnZXRQcm9wcywgcmVmKSA9PiA8Qm90dG9tV2lkZ2V0IHsuLi5wcm9wc30gcm9vdFJlZj17cmVmfSAvPik7XG4gIC8qIGVzbGludC1lbmFibGUgcmVhY3QvZGlzcGxheS1uYW1lICovXG59XG4vKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxp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LENBQUN4QyxjQUFlO01BQzlCdkMsV0FBVyxFQUFFQSxXQUFZO01BQ3pCZ0YsY0FBYyxFQUFFTjtJQUFNLENBQ3ZCLENBQUMsR0FDQSxJQUVrQixDQUFDLEVBQzFCakcsTUFBTSxpQkFDTG5ELE1BQUEsQ0FBQWlCLE9BQUEsQ0FBQXFELGFBQUEsQ0FBQ3JCLHlCQUF5QjtNQUN4QkUsTUFBTSxFQUFFQSxNQUFjO01BQ3RCQyxTQUFTLEVBQUU0RCxpQkFBaUIsR0FBRyxDQUFDLENBQUMsR0FBR0EsaUJBQWlCLEdBQUdQLGlCQUFrQjtNQUMxRXBELHNCQUFzQixFQUFFMkMsZUFBZSxDQUFDM0M7SUFBdUIsR0FFOUQsQ0FBQ3FCLFdBQVcsRUFBRXdFLEtBQUssRUFBRUMsS0FBSyxFQUFFTyxjQUFjLEtBQ3pDZixjQUFjLGdCQUNaM0ksTUFBQSxDQUFBaUIsT0FBQSxDQUFBcUQsYUFBQSxDQUFDaUI7SUFDQztJQUNBO0lBQUE7TUFDQXBDLE1BQU0sRUFBRTRDLE9BQU8sQ0FBQ1UsaUJBQWlCLENBQXFCO01BQ3REa0QsS0FBSyxFQUFFbEQsaUJBQWtCO01BQ3pCWCxRQUFRLEVBQUVBLFFBQVM7TUFDbkJRLFFBQVEsRUFBRUEsUUFBUztNQUNuQnNELGVBQWUsRUFBRXJCLHVCQUF3QjtNQUN6Q3NCLGFBQWEsRUFBRTdELGVBQWUsQ0FBQzZELGFBQWM7TUFDN0N4RyxzQkFBc0IsRUFBRTJDLGVBQWUsQ0FBQzNDLHNCQUF1QjtNQUMvRHlHLHdCQUF3QixFQUFFOUQsZUFBZSxDQUFDOEQsd0JBQXlCO01BQ25FUCxlQUFlLEVBQUV2RCxlQUFlLENBQUMrRCxxQkFBc0I7TUFDdkRWLG9CQUFvQixFQUFFckQsZUFBZSxDQUFDZ0UsMEJBQTJCO01BQ2pFQyxhQUFhLEVBQUVqRSxlQUFlLENBQUNpRSxhQUFjO01BQzdDUCxjQUFjLEVBQUVBLGNBQWU7TUFDL0JELFlBQVksRUFBRSxDQUFDM0UsZUFBZSxJQUFJLENBQUNBLGVBQWUsQ0FBQ0o7SUFBWSxDQUNoRSxDQUFDLEdBQ0EsSUFFbUIsQ0FFUixDQUFDO0VBRTVCLENBQUM7O0VBRUQ7RUFDQTtFQUNBLG9CQUFPLElBQUF3RixpQkFBVSxFQUFDLENBQUMvSCxLQUF3QixFQUFFZ0ksR0FBRyxrQkFBS25LLE1BQUEsQ0FBQWlCLE9BQUEsQ0FBQXFELGFBQUEsQ0FBQ21CLFlBQVksTUFBQTJFLFNBQUEsQ0FBQW5KLE9BQUEsTUFBS2tCLEtBQUs7SUFBRWtJLE9BQU8sRUFBRUY7RUFBSSxFQUFFLENBQUMsQ0FBQztFQUMvRjtBQUNGO0FBQ0EiLCJpZ25vcmVMaXN0IjpbXX0=