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

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 (423) hide show
  1. package/dist/actions/action-wrapper.js +41 -36
  2. package/dist/actions/actions.js +21 -15
  3. package/dist/actions/identity-actions.js +20 -14
  4. package/dist/actions/index.js +16 -16
  5. package/dist/actions/map-state-actions.js +18 -12
  6. package/dist/actions/map-style-actions.js +46 -30
  7. package/dist/actions/provider-actions.js +73 -49
  8. package/dist/actions/ui-state-actions.js +113 -73
  9. package/dist/actions/vis-state-actions.js +148 -152
  10. package/dist/cloud-providers/index.js +7 -6
  11. package/dist/cloud-providers/provider.js +279 -189
  12. package/dist/components/bottom-widget.js +117 -105
  13. package/dist/components/common/action-panel.js +74 -122
  14. package/dist/components/common/animation-control/animation-control.js +54 -69
  15. package/dist/components/common/animation-control/animation-controller.js +160 -134
  16. package/dist/components/common/animation-control/animation-speed-slider.js +54 -47
  17. package/dist/components/common/animation-control/floating-time-display.js +100 -120
  18. package/dist/components/common/animation-control/playback-controls.js +144 -147
  19. package/dist/components/common/animation-control/speed-control.js +23 -31
  20. package/dist/components/common/checkbox.js +70 -56
  21. package/dist/components/common/color-legend.js +110 -83
  22. package/dist/components/common/data-table/button.js +23 -31
  23. package/dist/components/common/data-table/canvas.js +5 -11
  24. package/dist/components/common/data-table/cell-size.js +61 -51
  25. package/dist/components/common/data-table/grid.js +59 -40
  26. package/dist/components/common/data-table/index.js +348 -464
  27. package/dist/components/common/data-table/option-dropdown.js +33 -50
  28. package/dist/components/common/dataset-label.js +13 -17
  29. package/dist/components/common/error-boundary.js +45 -27
  30. package/dist/components/common/field-selector.js +139 -99
  31. package/dist/components/common/field-token.js +9 -24
  32. package/dist/components/common/file-uploader/file-drop.js +115 -96
  33. package/dist/components/common/file-uploader/file-upload-progress.js +45 -68
  34. package/dist/components/common/file-uploader/file-upload.js +187 -215
  35. package/dist/components/common/file-uploader/upload-button.js +22 -35
  36. package/dist/components/common/histogram-plot.js +58 -47
  37. package/dist/components/common/icons/add.js +27 -14
  38. package/dist/components/common/icons/anchor_window.js +18 -16
  39. package/dist/components/common/icons/arrow-down-alt.js +27 -14
  40. package/dist/components/common/icons/arrow-down-solid.js +27 -14
  41. package/dist/components/common/icons/arrow-down.js +27 -14
  42. package/dist/components/common/icons/arrow-left.js +30 -17
  43. package/dist/components/common/icons/arrow-right.js +27 -14
  44. package/dist/components/common/icons/arrow-up-alt.js +28 -15
  45. package/dist/components/common/icons/arrow-up-solid.js +27 -14
  46. package/dist/components/common/icons/arrow-up.js +27 -14
  47. package/dist/components/common/icons/base.js +57 -39
  48. package/dist/components/common/icons/bug.js +29 -16
  49. package/dist/components/common/icons/cancel.js +27 -14
  50. package/dist/components/common/icons/checkmark.js +31 -18
  51. package/dist/components/common/icons/chevron-right.js +33 -20
  52. package/dist/components/common/icons/clipboard.js +28 -15
  53. package/dist/components/common/icons/clock.js +29 -16
  54. package/dist/components/common/icons/close.js +32 -19
  55. package/dist/components/common/icons/code-alt.js +29 -16
  56. package/dist/components/common/icons/copy.js +31 -18
  57. package/dist/components/common/icons/crosshairs.js +29 -16
  58. package/dist/components/common/icons/cube-3d.js +31 -18
  59. package/dist/components/common/icons/cursor-click.js +31 -18
  60. package/dist/components/common/icons/data-table.js +28 -15
  61. package/dist/components/common/icons/db.js +28 -15
  62. package/dist/components/common/icons/delete.js +29 -16
  63. package/dist/components/common/icons/docs.js +43 -30
  64. package/dist/components/common/icons/drag-n-drop.js +29 -16
  65. package/dist/components/common/icons/draw-polygon.js +46 -33
  66. package/dist/components/common/icons/email.js +31 -18
  67. package/dist/components/common/icons/expand.js +29 -16
  68. package/dist/components/common/icons/eye-seen.js +29 -16
  69. package/dist/components/common/icons/eye-unseen.js +29 -16
  70. package/dist/components/common/icons/file-type.js +19 -35
  71. package/dist/components/common/icons/file.js +27 -14
  72. package/dist/components/common/icons/files.js +26 -14
  73. package/dist/components/common/icons/filter-funnel.js +27 -14
  74. package/dist/components/common/icons/free-window.js +18 -16
  75. package/dist/components/common/icons/gear.js +29 -16
  76. package/dist/components/common/icons/hash.js +27 -14
  77. package/dist/components/common/icons/histogram.js +27 -15
  78. package/dist/components/common/icons/index.js +156 -156
  79. package/dist/components/common/icons/info.js +38 -25
  80. package/dist/components/common/icons/layers.js +27 -14
  81. package/dist/components/common/icons/left-arrow.js +29 -16
  82. package/dist/components/common/icons/legend.js +27 -14
  83. package/dist/components/common/icons/line-chart.js +27 -14
  84. package/dist/components/common/icons/login.js +30 -17
  85. package/dist/components/common/icons/logout.js +29 -16
  86. package/dist/components/common/icons/map-icon.js +32 -18
  87. package/dist/components/common/icons/map.js +32 -18
  88. package/dist/components/common/icons/messages.js +27 -14
  89. package/dist/components/common/icons/minus.js +27 -14
  90. package/dist/components/common/icons/order-by-dataset.js +17 -15
  91. package/dist/components/common/icons/order-by-list.js +9 -7
  92. package/dist/components/common/icons/pause.js +27 -14
  93. package/dist/components/common/icons/picture.js +26 -14
  94. package/dist/components/common/icons/pin.js +30 -17
  95. package/dist/components/common/icons/play.js +27 -14
  96. package/dist/components/common/icons/polygon.js +48 -35
  97. package/dist/components/common/icons/rectangle.js +49 -36
  98. package/dist/components/common/icons/reduce.js +30 -17
  99. package/dist/components/common/icons/reset.js +27 -14
  100. package/dist/components/common/icons/rocket.js +27 -14
  101. package/dist/components/common/icons/save.js +29 -16
  102. package/dist/components/common/icons/save2.js +33 -20
  103. package/dist/components/common/icons/search.js +29 -16
  104. package/dist/components/common/icons/settings.js +29 -16
  105. package/dist/components/common/icons/share.js +27 -14
  106. package/dist/components/common/icons/split.js +55 -42
  107. package/dist/components/common/icons/square-select.js +29 -16
  108. package/dist/components/common/icons/swap-horizontal.js +31 -18
  109. package/dist/components/common/icons/table.js +27 -14
  110. package/dist/components/common/icons/trash.js +29 -16
  111. package/dist/components/common/icons/upload.js +27 -14
  112. package/dist/components/common/icons/vert-dots.js +65 -52
  113. package/dist/components/common/icons/vert-three-dots.js +40 -27
  114. package/dist/components/common/icons/warning.js +39 -26
  115. package/dist/components/common/image-preview.js +33 -71
  116. package/dist/components/common/info-helper.js +29 -36
  117. package/dist/components/common/item-selector/accessor.js +13 -7
  118. package/dist/components/common/item-selector/chickleted-input.js +56 -72
  119. package/dist/components/common/item-selector/dropdown-list.js +214 -182
  120. package/dist/components/common/item-selector/item-selector-submenu.js +55 -34
  121. package/dist/components/common/item-selector/item-selector.js +194 -183
  122. package/dist/components/common/item-selector/typeahead.js +248 -236
  123. package/dist/components/common/line-chart.js +58 -80
  124. package/dist/components/common/loading-spinner.js +31 -46
  125. package/dist/components/common/logo.js +48 -61
  126. package/dist/components/common/map-layer-selector.js +25 -31
  127. package/dist/components/common/modal.js +106 -167
  128. package/dist/components/common/portaled.js +189 -169
  129. package/dist/components/common/progress-bar.js +24 -27
  130. package/dist/components/common/range-brush.js +215 -176
  131. package/dist/components/common/range-plot.js +63 -52
  132. package/dist/components/common/range-slider.js +231 -206
  133. package/dist/components/common/slider/mouse-event.js +66 -59
  134. package/dist/components/common/slider/slider-bar-handle.js +61 -51
  135. package/dist/components/common/slider/slider-handle.js +102 -127
  136. package/dist/components/common/slider/slider.js +162 -143
  137. package/dist/components/common/styled-components.js +256 -518
  138. package/dist/components/common/switch.js +11 -11
  139. package/dist/components/common/time-range-slider-time-title.js +32 -49
  140. package/dist/components/common/time-range-slider.js +45 -56
  141. package/dist/components/common/time-slider-marker.js +52 -71
  142. package/dist/components/common/tippy-tooltip.js +59 -89
  143. package/dist/components/common/toolbar-item.js +45 -53
  144. package/dist/components/common/toolbar.js +18 -24
  145. package/dist/components/common/vertical-toolbar.js +6 -13
  146. package/dist/components/container.js +119 -87
  147. package/dist/components/context.js +8 -6
  148. package/dist/components/editor/constants.js +4 -4
  149. package/dist/components/editor/editor.js +157 -122
  150. package/dist/components/editor/feature-action-panel.js +59 -52
  151. package/dist/components/editor/feature-styles.js +29 -46
  152. package/dist/components/editor/handle-style.js +29 -38
  153. package/dist/components/filters/components.js +4 -8
  154. package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +43 -33
  155. package/dist/components/filters/filter-panels/multi-select-filter-panel.js +21 -20
  156. package/dist/components/filters/filter-panels/new-filter-panel.js +31 -24
  157. package/dist/components/filters/filter-panels/polygon-filter-panel.js +31 -26
  158. package/dist/components/filters/filter-panels/range-filter-panel.js +21 -20
  159. package/dist/components/filters/filter-panels/single-select-filter-panel.js +21 -20
  160. package/dist/components/filters/filter-panels/time-range-filter-panel.js +31 -28
  161. package/dist/components/filters/index.js +10 -10
  162. package/dist/components/filters/multi-select-filter.js +9 -11
  163. package/dist/components/filters/polygon-filter.js +41 -26
  164. package/dist/components/filters/range-filter.js +7 -9
  165. package/dist/components/filters/single-select-filter.js +13 -11
  166. package/dist/components/filters/time-range-filter.js +14 -16
  167. package/dist/components/filters/time-widget.js +84 -125
  168. package/dist/components/geocoder/geocoder.js +177 -158
  169. package/dist/components/geocoder-panel.js +87 -66
  170. package/dist/components/index.js +329 -328
  171. package/dist/components/injector.js +63 -44
  172. package/dist/components/kepler-gl.js +361 -325
  173. package/dist/components/map/coordinate-info.js +16 -18
  174. package/dist/components/map/layer-hover-info.js +86 -108
  175. package/dist/components/map/layer-selector-panel.js +48 -50
  176. package/dist/components/map/locale-panel.js +44 -38
  177. package/dist/components/map/map-control-panel.js +47 -70
  178. package/dist/components/map/map-control-toolbar.js +6 -9
  179. package/dist/components/map/map-control-tooltip.js +8 -10
  180. package/dist/components/map/map-control.js +27 -35
  181. package/dist/components/map/map-draw-panel.js +48 -38
  182. package/dist/components/map/map-legend-panel.js +50 -47
  183. package/dist/components/map/map-legend.js +116 -133
  184. package/dist/components/map/map-popover.js +100 -155
  185. package/dist/components/map/split-map-button.js +34 -30
  186. package/dist/components/map/toggle-3d-button.js +27 -25
  187. package/dist/components/map-container.js +359 -313
  188. package/dist/components/maps-layout.js +26 -16
  189. package/dist/components/modal-container.js +355 -359
  190. package/dist/components/modals/add-map-style-modal.js +194 -233
  191. package/dist/components/modals/cloud-tile.js +67 -96
  192. package/dist/components/modals/data-table-modal.js +152 -155
  193. package/dist/components/modals/delete-data-modal.js +20 -20
  194. package/dist/components/modals/error-display.js +7 -9
  195. package/dist/components/modals/export-data-modal.js +140 -118
  196. package/dist/components/modals/export-image-modal.js +69 -82
  197. package/dist/components/modals/export-map-modal/components.js +18 -20
  198. package/dist/components/modals/export-map-modal/export-html-map.js +74 -82
  199. package/dist/components/modals/export-map-modal/export-json-map.js +45 -65
  200. package/dist/components/modals/export-map-modal/export-map-modal.js +47 -42
  201. package/dist/components/modals/image-modal-container.js +21 -20
  202. package/dist/components/modals/load-data-modal.js +30 -28
  203. package/dist/components/modals/load-storage-map.js +178 -277
  204. package/dist/components/modals/loading-dialog.js +19 -41
  205. package/dist/components/modals/modal-dialog.js +6 -4
  206. package/dist/components/modals/modal-tabs.js +48 -83
  207. package/dist/components/modals/overwrite-map-modal.js +30 -41
  208. package/dist/components/modals/provider-modal-container.js +42 -23
  209. package/dist/components/modals/save-map-modal.js +83 -107
  210. package/dist/components/modals/share-map-modal.js +95 -101
  211. package/dist/components/modals/status-panel.js +43 -63
  212. package/dist/components/modals/storage-map-viewer.js +70 -133
  213. package/dist/components/notification-panel/notification-item.js +97 -94
  214. package/dist/components/notification-panel.js +43 -35
  215. package/dist/components/performance.js +53 -49
  216. package/dist/components/plot-container.js +169 -151
  217. package/dist/components/side-panel/cloud-storage-dropdown.js +15 -13
  218. package/dist/components/side-panel/common/dataset-info.js +12 -16
  219. package/dist/components/side-panel/common/dataset-tag.js +27 -48
  220. package/dist/components/side-panel/common/dataset-title.js +116 -119
  221. package/dist/components/side-panel/common/source-data-catalog.js +32 -31
  222. package/dist/components/side-panel/common/source-data-selector.js +77 -52
  223. package/dist/components/side-panel/custom-panel.js +8 -6
  224. package/dist/components/side-panel/filter-manager.js +62 -48
  225. package/dist/components/side-panel/filter-panel/filter-panel-header.js +25 -35
  226. package/dist/components/side-panel/filter-panel/filter-panel.js +64 -46
  227. package/dist/components/side-panel/interaction-manager.js +18 -20
  228. package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
  229. package/dist/components/side-panel/interaction-panel/interaction-panel.js +95 -76
  230. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +143 -118
  231. package/dist/components/side-panel/interaction-panel/tooltip-config.js +76 -95
  232. package/dist/components/side-panel/layer-manager.js +115 -105
  233. package/dist/components/side-panel/layer-panel/add-layer-button.js +54 -92
  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 +37 -50
  236. package/dist/components/side-panel/layer-panel/color-range-selector.js +207 -196
  237. package/dist/components/side-panel/layer-panel/color-selector.js +110 -104
  238. package/dist/components/side-panel/layer-panel/column-selector.js +22 -34
  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 +205 -248
  241. package/dist/components/side-panel/layer-panel/custom-picker.js +69 -51
  242. package/dist/components/side-panel/layer-panel/dataset-layer-group.js +42 -37
  243. package/dist/components/side-panel/layer-panel/dataset-layer-section.js +27 -31
  244. package/dist/components/side-panel/layer-panel/dataset-section.js +35 -45
  245. package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +13 -14
  246. package/dist/components/side-panel/layer-panel/hex-column-config.js +55 -32
  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 +46 -42
  249. package/dist/components/side-panel/layer-panel/layer-config-group.js +144 -178
  250. package/dist/components/side-panel/layer-panel/layer-configurator.js +830 -826
  251. package/dist/components/side-panel/layer-panel/layer-list.js +94 -101
  252. package/dist/components/side-panel/layer-panel/layer-panel-header.js +82 -124
  253. package/dist/components/side-panel/layer-panel/layer-panel.js +105 -111
  254. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +58 -67
  255. package/dist/components/side-panel/layer-panel/layer-type-list-item.js +32 -47
  256. package/dist/components/side-panel/layer-panel/layer-type-selector.js +41 -30
  257. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +43 -42
  258. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +57 -55
  259. package/dist/components/side-panel/layer-panel/single-color-palette.js +33 -48
  260. package/dist/components/side-panel/layer-panel/text-label-panel.js +116 -81
  261. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +102 -88
  262. package/dist/components/side-panel/layer-panel/vis-config-slider.js +85 -99
  263. package/dist/components/side-panel/layer-panel/vis-config-switch.js +29 -38
  264. package/dist/components/side-panel/map-manager.js +89 -70
  265. package/dist/components/side-panel/map-style-panel/map-layer-selector.js +60 -72
  266. package/dist/components/side-panel/map-style-panel/map-style-selector.js +42 -64
  267. package/dist/components/side-panel/panel-dropdown.js +37 -21
  268. package/dist/components/side-panel/panel-header-action.js +65 -60
  269. package/dist/components/side-panel/panel-header.js +184 -165
  270. package/dist/components/side-panel/panel-tab.js +29 -35
  271. package/dist/components/side-panel/panel-title.js +18 -15
  272. package/dist/components/side-panel/panel-toggle.js +31 -30
  273. package/dist/components/side-panel/side-bar.js +91 -100
  274. package/dist/components/side-panel.js +123 -108
  275. package/dist/connect/keplergl-connect.js +26 -17
  276. package/dist/connect/with-local-selector.js +63 -31
  277. package/dist/constants/action-types.js +115 -113
  278. package/dist/constants/color-palette.js +16 -14
  279. package/dist/constants/color-ranges.js +28 -23
  280. package/dist/constants/custom-color-ranges.js +12 -12
  281. package/dist/constants/default-settings.js +254 -323
  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 +5 -9
  286. package/dist/constants/user-guides.js +10 -10
  287. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +63 -37
  288. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +56 -52
  289. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +168 -165
  290. package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +43 -24
  291. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +40 -27
  292. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +40 -27
  293. package/dist/deckgl-layers/layer-utils/cluster-utils.js +68 -60
  294. package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +282 -276
  295. package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
  296. package/dist/deckgl-layers/line-layer/line-layer.js +70 -62
  297. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +51 -37
  298. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +85 -65
  299. package/dist/index.js +16 -15
  300. package/dist/layers/aggregation-layer.js +331 -299
  301. package/dist/layers/arc-layer/arc-layer-icon.js +41 -27
  302. package/dist/layers/arc-layer/arc-layer.js +201 -174
  303. package/dist/layers/base-layer.js +1544 -1371
  304. package/dist/layers/cluster-layer/cluster-layer-icon.js +44 -30
  305. package/dist/layers/cluster-layer/cluster-layer.js +103 -89
  306. package/dist/layers/default-layer-icon.js +53 -39
  307. package/dist/layers/geojson-layer/geojson-layer-icon.js +55 -42
  308. package/dist/layers/geojson-layer/geojson-layer.js +353 -292
  309. package/dist/layers/geojson-layer/geojson-utils.js +36 -31
  310. package/dist/layers/grid-layer/grid-layer-icon.js +100 -87
  311. package/dist/layers/grid-layer/grid-layer.js +61 -51
  312. package/dist/layers/grid-layer/grid-utils.js +9 -13
  313. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +35 -21
  314. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +260 -225
  315. package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
  316. package/dist/layers/heatmap-layer/heatmap-layer-icon.js +52 -39
  317. package/dist/layers/heatmap-layer/heatmap-layer.js +171 -140
  318. package/dist/layers/hexagon-layer/hexagon-layer-icon.js +64 -51
  319. package/dist/layers/hexagon-layer/hexagon-layer.js +63 -49
  320. package/dist/layers/hexagon-layer/hexagon-utils.js +14 -15
  321. package/dist/layers/icon-layer/icon-info-modal.js +75 -82
  322. package/dist/layers/icon-layer/icon-layer-icon.js +37 -24
  323. package/dist/layers/icon-layer/icon-layer.js +303 -274
  324. package/dist/layers/index.js +29 -43
  325. package/dist/layers/layer-factory.js +41 -25
  326. package/dist/layers/layer-text-label.js +23 -21
  327. package/dist/layers/layer-update.js +18 -16
  328. package/dist/layers/line-layer/line-layer-icon.js +43 -30
  329. package/dist/layers/line-layer/line-layer.js +142 -123
  330. package/dist/layers/mapbox-utils.js +62 -61
  331. package/dist/layers/mapboxgl-layer.js +169 -124
  332. package/dist/layers/point-layer/point-layer-icon.js +59 -45
  333. package/dist/layers/point-layer/point-layer.js +386 -355
  334. package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +238 -208
  335. package/dist/layers/s2-geometry-layer/s2-layer-icon.js +35 -21
  336. package/dist/layers/s2-geometry-layer/s2-utils.js +8 -9
  337. package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +25 -24
  338. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +115 -102
  339. package/dist/layers/scenegraph-layer/scenegraph-layer.js +172 -148
  340. package/dist/layers/trip-layer/trip-info-modal.js +30 -50
  341. package/dist/layers/trip-layer/trip-layer-icon.js +53 -40
  342. package/dist/layers/trip-layer/trip-layer.js +307 -239
  343. package/dist/layers/trip-layer/trip-utils.js +50 -34
  344. package/dist/layers/types.js +2 -2
  345. package/dist/localization/formatted-message.js +10 -8
  346. package/dist/localization/index.js +7 -7
  347. package/dist/localization/locales.js +9 -6
  348. package/dist/localization/messages.js +10 -13
  349. package/dist/localization/translations/ca.js +13 -11
  350. package/dist/localization/translations/cn.js +13 -11
  351. package/dist/localization/translations/en.js +13 -11
  352. package/dist/localization/translations/es.js +13 -11
  353. package/dist/localization/translations/fi.js +13 -11
  354. package/dist/localization/translations/ja.js +13 -11
  355. package/dist/localization/translations/pt.js +13 -11
  356. package/dist/localization/translations/ru.js +13 -11
  357. package/dist/middleware/index.js +5 -3
  358. package/dist/processors/data-processor.js +201 -164
  359. package/dist/processors/file-handler.js +233 -111
  360. package/dist/processors/index.js +4 -4
  361. package/dist/reducers/combined-updaters.js +41 -41
  362. package/dist/reducers/composer-helpers.js +45 -20
  363. package/dist/reducers/composers.js +8 -9
  364. package/dist/reducers/core.js +35 -31
  365. package/dist/reducers/index.js +22 -21
  366. package/dist/reducers/map-state-updaters.js +47 -65
  367. package/dist/reducers/map-state.js +15 -23
  368. package/dist/reducers/map-style-updaters.js +159 -233
  369. package/dist/reducers/map-style.js +16 -30
  370. package/dist/reducers/provider-state-updaters.js +229 -217
  371. package/dist/reducers/provider-state.js +17 -29
  372. package/dist/reducers/root.js +58 -86
  373. package/dist/reducers/ui-state-updaters.js +218 -337
  374. package/dist/reducers/ui-state.js +16 -45
  375. package/dist/reducers/vis-state-merger.js +209 -205
  376. package/dist/reducers/vis-state-selectors.js +19 -5
  377. package/dist/reducers/vis-state-updaters.js +876 -1003
  378. package/dist/reducers/vis-state.js +16 -75
  379. package/dist/schemas/dataset-schema.js +108 -84
  380. package/dist/schemas/index.js +29 -28
  381. package/dist/schemas/map-state-schema.js +18 -21
  382. package/dist/schemas/map-style-schema.js +55 -47
  383. package/dist/schemas/schema-manager.js +161 -147
  384. package/dist/schemas/schema-utils.js +9 -8
  385. package/dist/schemas/schema.js +87 -72
  386. package/dist/schemas/versions.js +3 -3
  387. package/dist/schemas/vis-state-schema.js +583 -441
  388. package/dist/styles/base.js +1021 -1217
  389. package/dist/styles/index.js +3 -3
  390. package/dist/styles/media-breakpoints.js +18 -23
  391. package/dist/tasks/tasks.js +39 -36
  392. package/dist/templates/export-map-html.js +4 -233
  393. package/dist/utils/aggregate-utils.js +16 -13
  394. package/dist/utils/color-utils.js +37 -29
  395. package/dist/utils/custom-scales.js +3 -3
  396. package/dist/utils/data-scale-utils.js +13 -6
  397. package/dist/utils/data-utils.js +83 -60
  398. package/dist/utils/dataset-utils.js +77 -48
  399. package/dist/utils/dom-to-image.js +163 -108
  400. package/dist/utils/dom-utils.js +105 -88
  401. package/dist/utils/export-utils.js +103 -116
  402. package/dist/utils/filter-utils.js +374 -379
  403. package/dist/utils/gl-utils.js +15 -16
  404. package/dist/utils/gpu-filter-utils.js +73 -54
  405. package/dist/utils/index.js +48 -47
  406. package/dist/utils/interaction-utils.js +46 -53
  407. package/dist/utils/layer-utils.js +78 -89
  408. package/dist/utils/locale-utils.js +16 -24
  409. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +76 -67
  410. package/dist/utils/map-style-utils/mapbox-utils.js +3 -4
  411. package/dist/utils/mapbox-utils.js +4 -3
  412. package/dist/utils/notifications-utils.js +38 -33
  413. package/dist/utils/observe-dimensions.js +54 -42
  414. package/dist/utils/projection-utils.js +11 -14
  415. package/dist/utils/split-map-utils.js +33 -30
  416. package/dist/utils/table-utils/data-container-utils.js +14 -15
  417. package/dist/utils/table-utils/data-row.js +65 -58
  418. package/dist/utils/table-utils/index.js +2 -2
  419. package/dist/utils/table-utils/indexed-data-container.js +173 -105
  420. package/dist/utils/table-utils/kepler-table.js +386 -362
  421. package/dist/utils/table-utils/row-data-container.js +164 -99
  422. package/dist/utils/utils.js +30 -29
  423. package/package.json +1 -1
