@kepler.gl/components 3.0.0-alpha.0 → 3.0.0-alpha.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 (530) hide show
  1. package/dist/bottom-widget.d.ts +11 -38
  2. package/dist/bottom-widget.js +43 -99
  3. package/dist/common/action-panel.d.ts +2 -2
  4. package/dist/common/action-panel.js +4 -4
  5. package/dist/common/animation-control/animation-control.d.ts +19 -18
  6. package/dist/common/animation-control/animation-control.js +59 -81
  7. package/dist/common/animation-control/animation-controller.d.ts +6 -2
  8. package/dist/common/animation-control/animation-controller.js +50 -36
  9. package/dist/common/animation-control/animation-speed-slider.js +2 -2
  10. package/dist/common/animation-control/animation-window-control.js +1 -1
  11. package/dist/common/animation-control/floating-time-display.d.ts +2 -2
  12. package/dist/common/animation-control/floating-time-display.js +2 -2
  13. package/dist/common/animation-control/play-control.d.ts +2 -2
  14. package/dist/common/animation-control/play-control.js +1 -1
  15. package/dist/common/animation-control/playback-controls.d.ts +7 -7
  16. package/dist/common/animation-control/playback-controls.js +6 -6
  17. package/dist/common/animation-control/reset-control.d.ts +2 -2
  18. package/dist/common/animation-control/reset-control.js +1 -1
  19. package/dist/common/animation-control/speed-control.d.ts +2 -2
  20. package/dist/common/animation-control/speed-control.js +2 -2
  21. package/dist/common/animation-control/window-action-control.d.ts +2 -2
  22. package/dist/common/animation-control/window-action-control.js +1 -1
  23. package/dist/common/checkbox.d.ts +2 -2
  24. package/dist/common/checkbox.js +3 -3
  25. package/dist/common/color-legend.d.ts +3 -3
  26. package/dist/common/color-legend.js +11 -17
  27. package/dist/common/data-table/button.d.ts +1 -1
  28. package/dist/common/data-table/button.js +2 -2
  29. package/dist/common/data-table/canvas.js +2 -2
  30. package/dist/common/data-table/cell-size.js +44 -13
  31. package/dist/common/data-table/display-format.d.ts +25 -0
  32. package/dist/common/data-table/display-format.js +169 -0
  33. package/dist/common/data-table/grid.d.ts +5 -2
  34. package/dist/common/data-table/grid.js +45 -5
  35. package/dist/common/data-table/header-cell.d.ts +4 -1
  36. package/dist/common/data-table/header-cell.js +66 -29
  37. package/dist/common/data-table/index.d.ts +27 -34
  38. package/dist/common/data-table/index.js +148 -62
  39. package/dist/common/data-table/option-dropdown.d.ts +17 -3
  40. package/dist/common/data-table/option-dropdown.js +86 -13
  41. package/dist/common/dataset-label.d.ts +2 -2
  42. package/dist/common/dataset-label.js +3 -3
  43. package/dist/common/error-boundary.d.ts +6 -2
  44. package/dist/common/error-boundary.js +2 -2
  45. package/dist/common/field-selector.d.ts +9 -3
  46. package/dist/common/field-selector.js +3 -3
  47. package/dist/common/field-token.d.ts +8 -0
  48. package/dist/common/field-token.js +7 -3
  49. package/dist/common/file-uploader/file-drop.d.ts +3 -2
  50. package/dist/common/file-uploader/file-drop.js +2 -2
  51. package/dist/common/file-uploader/file-upload-progress.js +2 -2
  52. package/dist/common/file-uploader/file-upload.d.ts +2 -6
  53. package/dist/common/file-uploader/file-upload.js +2 -2
  54. package/dist/common/file-uploader/upload-button.d.ts +1 -0
  55. package/dist/common/file-uploader/upload-button.js +2 -2
  56. package/dist/common/histogram-plot.d.ts +2 -2
  57. package/dist/common/histogram-plot.js +18 -12
  58. package/dist/common/icon-button.d.ts +2 -1
  59. package/dist/common/icon-button.js +2 -2
  60. package/dist/common/icons/add.d.ts +2 -2
  61. package/dist/common/icons/add.js +2 -2
  62. package/dist/common/icons/anchor_window.d.ts +2 -2
  63. package/dist/common/icons/anchor_window.js +2 -2
  64. package/dist/common/icons/arrow-down-alt.d.ts +2 -2
  65. package/dist/common/icons/arrow-down-alt.js +2 -2
  66. package/dist/common/icons/arrow-down-solid.d.ts +2 -2
  67. package/dist/common/icons/arrow-down-solid.js +2 -2
  68. package/dist/common/icons/arrow-down.d.ts +2 -2
  69. package/dist/common/icons/arrow-down.js +2 -2
  70. package/dist/common/icons/arrow-left.d.ts +2 -2
  71. package/dist/common/icons/arrow-left.js +2 -2
  72. package/dist/common/icons/arrow-right.d.ts +2 -2
  73. package/dist/common/icons/arrow-right.js +2 -2
  74. package/dist/common/icons/arrow-up-alt.d.ts +2 -2
  75. package/dist/common/icons/arrow-up-alt.js +2 -2
  76. package/dist/common/icons/arrow-up-solid.d.ts +2 -2
  77. package/dist/common/icons/arrow-up-solid.js +2 -2
  78. package/dist/common/icons/arrow-up.d.ts +2 -2
  79. package/dist/common/icons/arrow-up.js +2 -2
  80. package/dist/common/icons/base.d.ts +1 -1
  81. package/dist/common/icons/base.js +2 -2
  82. package/dist/common/icons/bug.d.ts +2 -2
  83. package/dist/common/icons/bug.js +2 -2
  84. package/dist/common/icons/cancel.d.ts +2 -2
  85. package/dist/common/icons/cancel.js +2 -2
  86. package/dist/common/icons/checkmark.d.ts +2 -2
  87. package/dist/common/icons/checkmark.js +2 -2
  88. package/dist/common/icons/clipboard.d.ts +2 -2
  89. package/dist/common/icons/clipboard.js +2 -2
  90. package/dist/common/icons/clock.d.ts +2 -2
  91. package/dist/common/icons/clock.js +2 -2
  92. package/dist/common/icons/close.d.ts +2 -2
  93. package/dist/common/icons/close.js +2 -2
  94. package/dist/common/icons/code-alt.d.ts +2 -2
  95. package/dist/common/icons/code-alt.js +2 -2
  96. package/dist/common/icons/copy.d.ts +2 -2
  97. package/dist/common/icons/copy.js +2 -2
  98. package/dist/common/icons/crosshairs.d.ts +2 -2
  99. package/dist/common/icons/crosshairs.js +2 -2
  100. package/dist/common/icons/cube-3d.d.ts +2 -2
  101. package/dist/common/icons/cube-3d.js +2 -2
  102. package/dist/common/icons/cursor-click.d.ts +2 -2
  103. package/dist/common/icons/cursor-click.js +2 -2
  104. package/dist/common/icons/cursor-point.d.ts +14 -0
  105. package/dist/common/icons/cursor-point.js +89 -0
  106. package/dist/common/icons/data-table.d.ts +2 -2
  107. package/dist/common/icons/data-table.js +2 -2
  108. package/dist/common/icons/db.d.ts +2 -2
  109. package/dist/common/icons/db.js +2 -2
  110. package/dist/common/icons/delete.d.ts +2 -2
  111. package/dist/common/icons/delete.js +2 -2
  112. package/dist/common/icons/docs.d.ts +2 -2
  113. package/dist/common/icons/docs.js +2 -2
  114. package/dist/common/icons/drag-n-drop.d.ts +2 -2
  115. package/dist/common/icons/drag-n-drop.js +2 -2
  116. package/dist/common/icons/draw-polygon.d.ts +2 -2
  117. package/dist/common/icons/draw-polygon.js +2 -2
  118. package/dist/common/icons/email.d.ts +2 -2
  119. package/dist/common/icons/email.js +2 -2
  120. package/dist/common/icons/expand.d.ts +2 -2
  121. package/dist/common/icons/expand.js +2 -2
  122. package/dist/common/icons/eye-seen.d.ts +2 -2
  123. package/dist/common/icons/eye-seen.js +2 -2
  124. package/dist/common/icons/eye-unseen.d.ts +2 -2
  125. package/dist/common/icons/eye-unseen.js +2 -2
  126. package/dist/common/icons/file-type.d.ts +2 -2
  127. package/dist/common/icons/file-type.js +2 -2
  128. package/dist/common/icons/file.d.ts +2 -2
  129. package/dist/common/icons/file.js +2 -2
  130. package/dist/common/icons/files.d.ts +1 -1
  131. package/dist/common/icons/files.js +2 -2
  132. package/dist/common/icons/filter-funnel.d.ts +2 -2
  133. package/dist/common/icons/filter-funnel.js +2 -2
  134. package/dist/common/icons/free-window.d.ts +2 -2
  135. package/dist/common/icons/free-window.js +2 -2
  136. package/dist/common/icons/gear.d.ts +2 -2
  137. package/dist/common/icons/gear.js +2 -2
  138. package/dist/common/icons/hash.d.ts +2 -2
  139. package/dist/common/icons/hash.js +2 -2
  140. package/dist/common/icons/histogram.d.ts +1 -1
  141. package/dist/common/icons/histogram.js +2 -2
  142. package/dist/common/icons/index.d.ts +1 -0
  143. package/dist/common/icons/index.js +10 -2
  144. package/dist/common/icons/info.d.ts +2 -2
  145. package/dist/common/icons/info.js +2 -2
  146. package/dist/common/icons/layers.d.ts +2 -2
  147. package/dist/common/icons/layers.js +2 -2
  148. package/dist/common/icons/left-arrow.d.ts +2 -2
  149. package/dist/common/icons/left-arrow.js +2 -2
  150. package/dist/common/icons/legend.d.ts +2 -2
  151. package/dist/common/icons/legend.js +2 -2
  152. package/dist/common/icons/line-chart.d.ts +2 -2
  153. package/dist/common/icons/line-chart.js +2 -2
  154. package/dist/common/icons/login.d.ts +2 -2
  155. package/dist/common/icons/login.js +2 -2
  156. package/dist/common/icons/logout.d.ts +2 -2
  157. package/dist/common/icons/logout.js +2 -2
  158. package/dist/common/icons/map-icon.d.ts +2 -2
  159. package/dist/common/icons/map-icon.js +2 -2
  160. package/dist/common/icons/map.d.ts +2 -2
  161. package/dist/common/icons/map.js +2 -2
  162. package/dist/common/icons/messages.d.ts +2 -2
  163. package/dist/common/icons/messages.js +2 -2
  164. package/dist/common/icons/minus.d.ts +2 -2
  165. package/dist/common/icons/minus.js +2 -2
  166. package/dist/common/icons/order-by-dataset.d.ts +2 -2
  167. package/dist/common/icons/order-by-dataset.js +2 -2
  168. package/dist/common/icons/order-by-list.d.ts +2 -2
  169. package/dist/common/icons/order-by-list.js +2 -2
  170. package/dist/common/icons/pause.d.ts +2 -2
  171. package/dist/common/icons/pause.js +2 -2
  172. package/dist/common/icons/picture.d.ts +1 -1
  173. package/dist/common/icons/picture.js +2 -2
  174. package/dist/common/icons/pin.d.ts +2 -2
  175. package/dist/common/icons/pin.js +2 -2
  176. package/dist/common/icons/play.d.ts +2 -2
  177. package/dist/common/icons/play.js +2 -2
  178. package/dist/common/icons/polygon.d.ts +2 -2
  179. package/dist/common/icons/polygon.js +2 -2
  180. package/dist/common/icons/rectangle.d.ts +2 -2
  181. package/dist/common/icons/rectangle.js +2 -2
  182. package/dist/common/icons/reduce.d.ts +2 -2
  183. package/dist/common/icons/reduce.js +2 -2
  184. package/dist/common/icons/reset.d.ts +2 -2
  185. package/dist/common/icons/reset.js +2 -2
  186. package/dist/common/icons/rocket.d.ts +2 -2
  187. package/dist/common/icons/rocket.js +2 -2
  188. package/dist/common/icons/save.d.ts +2 -2
  189. package/dist/common/icons/save.js +2 -2
  190. package/dist/common/icons/save2.d.ts +2 -2
  191. package/dist/common/icons/save2.js +2 -2
  192. package/dist/common/icons/search.d.ts +2 -2
  193. package/dist/common/icons/search.js +2 -2
  194. package/dist/common/icons/settings.d.ts +2 -2
  195. package/dist/common/icons/settings.js +2 -2
  196. package/dist/common/icons/share.d.ts +2 -2
  197. package/dist/common/icons/share.js +2 -2
  198. package/dist/common/icons/split.d.ts +2 -2
  199. package/dist/common/icons/split.js +2 -2
  200. package/dist/common/icons/square-select.d.ts +2 -2
  201. package/dist/common/icons/square-select.js +2 -2
  202. package/dist/common/icons/trash.d.ts +2 -2
  203. package/dist/common/icons/trash.js +2 -2
  204. package/dist/common/icons/vert-dots.d.ts +2 -2
  205. package/dist/common/icons/vert-dots.js +2 -2
  206. package/dist/common/icons/vert-three-dots.d.ts +2 -2
  207. package/dist/common/icons/vert-three-dots.js +2 -2
  208. package/dist/common/icons/warning-sign.d.ts +2 -2
  209. package/dist/common/icons/warning-sign.js +2 -2
  210. package/dist/common/icons/warning.d.ts +2 -2
  211. package/dist/common/icons/warning.js +2 -2
  212. package/dist/common/image-preview.d.ts +2 -2
  213. package/dist/common/image-preview.js +2 -2
  214. package/dist/common/index.d.ts +1 -1
  215. package/dist/common/index.js +8 -2
  216. package/dist/common/info-helper.d.ts +2 -2
  217. package/dist/common/info-helper.js +2 -2
  218. package/dist/common/item-selector/accessor.js +2 -2
  219. package/dist/common/item-selector/chickleted-input.js +2 -2
  220. package/dist/common/item-selector/dropdown-list.d.ts +28 -8
  221. package/dist/common/item-selector/dropdown-list.js +144 -25
  222. package/dist/common/item-selector/item-selector.d.ts +2 -3
  223. package/dist/common/item-selector/item-selector.js +7 -3
  224. package/dist/common/item-selector/typeahead.d.ts +16 -12
  225. package/dist/common/item-selector/typeahead.js +24 -13
  226. package/dist/common/line-chart.d.ts +2 -2
  227. package/dist/common/line-chart.js +2 -2
  228. package/dist/common/loading-spinner.js +2 -2
  229. package/dist/common/logo.d.ts +2 -2
  230. package/dist/common/logo.js +2 -2
  231. package/dist/common/map-layer-selector.d.ts +2 -2
  232. package/dist/common/map-layer-selector.js +3 -4
  233. package/dist/common/modal.d.ts +24 -11
  234. package/dist/common/modal.js +2 -2
  235. package/dist/common/portaled.d.ts +513 -2
  236. package/dist/common/portaled.js +2 -2
  237. package/dist/common/progress-bar.d.ts +2 -2
  238. package/dist/common/progress-bar.js +2 -2
  239. package/dist/common/range-brush.js +2 -2
  240. package/dist/common/range-plot.d.ts +6 -2
  241. package/dist/common/range-plot.js +4 -3
  242. package/dist/common/range-slider.d.ts +5 -1
  243. package/dist/common/range-slider.js +9 -3
  244. package/dist/common/slider/mouse-event.js +2 -2
  245. package/dist/common/slider/slider-bar-handle.d.ts +2 -2
  246. package/dist/common/slider/slider-bar-handle.js +2 -2
  247. package/dist/common/slider/slider-handle.d.ts +1 -1
  248. package/dist/common/slider/slider-handle.js +2 -2
  249. package/dist/common/slider/slider.d.ts +7 -5
  250. package/dist/common/slider/slider.js +8 -5
  251. package/dist/common/styled-components.d.ts +5 -0
  252. package/dist/common/styled-components.js +161 -47
  253. package/dist/common/switch.d.ts +3 -2
  254. package/dist/common/switch.js +2 -2
  255. package/dist/common/time-range-slider-time-title.d.ts +2 -2
  256. package/dist/common/time-range-slider-time-title.js +2 -2
  257. package/dist/common/time-range-slider.d.ts +6 -3
  258. package/dist/common/time-range-slider.js +33 -14
  259. package/dist/common/time-slider-marker.d.ts +1 -1
  260. package/dist/common/time-slider-marker.js +3 -3
  261. package/dist/common/timeline-slider.d.ts +13 -0
  262. package/dist/common/timeline-slider.js +173 -0
  263. package/dist/common/tippy-tooltip.d.ts +4 -2
  264. package/dist/common/tippy-tooltip.js +23 -11
  265. package/dist/common/toolbar-item.d.ts +1 -1
  266. package/dist/common/toolbar-item.js +6 -4
  267. package/dist/common/toolbar.js +2 -2
  268. package/dist/common/vertical-toolbar.js +2 -2
  269. package/dist/connect/keplergl-connect.d.ts +5 -1
  270. package/dist/connect/keplergl-connect.js +2 -2
  271. package/dist/connect/with-local-selector.js +2 -2
  272. package/dist/container.js +2 -2
  273. package/dist/context.js +4 -3
  274. package/dist/dnd-context.d.ts +13 -0
  275. package/dist/dnd-context.js +252 -0
  276. package/dist/editor/editor.d.ts +11 -10
  277. package/dist/editor/editor.js +97 -103
  278. package/dist/editor/feature-action-panel.d.ts +8 -6
  279. package/dist/editor/feature-action-panel.js +75 -22
  280. package/dist/effects/effect-configurator.d.ts +18 -0
  281. package/dist/effects/effect-configurator.js +237 -0
  282. package/dist/effects/effect-list.d.ts +15 -0
  283. package/dist/effects/effect-list.js +173 -0
  284. package/dist/effects/effect-manager.d.ts +21 -0
  285. package/dist/effects/effect-manager.js +129 -0
  286. package/dist/effects/effect-panel-header.d.ts +33 -0
  287. package/dist/effects/effect-panel-header.js +174 -0
  288. package/dist/effects/effect-panel.d.ts +24 -0
  289. package/dist/effects/effect-panel.js +162 -0
  290. package/dist/effects/effect-time-configurator.d.ts +13 -0
  291. package/dist/effects/effect-time-configurator.js +191 -0
  292. package/dist/effects/effect-type-selector.d.ts +11 -0
  293. package/dist/effects/effect-type-selector.js +117 -0
  294. package/dist/effects/side-panel-title.d.ts +7 -0
  295. package/dist/effects/side-panel-title.js +67 -0
  296. package/dist/filter-animation-controller.d.ts +17 -0
  297. package/dist/filter-animation-controller.js +91 -0
  298. package/dist/filters/components.js +2 -2
  299. package/dist/filters/filter-panels/filter-panel-with-field-select.js +3 -3
  300. package/dist/filters/filter-panels/multi-select-filter-panel.js +3 -3
  301. package/dist/filters/filter-panels/new-filter-panel.js +2 -2
  302. package/dist/filters/filter-panels/polygon-filter-panel.js +3 -3
  303. package/dist/filters/filter-panels/range-filter-panel.js +3 -3
  304. package/dist/filters/filter-panels/single-select-filter-panel.js +3 -3
  305. package/dist/filters/filter-panels/time-range-filter-panel.js +25 -8
  306. package/dist/filters/filter-panels/types.d.ts +2 -1
  307. package/dist/filters/filter-panels/types.js +1 -1
  308. package/dist/filters/index.d.ts +2 -0
  309. package/dist/filters/index.js +18 -2
  310. package/dist/filters/multi-select-filter.js +2 -2
  311. package/dist/filters/polygon-filter.js +14 -4
  312. package/dist/filters/range-filter.js +6 -4
  313. package/dist/filters/single-select-filter.js +2 -2
  314. package/dist/filters/time-range-filter.d.ts +2 -1
  315. package/dist/filters/time-range-filter.js +10 -7
  316. package/dist/filters/time-widget-top.d.ts +8 -0
  317. package/dist/filters/time-widget-top.js +123 -0
  318. package/dist/filters/time-widget.d.ts +3 -7
  319. package/dist/filters/time-widget.js +35 -92
  320. package/dist/filters/types.d.ts +7 -3
  321. package/dist/filters/types.js +1 -1
  322. package/dist/geocoder/geocoder.d.ts +1 -3
  323. package/dist/geocoder/geocoder.js +2 -2
  324. package/dist/geocoder-panel.d.ts +9 -3
  325. package/dist/geocoder-panel.js +30 -19
  326. package/dist/hooks/useFeatureFlags.js +1 -1
  327. package/dist/index.d.ts +68 -20
  328. package/dist/index.js +599 -99
  329. package/dist/injector.d.ts +4 -4
  330. package/dist/injector.js +2 -2
  331. package/dist/kepler-gl.d.ts +58 -17
  332. package/dist/kepler-gl.js +78 -31
  333. package/dist/layer-animation-controller.d.ts +13 -0
  334. package/dist/layer-animation-controller.js +76 -0
  335. package/dist/map/coordinate-info.js +2 -2
  336. package/dist/map/effects/effect-control.d.ts +16 -0
  337. package/dist/map/effects/effect-control.js +81 -0
  338. package/dist/map/layer-hover-info.d.ts +2 -2
  339. package/dist/map/layer-hover-info.js +26 -10
  340. package/dist/map/layer-selector-panel.js +2 -2
  341. package/dist/map/lazy-tippy.js +1 -1
  342. package/dist/map/locale-panel.d.ts +1 -1
  343. package/dist/map/locale-panel.js +2 -2
  344. package/dist/map/map-control-panel.d.ts +6 -0
  345. package/dist/map/map-control-panel.js +65 -9
  346. package/dist/map/map-control-toolbar.js +3 -3
  347. package/dist/map/map-control-tooltip.js +2 -2
  348. package/dist/map/map-control.d.ts +15 -7
  349. package/dist/map/map-control.js +6 -7
  350. package/dist/map/map-draw-panel.d.ts +2 -2
  351. package/dist/map/map-draw-panel.js +2 -9
  352. package/dist/map/map-legend-panel.d.ts +12 -1
  353. package/dist/map/map-legend-panel.js +27 -14
  354. package/dist/map/map-legend.d.ts +1 -1
  355. package/dist/map/map-legend.js +2 -2
  356. package/dist/map/map-popover-content.d.ts +28 -0
  357. package/dist/map/map-popover-content.js +51 -0
  358. package/dist/map/map-popover.d.ts +11 -14
  359. package/dist/map/map-popover.js +94 -15
  360. package/dist/map/split-map-button.js +2 -2
  361. package/dist/map/toggle-3d-button.js +2 -2
  362. package/dist/map-container.d.ts +33 -9
  363. package/dist/map-container.js +530 -161
  364. package/dist/map-view-state-context.d.ts +12 -0
  365. package/dist/map-view-state-context.js +116 -0
  366. package/dist/maps-layout.d.ts +5 -2
  367. package/dist/maps-layout.js +7 -3
  368. package/dist/modal-container.d.ts +2 -6
  369. package/dist/modal-container.js +8 -6
  370. package/dist/modals/add-map-style-modal.d.ts +1 -3
  371. package/dist/modals/add-map-style-modal.js +12 -6
  372. package/dist/modals/cloud-tile.js +2 -2
  373. package/dist/modals/data-table-modal.d.ts +11 -2
  374. package/dist/modals/data-table-modal.js +75 -24
  375. package/dist/modals/delete-data-modal.js +2 -2
  376. package/dist/modals/error-display.js +2 -2
  377. package/dist/modals/export-data-modal.d.ts +1 -3
  378. package/dist/modals/export-data-modal.js +2 -2
  379. package/dist/modals/export-image-modal.d.ts +1 -3
  380. package/dist/modals/export-image-modal.js +2 -2
  381. package/dist/modals/export-map-modal/components.d.ts +2 -2
  382. package/dist/modals/export-map-modal/components.js +2 -2
  383. package/dist/modals/export-map-modal/export-html-map.js +2 -2
  384. package/dist/modals/export-map-modal/export-json-map.d.ts +1 -1
  385. package/dist/modals/export-map-modal/export-json-map.js +2 -2
  386. package/dist/modals/export-map-modal/export-map-modal.d.ts +2 -2
  387. package/dist/modals/export-map-modal/export-map-modal.js +2 -2
  388. package/dist/modals/image-modal-container.d.ts +1 -0
  389. package/dist/modals/image-modal-container.js +2 -2
  390. package/dist/modals/load-data-modal.js +2 -2
  391. package/dist/modals/load-storage-map.js +2 -2
  392. package/dist/modals/loading-dialog.js +2 -2
  393. package/dist/modals/modal-dialog.js +2 -2
  394. package/dist/modals/modal-tabs.d.ts +1 -1
  395. package/dist/modals/modal-tabs.js +2 -2
  396. package/dist/modals/overwrite-map-modal.js +2 -2
  397. package/dist/modals/provider-modal-container.d.ts +3 -2
  398. package/dist/modals/provider-modal-container.js +2 -2
  399. package/dist/modals/save-map-modal.js +2 -2
  400. package/dist/modals/share-map-modal.js +2 -2
  401. package/dist/modals/status-panel.js +2 -2
  402. package/dist/modals/storage-map-viewer.d.ts +1 -1
  403. package/dist/modals/storage-map-viewer.js +2 -2
  404. package/dist/notification-panel/notification-item.d.ts +7 -10
  405. package/dist/notification-panel/notification-item.js +45 -13
  406. package/dist/notification-panel.js +2 -2
  407. package/dist/plot-container.js +20 -8
  408. package/dist/side-panel/add-by-dataset-button.d.ts +12 -0
  409. package/dist/side-panel/add-by-dataset-button.js +173 -0
  410. package/dist/side-panel/cloud-storage-dropdown.d.ts +2 -2
  411. package/dist/side-panel/cloud-storage-dropdown.js +2 -2
  412. package/dist/side-panel/common/dataset-info.d.ts +10 -3
  413. package/dist/side-panel/common/dataset-info.js +2 -2
  414. package/dist/side-panel/common/dataset-tag.d.ts +15 -1
  415. package/dist/side-panel/common/dataset-tag.js +14 -11
  416. package/dist/side-panel/common/dataset-title.d.ts +16 -2
  417. package/dist/side-panel/common/dataset-title.js +71 -105
  418. package/dist/side-panel/common/source-data-catalog.d.ts +22 -3
  419. package/dist/side-panel/common/source-data-catalog.js +2 -2
  420. package/dist/side-panel/common/source-data-selector.js +2 -2
  421. package/dist/side-panel/common/types.d.ts +7 -27
  422. package/dist/side-panel/common/types.js +1 -1
  423. package/dist/side-panel/custom-panel.d.ts +6 -7
  424. package/dist/side-panel/custom-panel.js +2 -2
  425. package/dist/side-panel/filter-manager.d.ts +18 -6
  426. package/dist/side-panel/filter-manager.js +176 -65
  427. package/dist/side-panel/filter-panel/add-filter-button.d.ts +8 -0
  428. package/dist/side-panel/filter-panel/add-filter-button.js +50 -0
  429. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +6 -3
  430. package/dist/side-panel/filter-panel/filter-panel-header.js +4 -4
  431. package/dist/side-panel/filter-panel/filter-panel.js +2 -2
  432. package/dist/side-panel/interaction-manager.d.ts +6 -3
  433. package/dist/side-panel/interaction-manager.js +21 -8
  434. package/dist/side-panel/interaction-panel/brush-config.d.ts +2 -2
  435. package/dist/side-panel/interaction-panel/brush-config.js +2 -2
  436. package/dist/side-panel/interaction-panel/interaction-panel.d.ts +5 -2
  437. package/dist/side-panel/interaction-panel/interaction-panel.js +12 -5
  438. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +3 -9
  439. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +25 -42
  440. package/dist/side-panel/interaction-panel/tooltip-config.d.ts +2 -3
  441. package/dist/side-panel/interaction-panel/tooltip-config.js +9 -7
  442. package/dist/side-panel/layer-manager.d.ts +8 -10
  443. package/dist/side-panel/layer-manager.js +71 -37
  444. package/dist/side-panel/layer-panel/add-layer-button.d.ts +3 -5
  445. package/dist/side-panel/layer-panel/add-layer-button.js +13 -139
  446. package/dist/side-panel/layer-panel/color-palette.js +2 -2
  447. package/dist/side-panel/layer-panel/color-range-selector.d.ts +1 -1
  448. package/dist/side-panel/layer-panel/color-range-selector.js +2 -2
  449. package/dist/side-panel/layer-panel/color-selector.d.ts +15 -24
  450. package/dist/side-panel/layer-panel/color-selector.js +175 -127
  451. package/dist/side-panel/layer-panel/column-selector.js +2 -2
  452. package/dist/side-panel/layer-panel/custom-palette.d.ts +7 -2
  453. package/dist/side-panel/layer-panel/custom-palette.js +6 -5
  454. package/dist/side-panel/layer-panel/custom-picker.d.ts +9 -36
  455. package/dist/side-panel/layer-panel/custom-picker.js +2 -2
  456. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +1 -1
  457. package/dist/side-panel/layer-panel/dataset-layer-group.js +3 -2
  458. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +3 -2
  459. package/dist/side-panel/layer-panel/dataset-layer-section.js +5 -4
  460. package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -3
  461. package/dist/side-panel/layer-panel/dataset-section.js +6 -7
  462. package/dist/side-panel/layer-panel/dimension-scale-selector.js +2 -2
  463. package/dist/side-panel/layer-panel/how-to-button.js +2 -2
  464. package/dist/side-panel/layer-panel/layer-color-selector.d.ts +42 -0
  465. package/dist/side-panel/layer-panel/layer-color-selector.js +134 -0
  466. package/dist/side-panel/layer-panel/layer-column-config.d.ts +15 -9
  467. package/dist/side-panel/layer-panel/layer-column-config.js +35 -13
  468. package/dist/side-panel/layer-panel/layer-config-group.d.ts +11 -2
  469. package/dist/side-panel/layer-panel/layer-config-group.js +19 -11
  470. package/dist/side-panel/layer-panel/layer-configurator.d.ts +10 -35
  471. package/dist/side-panel/layer-panel/layer-configurator.js +61 -110
  472. package/dist/side-panel/layer-panel/layer-error-message.d.ts +6 -0
  473. package/dist/side-panel/layer-panel/layer-error-message.js +58 -0
  474. package/dist/side-panel/layer-panel/layer-list.d.ts +4 -3
  475. package/dist/side-panel/layer-panel/layer-list.js +112 -89
  476. package/dist/side-panel/layer-panel/layer-panel-header.d.ts +22 -10
  477. package/dist/side-panel/layer-panel/layer-panel-header.js +106 -67
  478. package/dist/side-panel/layer-panel/layer-panel.d.ts +3 -1
  479. package/dist/side-panel/layer-panel/layer-panel.js +24 -11
  480. package/dist/side-panel/layer-panel/layer-type-dropdown-list.js +2 -2
  481. package/dist/side-panel/layer-panel/layer-type-list-item.d.ts +12 -3
  482. package/dist/side-panel/layer-panel/layer-type-list-item.js +12 -4
  483. package/dist/side-panel/layer-panel/layer-type-selector.d.ts +2 -1
  484. package/dist/side-panel/layer-panel/layer-type-selector.js +5 -3
  485. package/dist/side-panel/layer-panel/single-color-palette.d.ts +1 -1
  486. package/dist/side-panel/layer-panel/single-color-palette.js +2 -2
  487. package/dist/side-panel/layer-panel/text-label-panel.d.ts +4 -2
  488. package/dist/side-panel/layer-panel/text-label-panel.js +62 -15
  489. package/dist/side-panel/layer-panel/vis-config-by-field-selector.d.ts +1 -3
  490. package/dist/side-panel/layer-panel/vis-config-by-field-selector.js +2 -2
  491. package/dist/side-panel/layer-panel/vis-config-slider.js +2 -2
  492. package/dist/side-panel/layer-panel/vis-config-switch.js +2 -2
  493. package/dist/side-panel/map-manager.d.ts +13 -6
  494. package/dist/side-panel/map-manager.js +56 -45
  495. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.d.ts +14 -0
  496. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.js +116 -0
  497. package/dist/side-panel/map-style-panel/map-layer-group-item.d.ts +29 -0
  498. package/dist/side-panel/map-style-panel/map-layer-group-item.js +131 -0
  499. package/dist/side-panel/map-style-panel/map-layer-selector.d.ts +16 -12
  500. package/dist/side-panel/map-style-panel/map-layer-selector.js +34 -51
  501. package/dist/side-panel/map-style-panel/map-style-selector.d.ts +11 -4
  502. package/dist/side-panel/map-style-panel/map-style-selector.js +54 -20
  503. package/dist/side-panel/panel-dropdown.d.ts +3 -2
  504. package/dist/side-panel/panel-dropdown.js +2 -2
  505. package/dist/side-panel/panel-header-action.d.ts +4 -2
  506. package/dist/side-panel/panel-header-action.js +11 -4
  507. package/dist/side-panel/panel-header.d.ts +13 -8
  508. package/dist/side-panel/panel-header.js +2 -2
  509. package/dist/side-panel/panel-tab.d.ts +2 -2
  510. package/dist/side-panel/panel-tab.js +2 -2
  511. package/dist/side-panel/panel-title.d.ts +6 -3
  512. package/dist/side-panel/panel-title.js +31 -14
  513. package/dist/side-panel/panel-toggle.d.ts +1 -1
  514. package/dist/side-panel/panel-toggle.js +2 -2
  515. package/dist/side-panel/{layer-panel/panel-view-list-toggle.d.ts → panel-view-list-toggle.d.ts} +19 -8
  516. package/dist/side-panel/panel-view-list-toggle.js +143 -0
  517. package/dist/side-panel/side-bar.d.ts +15 -16
  518. package/dist/side-panel/side-bar.js +8 -6
  519. package/dist/side-panel.d.ts +2 -117
  520. package/dist/side-panel.js +14 -20
  521. package/dist/types.d.ts +16 -9
  522. package/dist/types.js +1 -1
  523. package/package.json +41 -34
  524. package/dist/editor/constants.d.ts +0 -17
  525. package/dist/editor/constants.js +0 -47
  526. package/dist/editor/feature-styles.d.ts +0 -37
  527. package/dist/editor/feature-styles.js +0 -92
  528. package/dist/editor/handle-style.d.ts +0 -42
  529. package/dist/editor/handle-style.js +0 -100
  530. package/dist/side-panel/layer-panel/panel-view-list-toggle.js +0 -143
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2022 Uber Technologies, Inc.
1
+ // Copyright (c) 2023 Uber Technologies, Inc.
2
2
  //
