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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/dist/actions/action-wrapper.js +36 -41
  2. package/dist/actions/actions.js +15 -21
  3. package/dist/actions/identity-actions.js +14 -20
  4. package/dist/actions/index.js +16 -16
  5. package/dist/actions/map-state-actions.js +12 -18
  6. package/dist/actions/map-style-actions.js +30 -46
  7. package/dist/actions/provider-actions.js +49 -73
  8. package/dist/actions/ui-state-actions.js +73 -113
  9. package/dist/actions/vis-state-actions.js +152 -148
  10. package/dist/cloud-providers/index.js +6 -7
  11. package/dist/cloud-providers/provider.js +189 -279
  12. package/dist/components/bottom-widget.js +105 -117
  13. package/dist/components/common/action-panel.js +122 -74
  14. package/dist/components/common/animation-control/animation-control.js +69 -54
  15. package/dist/components/common/animation-control/animation-controller.js +134 -160
  16. package/dist/components/common/animation-control/animation-speed-slider.js +47 -54
  17. package/dist/components/common/animation-control/floating-time-display.js +120 -100
  18. package/dist/components/common/animation-control/playback-controls.js +147 -144
  19. package/dist/components/common/animation-control/speed-control.js +31 -23
  20. package/dist/components/common/checkbox.js +56 -70
  21. package/dist/components/common/color-legend.js +83 -110
  22. package/dist/components/common/data-table/button.js +31 -23
  23. package/dist/components/common/data-table/canvas.js +11 -5
  24. package/dist/components/common/data-table/cell-size.js +51 -61
  25. package/dist/components/common/data-table/grid.js +40 -59
  26. package/dist/components/common/data-table/index.js +464 -348
  27. package/dist/components/common/data-table/option-dropdown.js +50 -33
  28. package/dist/components/common/dataset-label.js +17 -13
  29. package/dist/components/common/error-boundary.js +27 -45
  30. package/dist/components/common/field-selector.js +99 -139
  31. package/dist/components/common/field-token.js +24 -9
  32. package/dist/components/common/file-uploader/file-drop.js +96 -115
  33. package/dist/components/common/file-uploader/file-upload-progress.js +68 -45
  34. package/dist/components/common/file-uploader/file-upload.js +215 -187
  35. package/dist/components/common/file-uploader/upload-button.js +35 -22
  36. package/dist/components/common/histogram-plot.js +47 -58
  37. package/dist/components/common/icons/add.js +14 -27
  38. package/dist/components/common/icons/anchor_window.js +16 -18
  39. package/dist/components/common/icons/arrow-down-alt.js +14 -27
  40. package/dist/components/common/icons/arrow-down-solid.js +14 -27
  41. package/dist/components/common/icons/arrow-down.js +14 -27
  42. package/dist/components/common/icons/arrow-left.js +17 -30
  43. package/dist/components/common/icons/arrow-right.js +14 -27
  44. package/dist/components/common/icons/arrow-up-alt.js +15 -28
  45. package/dist/components/common/icons/arrow-up-solid.js +14 -27
  46. package/dist/components/common/icons/arrow-up.js +14 -27
  47. package/dist/components/common/icons/base.js +39 -57
  48. package/dist/components/common/icons/bug.js +16 -29
  49. package/dist/components/common/icons/cancel.js +14 -27
  50. package/dist/components/common/icons/checkmark.js +18 -31
  51. package/dist/components/common/icons/chevron-right.js +20 -33
  52. package/dist/components/common/icons/clipboard.js +15 -28
  53. package/dist/components/common/icons/clock.js +16 -29
  54. package/dist/components/common/icons/close.js +19 -32
  55. package/dist/components/common/icons/code-alt.js +16 -29
  56. package/dist/components/common/icons/copy.js +18 -31
  57. package/dist/components/common/icons/crosshairs.js +16 -29
  58. package/dist/components/common/icons/cube-3d.js +18 -31
  59. package/dist/components/common/icons/cursor-click.js +18 -31
  60. package/dist/components/common/icons/data-table.js +15 -28
  61. package/dist/components/common/icons/db.js +15 -28
  62. package/dist/components/common/icons/delete.js +16 -29
  63. package/dist/components/common/icons/docs.js +30 -43
  64. package/dist/components/common/icons/drag-n-drop.js +16 -29
  65. package/dist/components/common/icons/draw-polygon.js +33 -46
  66. package/dist/components/common/icons/email.js +18 -31
  67. package/dist/components/common/icons/expand.js +16 -29
  68. package/dist/components/common/icons/eye-seen.js +16 -29
  69. package/dist/components/common/icons/eye-unseen.js +16 -29
  70. package/dist/components/common/icons/file-type.js +35 -19
  71. package/dist/components/common/icons/file.js +14 -27
  72. package/dist/components/common/icons/files.js +14 -26
  73. package/dist/components/common/icons/filter-funnel.js +14 -27
  74. package/dist/components/common/icons/free-window.js +16 -18
  75. package/dist/components/common/icons/gear.js +16 -29
  76. package/dist/components/common/icons/hash.js +14 -27
  77. package/dist/components/common/icons/histogram.js +15 -27
  78. package/dist/components/common/icons/index.js +156 -156
  79. package/dist/components/common/icons/info.js +25 -38
  80. package/dist/components/common/icons/layers.js +14 -27
  81. package/dist/components/common/icons/left-arrow.js +16 -29
  82. package/dist/components/common/icons/legend.js +14 -27
  83. package/dist/components/common/icons/line-chart.js +14 -27
  84. package/dist/components/common/icons/login.js +17 -30
  85. package/dist/components/common/icons/logout.js +16 -29
  86. package/dist/components/common/icons/map-icon.js +18 -32
  87. package/dist/components/common/icons/map.js +18 -32
  88. package/dist/components/common/icons/messages.js +14 -27
  89. package/dist/components/common/icons/minus.js +14 -27
  90. package/dist/components/common/icons/order-by-dataset.js +15 -17
  91. package/dist/components/common/icons/order-by-list.js +7 -9
  92. package/dist/components/common/icons/pause.js +14 -27
  93. package/dist/components/common/icons/picture.js +14 -26
  94. package/dist/components/common/icons/pin.js +17 -30
  95. package/dist/components/common/icons/play.js +14 -27
  96. package/dist/components/common/icons/polygon.js +35 -48
  97. package/dist/components/common/icons/rectangle.js +36 -49
  98. package/dist/components/common/icons/reduce.js +17 -30
  99. package/dist/components/common/icons/reset.js +14 -27
  100. package/dist/components/common/icons/rocket.js +14 -27
  101. package/dist/components/common/icons/save.js +16 -29
  102. package/dist/components/common/icons/save2.js +20 -33
  103. package/dist/components/common/icons/search.js +16 -29
  104. package/dist/components/common/icons/settings.js +16 -29
  105. package/dist/components/common/icons/share.js +14 -27
  106. package/dist/components/common/icons/split.js +42 -55
  107. package/dist/components/common/icons/square-select.js +16 -29
  108. package/dist/components/common/icons/swap-horizontal.js +18 -31
  109. package/dist/components/common/icons/table.js +14 -27
  110. package/dist/components/common/icons/trash.js +16 -29
  111. package/dist/components/common/icons/upload.js +14 -27
  112. package/dist/components/common/icons/vert-dots.js +52 -65
  113. package/dist/components/common/icons/vert-three-dots.js +27 -40
  114. package/dist/components/common/icons/warning.js +26 -39
  115. package/dist/components/common/image-preview.js +71 -33
  116. package/dist/components/common/info-helper.js +36 -29
  117. package/dist/components/common/item-selector/accessor.js +7 -13
  118. package/dist/components/common/item-selector/chickleted-input.js +72 -56
  119. package/dist/components/common/item-selector/dropdown-list.js +182 -214
  120. package/dist/components/common/item-selector/item-selector-submenu.js +34 -55
  121. package/dist/components/common/item-selector/item-selector.js +183 -194
  122. package/dist/components/common/item-selector/typeahead.js +236 -248
  123. package/dist/components/common/line-chart.js +80 -58
  124. package/dist/components/common/loading-spinner.js +46 -31
  125. package/dist/components/common/logo.js +61 -48
  126. package/dist/components/common/map-layer-selector.js +31 -25
  127. package/dist/components/common/modal.js +167 -106
  128. package/dist/components/common/portaled.js +169 -189
  129. package/dist/components/common/progress-bar.js +27 -24
  130. package/dist/components/common/range-brush.js +176 -215
  131. package/dist/components/common/range-plot.js +52 -63
  132. package/dist/components/common/range-slider.js +206 -231
  133. package/dist/components/common/slider/mouse-event.js +59 -66
  134. package/dist/components/common/slider/slider-bar-handle.js +51 -61
  135. package/dist/components/common/slider/slider-handle.js +127 -102
  136. package/dist/components/common/slider/slider.js +143 -162
  137. package/dist/components/common/styled-components.js +518 -256
  138. package/dist/components/common/switch.js +11 -11
  139. package/dist/components/common/time-range-slider-time-title.js +49 -32
  140. package/dist/components/common/time-range-slider.js +56 -45
  141. package/dist/components/common/time-slider-marker.js +71 -52
  142. package/dist/components/common/tippy-tooltip.js +89 -59
  143. package/dist/components/common/toolbar-item.js +53 -45
  144. package/dist/components/common/toolbar.js +24 -18
  145. package/dist/components/common/vertical-toolbar.js +13 -6
  146. package/dist/components/container.js +87 -119
  147. package/dist/components/context.js +6 -8
  148. package/dist/components/editor/constants.js +4 -4
  149. package/dist/components/editor/editor.js +122 -157
  150. package/dist/components/editor/feature-action-panel.js +52 -59
  151. package/dist/components/editor/feature-styles.js +46 -29
  152. package/dist/components/editor/handle-style.js +38 -29
  153. package/dist/components/filters/components.js +8 -4
  154. package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +33 -43
  155. package/dist/components/filters/filter-panels/multi-select-filter-panel.js +20 -21
  156. package/dist/components/filters/filter-panels/new-filter-panel.js +24 -31
  157. package/dist/components/filters/filter-panels/polygon-filter-panel.js +26 -31
  158. package/dist/components/filters/filter-panels/range-filter-panel.js +20 -21
  159. package/dist/components/filters/filter-panels/single-select-filter-panel.js +20 -21
  160. package/dist/components/filters/filter-panels/time-range-filter-panel.js +28 -31
  161. package/dist/components/filters/index.js +10 -10
  162. package/dist/components/filters/multi-select-filter.js +11 -9
  163. package/dist/components/filters/polygon-filter.js +26 -41
  164. package/dist/components/filters/range-filter.js +9 -7
  165. package/dist/components/filters/single-select-filter.js +11 -13
  166. package/dist/components/filters/time-range-filter.js +16 -14
  167. package/dist/components/filters/time-widget.js +125 -84
  168. package/dist/components/geocoder/geocoder.js +158 -177
  169. package/dist/components/geocoder-panel.js +66 -87
  170. package/dist/components/index.js +328 -329
  171. package/dist/components/injector.js +44 -63
  172. package/dist/components/kepler-gl.js +325 -361
  173. package/dist/components/map/coordinate-info.js +18 -16
  174. package/dist/components/map/layer-hover-info.js +108 -86
  175. package/dist/components/map/layer-selector-panel.js +50 -48
  176. package/dist/components/map/locale-panel.js +38 -44
  177. package/dist/components/map/map-control-panel.js +70 -47
  178. package/dist/components/map/map-control-toolbar.js +9 -6
  179. package/dist/components/map/map-control-tooltip.js +10 -8
  180. package/dist/components/map/map-control.js +35 -27
  181. package/dist/components/map/map-draw-panel.js +38 -48
  182. package/dist/components/map/map-legend-panel.js +47 -50
  183. package/dist/components/map/map-legend.js +133 -116
  184. package/dist/components/map/map-popover.js +155 -100
  185. package/dist/components/map/split-map-button.js +30 -34
  186. package/dist/components/map/toggle-3d-button.js +25 -27
  187. package/dist/components/map-container.js +313 -359
  188. package/dist/components/maps-layout.js +16 -26
  189. package/dist/components/modal-container.js +359 -355
  190. package/dist/components/modals/add-map-style-modal.js +233 -194
  191. package/dist/components/modals/cloud-tile.js +96 -67
  192. package/dist/components/modals/data-table-modal.js +155 -152
  193. package/dist/components/modals/delete-data-modal.js +20 -20
  194. package/dist/components/modals/error-display.js +9 -7
  195. package/dist/components/modals/export-data-modal.js +118 -140
  196. package/dist/components/modals/export-image-modal.js +82 -69
  197. package/dist/components/modals/export-map-modal/components.js +20 -18
  198. package/dist/components/modals/export-map-modal/export-html-map.js +82 -74
  199. package/dist/components/modals/export-map-modal/export-json-map.js +65 -45
  200. package/dist/components/modals/export-map-modal/export-map-modal.js +42 -47
  201. package/dist/components/modals/image-modal-container.js +20 -21
  202. package/dist/components/modals/load-data-modal.js +28 -30
  203. package/dist/components/modals/load-storage-map.js +277 -178
  204. package/dist/components/modals/loading-dialog.js +41 -19
  205. package/dist/components/modals/modal-dialog.js +4 -6
  206. package/dist/components/modals/modal-tabs.js +83 -48
  207. package/dist/components/modals/overwrite-map-modal.js +41 -30
  208. package/dist/components/modals/provider-modal-container.js +23 -42
  209. package/dist/components/modals/save-map-modal.js +107 -83
  210. package/dist/components/modals/share-map-modal.js +101 -95
  211. package/dist/components/modals/status-panel.js +63 -43
  212. package/dist/components/modals/storage-map-viewer.js +133 -70
  213. package/dist/components/notification-panel/notification-item.js +94 -97
  214. package/dist/components/notification-panel.js +35 -43
  215. package/dist/components/performance.js +49 -53
  216. package/dist/components/plot-container.js +151 -169
  217. package/dist/components/side-panel/cloud-storage-dropdown.js +13 -15
  218. package/dist/components/side-panel/common/dataset-info.js +16 -12
  219. package/dist/components/side-panel/common/dataset-tag.js +48 -27
  220. package/dist/components/side-panel/common/dataset-title.js +119 -116
  221. package/dist/components/side-panel/common/source-data-catalog.js +31 -32
  222. package/dist/components/side-panel/common/source-data-selector.js +52 -77
  223. package/dist/components/side-panel/custom-panel.js +6 -8
  224. package/dist/components/side-panel/filter-manager.js +48 -62
  225. package/dist/components/side-panel/filter-panel/filter-panel-header.js +35 -25
  226. package/dist/components/side-panel/filter-panel/filter-panel.js +46 -64
  227. package/dist/components/side-panel/interaction-manager.js +20 -18
  228. package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
  229. package/dist/components/side-panel/interaction-panel/interaction-panel.js +76 -95
  230. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +118 -143
  231. package/dist/components/side-panel/interaction-panel/tooltip-config.js +95 -76
  232. package/dist/components/side-panel/layer-manager.js +105 -115
  233. package/dist/components/side-panel/layer-panel/add-layer-button.js +92 -54
  234. package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +5 -5
  235. package/dist/components/side-panel/layer-panel/color-palette.js +50 -37
  236. package/dist/components/side-panel/layer-panel/color-range-selector.js +196 -207
  237. package/dist/components/side-panel/layer-panel/color-selector.js +104 -110
  238. package/dist/components/side-panel/layer-panel/column-selector.js +34 -22
  239. package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +4 -4
  240. package/dist/components/side-panel/layer-panel/custom-palette.js +248 -205
  241. package/dist/components/side-panel/layer-panel/custom-picker.js +51 -69
  242. package/dist/components/side-panel/layer-panel/dataset-layer-group.js +37 -42
  243. package/dist/components/side-panel/layer-panel/dataset-layer-section.js +31 -27
  244. package/dist/components/side-panel/layer-panel/dataset-section.js +45 -35
  245. package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +14 -13
  246. package/dist/components/side-panel/layer-panel/hex-column-config.js +32 -55
  247. package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +5 -5
  248. package/dist/components/side-panel/layer-panel/layer-column-config.js +42 -46
  249. package/dist/components/side-panel/layer-panel/layer-config-group.js +178 -144
  250. package/dist/components/side-panel/layer-panel/layer-configurator.js +826 -830
  251. package/dist/components/side-panel/layer-panel/layer-list.js +101 -94
  252. package/dist/components/side-panel/layer-panel/layer-panel-header.js +124 -82
  253. package/dist/components/side-panel/layer-panel/layer-panel.js +111 -105
  254. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +67 -58
  255. package/dist/components/side-panel/layer-panel/layer-type-list-item.js +47 -32
  256. package/dist/components/side-panel/layer-panel/layer-type-selector.js +30 -41
  257. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +42 -43
  258. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +55 -57
  259. package/dist/components/side-panel/layer-panel/single-color-palette.js +48 -33
  260. package/dist/components/side-panel/layer-panel/text-label-panel.js +81 -116
  261. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +88 -102
  262. package/dist/components/side-panel/layer-panel/vis-config-slider.js +99 -85
  263. package/dist/components/side-panel/layer-panel/vis-config-switch.js +38 -29
  264. package/dist/components/side-panel/map-manager.js +70 -89
  265. package/dist/components/side-panel/map-style-panel/map-layer-selector.js +72 -60
  266. package/dist/components/side-panel/map-style-panel/map-style-selector.js +64 -42
  267. package/dist/components/side-panel/panel-dropdown.js +21 -37
  268. package/dist/components/side-panel/panel-header-action.js +60 -65
  269. package/dist/components/side-panel/panel-header.js +165 -184
  270. package/dist/components/side-panel/panel-tab.js +35 -29
  271. package/dist/components/side-panel/panel-title.js +15 -18
  272. package/dist/components/side-panel/panel-toggle.js +30 -31
  273. package/dist/components/side-panel/side-bar.js +100 -91
  274. package/dist/components/side-panel.js +108 -123
  275. package/dist/connect/keplergl-connect.js +17 -26
  276. package/dist/connect/with-local-selector.js +31 -63
  277. package/dist/constants/action-types.js +113 -115
  278. package/dist/constants/color-palette.js +14 -16
  279. package/dist/constants/color-ranges.js +23 -28
  280. package/dist/constants/custom-color-ranges.js +12 -12
  281. package/dist/constants/default-settings.js +323 -254
  282. package/dist/constants/index.js +63 -63
  283. package/dist/constants/keyevent.js +4 -4
  284. package/dist/constants/tooltip.js +5 -5
  285. package/dist/constants/user-feedbacks.js +9 -5
  286. package/dist/constants/user-guides.js +10 -10
  287. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +37 -63
  288. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +52 -56
  289. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +165 -168
  290. package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +24 -43
  291. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.d.ts +2 -2
  292. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +27 -40
  293. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +27 -40
  294. package/dist/deckgl-layers/layer-utils/cluster-utils.js +60 -68
  295. package/dist/deckgl-layers/layer-utils/cpu-aggregator.d.ts +4 -4
  296. package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +281 -282
  297. package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
  298. package/dist/deckgl-layers/line-layer/line-layer.js +62 -70
  299. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +37 -51
  300. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +65 -85
  301. package/dist/index.js +15 -16
  302. package/dist/layers/aggregation-layer.js +299 -331
  303. package/dist/layers/arc-layer/arc-layer-icon.js +27 -41
  304. package/dist/layers/arc-layer/arc-layer.js +174 -201
  305. package/dist/layers/base-layer.d.ts +1 -1
  306. package/dist/layers/base-layer.js +1371 -1544
  307. package/dist/layers/cluster-layer/cluster-layer-icon.js +30 -44
  308. package/dist/layers/cluster-layer/cluster-layer.js +89 -103
  309. package/dist/layers/default-layer-icon.js +39 -53
  310. package/dist/layers/geojson-layer/geojson-layer-icon.js +42 -55
  311. package/dist/layers/geojson-layer/geojson-layer.js +292 -353
  312. package/dist/layers/geojson-layer/geojson-utils.js +31 -36
  313. package/dist/layers/grid-layer/grid-layer-icon.js +87 -100
  314. package/dist/layers/grid-layer/grid-layer.js +51 -61
  315. package/dist/layers/grid-layer/grid-utils.js +13 -9
  316. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +21 -35
  317. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +225 -260
  318. package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
  319. package/dist/layers/heatmap-layer/heatmap-layer-icon.js +39 -52
  320. package/dist/layers/heatmap-layer/heatmap-layer.js +140 -171
  321. package/dist/layers/hexagon-layer/hexagon-layer-icon.js +51 -64
  322. package/dist/layers/hexagon-layer/hexagon-layer.js +49 -63
  323. package/dist/layers/hexagon-layer/hexagon-utils.js +15 -14
  324. package/dist/layers/icon-layer/icon-info-modal.js +82 -75
  325. package/dist/layers/icon-layer/icon-layer-icon.js +24 -37
  326. package/dist/layers/icon-layer/icon-layer.js +274 -303
  327. package/dist/layers/index.js +43 -29
  328. package/dist/layers/layer-factory.js +25 -41
  329. package/dist/layers/layer-text-label.js +21 -23
  330. package/dist/layers/layer-update.js +16 -18
  331. package/dist/layers/line-layer/line-layer-icon.js +30 -43
  332. package/dist/layers/line-layer/line-layer.js +123 -142
  333. package/dist/layers/mapbox-utils.js +61 -62
  334. package/dist/layers/mapboxgl-layer.js +124 -169
  335. package/dist/layers/point-layer/point-layer-icon.js +45 -59
  336. package/dist/layers/point-layer/point-layer.d.ts +2 -2
  337. package/dist/layers/point-layer/point-layer.js +355 -386
  338. package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +208 -238
  339. package/dist/layers/s2-geometry-layer/s2-layer-icon.js +21 -35
  340. package/dist/layers/s2-geometry-layer/s2-utils.js +9 -8
  341. package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +24 -25
  342. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +102 -115
  343. package/dist/layers/scenegraph-layer/scenegraph-layer.js +148 -172
  344. package/dist/layers/trip-layer/trip-info-modal.js +50 -30
  345. package/dist/layers/trip-layer/trip-layer-icon.js +40 -53
  346. package/dist/layers/trip-layer/trip-layer.js +239 -307
  347. package/dist/layers/trip-layer/trip-utils.js +34 -50
  348. package/dist/layers/types.js +2 -2
  349. package/dist/localization/formatted-message.js +8 -10
  350. package/dist/localization/index.js +7 -7
  351. package/dist/localization/locales.js +6 -9
  352. package/dist/localization/messages.js +13 -10
  353. package/dist/localization/translations/ca.js +11 -13
  354. package/dist/localization/translations/cn.js +11 -13
  355. package/dist/localization/translations/en.js +11 -13
  356. package/dist/localization/translations/es.js +11 -13
  357. package/dist/localization/translations/fi.js +11 -13
  358. package/dist/localization/translations/ja.js +11 -13
  359. package/dist/localization/translations/pt.js +11 -13
  360. package/dist/localization/translations/ru.js +11 -13
  361. package/dist/middleware/index.js +3 -5
  362. package/dist/processors/data-processor.js +164 -201
  363. package/dist/processors/file-handler.js +111 -233
  364. package/dist/processors/index.js +4 -4
  365. package/dist/reducers/combined-updaters.js +41 -41
  366. package/dist/reducers/composer-helpers.js +20 -45
  367. package/dist/reducers/composers.js +9 -8
  368. package/dist/reducers/core.js +31 -35
  369. package/dist/reducers/index.js +21 -22
  370. package/dist/reducers/map-state-updaters.js +65 -47
  371. package/dist/reducers/map-state.js +23 -15
  372. package/dist/reducers/map-style-updaters.js +233 -159
  373. package/dist/reducers/map-style.js +30 -16
  374. package/dist/reducers/provider-state-updaters.js +217 -229
  375. package/dist/reducers/provider-state.js +29 -17
  376. package/dist/reducers/root.js +86 -58
  377. package/dist/reducers/ui-state-updaters.js +337 -218
  378. package/dist/reducers/ui-state.js +45 -16
  379. package/dist/reducers/vis-state-merger.js +205 -209
  380. package/dist/reducers/vis-state-selectors.js +5 -19
  381. package/dist/reducers/vis-state-updaters.js +1003 -876
  382. package/dist/reducers/vis-state.js +75 -16
  383. package/dist/schemas/dataset-schema.js +84 -108
  384. package/dist/schemas/index.js +28 -29
  385. package/dist/schemas/map-state-schema.js +21 -18
  386. package/dist/schemas/map-style-schema.js +47 -55
  387. package/dist/schemas/schema-manager.js +147 -161
  388. package/dist/schemas/schema-utils.js +8 -9
  389. package/dist/schemas/schema.js +72 -87
  390. package/dist/schemas/versions.js +3 -3
  391. package/dist/schemas/vis-state-schema.js +441 -583
  392. package/dist/styles/base.js +1217 -1021
  393. package/dist/styles/index.js +3 -3
  394. package/dist/styles/media-breakpoints.js +23 -18
  395. package/dist/tasks/tasks.js +36 -39
  396. package/dist/templates/export-map-html.js +233 -4
  397. package/dist/utils/aggregate-utils.js +13 -16
  398. package/dist/utils/color-utils.js +29 -37
  399. package/dist/utils/custom-scales.js +3 -3
  400. package/dist/utils/data-scale-utils.js +6 -13
  401. package/dist/utils/data-utils.js +60 -83
  402. package/dist/utils/dataset-utils.js +48 -77
  403. package/dist/utils/dom-to-image.js +108 -163
  404. package/dist/utils/dom-utils.js +88 -105
  405. package/dist/utils/export-utils.js +116 -103
  406. package/dist/utils/filter-utils.js +379 -374
  407. package/dist/utils/gl-utils.js +16 -15
  408. package/dist/utils/gpu-filter-utils.js +54 -73
  409. package/dist/utils/index.js +47 -48
  410. package/dist/utils/interaction-utils.js +53 -46
  411. package/dist/utils/layer-utils.js +89 -78
  412. package/dist/utils/locale-utils.js +24 -16
  413. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +67 -76
  414. package/dist/utils/map-style-utils/mapbox-utils.js +4 -3
  415. package/dist/utils/mapbox-utils.js +3 -4
  416. package/dist/utils/notifications-utils.js +33 -38
  417. package/dist/utils/observe-dimensions.js +42 -54
  418. package/dist/utils/projection-utils.js +14 -11
  419. package/dist/utils/split-map-utils.js +30 -33
  420. package/dist/utils/table-utils/data-container-utils.js +15 -14
  421. package/dist/utils/table-utils/data-row.js +58 -65
  422. package/dist/utils/table-utils/index.js +2 -2
  423. package/dist/utils/table-utils/indexed-data-container.js +105 -173
  424. package/dist/utils/table-utils/kepler-table.js +362 -386
  425. package/dist/utils/table-utils/row-data-container.js +99 -164
  426. package/dist/utils/utils.js +29 -30
  427. package/package.json +21 -21
  428. package/src/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.ts +2 -2
  429. package/src/deckgl-layers/layer-utils/cpu-aggregator.ts +21 -11
  430. package/src/layers/base-layer.ts +17 -10
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -14,22 +13,13 @@ exports.makeProgressIterator = makeProgressIterator;
14
13
  exports.processFileData = processFileData;