@@ -1,12 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
- exports.default = exports.SaveExportDropdownFactory = exports.PanelHeaderDropdownFactory = exports.PanelAction = exports.CloudStorageDropdownFactory = void 0;
8
+ exports["default"] = exports.SaveExportDropdownFactory = exports.PanelHeaderDropdownFactory = exports.PanelAction = exports.CloudStorageDropdownFactory = void 0;
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
8
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
16
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
18
  var _react = _interopRequireWildcard(require("react"));
11
19
  var _styledComponents = _interopRequireDefault(require("styled-components"));
12
20
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -18,9 +26,8 @@ var _panelDropdown = _interopRequireDefault(require("./panel-dropdown"));
18
26
  var _toolbar = _interopRequireDefault(require("../common/toolbar"));
19
27
  var _toolbarItem = _interopRequireDefault(require("../common/toolbar-item"));
20
28
  var _localization = require("../../localization");
21
- 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); }
22
- 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; }
23
- // Copyright (c) 2022 Uber Technologies, Inc.
29
+ var _excluded = ["appName", "appWebsite", "version", "actionItems", "visibleDropdown", "showExportDropdown", "hideExportDropdown"];
30
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5; // Copyright (c) 2022 Uber Technologies, Inc.
24
31
  //
25
32
  // Permission is hereby granted, free of charge, to any person obtaining a copy
26
33
  // of this software and associated documentation files (the "Software"), to deal
@@ -39,244 +46,256 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
39
46
  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
40
47
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
41
48
  // THE SOFTWARE.