3
3
  // Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  // of this software and associated documentation files (the "Software"), to deal
@@ -29,10 +29,14 @@ Object.defineProperty(exports, "__esModule", {
29
29
  });
30
30
  exports["default"] = exports.ListItem = exports.classList = void 0;
31
31
 
32
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
33
+
32
34
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
33
35
 
34
36
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
35
37
 
38
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
39
+
36
40
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
37
41
 
38
42
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
@@ -49,18 +53,22 @@ var _classnames = _interopRequireDefault(require("classnames"));
49
53
 
50
54
  var _styledComponents = _interopRequireDefault(require("styled-components"));
51
55
 
52
- var _templateObject;
56
+ var _constants = require("@kepler.gl/constants");
57
+
58
+ var _templateObject, _templateObject2;
53
59
 
54
60
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
55
61
 
56
62
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
57
63
 
64
+ var LEFT_BUTTON = 0;
58
65
  var classList = {
59
66
  list: 'list-selector',
60
67
  listHeader: 'list__header',
61
68
  listSection: 'list__section',
62
69
  listItem: 'list__item',
63
- listItemAnchor: 'list__item__anchor'
70
+ listItemAnchor: 'list__item__anchor',
71
+ listItemFixed: 'list__item__fixed'
64
72
  };
65
73
  exports.classList = classList;