15
14
  exports.readBatch = readBatch;
16
15
  exports.readFileInBatches = readFileInBatches;
17
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
18
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
19
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
20
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
- var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
22
- var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
23
16
  var _core = require("@loaders.gl/core");
24
17
  var _json = require("@loaders.gl/json");
25
18
  var _csv = require("@loaders.gl/csv");
26
19
  var _dataProcessor = require("./data-processor");
27
20
  var _utils = require("../utils/utils");
28
21
  var _defaultSettings = require("../constants/default-settings");
29
- 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; }
30
- 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; }
31
- function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { if (t && null != (n = r[t])) return n.call(r); if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
32
- function AsyncFromSyncIterator(r) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var n = r.done; return Promise.resolve(r.value).then(function (r) { return { value: r, done: n }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) { this.s = r, this.n = r.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, "return": function _return(r) { var n = this.s["return"]; return void 0 === n ? Promise.resolve({ value: r, done: !0 }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); }, "throw": function _throw(r) { var n = this.s["return"]; return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(r); } // Copyright (c) 2022 Uber Technologies, Inc.
22
+ // Copyright (c) 2022 Uber Technologies, Inc.
33
23
  //
34
24
  // Permission is hereby granted, free of charge, to any person obtaining a copy
35
25
  // of this software and associated documentation files (the "Software"), to deal
@@ -48,20 +38,21 @@ function AsyncFromSyncIterator(r) { function AsyncFromSyncIteratorContinuation(r
48
38
  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
49
39
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
50
40
  // THE SOFTWARE.
41
+
51
42
  // @ts-expect-error
52
43
 
53
- var BATCH_TYPE = {
44
+ const BATCH_TYPE = {
54
45
  METADATA: 'metadata',
55
46
  PARTIAL_RESULT: 'partial-result',
56
47
  FINAL_RESULT: 'final-result'
57
48
  };
58
- var CSV_LOADER_OPTIONS = {
49
+ const CSV_LOADER_OPTIONS = {
59
50
  batchSize: 4000,
60
51
  // Auto de tect number of rows per batch (network batch size)
61
52
  rowFormat: 'object',
62
53
  dynamicTyping: false // not working for now
63
54
  };
64
- var JSON_LOADER_OPTIONS = {
55
+ const JSON_LOADER_OPTIONS = {
65
56
  // instruct loaders.gl on what json paths to stream
66
57
  jsonpaths: ['$',
67
58
  // JSON Row array
@@ -87,215 +78,98 @@ function isRowObject(json) {
87
78
  function isKeplerGlMap(json) {
88
79
  return Boolean((0, _utils.isPlainObject)(json) && json.datasets && json.config && json.info && (0, _utils.isPlainObject)(json.info) && json.info.app === 'kepler.gl');
89
80
  }
90
- function makeProgressIterator(_x, _x2) {
91
- return _makeProgressIterator.apply(this, arguments);
92
- } // eslint-disable-next-line complexity
93
- function _makeProgressIterator() {
94
- _makeProgressIterator = (0, _wrapAsyncGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(asyncIterator, info) {
95
- var rowCount, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, batch, rowCountInBatch, percent, progress;
96
- return _regenerator["default"].wrap(function _callee$(_context) {
97
- while (1) switch (_context.prev = _context.next) {
98
- case 0:
99
- rowCount = 0;
100
- _iteratorAbruptCompletion = false;
101
- _didIteratorError = false;
102
- _context.prev = 3;
103
- _iterator = _asyncIterator(asyncIterator);
104
- case 5:
105
- _context.next = 7;
106
- return (0, _awaitAsyncGenerator2["default"])(_iterator.next());
107
- case 7:
108
- if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) {
109
- _context.next = 18;
110
- break;
111
- }
112
- batch = _step.value;
113
- rowCountInBatch = batch.data && batch.data.length || 0;
114
- rowCount += rowCountInBatch;
115
- percent = Number.isFinite(batch.bytesUsed) ? batch.bytesUsed / info.size : null; // Update progress object
116
- progress = _objectSpread({
117
- rowCount: rowCount,
118
- rowCountInBatch: rowCountInBatch
119
- }, Number.isFinite(percent) ? {
120
- percent: percent
121
- } : {});
122
- _context.next = 15;
123
- return _objectSpread(_objectSpread({}, batch), {}, {
124
- progress: progress
125
- });
126
- case 15:
127
- _iteratorAbruptCompletion = false;
128
- _context.next = 5;
129
- break;
130
- case 18:
131
- _context.next = 24;
132
- break;
133
- case 20:
134
- _context.prev = 20;
135
- _context.t0 = _context["catch"](3);
136
- _didIteratorError = true;
137
- _iteratorError = _context.t0;
138
- case 24:
139
- _context.prev = 24;
140
- _context.prev = 25;
141
- if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) {
142
- _context.next = 29;
143
- break;
144
- }
145
- _context.next = 29;
146
- return (0, _awaitAsyncGenerator2["default"])(_iterator["return"]());
147
- case 29:
148
- _context.prev = 29;
149
- if (!_didIteratorError) {
150
- _context.next = 32;
151
- break;
152
- }
153
- throw _iteratorError;
154
- case 32:
155
- return _context.finish(29);
156
- case 33:
157
- return _context.finish(24);
158
- case 34:
159
- case "end":
160
- return _context.stop();
161
- }
162
- }, _callee, null, [[3, 20, 24, 34], [25,, 29, 33]]);
163
- }));
164
- return _makeProgressIterator.apply(this, arguments);
165
- }
166
- function readBatch(_x3, _x4) {
167
- return _readBatch.apply(this, arguments);
81
+ async function* makeProgressIterator(asyncIterator, info) {
82
+ let rowCount = 0;
83
+ for await (const batch of asyncIterator) {
84
+ const rowCountInBatch = batch.data && batch.data.length || 0;
85
+ rowCount += rowCountInBatch;
86
+ const percent = Number.isFinite(batch.bytesUsed) ? batch.bytesUsed / info.size : null;
87
+
88
+ // Update progress object
89
+ const progress = {
90
+ rowCount,
91
+ rowCountInBatch,
92
+ ...(Number.isFinite(percent) ? {
93
+ percent
94
+ } : {})
95
+ };
96
+ yield {
97
+ ...batch,
98
+ progress
99
+ };
100
+ }
168
101
  }
169
- function _readBatch() {
170
- _readBatch = (0, _wrapAsyncGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(asyncIterator, fileName) {
171
- var result, batches, _iteratorAbruptCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, batch, streamingPath, i;
172
- return _regenerator["default"].wrap(function _callee2$(_context2) {
173
- while (1) switch (_context2.prev = _context2.next) {
174
- case 0:
175
- result = null;
176
- batches = [];
177
- _iteratorAbruptCompletion2 = false;
178
- _didIteratorError2 = false;
179
- _context2.prev = 4;
180
- _iterator2 = _asyncIterator(asyncIterator);
181
- case 6:
182
- _context2.next = 8;
183
- return (0, _awaitAsyncGenerator2["default"])(_iterator2.next());
184
- case 8:
185
- if (!(_iteratorAbruptCompletion2 = !(_step2 = _context2.sent).done)) {
186
- _context2.next = 16;
187
- break;
188
- }
189
- batch = _step2.value;
190
- // Last batch will have this special type and will provide all the root
191
- // properties of the parsed document.
192
- // Only json parse will have `FINAL_RESULT`
193
- if (batch.batchType === BATCH_TYPE.FINAL_RESULT) {
194
- if (batch.container) {
195
- result = _objectSpread({}, batch.container);
196
- }
197
- // Set the streamed data correctly is Batch json path is set
198
- // and the path streamed is not the top level object (jsonpath = '$')
199
- if (batch.jsonpath && batch.jsonpath.length > 1) {
200
- streamingPath = new _json._JSONPath(batch.jsonpath);
201
- streamingPath.setFieldAtPath(result, batches);
202
- } else if (batch.jsonpath && batch.jsonpath.length === 1) {
203
- // The streamed object is a ROW JSON-batch (jsonpath = '$')
204
- // row objects
205
- result = batches;
206
- }
207
- } else {
208
- for (i = 0; i < batch.data.length; i++) {
209
- batches.push(batch.data[i]);
210
- }
211
- }
212
- _context2.next = 13;
213
- return _objectSpread(_objectSpread(_objectSpread({}, batch), batch.schema ? {
214
- headers: Object.keys(batch.schema)
215
- } : {}), {}, {
216
- fileName: fileName,
217
- // if dataset is CSV, data is set to the raw batches
218
- data: result ? result : batches
219
- });
220
- case 13:
221
- _iteratorAbruptCompletion2 = false;
222
- _context2.next = 6;
223
- break;
224
- case 16:
225
- _context2.next = 22;
226
- break;
227
- case 18:
228
- _context2.prev = 18;
229
- _context2.t0 = _context2["catch"](4);
230
- _didIteratorError2 = true;
231
- _iteratorError2 = _context2.t0;
232
- case 22:
233
- _context2.prev = 22;
234
- _context2.prev = 23;
235
- if (!(_iteratorAbruptCompletion2 && _iterator2["return"] != null)) {
236
- _context2.next = 27;
237
- break;
238
- }
239
- _context2.next = 27;
240
- return (0, _awaitAsyncGenerator2["default"])(_iterator2["return"]());
241
- case 27:
242
- _context2.prev = 27;
243
- if (!_didIteratorError2) {
244
- _context2.next = 30;
245
- break;
246
- }
247
- throw _iteratorError2;
248
- case 30:
249
- return _context2.finish(27);
250
- case 31:
251
- return _context2.finish(22);
252
- case 32:
253
- case "end":
254
- return _context2.stop();
102
+
103
+ // eslint-disable-next-line complexity
104
+ async function* readBatch(asyncIterator, fileName) {
105
+ let result = null;
106
+ const batches = [];
107
+ for await (const batch of asyncIterator) {
108
+ // Last batch will have this special type and will provide all the root
109
+ // properties of the parsed document.
110
+ // Only json parse will have `FINAL_RESULT`
111
+ if (batch.batchType === BATCH_TYPE.FINAL_RESULT) {
112
+ if (batch.container) {
113
+ result = {
114
+ ...batch.container
115
+ };
255
116
  }
256
- }, _callee2, null, [[4, 18, 22, 32], [23,, 27, 31]]);
257
- }));
258
- return _readBatch.apply(this, arguments);
259
- }
260
- function readFileInBatches(_x5) {
261
- return _readFileInBatches.apply(this, arguments);
262
- }
263
- function _readFileInBatches() {
264
- _readFileInBatches = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(_ref) {
265
- var file, _ref$loaders, loaders, _ref$loadOptions, loadOptions, batchIterator, progressIterator;
266
- return _regenerator["default"].wrap(function _callee3$(_context3) {
267
- while (1) switch (_context3.prev = _context3.next) {
268
- case 0:
269
- file = _ref.file, _ref$loaders = _ref.loaders, loaders = _ref$loaders === void 0 ? [] : _ref$loaders, _ref$loadOptions = _ref.loadOptions, loadOptions = _ref$loadOptions === void 0 ? {} : _ref$loadOptions;
270
- loaders = [_json.JSONLoader, _csv.CSVLoader].concat((0, _toConsumableArray2["default"])(loaders));
271
- loadOptions = _objectSpread({
272
- csv: CSV_LOADER_OPTIONS,
273
- json: JSON_LOADER_OPTIONS,
274
- metadata: true
275
- }, loadOptions);
276
- _context3.next = 5;
277
- return (0, _core.parseInBatches)(file, loaders, loadOptions);
278
- case 5:
279
- batchIterator = _context3.sent;
280
- progressIterator = makeProgressIterator(batchIterator, {
281
- size: file.size
282
- });
283
- return _context3.abrupt("return", readBatch(progressIterator, file.name));
284
- case 8:
285
- case "end":
286
- return _context3.stop();
117
+ // Set the streamed data correctly is Batch json path is set
118
+ // and the path streamed is not the top level object (jsonpath = '$')
119
+ if (batch.jsonpath && batch.jsonpath.length > 1) {
120
+ const streamingPath = new _json._JSONPath(batch.jsonpath);
121
+ streamingPath.setFieldAtPath(result, batches);
122
+ } else if (batch.jsonpath && batch.jsonpath.length === 1) {
123
+ // The streamed object is a ROW JSON-batch (jsonpath = '$')
124
+ // row objects
125
+ result = batches;
287
126
  }
288
- }, _callee3);
289
- }));
290
- return _readFileInBatches.apply(this, arguments);
127
+ } else {
128
+ for (let i = 0; i < batch.data.length; i++) {
129
+ batches.push(batch.data[i]);
130
+ }
131
+ }
132
+ yield {
133
+ ...batch,
134
+ ...(batch.schema ? {
135
+ headers: Object.keys(batch.schema)
136
+ } : {}),
137
+ fileName,
138
+ // if dataset is CSV, data is set to the raw batches
139
+ data: result ? result : batches
140
+ };
141
+ }
142
+ }
143
+ async function readFileInBatches(_ref) {
144
+ let {
145
+ file,
146
+ loaders = [],
147
+ loadOptions = {}
148
+ } = _ref;
149
+ loaders = [_json.JSONLoader, _csv.CSVLoader, ...loaders];
150
+ loadOptions = {
151
+ csv: CSV_LOADER_OPTIONS,
152
+ json: JSON_LOADER_OPTIONS,
153
+ metadata: true,
154
+ ...loadOptions
155
+ };
156
+ const batchIterator = await (0, _core.parseInBatches)(file, loaders, loadOptions);
157
+ const progressIterator = makeProgressIterator(batchIterator, {
158
+ size: file.size
159
+ });
160
+ return readBatch(progressIterator, file.name);
291
161
  }
292
162
  function processFileData(_ref2) {
293
- var content = _ref2.content,
294
- fileCache = _ref2.fileCache;
295
- return new Promise(function (resolve, reject) {
296
- var data = content.data;
297
- var format;
298
- var processor;
163
+ let {
164
+ content,
165
+ fileCache
166
+ } = _ref2;
167
+ return new Promise((resolve, reject) => {
168
+ const {
169
+ data
170
+ } = content;
171
+ let format;
172
+ let processor;
299
173
  if (isKeplerGlMap(data)) {
300
174
  format = _defaultSettings.DATASET_FORMATS.keplergl;
301
175
  processor = _dataProcessor.processKeplerglJSON;
@@ -307,37 +181,41 @@ function processFileData(_ref2) {
307
181
  processor = _dataProcessor.processGeojson;
308
182
  }
309
183
  if (format && processor) {
310
- var result = processor(data);
311
- resolve([].concat((0, _toConsumableArray2["default"])(fileCache), [{
184
+ const result = processor(data);
185
+ resolve([...fileCache, {
312
186
  data: result,
313
187
  info: {
314
188
  label: content.fileName,
315
- format: format
189
+ format
316
190
  }
317
- }]));
191
+ }]);
318
192
  }
319
193
  reject('Unknown File Format');
320
194
  });
321
195
  }
322
196
  function filesToDataPayload(fileCache) {
323
197
  // seperate out files which could be a single datasets. or a keplergl map json
324
- var collection = fileCache.reduce(function (accu, file) {
325
- var data = file.data,
326
- info = file.info;
198
+ const collection = fileCache.reduce((accu, file) => {
199
+ const {
200
+ data,
201
+ info
202
+ } = file;
327
203
  if ((info === null || info === void 0 ? void 0 : info.format) === _defaultSettings.DATASET_FORMATS.keplergl) {
328
204
  // if file contains a single kepler map dataset & config
329
- accu.keplerMaps.push(_objectSpread(_objectSpread({}, data), {}, {
205
+ accu.keplerMaps.push({
206
+ ...data,
330
207
  options: {
331
208
  centerMap: !(data.config && data.config.mapState)
332
209
  }
333
- }));
210
+ });
334
211
  } else if (_defaultSettings.DATASET_FORMATS[info === null || info === void 0 ? void 0 : info.format]) {
335
212
  // if file contains only data
336
- var newDataset = {
337
- data: data,
338
- info: _objectSpread({
339
- id: (info === null || info === void 0 ? void 0 : info.id) || (0, _utils.generateHashId)(4)
340
- }, info || {})
213
+ const newDataset = {
214
+ data,
215
+ info: {
216
+ id: (info === null || info === void 0 ? void 0 : info.id) || (0, _utils.generateHashId)(4),
217
+ ...(info || {})
218
+ }
341
219
  };
342
220
  // @ts-expect-error
343
221
  accu.datasets.push(newDataset);
@@ -354,4 +232,4 @@ function filesToDataPayload(fileCache) {
354
232
  datasets: collection.datasets
355
233
  });
356
234
  }
357
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfanNvbiIsIl9jc3YiLCJfZGF0YVByb2Nlc3NvciIsIl91dGlscyIsIl9kZWZhdWx0U2V0dGluZ3MiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9hc3luY0l0ZXJhdG9yIiwibiIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJpdGVyYXRvciIsImNhbGwiLCJBc3luY0Zyb21TeW5jSXRlcmF0b3IiLCJUeXBlRXJyb3IiLCJBc3luY0Zyb21TeW5jSXRlcmF0b3JDb250aW51YXRpb24iLCJQcm9taXNlIiwicmVqZWN0IiwiZG9uZSIsInJlc29sdmUiLCJ2YWx1ZSIsInRoZW4iLCJzIiwibmV4dCIsInByb3RvdHlwZSIsIl9yZXR1cm4iLCJfdGhyb3ciLCJCQVRDSF9UWVBFIiwiTUVUQURBVEEiLCJQQVJUSUFMX1JFU1VMVCIsIkZJTkFMX1JFU1VMVCIsIkNTVl9MT0FERVJfT1BUSU9OUyIsImJhdGNoU2l6ZSIsInJvd0Zvcm1hdCIsImR5bmFtaWNUeXBpbmciLCJKU09OX0xPQURFUl9PUFRJT05TIiwianNvbnBhdGhzIiwiaXNHZW9Kc29uIiwianNvbiIsImlzUGxhaW5PYmplY3QiLCJpc0ZlYXR1cmUiLCJpc0ZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsImdlb21ldHJ5IiwiZmVhdHVyZXMiLCJpc1Jvd09iamVjdCIsIkFycmF5IiwiaXNBcnJheSIsImlzS2VwbGVyR2xNYXAiLCJCb29sZWFuIiwiZGF0YXNldHMiLCJjb25maWciLCJpbmZvIiwiYXBwIiwibWFrZVByb2dyZXNzSXRlcmF0b3IiLCJfeCIsIl94MiIsIl9tYWtlUHJvZ3Jlc3NJdGVyYXRvciIsIl93cmFwQXN5bmNHZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJyb3dDb3VudCIsIl9pdGVyYXRvckFicnVwdENvbXBsZXRpb24iLCJfZGlkSXRlcmF0b3JFcnJvciIsIl9pdGVyYXRvckVycm9yIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJiYXRjaCIsInJvd0NvdW50SW5CYXRjaCIsInBlcmNlbnQiLCJwcm9ncmVzcyIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsIl9hd2FpdEFzeW5jR2VuZXJhdG9yMiIsInNlbnQiLCJkYXRhIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJieXRlc1VzZWQiLCJzaXplIiwidDAiLCJmaW5pc2giLCJzdG9wIiwicmVhZEJhdGNoIiwiX3gzIiwiX3g0IiwiX3JlYWRCYXRjaCIsIl9jYWxsZWUyIiwiZmlsZU5hbWUiLCJyZXN1bHQiLCJiYXRjaGVzIiwiX2l0ZXJhdG9yQWJydXB0Q29tcGxldGlvbjIiLCJfZGlkSXRlcmF0b3JFcnJvcjIiLCJfaXRlcmF0b3JFcnJvcjIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwic3RyZWFtaW5nUGF0aCIsImkiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJiYXRjaFR5cGUiLCJjb250YWluZXIiLCJqc29ucGF0aCIsIl9KU09OUGF0aCIsInNldEZpZWxkQXRQYXRoIiwic2NoZW1hIiwiaGVhZGVycyIsInJlYWRGaWxlSW5CYXRjaGVzIiwiX3g1IiwiX3JlYWRGaWxlSW5CYXRjaGVzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX2NhbGxlZTMiLCJfcmVmIiwiZmlsZSIsIl9yZWYkbG9hZGVycyIsImxvYWRlcnMiLCJfcmVmJGxvYWRPcHRpb25zIiwibG9hZE9wdGlvbnMiLCJiYXRjaEl0ZXJhdG9yIiwicHJvZ3Jlc3NJdGVyYXRvciIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIkpTT05Mb2FkZXIiLCJDU1ZMb2FkZXIiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiY3N2IiwibWV0YWRhdGEiLCJwYXJzZUluQmF0Y2hlcyIsImFicnVwdCIsIm5hbWUiLCJwcm9jZXNzRmlsZURhdGEiLCJfcmVmMiIsImNvbnRlbnQiLCJmaWxlQ2FjaGUiLCJmb3JtYXQiLCJwcm9jZXNzb3IiLCJEQVRBU0VUX0ZPUk1BVFMiLCJrZXBsZXJnbCIsInByb2Nlc3NLZXBsZXJnbEpTT04iLCJyb3ciLCJwcm9jZXNzUm93T2JqZWN0IiwiZ2VvanNvbiIsInByb2Nlc3NHZW9qc29uIiwibGFiZWwiLCJmaWxlc1RvRGF0YVBheWxvYWQiLCJjb2xsZWN0aW9uIiwicmVkdWNlIiwiYWNjdSIsImtlcGxlck1hcHMiLCJvcHRpb25zIiwiY2VudGVyTWFwIiwibWFwU3RhdGUiLCJuZXdEYXRhc2V0IiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzb3JzL2ZpbGUtaGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge3BhcnNlSW5CYXRjaGVzfSBmcm9tICdAbG9hZGVycy5nbC9jb3JlJztcbmltcG9ydCB7SlNPTkxvYWRlciwgX0pTT05QYXRofSBmcm9tICdAbG9hZGVycy5nbC9qc29uJztcbmltcG9ydCB7Q1NWTG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9jc3YnO1xuaW1wb3J0IHtwcm9jZXNzR2VvanNvbiwgcHJvY2Vzc0tlcGxlcmdsSlNPTiwgcHJvY2Vzc1Jvd09iamVjdH0gZnJvbSAnLi9kYXRhLXByb2Nlc3Nvcic7XG5pbXBvcnQge2lzUGxhaW5PYmplY3QsIGdlbmVyYXRlSGFzaElkfSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge0RBVEFTRVRfRk9STUFUU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuLy8gQHRzLWV4cGVjdC1lcnJvclxuaW1wb3J0IHtMb2FkZXJPYmplY3R9IGZyb20gJ0Bsb2FkZXJzLmdsL2xvYWRlci11dGlscyc7XG5pbXBvcnQge0FkZERhdGFUb01hcFBheWxvYWR9IGZyb20gJ2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQge0ZpbGVDYWNoZUl0ZW0sIFZhbGlkS2VwbGVyR2xNYXB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtGZWF0dXJlfSBmcm9tICdyZWR1Y2Vycyc7XG5pbXBvcnQge0ZlYXR1cmVDb2xsZWN0aW9ufSBmcm9tICdAdHVyZi9oZWxwZXJzJztcblxuY29uc3QgQkFUQ0hfVFlQRSA9IHtcbiAgTUVUQURBVEE6ICdtZXRhZGF0YScsXG4gIFBBUlRJQUxfUkVTVUxUOiAncGFydGlhbC1yZXN1bHQnLFxuICBGSU5BTF9SRVNVTFQ6ICdmaW5hbC1yZXN1bHQnXG59O1xuXG5jb25zdCBDU1ZfTE9BREVSX09QVElPTlMgPSB7XG4gIGJhdGNoU2l6ZTogNDAwMCwgLy8gQXV0byBkZSB0ZWN0IG51bWJlciBvZiByb3dzIHBlciBiYXRjaCAobmV0d29yayBiYXRjaCBzaXplKVxuICByb3dGb3JtYXQ6ICdvYmplY3QnLFxuICBkeW5hbWljVHlwaW5nOiBmYWxzZSAvLyBub3Qgd29ya2luZyBmb3Igbm93XG59O1xuXG5jb25zdCBKU09OX0xPQURFUl9PUFRJT05TID0ge1xuICAvLyBpbnN0cnVjdCBsb2FkZXJzLmdsIG9uIHdoYXQganNvbiBwYXRocyB0byBzdHJlYW1cbiAganNvbnBhdGhzOiBbXG4gICAgJyQnLCAvLyBKU09OIFJvdyBhcnJheVxuICAgICckLmZlYXR1cmVzJywgLy8gR2VvSlNPTlxuICAgICckLmRhdGFzZXRzJyAvLyBLZXBsZXJHTCBKU09OXG4gIF1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0pzb24oanNvbjogdW5rbm93bik6IGpzb24gaXMgRmVhdHVyZSB8IEZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgLy8ganNvbiBjYW4gYmUgZmVhdHVyZSBjb2xsZWN0aW9uXG4gIC8vIG9yIHNpbmdsZSBmZWF0dXJlXG4gIHJldHVybiBpc1BsYWluT2JqZWN0KGpzb24pICYmIChpc0ZlYXR1cmUoanNvbikgfHwgaXNGZWF0dXJlQ29sbGVjdGlvbihqc29uKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZlYXR1cmUoanNvbjogdW5rbm93bik6IGpzb24gaXMgRmVhdHVyZSB7XG4gIHJldHVybiBpc1BsYWluT2JqZWN0KGpzb24pICYmIGpzb24udHlwZSA9PT0gJ0ZlYXR1cmUnICYmICEhanNvbi5nZW9tZXRyeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmVhdHVyZUNvbGxlY3Rpb24oanNvbjogdW5rbm93bik6IGpzb24gaXMgRmVhdHVyZUNvbGxlY3Rpb24ge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdChqc29uKSAmJiBqc29uLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicgJiYgISFqc29uLmZlYXR1cmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSb3dPYmplY3QoanNvbjogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGpzb24pICYmIGlzUGxhaW5PYmplY3QoanNvblswXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0tlcGxlckdsTWFwKGpzb246IHVua25vd24pOiBqc29uIGlzIFZhbGlkS2VwbGVyR2xNYXAge1xuICByZXR1cm4gQm9vbGVhbihcbiAgICBpc1BsYWluT2JqZWN0KGpzb24pICYmXG4gICAgICBqc29uLmRhdGFzZXRzICYmXG4gICAgICBqc29uLmNvbmZpZyAmJlxuICAgICAganNvbi5pbmZvICYmXG4gICAgICBpc1BsYWluT2JqZWN0KGpzb24uaW5mbykgJiZcbiAgICAgIGpzb24uaW5mby5hcHAgPT09ICdrZXBsZXIuZ2wnXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogbWFrZVByb2dyZXNzSXRlcmF0b3IoXG4gIGFzeW5jSXRlcmF0b3I6IEFzeW5jSXRlcmFibGU8YW55PixcbiAgaW5mbzoge3NpemU6IG51bWJlcn1cbik6IEFzeW5jR2VuZXJhdG9yIHtcbiAgbGV0IHJvd0NvdW50ID0gMDtcblxuICBmb3IgYXdhaXQgKGNvbnN0IGJhdGNoIG9mIGFzeW5jSXRlcmF0b3IpIHtcbiAgICBjb25zdCByb3dDb3VudEluQmF0Y2ggPSAoYmF0Y2guZGF0YSAmJiBiYXRjaC5kYXRhLmxlbmd0aCkgfHwgMDtcbiAgICByb3dDb3VudCArPSByb3dDb3VudEluQmF0Y2g7XG4gICAgY29uc3QgcGVyY2VudCA9IE51bWJlci5pc0Zpbml0ZShiYXRjaC5ieXRlc1VzZWQpID8gYmF0Y2guYnl0ZXNVc2VkIC8gaW5mby5zaXplIDogbnVsbDtcblxuICAgIC8vIFVwZGF0ZSBwcm9ncmVzcyBvYmplY3RcbiAgICBjb25zdCBwcm9ncmVzcyA9IHtcbiAgICAgIHJvd0NvdW50LFxuICAgICAgcm93Q291bnRJbkJhdGNoLFxuICAgICAgLi4uKE51bWJlci5pc0Zpbml0ZShwZXJjZW50KSA/IHtwZXJjZW50fSA6IHt9KVxuICAgIH07XG5cbiAgICB5aWVsZCB7Li4uYmF0Y2gsIHByb2dyZXNzfTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiByZWFkQmF0Y2goXG4gIGFzeW5jSXRlcmF0b3I6IEFzeW5jSXRlcmFibGU8YW55PixcbiAgZmlsZU5hbWU6IHN0cmluZ1xuKTogQXN5bmNHZW5lcmF0b3Ige1xuICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgY29uc3QgYmF0Y2hlcyA9IDxhbnk+W107XG5cbiAgZm9yIGF3YWl0IChjb25zdCBiYXRjaCBvZiBhc3luY0l0ZXJhdG9yKSB7XG4gICAgLy8gTGFzdCBiYXRjaCB3aWxsIGhhdmUgdGhpcyBzcGVjaWFsIHR5cGUgYW5kIHdpbGwgcHJvdmlkZSBhbGwgdGhlIHJvb3RcbiAgICAvLyBwcm9wZXJ0aWVzIG9mIHRoZSBwYXJzZWQgZG9jdW1lbnQuXG4gICAgLy8gT25seSBqc29uIHBhcnNlIHdpbGwgaGF2ZSBgRklOQUxfUkVTVUxUYFxuICAgIGlmIChiYXRjaC5iYXRjaFR5cGUgPT09IEJBVENIX1RZUEUuRklOQUxfUkVTVUxUKSB7XG4gICAgICBpZiAoYmF0Y2guY29udGFpbmVyKSB7XG4gICAgICAgIHJlc3VsdCA9IHsuLi5iYXRjaC5jb250YWluZXJ9O1xuICAgICAgfVxuICAgICAgLy8gU2V0IHRoZSBzdHJlYW1lZCBkYXRhIGNvcnJlY3RseSBpcyBCYXRjaCBqc29uIHBhdGggaXMgc2V0XG4gICAgICAvLyBhbmQgdGhlIHBhdGggc3RyZWFtZWQgaXMgbm90IHRoZSB0b3AgbGV2ZWwgb2JqZWN0IChqc29ucGF0aCA9ICckJylcbiAgICAgIGlmIChiYXRjaC5qc29ucGF0aCAmJiBiYXRjaC5qc29ucGF0aC5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHN0cmVhbWluZ1BhdGggPSBuZXcgX0pTT05QYXRoKGJhdGNoLmpzb25wYXRoKTtcbiAgICAgICAgc3RyZWFtaW5nUGF0aC5zZXRGaWVsZEF0UGF0aChyZXN1bHQsIGJhdGNoZXMpO1xuICAgICAgfSBlbHNlIGlmIChiYXRjaC5qc29ucGF0aCAmJiBiYXRjaC5qc29ucGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgLy8gVGhlIHN0cmVhbWVkIG9iamVjdCBpcyBhIFJPVyBKU09OLWJhdGNoIChqc29ucGF0aCA9ICckJylcbiAgICAgICAgLy8gcm93IG9iamVjdHNcbiAgICAgICAgcmVzdWx0ID0gYmF0Y2hlcztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiYXRjaC5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJhdGNoZXMucHVzaChiYXRjaC5kYXRhW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB5aWVsZCB7XG4gICAgICAuLi5iYXRjaCxcbiAgICAgIC4uLihiYXRjaC5zY2hlbWEgPyB7aGVhZGVyczogT2JqZWN0LmtleXMoYmF0Y2guc2NoZW1hKX0gOiB7fSksXG4gICAgICBmaWxlTmFtZSxcbiAgICAgIC8vIGlmIGRhdGFzZXQgaXMgQ1NWLCBkYXRhIGlzIHNldCB0byB0aGUgcmF3IGJhdGNoZXNcbiAgICAgIGRhdGE6IHJlc3VsdCA/IHJlc3VsdCA6IGJhdGNoZXNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRmlsZUluQmF0Y2hlcyh7XG4gIGZpbGUsXG4gIGxvYWRlcnMgPSBbXSxcbiAgbG9hZE9wdGlvbnMgPSB7fVxufToge1xuICBmaWxlOiBGaWxlO1xuICBmaWxlQ2FjaGU6IEZpbGVDYWNoZUl0ZW1bXTtcbiAgbG9hZGVyczogTG9hZGVyT2JqZWN0W107XG4gIGxvYWRPcHRpb25zOiBhbnk7XG59KTogUHJvbWlzZTxBc3luY0dlbmVyYXRvcj4ge1xuICBsb2FkZXJzID0gW0pTT05Mb2FkZXIsIENTVkxvYWRlciwgLi4ubG9hZGVyc107XG4gIGxvYWRPcHRpb25zID0ge1xuICAgIGNzdjogQ1NWX0xPQURFUl9PUFRJT05TLFxuICAgIGpzb246IEpTT05fTE9BREVSX09QVElPTlMsXG4gICAgbWV0YWRhdGE6IHRydWUsXG4gICAgLi4ubG9hZE9wdGlvbnNcbiAgfTtcblxuICBjb25zdCBiYXRjaEl0ZXJhdG9yID0gYXdhaXQgcGFyc2VJbkJhdGNoZXMoZmlsZSwgbG9hZGVycywgbG9hZE9wdGlvbnMpO1xuICBjb25zdCBwcm9ncmVzc0l0ZXJhdG9yID0gbWFrZVByb2dyZXNzSXRlcmF0b3IoYmF0Y2hJdGVyYXRvciwge3NpemU6IGZpbGUuc2l6ZX0pO1xuXG4gIHJldHVybiByZWFkQmF0Y2gocHJvZ3Jlc3NJdGVyYXRvciwgZmlsZS5uYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NGaWxlRGF0YSh7XG4gIGNvbnRlbnQsXG4gIGZpbGVDYWNoZVxufToge1xuICBjb250ZW50OiB7ZGF0YTogdW5rbm93bjsgZmlsZU5hbWU6IHN0cmluZ307XG4gIGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdO1xufSk6IFByb21pc2U8RmlsZUNhY2hlSXRlbVtdPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qge2RhdGF9ID0gY29udGVudDtcblxuICAgIGxldCBmb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBsZXQgcHJvY2Vzc29yOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNLZXBsZXJHbE1hcChkYXRhKSkge1xuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmtlcGxlcmdsO1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc0tlcGxlcmdsSlNPTjtcbiAgICB9IGVsc2UgaWYgKGlzUm93T2JqZWN0KGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMucm93O1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc1Jvd09iamVjdDtcbiAgICB9IGVsc2UgaWYgKGlzR2VvSnNvbihkYXRhKSkge1xuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb247XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzR2VvanNvbjtcbiAgICB9XG5cbiAgICBpZiAoZm9ybWF0ICYmIHByb2Nlc3Nvcikge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc29yKGRhdGEpO1xuXG4gICAgICByZXNvbHZlKFtcbiAgICAgICAgLi4uZmlsZUNhY2hlLFxuICAgICAgICB7XG4gICAgICAgICAgZGF0YTogcmVzdWx0LFxuICAgICAgICAgIGluZm86IHtcbiAgICAgICAgICAgIGxhYmVsOiBjb250ZW50LmZpbGVOYW1lLFxuICAgICAgICAgICAgZm9ybWF0XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdKTtcbiAgICB9XG5cbiAgICByZWplY3QoJ1Vua25vd24gRmlsZSBGb3JtYXQnKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlc1RvRGF0YVBheWxvYWQoZmlsZUNhY2hlOiBGaWxlQ2FjaGVJdGVtW10pOiBBZGREYXRhVG9NYXBQYXlsb2FkW10ge1xuICAvLyBzZXBlcmF0ZSBvdXQgZmlsZXMgd2hpY2ggY291bGQgYmUgYSBzaW5nbGUgZGF0YXNldHMuIG9yIGEga2VwbGVyZ2wgbWFwIGpzb25cbiAgY29uc3QgY29sbGVjdGlvbiA9IGZpbGVDYWNoZS5yZWR1Y2U8e1xuICAgIGRhdGFzZXRzOiBGaWxlQ2FjaGVJdGVtW107XG4gICAga2VwbGVyTWFwczogQWRkRGF0YVRvTWFwUGF5bG9hZFtdO1xuICB9PihcbiAgICAoYWNjdSwgZmlsZSkgPT4ge1xuICAgICAgY29uc3Qge2RhdGEsIGluZm99ID0gZmlsZTtcbiAgICAgIGlmIChpbmZvPy5mb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCkge1xuICAgICAgICAvLyBpZiBmaWxlIGNvbnRhaW5zIGEgc2luZ2xlIGtlcGxlciBtYXAgZGF0YXNldCAmIGNvbmZpZ1xuICAgICAgICBhY2N1LmtlcGxlck1hcHMucHVzaCh7XG4gICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBjZW50ZXJNYXA6ICEoZGF0YS5jb25maWcgJiYgZGF0YS5jb25maWcubWFwU3RhdGUpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoREFUQVNFVF9GT1JNQVRTW2luZm8/LmZvcm1hdF0pIHtcbiAgICAgICAgLy8gaWYgZmlsZSBjb250YWlucyBvbmx5IGRhdGFcbiAgICAgICAgY29uc3QgbmV3RGF0YXNldCA9IHtcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGluZm86IHtcbiAgICAgICAgICAgIGlkOiBpbmZvPy5pZCB8fCBnZW5lcmF0ZUhhc2hJZCg0KSxcbiAgICAgICAgICAgIC4uLihpbmZvIHx8IHt9KVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICBhY2N1LmRhdGFzZXRzLnB1c2gobmV3RGF0YXNldCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdTtcbiAgICB9LFxuICAgIHtkYXRhc2V0czogW10sIGtlcGxlck1hcHM6IFtdfVxuICApO1xuXG4gIC8vIGFkZCBrZXBsZXIgbWFwIGZpcnN0IHdpdGggY29uZmlnXG4gIC8vIGFkZCBkYXRhc2V0cyBsYXRlciBpbiBvbmUgYWRkIGRhdGEgY2FsbFxuICByZXR1cm4gY29sbGVjdGlvbi5rZXBsZXJNYXBzLmNvbmNhdCh7ZGF0YXNldHM6IGNvbGxlY3Rpb24uZGF0YXNldHN9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxJQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxnQkFBQSxHQUFBTCxPQUFBO0FBQTJELFNBQUFNLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUss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
235
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfanNvbiIsIl9jc3YiLCJfZGF0YVByb2Nlc3NvciIsIl91dGlscyIsIl9kZWZhdWx0U2V0dGluZ3MiLCJCQVRDSF9UWVBFIiwiTUVUQURBVEEiLCJQQVJUSUFMX1JFU1VMVCIsIkZJTkFMX1JFU1VMVCIsIkNTVl9MT0FERVJfT1BUSU9OUyIsImJhdGNoU2l6ZSIsInJvd0Zvcm1hdCIsImR5bmFtaWNUeXBpbmciLCJKU09OX0xPQURFUl9PUFRJT05TIiwianNvbnBhdGhzIiwiaXNHZW9Kc29uIiwianNvbiIsImlzUGxhaW5PYmplY3QiLCJpc0ZlYXR1cmUiLCJpc0ZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsImdlb21ldHJ5IiwiZmVhdHVyZXMiLCJpc1Jvd09iamVjdCIsIkFycmF5IiwiaXNBcnJheSIsImlzS2VwbGVyR2xNYXAiLCJCb29sZWFuIiwiZGF0YXNldHMiLCJjb25maWciLCJpbmZvIiwiYXBwIiwibWFrZVByb2dyZXNzSXRlcmF0b3IiLCJhc3luY0l0ZXJhdG9yIiwicm93Q291bnQiLCJiYXRjaCIsInJvd0NvdW50SW5CYXRjaCIsImRhdGEiLCJsZW5ndGgiLCJwZXJjZW50IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJieXRlc1VzZWQiLCJzaXplIiwicHJvZ3Jlc3MiLCJyZWFkQmF0Y2giLCJmaWxlTmFtZSIsInJlc3VsdCIsImJhdGNoZXMiLCJiYXRjaFR5cGUiLCJjb250YWluZXIiLCJqc29ucGF0aCIsInN0cmVhbWluZ1BhdGgiLCJfSlNPTlBhdGgiLCJzZXRGaWVsZEF0UGF0aCIsImkiLCJwdXNoIiwic2NoZW1hIiwiaGVhZGVycyIsIk9iamVjdCIsImtleXMiLCJyZWFkRmlsZUluQmF0Y2hlcyIsIl9yZWYiLCJmaWxlIiwibG9hZGVycyIsImxvYWRPcHRpb25zIiwiSlNPTkxvYWRlciIsIkNTVkxvYWRlciIsImNzdiIsIm1ldGFkYXRhIiwiYmF0Y2hJdGVyYXRvciIsInBhcnNlSW5CYXRjaGVzIiwicHJvZ3Jlc3NJdGVyYXRvciIsIm5hbWUiLCJwcm9jZXNzRmlsZURhdGEiLCJfcmVmMiIsImNvbnRlbnQiLCJmaWxlQ2FjaGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZvcm1hdCIsInByb2Nlc3NvciIsIkRBVEFTRVRfRk9STUFUUyIsImtlcGxlcmdsIiwicHJvY2Vzc0tlcGxlcmdsSlNPTiIsInJvdyIsInByb2Nlc3NSb3dPYmplY3QiLCJnZW9qc29uIiwicHJvY2Vzc0dlb2pzb24iLCJsYWJlbCIsImZpbGVzVG9EYXRhUGF5bG9hZCIsImNvbGxlY3Rpb24iLCJyZWR1Y2UiLCJhY2N1Iiwia2VwbGVyTWFwcyIsIm9wdGlvbnMiLCJjZW50ZXJNYXAiLCJtYXBTdGF0ZSIsIm5ld0RhdGFzZXQiLCJpZCIsImdlbmVyYXRlSGFzaElkIiwiY29uY2F0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2Nlc3NvcnMvZmlsZS1oYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7cGFyc2VJbkJhdGNoZXN9IGZyb20gJ0Bsb2FkZXJzLmdsL2NvcmUnO1xuaW1wb3J0IHtKU09OTG9hZGVyLCBfSlNPTlBhdGh9IGZyb20gJ0Bsb2FkZXJzLmdsL2pzb24nO1xuaW1wb3J0IHtDU1ZMb2FkZXJ9IGZyb20gJ0Bsb2FkZXJzLmdsL2Nzdic7XG5pbXBvcnQge3Byb2Nlc3NHZW9qc29uLCBwcm9jZXNzS2VwbGVyZ2xKU09OLCBwcm9jZXNzUm93T2JqZWN0fSBmcm9tICcuL2RhdGEtcHJvY2Vzc29yJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdCwgZ2VuZXJhdGVIYXNoSWR9IGZyb20gJ3V0aWxzL3V0aWxzJztcbmltcG9ydCB7REFUQVNFVF9GT1JNQVRTfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG4vLyBAdHMtZXhwZWN0LWVycm9yXG5pbXBvcnQge0xvYWRlck9iamVjdH0gZnJvbSAnQGxvYWRlcnMuZ2wvbG9hZGVyLXV0aWxzJztcbmltcG9ydCB7QWRkRGF0YVRvTWFwUGF5bG9hZH0gZnJvbSAnYWN0aW9ucy9hY3Rpb25zJztcbmltcG9ydCB7RmlsZUNhY2hlSXRlbSwgVmFsaWRLZXBsZXJHbE1hcH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge0ZlYXR1cmV9IGZyb20gJ3JlZHVjZXJzJztcbmltcG9ydCB7RmVhdHVyZUNvbGxlY3Rpb259IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuXG5jb25zdCBCQVRDSF9UWVBFID0ge1xuICBNRVRBREFUQTogJ21ldGFkYXRhJyxcbiAgUEFSVElBTF9SRVNVTFQ6ICdwYXJ0aWFsLXJlc3VsdCcsXG4gIEZJTkFMX1JFU1VMVDogJ2ZpbmFsLXJlc3VsdCdcbn07XG5cbmNvbnN0IENTVl9MT0FERVJfT1BUSU9OUyA9IHtcbiAgYmF0Y2hTaXplOiA0MDAwLCAvLyBBdXRvIGRlIHRlY3QgbnVtYmVyIG9mIHJvd3MgcGVyIGJhdGNoIChuZXR3b3JrIGJhdGNoIHNpemUpXG4gIHJvd0Zvcm1hdDogJ29iamVjdCcsXG4gIGR5bmFtaWNUeXBpbmc6IGZhbHNlIC8vIG5vdCB3b3JraW5nIGZvciBub3dcbn07XG5cbmNvbnN0IEpTT05fTE9BREVSX09QVElPTlMgPSB7XG4gIC8vIGluc3RydWN0IGxvYWRlcnMuZ2wgb24gd2hhdCBqc29uIHBhdGhzIHRvIHN0cmVhbVxuICBqc29ucGF0aHM6IFtcbiAgICAnJCcsIC8vIEpTT04gUm93IGFycmF5XG4gICAgJyQuZmVhdHVyZXMnLCAvLyBHZW9KU09OXG4gICAgJyQuZGF0YXNldHMnIC8vIEtlcGxlckdMIEpTT05cbiAgXVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvSnNvbihqc29uOiB1bmtub3duKToganNvbiBpcyBGZWF0dXJlIHwgRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAvLyBqc29uIGNhbiBiZSBmZWF0dXJlIGNvbGxlY3Rpb25cbiAgLy8gb3Igc2luZ2xlIGZlYXR1cmVcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoanNvbikgJiYgKGlzRmVhdHVyZShqc29uKSB8fCBpc0ZlYXR1cmVDb2xsZWN0aW9uKGpzb24pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmVhdHVyZShqc29uOiB1bmtub3duKToganNvbiBpcyBGZWF0dXJlIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoanNvbikgJiYganNvbi50eXBlID09PSAnRmVhdHVyZScgJiYgISFqc29uLmdlb21ldHJ5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGZWF0dXJlQ29sbGVjdGlvbihqc29uOiB1bmtub3duKToganNvbiBpcyBGZWF0dXJlQ29sbGVjdGlvbiB7XG4gIHJldHVybiBpc1BsYWluT2JqZWN0KGpzb24pICYmIGpzb24udHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJyAmJiAhIWpzb24uZmVhdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Jvd09iamVjdChqc29uOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoanNvbikgJiYgaXNQbGFpbk9iamVjdChqc29uWzBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzS2VwbGVyR2xNYXAoanNvbjogdW5rbm93bik6IGpzb24gaXMgVmFsaWRLZXBsZXJHbE1hcCB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIGlzUGxhaW5PYmplY3QoanNvbikgJiZcbiAgICAgIGpzb24uZGF0YXNldHMgJiZcbiAgICAgIGpzb24uY29uZmlnICYmXG4gICAgICBqc29uLmluZm8gJiZcbiAgICAgIGlzUGxhaW5PYmplY3QoanNvbi5pbmZvKSAmJlxuICAgICAganNvbi5pbmZvLmFwcCA9PT0gJ2tlcGxlci5nbCdcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBtYWtlUHJvZ3Jlc3NJdGVyYXRvcihcbiAgYXN5bmNJdGVyYXRvcjogQXN5bmNJdGVyYWJsZTxhbnk+LFxuICBpbmZvOiB7c2l6ZTogbnVtYmVyfVxuKTogQXN5bmNHZW5lcmF0b3Ige1xuICBsZXQgcm93Q291bnQgPSAwO1xuXG4gIGZvciBhd2FpdCAoY29uc3QgYmF0Y2ggb2YgYXN5bmNJdGVyYXRvcikge1xuICAgIGNvbnN0IHJvd0NvdW50SW5CYXRjaCA9IChiYXRjaC5kYXRhICYmIGJhdGNoLmRhdGEubGVuZ3RoKSB8fCAwO1xuICAgIHJvd0NvdW50ICs9IHJvd0NvdW50SW5CYXRjaDtcbiAgICBjb25zdCBwZXJjZW50ID0gTnVtYmVyLmlzRmluaXRlKGJhdGNoLmJ5dGVzVXNlZCkgPyBiYXRjaC5ieXRlc1VzZWQgLyBpbmZvLnNpemUgOiBudWxsO1xuXG4gICAgLy8gVXBkYXRlIHByb2dyZXNzIG9iamVjdFxuICAgIGNvbnN0IHByb2dyZXNzID0ge1xuICAgICAgcm93Q291bnQsXG4gICAgICByb3dDb3VudEluQmF0Y2gsXG4gICAgICAuLi4oTnVtYmVyLmlzRmluaXRlKHBlcmNlbnQpID8ge3BlcmNlbnR9IDoge30pXG4gICAgfTtcblxuICAgIHlpZWxkIHsuLi5iYXRjaCwgcHJvZ3Jlc3N9O1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHJlYWRCYXRjaChcbiAgYXN5bmNJdGVyYXRvcjogQXN5bmNJdGVyYWJsZTxhbnk+LFxuICBmaWxlTmFtZTogc3RyaW5nXG4pOiBBc3luY0dlbmVyYXRvciB7XG4gIGxldCByZXN1bHQgPSBudWxsO1xuICBjb25zdCBiYXRjaGVzID0gPGFueT5bXTtcblxuICBmb3IgYXdhaXQgKGNvbnN0IGJhdGNoIG9mIGFzeW5jSXRlcmF0b3IpIHtcbiAgICAvLyBMYXN0IGJhdGNoIHdpbGwgaGF2ZSB0aGlzIHNwZWNpYWwgdHlwZSBhbmQgd2lsbCBwcm92aWRlIGFsbCB0aGUgcm9vdFxuICAgIC8vIHByb3BlcnRpZXMgb2YgdGhlIHBhcnNlZCBkb2N1bWVudC5cbiAgICAvLyBPbmx5IGpzb24gcGFyc2Ugd2lsbCBoYXZlIGBGSU5BTF9SRVNVTFRgXG4gICAgaWYgKGJhdGNoLmJhdGNoVHlwZSA9PT0gQkFUQ0hfVFlQRS5GSU5BTF9SRVNVTFQpIHtcbiAgICAgIGlmIChiYXRjaC5jb250YWluZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gey4uLmJhdGNoLmNvbnRhaW5lcn07XG4gICAgICB9XG4gICAgICAvLyBTZXQgdGhlIHN0cmVhbWVkIGRhdGEgY29ycmVjdGx5IGlzIEJhdGNoIGpzb24gcGF0aCBpcyBzZXRcbiAgICAgIC8vIGFuZCB0aGUgcGF0aCBzdHJlYW1lZCBpcyBub3QgdGhlIHRvcCBsZXZlbCBvYmplY3QgKGpzb25wYXRoID0gJyQnKVxuICAgICAgaWYgKGJhdGNoLmpzb25wYXRoICYmIGJhdGNoLmpzb25wYXRoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc3Qgc3RyZWFtaW5nUGF0aCA9IG5ldyBfSlNPTlBhdGgoYmF0Y2guanNvbnBhdGgpO1xuICAgICAgICBzdHJlYW1pbmdQYXRoLnNldEZpZWxkQXRQYXRoKHJlc3VsdCwgYmF0Y2hlcyk7XG4gICAgICB9IGVsc2UgaWYgKGJhdGNoLmpzb25wYXRoICYmIGJhdGNoLmpzb25wYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAvLyBUaGUgc3RyZWFtZWQgb2JqZWN0IGlzIGEgUk9XIEpTT04tYmF0Y2ggKGpzb25wYXRoID0gJyQnKVxuICAgICAgICAvLyByb3cgb2JqZWN0c1xuICAgICAgICByZXN1bHQgPSBiYXRjaGVzO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJhdGNoLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYmF0Y2hlcy5wdXNoKGJhdGNoLmRhdGFbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHlpZWxkIHtcbiAgICAgIC4uLmJhdGNoLFxuICAgICAgLi4uKGJhdGNoLnNjaGVtYSA/IHtoZWFkZXJzOiBPYmplY3Qua2V5cyhiYXRjaC5zY2hlbWEpfSA6IHt9KSxcbiAgICAgIGZpbGVOYW1lLFxuICAgICAgLy8gaWYgZGF0YXNldCBpcyBDU1YsIGRhdGEgaXMgc2V0IHRvIHRoZSByYXcgYmF0Y2hlc1xuICAgICAgZGF0YTogcmVzdWx0ID8gcmVzdWx0IDogYmF0Y2hlc1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRGaWxlSW5CYXRjaGVzKHtcbiAgZmlsZSxcbiAgbG9hZGVycyA9IFtdLFxuICBsb2FkT3B0aW9ucyA9IHt9XG59OiB7XG4gIGZpbGU6IEZpbGU7XG4gIGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdO1xuICBsb2FkZXJzOiBMb2FkZXJPYmplY3RbXTtcbiAgbG9hZE9wdGlvbnM6IGFueTtcbn0pOiBQcm9taXNlPEFzeW5jR2VuZXJhdG9yPiB7XG4gIGxvYWRlcnMgPSBbSlNPTkxvYWRlciwgQ1NWTG9hZGVyLCAuLi5sb2FkZXJzXTtcbiAgbG9hZE9wdGlvbnMgPSB7XG4gICAgY3N2OiBDU1ZfTE9BREVSX09QVElPTlMsXG4gICAganNvbjogSlNPTl9MT0FERVJfT1BUSU9OUyxcbiAgICBtZXRhZGF0YTogdHJ1ZSxcbiAgICAuLi5sb2FkT3B0aW9uc1xuICB9O1xuXG4gIGNvbnN0IGJhdGNoSXRlcmF0b3IgPSBhd2FpdCBwYXJzZUluQmF0Y2hlcyhmaWxlLCBsb2FkZXJzLCBsb2FkT3B0aW9ucyk7XG4gIGNvbnN0IHByb2dyZXNzSXRlcmF0b3IgPSBtYWtlUHJvZ3Jlc3NJdGVyYXRvcihiYXRjaEl0ZXJhdG9yLCB7c2l6ZTogZmlsZS5zaXplfSk7XG5cbiAgcmV0dXJuIHJlYWRCYXRjaChwcm9ncmVzc0l0ZXJhdG9yLCBmaWxlLm5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0ZpbGVEYXRhKHtcbiAgY29udGVudCxcbiAgZmlsZUNhY2hlXG59OiB7XG4gIGNvbnRlbnQ6IHtkYXRhOiB1bmtub3duOyBmaWxlTmFtZTogc3RyaW5nfTtcbiAgZmlsZUNhY2hlOiBGaWxlQ2FjaGVJdGVtW107XG59KTogUHJvbWlzZTxGaWxlQ2FjaGVJdGVtW10+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB7ZGF0YX0gPSBjb250ZW50O1xuXG4gICAgbGV0IGZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBwcm9jZXNzb3I6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgIGlmIChpc0tlcGxlckdsTWFwKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2w7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzS2VwbGVyZ2xKU09OO1xuICAgIH0gZWxzZSBpZiAoaXNSb3dPYmplY3QoZGF0YSkpIHtcbiAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5yb3c7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzUm93T2JqZWN0O1xuICAgIH0gZWxzZSBpZiAoaXNHZW9Kc29uKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NHZW9qc29uO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgJiYgcHJvY2Vzc29yKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzb3IoZGF0YSk7XG5cbiAgICAgIHJlc29sdmUoW1xuICAgICAgICAuLi5maWxlQ2FjaGUsXG4gICAgICAgIHtcbiAgICAgICAgICBkYXRhOiByZXN1bHQsXG4gICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgbGFiZWw6IGNvbnRlbnQuZmlsZU5hbWUsXG4gICAgICAgICAgICBmb3JtYXRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHJlamVjdCgnVW5rbm93biBGaWxlIEZvcm1hdCcpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVzVG9EYXRhUGF5bG9hZChmaWxlQ2FjaGU6IEZpbGVDYWNoZUl0ZW1bXSk6IEFkZERhdGFUb01hcFBheWxvYWRbXSB7XG4gIC8vIHNlcGVyYXRlIG91dCBmaWxlcyB3aGljaCBjb3VsZCBiZSBhIHNpbmdsZSBkYXRhc2V0cy4gb3IgYSBrZXBsZXJnbCBtYXAganNvblxuICBjb25zdCBjb2xsZWN0aW9uID0gZmlsZUNhY2hlLnJlZHVjZTx7XG4gICAgZGF0YXNldHM6IEZpbGVDYWNoZUl0ZW1bXTtcbiAgICBrZXBsZXJNYXBzOiBBZGREYXRhVG9NYXBQYXlsb2FkW107XG4gIH0+KFxuICAgIChhY2N1LCBmaWxlKSA9PiB7XG4gICAgICBjb25zdCB7ZGF0YSwgaW5mb30gPSBmaWxlO1xuICAgICAgaWYgKGluZm8/LmZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmtlcGxlcmdsKSB7XG4gICAgICAgIC8vIGlmIGZpbGUgY29udGFpbnMgYSBzaW5nbGUga2VwbGVyIG1hcCBkYXRhc2V0ICYgY29uZmlnXG4gICAgICAgIGFjY3Uua2VwbGVyTWFwcy5wdXNoKHtcbiAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGNlbnRlck1hcDogIShkYXRhLmNvbmZpZyAmJiBkYXRhLmNvbmZpZy5tYXBTdGF0ZSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChEQVRBU0VUX0ZPUk1BVFNbaW5mbz8uZm9ybWF0XSkge1xuICAgICAgICAvLyBpZiBmaWxlIGNvbnRhaW5zIG9ubHkgZGF0YVxuICAgICAgICBjb25zdCBuZXdEYXRhc2V0ID0ge1xuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgaWQ6IGluZm8/LmlkIHx8IGdlbmVyYXRlSGFzaElkKDQpLFxuICAgICAgICAgICAgLi4uKGluZm8gfHwge30pXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIGFjY3UuZGF0YXNldHMucHVzaChuZXdEYXRhc2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1O1xuICAgIH0sXG4gICAge2RhdGFzZXRzOiBbXSwga2VwbGVyTWFwczogW119XG4gICk7XG5cbiAgLy8gYWRkIGtlcGxlciBtYXAgZmlyc3Qgd2l0aCBjb25maWdcbiAgLy8gYWRkIGRhdGFzZXRzIGxhdGVyIGluIG9uZSBhZGQgZGF0YSBjYWxsXG4gIHJldHVybiBjb2xsZWN0aW9uLmtlcGxlck1hcHMuY29uY2F0KHtkYXRhc2V0czogY29sbGVjdGlvbi5kYXRhc2V0c30pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFvQkEsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsSUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssZ0JBQUEsR0FBQUwsT0FBQTtBQXpCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFRQTs7QUFPQSxNQUFNTSxVQUFVLEdBQUc7RUFDakJDLFFBQVEsRUFBRSxVQUFVO0VBQ3BCQyxjQUFjLEVBQUUsZ0JBQWdCO0VBQ2hDQyxZQUFZLEVBQUU7QUFDaEIsQ0FBQztBQUVELE1BQU1DLGtCQUFrQixHQUFHO0VBQ3pCQyxTQUFTLEVBQUUsSUFBSTtFQUFFO0VBQ2pCQyxTQUFTLEVBQUUsUUFBUTtFQUNuQkMsYUFBYSxFQUFFLEtBQUssQ0FBQztB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
@@ -9,7 +9,7 @@ Object.keys(_dataProcessor).forEach(function (key) {
9
9
  if (key in exports && exports[key] === _dataProcessor[key]) return;
10
10
  Object.defineProperty(exports, key, {
11
11
  enumerable: true,
12
- get: function get() {
12
+ get: function () {
13
13
  return _dataProcessor[key];
14
14
  }
15
15
  });
@@ -20,7 +20,7 @@ Object.keys(_fileHandler).forEach(function (key) {
20
20
  if (key in exports && exports[key] === _fileHandler[key]) return;
21
21
  Object.defineProperty(exports, key, {
22
22
  enumerable: true,
23
- get: function get() {
23
+ get: function () {
24
24
  return _fileHandler[key];
25
25
  }
26
26
  });
@@ -31,9 +31,9 @@ Object.keys(_types).forEach(function (key) {
31
31
  if (key in exports && exports[key] === _types[key]) return;
32
32
  Object.defineProperty(exports, key, {
33
33
  enumerable: true,
34
- get: function get() {
34
+ get: function () {
35
35
  return _types[key];
36
36
  }
37
37
  });
38
38
  });
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0YVByb2Nlc3NvciIsInJlcXVpcmUiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImV4cG9ydHMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJfZmlsZUhhbmRsZXIiLCJfdHlwZXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvY2Vzc29ycy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtcHJvY2Vzc29yJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS1oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQW9CQSxJQUFBQSxjQUFBLEdBQUFDLE9BQUE7QUFBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFILGNBQUEsRUFBQUksT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUMsT0FBQSxJQUFBQSxPQUFBLENBQUFELEdBQUEsTUFBQUwsY0FBQSxDQUFBSyxHQUFBO0VBQUFILE1BQUEsQ0FBQUssY0FBQSxDQUFBRCxPQUFBLEVBQUFELEdBQUE7SUFBQUcsVUFBQTtJQUFBQyxHQUFBLFdBQUFBLElBQUE7TUFBQSxPQUFBVCxjQUFBLENBQUFLLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFULE9BQUE7QUFBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFPLFlBQUEsRUFBQU4sT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUMsT0FBQSxJQUFBQSxPQUFBLENBQUFELEdBQUEsTUFBQUssWUFBQSxDQUFBTCxHQUFBO0VBQUFILE1BQUEsQ0FBQUssY0FBQSxDQUFBRCxPQUFBLEVBQUFELEdBQUE7SUFBQUcsVUFBQTtJQUFBQyxHQUFBLFdBQUFBLElBQUE7TUFBQSxPQUFBQyxZQUFBLENBQUFMLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFWLE9BQUE7QUFBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFRLE1BQUEsRUFBQVAsT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUMsT0FBQSxJQUFBQSxPQUFBLENBQUFELEdBQUEsTUFBQU0sTUFBQSxDQUFBTixHQUFBO0VBQUFILE1BQUEsQ0FBQUssY0FBQSxDQUFBRCxPQUFBLEVBQUFELEdBQUE7SUFBQUcsVUFBQTtJQUFBQyxHQUFBLFdBQUFBLElBQUE7TUFBQSxPQUFBRSxNQUFBLENBQUFOLEdBQUE7SUFBQTtFQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0YVByb2Nlc3NvciIsInJlcXVpcmUiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImV4cG9ydHMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJfZmlsZUhhbmRsZXIiLCJfdHlwZXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvY2Vzc29ycy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtcHJvY2Vzc29yJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS1oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQW9CQSxJQUFBQSxjQUFBLEdBQUFDLE9BQUE7QUFBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFILGNBQUEsRUFBQUksT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUMsT0FBQSxJQUFBQSxPQUFBLENBQUFELEdBQUEsTUFBQUwsY0FBQSxDQUFBSyxHQUFBO0VBQUFILE1BQUEsQ0FBQUssY0FBQSxDQUFBRCxPQUFBLEVBQUFELEdBQUE7SUFBQUcsVUFBQTtJQUFBQyxHQUFBLFdBQUFBLENBQUE7TUFBQSxPQUFBVCxjQUFBLENBQUFLLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFULE9BQUE7QUFBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFPLFlBQUEsRUFBQU4sT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUMsT0FBQSxJQUFBQSxPQUFBLENBQUFELEdBQUEsTUFBQUssWUFBQSxDQUFBTCxHQUFBO0VBQUFILE1BQUEsQ0FBQUssY0FBQSxDQUFBRCxPQUFBLEVBQUFELEdBQUE7SUFBQUcsVUFBQTtJQUFBQyxHQUFBLFdBQUFBLENBQUE7TUFBQSxPQUFBQyxZQUFBLENBQUFMLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFWLE9BQUE7QUFBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFRLE1BQUEsRUFBQVAsT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUMsT0FBQSxJQUFBQSxPQUFBLENBQUFELEdBQUEsTUFBQU0sTUFBQSxDQUFBTixHQUFBO0VBQUFILE1BQUEsQ0FBQUssY0FBQSxDQUFBRCxPQUFBLEVBQUFELEdBQUE7SUFBQUcsVUFBQTtJQUFBQyxHQUFBLFdBQUFBLENBQUE7TUFBQSxPQUFBRSxNQUFBLENBQUFOLEdBQUE7SUFBQTtFQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=