42
-
43
- const StyledPanelHeader = _styledComponents.default.div.attrs(props => ({
44
- className: (0, _classnames.default)('side-side-panel__header', props.className)
45
- }))`
46
- background-color: ${props => props.theme.sidePanelHeaderBg};
47
- padding: 12px 16px 0 16px;
48
- `;
49
- const StyledPanelHeaderTop = _styledComponents.default.div.attrs(props => ({
50
- className: (0, _classnames.default)('side-panel__header__top', props.className)
51
- }))`
52
- display: flex;
53
- justify-content: space-between;
54
- margin-bottom: 16px;
55
- width: 100%;
56
- `;
57
- const StyledPanelTopActions = _styledComponents.default.div.attrs({
49
+ 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); }
50
+ 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; }
51
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
52
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
53
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
54
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
55
+ var StyledPanelHeader = _styledComponents["default"].div.attrs(function (props) {
56
+ return {
57
+ className: (0, _classnames["default"])('side-side-panel__header', props.className)
58
+ };
59
+ })(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n padding: 12px 16px 0 16px;\n"])), function (props) {
60
+ return props.theme.sidePanelHeaderBg;
61
+ });
62
+ var StyledPanelHeaderTop = _styledComponents["default"].div.attrs(function (props) {
63
+ return {
64
+ className: (0, _classnames["default"])('side-panel__header__top', props.className)
65
+ };
66
+ })(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n margin-bottom: 16px;\n width: 100%;\n"])));
67
+ var StyledPanelTopActions = _styledComponents["default"].div.attrs({
58
68
  className: 'side-panel__top__actions'
59
- })`
60
- display: flex;
61
- `;
62
- const StyledPanelAction = _styledComponents.default.div.attrs({
69
+ })(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
70
+ var StyledPanelAction = _styledComponents["default"].div.attrs({
63
71
  className: 'side-panel__panel-header__action'
64
- })`
65
- align-items: center;
66
- border-radius: 2px;
67
- color: ${props => props.active ? props.theme.textColorHl : props.theme.subtextColor};
68
- display: flex;
69
- height: 26px;
70
- justify-content: space-between;
71
- margin-left: 4px;
72
- padding: 5px;
73
- font-weight: bold;
74
- p {
75
- display: inline-block;
76
- margin-right: 6px;
77
- }
78
- a {
79
- height: 20px;
80
- }
81
-
82
- :hover {
83
- cursor: pointer;
84
- color: ${props => props.theme.textColorHl};
85
-
86
- a {
87
- color: ${props => props.theme.textColorHl};
88
- }
89
- }
90
- `;
91
- const StyledToolbar = (0, _styledComponents.default)(_toolbar.default)`
92
- position: absolute;
93
- `;
94
- const PanelAction = _ref => {
95
- let {
96
- item,
97
- onClick
98
- } = _ref;
99
- return /*#__PURE__*/_react.default.createElement(StyledPanelAction, {
72
+ })(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n align-items: center;\n border-radius: 2px;\n color: ", ";\n display: flex;\n height: 26px;\n justify-content: space-between;\n margin-left: 4px;\n padding: 5px;\n font-weight: bold;\n p {\n display: inline-block;\n margin-right: 6px;\n }\n a {\n height: 20px;\n }\n\n :hover {\n cursor: pointer;\n color: ", ";\n\n a {\n color: ", ";\n }\n }\n"])), function (props) {
73
+ return props.active ? props.theme.textColorHl : props.theme.subtextColor;
74
+ }, function (props) {
75
+ return props.theme.textColorHl;
76
+ }, function (props) {
77
+ return props.theme.textColorHl;
78
+ });
79
+ var StyledToolbar = (0, _styledComponents["default"])(_toolbar["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n"])));
80
+ var PanelAction = exports.PanelAction = function PanelAction(_ref) {
81
+ var item = _ref.item,
82
+ onClick = _ref.onClick;
83
+ return /*#__PURE__*/_react["default"].createElement(StyledPanelAction, {
100
84
  "data-tip": true,
101
- "data-for": `${item.id}-action`,
85
+ "data-for": "".concat(item.id, "-action"),
102
86
  onClick: onClick
103
- }, item.label ? /*#__PURE__*/_react.default.createElement("p", null, item.label) : null, /*#__PURE__*/_react.default.createElement("a", {
87
+ }, item.label ? /*#__PURE__*/_react["default"].createElement("p", null, item.label) : null, /*#__PURE__*/_react["default"].createElement("a", {
104
88
  target: item.blank ? '_blank' : '',
105
89
  href: item.href,
106
90
  rel: "noreferrer"
107
- }, /*#__PURE__*/_react.default.createElement(item.iconComponent, (0, _extends2.default)({
91
+ }, /*#__PURE__*/_react["default"].createElement(item.iconComponent, (0, _extends2["default"])({
108
92
  height: "20px"
109
- }, item.iconComponentProps))), item.tooltip ? /*#__PURE__*/_react.default.createElement(_styledComponents2.Tooltip, {
110
- id: `${item.id}-action`,
93
+ }, item.iconComponentProps))), item.tooltip ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, {
94
+ id: "".concat(item.id, "-action"),
111
95
  place: "bottom",
112
96
  delayShow: 500,
113
97
  effect: "solid"
114
- }, /*#__PURE__*/_react.default.createElement(_localization.FormattedMessage, {
98
+ }, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
115
99
  id: item.tooltip
116
100
  })) : null);
117
101
  };