66
74
 
@@ -72,10 +80,15 @@ var ListItem = function ListItem(_ref) {
72
80
  var value = _ref.value,
73
81
  _ref$displayOption = _ref.displayOption,
74
82
  displayOption = _ref$displayOption === void 0 ? defaultDisplay : _ref$displayOption,
83
+ disabled = _ref.disabled,
75
84
  light = _ref.light;
85
+ var displayValue = displayOption(value);
76
86
  return /*#__PURE__*/_react["default"].createElement("span", {
77
- className: classList.listItemAnchor
78
- }, displayOption(value));
87
+ title: displayValue,
88
+ className: (0, _classnames["default"])(classList.listItemAnchor, {
89
+ disabled: disabled
90
+ })
91
+ }, displayValue);
79
92
  };
80
93
 
81
94
  exports.ListItem = ListItem;
@@ -88,30 +101,135 @@ var DropdownListWrapper = _styledComponents["default"].div(_templateObject || (_
88
101
  return props.light ? props.theme.dropdownListLT : props.theme.dropdownList;
89
102
  });
90
103
 
104
+ var DropdownFooterWrapper = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n height: '0px';\n"])));
105
+
91
106
  var DropdownList = /*#__PURE__*/function (_Component) {
92
107
  (0, _inherits2["default"])(DropdownList, _Component);
93
108
 
94
109
  var _super = _createSuper(DropdownList);
95
110
 
96
- function DropdownList() {
111
+ function DropdownList(props) {
112
+ var _this;
113
+
97
114
  (0, _classCallCheck2["default"])(this, DropdownList);
98
- return _super.apply(this, arguments);
115
+ _this = _super.call(this, props);
116
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "initNumberOfOptions", void 0);
117
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "page", void 0);
118
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "prevY", void 0);
119
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "loadingRef", void 0);
120
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "observer", void 0);
121
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleObserver", function (entities) {
122
+ var y = entities[0].boundingClientRect.y;
123
+
124
+ if (_this.prevY > y) {
125
+ var options = _this._getOptions(_this.page);
126
+
127
+ if (options) _this.setState({
128
+ options: options
129
+ });
130
+ }
131
+
132
+ _this.prevY = y;
133
+ });
134
+ _this.state = {
135
+ options: []
136
+ };
137
+ _this.initNumberOfOptions = _constants.INIT_FILTER_ITEMS_IN_DROPDOWN;
138
+ _this.page = 0;
139
+ _this.prevY = 0;
140
+ _this.loadingRef = /*#__PURE__*/_react["default"].createRef();
141
+ return _this;
99
142
  }
100
143
 
101
144
  (0, _createClass2["default"])(DropdownList, [{
145
+ key: "componentDidMount",
146
+ value: function componentDidMount() {
147
+ var options = this._getOptions(this.page);
148
+
149
+ this.setState({
150
+ options: options
151
+ });
152
+ var divOptions = {
153
+ root: null,
154
+ rootMargin: '0%',
155
+ threshold: 1.0
156
+ };
157
+
158
+ if (this.loadingRef.current) {
159
+ this.observer = new IntersectionObserver(this.handleObserver, divOptions);
160
+ this.observer.observe(this.loadingRef.current);
161
+ }
162
+ }
163
+ }, {
164
+ key: "getSnapshotBeforeUpdate",
165
+ value: function getSnapshotBeforeUpdate(prevProps, prevState) {
166
+ if (prevProps.options !== this.props.options) {
167
+ // check if user searching, reset state.options at the first time
168
+ var options = this._getOptions(0);
169
+
170
+ this.setState({
171
+ options: options
172
+ });
173
+ }
174
+
175
+ return null;
176
+ } // prevent console warning: getSnapshotBeforeUpdate() should be used with componentDidUpdate().
177
+
178
+ }, {
179
+ key: "componentDidUpdate",
180
+ value: function componentDidUpdate(prevProps, prevState, snapshot) {}
181
+ }, {
182
+ key: "componentWillUnmount",
183
+ value: function componentWillUnmount() {
184
+ if (this.loadingRef.current) {
185
+ var _this$observer;
186
+
187
+ (_this$observer = this.observer) === null || _this$observer === void 0 ? void 0 : _this$observer.unobserve(this.loadingRef.current);
188
+ }
189
+ }
190
+ }, {
191
+ key: "_getOptions",
192
+ value: function _getOptions(page) {
193
+ if (!this.props.options) {
194
+ return [];
195
+ }
196
+
197
+ var n = this.props.options.length;
198
+
199
+ if (n === 0) {
200
+ return [];
201
+ }
202
+
203
+ var start = page * this.initNumberOfOptions;
204
+ var end = start + this.initNumberOfOptions > n ? n : start + this.initNumberOfOptions;
205
+
206
+ if (start < end && end <= n) {
207
+ this.page = page + 1; // in case of user searching, props.options will be updated
208
+ // so "page" value will be set to 0 and previous state.options will be discarded
209
+
210
+ return [].concat((0, _toConsumableArray2["default"])(page > 0 ? this.state.options || [] : []), (0, _toConsumableArray2["default"])(this.props.options.slice(start, end)));
211
+ }
212
+
213
+ return null;
214
+ }
215
+ }, {
102
216
  key: "_onClick",
103
217
  value: function _onClick(result, event) {
104
- var _this$props$onOptionS, _this$props;
218
+ event.preventDefault(); // only work when left is clicked
105
219
 
106
- event.preventDefault();
107
- (_this$props$onOptionS = (_this$props = this.props).onOptionSelected) === null || _this$props$onOptionS === void 0 ? void 0 : _this$props$onOptionS.call(_this$props, result, event);
220
+ if (event.type === 'mousedown' && event.button === LEFT_BUTTON || event.type === 'click') {
221
+ var _this$props$onOptionS, _this$props;
222
+
223
+ (_this$props$onOptionS = (_this$props = this.props).onOptionSelected) === null || _this$props$onOptionS === void 0 ? void 0 : _this$props$onOptionS.call(_this$props, result, event);
224
+ }
108
225
  }
109
226
  }, {
110
227
  key: "render",
111
228
  value: function render() {
112
229
  var _this$props$options,
113
- _this = this,
114
- _this$props$options2;
230
+ _this$props$customCla,
231
+ _this2 = this,
232
+ _this$state$options;
115
233
 
116
234
  var _this$props2 = this.props,
117
235
  fixedOptions = _this$props2.fixedOptions,
@@ -124,7 +242,7 @@ var DropdownList = /*#__PURE__*/function (_Component) {
124
242
  display = _this$props$displayOp === void 0 ? defaultDisplay : _this$props$displayOp; // Don't render if there are no options to display
125
243
 
126
244
  if (!((_this$props$options = this.props.options) !== null && _this$props$options !== void 0 && _this$props$options.length) && allowCustomValues <= 0) {
127
- return false;
245
+ return /*#__PURE__*/_react["default"].createElement("div", null);
128
246
  }
129
247
 
130
248
  var valueOffset = Array.isArray(fixedOptions) ? fixedOptions.length : 0; // For some reason onClick is not fired when clicked on an option
@@ -134,42 +252,43 @@ var DropdownList = /*#__PURE__*/function (_Component) {
134
252
  className: classList.list,
135
253
  light: light
136
254
  }, this.props.customListHeaderComponent ? /*#__PURE__*/_react["default"].createElement("div", {
137
- className: classList.listHeader
255
+ className: (0, _classnames["default"])(classList.listHeader, (_this$props$customCla = this.props.customClasses) === null || _this$props$customCla === void 0 ? void 0 : _this$props$customCla.listHeader)
138
256
  }, /*#__PURE__*/_react["default"].createElement(this.props.customListHeaderComponent, null)) : null, valueOffset > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
139
257
  className: classList.listSection
140
258
  }, fixedOptions === null || fixedOptions === void 0 ? void 0 : fixedOptions.map(function (value, i) {
141
259
  return /*#__PURE__*/_react["default"].createElement("div", {
142
- className: (0, _classnames["default"])(classList.listItem, {
143
- hover: _this.props.selectionIndex === i,
144
- fixed: true
145
- }),
260
+ className: (0, _classnames["default"])(classList.listItem, (0, _defineProperty2["default"])({
261
+ hover: _this2.props.selectionIndex === i
262
+ }, classList.listItemFixed, true)),
146
263
  key: "".concat(display(value), "_").concat(i),
147
264
  onMouseDown: function onMouseDown(e) {
148
- return _this._onClick(value, e);
265
+ return _this2._onClick(value, e);
149
266
  },
150
267
  onClick: function onClick(e) {
151
- return _this._onClick(value, e);
268
+ return _this2._onClick(value, e);
152
269
  }
153
270
  }, /*#__PURE__*/_react["default"].createElement(CustomListItemComponent, {
154
271
  value: value,
155
272
  displayOption: display
156
273
  }));
157
- })) : null, (_this$props$options2 = this.props.options) === null || _this$props$options2 === void 0 ? void 0 : _this$props$options2.map(function (value, i) {
274
+ })) : null, (_this$state$options = this.state.options) === null || _this$state$options === void 0 ? void 0 : _this$state$options.map(function (value, i) {
158
275
  return /*#__PURE__*/_react["default"].createElement("div", {
159
276
  className: (0, _classnames["default"])(classList.listItem, {
160
- hover: _this.props.selectionIndex === i + valueOffset
277
+ hover: _this2.props.selectionIndex === i + valueOffset
161
278
  }),
162
279
  key: "".concat(display(value), "_").concat(i),
163
280
  onMouseDown: function onMouseDown(e) {
164
- return _this._onClick(value, e);
281
+ return _this2._onClick(value, e);
165
282
  },
166
283
  onClick: function onClick(e) {
167
- return _this._onClick(value, e);
284
+ return _this2._onClick(value, e);
168
285
  }
169
286
  }, /*#__PURE__*/_react["default"].createElement(CustomListItemComponent, {
170
287
  value: value,
171
288
  displayOption: display
172
289
  }));
290
+ }), /*#__PURE__*/_react["default"].createElement(DropdownFooterWrapper, {
291
+ ref: this.loadingRef
173
292
  }));
174
293
  }
175
294
  }]);
@@ -188,4 +307,4 @@ exports["default"] = DropdownList;
188
307
  defaultClassNames: true,
189
308
  selectionIndex: null
190
309
  });