118
- exports.PanelAction = PanelAction;
119
- const PanelHeaderDropdownFactory = () => {
120
- const PanelHeaderDropdown = _ref2 => {
121
- let {
122
- items,
123
- show,
124
- onClose,
125
- id
126
- } = _ref2;
127
- return /*#__PURE__*/_react.default.createElement(StyledToolbar, {
102
+ var PanelHeaderDropdownFactory = exports.PanelHeaderDropdownFactory = function PanelHeaderDropdownFactory() {
103
+ var PanelHeaderDropdown = function PanelHeaderDropdown(_ref2) {
104
+ var items = _ref2.items,
105
+ show = _ref2.show,
106
+ onClose = _ref2.onClose,
107
+ id = _ref2.id;
108
+ return /*#__PURE__*/_react["default"].createElement(StyledToolbar, {
128
109
  show: show,
129
- className: `${id}-dropdown`
130
- }, /*#__PURE__*/_react.default.createElement(_panelDropdown.default, {
110
+ className: "".concat(id, "-dropdown")
111
+ }, /*#__PURE__*/_react["default"].createElement(_panelDropdown["default"], {
131
112
  className: "panel-header-dropdown__inner",
132
113
  show: show,
133
114
  onClose: onClose
134
- }, items.map(item => /*#__PURE__*/_react.default.createElement(_toolbarItem.default, {
135
- id: item.key,
136
- key: item.key,
137
- label: item.label,
138
- icon: item.icon,
139
- onClick: item.onClick,
140
- onClose: onClose
141
- }))));
115
+ }, items.map(function (item) {
116
+ return /*#__PURE__*/_react["default"].createElement(_toolbarItem["default"], {
117
+ id: item.key,
118
+ key: item.key,
119
+ label: item.label,
120
+ icon: item.icon,
121
+ onClick: item.onClick,
122
+ onClose: onClose
123
+ });
124
+ })));
142
125
  };
143
126
  return PanelHeaderDropdown;
144
127
  };
145
- exports.PanelHeaderDropdownFactory = PanelHeaderDropdownFactory;
146
- const getDropdownItemsSelector = () => (0, _reselect.createSelector)(props => props, props => (props.items || []).map(t => ({
147
- ...t,
148
- onClick: t.onClick && t.onClick(props) ? t.onClick(props) : null
149
- })).filter(l => l.onClick));
150
- const SaveExportDropdownFactory = PanelHeaderDropdown => {
151
- const dropdownItemsSelector = getDropdownItemsSelector();
152
- const SaveExportDropdown = props => /*#__PURE__*/_react.default.createElement(PanelHeaderDropdown, {
153
- items: dropdownItemsSelector(props),
154
- show: props.show,
155
- onClose: props.onClose,
156
- id: "save-export"
128
+ var getDropdownItemsSelector = function getDropdownItemsSelector() {
129
+ return (0, _reselect.createSelector)(function (props) {
130
+ return props;
131
+ }, function (props) {
132
+ return (props.items || []).map(function (t) {
133
+ return _objectSpread(_objectSpread({}, t), {}, {
134
+ onClick: t.onClick && t.onClick(props) ? t.onClick(props) : null
135
+ });
136
+ }).filter(function (l) {
137
+ return l.onClick;
138
+ });
157
139
  });
140
+ };
141
+ var SaveExportDropdownFactory = exports.SaveExportDropdownFactory = function SaveExportDropdownFactory(PanelHeaderDropdown) {
142
+ var dropdownItemsSelector = getDropdownItemsSelector();
143
+ var SaveExportDropdown = function SaveExportDropdown(props) {
144
+ return /*#__PURE__*/_react["default"].createElement(PanelHeaderDropdown, {
145
+ items: dropdownItemsSelector(props),
146
+ show: props.show,
147
+ onClose: props.onClose,
148
+ id: "save-export"
149
+ });
150
+ };
158
151
  SaveExportDropdown.defaultProps = {
159
152
  items: [{
160
153
  label: 'toolbar.exportImage',
161
154
  icon: _icons.Picture,
162
155
  key: 'image',
163
- onClick: props => props.onExportImage
156
+ onClick: function onClick(props) {
157
+ return props.onExportImage;
158
+ }
164
159
  }, {
165
160
  label: 'toolbar.exportData',
166
161
  icon: _icons.DataTable,
167
162
  key: 'data',
168
- onClick: props => props.onExportData
163
+ onClick: function onClick(props) {
164
+ return props.onExportData;
165
+ }
169
166
  }, {
170
167
  label: 'toolbar.exportMap',
171
168
  icon: _icons.Map,
172
169
  key: 'map',
173
- onClick: props => props.onExportMap
170
+ onClick: function onClick(props) {
171
+ return props.onExportMap;
172
+ }
174
173
  }, {
175
174
  label: 'toolbar.saveMap',
176
175
  icon: _icons.Save2,
177
176
  key: 'save',
178
- onClick: props => props.onSaveMap
177
+ onClick: function onClick(props) {
178
+ return props.onSaveMap;
179
+ }
179
180
  }, {
180
181
  label: 'toolbar.shareMapURL',
181
182
  icon: _icons.Share,
182
183
  key: 'share',
183
- onClick: props => props.onShareMap
184
+ onClick: function onClick(props) {
185
+ return props.onShareMap;
186
+ }
184
187
  }]
185
188
  };
186
189
  return SaveExportDropdown;
187
190
  };
188
- exports.SaveExportDropdownFactory = SaveExportDropdownFactory;
189
191
  SaveExportDropdownFactory.deps = [PanelHeaderDropdownFactory];
190
- const CloudStorageDropdownFactory = PanelHeaderDropdown => {
191
- const dropdownItemsSelector = getDropdownItemsSelector();
192
- const CloudStorageDropdown = props => /*#__PURE__*/_react.default.createElement(PanelHeaderDropdown, {
193
- items: dropdownItemsSelector(props),
194
- show: props.show,
195
- onClose: props.onClose,
196
- id: "cloud-storage"
197
- });
192
+ var CloudStorageDropdownFactory = exports.CloudStorageDropdownFactory = function CloudStorageDropdownFactory(PanelHeaderDropdown) {
193
+ var dropdownItemsSelector = getDropdownItemsSelector();
194
+ var CloudStorageDropdown = function CloudStorageDropdown(props) {
195
+ return /*#__PURE__*/_react["default"].createElement(PanelHeaderDropdown, {
196
+ items: dropdownItemsSelector(props),
197
+ show: props.show,
198
+ onClose: props.onClose,
199
+ id: "cloud-storage"
200
+ });
201
+ };
198
202
  CloudStorageDropdown.defaultProps = {
199
203
  items: [{
200
204
  label: 'Save',
201
205
  icon: _icons.Save2,
202
206
  key: 'save',
203
- onClick: props => props.onSaveToStorage
207
+ onClick: function onClick(props) {
208
+ return props.onSaveToStorage;
209
+ }
204
210
  }, {
205
211
  label: 'Save As',
206
212
  icon: _icons.Save2,
207
213
  key: 'saveAs',
208
- onClick: props => props.onSaveAsToStorage
214
+ onClick: function onClick(props) {
215
+ return props.onSaveAsToStorage;
216
+ }
209
217
  }]
210
218
  };
211
219
  return CloudStorageDropdown;
212
220
  };
213
- exports.CloudStorageDropdownFactory = CloudStorageDropdownFactory;
214
221
  CloudStorageDropdownFactory.deps = [PanelHeaderDropdownFactory];
215
222
  PanelHeaderFactory.deps = [SaveExportDropdownFactory, CloudStorageDropdownFactory];
216
223
  function PanelHeaderFactory(SaveExportDropdown, CloudStorageDropdown) {
217
224
  var _PanelHeader;
218
- return _PanelHeader = class PanelHeader extends _react.Component {
219
- render() {
220
- const {
221
- appName,
222
- appWebsite,
223
- version,
224
- actionItems,
225
- visibleDropdown,
226
- showExportDropdown,
227
- hideExportDropdown,
228
- ...dropdownCallbacks
229
- } = this.props;
230
- let items = actionItems || [];
225
+ return _PanelHeader = /*#__PURE__*/function (_Component) {
226
+ function PanelHeader() {
227
+ (0, _classCallCheck2["default"])(this, PanelHeader);
228
+ return _callSuper(this, PanelHeader, arguments);
229
+ }
230
+ (0, _inherits2["default"])(PanelHeader, _Component);
231
+ return (0, _createClass2["default"])(PanelHeader, [{
232
+ key: "render",
233
+ value: function render() {
234
+ var _this = this;
235
+ var _this$props = this.props,
236
+ appName = _this$props.appName,
237
+ appWebsite = _this$props.appWebsite,
238
+ version = _this$props.version,
239
+ actionItems = _this$props.actionItems,
240
+ visibleDropdown = _this$props.visibleDropdown,
241
+ showExportDropdown = _this$props.showExportDropdown,
242
+ hideExportDropdown = _this$props.hideExportDropdown,
243
+ dropdownCallbacks = (0, _objectWithoutProperties2["default"])(_this$props, _excluded);
244
+ var items = actionItems || [];
231
245
 
232
- // don't render cloud storage icon if onSaveToStorage is not provided
233
- if (typeof this.props.onSaveToStorage !== 'function') {
234
- items = items.filter(ai => ai.id !== 'storage');
235
- }
236
- return /*#__PURE__*/_react.default.createElement(StyledPanelHeader, {
237
- className: "side-panel__panel-header"
238
- }, /*#__PURE__*/_react.default.createElement(StyledPanelHeaderTop, {
239
- className: "side-panel__panel-header__top"
240
- }, this.props.logoComponent && /*#__PURE__*/_react.default.createElement(this.props.logoComponent, {
241
- appName: appName,
242
- version: version,
243
- appWebsite: appWebsite
244
- }), /*#__PURE__*/_react.default.createElement(StyledPanelTopActions, null, items.map(item => /*#__PURE__*/_react.default.createElement("div", {
245
- className: "side-panel__panel-header__right",
246
- key: item.id,
247
- style: {
248
- position: 'relative'
246
+ // don't render cloud storage icon if onSaveToStorage is not provided
247
+ if (typeof this.props.onSaveToStorage !== 'function') {
248
+ items = items.filter(function (ai) {
249
+ return ai.id !== 'storage';
250
+ });
249
251
  }
250
- }, /*#__PURE__*/_react.default.createElement(PanelAction, {
251
- item: item,
252
- onClick: () => {
253
- if (item.dropdownComponent) {
254
- showExportDropdown(item.id);
255
- } else {
256
- item.onClick && item.onClick(this.props);
257
- }
258
- }
259
- }), item.dropdownComponent ? /*#__PURE__*/_react.default.createElement(item.dropdownComponent, (0, _extends2.default)({
260
- onClose: hideExportDropdown,
261
- show: visibleDropdown === item.id
262
- }, dropdownCallbacks)) : null)))));
263
- }
264
- }, (0, _defineProperty2.default)(_PanelHeader, "defaultProps", {
265
- logoComponent: _logo.default,
252
+ return /*#__PURE__*/_react["default"].createElement(StyledPanelHeader, {
253
+ className: "side-panel__panel-header"
254
+ }, /*#__PURE__*/_react["default"].createElement(StyledPanelHeaderTop, {
255
+ className: "side-panel__panel-header__top"
256
+ }, this.props.logoComponent && /*#__PURE__*/_react["default"].createElement(this.props.logoComponent, {
257
+ appName: appName,
258
+ version: version,
259
+ appWebsite: appWebsite
260
+ }), /*#__PURE__*/_react["default"].createElement(StyledPanelTopActions, null, items.map(function (item) {
261
+ return /*#__PURE__*/_react["default"].createElement("div", {
262
+ className: "side-panel__panel-header__right",
263
+ key: item.id,
264
+ style: {
265
+ position: 'relative'
266
+ }
267
+ }, /*#__PURE__*/_react["default"].createElement(PanelAction, {
268
+ item: item,
269
+ onClick: function onClick() {
270
+ if (item.dropdownComponent) {
271
+ showExportDropdown(item.id);
272
+ } else {
273
+ item.onClick && item.onClick(_this.props);
274
+ }
275
+ }
276
+ }), item.dropdownComponent ? /*#__PURE__*/_react["default"].createElement(item.dropdownComponent, (0, _extends2["default"])({
277
+ onClose: hideExportDropdown,
278
+ show: visibleDropdown === item.id
279
+ }, dropdownCallbacks)) : null);
280
+ }))));
281
+ }
282
+ }]);
283
+ }(_react.Component), (0, _defineProperty2["default"])(_PanelHeader, "defaultProps", {
284
+ logoComponent: _logo["default"],
266
285
  actionItems: [{
267
286
  id: 'storage',
268
287
  iconComponent: _icons.Db,
269
288
  tooltip: 'tooltip.cloudStorage',
270
- onClick: () => {},
289
+ onClick: function onClick() {},
271
290
  dropdownComponent: CloudStorageDropdown
272
291
  }, {
273
292
  id: 'save',
274
293
  iconComponent: _icons.Save,
275
- onClick: () => {},
294
+ onClick: function onClick() {},
276
295
  label: 'Share',
277
296
  dropdownComponent: SaveExportDropdown
278
297
  }]
279
298
  }), _PanelHeader;
280
299
  }
281
- var _default = exports.default = PanelHeaderFactory;
282
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9yZXNlbGVjdCIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9sb2dvIiwiX2ljb25zIiwiX3BhbmVsRHJvcGRvd24iLCJfdG9vbGJhciIsIl90b29sYmFySXRlbSIsIl9sb2NhbGl6YXRpb24iLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTdHlsZWRQYW5lbEhlYWRlciIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJjbGFzc25hbWVzIiwidGhlbWUiLCJzaWRlUGFuZWxIZWFkZXJCZyIsIlN0eWxlZFBhbmVsSGVhZGVyVG9wIiwiU3R5bGVkUGFuZWxUb3BBY3Rpb25zIiwiU3R5bGVkUGFuZWxBY3Rpb24iLCJhY3RpdmUiLCJ0ZXh0Q29sb3JIbCIsInN1YnRleHRDb2xvciIsIlN0eWxlZFRvb2xiYXIiLCJUb29sYmFyIiwiUGFuZWxBY3Rpb24iLCJfcmVmIiwiaXRlbSIsIm9uQ2xpY2siLCJjcmVhdGVFbGVtZW50IiwiaWQiLCJsYWJlbCIsInRhcmdldCIsImJsYW5rIiwiaHJlZiIsInJlbCIsImljb25Db21wb25lbnQiLCJfZXh0ZW5kczIiLCJoZWlnaHQiLCJpY29uQ29tcG9uZW50UHJvcHMiLCJ0b29sdGlwIiwiVG9vbHRpcCIsInBsYWNlIiwiZGVsYXlTaG93IiwiZWZmZWN0IiwiRm9ybWF0dGVkTWVzc2FnZSIsImV4cG9ydHMiLCJQYW5lbEhlYWRlckRyb3Bkb3duRmFjdG9yeSIsIlBhbmVsSGVhZGVyRHJvcGRvd24iLCJfcmVmMiIsIml0ZW1zIiwic2hvdyIsIm9uQ2xvc2UiLCJtYXAiLCJrZXkiLCJpY29uIiwiZ2V0RHJvcGRvd25JdGVtc1NlbGVjdG9yIiwiY3JlYXRlU2VsZWN0b3IiLCJmaWx0ZXIiLCJsIiwiU2F2ZUV4cG9ydERyb3Bkb3duRmFjdG9yeSIsImRyb3Bkb3duSXRlbXNTZWxlY3RvciIsIlNhdmVFeHBvcnREcm9wZG93biIsImRlZmF1bHRQcm9wcyIsIlBpY3R1cmUiLCJvbkV4cG9ydEltYWdlIiwiRGF0YVRhYmxlIiwib25FeHBvcnREYXRhIiwiTWFwSWNvbiIsIm9uRXhwb3J0TWFwIiwiU2F2ZTIiLCJvblNhdmVNYXAiLCJTaGFyZSIsIm9uU2hhcmVNYXAiLCJkZXBzIiwiQ2xvdWRTdG9yYWdlRHJvcGRvd25GYWN0b3J5IiwiQ2xvdWRTdG9yYWdlRHJvcGRvd24iLCJvblNhdmVUb1N0b3JhZ2UiLCJvblNhdmVBc1RvU3RvcmFnZSIsIlBhbmVsSGVhZGVyRmFjdG9yeSIsIl9QYW5lbEhlYWRlciIsIlBhbmVsSGVhZGVyIiwiQ29tcG9uZW50IiwicmVuZGVyIiwiYXBwTmFtZSIsImFwcFdlYnNpdGUiLCJ2ZXJzaW9uIiwiYWN0aW9uSXRlbXMiLCJ2aXNpYmxlRHJvcGRvd24iLCJzaG93RXhwb3J0RHJvcGRvd24iLCJoaWRlRXhwb3J0RHJvcGRvd24iLCJkcm9wZG93bkNhbGxiYWNrcyIsImFpIiwibG9nb0NvbXBvbmVudCIsInN0eWxlIiwicG9zaXRpb24iLCJkcm9wZG93bkNvbXBvbmVudCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJLZXBsZXJHbExvZ28iLCJEYiIsIlNhdmUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvcGFuZWwtaGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge1Rvb2x0aXB9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBLZXBsZXJHbExvZ28gZnJvbSAnY29tcG9uZW50cy9jb21tb24vbG9nbyc7XG5pbXBvcnQge1NhdmUsIERhdGFUYWJsZSwgU2F2ZTIsIFBpY3R1cmUsIERiLCBNYXAgYXMgTWFwSWNvbiwgU2hhcmV9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCBDbGlja091dHNpZGVDbG9zZURyb3Bkb3duIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9wYW5lbC1kcm9wZG93bic7XG5pbXBvcnQgVG9vbGJhciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi90b29sYmFyJztcbmltcG9ydCBUb29sYmFySXRlbSwge1Rvb2xiYXJJdGVtUHJvcHN9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3Rvb2xiYXItaXRlbSc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ2xvY2FsaXphdGlvbic7XG5pbXBvcnQge1VpU3RhdGV9IGZyb20gJ3JlZHVjZXJzJztcbmltcG9ydCB7QmFzZVByb3BzfSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucy9iYXNlJztcblxudHlwZSBTdHlsZWRQYW5lbEFjdGlvblByb3BzID0ge1xuICBhY3RpdmU/OiBib29sZWFuO1xufTtcblxudHlwZSBBY3Rpb25JdGVtID0ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgYmxhbms/OiBib29sZWFuO1xuICBocmVmPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBpY29uQ29tcG9uZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPFBhcnRpYWw8QmFzZVByb3BzPj47XG4gIGljb25Db21wb25lbnRQcm9wcz86IEJhc2VQcm9wcztcbiAgZHJvcGRvd25Db21wb25lbnQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPERyb3Bkb3duQ29tcG9uZW50UHJvcHM+O1xuICBvbkNsaWNrPzogKHA6IFBhbmVsSGVhZGVyUHJvcHMpID0+IHZvaWQ7XG59O1xuXG50eXBlIFBhbmVsQWN0aW9uUHJvcHMgPSB7XG4gIGl0ZW06IEFjdGlvbkl0ZW07XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG59O1xuXG50eXBlIFBhbmVsSGVhZGVyRHJvcGRvd25Qcm9wcyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgaXRlbXM6IFRvb2xiYXJJdGVtUHJvcHNbXTtcbiAgc2hvdz86IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG59O1xuXG50eXBlIERyb3Bkb3duQ2FsbGJhY2tzID0ge1xuICBsb2dvQ29tcG9uZW50PzogUmVhY3QuQ29tcG9uZW50VHlwZTx7XG4gICAgYXBwTmFtZTogc3RyaW5nO1xuICAgIGFwcFdlYnNpdGU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gIH0+O1xuICBvbkV4cG9ydEltYWdlOiAoKSA9PiB2b2lkO1xuICBvbkV4cG9ydERhdGE6ICgpID0+IHZvaWQ7XG4gIG9uRXhwb3J0Q29uZmlnPzogKCkgPT4gdm9pZDtcbiAgb25FeHBvcnRNYXA6ICgpID0+IHZvaWQ7XG4gIG9uU2F2ZVRvU3RvcmFnZTogKCgpID0+IHZvaWQpIHwgbnVsbDtcbiAgb25TYXZlQXNUb1N0b3JhZ2U6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG4gIG9uU2F2ZU1hcD86ICgpID0+IHZvaWQ7XG4gIG9uU2hhcmVNYXA6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG59O1xuXG50eXBlIEl0ZW0gPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IFJlYWN0LkNvbXBvbmVudFR5cGU8UGFydGlhbDxCYXNlUHJvcHM+PjtcbiAga2V5OiBzdHJpbmc7XG4gIG9uQ2xpY2s6IChwOiBEcm9wZG93bkNvbXBvbmVudFByb3BzKSA9PiAoKCkgPT4gdm9pZCkgfCBudWxsO1xufTtcblxudHlwZSBEcm9wZG93bkNvbXBvbmVudFByb3BzID0ge1xuICBzaG93OiBib29sZWFuO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBpdGVtcz86IEl0ZW1bXTtcbn0gJiBEcm9wZG93bkNhbGxiYWNrcztcblxudHlwZSBQYW5lbEhlYWRlclByb3BzID0ge1xuICBhcHBOYW1lOiBzdHJpbmc7XG4gIGFwcFdlYnNpdGU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICB2aXNpYmxlRHJvcGRvd246IFVpU3RhdGVbJ3Zpc2libGVEcm9wZG93biddO1xuICBhY3Rpb25JdGVtcz86IEFjdGlvbkl0ZW1bXTtcbiAgc2hvd0V4cG9ydERyb3Bkb3duOiAoaTogc3RyaW5nKSA9PiB2b2lkO1xuICBoaWRlRXhwb3J0RHJvcGRvd246ICgpID0+IHZvaWQ7XG59ICYgRHJvcGRvd25DYWxsYmFja3M7XG5cbmNvbnN0IFN0eWxlZFBhbmVsSGVhZGVyID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xuICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoJ3NpZGUtc2lkZS1wYW5lbF9faGVhZGVyJywgcHJvcHMuY2xhc3NOYW1lKVxufSkpYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNpZGVQYW5lbEhlYWRlckJnfTtcbiAgcGFkZGluZzogMTJweCAxNnB4IDAgMTZweDtcbmA7XG5cbmNvbnN0IFN0eWxlZFBhbmVsSGVhZGVyVG9wID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xuICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoJ3NpZGUtcGFuZWxfX2hlYWRlcl9fdG9wJywgcHJvcHMuY2xhc3NOYW1lKVxufSkpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkUGFuZWxUb3BBY3Rpb25zID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3NpZGUtcGFuZWxfX3RvcF9fYWN0aW9ucydcbn0pYFxuICBkaXNwbGF5OiBmbGV4O1xuYDtcblxuY29uc3QgU3R5bGVkUGFuZWxBY3Rpb24gPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2lkZS1wYW5lbF9fcGFuZWwtaGVhZGVyX19hY3Rpb24nXG59KTxTdHlsZWRQYW5lbEFjdGlvblByb3BzPmBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuYWN0aXZlID8gcHJvcHMudGhlbWUudGV4dENvbG9ySGwgOiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3IpfTtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAyNnB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIHBhZGRpbmc6IDVweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHAge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgfVxuICBhIHtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gIH1cblxuICA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFRvb2xiYXIgPSBzdHlsZWQoVG9vbGJhcilgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBQYW5lbEFjdGlvbjogUmVhY3QuRkM8UGFuZWxBY3Rpb25Qcm9wcz4gPSAoe2l0ZW0sIG9uQ2xpY2t9KSA9PiAoXG4gIDxTdHlsZWRQYW5lbEFjdGlvbiBkYXRhLXRpcCBkYXRhLWZvcj17YCR7aXRlbS5pZH0tYWN0aW9uYH0gb25DbGljaz17b25DbGlja30+XG4gICAge2l0ZW0ubGFiZWwgPyA8cD57aXRlbS5sYWJlbH08L3A+IDogbnVsbH1cbiAgICA8YSB0YXJnZXQ9e2l0ZW0uYmxhbmsgPyAnX2JsYW5rJyA6ICcnfSBocmVmPXtpdGVtLmhyZWZ9IHJlbD1cIm5vcmVmZXJyZXJcIj5cbiAgICAgIDxpdGVtLmljb25Db21wb25lbnQgaGVpZ2h0PVwiMjBweFwiIHsuLi5pdGVtLmljb25Db21wb25lbnRQcm9wc30gLz5cbiAgICA8L2E+XG4gICAge2l0ZW0udG9vbHRpcCA/IChcbiAgICAgIDxUb29sdGlwIGlkPXtgJHtpdGVtLmlkfS1hY3Rpb25gfSBwbGFjZT1cImJvdHRvbVwiIGRlbGF5U2hvdz17NTAwfSBlZmZlY3Q9XCJzb2xpZFwiPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17aXRlbS50b29sdGlwfSAvPlxuICAgICAgPC9Ub29sdGlwPlxuICAgICkgOiBudWxsfVxuICA8L1N0eWxlZFBhbmVsQWN0aW9uPlxuKTtcblxuZXhwb3J0IGNvbnN0IFBhbmVsSGVhZGVyRHJvcGRvd25GYWN0b3J5ID0gKCkgPT4ge1xuICBjb25zdCBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZWFjdC5GQzxQYW5lbEhlYWRlckRyb3Bkb3duUHJvcHM+ID0gKHtpdGVtcywgc2hvdywgb25DbG9zZSwgaWR9KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRUb29sYmFyIHNob3c9e3Nob3d9IGNsYXNzTmFtZT17YCR7aWR9LWRyb3Bkb3duYH0+XG4gICAgICAgIDxDbGlja091dHNpZGVDbG9zZURyb3Bkb3duXG4gICAgICAgICAgY2xhc3NOYW1lPVwicGFuZWwtaGVhZGVyLWRyb3Bkb3duX19pbm5lclwiXG4gICAgICAgICAgc2hvdz17c2hvd31cbiAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICA+XG4gICAgICAgICAge2l0ZW1zLm1hcChpdGVtID0+IChcbiAgICAgICAgICAgIDxUb29sYmFySXRlbVxuICAgICAgICAgICAgICBpZD17aXRlbS5rZXl9XG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XG4gICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxuICAgICAgICAgICAgICBpY29uPXtpdGVtLmljb259XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2l0ZW0ub25DbGlja31cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2xpY2tPdXRzaWRlQ2xvc2VEcm9wZG93bj5cbiAgICAgIDwvU3R5bGVkVG9vbGJhcj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBQYW5lbEhlYWRlckRyb3Bkb3duO1xufTtcblxuY29uc3QgZ2V0RHJvcGRvd25JdGVtc1NlbGVjdG9yID0gKCkgPT5cbiAgY3JlYXRlU2VsZWN0b3IoXG4gICAgKHByb3BzOiBEcm9wZG93bkNvbXBvbmVudFByb3BzKSA9PiBwcm9wcyxcbiAgICBwcm9wcyA9PlxuICAgICAgKHByb3BzLml0ZW1zIHx8IFtdKVxuICAgICAgICAubWFwKHQgPT4gKHtcbiAgICAgICAgICAuLi50LFxuICAgICAgICAgIG9uQ2xpY2s6IHQub25DbGljayAmJiB0Lm9uQ2xpY2socHJvcHMpID8gdC5vbkNsaWNrKHByb3BzKSA6IG51bGxcbiAgICAgICAgfSkpXG4gICAgICAgIC5maWx0ZXIobCA9PiBsLm9uQ2xpY2spXG4gICk7XG5cbmV4cG9ydCBjb25zdCBTYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5ID0gKFxuICBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbEhlYWRlckRyb3Bkb3duRmFjdG9yeT5cbikgPT4ge1xuICBjb25zdCBkcm9wZG93bkl0ZW1zU2VsZWN0b3IgPSBnZXREcm9wZG93bkl0ZW1zU2VsZWN0b3IoKTtcblxuICBjb25zdCBTYXZlRXhwb3J0RHJvcGRvd246IFJlYWN0LkZDPERyb3Bkb3duQ29tcG9uZW50UHJvcHM+ID0gcHJvcHMgPT4gKFxuICAgIDxQYW5lbEhlYWRlckRyb3Bkb3duXG4gICAgICBpdGVtcz17ZHJvcGRvd25JdGVtc1NlbGVjdG9yKHByb3BzKX1cbiAgICAgIHNob3c9e3Byb3BzLnNob3d9XG4gICAgICBvbkNsb3NlPXtwcm9wcy5vbkNsb3NlfVxuICAgICAgaWQ9XCJzYXZlLWV4cG9ydFwiXG4gICAgLz5cbiAgKTtcblxuICBTYXZlRXhwb3J0RHJvcGRvd24uZGVmYXVsdFByb3BzID0ge1xuICAgIGl0ZW1zOiBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5leHBvcnRJbWFnZScsXG4gICAgICAgIGljb246IFBpY3R1cmUsXG4gICAgICAgIGtleTogJ2ltYWdlJyxcbiAgICAgICAgb25DbGljazogcHJvcHMgPT4gcHJvcHMub25FeHBvcnRJbWFnZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICd0b29sYmFyLmV4cG9ydERhdGEnLFxuICAgICAgICBpY29uOiBEYXRhVGFibGUsXG4gICAgICAgIGtleTogJ2RhdGEnLFxuICAgICAgICBvbkNsaWNrOiBwcm9wcyA9PiBwcm9wcy5vbkV4cG9ydERhdGFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5leHBvcnRNYXAnLFxuICAgICAgICBpY29uOiBNYXBJY29uLFxuICAgICAgICBrZXk6ICdtYXAnLFxuICAgICAgICBvbkNsaWNrOiBwcm9wcyA9PiBwcm9wcy5vbkV4cG9ydE1hcFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICd0b29sYmFyLnNhdmVNYXAnLFxuICAgICAgICBpY29uOiBTYXZlMixcbiAgICAgICAga2V5OiAnc2F2ZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZU1hcCFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5zaGFyZU1hcFVSTCcsXG4gICAgICAgIGljb246IFNoYXJlLFxuICAgICAgICBrZXk6ICdzaGFyZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2hhcmVNYXBcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIFNhdmVFeHBvcnREcm9wZG93bjtcbn07XG5TYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5LmRlcHMgPSBbUGFuZWxIZWFkZXJEcm9wZG93bkZhY3RvcnldO1xuXG5leHBvcnQgY29uc3QgQ2xvdWRTdG9yYWdlRHJvcGRvd25GYWN0b3J5ID0gKFxuICBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbEhlYWRlckRyb3Bkb3duRmFjdG9yeT5cbikgPT4ge1xuICBjb25zdCBkcm9wZG93bkl0ZW1zU2VsZWN0b3IgPSBnZXREcm9wZG93bkl0ZW1zU2VsZWN0b3IoKTtcblxuICBjb25zdCBDbG91ZFN0b3JhZ2VEcm9wZG93bjogUmVhY3QuRkM8RHJvcGRvd25Db21wb25lbnRQcm9wcz4gPSBwcm9wcyA9PiAoXG4gICAgPFBhbmVsSGVhZGVyRHJvcGRvd25cbiAgICAgIGl0ZW1zPXtkcm9wZG93bkl0ZW1zU2VsZWN0b3IocHJvcHMpfVxuICAgICAgc2hvdz17cHJvcHMuc2hvd31cbiAgICAgIG9uQ2xvc2U9e3Byb3BzLm9uQ2xvc2V9XG4gICAgICBpZD1cImNsb3VkLXN0b3JhZ2VcIlxuICAgIC8+XG4gICk7XG4gIENsb3VkU3RvcmFnZURyb3Bkb3duLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBpdGVtczogW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ1NhdmUnLFxuICAgICAgICBpY29uOiBTYXZlMixcbiAgICAgICAga2V5OiAnc2F2ZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZVRvU3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdTYXZlIEFzJyxcbiAgICAgICAgaWNvbjogU2F2ZTIsXG4gICAgICAgIGtleTogJ3NhdmVBcycsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZUFzVG9TdG9yYWdlXG4gICAgICB9XG4gICAgXVxuICB9O1xuICByZXR1cm4gQ2xvdWRTdG9yYWdlRHJvcGRvd247XG59O1xuQ2xvdWRTdG9yYWdlRHJvcGRvd25GYWN0b3J5LmRlcHMgPSBbUGFuZWxIZWFkZXJEcm9wZG93bkZhY3RvcnldO1xuXG5QYW5lbEhlYWRlckZhY3RvcnkuZGVwcyA9IFtTYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5LCBDbG91ZFN0b3JhZ2VEcm9wZG93bkZhY3RvcnldO1xuXG5mdW5jdGlvbiBQYW5lbEhlYWRlckZhY3RvcnkoXG4gIFNhdmVFeHBvcnREcm9wZG93bjogUmV0dXJuVHlwZTx0eXBlb2YgU2F2ZUV4cG9ydERyb3Bkb3duRmFjdG9yeT4sXG4gIENsb3VkU3RvcmFnZURyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBDbG91ZFN0b3JhZ2VEcm9wZG93bkZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPFBhbmVsSGVhZGVyUHJvcHM+IHtcbiAgcmV0dXJuIGNsYXNzIFBhbmVsSGVhZGVyIGV4dGVuZHMgQ29tcG9uZW50PFBhbmVsSGVhZGVyUHJvcHM+IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgbG9nb0NvbXBvbmVudDogS2VwbGVyR2xMb2dvLFxuICAgICAgYWN0aW9uSXRlbXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnc3RvcmFnZScsXG4gICAgICAgICAgaWNvbkNvbXBvbmVudDogRGIsXG4gICAgICAgICAgdG9vbHRpcDogJ3Rvb2x0aXAuY2xvdWRTdG9yYWdlJyxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudDogQ2xvdWRTdG9yYWdlRHJvcGRvd25cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnc2F2ZScsXG4gICAgICAgICAgaWNvbkNvbXBvbmVudDogU2F2ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICAgICAgICBsYWJlbDogJ1NoYXJlJyxcbiAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudDogU2F2ZUV4cG9ydERyb3Bkb3duXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBOYW1lLFxuICAgICAgICBhcHBXZWJzaXRlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBhY3Rpb25JdGVtcyxcbiAgICAgICAgdmlzaWJsZURyb3Bkb3duLFxuICAgICAgICBzaG93RXhwb3J0RHJvcGRvd24sXG4gICAgICAgIGhpZGVFeHBvcnREcm9wZG93bixcbiAgICAgICAgLi4uZHJvcGRvd25DYWxsYmFja3NcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgbGV0IGl0ZW1zID0gYWN0aW9uSXRlbXMgfHwgW107XG5cbiAgICAgIC8vIGRvbid0IHJlbmRlciBjbG91ZCBzdG9yYWdlIGljb24gaWYgb25TYXZlVG9TdG9yYWdlIGlzIG5vdCBwcm92aWRlZFxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uU2F2ZVRvU3RvcmFnZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihhaSA9PiBhaS5pZCAhPT0gJ3N0b3JhZ2UnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFBhbmVsSGVhZGVyIGNsYXNzTmFtZT1cInNpZGUtcGFuZWxfX3BhbmVsLWhlYWRlclwiPlxuICAgICAgICAgIDxTdHlsZWRQYW5lbEhlYWRlclRvcCBjbGFzc05hbWU9XCJzaWRlLXBhbmVsX19wYW5lbC1oZWFkZXJfX3RvcFwiPlxuICAgICAgICAgICAge3RoaXMucHJvcHMubG9nb0NvbXBvbmVudCAmJiAoXG4gICAgICAgICAgICAgIDx0aGlzLnByb3BzLmxvZ29Db21wb25lbnRcbiAgICAgICAgICAgICAgICBhcHBOYW1lPXthcHBOYW1lfVxuICAgICAgICAgICAgICAgIHZlcnNpb249e3ZlcnNpb259XG4gICAgICAgICAgICAgICAgYXBwV2Vic2l0ZT17YXBwV2Vic2l0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8U3R5bGVkUGFuZWxUb3BBY3Rpb25zPlxuICAgICAgICAgICAgICB7aXRlbXMubWFwKGl0ZW0gPT4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGUtcGFuZWxfX3BhbmVsLWhlYWRlcl9fcmlnaHRcIlxuICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFBhbmVsQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGl0ZW09e2l0ZW19XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5kcm9wZG93bkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4cG9ydERyb3Bkb3duKGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9uQ2xpY2sgJiYgaXRlbS5vbkNsaWNrKHRoaXMucHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB7aXRlbS5kcm9wZG93bkNvbXBvbmVudCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGl0ZW0uZHJvcGRvd25Db21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXtoaWRlRXhwb3J0RHJvcGRvd259XG4gICAgICAgICAgICAgICAgICAgICAgc2hvdz17dmlzaWJsZURyb3Bkb3duID09PSBpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgICAgIHsuLi5kcm9wZG93bkNhbGxiYWNrc31cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU3R5bGVkUGFuZWxUb3BBY3Rpb25zPlxuICAgICAgICAgIDwvU3R5bGVkUGFuZWxIZWFkZXJUb3A+XG4gICAgICAgIDwvU3R5bGVkUGFuZWxIZWFkZXI+XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxIZWFkZXJGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFvQkEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGtCQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxNQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdBQUFOLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUyxRQUFBLEdBQUFQLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVSxZQUFBLEdBQUFSLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFBOEMsU0FBQVkseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWQsd0JBQUFjLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxDQUFBSCxPQUFBLEdBQUFMLENBQUEsRUFBQUcsQ0FBQSxJQUFBQSxDQUFBLENBQUFlLEdBQUEsQ0FBQWxCLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBOUI5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFtRkEsTUFBTVcsaUJBQWlCLEdBQUdDLHlCQUFNLENBQUNDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDQyxLQUFLLEtBQUs7RUFDbkRDLFNBQVMsRUFBRSxJQUFBQyxtQkFBVSxFQUFDLHlCQUF5QixFQUFFRixLQUFLLENBQUNDLFNBQVM7QUFDbEUsQ0FBQyxDQUFDLENBQUM7QUFDSCxzQkFBc0JELEtBQUssSUFBSUEsS0FBSyxDQUFDRyxLQUFLLENBQUNDLGlCQUFpQjtBQUM1RDtBQUNBLENBQUM7QUFFRCxNQUFNQyxvQkFBb0IsR0FBR1IseUJBQU0sQ0FBQ0MsR0FBRyxDQUFDQyxLQUFLLENBQUNDLEtBQUssS0FBSztFQUN0REMsU0FBUyxFQUFFLElBQUFDLG1CQUFVLEVBQUMseUJBQXlCLEVBQUVGLEtBQUssQ0FBQ0MsU0FBUztBQUNsRSxDQUFDLENBQUMsQ0FBQztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUVELE1BQU1LLHFCQUFxQixHQUFHVCx5QkFBTSxDQUFDQyxHQUFHLENBQUNDLEtBQUssQ0FBQztFQUM3Q0UsU0FBUyxFQUFFO0FBQ2IsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxDQUFDO0FBRUQsTUFBTU0saUJBQWlCLEdBQUdWLHlCQUFNLENBQUNDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDO0VBQ3pDRSxTQUFTLEVBQUU7QUFDYixDQUFDLENBQXlCO0FBQzFCO0FBQ0E7QUFDQSxXQUFXRCxLQUFLLElBQUtBLEtBQUssQ0FBQ1EsTUFBTSxHQUFHUixLQUFLLENBQUNHLEtBQUssQ0FBQ00sV0FBVyxHQUFHVCxLQUFLLENBQUNHLEtBQUssQ0FBQ08sWUFBYTtBQUN2RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWFWLEtBQUssSUFBSUEsS0FBSyxDQUFDRyxLQUFLLENBQUNNLFdBQVc7QUFDN0M7QUFDQTtBQUNBLGVBQWVULEtBQUssSUFBSUEsS0FBSyxDQUFDRyxLQUFLLENBQUNNLFdBQVc7QUFDL0M7QUFDQTtBQUNBLENBQUM7QUFFRCxNQUFNRSxhQUFhLEdBQUcsSUFBQWQseUJBQU0sRUFBQ2UsZ0JBQU8sQ0FBQztBQUNyQztBQUNBLENBQUM7QUFFTSxNQUFNQyxXQUF1QyxHQUFHQyxJQUFBO0VBQUEsSUFBQztJQUFDQyxJQUFJO0lBQUVDO0VBQU8sQ0FBQyxHQUFBRixJQUFBO0VBQUEsb0JBQ3JFcEQsTUFBQSxDQUFBb0IsT0FBQSxDQUFBbUMsYUFBQSxDQUFDVixpQkFBaUI7SUFBQyxnQkFBUTtJQUFDLFlBQVUsR0FBR1EsSUFBSSxDQUFDRyxFQUFFLFNBQVU7SUFBQ0YsT0FBTyxFQUFFQTtFQUFRLEdBQ3pFRCxJQUFJLENBQUNJLEtBQUssZ0JBQUd6RCxNQUFBLENBQUFvQixPQUFBLENBQUFtQyxhQUFBLFlBQUlGLElBQUksQ0FBQ0ksS0FBUyxDQUFDLEdBQUcsSUFBSSxlQUN4Q3pELE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQW1DLGFBQUE7SUFBR0csTUFBTSxFQUFFTCxJQUFJLENBQUNNLEtBQUssR0FBRyxRQUFRLEdBQUcsRUFBRztJQUFDQyxJQUFJLEVBQUVQLElBQUksQ0FBQ08sSUFBSztJQUFDQyxHQUFHLEVBQUM7RUFBWSxnQkFDdEU3RCxNQUFBLENBQUFvQixPQUFBLENBQUFtQyxhQUFBLENBQUNGLElBQUksQ0FBQ1MsYUFBYSxNQUFBQyxTQUFBLENBQUEzQyxPQUFBO0lBQUM0QyxNQUFNLEVBQUM7RUFBTSxHQUFLWCxJQUFJLENBQUNZLGtCQUFrQixDQUFHLENBQy9ELENBQUMsRUFDSFosSUFBSSxDQUFDYSxPQUFPLGdCQUNYbEUsTUFBQSxDQUFBb0IsT0FBQSxDQUFBbUMsYUFBQSxDQUFDaEQsa0JBQUEsQ0FBQTRELE9BQU87SUFBQ1gsRUFBRSxFQUFFLEdBQUdILElBQUksQ0FBQ0csRUFBRSxTQUFVO0lBQUNZLEtBQUssRUFBQyxRQUFRO0lBQUNDLFNBQVMsRUFBRSxHQUFJO0lBQUNDLE1BQU0sRUFBQztFQUFPLGdCQUM3RXRFLE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQW1DLGFBQUEsQ0FBQzFDLGFBQUEsQ0FBQTBELGdCQUFnQjtJQUFDZixFQUFFLEVBQUVILElBQUksQ0FBQ2E7RUFBUSxDQUFFLENBQzlCLENBQUMsR0FDUixJQUNhLENBQUM7QUFBQSxDQUNyQjtBQUFDTSxPQUFBLENBQUFyQixXQUFBLEdBQUFBLFdBQUE7QUFFSyxNQUFNc0IsMEJBQTBCLEdBQUdBLENBQUEsS0FBTTtFQUM5QyxNQUFNQyxtQkFBdUQsR0FBR0MsS0FBQSxJQUFnQztJQUFBLElBQS9CO01BQUNDLEtBQUs7TUFBRUMsSUFBSTtNQUFFQyxPQUFPO01BQUV0QjtJQUFFLENBQUMsR0FBQW1CLEtBQUE7SUFDekYsb0JBQ0UzRSxNQUFBLENBQUFvQixPQUFBLENBQUFtQyxhQUFBLENBQUNOLGFBQWE7TUFBQzRCLElBQUksRUFBRUEsSUFBSztNQUFDdEMsU0FBUyxFQUFFLEdBQUdpQixFQUFFO0lBQVksZ0JBQ3JEeEQsTUFBQSxDQUFBb0IsT0FBQSxDQUFBbUMsYUFBQSxDQUFDN0MsY0FBQSxDQUFBVSxPQUF5QjtNQUN4Qm1CLFNBQVMsRUFBQyw4QkFBOEI7TUFDeENzQyxJQUFJLEVBQUVBLElBQUs7TUFDWEMsT0FBTyxFQUFFQTtJQUFRLEdBRWhCRixLQUFLLENBQUNHLEdBQUcsQ0FBQzFCLElBQUksaUJBQ2JyRCxNQUFBLENBQUFvQixPQUFBLENBQUFtQyxhQUFBLENBQUMzQyxZQUFBLENBQUFRLE9BQVc7TUFDVm9DLEVBQUUsRUFBRUgsSUFBSSxDQUFDMkIsR0FBSTtNQUNiQSxHQUFHLEVBQUUzQixJQUFJLENBQUMyQixHQUFJO01BQ2R2QixLQUFLLEVBQUVKLElBQUksQ0FBQ0ksS0FBTTtNQUNsQndCLElBQUksRUFBRTVCLElBQUksQ0FBQzRCLElBQUs7TUFDaEIzQixPQUFPLEVBQUVELElBQUksQ0FBQ0MsT0FBUTtNQUN0QndCLE9BQU8sRUFBRUE7SUFBUSxDQUNsQixDQUNGLENBQ3dCLENBQ2QsQ0FBQztFQUVwQixDQUFDO0VBRUQsT0FBT0osbUJBQW1CO0FBQzVCLENBQUM7QUFBQ0YsT0FBQSxDQUFBQywwQkFBQSxHQUFBQSwwQkFBQTtBQUVGLE1BQU1TLHdCQUF3QixHQUFHQSxDQUFBLEtBQy9CLElBQUFDLHdCQUFjLEVBQ1g3QyxLQUE2QixJQUFLQSxLQUFLLEVBQ3hDQSxLQUFLLElBQ0gsQ0FBQ0EsS0FBSyxDQUFDc0MsS0FBSyxJQUFJLEVBQUUsRUFDZkcsR0FBRyxDQUFDN0QsQ0FBQyxLQUFLO0VBQ1QsR0FBR0EsQ0FBQztFQUNKb0MsT0FBTyxFQUFFcEMsQ0FBQyxDQUFDb0MsT0FBTyxJQUFJcEMsQ0FBQyxDQUFDb0MsT0FBTyxDQUFDaEIsS0FBSyxDQUFDLEdBQUdwQixDQUFDLENBQUNvQyxPQUFPLENBQUNoQixLQUFLLENBQUMsR0FBRztBQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUNGOEMsTUFBTSxDQUFDQyxDQUFDLElBQUlBLENBQUMsQ0FBQy9CLE9BQU8sQ0FDNUIsQ0FBQztBQUVJLE1BQU1nQyx5QkFBeUIsR0FDcENaLG1CQUFrRSxJQUMvRDtFQUNILE1BQU1hLHFCQUFxQixHQUFHTCx3QkFBd0IsQ0FBQyxDQUFDO0VBRXhELE1BQU1NLGtCQUFvRCxHQUFHbEQsS0FBSyxpQkFDaEV0QyxNQUFBLENBQUFvQixPQUFBLENBQUFtQyxhQUFBLENBQUNtQixtQkFBbUI7SUFDbEJFLEtBQUssRUFBRVcscUJBQXFCLENBQUNqRCxLQUFLLENBQUU7SUFDcEN1QyxJQUFJLEVBQUV2QyxLQUFLLENBQUN1QyxJQUFLO0lBQ2pCQyxPQUFPLEVBQUV4QyxLQUFLLENBQUN3QyxPQUFRO0lBQ3ZCdEIsRUFBRSxFQUFDO0VBQWEsQ0FDakIsQ0FDRjtFQUVEZ0Msa0JBQWtCLENBQUNDLFlBQVksR0FBRztJQUNoQ2IsS0FBSyxFQUFFLENBQ0w7TUFDRW5CLEtBQUssRUFBRSxxQkFBcUI7TUFDNUJ3QixJQUFJLEVBQUVTLGNBQU87TUFDYlYsR0FBRyxFQUFFLE9BQU87TUFDWjFCLE9BQU8sRUFBRWhCLEtBQUssSUFBSUEsS0FBSyxDQUFDcUQ7SUFDMUIsQ0FBQyxFQUNEO01BQ0VsQyxLQUFLLEVBQUUsb0JBQW9CO01BQzNCd0IsSUFBSSxFQUFFVyxnQkFBUztNQUNmWixHQUFHLEVBQUUsTUFBTTtNQUNYMUIsT0FBTyxFQUFFaEIsS0FBSyxJQUFJQSxLQUFLLENBQUN1RDtJQUMxQixDQUFDLEVBQ0Q7TUFDRXBDLEtBQUssRUFBRSxtQkFBbUI7TUFDMUJ3QixJQUFJLEVBQUVhLFVBQU87TUFDYmQsR0FBRyxFQUFFLEtBQUs7TUFDVjFCLE9BQU8sRUFBRWhCLEtBQUssSUFBSUEsS0FBSyxDQUFDeUQ7SUFDMUIsQ0FBQyxFQUNEO01BQ0V0QyxLQUFLLEVBQUUsaUJBQWlCO01BQ3hCd0IsSUFBSSxFQUFFZSxZQUFLO01BQ1hoQixHQUFHLEVBQUUsTUFBTTtNQUNYMUIsT0FBTyxFQUFFaEIsS0FBSyxJQUFJQSxLQUFLLENBQUMyRDtJQUMxQixDQUFDLEVBQ0Q7TUFDRXhDLEtBQUssRUFBRSxxQkFBcUI7TUFDNUJ3QixJQUFJLEVBQUVpQixZQUFLO01BQ1hsQixHQUFHLEVBQUUsT0FBTztNQUNaMUIsT0FBTyxFQUFFaEIsS0FBSyxJQUFJQSxLQUFLLENBQUM2RDtJQUMxQixDQUFDO0VBRUwsQ0FBQztFQUVELE9BQU9YLGtCQUFrQjtBQUMzQixDQUFDO0FBQUNoQixPQUFBLENBQUFjLHlCQUFBLEdBQUFBLHlCQUFBO0FBQ0ZBLHlCQUF5QixDQUFDYyxJQUFJLEdBQUcsQ0FBQzNCLDBCQUEwQixDQUFDO0FBRXRELE1BQU00QiwyQkFBMkIsR0FDdEMzQixtQkFBa0UsSUFDL0Q7RUFDSCxNQUFNYSxxQkFBcUIsR0FBR0wsd0JBQXdCLENBQUMsQ0FBQztFQUV4RCxNQUFNb0Isb0JBQXNELEdBQUdoRSxLQUFLLGlCQUNsRXRDLE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQW1DLGFBQUEsQ0FBQ21CLG1CQUFtQjtJQUNsQkUsS0FBSyxFQUFFVyxxQkFBcUIsQ0FBQ2pELEtBQUssQ0FBRTtJQUNwQ3VDLElBQUksRUFBRXZDLEtBQUssQ0FBQ3VDLElBQUs7SUFDakJDLE9BQU8sRUFBRXhDLEtBQUssQ0FBQ3dDLE9BQVE7SUFDdkJ0QixFQUFFLEVBQUM7RUFBZSxDQUNuQixDQUNGO0VBQ0Q4QyxvQkFBb0IsQ0FBQ2IsWUFBWSxHQUFHO0lBQ2xDYixLQUFLLEVBQUUsQ0FDTDtNQUNFbkIsS0FBSyxFQUFFLE1BQU07TUFDYndCLElBQUksRUFBRWUsWUFBSztNQUNYaEIsR0FBRyxFQUFFLE1BQU07TUFDWDFCLE9BQU8sRUFBRWhCLEtBQUssSUFBSUEsS0FBSyxDQUFDaUU7SUFDMUIsQ0FBQyxFQUNEO01BQ0U5QyxLQUFLLEVBQUUsU0FBUztNQUNoQndCLElBQUksRUFBRWUsWUFBSztNQUNYaEIsR0FBRyxFQUFFLFFBQVE7TUFDYjFCLE9BQU8sRUFBRWhCLEtBQUssSUFBSUEsS0FBSyxDQUFDa0U7SUFDMUIsQ0FBQztFQUVMLENBQUM7RUFDRCxPQUFPRixvQkFBb0I7QUFDN0IsQ0FBQztBQUFDOUIsT0FBQSxDQUFBNkIsMkJBQUEsR0FBQUEsMkJBQUE7QUFDRkEsMkJBQTJCLENBQUNELElBQUksR0FBRyxDQUFDM0IsMEJBQTBCLENBQUM7QUFFL0RnQyxrQkFBa0IsQ0FBQ0wsSUFBSSxHQUFHLENBQUNkLHlCQUF5QixFQUFFZSwyQkFBMkIsQ0FBQztBQUVsRixTQUFTSSxrQkFBa0JBLENBQ3pCakIsa0JBQWdFLEVBQ2hFYyxvQkFBb0UsRUFDN0I7RUFBQSxJQUFBSSxZQUFBO0VBQ3ZDLE9BQUFBLFlBQUEsR0FBTyxNQUFNQyxXQUFXLFNBQVNDLGdCQUFTLENBQW1CO0lBcUIzREMsTUFBTUEsQ0FBQSxFQUFHO01BQ1AsTUFBTTtRQUNKQyxPQUFPO1FBQ1BDLFVBQVU7UUFDVkMsT0FBTztRQUNQQyxXQUFXO1FBQ1hDLGVBQWU7UUFDZkMsa0JBQWtCO1FBQ2xCQyxrQkFBa0I7UUFDbEIsR0FBR0M7TUFDTCxDQUFDLEdBQUcsSUFBSSxDQUFDL0UsS0FBSztNQUNkLElBQUlzQyxLQUFLLEdBQUdxQyxXQUFXLElBQUksRUFBRTs7TUFFN0I7TUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDM0UsS0FBSyxDQUFDaUUsZUFBZSxLQUFLLFVBQVUsRUFBRTtRQUNwRDNCLEtBQUssR0FBR0EsS0FBSyxDQUFDUSxNQUFNLENBQUNrQyxFQUFFLElBQUlBLEVBQUUsQ0FBQzlELEVBQUUsS0FBSyxTQUFTLENBQUM7TUFDakQ7TUFFQSxvQkFDRXhELE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQW1DLGFBQUEsQ0FBQ3JCLGlCQUFpQjtRQUFDSyxTQUFTLEVBQUM7TUFBMEIsZ0JBQ3JEdkMsTUFBQSxDQUFBb0IsT0FBQSxDQUFBbUMsYUFBQSxDQUFDWixvQkFBb0I7UUFBQ0osU0FBUyxFQUFDO01BQStCLEdBQzVELElBQUksQ0FBQ0QsS0FBSyxDQUFDaUYsYUFBYSxpQkFDdkJ2SCxNQUFBLENBQUFvQixPQUFBLENBQUFtQyxhQUFBLE1BQU1qQixLQUFLLENBQUNpRixhQUFhO1FBQ3ZCVCxPQUFPLEVBQUVBLE9BQVE7UUFDakJFLE9BQU8sRUFBRUEsT0FBUTtRQUNqQkQsVUFBVSxFQUFFQTtNQUFXLENBQ3hCLENBQ0YsZUFDRC9HLE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQW1DLGFBQUEsQ0FBQ1gscUJBQXFCLFFBQ25CZ0MsS0FBSyxDQUFDRyxHQUFHLENBQUMxQixJQUFJLGlCQUNickQsTUFBQSxDQUFBb0IsT0FBQSxDQUFBbUMsYUFBQTtRQUNFaEIsU0FBUyxFQUFDLGlDQUFpQztRQUMzQ3lDLEdBQUcsRUFBRTNCLElBQUksQ0FBQ0csRUFBRztRQUNiZ0UsS0FBSyxFQUFFO1VBQUNDLFFBQVEsRUFBRTtRQUFVO01BQUUsZ0JBRTlCekgsTUFBQSxDQUFBb0IsT0FBQSxDQUFBbUMsYUFBQSxDQUFDSixXQUFXO1FBQ1ZFLElBQUksRUFBRUEsSUFBSztRQUNYQyxPQUFPLEVBQUVBLENBQUEsS0FBTTtVQUNiLElBQUlELElBQUksQ0FBQ3FFLGlCQUFpQixFQUFFO1lBQzFCUCxrQkFBa0IsQ0FBQzlELElBQUksQ0FBQ0csRUFBRSxDQUFDO1VBQzdCLENBQUMsTUFBTTtZQUNMSCxJQUFJLENBQUNDLE9BQU8sSUFBSUQsSUFBSSxDQUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDaEIsS0FBSyxDQUFDO1VBQzFDO1FBQ0Y7TUFBRSxDQUNILENBQUMsRUFDRGUsSUFBSSxDQUFDcUUsaUJBQWlCLGdCQUNyQjFILE1BQUEsQ0FBQW9CLE9BQUEsQ0FBQW1DLGFBQUEsQ0FBQ0YsSUFBSSxDQUFDcUUsaUJBQWlCLE1BQUEzRCxTQUFBLENBQUEzQyxPQUFBO1FBQ3JCMEQsT0FBTyxFQUFFc0Msa0JBQW1CO1FBQzVCdkMsSUFBSSxFQUFFcUMsZUFBZSxLQUFLN0QsSUFBSSxDQUFDRztNQUFHLEdBQzlCNkQsaUJBQWlCLENBQ3RCLENBQUMsR0FDQSxJQUNELENBQ04sQ0FDb0IsQ0FDSCxDQUNMLENBQUM7SUFFeEI7RUFDRixDQUFDLE1BQUFNLGdCQUFBLENBQUF2RyxPQUFBLEVBQUFzRixZQUFBLGtCQS9FdUI7SUFDcEJhLGFBQWEsRUFBRUssYUFBWTtJQUMzQlgsV0FBVyxFQUFFLENBQ1g7TUFDRXpELEVBQUUsRUFBRSxTQUFTO01BQ2JNLGFBQWEsRUFBRStELFNBQUU7TUFDakIzRCxPQUFPLEVBQUUsc0JBQXNCO01BQy9CWixPQUFPLEVBQUVBLENBQUEsS0FBTSxDQUFDLENBQUM7TUFDakJvRSxpQkFBaUIsRUFBRXBCO0lBQ3JCLENBQUMsRUFDRDtNQUNFOUMsRUFBRSxFQUFFLE1BQU07TUFDVk0sYUFBYSxFQUFFZ0UsV0FBSTtNQUNuQnhFLE9BQU8sRUFBRUEsQ0FBQSxLQUFNLENBQUMsQ0FBQztNQUNqQkcsS0FBSyxFQUFFLE9BQU87TUFDZGlFLGlCQUFpQixFQUFFbEM7SUFDckIsQ0FBQztFQUVMLENBQUMsR0FBQWtCLFlBQUE7QUE4REw7QUFBQyxJQUFBcUIsUUFBQSxHQUFBdkQsT0FBQSxDQUFBcEQsT0FBQSxHQUVjcUYsa0JBQWtCIiwiaWdub3JlTGlzdCI6W119
300
+ var _default = exports["default"] = PanelHeaderFactory;
301
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9yZXNlbGVjdCIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9sb2dvIiwiX2ljb25zIiwiX3BhbmVsRHJvcGRvd24iLCJfdG9vbGJhciIsIl90b29sYmFySXRlbSIsIl9sb2NhbGl6YXRpb24iLCJfZXhjbHVkZWQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NhbGxTdXBlciIsIm8iLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJTdHlsZWRQYW5lbEhlYWRlciIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJjbGFzc25hbWVzIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJ0aGVtZSIsInNpZGVQYW5lbEhlYWRlckJnIiwiU3R5bGVkUGFuZWxIZWFkZXJUb3AiLCJTdHlsZWRQYW5lbFRvcEFjdGlvbnMiLCJTdHlsZWRQYW5lbEFjdGlvbiIsImFjdGl2ZSIsInRleHRDb2xvckhsIiwic3VidGV4dENvbG9yIiwiU3R5bGVkVG9vbGJhciIsIlRvb2xiYXIiLCJQYW5lbEFjdGlvbiIsImV4cG9ydHMiLCJfcmVmIiwiaXRlbSIsIm9uQ2xpY2siLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0IiwiaWQiLCJsYWJlbCIsInRhcmdldCIsImJsYW5rIiwiaHJlZiIsInJlbCIsImljb25Db21wb25lbnQiLCJfZXh0ZW5kczIiLCJoZWlnaHQiLCJpY29uQ29tcG9uZW50UHJvcHMiLCJ0b29sdGlwIiwiVG9vbHRpcCIsInBsYWNlIiwiZGVsYXlTaG93IiwiZWZmZWN0IiwiRm9ybWF0dGVkTWVzc2FnZSIsIlBhbmVsSGVhZGVyRHJvcGRvd25GYWN0b3J5IiwiUGFuZWxIZWFkZXJEcm9wZG93biIsIl9yZWYyIiwiaXRlbXMiLCJzaG93Iiwib25DbG9zZSIsIm1hcCIsImtleSIsImljb24iLCJnZXREcm9wZG93bkl0ZW1zU2VsZWN0b3IiLCJjcmVhdGVTZWxlY3RvciIsImwiLCJTYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5IiwiZHJvcGRvd25JdGVtc1NlbGVjdG9yIiwiU2F2ZUV4cG9ydERyb3Bkb3duIiwiZGVmYXVsdFByb3BzIiwiUGljdHVyZSIsIm9uRXhwb3J0SW1hZ2UiLCJEYXRhVGFibGUiLCJvbkV4cG9ydERhdGEiLCJNYXBJY29uIiwib25FeHBvcnRNYXAiLCJTYXZlMiIsIm9uU2F2ZU1hcCIsIlNoYXJlIiwib25TaGFyZU1hcCIsImRlcHMiLCJDbG91ZFN0b3JhZ2VEcm9wZG93bkZhY3RvcnkiLCJDbG91ZFN0b3JhZ2VEcm9wZG93biIsIm9uU2F2ZVRvU3RvcmFnZSIsIm9uU2F2ZUFzVG9TdG9yYWdlIiwiUGFuZWxIZWFkZXJGYWN0b3J5IiwiX1BhbmVsSGVhZGVyIiwiX0NvbXBvbmVudCIsIlBhbmVsSGVhZGVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwidmFsdWUiLCJyZW5kZXIiLCJfdGhpcyIsIl90aGlzJHByb3BzIiwiYXBwTmFtZSIsImFwcFdlYnNpdGUiLCJ2ZXJzaW9uIiwiYWN0aW9uSXRlbXMiLCJ2aXNpYmxlRHJvcGRvd24iLCJzaG93RXhwb3J0RHJvcGRvd24iLCJoaWRlRXhwb3J0RHJvcGRvd24iLCJkcm9wZG93bkNhbGxiYWNrcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJhaSIsImxvZ29Db21wb25lbnQiLCJzdHlsZSIsInBvc2l0aW9uIiwiZHJvcGRvd25Db21wb25lbnQiLCJDb21wb25lbnQiLCJLZXBsZXJHbExvZ28iLCJEYiIsIlNhdmUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvcGFuZWwtaGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge1Rvb2x0aXB9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBLZXBsZXJHbExvZ28gZnJvbSAnY29tcG9uZW50cy9jb21tb24vbG9nbyc7XG5pbXBvcnQge1NhdmUsIERhdGFUYWJsZSwgU2F2ZTIsIFBpY3R1cmUsIERiLCBNYXAgYXMgTWFwSWNvbiwgU2hhcmV9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCBDbGlja091dHNpZGVDbG9zZURyb3Bkb3duIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9wYW5lbC1kcm9wZG93bic7XG5pbXBvcnQgVG9vbGJhciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi90b29sYmFyJztcbmltcG9ydCBUb29sYmFySXRlbSwge1Rvb2xiYXJJdGVtUHJvcHN9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3Rvb2xiYXItaXRlbSc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ2xvY2FsaXphdGlvbic7XG5pbXBvcnQge1VpU3RhdGV9IGZyb20gJ3JlZHVjZXJzJztcbmltcG9ydCB7QmFzZVByb3BzfSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucy9iYXNlJztcblxudHlwZSBTdHlsZWRQYW5lbEFjdGlvblByb3BzID0ge1xuICBhY3RpdmU/OiBib29sZWFuO1xufTtcblxudHlwZSBBY3Rpb25JdGVtID0ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgYmxhbms/OiBib29sZWFuO1xuICBocmVmPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBpY29uQ29tcG9uZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPFBhcnRpYWw8QmFzZVByb3BzPj47XG4gIGljb25Db21wb25lbnRQcm9wcz86IEJhc2VQcm9wcztcbiAgZHJvcGRvd25Db21wb25lbnQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPERyb3Bkb3duQ29tcG9uZW50UHJvcHM+O1xuICBvbkNsaWNrPzogKHA6IFBhbmVsSGVhZGVyUHJvcHMpID0+IHZvaWQ7XG59O1xuXG50eXBlIFBhbmVsQWN0aW9uUHJvcHMgPSB7XG4gIGl0ZW06IEFjdGlvbkl0ZW07XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG59O1xuXG50eXBlIFBhbmVsSGVhZGVyRHJvcGRvd25Qcm9wcyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgaXRlbXM6IFRvb2xiYXJJdGVtUHJvcHNbXTtcbiAgc2hvdz86IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG59O1xuXG50eXBlIERyb3Bkb3duQ2FsbGJhY2tzID0ge1xuICBsb2dvQ29tcG9uZW50PzogUmVhY3QuQ29tcG9uZW50VHlwZTx7XG4gICAgYXBwTmFtZTogc3RyaW5nO1xuICAgIGFwcFdlYnNpdGU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gIH0+O1xuICBvbkV4cG9ydEltYWdlOiAoKSA9PiB2b2lkO1xuICBvbkV4cG9ydERhdGE6ICgpID0+IHZvaWQ7XG4gIG9uRXhwb3J0Q29uZmlnPzogKCkgPT4gdm9pZDtcbiAgb25FeHBvcnRNYXA6ICgpID0+IHZvaWQ7XG4gIG9uU2F2ZVRvU3RvcmFnZTogKCgpID0+IHZvaWQpIHwgbnVsbDtcbiAgb25TYXZlQXNUb1N0b3JhZ2U6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG4gIG9uU2F2ZU1hcD86ICgpID0+IHZvaWQ7XG4gIG9uU2hhcmVNYXA6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG59O1xuXG50eXBlIEl0ZW0gPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IFJlYWN0LkNvbXBvbmVudFR5cGU8UGFydGlhbDxCYXNlUHJvcHM+PjtcbiAga2V5OiBzdHJpbmc7XG4gIG9uQ2xpY2s6IChwOiBEcm9wZG93bkNvbXBvbmVudFByb3BzKSA9PiAoKCkgPT4gdm9pZCkgfCBudWxsO1xufTtcblxudHlwZSBEcm9wZG93bkNvbXBvbmVudFByb3BzID0ge1xuICBzaG93OiBib29sZWFuO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBpdGVtcz86IEl0ZW1bXTtcbn0gJiBEcm9wZG93bkNhbGxiYWNrcztcblxudHlwZSBQYW5lbEhlYWRlclByb3BzID0ge1xuICBhcHBOYW1lOiBzdHJpbmc7XG4gIGFwcFdlYnNpdGU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICB2aXNpYmxlRHJvcGRvd246IFVpU3RhdGVbJ3Zpc2libGVEcm9wZG93biddO1xuICBhY3Rpb25JdGVtcz86IEFjdGlvbkl0ZW1bXTtcbiAgc2hvd0V4cG9ydERyb3Bkb3duOiAoaTogc3RyaW5nKSA9PiB2b2lkO1xuICBoaWRlRXhwb3J0RHJvcGRvd246ICgpID0+IHZvaWQ7XG59ICYgRHJvcGRvd25DYWxsYmFja3M7XG5cbmNvbnN0IFN0eWxlZFBhbmVsSGVhZGVyID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xuICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoJ3NpZGUtc2lkZS1wYW5lbF9faGVhZGVyJywgcHJvcHMuY2xhc3NOYW1lKVxufSkpYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNpZGVQYW5lbEhlYWRlckJnfTtcbiAgcGFkZGluZzogMTJweCAxNnB4IDAgMTZweDtcbmA7XG5cbmNvbnN0IFN0eWxlZFBhbmVsSGVhZGVyVG9wID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xuICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoJ3NpZGUtcGFuZWxfX2hlYWRlcl9fdG9wJywgcHJvcHMuY2xhc3NOYW1lKVxufSkpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkUGFuZWxUb3BBY3Rpb25zID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3NpZGUtcGFuZWxfX3RvcF9fYWN0aW9ucydcbn0pYFxuICBkaXNwbGF5OiBmbGV4O1xuYDtcblxuY29uc3QgU3R5bGVkUGFuZWxBY3Rpb24gPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2lkZS1wYW5lbF9fcGFuZWwtaGVhZGVyX19hY3Rpb24nXG59KTxTdHlsZWRQYW5lbEFjdGlvblByb3BzPmBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuYWN0aXZlID8gcHJvcHMudGhlbWUudGV4dENvbG9ySGwgOiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3IpfTtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAyNnB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gIHBhZGRpbmc6IDVweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHAge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgfVxuICBhIHtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gIH1cblxuICA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFRvb2xiYXIgPSBzdHlsZWQoVG9vbGJhcilgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBQYW5lbEFjdGlvbjogUmVhY3QuRkM8UGFuZWxBY3Rpb25Qcm9wcz4gPSAoe2l0ZW0sIG9uQ2xpY2t9KSA9PiAoXG4gIDxTdHlsZWRQYW5lbEFjdGlvbiBkYXRhLXRpcCBkYXRhLWZvcj17YCR7aXRlbS5pZH0tYWN0aW9uYH0gb25DbGljaz17b25DbGlja30+XG4gICAge2l0ZW0ubGFiZWwgPyA8cD57aXRlbS5sYWJlbH08L3A+IDogbnVsbH1cbiAgICA8YSB0YXJnZXQ9e2l0ZW0uYmxhbmsgPyAnX2JsYW5rJyA6ICcnfSBocmVmPXtpdGVtLmhyZWZ9IHJlbD1cIm5vcmVmZXJyZXJcIj5cbiAgICAgIDxpdGVtLmljb25Db21wb25lbnQgaGVpZ2h0PVwiMjBweFwiIHsuLi5pdGVtLmljb25Db21wb25lbnRQcm9wc30gLz5cbiAgICA8L2E+XG4gICAge2l0ZW0udG9vbHRpcCA/IChcbiAgICAgIDxUb29sdGlwIGlkPXtgJHtpdGVtLmlkfS1hY3Rpb25gfSBwbGFjZT1cImJvdHRvbVwiIGRlbGF5U2hvdz17NTAwfSBlZmZlY3Q9XCJzb2xpZFwiPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17aXRlbS50b29sdGlwfSAvPlxuICAgICAgPC9Ub29sdGlwPlxuICAgICkgOiBudWxsfVxuICA8L1N0eWxlZFBhbmVsQWN0aW9uPlxuKTtcblxuZXhwb3J0IGNvbnN0IFBhbmVsSGVhZGVyRHJvcGRvd25GYWN0b3J5ID0gKCkgPT4ge1xuICBjb25zdCBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZWFjdC5GQzxQYW5lbEhlYWRlckRyb3Bkb3duUHJvcHM+ID0gKHtpdGVtcywgc2hvdywgb25DbG9zZSwgaWR9KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRUb29sYmFyIHNob3c9e3Nob3d9IGNsYXNzTmFtZT17YCR7aWR9LWRyb3Bkb3duYH0+XG4gICAgICAgIDxDbGlja091dHNpZGVDbG9zZURyb3Bkb3duXG4gICAgICAgICAgY2xhc3NOYW1lPVwicGFuZWwtaGVhZGVyLWRyb3Bkb3duX19pbm5lclwiXG4gICAgICAgICAgc2hvdz17c2hvd31cbiAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICA+XG4gICAgICAgICAge2l0ZW1zLm1hcChpdGVtID0+IChcbiAgICAgICAgICAgIDxUb29sYmFySXRlbVxuICAgICAgICAgICAgICBpZD17aXRlbS5rZXl9XG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XG4gICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxuICAgICAgICAgICAgICBpY29uPXtpdGVtLmljb259XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2l0ZW0ub25DbGlja31cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2xpY2tPdXRzaWRlQ2xvc2VEcm9wZG93bj5cbiAgICAgIDwvU3R5bGVkVG9vbGJhcj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBQYW5lbEhlYWRlckRyb3Bkb3duO1xufTtcblxuY29uc3QgZ2V0RHJvcGRvd25JdGVtc1NlbGVjdG9yID0gKCkgPT5cbiAgY3JlYXRlU2VsZWN0b3IoXG4gICAgKHByb3BzOiBEcm9wZG93bkNvbXBvbmVudFByb3BzKSA9PiBwcm9wcyxcbiAgICBwcm9wcyA9PlxuICAgICAgKHByb3BzLml0ZW1zIHx8IFtdKVxuICAgICAgICAubWFwKHQgPT4gKHtcbiAgICAgICAgICAuLi50LFxuICAgICAgICAgIG9uQ2xpY2s6IHQub25DbGljayAmJiB0Lm9uQ2xpY2socHJvcHMpID8gdC5vbkNsaWNrKHByb3BzKSA6IG51bGxcbiAgICAgICAgfSkpXG4gICAgICAgIC5maWx0ZXIobCA9PiBsLm9uQ2xpY2spXG4gICk7XG5cbmV4cG9ydCBjb25zdCBTYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5ID0gKFxuICBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbEhlYWRlckRyb3Bkb3duRmFjdG9yeT5cbikgPT4ge1xuICBjb25zdCBkcm9wZG93bkl0ZW1zU2VsZWN0b3IgPSBnZXREcm9wZG93bkl0ZW1zU2VsZWN0b3IoKTtcblxuICBjb25zdCBTYXZlRXhwb3J0RHJvcGRvd246IFJlYWN0LkZDPERyb3Bkb3duQ29tcG9uZW50UHJvcHM+ID0gcHJvcHMgPT4gKFxuICAgIDxQYW5lbEhlYWRlckRyb3Bkb3duXG4gICAgICBpdGVtcz17ZHJvcGRvd25JdGVtc1NlbGVjdG9yKHByb3BzKX1cbiAgICAgIHNob3c9e3Byb3BzLnNob3d9XG4gICAgICBvbkNsb3NlPXtwcm9wcy5vbkNsb3NlfVxuICAgICAgaWQ9XCJzYXZlLWV4cG9ydFwiXG4gICAgLz5cbiAgKTtcblxuICBTYXZlRXhwb3J0RHJvcGRvd24uZGVmYXVsdFByb3BzID0ge1xuICAgIGl0ZW1zOiBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5leHBvcnRJbWFnZScsXG4gICAgICAgIGljb246IFBpY3R1cmUsXG4gICAgICAgIGtleTogJ2ltYWdlJyxcbiAgICAgICAgb25DbGljazogcHJvcHMgPT4gcHJvcHMub25FeHBvcnRJbWFnZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICd0b29sYmFyLmV4cG9ydERhdGEnLFxuICAgICAgICBpY29uOiBEYXRhVGFibGUsXG4gICAgICAgIGtleTogJ2RhdGEnLFxuICAgICAgICBvbkNsaWNrOiBwcm9wcyA9PiBwcm9wcy5vbkV4cG9ydERhdGFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5leHBvcnRNYXAnLFxuICAgICAgICBpY29uOiBNYXBJY29uLFxuICAgICAgICBrZXk6ICdtYXAnLFxuICAgICAgICBvbkNsaWNrOiBwcm9wcyA9PiBwcm9wcy5vbkV4cG9ydE1hcFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICd0b29sYmFyLnNhdmVNYXAnLFxuICAgICAgICBpY29uOiBTYXZlMixcbiAgICAgICAga2V5OiAnc2F2ZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZU1hcCFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAndG9vbGJhci5zaGFyZU1hcFVSTCcsXG4gICAgICAgIGljb246IFNoYXJlLFxuICAgICAgICBrZXk6ICdzaGFyZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2hhcmVNYXBcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIFNhdmVFeHBvcnREcm9wZG93bjtcbn07XG5TYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5LmRlcHMgPSBbUGFuZWxIZWFkZXJEcm9wZG93bkZhY3RvcnldO1xuXG5leHBvcnQgY29uc3QgQ2xvdWRTdG9yYWdlRHJvcGRvd25GYWN0b3J5ID0gKFxuICBQYW5lbEhlYWRlckRyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbEhlYWRlckRyb3Bkb3duRmFjdG9yeT5cbikgPT4ge1xuICBjb25zdCBkcm9wZG93bkl0ZW1zU2VsZWN0b3IgPSBnZXREcm9wZG93bkl0ZW1zU2VsZWN0b3IoKTtcblxuICBjb25zdCBDbG91ZFN0b3JhZ2VEcm9wZG93bjogUmVhY3QuRkM8RHJvcGRvd25Db21wb25lbnRQcm9wcz4gPSBwcm9wcyA9PiAoXG4gICAgPFBhbmVsSGVhZGVyRHJvcGRvd25cbiAgICAgIGl0ZW1zPXtkcm9wZG93bkl0ZW1zU2VsZWN0b3IocHJvcHMpfVxuICAgICAgc2hvdz17cHJvcHMuc2hvd31cbiAgICAgIG9uQ2xvc2U9e3Byb3BzLm9uQ2xvc2V9XG4gICAgICBpZD1cImNsb3VkLXN0b3JhZ2VcIlxuICAgIC8+XG4gICk7XG4gIENsb3VkU3RvcmFnZURyb3Bkb3duLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBpdGVtczogW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ1NhdmUnLFxuICAgICAgICBpY29uOiBTYXZlMixcbiAgICAgICAga2V5OiAnc2F2ZScsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZVRvU3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdTYXZlIEFzJyxcbiAgICAgICAgaWNvbjogU2F2ZTIsXG4gICAgICAgIGtleTogJ3NhdmVBcycsXG4gICAgICAgIG9uQ2xpY2s6IHByb3BzID0+IHByb3BzLm9uU2F2ZUFzVG9TdG9yYWdlXG4gICAgICB9XG4gICAgXVxuICB9O1xuICByZXR1cm4gQ2xvdWRTdG9yYWdlRHJvcGRvd247XG59O1xuQ2xvdWRTdG9yYWdlRHJvcGRvd25GYWN0b3J5LmRlcHMgPSBbUGFuZWxIZWFkZXJEcm9wZG93bkZhY3RvcnldO1xuXG5QYW5lbEhlYWRlckZhY3RvcnkuZGVwcyA9IFtTYXZlRXhwb3J0RHJvcGRvd25GYWN0b3J5LCBDbG91ZFN0b3JhZ2VEcm9wZG93bkZhY3RvcnldO1xuXG5mdW5jdGlvbiBQYW5lbEhlYWRlckZhY3RvcnkoXG4gIFNhdmVFeHBvcnREcm9wZG93bjogUmV0dXJuVHlwZTx0eXBlb2YgU2F2ZUV4cG9ydERyb3Bkb3duRmFjdG9yeT4sXG4gIENsb3VkU3RvcmFnZURyb3Bkb3duOiBSZXR1cm5UeXBlPHR5cGVvZiBDbG91ZFN0b3JhZ2VEcm9wZG93bkZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPFBhbmVsSGVhZGVyUHJvcHM+IHtcbiAgcmV0dXJuIGNsYXNzIFBhbmVsSGVhZGVyIGV4dGVuZHMgQ29tcG9uZW50PFBhbmVsSGVhZGVyUHJvcHM+IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgbG9nb0NvbXBvbmVudDogS2VwbGVyR2xMb2dvLFxuICAgICAgYWN0aW9uSXRlbXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnc3RvcmFnZScsXG4gICAgICAgICAgaWNvbkNvbXBvbmVudDogRGIsXG4gICAgICAgICAgdG9vbHRpcDogJ3Rvb2x0aXAuY2xvdWRTdG9yYWdlJyxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudDogQ2xvdWRTdG9yYWdlRHJvcGRvd25cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnc2F2ZScsXG4gICAgICAgICAgaWNvbkNvbXBvbmVudDogU2F2ZSxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICAgICAgICBsYWJlbDogJ1NoYXJlJyxcbiAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudDogU2F2ZUV4cG9ydERyb3Bkb3duXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBOYW1lLFxuICAgICAgICBhcHBXZWJzaXRlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBhY3Rpb25JdGVtcyxcbiAgICAgICAgdmlzaWJsZURyb3Bkb3duLFxuICAgICAgICBzaG93RXhwb3J0RHJvcGRvd24sXG4gICAgICAgIGhpZGVFeHBvcnREcm9wZG93bixcbiAgICAgICAgLi4uZHJvcGRvd25DYWxsYmFja3NcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgbGV0IGl0ZW1zID0gYWN0aW9uSXRlbXMgfHwgW107XG5cbiAgICAgIC8vIGRvbid0IHJlbmRlciBjbG91ZCBzdG9yYWdlIGljb24gaWYgb25TYXZlVG9TdG9yYWdlIGlzIG5vdCBwcm92aWRlZFxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uU2F2ZVRvU3RvcmFnZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihhaSA9PiBhaS5pZCAhPT0gJ3N0b3JhZ2UnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFBhbmVsSGVhZGVyIGNsYXNzTmFtZT1cInNpZGUtcGFuZWxfX3BhbmVsLWhlYWRlclwiPlxuICAgICAgICAgIDxTdHlsZWRQYW5lbEhlYWRlclRvcCBjbGFzc05hbWU9XCJzaWRlLXBhbmVsX19wYW5lbC1oZWFkZXJfX3RvcFwiPlxuICAgICAgICAgICAge3RoaXMucHJvcHMubG9nb0NvbXBvbmVudCAmJiAoXG4gICAgICAgICAgICAgIDx0aGlzLnByb3BzLmxvZ29Db21wb25lbnRcbiAgICAgICAgICAgICAgICBhcHBOYW1lPXthcHBOYW1lfVxuICAgICAgICAgICAgICAgIHZlcnNpb249e3ZlcnNpb259XG4gICAgICAgICAgICAgICAgYXBwV2Vic2l0ZT17YXBwV2Vic2l0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8U3R5bGVkUGFuZWxUb3BBY3Rpb25zPlxuICAgICAgICAgICAgICB7aXRlbXMubWFwKGl0ZW0gPT4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGUtcGFuZWxfX3BhbmVsLWhlYWRlcl9fcmlnaHRcIlxuICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFBhbmVsQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGl0ZW09e2l0ZW19XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5kcm9wZG93bkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0V4cG9ydERyb3Bkb3duKGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9uQ2xpY2sgJiYgaXRlbS5vbkNsaWNrKHRoaXMucHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB7aXRlbS5kcm9wZG93bkNvbXBvbmVudCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGl0ZW0uZHJvcGRvd25Db21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXtoaWRlRXhwb3J0RHJvcGRvd259XG4gICAgICAgICAgICAgICAgICAgICAgc2hvdz17dmlzaWJsZURyb3Bkb3duID09PSBpdGVtLmlkfVxuICAgICAgICAgICAgICAgICAgICAgIHsuLi5kcm9wZG93bkNhbGxiYWNrc31cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU3R5bGVkUGFuZWxUb3BBY3Rpb25zPlxuICAgICAgICAgIDwvU3R5bGVkUGFuZWxIZWFkZXJUb3A+XG4gICAgICAgIDwvU3R5bGVkUGFuZWxIZWFkZXI+XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxIZWFkZXJGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssa0JBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGNBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFFBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLFlBQUEsR0FBQVIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFXLGFBQUEsR0FBQVgsT0FBQTtBQUE4QyxJQUFBWSxTQUFBO0FBQUEsSUFBQUMsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxF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QUFBMUIsSUFBSTtVQUFBLG9CQUNidEYsTUFBQSxZQUFBd0YsYUFBQTtZQUNFbEIsU0FBUyxFQUFDLGlDQUFpQztZQUMzQzJDLEdBQUcsRUFBRTNCLElBQUksQ0FBQ0ksRUFBRztZQUNicUUsS0FBSyxFQUFFO2NBQUNDLFFBQVEsRUFBRTtZQUFVO1VBQUUsZ0JBRTlCaEssTUFBQSxZQUFBd0YsYUFBQSxDQUFDTCxXQUFXO1lBQ1ZHLElBQUksRUFBRUEsSUFBSztZQUNYQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUFRO2NBQ2IsSUFBSUQsSUFBSSxDQUFDMkUsaUJBQWlCLEVBQUU7Z0JBQzFCUixrQkFBa0IsQ0FBQ25FLElBQUksQ0FBQ0ksRUFBRSxDQUFDO2NBQzdCLENBQUMsTUFBTTtnQkFDTEosSUFBSSxDQUFDQyxPQUFPLElBQUlELElBQUksQ0FBQ0MsT0FBTyxDQUFDMkQsS0FBSSxDQUFDN0UsS0FBSyxDQUFDO2NBQzFDO1lBQ0Y7VUFBRSxDQUNILENBQUMsRUFDRGlCLElBQUksQ0FBQzJFLGlCQUFpQixnQkFDckJqSyxNQUFBLFlBQUF3RixhQUFBLENBQUNGLElBQUksQ0FBQzJFLGlCQUFpQixNQUFBaEUsU0FBQTtZQUNyQmMsT0FBTyxFQUFFMkMsa0JBQW1CO1lBQzVCNUMsSUFBSSxFQUFFMEMsZUFBZSxLQUFLbEUsSUFBSSxDQUFDSTtVQUFHLEdBQzlCaUUsaUJBQWlCLENBQ3RCLENBQUMsR0FDQSxJQUNELENBQUM7UUFBQSxDQUNQLENBQ29CLENBQ0gsQ0FDTCxDQUFDO01BRXhCO0lBQUM7RUFBQSxFQS9FOEJPLGdCQUFTLE9BQUFwRyxnQkFBQSxhQUFBNEUsWUFBQSxrQkFDbEI7SUFDcEJvQixhQUFhLEVBQUVLLGdCQUFZO0lBQzNCWixXQUFXLEVBQUUsQ0FDWDtNQUNFN0QsRUFBRSxFQUFFLFNBQVM7TUFDYk0sYUFBYSxFQUFFb0UsU0FBRTtNQUNqQmhFLE9BQU8sRUFBRSxzQkFBc0I7TUFDL0JiLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVEsQ0FBQyxDQUFDO01BQ2pCMEUsaUJBQWlCLEVBQUUzQjtJQUNyQixDQUFDLEVBQ0Q7TUFDRTVDLEVBQUUsRUFBRSxNQUFNO01BQ1ZNLGFBQWEsRUFBRXFFLFdBQUk7TUFDbkI5RSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUFRLENBQUMsQ0FBQztNQUNqQkksS0FBSyxFQUFFLE9BQU87TUFDZHNFLGlCQUFpQixFQUFFekM7SUFDckIsQ0FBQztFQUVMLENBQUMsR0FBQWtCLFlBQUE7QUE4REw7QUFBQyxJQUFBNEIsUUFBQSxHQUFBbEYsT0FBQSxjQUVjcUQsa0JBQWtCIiwiaWdub3JlTGlzdCI6W119