191
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci9kcm9wZG93bi1saXN0LnRzeCJdLCJuYW1lcyI6WyJjbGFzc0xpc3QiLCJsaXN0IiwibGlzdEhlYWRlciIsImxpc3RTZWN0aW9uIiwibGlzdEl0ZW0iLCJsaXN0SXRlbUFuY2hvciIsImRlZmF1bHREaXNwbGF5IiwiZCIsIkxpc3RJdGVtIiwidmFsdWUiLCJkaXNwbGF5T3B0aW9uIiwibGlnaHQiLCJEcm9wZG93bkxpc3RXcmFwcGVyIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJ0aGVtZSIsImRyb3Bkb3duTGlzdEJnZExUIiwiZHJvcGRvd25MaXN0QmdkIiwiZHJvcGRvd25MaXN0Qm9yZGVyVG9wTFQiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3AiLCJkcm9wZG93bkxpc3RMVCIsImRyb3Bkb3duTGlzdCIsIkRyb3Bkb3duTGlzdCIsInJlc3VsdCIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJvbk9wdGlvblNlbGVjdGVkIiwiZml4ZWRPcHRpb25zIiwiYWxsb3dDdXN0b21WYWx1ZXMiLCJjdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsIkN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IiwiZGlzcGxheSIsIm9wdGlvbnMiLCJsZW5ndGgiLCJ2YWx1ZU9mZnNldCIsIkFycmF5IiwiaXNBcnJheSIsImN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQiLCJtYXAiLCJpIiwiaG92ZXIiLCJzZWxlY3Rpb25JbmRleCIsImZpeGVkIiwiZSIsIl9vbkNsaWNrIiwiQ29tcG9uZW50IiwiY3VzdG9tQ2xhc3NlcyIsImN1c3RvbVZhbHVlcyIsImRlZmF1bHRDbGFzc05hbWVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVPLElBQU1BLFNBQVMsR0FBRztBQUN2QkMsRUFBQUEsSUFBSSxFQUFFLGVBRGlCO0FBRXZCQyxFQUFBQSxVQUFVLEVBQUUs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LENBQUM7QUFBQSxtQkFBSSxLQUFJLENBQUNDLFFBQUwsQ0FBY3BDLEtBQWQsRUFBcUJtQyxDQUFyQixDQUFKO0FBQUEsV0FMaEI7QUFNRSxVQUFBLE9BQU8sRUFBRSxpQkFBQUEsQ0FBQztBQUFBLG1CQUFJLEtBQUksQ0FBQ0MsUUFBTCxDQUFjcEMsS0FBZCxFQUFxQm1DLENBQXJCLENBQUo7QUFBQTtBQU5aLHdCQVFFLGdDQUFDLHVCQUFEO0FBQXlCLFVBQUEsS0FBSyxFQUFFbkMsS0FBaEM7QUFBdUMsVUFBQSxhQUFhLEVBQUV1QjtBQUF0RCxVQVJGLENBRHVCO0FBQUEsT0FBeEIsQ0F6QkgsQ0FERjtBQXdDRDs7O0VBNUV1Q2MsZ0I7OztpQ0FBckJ2QixZLGtCQUNHO0FBQ3BCd0IsRUFBQUEsYUFBYSxFQUFFLEVBREs7QUFFcEJqQixFQUFBQSx1QkFBdUIsRUFBRXRCLFFBRkw7QUFHcEI4QixFQUFBQSx5QkFBeUIsRUFBRSxJQUhQO0FBSXBCVCxFQUFBQSxpQkFBaUIsRUFBRSxDQUpDO0FBS3BCbUIsRUFBQUEsWUFBWSxFQUFFLEVBTE07QUFNcEJ0QyxFQUFBQSxhQUFhLEVBQUVKLGNBTks7QUFPcEJxQixFQUFBQSxnQkFBZ0IsRUFBRSw0QkFBTSxDQUFFLENBUE47QUFRcEJzQixFQUFBQSxpQkFBaUIsRUFBRSxJQVJDO0FBU3BCUCxFQUFBQSxjQUFjLEVBQUU7QUFUSSxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBFbGVtZW50VHlwZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuZXhwb3J0IGNvbnN0IGNsYXNzTGlzdCA9IHtcbiAgbGlzdDogJ2xpc3Qtc2VsZWN0b3InLFxuICBsaXN0SGVhZGVyOiAnbGlzdF9faGVhZGVyJyxcbiAgbGlzdFNlY3Rpb246ICdsaXN0X19zZWN0aW9uJyxcbiAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgbGlzdEl0ZW1BbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG59O1xuXG5jb25zdCBkZWZhdWx0RGlzcGxheSA9IGQgPT4gZDtcbmV4cG9ydCBjb25zdCBMaXN0SXRlbSA9ICh7dmFsdWUsIGRpc3BsYXlPcHRpb24gPSBkZWZhdWx0RGlzcGxheSwgbGlnaHR9KSA9PiAoXG4gIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3RJdGVtQW5jaG9yfT57ZGlzcGxheU9wdGlvbih2YWx1ZSl9PC9zcGFuPlxuKTtcblxuaW50ZXJmYWNlIERyb3Bkb3duTGlzdFdyYXBwZXJQcm9wcyB7XG4gIGxpZ2h0PzogYm9vbGVhbjtcbn1cblxuY29uc3QgRHJvcGRvd25MaXN0V3JhcHBlciA9IHN0eWxlZC5kaXY8RHJvcGRvd25MaXN0V3JhcHBlclByb3BzPmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2R9O1xuICBib3JkZXItdG9wOiAxcHggc29saWRcbiAgICAke3Byb3BzID0+XG4gICAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wfTtcbiAgJHtwcm9wcyA9PiAocHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdCl9O1xuYDtcblxuaW50ZXJmYWNlIERyb3Bkb3duTGlzdFByb3BzIHtcbiAgb3B0aW9ucz86IGFueVtdO1xuICBhbGxvd0N1c3RvbVZhbHVlcz86IG51bWJlcjtcbiAgY3VzdG9tQ2xhc3Nlcz86IG9iamVjdDtcbiAgY3VzdG9tVmFsdWVzPzogYW55W107XG4gIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PzogRWxlbWVudFR5cGU7XG4gIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ/OiBFbGVtZW50VHlwZTtcbiAgc2VsZWN0aW9uSW5kZXg/OiBudW1iZXI7XG4gIG9uT3B0aW9uU2VsZWN0ZWQ/OiBGdW5jdGlvbjtcbiAgZGlzcGxheU9wdGlvbj86IEZ1bmN0aW9uO1xuICBkZWZhdWx0Q2xhc3NOYW1lcz86IGJvb2xlYW47XG4gIGFyZVJlc3VsdHNUcnVuY2F0ZWQ/OiBib29sZWFuO1xuICByZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZT86IHN0cmluZztcbiAgbGlzdEl0ZW1Db21wb25lbnQ/OiBGdW5jdGlvbjtcbiAgbGlnaHQ/OiBib29sZWFuO1xuICBmaXhlZE9wdGlvbnM/OiBhbnlbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJvcGRvd25MaXN0IGV4dGVuZHMgQ29tcG9uZW50PERyb3Bkb3duTGlzdFByb3BzPiB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY3VzdG9tQ2xhc3Nlczoge30sXG4gICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IExpc3RJdGVtLFxuICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgYWxsb3dDdXN0b21WYWx1ZXM6IDAsXG4gICAgY3VzdG9tVmFsdWVzOiBbXSxcbiAgICBkaXNwbGF5T3B0aW9uOiBkZWZhdWx0RGlzcGxheSxcbiAgICBvbk9wdGlvblNlbGVjdGVkOiAoKSA9PiB7fSxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lczogdHJ1ZSxcbiAgICBzZWxlY3Rpb25JbmRleDogbnVsbFxuICB9O1xuXG4gIF9vbkNsaWNrKHJlc3VsdCwgZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucHJvcHMub25PcHRpb25TZWxlY3RlZD8uKHJlc3VsdCwgZXZlbnQpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGZpeGVkT3B0aW9ucyxcbiAgICAgIGxpZ2h0LFxuICAgICAgYWxsb3dDdXN0b21WYWx1ZXMgPSAwLFxuICAgICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IEN1c3RvbUxpc3RJdGVtQ29tcG9uZW50ID0gTGlzdEl0ZW1cbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7ZGlzcGxheU9wdGlvbjogZGlzcGxheSA9IGRlZmF1bHREaXNwbGF5fSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBEb24ndCByZW5kZXIgaWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMgdG8gZGlzcGxheVxuICAgIGlmICghdGhpcy5wcm9wcy5vcHRpb25zPy5sZW5ndGggJiYgYWxsb3dDdXN0b21WYWx1ZXMgPD0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlT2Zmc2V0ID0gQXJyYXkuaXNBcnJheShmaXhlZE9wdGlvbnMpID8gZml4ZWRPcHRpb25zLmxlbmd0aCA6IDA7XG5cbiAgICAvLyBGb3Igc29tZSByZWFzb24gb25DbGljayBpcyBub3QgZmlyZWQgd2hlbiBjbGlja2VkIG9uIGFuIG9wdGlvblxuICAgIC8vIG9uTW91c2VEb3duIGlzIHVzZWQgaGVyZSBhcyBhIHdvcmthcm91bmQgb2YgIzIwNSBhbmQgb3RoZXJcbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duTGlzdFdyYXBwZXIgY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdH0gbGlnaHQ9e2xpZ2h0fT5cbiAgICAgICAge3RoaXMucHJvcHMuY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3RIZWFkZXJ9PlxuICAgICAgICAgICAgPHRoaXMucHJvcHMuY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cblxuICAgICAgICB7dmFsdWVPZmZzZXQgPiAwID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdFNlY3Rpb259PlxuICAgICAgICAgICAge2ZpeGVkT3B0aW9ucz8ubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTGlzdC5saXN0SXRlbSwge1xuICAgICAgICAgICAgICAgICAgaG92ZXI6IHRoaXMucHJvcHMuc2VsZWN0aW9uSW5kZXggPT09IGksXG4gICAgICAgICAgICAgICAgICBmaXhlZDogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIGtleT17YCR7ZGlzcGxheSh2YWx1ZSl9XyR7aX1gfVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gdGhpcy5fb25DbGljayh2YWx1ZSwgZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q3VzdG9tTGlzdEl0ZW1Db21wb25lbnQgdmFsdWU9e3ZhbHVlfSBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5fSAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cblxuICAgICAgICB7dGhpcy5wcm9wcy5vcHRpb25zPy5tYXAoKHZhbHVlLCBpKSA9PiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTGlzdC5saXN0SXRlbSwge1xuICAgICAgICAgICAgICBob3ZlcjogdGhpcy5wcm9wcy5zZWxlY3Rpb25JbmRleCA9PT0gaSArIHZhbHVlT2Zmc2V0XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIGtleT17YCR7ZGlzcGxheSh2YWx1ZSl9XyR7aX1gfVxuICAgICAgICAgICAgb25Nb3VzZURvd249e2UgPT4gdGhpcy5fb25DbGljayh2YWx1ZSwgZSl9XG4gICAgICAgICAgICBvbkNsaWNrPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9Ecm9wZG93bkxpc3RXcmFwcGVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
310
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci9kcm9wZG93bi1saXN0LnRzeCJdLCJuYW1lcyI6WyJMRUZUX0JVVFRPTiIsImNsYXNzTGlzdCIsImxpc3QiLCJsaXN0SGVhZGVyIiwibGlzdFNlY3Rpb24iLCJsaXN0SXRlbSIsImxpc3RJdGVtQW5jaG9yIiwibGlzdEl0ZW1GaXhlZCIsImRlZmF1bHREaXNwbGF5IiwiZCIsIkxpc3RJdGVtIiwidmFsdWUiLCJkaXNwbGF5T3B0aW9uIiwiZGlzYWJsZWQiLCJsaWdodCIsImRpc3BsYXlWYWx1ZSIsIkRyb3Bkb3duTGlzdFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwiZHJvcGRvd25MaXN0QmdkTFQiLCJkcm9wZG93bkxpc3RCZ2QiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3BMVCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcCIsImRyb3Bkb3duTGlzdExUIiwiZHJvcGRvd25MaXN0IiwiRHJvcGRvd25Gb290ZXJXcmFwcGVyIiwiRHJvcGRvd25MaXN0IiwiZW50aXRpZXMiLCJ5IiwiYm91bmRpbmdDbGllbnRSZWN0IiwicHJldlkiLCJvcHRpb25zIiwiX2dldE9wdGlvbnMiLCJwYWdlIiwic2V0U3RhdGUiLCJzdGF0ZSIsImluaXROdW1iZXJPZk9wdGlvbnMiLCJJTklUX0ZJTFRFUl9JVEVNU19JTl9EUk9QRE9XTiIsImxvYWRpbmdSZWYiLCJSZWFjdCIsImNyZWF0ZVJlZiIsImRpdk9wdGlvbnMiLCJyb290Iiwicm9vdE1hcmdpbiIsInRocmVzaG9sZCIsImN1cnJlbnQiLCJvYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwiaGFuZGxlT2JzZXJ2ZXIiLCJvYnNlcnZlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwic25hcHNob3QiLCJ1bm9ic2VydmUiLCJuIiwibGVuZ3RoIiwic3RhcnQiLCJlbmQiLCJzbGljZSIsInJlc3VsdCIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJ0eXBlIiwiYnV0dG9uIiwib25PcHRpb25TZWxlY3RlZCIsImZpeGVkT3B0aW9ucyIsImFsbG93Q3VzdG9tVmFsdWVzIiwiY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQiLCJDdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsImRpc3BsYXkiLCJ2YWx1ZU9mZnNldCIsIkFycmF5IiwiaXNBcnJheSIsImN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQiLCJjdXN0b21DbGFzc2VzIiwibWFwIiwiaSIsImhvdmVyIiwic2VsZWN0aW9uSW5kZXgiLCJlIiwiX29uQ2xpY2siLCJDb21wb25lbnQiLCJjdXN0b21WYWx1ZXMiLCJkZWZhdWx0Q2xhc3NOYW1lcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTUEsV0FBVyxHQUFHLENBQXBCO0FBRU8sSUFBTUMsU0FBUyxHQUFHO0FBQ3ZCQyxFQUFBQSxJQUFJLEVBQUUsZUFEaUI7QUFFdkJDLEVBQUFBLFVBQVUsRUFBRSxjQUZXO0FBR3ZCQyxFQUFBQSxXQUFXLEVBQUUsZUFIVTtBQUl2QkMsRUFBQUEsUUFBUSxFQUFFLFlBSmE7QUFLdkJDLEVBQUFBLGNBQWMsRUFBRSxvQkFMTztBQU12QkMsRUFBQUEsYUFBYSxFQUFFO0FBTlEsQ0FBbEI7OztBQVNQLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQUMsQ0FBQztBQUFBLFNBQUlBLENBQUo7QUFBQSxDQUF4Qjs7QUFDTyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxPQUE4RDtBQUFBLE1BQTVEQyxLQUE0RCxRQUE1REEsS0FBNEQ7QUFBQSxnQ0FBckRDLGFBQXFEO0FBQUEsTUFBckRBLGFBQXFELG1DQUFyQ0osY0FBcUM7QUFBQSxNQUFyQkssUUFBcUIsUUFBckJBLFFBQXFCO0FBQUEsTUFBWEMsS0FBVyxRQUFYQSxLQUFXO0FBQ3BGLE1BQU1DLFlBQVksR0FBR0gsYUFBYSxDQUFDRCxLQUFE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RUFBQUEsaUJBQWlCLEVBQUUsSUFSQztBQVNwQkwsRUFBQUEsY0FBYyxFQUFFO0FBVEksQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgRWxlbWVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0lOSVRfRklMVEVSX0lURU1TX0lOX0RST1BET1dOfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmNvbnN0IExFRlRfQlVUVE9OID0gMDtcblxuZXhwb3J0IGNvbnN0IGNsYXNzTGlzdCA9IHtcbiAgbGlzdDogJ2xpc3Qtc2VsZWN0b3InLFxuICBsaXN0SGVhZGVyOiAnbGlzdF9faGVhZGVyJyxcbiAgbGlzdFNlY3Rpb246ICdsaXN0X19zZWN0aW9uJyxcbiAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgbGlzdEl0ZW1BbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InLFxuICBsaXN0SXRlbUZpeGVkOiAnbGlzdF9faXRlbV9fZml4ZWQnXG59O1xuXG5jb25zdCBkZWZhdWx0RGlzcGxheSA9IGQgPT4gZDtcbmV4cG9ydCBjb25zdCBMaXN0SXRlbSA9ICh7dmFsdWUsIGRpc3BsYXlPcHRpb24gPSBkZWZhdWx0RGlzcGxheSwgZGlzYWJsZWQsIGxpZ2h0fSkgPT4ge1xuICBjb25zdCBkaXNwbGF5VmFsdWUgPSBkaXNwbGF5T3B0aW9uKHZhbHVlKTtcbiAgcmV0dXJuIChcbiAgICA8c3BhbiB0aXRsZT17ZGlzcGxheVZhbHVlfSBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NMaXN0Lmxpc3RJdGVtQW5jaG9yLCB7ZGlzYWJsZWR9KX0+XG4gICAgICB7ZGlzcGxheVZhbHVlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG5cbmludGVyZmFjZSBEcm9wZG93bkxpc3RXcmFwcGVyUHJvcHMge1xuICBsaWdodD86IGJvb2xlYW47XG59XG5cbmNvbnN0IERyb3Bkb3duTGlzdFdyYXBwZXIgPSBzdHlsZWQuZGl2PERyb3Bkb3duTGlzdFdyYXBwZXJQcm9wcz5gXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJnZExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkfTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3BMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcH07XG4gICR7cHJvcHMgPT4gKHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0TFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3QpfTtcbmA7XG5cbmNvbnN0IERyb3Bkb3duRm9vdGVyV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGhlaWdodDogJzBweCc7XG5gO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25MaXN0UHJvcHMge1xuICBvcHRpb25zPzogYW55W107XG4gIGFsbG93Q3VzdG9tVmFsdWVzPzogbnVtYmVyO1xuICBjdXN0b21DbGFzc2VzPzoge2xpc3RIZWFkZXI/OiBzdHJpbmd9O1xuICBjdXN0b21WYWx1ZXM/OiBhbnlbXTtcbiAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ/OiBFbGVtZW50VHlwZTtcbiAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudD86IEVsZW1lbnRUeXBlO1xuICBzZWxlY3Rpb25JbmRleD86IG51bWJlcjtcbiAgb25PcHRpb25TZWxlY3RlZD86IEZ1bmN0aW9uO1xuICBkaXNwbGF5T3B0aW9uPzogRnVuY3Rpb247XG4gIGRlZmF1bHRDbGFzc05hbWVzPzogYm9vbGVhbjtcbiAgYXJlUmVzdWx0c1RydW5jYXRlZD86IGJvb2xlYW47XG4gIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlPzogc3RyaW5nO1xuICBsaXN0SXRlbUNvbXBvbmVudD86IEZ1bmN0aW9uO1xuICBsaWdodD86IGJvb2xlYW47XG4gIGZpeGVkT3B0aW9ucz86IGFueVtdO1xufVxuXG5pbnRlcmZhY2UgRHJvcGRvd25MaXN0U3RhdGUge1xuICBvcHRpb25zOiBBcnJheTxhbnk+IHwgbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJvcGRvd25MaXN0IGV4dGVuZHMgQ29tcG9uZW50PERyb3Bkb3duTGlzdFByb3BzLCBEcm9wZG93bkxpc3RTdGF0ZT4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGN1c3RvbUNsYXNzZXM6IHt9LFxuICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50OiBMaXN0SXRlbSxcbiAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50OiBudWxsLFxuICAgIGFsbG93Q3VzdG9tVmFsdWVzOiAwLFxuICAgIGN1c3RvbVZhbHVlczogW10sXG4gICAgZGlzcGxheU9wdGlvbjogZGVmYXVsdERpc3BsYXksXG4gICAgb25PcHRpb25TZWxlY3RlZDogKCkgPT4ge30sXG4gICAgZGVmYXVsdENsYXNzTmFtZXM6IHRydWUsXG4gICAgc2VsZWN0aW9uSW5kZXg6IG51bGxcbiAgfTtcblxuICBpbml0TnVtYmVyT2ZPcHRpb25zOiBudW1iZXI7XG4gIHBhZ2U6IG51bWJlcjtcbiAgcHJldlk6IG51bWJlcjtcbiAgbG9hZGluZ1JlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtvcHRpb25zOiBbXX07XG4gICAgdGhpcy5pbml0TnVtYmVyT2ZPcHRpb25zID0gSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV047XG4gICAgdGhpcy5wYWdlID0gMDtcbiAgICB0aGlzLnByZXZZID0gMDtcbiAgICB0aGlzLmxvYWRpbmdSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25zKHRoaXMucGFnZSk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7b3B0aW9uc30pO1xuXG4gICAgY29uc3QgZGl2T3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IG51bGwsXG4gICAgICByb290TWFyZ2luOiAnMCUnLFxuICAgICAgdGhyZXNob2xkOiAxLjBcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubG9hZGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMuaGFuZGxlT2JzZXJ2ZXIsIGRpdk9wdGlvbnMpO1xuICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMubG9hZGluZ1JlZi5jdXJyZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShwcmV2UHJvcHM6IERyb3Bkb3duTGlzdFByb3BzLCBwcmV2U3RhdGU6IERyb3Bkb3duTGlzdFN0YXRlKSB7XG4gICAgaWYgKHByZXZQcm9wcy5vcHRpb25zICE9PSB0aGlzLnByb3BzLm9wdGlvbnMpIHtcbiAgICAgIC8vIGNoZWNrIGlmIHVzZXIgc2VhcmNoaW5nLCByZXNldCBzdGF0ZS5vcHRpb25zIGF0IHRoZSBmaXJzdCB0aW1lXG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0T3B0aW9ucygwKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe29wdGlvbnN9KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBwcmV2ZW50IGNvbnNvbGUgd2FybmluZzogZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKSBzaG91bGQgYmUgdXNlZCB3aXRoIGNvbXBvbmVudERpZFVwZGF0ZSgpLlxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUsIHNuYXBzaG90KSB7fVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGlmICh0aGlzLmxvYWRpbmdSZWYuY3VycmVudCkge1xuICAgICAgdGhpcy5vYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMubG9hZGluZ1JlZi5jdXJyZW50KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPYnNlcnZlciA9IGVudGl0aWVzID0+IHtcbiAgICBjb25zdCB5ID0gZW50aXRpZXNbMF0uYm91bmRpbmdDbGllbnRSZWN0Lnk7XG4gICAgaWYgKHRoaXMucHJldlkgPiB5KSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0T3B0aW9ucyh0aGlzLnBhZ2UpO1xuICAgICAgaWYgKG9wdGlvbnMpIHRoaXMuc2V0U3RhdGUoe29wdGlvbnN9KTtcbiAgICB9XG4gICAgdGhpcy5wcmV2WSA9IHk7XG4gIH07XG5cbiAgX2dldE9wdGlvbnMocGFnZSkge1xuICAgIGlmICghdGhpcy5wcm9wcy5vcHRpb25zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgbiA9IHRoaXMucHJvcHMub3B0aW9ucy5sZW5ndGg7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3Qgc3RhcnQgPSBwYWdlICogdGhpcy5pbml0TnVtYmVyT2ZPcHRpb25zO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy5pbml0TnVtYmVyT2ZPcHRpb25zID4gbiA/IG4gOiBzdGFydCArIHRoaXMuaW5pdE51bWJlck9mT3B0aW9ucztcblxuICAgIGlmIChzdGFydCA8IGVuZCAmJiBlbmQgPD0gbikge1xuICAgICAgdGhpcy5wYWdlID0gcGFnZSArIDE7XG4gICAgICAvLyBpbiBjYXNlIG9mIHVzZXIgc2VhcmNoaW5nLCBwcm9wcy5vcHRpb25zIHdpbGwgYmUgdXBkYXRlZFxuICAgICAgLy8gc28gXCJwYWdlXCIgdmFsdWUgd2lsbCBiZSBzZXQgdG8gMCBhbmQgcHJldmlvdXMgc3RhdGUub3B0aW9ucyB3aWxsIGJlIGRpc2NhcmRlZFxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uKHBhZ2UgPiAwID8gdGhpcy5zdGF0ZS5vcHRpb25zIHx8IFtdIDogW10pLFxuICAgICAgICAuLi50aGlzLnByb3BzLm9wdGlvbnMuc2xpY2Uoc3RhcnQsIGVuZClcbiAgICAgIF07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBfb25DbGljayhyZXN1bHQsIGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyBvbmx5IHdvcmsgd2hlbiBsZWZ0IGlzIGNsaWNrZWRcbiAgICBpZiAoKGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nICYmIGV2ZW50LmJ1dHRvbiA9PT0gTEVGVF9CVVRUT04pIHx8IGV2ZW50LnR5cGUgPT09ICdjbGljaycpIHtcbiAgICAgIHRoaXMucHJvcHMub25PcHRpb25TZWxlY3RlZD8uKHJlc3VsdCwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBmaXhlZE9wdGlvbnMsXG4gICAgICBsaWdodCxcbiAgICAgIGFsbG93Q3VzdG9tVmFsdWVzID0gMCxcbiAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50OiBDdXN0b21MaXN0SXRlbUNvbXBvbmVudCA9IExpc3RJdGVtXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge2Rpc3BsYXlPcHRpb246IGRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheX0gPSB0aGlzLnByb3BzO1xuXG4gICAgLy8gRG9uJ3QgcmVuZGVyIGlmIHRoZXJlIGFyZSBubyBvcHRpb25zIHRvIGRpc3BsYXlcbiAgICBpZiAoIXRoaXMucHJvcHMub3B0aW9ucz8ubGVuZ3RoICYmIGFsbG93Q3VzdG9tVmFsdWVzIDw9IDApIHtcbiAgICAgIHJldHVybiA8ZGl2IC8+O1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlT2Zmc2V0ID0gQXJyYXkuaXNBcnJheShmaXhlZE9wdGlvbnMpID8gZml4ZWRPcHRpb25zLmxlbmd0aCA6IDA7XG5cbiAgICAvLyBGb3Igc29tZSByZWFzb24gb25DbGljayBpcyBub3QgZmlyZWQgd2hlbiBjbGlja2VkIG9uIGFuIG9wdGlvblxuICAgIC8vIG9uTW91c2VEb3duIGlzIHVzZWQgaGVyZSBhcyBhIHdvcmthcm91bmQgb2YgIzIwNSBhbmQgb3RoZXJcbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duTGlzdFdyYXBwZXIgY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdH0gbGlnaHQ9e2xpZ2h0fT5cbiAgICAgICAge3RoaXMucHJvcHMuY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEhlYWRlciwgdGhpcy5wcm9wcy5jdXN0b21DbGFzc2VzPy5saXN0SGVhZGVyKX0+XG4gICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHt2YWx1ZU9mZnNldCA+IDAgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTGlzdC5saXN0U2VjdGlvbn0+XG4gICAgICAgICAgICB7Zml4ZWRPcHRpb25zPy5tYXAoKHZhbHVlLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NMaXN0Lmxpc3RJdGVtLCB7XG4gICAgICAgICAgICAgICAgICBob3ZlcjogdGhpcy5wcm9wcy5zZWxlY3Rpb25JbmRleCA9PT0gaSxcbiAgICAgICAgICAgICAgICAgIFtjbGFzc0xpc3QubGlzdEl0ZW1GaXhlZF06IHRydWVcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICBrZXk9e2Ake2Rpc3BsYXkodmFsdWUpfV8ke2l9YH1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBlKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUxpc3RJdGVtQ29tcG9uZW50IHZhbHVlPXt2YWx1ZX0gZGlzcGxheU9wdGlvbj17ZGlzcGxheX0gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAge3RoaXMuc3RhdGUub3B0aW9ucz8ubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEl0ZW0sIHtcbiAgICAgICAgICAgICAgaG92ZXI6IHRoaXMucHJvcHMuc2VsZWN0aW9uSW5kZXggPT09IGkgKyB2YWx1ZU9mZnNldFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBrZXk9e2Ake2Rpc3BsYXkodmFsdWUpfV8ke2l9YH1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgb25DbGljaz17ZSA9PiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q3VzdG9tTGlzdEl0ZW1Db21wb25lbnQgdmFsdWU9e3ZhbHVlfSBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5fSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cblxuICAgICAgICA8RHJvcGRvd25Gb290ZXJXcmFwcGVyIHJlZj17dGhpcy5sb2FkaW5nUmVmfSAvPlxuICAgICAgPC9Ecm9wZG93bkxpc3RXcmFwcGVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -15,6 +15,7 @@ export declare type ItemSelectorProps = {
15
15
  fixedOptions?: ReadonlyArray<string | number | boolean | object> | null;
16
16
  erasable?: boolean;
17
17
  showArrow?: boolean;
18
+ searchOptions?: (value: any, opt: any) => any;
18
19
  searchable?: boolean;
19
20
  displayOption?: string | ((opt: any) => any);
20
21
  getOptionValue?: string | ((opt: any) => any);
@@ -37,9 +38,7 @@ export declare type ItemSelectorProps = {
37
38
  className?: string;
38
39
  showDropdownOnMount?: boolean;
39
40
  };
40
- declare const _default: React.ForwardRefExoticComponent<import("react-intl").Omit<ItemSelectorProps, "intl"> & {
41
- forwardedRef?: React.Ref<any> | undefined;
42
- } & React.RefAttributes<any>> & {
41
+ declare const _default: React.FC<import("react-intl").WithIntlProps<ItemSelectorProps>> & {
43
42
  WrappedComponent: React.ComponentType<ItemSelectorProps>;
44
43
  };
45
44
  export default _default;
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2022 Uber Technologies, Inc.
1
+ // Copyright (c) 2023 Uber Technologies, Inc.
2
2
  //
3
3
  // Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  // of this software and associated documentation files (the "Software"), to deal
@@ -275,6 +275,7 @@ var ItemSelectorUnmemoized = /*#__PURE__*/function (_Component) {
275
275
  customListItemComponent: this.props.DropDownLineItemRenderComponent,
276
276
  displayOption: _accessor["default"].generateOptionToStringFor(this.props.displayOption),
277
277
  searchable: this.props.searchable,
278
+ searchOptions: this.props.searchOptions,
278
279
  showOptionsWhenEmpty: true,
279
280
  selectedItems: (0, _utils.toArray)(this.props.selectedItems),
280
281
  light: this.props.inputTheme === 'light'
@@ -289,6 +290,7 @@ var ItemSelectorUnmemoized = /*#__PURE__*/function (_Component) {
289
290
  var displayOption = _accessor["default"].generateOptionToStringFor(this.props.displayOption);
290
291
 
291
292
  var _this$props = this.props,
293
+ disabled = _this$props.disabled,
292
294
  _this$props$inputThem = _this$props.inputTheme,
293
295
  inputTheme = _this$props$inputThem === void 0 ? 'primary' : _this$props$inputThem,
294
296
  _this$props$DropDownL = _this$props.DropDownLineItemRenderComponent,
@@ -298,7 +300,7 @@ var ItemSelectorUnmemoized = /*#__PURE__*/function (_Component) {
298
300
  active: this.state.showTypeahead
299
301
  }),
300
302
  displayOption: displayOption,
301
- disabled: this.props.disabled,
303
+ disabled: disabled,
302
304
  onClick: this._showTypeahead,
303
305
  error: this.props.isError,
304
306
  inputTheme: inputTheme,
@@ -320,11 +322,13 @@ var ItemSelectorUnmemoized = /*#__PURE__*/function (_Component) {
320
322
  inputTheme: inputTheme
321
323
  })) : /*#__PURE__*/_react["default"].createElement(StyledDropdownSelect, dropdownSelectProps, /*#__PURE__*/_react["default"].createElement(DropdownSelectValue, {
322
324
  hasPlaceholder: !hasValue,
325
+ disabled: disabled,
323
326
  inputTheme: inputTheme,
324
327
  className: "item-selector__dropdown__value"
325
328
  }, hasValue ? /*#__PURE__*/_react["default"].createElement(DropDownLineItemRenderComponent, {
326
329
  displayOption: displayOption,
327
330
  value: selected[0],
331
+ disabled: disabled,
328
332
  light: inputTheme === 'light'
329
333
  }) : /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
330
334
  id: this.props.placeholder || 'placeholder.selectValue'
@@ -356,4 +360,4 @@ ItemSelector.displayName = 'ItemSelector';
356
360
  var _default = (0, _reactIntl.injectIntl)(ItemSelectorUnmemoized);
357
361
 
358
362
  exports["default"] = _default;
359
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci9pdGVtLXNlbGVjdG9yLnRzeCJdLCJuYW1lcyI6WyJTdHlsZWREcm9wZG93blNlbGVjdCIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0TFQiLCJpbnB1dCIsInNpemUiLCJpbnB1dEJveEhlaWdodFNtYWxsIiwiaW5wdXRCb3hIZWlnaHQiLCJkcm9wZG93bkxpc3RBbmNob3IiLCJEcm9wZG93blNlbGVjdFZhbHVlIiwic3BhbiIsImhhc1BsYWNlaG9sZGVyIiwic2VsZWN0Q29sb3JQbGFjZUhvbGRlckxUIiwic2VsZWN0Q29sb3JQbGFjZUhvbGRlciIsInNlbGVjdENvbG9yTFQiLCJzZWxlY3RDb2xvciIsImRyb3Bkb3duTGlzdEl0ZW1MVCIsImRyb3Bkb3duTGlzdEl0ZW0iLCJkcm9wZG93bkxpc3RBbmNob3JMVCIsIkRyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQiLCJzdWJ0ZXh0Q29sb3IiLCJ0ZXh0Q29sb3IiLCJEcm9wZG93bldyYXBwZXIiLCJkcm9wZG93bldyYXBwZXJaIiwid2lkdGgiLCJJdGVtU2VsZWN0b3JVbm1lbW9pemVkIiwic2hvd1R5cGVhaGVhZCIsImRpbWVuc2lvbnMiLCJfaGlkZVR5cGVhaGVhZCIsInNldFN0YXRlIiwiX29uQmx1ciIsIm9uQmx1ciIsIml0ZW0iLCJlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJtdWx0aVNlbGVjdGVkSXRlbXMiLCJzZWxlY3RlZEl0ZW1zIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJ0IiwiaXRlbXMiLCJzbGljZSIsImxlbmd0aCIsIm9uQ2hhbmdlIiwiY2xvc2VPblNlbGVjdCIsImdldFZhbHVlIiwiQWNjZXNzb3IiLCJnZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yIiwiZ2V0T3B0aW9uVmFsdWUiLCJkaXNwbGF5T3B0aW9uIiwicHJldmlvdXNTZWxlY3RlZCIsIm11bHRpU2VsZWN0IiwiY29uY2F0IiwiZGlzYWJsZWQiLCJzaG93RHJvcGRvd25Pbk1vdW50Iiwicm9vdCIsImN1cnJlbnQiLCJIVE1MRWxlbWVudCIsIl9oYW5kbGVSZXNpemUiLCJpbnRsIiwicGxhY2VtZW50Iiwic3RhdGUiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImZpbHRlck9wdGlvbiIsImZpeGVkT3B0aW9ucyIsInR5cGVhaGVhZFBsYWNlaG9sZGVyIiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiX3NlbGVjdEl0ZW0iLCJEcm9wRG93blJlbmRlckNvbXBvbmVudCIsIkRyb3Bkb3duSGVhZGVyQ29tcG9uZW50IiwiRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudCIsInNlYXJjaGFibGUiLCJzZWxlY3RlZCIsImhhc1ZhbHVlIiwiTGlzdEl0ZW0iLCJkcm9wZG93blNlbGVjdFByb3BzIiwiYWN0aXZlIiwib25DbGljayIsIl9zaG93VHlwZWFoZWFkIiwiZXJyb3IiLCJpc0Vycm9yIiwicG9zaXRpb24iLCJwbGFjZWhvbGRlciIsIl9yZW1vdmVJdGVtIiwiQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQiLCJlcmFzYWJsZSIsIl9vbkVyYXNlIiwic2hvd0Fycm93IiwiX3JlbmRlckRyb3Bkb3duIiwiQ29tcG9uZW50IiwiRHJvcGRvd25MaXN0IiwiSXRlbVNlbGVjdG9yIiwiUmVhY3QiLCJtZW1vIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBUU8sSUFBTUEsb0JBQW9CLEdBQUdDLDZCQUFPQyxHQUFQLENBQVdDLEtBQVgsQ0FBaUIsVUFBQUMsS0FBSztBQUFBLFNBQUs7QUFDN0RDLElB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cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIENvbXBvbmVudFR5cGUsIE1vdXNlRXZlbnRIYW5kbGVyLCBSZWZPYmplY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gudW5pcWJ5JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgQWNjZXNzb3IgZnJvbSAnLi9hY2Nlc3Nvcic7XG5pbXBvcnQgQ2hpY2tsZXRlZElucHV0IGZyb20gJy4vY2hpY2tsZXRlZC1pbnB1dCc7XG5pbXBvcnQgVHlwZWFoZWFkIGZyb20gJy4vdHlwZWFoZWFkJztcbmltcG9ydCB7RGVsZXRlLCBBcnJvd0Rvd259IGZyb20gJy4uL2ljb25zJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcbmltcG9ydCBQb3J0YWxlZCBmcm9tICcuLi8uLi9jb21tb24vcG9ydGFsZWQnO1xuaW1wb3J0IHt0b0FycmF5LCBvYnNlcnZlRGltZW5zaW9ucywgdW5vYnNlcnZlRGltZW5zaW9uc30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2luamVjdEludGwsIEludGxTaGFwZX0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcblxuaW50ZXJmYWNlIFN0eWxlZERyb3Bkb3duU2VsZWN0UHJvcHMge1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xuICBzaXplPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWREcm9wZG93blNlbGVjdCA9IHN0eWxlZC5kaXYuYXR0cnMocHJvcHMgPT4gKHtcbiAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKCdpdGVtLXNlbGVjdG9yX19kcm9wZG93bicsIHByb3BzLmNsYXNzTmFtZSlcbn0pKTxTdHlsZWREcm9wZG93blNlbGVjdFByb3BzPmBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuaW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJyA/IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0U21hbGwgOiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25TZWxlY3RWYWx1ZVByb3BzIHtcbiAgaGFzUGxhY2Vob2xkZXI/OiBib29sZWFuO1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xufVxuXG5jb25zdCBEcm9wZG93blNlbGVjdFZhbHVlID0gc3R5bGVkLnNwYW48RHJvcGRvd25TZWxlY3RWYWx1ZVByb3BzPmBcbiAgY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5oYXNQbGFjZWhvbGRlciAmJiBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnXG4gICAgICA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yUGxhY2VIb2xkZXJMVFxuICAgICAgOiBwcm9wcy5oYXNQbGFjZWhvbGRlclxuICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3RDb2xvclBsYWNlSG9sZGVyXG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Q29sb3JMVFxuICAgICAgOiBwcm9wcy50aGVtZS5zZWxlY3RDb2xvcn07XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIC5saXN0X19pdGVtIHtcbiAgICAke3Byb3BzID0+XG4gICAgICBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0SXRlbUxUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0SXRlbX07XG4gIH1cblxuICAubGlzdF9faXRlbV9fYW5jaG9yIHtcbiAgICAke3Byb3BzID0+XG4gICAgICBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnXG4gICAgICAgID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QW5jaG9yTFRcbiAgICAgICAgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5jb25zdCBEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0ID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcn07XG5cbiAgOmhvdmVyIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICB9XG5gO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25XcmFwcGVyUHJvcHMge1xuICBwbGFjZW1lbnQ/OiBzdHJpbmc7XG4gIHdpZHRoOiBudW1iZXI7XG59XG5cbmNvbnN0IERyb3Bkb3duV3JhcHBlciA9IHN0eWxlZC5kaXY8RHJvcGRvd25XcmFwcGVyUHJvcHM+YFxuICBib3JkZXI6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV3JhcHBlclp9O1xuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbmA7XG5cbmV4cG9ydCB0eXBlIEl0ZW1TZWxlY3RvclByb3BzID0ge1xuICBzZWxlY3RlZEl0ZW1zPzpcbiAgICB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdD5cbiAgICB8IHN0cmluZ1xuICAgIHwgbnVtYmVyXG4gICAgfCBib29sZWFuXG4gICAgfCBvYmplY3RcbiAgICB8IG51bGw7XG4gIG9wdGlvbnM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdD47XG4gIG9uQ2hhbmdlOiAoXG4gICAgaXRlbXM6XG4gICAgICB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdD5cbiAgICAgIHwgc3RyaW5nXG4gICAgICB8IG51bWJlclxuICAgICAgfCBib29sZWFuXG4gICAgICB8IG9iamVjdFxuICAgICAgfCBudWxsXG4gICkgPT4gdm9pZDtcbiAgZml4ZWRPcHRpb25zPzogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PiB8IG51bGw7XG4gIGVyYXNhYmxlPzogYm9vbGVhbjtcbiAgc2hvd0Fycm93PzogYm9vbGVhbjtcbiAgc2VhcmNoYWJsZT86IGJvb2xlYW47XG4gIGRpc3BsYXlPcHRpb24/OiBzdHJpbmcgfCAoKG9wdDogYW55KSA9PiBhbnkpO1xuICBnZXRPcHRpb25WYWx1ZT86IHN0cmluZyB8ICgob3B0OiBhbnkpID0+IGFueSk7XG4gIGZpbHRlck9wdGlvbj86IHN0cmluZyB8ICgob3B0OiBhbnkpID0+IGFueSk7XG4gIHBsYWNlbWVudD86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBpc0Vycm9yPzogYm9vbGVhbjtcbiAgbXVsdGlTZWxlY3Q/OiBib29sZWFuO1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xuICBzaXplPzogc3RyaW5nO1xuICBvbkJsdXI/OiAoKSA9PiB2b2lkO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY2xvc2VPblNlbGVjdD86IGJvb2xlYW47XG4gIHR5cGVhaGVhZFBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBEcm9wZG93bkhlYWRlckNvbXBvbmVudD86IENvbXBvbmVudFR5cGU8YW55PiB8IG51bGw7XG4gIERyb3BEb3duUmVuZGVyQ29tcG9uZW50PzogQ29tcG9uZW50VHlwZTxhbnk+O1xuICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50PzogQ29tcG9uZW50VHlwZTxhbnk+O1xuICBDdXN0b21DaGlja2xldENvbXBvbmVudD86IENvbXBvbmVudFR5cGU8YW55PjtcbiAgaW50bDogSW50bFNoYXBlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNob3dEcm9wZG93bk9uTW91bnQ/OiBib29sZWFuO1xufTtcblxuY2xhc3MgSXRlbVNlbGVjdG9yVW5tZW1vaXplZCBleHRlbmRzIENvbXBvbmVudDxJdGVtU2VsZWN0b3JQcm9wcz4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIG11bHRpU2VsZWN0OiB0cnVlLFxuICAgIHBsYWNlaG9sZGVyOiAncGxhY2Vob2xkZXIuZW50ZXJWYWx1ZScsXG4gICAgY2xvc2VPblNlbGVjdDogdHJ1ZSxcbiAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgIERyb3BEb3duUmVuZGVyQ29tcG9uZW50OiBEcm9wZG93bkxpc3QsXG4gICAgRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudDogTGlzdEl0ZW1cbiAgfTtcblxuICBzdGF0ZSA9IHtcbiAgICBzaG93VHlwZWFoZWFkOiBmYWxzZSxcbiAgICBkaW1lbnNpb25zOiB7XG4gICAgICB3aWR0aDogMjAwXG4gICAgfVxuICB9O1xuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dEcm9wZG93bk9uTW91bnQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IHRydWV9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb290LmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5yb290LmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgaWYgKHRoaXMucm9vdC5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5yb290LmN1cnJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJvb3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4gPSBjcmVhdGVSZWYoKTtcblxuICBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgdGhpcy5faGlkZVR5cGVhaGVhZCgpO1xuICB9O1xuXG4gIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtkaW1lbnNpb25zfSk7XG4gIH07XG5cbiAgX2hpZGVUeXBlYWhlYWQgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7c2hvd1R5cGVhaGVhZDogZmFsc2V9KTtcbiAgICB0aGlzLl9vbkJsdXIoKTtcbiAgfTtcblxuICBfb25CbHVyID0gKCkgPT4ge1xuICAgIC8vIG5vdGU6IGNoaWNrbGV0ZWQgaW5wdXQgaXMgbm90IGEgcmVhbCBmb3JtIGVsZW1lbnQgc28gd2UgY2FsbCBvbkJsdXIoKVxuICAgIC8vIHdoZW4gd2UgZmVlbCB0aGUgZXZlbnRzIGFyZSBhcHByb3ByaWF0ZVxuICAgIGlmICh0aGlzLnByb3BzLm9uQmx1cikge1xuICAgICAgdGhpcy5wcm9wcy5vbkJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgX3JlbW92ZUl0ZW0gPSAoaXRlbSwgZSkgPT4ge1xuICAgIC8vIG9ubHkgdXNlZCB3aGVuIG11bHRpU2VsZWN0ID0gdHJ1ZVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IG11bHRpU2VsZWN0ZWRJdGVtcyA9IHRvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICBjb25zdCBpbmRleCA9IG11bHRpU2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgodCA9PiB0ID09PSBpdGVtKTtcblxuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtcyA9IFtcbiAgICAgIC4uLm11bHRpU2VsZWN0ZWRJdGVtcy5zbGljZSgwLCBpbmRleCksXG4gICAgICAuLi5tdWx0aVNlbGVjdGVkSXRlbXMuc2xpY2UoaW5kZXggKyAxLCBtdWx0aVNlbGVjdGVkSXRlbXMubGVuZ3RoKVxuICAgIF07XG5cbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGl0ZW1zKTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLl9vbkJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgX3NlbGVjdEl0ZW0gPSBpdGVtID0+IHtcbiAgICBjb25zdCBnZXRWYWx1ZSA9IEFjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IoXG4gICAgICB0aGlzLnByb3BzLmdldE9wdGlvblZhbHVlIHx8IHRoaXMucHJvcHMuZGlzcGxheU9wdGlvblxuICAgICk7XG5cbiAgICBjb25zdCBwcmV2aW91c1NlbGVjdGVkID0gdG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpO1xuXG4gICAgaWYgKHRoaXMucHJvcHMubXVsdGlTZWxlY3QpIHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdW5pcUJ5KHByZXZpb3VzU2VsZWN0ZWQuY29uY2F0KHRvQXJyYXkoaXRlbSkpLCBnZXRWYWx1ZSk7XG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShnZXRWYWx1ZShpdGVtKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd1R5cGVhaGVhZDogZmFsc2V9KTtcbiAgICAgIHRoaXMuX29uQmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBfb25FcmFzZTogTW91c2VFdmVudEhhbmRsZXIgPSBlID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucHJvcHMub25DaGFuZ2UobnVsbCk7XG4gIH07XG5cbiAgX3Nob3dUeXBlYWhlYWQ6IE1vdXNlRXZlbnRIYW5kbGVyID0gZSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMucHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzaG93VHlwZWFoZWFkOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX3JlbmRlckRyb3Bkb3duKGludGw6IEludGxTaGFwZSkge1xuICAgIGNvbnN0IHtwbGFjZW1lbnQgPSAnYm90dG9tJ30gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHtkaW1lbnNpb25zfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFBvcnRhbGVkIGxlZnQ9ezB9IHRvcD17MH0gaXNPcGVuZWQ9e3RoaXMuc3RhdGUuc2hvd1R5cGVhaGVhZH0gb25DbG9zZT17dGhpcy5faGlkZVR5cGVhaGVhZH0+XG4gICAgICAgIDxEcm9wZG93bldyYXBwZXIgcGxhY2VtZW50PXtwbGFjZW1lbnR9IHdpZHRoPXtkaW1lbnNpb25zPy53aWR0aH0+XG4gICAgICAgICAgPFR5cGVhaGVhZFxuICAgICAgICAgICAgY3VzdG9tQ2xhc3Nlcz17e1xuICAgICAgICAgICAgICByZXN1bHRzOiAnbGlzdC1zZWxlY3RvcicsXG4gICAgICAgICAgICAgIGlucHV0OiAndHlwZWFoZWFkX19pbnB1dCcsXG4gICAgICAgICAgICAgIGxpc3RJdGVtOiAnbGlzdF9faXRlbScsXG4gICAgICAgICAgICAgIGxpc3RBbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb3B0aW9ucz17dGhpcy5wcm9wcy5vcHRpb25zfVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uPXt0aGlzLnByb3BzLmZpbHRlck9wdGlvbn1cbiAgICAgICAgICAgIGZpeGVkT3B0aW9ucz17dGhpcy5wcm9wcy5maXhlZE9wdGlvbnN9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17XG4gICAgICAgICAgICAgIHRoaXMucHJvcHMudHlwZWFoZWFkUGxhY2Vob2xkZXIgfHwgaW50bFxuICAgICAgICAgICAgICAgID8gaW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ3BsYWNlaG9sZGVyLnNlYXJjaCd9KVxuICAgICAgICAgICAgICAgIDogJ1NlYXJjaCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uT3B0aW9uU2VsZWN0ZWQ9e3RoaXMuX3NlbGVjdEl0ZW19XG4gICAgICAgICAgICBjdXN0b21MaXN0Q29tcG9uZW50PXt0aGlzLnByb3BzLkRyb3BEb3duUmVuZGVyQ29tcG9uZW50fVxuICAgICAgICAgICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wZG93bkhlYWRlckNvbXBvbmVudH1cbiAgICAgICAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PXt0aGlzLnByb3BzLkRyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnR9XG4gICAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKHRoaXMucHJvcHMuZGlzcGxheU9wdGlvbil9XG4gICAgICAgICAgICBzZWFyY2hhYmxlPXt0aGlzLnByb3BzLnNlYXJjaGFibGV9XG4gICAgICAgICAgICBzaG93T3B0aW9uc1doZW5FbXB0eVxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpfVxuICAgICAgICAgICAgbGlnaHQ9e3RoaXMucHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J31cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Ryb3Bkb3duV3JhcHBlcj5cbiAgICAgIDwvUG9ydGFsZWQ+XG4gICAgKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICBjb25zdCBoYXNWYWx1ZSA9IHNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBkaXNwbGF5T3B0aW9uID0gQWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcih0aGlzLnByb3BzLmRpc3BsYXlPcHRpb24pO1xuICAgIGNvbnN0IHtpbnB1dFRoZW1lID0gJ3ByaW1hcnknLCBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50ID0gTGlzdEl0ZW19ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGRyb3Bkb3duU2VsZWN0UHJvcHMgPSB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoe1xuICAgICAgICBhY3RpdmU6IHRoaXMuc3RhdGUuc2hvd1R5cGVhaGVhZFxuICAgICAgfSksXG4gICAgICBkaXNwbGF5T3B0aW9uLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMucHJvcHMuZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrOiB0aGlzLl9zaG93VHlwZWFoZWFkLFxuICAgICAgZXJyb3I6IHRoaXMucHJvcHMuaXNFcnJvcixcbiAgICAgIGlucHV0VGhlbWUsXG4gICAgICBzaXplOiB0aGlzLnByb3BzLnNpemVcbiAgICB9O1xuICAgIGNvbnN0IGludGwgPSB0aGlzLnByb3BzLmludGw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2l0ZW0tc2VsZWN0b3InLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9IHJlZj17dGhpcy5yb290fT5cbiAgICAgICAgPGRpdiBzdHlsZT17e3Bvc2l0aW9uOiAncmVsYXRpdmUnfX0+XG4gICAgICAgICAgey8qIHRoaXMgcGFydCBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIGxhYmVsICovfVxuICAgICAgICAgIHt0aGlzLnByb3BzLm11bHRpU2VsZWN0ID8gKFxuICAgICAgICAgICAgPENoaWNrbGV0ZWRJbnB1dFxuICAgICAgICAgICAgICB7Li4uZHJvcGRvd25TZWxlY3RQcm9wc31cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgcmVtb3ZlSXRlbT17dGhpcy5fcmVtb3ZlSXRlbX1cbiAgICAgICAgICAgICAgQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQ9e3RoaXMucHJvcHMuQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnR9XG4gICAgICAgICAgICAgIGlucHV0VGhlbWU9e2lucHV0VGhlbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8U3R5bGVkRHJvcGRvd25TZWxlY3Qgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9PlxuICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RWYWx1ZVxuICAgICAgICAgICAgICAgIGhhc1BsYWNlaG9sZGVyPXshaGFzVmFsdWV9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT17aW5wdXRUaGVtZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpdGVtLXNlbGVjdG9yX19kcm9wZG93bl9fdmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2hhc1ZhbHVlID8gKFxuICAgICAgICAgICAgICAgICAgPERyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17ZGlzcGxheU9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkWzBdfVxuICAgICAgICAgICAgICAgICAgICBsaWdodD17aW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyIHx8ICdwbGFjZWhvbGRlci5zZWxlY3RWYWx1ZSd9IC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdFZhbHVlPlxuICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5lcmFzYWJsZSAmJiBoYXNWYWx1ZSA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgICAgIDxEZWxldGUgaGVpZ2h0PVwiMTJweFwiIG9uQ2xpY2s9e3RoaXMuX29uRXJhc2V9IC8+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICApIDogdGhpcy5wcm9wcy5zaG93QXJyb3cgPyAoXG4gICAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICAgICA8QXJyb3dEb3duIGhlaWdodD1cIjE0cHhcIiBvbkNsaWNrPXt0aGlzLl9zaG93VHlwZWFoZWFkfSAvPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1N0eWxlZERyb3Bkb3duU2VsZWN0PlxuICAgICAgICAgICl9XG4gICAgICAgICAgey8qIHRoaXMgcGFydCBpcyB1c2VkIHRvIGJ1aWx0IHRoZSBsaXN0ICovfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJEcm9wZG93bihpbnRsKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IEl0ZW1TZWxlY3RvciA9IFJlYWN0Lm1lbW8oSXRlbVNlbGVjdG9yVW5tZW1vaXplZCk7XG5JdGVtU2VsZWN0b3IuZGlzcGxheU5hbWUgPSAnSXRlbVNlbGVjdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgaW5qZWN0SW50bChJdGVtU2VsZWN0b3JVbm1lbW9pemVkKTtcbiJdfQ==
363
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vaXRlbS1zZWxlY3Rvci9pdGVtLXNlbGVjdG9yLnRzeCJdLCJuYW1lcyI6WyJTdHlsZWREcm9wZG93blNlbGVjdCIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0TFQiLCJpbnB1dCIsInNpemUiLCJpbnB1dEJveEhlaWdodFNtYWxsIiwiaW5wdXRCb3hIZWlnaHQiLCJkcm9wZG93bkxpc3RBbmNob3IiLCJEcm9wZG93blNlbGVjdFZhbHVlIiwic3BhbiIsImhhc1BsYWNlaG9sZGVyIiwic2VsZWN0Q29sb3JQbGFjZUhvbGRlckxUIiwic2VsZWN0Q29sb3JQbGFjZUhvbGRlciIsInNlbGVjdENvbG9yTFQiLCJzZWxlY3RDb2xvciIsImRyb3Bkb3duTGlzdEl0ZW1MVCIsImRyb3Bkb3duTGlzdEl0ZW0iLCJkcm9wZG93bkxpc3RBbmNob3JMVCIsIkRyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQiLCJzdWJ0ZXh0Q29sb3IiLCJ0ZXh0Q29sb3IiLCJEcm9wZG93bldyYXBwZXIiLCJkcm9wZG93bldyYXBwZXJaIiwid2lkdGgiLCJJdGVtU2VsZWN0b3JVbm1lbW9pemVkIiwic2hvd1R5cGVhaGVhZCIsImRpbWVuc2lvbnMiLCJfaGlkZVR5cGVhaGVhZCIsInNldFN0YXRlIiwiX29uQmx1ciIsIm9uQmx1ciIsIml0ZW0iLCJlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJtdWx0aVNlbGVjdGVkSXRlbXMiLCJzZWxlY3RlZEl0ZW1zIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJ0IiwiaXRlbXMiLCJzbGljZSIsImxlbmd0aCIsIm9uQ2hhbmdlIiwiY2xvc2VPblNlbGVjdCIsImdldFZhbHVlIiwiQWNjZXNzb3IiLCJnZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yIiwiZ2V0T3B0aW9uVmFsdWUiLCJkaXNwbGF5T3B0aW9uIiwicHJldmlvdXNTZWxlY3RlZCIsIm11bHRpU2VsZWN0IiwiY29uY2F0IiwiZGlzYWJsZWQiLCJzaG93RHJvcGRvd25Pbk1vdW50Iiwicm9vdCIsImN1cnJlbnQiLCJIVE1MRWxlbWVudCIsIl9oYW5kbGVSZXNpemUiLCJpbnRsIiwicGxhY2VtZW50Iiwic3RhdGUiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImZpbHRlck9wdGlvbiIsImZpeGVkT3B0aW9ucyIsInR5cGVhaGVhZFBsYWNlaG9sZGVyIiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiX3NlbGVjdEl0ZW0iLCJEcm9wRG93blJlbmRlckNvbXBvbmVudCIsIkRyb3Bkb3duSGVhZGVyQ29tcG9uZW50IiwiRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudCIsInNlYXJjaGFibGUiLCJzZWFyY2hPcHRpb25zIiwic2VsZWN0ZWQiLCJoYXNWYWx1ZSIsIkxpc3RJdGVtIiwiZHJvcGRvd25TZWxlY3RQcm9wcyIsImFjdGl2ZSIsIm9uQ2xpY2siLCJfc2hvd1R5cGVhaGVhZCIsImVycm9yIiwiaXNFcnJvciIsInBvc2l0aW9uIiwicGxhY2Vob2xkZXIiLCJfcmVtb3ZlSXRlbSIsIkN1c3RvbUNoaWNrbGV0Q29tcG9uZW50IiwiZXJhc2FibGUiLCJfb25FcmFzZSIsInNob3dBcnJvdyIsIl9yZW5kZXJEcm9wZG93biIsIkNvbXBvbmVudCIsIkRyb3Bkb3duTGlzdCIsIkl0ZW1TZWxlY3RvciIsIlJlYWN0IiwibWVtbyIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQVFPLElBQU1BLG9CQUFvQixHQUFHQyw2QkFBT0MsR0FBUCxDQUFXQyxLQUFYLENBQWlCLFVBQUFDLEtBQUs7QUFB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Qzs7QUFpT3hCLElBQU1pQixZQUFZLGdCQUFHQyxrQkFBTUMsSUFBTixDQUFXMUUsc0JBQVgsQ0FBckI7O0FBQ0F3RSxZQUFZLENBQUNHLFdBQWIsR0FBMkIsY0FBM0I7O2VBRWUsMkJBQVczRSxzQkFBWCxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIENvbXBvbmVudFR5cGUsIE1vdXNlRXZlbnRIYW5kbGVyLCBSZWZPYmplY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gudW5pcWJ5JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgQWNjZXNzb3IgZnJvbSAnLi9hY2Nlc3Nvcic7XG5pbXBvcnQgQ2hpY2tsZXRlZElucHV0IGZyb20gJy4vY2hpY2tsZXRlZC1pbnB1dCc7XG5pbXBvcnQgVHlwZWFoZWFkIGZyb20gJy4vdHlwZWFoZWFkJztcbmltcG9ydCB7RGVsZXRlLCBBcnJvd0Rvd259IGZyb20gJy4uL2ljb25zJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcbmltcG9ydCBQb3J0YWxlZCBmcm9tICcuLi8uLi9jb21tb24vcG9ydGFsZWQnO1xuaW1wb3J0IHt0b0FycmF5LCBvYnNlcnZlRGltZW5zaW9ucywgdW5vYnNlcnZlRGltZW5zaW9uc30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2luamVjdEludGwsIEludGxTaGFwZX0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcblxuaW50ZXJmYWNlIFN0eWxlZERyb3Bkb3duU2VsZWN0UHJvcHMge1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xuICBzaXplPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWREcm9wZG93blNlbGVjdCA9IHN0eWxlZC5kaXYuYXR0cnMocHJvcHMgPT4gKHtcbiAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKCdpdGVtLXNlbGVjdG9yX19kcm9wZG93bicsIHByb3BzLmNsYXNzTmFtZSlcbn0pKTxTdHlsZWREcm9wZG93blNlbGVjdFByb3BzPmBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuaW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJyA/IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0U21hbGwgOiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25TZWxlY3RWYWx1ZVByb3BzIHtcbiAgaGFzUGxhY2Vob2xkZXI/OiBib29sZWFuO1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IERyb3Bkb3duU2VsZWN0VmFsdWUgPSBzdHlsZWQuc3BhbjxEcm9wZG93blNlbGVjdFZhbHVlUHJvcHM+YFxuICBjb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmhhc1BsYWNlaG9sZGVyICYmIHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Q29sb3JQbGFjZUhvbGRlckxUXG4gICAgICA6IHByb3BzLmhhc1BsYWNlaG9sZGVyXG4gICAgICA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yUGxhY2VIb2xkZXJcbiAgICAgIDogcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3RDb2xvckxUXG4gICAgICA6IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgLmxpc3RfX2l0ZW0ge1xuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCcgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RJdGVtTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RJdGVtfTtcbiAgfVxuXG4gIC5saXN0X19pdGVtX19hbmNob3Ige1xuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgICAgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3JMVFxuICAgICAgICA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEFuY2hvcn07XG4gIH1cbmA7XG5cbmNvbnN0IERyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcblxuICA6aG92ZXIge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIH1cbmA7XG5cbmludGVyZmFjZSBEcm9wZG93bldyYXBwZXJQcm9wcyB7XG4gIHBsYWNlbWVudD86IHN0cmluZztcbiAgd2lkdGg6IG51bWJlcjtcbn1cblxuY29uc3QgRHJvcGRvd25XcmFwcGVyID0gc3R5bGVkLmRpdjxEcm9wZG93bldyYXBwZXJQcm9wcz5gXG4gIGJvcmRlcjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25XcmFwcGVyWn07XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRofXB4O1xuYDtcblxuZXhwb3J0IHR5cGUgSXRlbVNlbGVjdG9yUHJvcHMgPSB7XG4gIHNlbGVjdGVkSXRlbXM/OlxuICAgIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PlxuICAgIHwgc3RyaW5nXG4gICAgfCBudW1iZXJcbiAgICB8IGJvb2xlYW5cbiAgICB8IG9iamVjdFxuICAgIHwgbnVsbDtcbiAgb3B0aW9uczogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PjtcbiAgb25DaGFuZ2U6IChcbiAgICBpdGVtczpcbiAgICAgIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgbnVtYmVyXG4gICAgICB8IGJvb2xlYW5cbiAgICAgIHwgb2JqZWN0XG4gICAgICB8IG51bGxcbiAgKSA9PiB2b2lkO1xuICBmaXhlZE9wdGlvbnM/OiBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcbiAgZXJhc2FibGU/OiBib29sZWFuO1xuICBzaG93QXJyb3c/OiBib29sZWFuO1xuICBzZWFyY2hPcHRpb25zPzogKHZhbHVlOiBhbnksIG9wdDogYW55KSA9PiBhbnk7XG4gIHNlYXJjaGFibGU/OiBib29sZWFuO1xuICBkaXNwbGF5T3B0aW9uPzogc3RyaW5nIHwgKChvcHQ6IGFueSkgPT4gYW55KTtcbiAgZ2V0T3B0aW9uVmFsdWU/OiBzdHJpbmcgfCAoKG9wdDogYW55KSA9PiBhbnkpO1xuICBmaWx0ZXJPcHRpb24/OiBzdHJpbmcgfCAoKG9wdDogYW55KSA9PiBhbnkpO1xuICBwbGFjZW1lbnQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaXNFcnJvcj86IGJvb2xlYW47XG4gIG11bHRpU2VsZWN0PzogYm9vbGVhbjtcbiAgaW5wdXRUaGVtZT86IHN0cmluZztcbiAgc2l6ZT86IHN0cmluZztcbiAgb25CbHVyPzogKCkgPT4gdm9pZDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGNsb3NlT25TZWxlY3Q/OiBib29sZWFuO1xuICB0eXBlYWhlYWRQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ/OiBDb21wb25lbnRUeXBlPGFueT4gfCBudWxsO1xuICBEcm9wRG93blJlbmRlckNvbXBvbmVudD86IENvbXBvbmVudFR5cGU8YW55PjtcbiAgRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudD86IENvbXBvbmVudFR5cGU8YW55PjtcbiAgQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQ/OiBDb21wb25lbnRUeXBlPGFueT47XG4gIGludGw6IEludGxTaGFwZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzaG93RHJvcGRvd25Pbk1vdW50PzogYm9vbGVhbjtcbn07XG5cbmNsYXNzIEl0ZW1TZWxlY3RvclVubWVtb2l6ZWQgZXh0ZW5kcyBDb21wb25lbnQ8SXRlbVNlbGVjdG9yUHJvcHM+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBtdWx0aVNlbGVjdDogdHJ1ZSxcbiAgICBwbGFjZWhvbGRlcjogJ3BsYWNlaG9sZGVyLmVudGVyVmFsdWUnLFxuICAgIGNsb3NlT25TZWxlY3Q6IHRydWUsXG4gICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICBEcm9wRG93blJlbmRlckNvbXBvbmVudDogRHJvcGRvd25MaXN0LFxuICAgIERyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnQ6IExpc3RJdGVtXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgc2hvd1R5cGVhaGVhZDogZmFsc2UsXG4gICAgZGltZW5zaW9uczoge1xuICAgICAgd2lkdGg6IDIwMFxuICAgIH1cbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93RHJvcGRvd25Pbk1vdW50KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm9vdC5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMucm9vdC5jdXJyZW50LCB0aGlzLl9oYW5kbGVSZXNpemUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGlmICh0aGlzLnJvb3QuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMucm9vdC5jdXJyZW50KTtcbiAgICB9XG4gIH1cblxuICByb290OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+ID0gY3JlYXRlUmVmKCk7XG5cbiAgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKCkgPT4ge1xuICAgIHRoaXMuX2hpZGVUeXBlYWhlYWQoKTtcbiAgfTtcblxuICBfaGFuZGxlUmVzaXplID0gZGltZW5zaW9ucyA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7ZGltZW5zaW9uc30pO1xuICB9O1xuXG4gIF9oaWRlVHlwZWFoZWFkID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgdGhpcy5fb25CbHVyKCk7XG4gIH07XG5cbiAgX29uQmx1ciA9ICgpID0+IHtcbiAgICAvLyBub3RlOiBjaGlja2xldGVkIGlucHV0IGlzIG5vdCBhIHJlYWwgZm9ybSBlbGVtZW50IHNvIHdlIGNhbGwgb25CbHVyKClcbiAgICAvLyB3aGVuIHdlIGZlZWwgdGhlIGV2ZW50cyBhcmUgYXBwcm9wcmlhdGVcbiAgICBpZiAodGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgIHRoaXMucHJvcHMub25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW1vdmVJdGVtID0gKGl0ZW0sIGUpID0+IHtcbiAgICAvLyBvbmx5IHVzZWQgd2hlbiBtdWx0aVNlbGVjdCA9IHRydWVcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBtdWx0aVNlbGVjdGVkSXRlbXMgPSB0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgY29uc3QgaW5kZXggPSBtdWx0aVNlbGVjdGVkSXRlbXMuZmluZEluZGV4KHQgPT4gdCA9PT0gaXRlbSk7XG5cbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAuLi5tdWx0aVNlbGVjdGVkSXRlbXMuc2xpY2UoMCwgaW5kZXgpLFxuICAgICAgLi4ubXVsdGlTZWxlY3RlZEl0ZW1zLnNsaWNlKGluZGV4ICsgMSwgbXVsdGlTZWxlY3RlZEl0ZW1zLmxlbmd0aClcbiAgICBdO1xuXG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZShpdGVtcyk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiBmYWxzZX0pO1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9zZWxlY3RJdGVtID0gaXRlbSA9PiB7XG4gICAgY29uc3QgZ2V0VmFsdWUgPSBBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKFxuICAgICAgdGhpcy5wcm9wcy5nZXRPcHRpb25WYWx1ZSB8fCB0aGlzLnByb3BzLmRpc3BsYXlPcHRpb25cbiAgICApO1xuXG4gICAgY29uc3QgcHJldmlvdXNTZWxlY3RlZCA9IHRvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKTtcblxuICAgIGlmICh0aGlzLnByb3BzLm11bHRpU2VsZWN0KSB7XG4gICAgICBjb25zdCBpdGVtcyA9IHVuaXFCeShwcmV2aW91c1NlbGVjdGVkLmNvbmNhdCh0b0FycmF5KGl0ZW0pKSwgZ2V0VmFsdWUpO1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShpdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoZ2V0VmFsdWUoaXRlbSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLl9vbkJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgX29uRXJhc2U6IE1vdXNlRXZlbnRIYW5kbGVyID0gZSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKG51bGwpO1xuICB9O1xuXG4gIF9zaG93VHlwZWFoZWFkOiBNb3VzZUV2ZW50SGFuZGxlciA9IGUgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2hvd1R5cGVhaGVhZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJEcm9wZG93bihpbnRsOiBJbnRsU2hhcGUpIHtcbiAgICBjb25zdCB7cGxhY2VtZW50ID0gJ2JvdHRvbSd9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7ZGltZW5zaW9uc30gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQb3J0YWxlZCBsZWZ0PXswfSB0b3A9ezB9IGlzT3BlbmVkPXt0aGlzLnN0YXRlLnNob3dUeXBlYWhlYWR9IG9uQ2xvc2U9e3RoaXMuX2hpZGVUeXBlYWhlYWR9PlxuICAgICAgICA8RHJvcGRvd25XcmFwcGVyIHBsYWNlbWVudD17cGxhY2VtZW50fSB3aWR0aD17ZGltZW5zaW9ucz8ud2lkdGh9PlxuICAgICAgICAgIDxUeXBlYWhlYWRcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzZXM9e3tcbiAgICAgICAgICAgICAgcmVzdWx0czogJ2xpc3Qtc2VsZWN0b3InLFxuICAgICAgICAgICAgICBpbnB1dDogJ3R5cGVhaGVhZF9faW5wdXQnLFxuICAgICAgICAgICAgICBsaXN0SXRlbTogJ2xpc3RfX2l0ZW0nLFxuICAgICAgICAgICAgICBsaXN0QW5jaG9yOiAnbGlzdF9faXRlbV9fYW5jaG9yJ1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9wdGlvbnM9e3RoaXMucHJvcHMub3B0aW9uc31cbiAgICAgICAgICAgIGZpbHRlck9wdGlvbj17dGhpcy5wcm9wcy5maWx0ZXJPcHRpb259XG4gICAgICAgICAgICBmaXhlZE9wdGlvbnM9e3RoaXMucHJvcHMuZml4ZWRPcHRpb25zfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e1xuICAgICAgICAgICAgICB0aGlzLnByb3BzLnR5cGVhaGVhZFBsYWNlaG9sZGVyIHx8IGludGxcbiAgICAgICAgICAgICAgICA/IGludGwuZm9ybWF0TWVzc2FnZSh7aWQ6ICdwbGFjZWhvbGRlci5zZWFyY2gnfSlcbiAgICAgICAgICAgICAgICA6ICdTZWFyY2gnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXt0aGlzLl9zZWxlY3RJdGVtfVxuICAgICAgICAgICAgY3VzdG9tTGlzdENvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wRG93blJlbmRlckNvbXBvbmVudH1cbiAgICAgICAgICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ9e3RoaXMucHJvcHMuRHJvcGRvd25IZWFkZXJDb21wb25lbnR9XG4gICAgICAgICAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50fVxuICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17QWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcih0aGlzLnByb3BzLmRpc3BsYXlPcHRpb24pfVxuICAgICAgICAgICAgc2VhcmNoYWJsZT17dGhpcy5wcm9wcy5zZWFyY2hhYmxlfVxuICAgICAgICAgICAgc2VhcmNoT3B0aW9ucz17dGhpcy5wcm9wcy5zZWFyY2hPcHRpb25zfVxuICAgICAgICAgICAgc2hvd09wdGlvbnNXaGVuRW1wdHlcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3RvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKX1cbiAgICAgICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCd9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ecm9wZG93bldyYXBwZXI+XG4gICAgICA8L1BvcnRhbGVkPlxuICAgICk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgY29uc3QgaGFzVmFsdWUgPSBzZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgZGlzcGxheU9wdGlvbiA9IEFjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IodGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9uKTtcbiAgICBjb25zdCB7XG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGlucHV0VGhlbWUgPSAncHJpbWFyeScsXG4gICAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50ID0gTGlzdEl0ZW1cbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGRyb3Bkb3duU2VsZWN0UHJvcHMgPSB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoe1xuICAgICAgICBhY3RpdmU6IHRoaXMuc3RhdGUuc2hvd1R5cGVhaGVhZFxuICAgICAgfSksXG4gICAgICBkaXNwbGF5T3B0aW9uLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrOiB0aGlzLl9zaG93VHlwZWFoZWFkLFxuICAgICAgZXJyb3I6IHRoaXMucHJvcHMuaXNFcnJvcixcbiAgICAgIGlucHV0VGhlbWUsXG4gICAgICBzaXplOiB0aGlzLnByb3BzLnNpemVcbiAgICB9O1xuICAgIGNvbnN0IGludGwgPSB0aGlzLnByb3BzLmludGw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2l0ZW0tc2VsZWN0b3InLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9IHJlZj17dGhpcy5yb290fT5cbiAgICAgICAgPGRpdiBzdHlsZT17e3Bvc2l0aW9uOiAncmVsYXRpdmUnfX0+XG4gICAgICAgICAgey8qIHRoaXMgcGFydCBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIGxhYmVsICovfVxuICAgICAgICAgIHt0aGlzLnByb3BzLm11bHRpU2VsZWN0ID8gKFxuICAgICAgICAgICAgPENoaWNrbGV0ZWRJbnB1dFxuICAgICAgICAgICAgICB7Li4uZHJvcGRvd25TZWxlY3RQcm9wc31cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgcmVtb3ZlSXRlbT17dGhpcy5fcmVtb3ZlSXRlbX1cbiAgICAgICAgICAgICAgQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQ9e3RoaXMucHJvcHMuQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnR9XG4gICAgICAgICAgICAgIGlucHV0VGhlbWU9e2lucHV0VGhlbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8U3R5bGVkRHJvcGRvd25TZWxlY3Qgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9PlxuICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RWYWx1ZVxuICAgICAgICAgICAgICAgIGhhc1BsYWNlaG9sZGVyPXshaGFzVmFsdWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9e2lucHV0VGhlbWV9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd25fX3ZhbHVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtoYXNWYWx1ZSA/IChcbiAgICAgICAgICAgICAgICAgIDxEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e2Rpc3BsYXlPcHRpb259XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZFswXX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICBsaWdodD17aW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyIHx8ICdwbGFjZWhvbGRlci5zZWxlY3RWYWx1ZSd9IC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdFZhbHVlPlxuICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5lcmFzYWJsZSAmJiBoYXNWYWx1ZSA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgICAgIDxEZWxldGUgaGVpZ2h0PVwiMTJweFwiIG9uQ2xpY2s9e3RoaXMuX29uRXJhc2V9IC8+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICApIDogdGhpcy5wcm9wcy5zaG93QXJyb3cgPyAoXG4gICAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICAgICA8QXJyb3dEb3duIGhlaWdodD1cIjE0cHhcIiBvbkNsaWNrPXt0aGlzLl9zaG93VHlwZWFoZWFkfSAvPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1N0eWxlZERyb3Bkb3duU2VsZWN0PlxuICAgICAgICAgICl9XG4gICAgICAgICAgey8qIHRoaXMgcGFydCBpcyB1c2VkIHRvIGJ1aWx0IHRoZSBsaXN0ICovfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJEcm9wZG93bihpbnRsKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IEl0ZW1TZWxlY3RvciA9IFJlYWN0Lm1lbW8oSXRlbVNlbGVjdG9yVW5tZW1vaXplZCk7XG5JdGVtU2VsZWN0b3IuZGlzcGxheU5hbWUgPSAnSXRlbVNlbGVjdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgaW5qZWN0SW50bChJdGVtU2VsZWN0b3JVbm1lbW9pemVkKTtcbiJdfQ==
@@ -4,9 +4,8 @@ import { Search } from '../icons';
4
4
  interface TypeaheadProps {
5
5
  name?: string;
6
6
  customClasses?: any;
7
- maxVisible?: number;
8
7
  resultsTruncatedMessage?: string;
9
- options?: ReadonlyArray<string | number | boolean | object>;
8
+ options?: ReadonlyArray<string | number | boolean | object | undefined>;
10
9
  fixedOptions?: ReadonlyArray<string | number | boolean | object> | null;
11
10
  allowCustomValues?: number;
12
11
  initialValue?: string;
@@ -37,10 +36,10 @@ interface TypeaheadProps {
37
36
  inputIcon: ElementType;
38
37
  className?: string;
39
38
  selectedItems?: any[] | null;
39
+ maxVisible?: number;
40
40
  }
41
41
  interface TypeaheadState {
42
- /** @type {ReadonlyArray<string>} */
43
- searchResults: (string | undefined)[];
42
+ searchResults: ReadonlyArray<string | number | boolean | object | undefined>;
44
43
  entryValue?: string;
45
44
  selection?: string;
46
45
  selectionIndex: null;
@@ -69,11 +68,12 @@ declare class Typeahead extends Component<TypeaheadProps, TypeaheadState> {
69
68
  inputDisplayOption: null;
70
69
  defaultClassNames: boolean;
71
70
  customListComponent: typeof DropdownList;
72
- customListItemComponent: ({ value, displayOption, light }: {
71
+ customListItemComponent: ({ value, displayOption, disabled, light }: {
73
72
  value: any;
74
73
  displayOption?: ((d: any) => any) | undefined;
74
+ disabled: any;
75
75
  light: any;
76
- }) => JSX.Element;
76
+ }) => React.JSX.Element;
77
77
  inputIcon: typeof Search;
78
78
  customListHeaderComponent: null;
79
79
  showOptionsWhenEmpty: boolean;
@@ -81,7 +81,11 @@ declare class Typeahead extends Component<TypeaheadProps, TypeaheadState> {
81
81
  resultsTruncatedMessage: null;
82
82
  };
83
83
  static getDerivedStateFromProps(props: any, state: any): {
84
+ searchResults?: undefined;
85
+ prevOptions?: undefined;
86
+ } | {
84
87
  searchResults: any;
88
+ prevOptions: any;
85
89
  };
86
90
  constructor(props: any);
87
91
  componentDidMount(): void;
@@ -90,13 +94,13 @@ declare class Typeahead extends Component<TypeaheadProps, TypeaheadState> {
90
94
  focus: () => void;
91
95
  _hasCustomValue: () => boolean;
92
96
  _getCustomValue: () => string | null | undefined;
93
- _renderIncrementalSearchResults(): JSX.Element;
97
+ _renderIncrementalSearchResults(): React.JSX.Element;
94
98
  getSelection(): string | number | boolean | object | null | undefined;
95
- _onOptionSelected: (option: any, event: any) => any;
99
+ _onOptionSelected: (option: any, event: any) => void;
96
100
  _onTextEntryUpdated: () => void;
97
- _onEnter: (event: any) => any;
101
+ _onEnter: (event: any) => void;
98
102
  _onEscape: () => void;
99
- _onTab: (event: any) => any;
103
+ _onTab: (event: any) => void;
100
104
  eventMap: () => {};
101
105
  _nav: (delta: any) => void;
102
106
  navDown: () => void;
@@ -105,9 +109,9 @@ declare class Typeahead extends Component<TypeaheadProps, TypeaheadState> {
105
109
  _onKeyDown: React.KeyboardEventHandler<HTMLDivElement>;
106
110
  _onFocus: React.FocusEventHandler<HTMLDivElement>;
107
111
  _onBlur: React.FocusEventHandler<HTMLInputElement>;
108
- _renderHiddenInput(): JSX.Element | null;
112
+ _renderHiddenInput(): React.JSX.Element | null;
109
113
  _hasHint(): boolean;
110
114
  _hasFixedOptions(): number | false;
111
- render(): JSX.Element;
115
+ render(): React.JSX.Element;
112
116
  }
113
117
  export default Typeahead;