@kando-env/kando-ui 1.2.371 → 1.2.373

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 (586) hide show
  1. package/lib/Router.js +36 -73
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +25 -35
  3. package/lib/Widgets/EventsRow/EventsRow.js +27 -39
  4. package/lib/Widgets/Map/GraphUtils.js +3 -3
  5. package/lib/Widgets/Map/Map.js +72 -94
  6. package/lib/Widgets/Map/MapUtils.js +64 -61
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +53 -77
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +23 -24
  9. package/lib/Widgets/Map/areas/AreaUtils.js +47 -46
  10. package/lib/Widgets/Map/areas/Patterns.js +4 -4
  11. package/lib/Widgets/Map/edges/Edge.js +31 -35
  12. package/lib/Widgets/Map/edges/Edges.js +19 -23
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +23 -44
  14. package/lib/Widgets/Map/events/Event.js +17 -17
  15. package/lib/Widgets/Map/events/EventIndicator.js +65 -60
  16. package/lib/Widgets/Map/events/EventPath.js +24 -22
  17. package/lib/Widgets/Map/events/EventUtils.js +60 -80
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +17 -18
  19. package/lib/Widgets/Map/events/PointOfEvent.js +29 -34
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +30 -37
  21. package/lib/Widgets/Map/events/Snail.js +19 -20
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +93 -86
  23. package/lib/Widgets/Map/map/FloatingGraph.js +22 -18
  24. package/lib/Widgets/Map/map/GraphDateButton.js +25 -17
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +13 -12
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +16 -15
  27. package/lib/Widgets/Map/points/PointIcon.js +22 -15
  28. package/lib/Widgets/Map/points/PointMarker.js +71 -87
  29. package/lib/Widgets/Map/points/PointMarkers.js +45 -66
  30. package/lib/Widgets/Map/points/PointUtils.js +145 -83
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +30 -47
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +11 -10
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +11 -12
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -3
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +31 -60
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -3
  37. package/lib/Widgets/MostPolluting/Areas/styles.js +3 -3
  38. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +11 -8
  39. package/lib/Widgets/MostPolluting/Factories/Factories.js +39 -70
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +15 -18
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +8 -8
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +12 -10
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +3 -3
  44. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -2
  45. package/lib/Widgets/MostPolluting/Factories/styles.js +3 -3
  46. package/lib/Widgets/MostPolluting/MostPolluting.js +22 -28
  47. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +18 -22
  48. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +6 -4
  49. package/lib/Widgets/MostPolluting/ShowMore/styles.js +6 -4
  50. package/lib/Widgets/MostPolluting/assets/index.js +10 -10
  51. package/lib/Widgets/MostPolluting/components/ChangePercent.js +19 -13
  52. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +35 -30
  53. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +45 -35
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +39 -35
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +28 -27
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +54 -50
  57. package/lib/Widgets/MostPolluting/styles.js +3 -3
  58. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +7 -5
  59. package/lib/Widgets/PotentialImpactSummary/Icon.js +8 -6
  60. package/lib/Widgets/PotentialImpactSummary/index.js +19 -27
  61. package/lib/Widgets/PotentialImpactSummary/index.test.js +47 -52
  62. package/lib/Widgets/PotentialImpactSummary/styles.js +7 -7
  63. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +9 -7
  64. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +22 -17
  65. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +35 -32
  66. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +26 -24
  67. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +35 -37
  68. package/lib/Widgets/QualitySummary/QualitySummary.js +9 -13
  69. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -4
  70. package/lib/Widgets/QualitySummary/styles.js +23 -15
  71. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +12 -13
  72. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +27 -26
  73. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +29 -24
  74. package/lib/Widgets/UtilityInformation/UtilityInformation.js +23 -40
  75. package/lib/Widgets/UtilityInformation/styles.js +34 -25
  76. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -3
  77. package/lib/assets/icons/TopNavbar/index.js +6 -6
  78. package/lib/assets/icons/TrendSvg.js +6 -6
  79. package/lib/assets/icons/index.js +15 -15
  80. package/lib/assets/icons/kandoStepper/index.js +5 -5
  81. package/lib/assets/icons/siteTypes/index.js +1 -1
  82. package/lib/components/ApplyButton/ApplyButton.js +9 -9
  83. package/lib/components/Backdrop/Backdrop.js +6 -4
  84. package/lib/components/ContentLoader/ContentLoader.js +11 -9
  85. package/lib/components/ContentLoader/index.js +1 -1
  86. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +13 -12
  87. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +3 -5
  88. package/lib/components/CustomInputs/DoubleTabs/styles.js +20 -12
  89. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +13 -20
  90. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +6 -4
  91. package/lib/components/CustomInputs/Search/Search.js +42 -63
  92. package/lib/components/CustomInputs/Select/Select.js +45 -58
  93. package/lib/components/CustomInputs/Select/Select.stories.js +4 -6
  94. package/lib/components/DamageType/DamageType.js +35 -57
  95. package/lib/components/DataLoaderError/DataLoaderError.js +8 -6
  96. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +9 -10
  97. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +70 -71
  98. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +27 -37
  99. package/lib/components/DischargeHeatmap/HighchartsOptions.js +10 -12
  100. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
  101. package/lib/components/DischargeHeatmap/popupText.js +10 -10
  102. package/lib/components/DischargeHeatmap/titles.js +3 -3
  103. package/lib/components/ErrorBoundary.js +27 -41
  104. package/lib/components/Events/Events.js +41 -58
  105. package/lib/components/Graph/Graph.js +70 -89
  106. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +17 -21
  107. package/lib/components/Header/DoubleTabs/DoubleTabs.js +25 -33
  108. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +3 -5
  109. package/lib/components/Header/DoubleTabs/styles.js +4 -4
  110. package/lib/components/Header/Header.js +2 -2
  111. package/lib/components/Header/Header.stories.js +3 -5
  112. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +82 -197
  113. package/lib/components/Header/InfoBar/InfoBar.js +74 -103
  114. package/lib/components/Header/InfoBar/Search/Control.js +9 -9
  115. package/lib/components/Header/InfoBar/Search/GroupLabel.js +7 -5
  116. package/lib/components/Header/InfoBar/Search/Search.js +16 -21
  117. package/lib/components/Header/InfoBar/Search/SearchContainer.js +21 -33
  118. package/lib/components/Header/InfoBar/Search/searchStyle.js +41 -49
  119. package/lib/components/Header/InfoBar/TimeFilter.js +11 -14
  120. package/lib/components/Header/KandoNavbar/KandoNavbar.js +64 -89
  121. package/lib/components/Header/Slideshow/Slideshow.js +68 -90
  122. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +6 -4
  123. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +21 -23
  124. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +18 -18
  125. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +37 -43
  126. package/lib/components/Header/Toolbar/Toolbar.js +55 -74
  127. package/lib/components/InfoBar/InfoBar.js +10 -23
  128. package/lib/components/InfoBar/InfoBar.stories.js +3 -5
  129. package/lib/components/KandoModal/KandoModal.js +27 -41
  130. package/lib/components/Link.js +8 -7
  131. package/lib/components/Links/CustomRedirect/CustomRedirect.js +9 -8
  132. package/lib/components/Links/StyledLink/StyledLink.js +12 -12
  133. package/lib/components/Links/StyledNavLink/StyledNavLink.js +11 -10
  134. package/lib/components/LiveEvents/CarouselSlide.js +9 -7
  135. package/lib/components/LiveEvents/LiveEvents.js +5 -3
  136. package/lib/components/LoaderByPercent/LoaderByPercent.js +37 -29
  137. package/lib/components/Map/Map.js +20 -23
  138. package/lib/components/Modal/Modal.js +9 -9
  139. package/lib/components/NarrowHeader.js +17 -31
  140. package/lib/components/PointInfo/PointInfo.js +19 -17
  141. package/lib/components/PopupModal/PopupModal.js +12 -16
  142. package/lib/components/PopupModal/PopupModal.stories.js +15 -19
  143. package/lib/components/Sector/Sector.js +8 -6
  144. package/lib/components/Sector/Sector.test.js +19 -20
  145. package/lib/components/Sector/sectorIcons.js +2 -2
  146. package/lib/components/SevereEvent/Eta/Eta.js +49 -52
  147. package/lib/components/SevereEvent/Eta/styles.js +10 -6
  148. package/lib/components/SevereEvent/SevereEvent.js +30 -37
  149. package/lib/components/Spinner/Spinner.js +8 -8
  150. package/lib/components/Spinner/Spinner.stories.js +4 -6
  151. package/lib/components/Spinner/styles.js +22 -14
  152. package/lib/components/Tabs/Tabs.js +21 -29
  153. package/lib/components/Tabs/Tabs.stories.js +4 -6
  154. package/lib/components/Tabs/assets/index.js +5 -5
  155. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +12 -15
  156. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +40 -51
  157. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +19 -31
  158. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +20 -25
  159. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -13
  160. package/lib/components/TimeRangeSelector/TimeRangeList.js +23 -24
  161. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +17 -25
  162. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +31 -32
  163. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +4 -6
  164. package/lib/components/TimeRangeSelector/constants.js +3 -3
  165. package/lib/components/Toggle/Toggle.js +12 -17
  166. package/lib/components/TrendGraph/TrendGraph.js +23 -39
  167. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +27 -33
  168. package/lib/development-environment/index.js +8 -12
  169. package/lib/development-environment/mock/browser.js +2 -4
  170. package/lib/development-environment/mock/get.js +8 -10
  171. package/lib/development-environment/mock/handlers.js +2 -2
  172. package/lib/development-environment/mock/mockBus.js +4 -4
  173. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -2
  174. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -2
  175. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -2
  176. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -2
  177. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -2
  178. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -2
  179. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -2
  180. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -2
  181. package/lib/development-environment/mock/mockObjects/data-search.js +2 -2
  182. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -2
  183. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -2
  184. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -2
  185. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -2
  186. package/lib/development-environment/mock/mockObjects/metascore.js +2 -2
  187. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -2
  188. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -2
  189. package/lib/development-environment/mock/mockObjects/site-info.js +2 -2
  190. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -2
  191. package/lib/development-environment/togly/ToglyDashboard.js +13 -22
  192. package/lib/development-environment/togly/ToglyItem.js +36 -31
  193. package/lib/development-environment/togly/init.js +2 -2
  194. package/lib/development-environment/togly/macro.js +14 -10
  195. package/lib/development-environment/togly/useDoubleKeyDown.js +7 -9
  196. package/lib/development-environment/togly/useLocalStorage.js +13 -18
  197. package/lib/hooks/useApi.js +19 -55
  198. package/lib/hooks/useApiWithDashboardQuery.js +30 -49
  199. package/lib/hooks/useClickOutside.js +3 -3
  200. package/lib/hooks/useInitializeHeaders.js +5 -5
  201. package/lib/hooks/useKandoFetch.js +16 -29
  202. package/lib/hooks/useMap.js +22 -34
  203. package/lib/hooks/useNavContext.js +22 -26
  204. package/lib/hooks/useRemoveExistingLayers.js +6 -6
  205. package/lib/hooks/useUpdateEventBodyTail.js +13 -17
  206. package/lib/hooks/useUserTimeZone.js +33 -30
  207. package/lib/hooks/useUserTimeZone.test.js +19 -22
  208. package/lib/hooks/useWindowSize.js +7 -14
  209. package/lib/i18n/en.json +1 -0
  210. package/lib/i18n/he.json +1 -0
  211. package/lib/index.js +11 -12
  212. package/lib/macros/getVersion.js +3 -3
  213. package/lib/pages/AreaPage/AreaPage.js +34 -67
  214. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +16 -17
  215. package/lib/pages/AreaPage/Dashboard/Dashboard.js +28 -29
  216. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +17 -25
  217. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +4 -4
  218. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  219. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +11 -11
  220. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -3
  221. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -2
  222. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -4
  223. package/lib/pages/AssessmentPage/AssessmentPage.js +40 -46
  224. package/lib/pages/CannyWidget/Feedback.js +13 -13
  225. package/lib/pages/CovidPage/CovidPage.js +8 -13
  226. package/lib/pages/CovidPage/components/Body.js +25 -27
  227. package/lib/pages/CovidPage/components/Map.js +29 -39
  228. package/lib/pages/CovidPage/components/Sidebar.js +16 -15
  229. package/lib/pages/CovidPage/components/Summary.js +20 -27
  230. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +27 -33
  231. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +51 -73
  232. package/lib/pages/CovidPage/components/areas/Area.js +29 -40
  233. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +55 -46
  234. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +32 -35
  235. package/lib/pages/CovidPage/components/areas/AreasList.js +34 -46
  236. package/lib/pages/CovidPage/components/areas/Sort.js +11 -14
  237. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  238. package/lib/pages/DashboardMap/AreaCard.js +28 -28
  239. package/lib/pages/DashboardMap/AssessmentIcon.js +8 -7
  240. package/lib/pages/DashboardMap/Capacity.js +31 -80
  241. package/lib/pages/DashboardMap/FactoryCard.js +31 -26
  242. package/lib/pages/DashboardMap/HighchartsOptions.js +5 -4
  243. package/lib/pages/DashboardMap/List.js +71 -100
  244. package/lib/pages/DashboardMap/ListContext.js +15 -19
  245. package/lib/pages/DashboardMap/Loader.js +2 -2
  246. package/lib/pages/DashboardMap/SeverityBadge.js +10 -18
  247. package/lib/pages/DashboardMap/WWTPMap.js +50 -60
  248. package/lib/pages/DashboardMap/WaterDischarge.js +8 -8
  249. package/lib/pages/DashboardMap/Widget.js +54 -71
  250. package/lib/pages/DashboardMap/utils.js +48 -65
  251. package/lib/pages/EventsPage/Body/Body.js +20 -15
  252. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +17 -19
  253. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +27 -35
  254. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +8 -6
  255. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +11 -7
  256. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +21 -30
  257. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +53 -64
  258. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +19 -31
  259. package/lib/pages/EventsPage/EventsPage.js +7 -10
  260. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +26 -38
  261. package/lib/pages/EventsPage/events/MoreInfo.js +17 -16
  262. package/lib/pages/EventsPage/events/Sidebar.js +21 -16
  263. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +7 -7
  264. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +17 -20
  265. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +30 -35
  266. package/lib/pages/EventsPage/events/event_info/EventDetails.js +40 -37
  267. package/lib/pages/EventsPage/events/event_info/EventInfo.js +43 -42
  268. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +4 -4
  269. package/lib/pages/EventsPage/events/event_info/EventSection.js +17 -19
  270. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +43 -38
  271. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +39 -47
  272. package/lib/pages/EventsPage/events/event_info/Header/Header.js +6 -4
  273. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +30 -33
  274. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -6
  275. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +29 -36
  276. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +4 -6
  277. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +10 -10
  278. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +7 -9
  279. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +22 -21
  280. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +12 -19
  281. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +5 -3
  282. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +11 -9
  283. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +22 -26
  284. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +12 -8
  285. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +7 -7
  286. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +6 -4
  287. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -2
  288. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +12 -10
  289. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +10 -8
  290. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +10 -12
  291. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +5 -3
  292. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +7 -5
  293. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +7 -5
  294. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +6 -4
  295. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +11 -9
  296. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -15
  297. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +6 -6
  298. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +7 -5
  299. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +17 -15
  300. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +4 -4
  301. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +10 -8
  302. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +16 -11
  303. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +9 -8
  304. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +2 -2
  305. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -3
  306. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +25 -38
  307. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +29 -36
  308. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +11 -9
  309. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +15 -17
  310. package/lib/pages/EventsPage/events/event_info/sources/Source.js +27 -30
  311. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +23 -26
  312. package/lib/pages/EventsPage/events/event_info/styles.js +20 -12
  313. package/lib/pages/EventsPage/events/events_list/EventItem.js +18 -19
  314. package/lib/pages/EventsPage/events/events_list/EventUtils.js +10 -10
  315. package/lib/pages/EventsPage/events/events_list/EventsList.js +124 -145
  316. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +40 -55
  317. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +79 -115
  318. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +60 -77
  319. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +38 -41
  320. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +29 -36
  321. package/lib/pages/EventsPage/events/events_list/Sort.js +13 -16
  322. package/lib/pages/ImportFileWizard/FileUploadRespones.js +13 -20
  323. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +6 -4
  324. package/lib/pages/ImportFileWizard/ImportFile.js +20 -22
  325. package/lib/pages/ImportFileWizard/ResponseBody.js +24 -33
  326. package/lib/pages/ImportFileWizard/ValidationForm.js +23 -22
  327. package/lib/pages/ImportFileWizard/ValidationResponse.js +21 -21
  328. package/lib/pages/ImportFileWizard/importFileUtils.js +1 -1
  329. package/lib/pages/ImportGisPage/ImportGisContainer.js +21 -24
  330. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +21 -23
  331. package/lib/pages/ImportGisPage/importGisUtils.js +13 -21
  332. package/lib/pages/ImportGisProcess/index.js +12 -15
  333. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -12
  334. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +17 -19
  335. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -3
  336. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +56 -65
  337. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +6 -8
  338. package/lib/pages/NotificationsPage/Notification/Notification.js +16 -12
  339. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -2
  340. package/lib/pages/NotificationsPage/Notifications.stories.js +4 -6
  341. package/lib/pages/NotificationsPage/NotificationsPage.js +18 -36
  342. package/lib/pages/NotificationsPage/assets/index.js +9 -9
  343. package/lib/pages/NotificationsPageV2/NotificationsPage.js +80 -94
  344. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +94 -63
  345. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +40 -0
  346. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +66 -0
  347. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +54 -0
  348. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +54 -0
  349. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +55 -0
  350. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +158 -279
  351. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +55 -0
  352. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +76 -74
  353. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +101 -89
  354. package/lib/pages/NotificationsPageV2/notificationUtils.js +56 -49
  355. package/lib/pages/OldSitePage/OldSitePage.js +57 -132
  356. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -5
  357. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
  358. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +8 -6
  359. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +18 -20
  360. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -7
  361. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +12 -18
  362. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +16 -12
  363. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
  364. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -12
  365. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +51 -63
  366. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +9 -7
  367. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +29 -53
  368. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -4
  369. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  370. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -10
  371. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +10 -11
  372. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +32 -28
  373. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +27 -29
  374. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  375. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +18 -12
  376. package/lib/pages/ProfilePage/Container.js +2 -2
  377. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +28 -44
  378. package/lib/pages/ProfilePage/ProfilePage.js +118 -206
  379. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +25 -33
  380. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +19 -16
  381. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +28 -30
  382. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +57 -117
  383. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +17 -20
  384. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +12 -10
  385. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +39 -41
  386. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +25 -26
  387. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +16 -16
  388. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +13 -15
  389. package/lib/pages/SamplingsPage/NavigationDropdown.js +45 -32
  390. package/lib/pages/SamplingsPage/NewSamplingAction.js +76 -100
  391. package/lib/pages/SamplingsPage/SamplingMobileModal.js +129 -101
  392. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +21 -22
  393. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +34 -22
  394. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +36 -59
  395. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +15 -18
  396. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +9 -7
  397. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +110 -194
  398. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +49 -55
  399. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +47 -43
  400. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +49 -45
  401. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +19 -20
  402. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -3
  403. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +10 -6
  404. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +58 -54
  405. package/lib/pages/SamplingsPage/SamplingsMobileList.js +21 -28
  406. package/lib/pages/SamplingsPage/SamplingsPage.js +27 -33
  407. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +50 -58
  408. package/lib/pages/SamplingsPage/samplingsPageUtils.js +68 -76
  409. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +6 -4
  410. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +14 -13
  411. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +10 -13
  412. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  413. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
  414. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +14 -10
  415. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -8
  416. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +26 -23
  417. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +14 -17
  418. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +36 -32
  419. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -7
  420. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +15 -24
  421. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +16 -12
  422. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
  423. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -12
  424. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +58 -70
  425. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +9 -7
  426. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +15 -26
  427. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -5
  428. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  429. package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -9
  430. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +29 -37
  431. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  432. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +10 -11
  433. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +60 -59
  434. package/lib/pages/SitePage/SamplingParameters/dataParser.js +30 -39
  435. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +11 -9
  436. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  437. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +18 -12
  438. package/lib/pages/SitePage/SiteInformation/EmptyState.js +11 -7
  439. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +31 -31
  440. package/lib/pages/SitePage/SitePage.js +40 -79
  441. package/lib/pages/UploadLabResult/index.js +13 -13
  442. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +26 -35
  443. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +6 -8
  444. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +9 -8
  445. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +3 -5
  446. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +47 -48
  447. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +10 -6
  448. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -4
  449. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +4 -6
  450. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +13 -12
  451. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +15 -12
  452. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +7 -7
  453. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -2
  454. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +18 -26
  455. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +26 -30
  456. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +16 -17
  457. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -13
  458. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +27 -31
  459. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -8
  460. package/lib/pages/WbeDashboard/GraphWrapper.js +30 -36
  461. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +17 -19
  462. package/lib/pages/WbeDashboard/SearchInput.js +15 -20
  463. package/lib/pages/WbeDashboard/SummaryGraph.js +50 -76
  464. package/lib/pages/WbeDashboard/SummaryGraphModal.js +19 -17
  465. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  466. package/lib/pages/WbeDashboard/WbeDashboardPage.js +151 -213
  467. package/lib/pages/WbeDashboard/WbeSummaryBar.js +40 -48
  468. package/lib/pages/WwtpPage/DashboardCard.js +26 -23
  469. package/lib/pages/WwtpPage/DischargePatternCard.js +14 -23
  470. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +26 -22
  471. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +19 -18
  472. package/lib/pages/WwtpPage/Map.js +5 -3
  473. package/lib/pages/WwtpPage/OrganicCard.js +2 -2
  474. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -2
  475. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +8 -6
  476. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +9 -8
  477. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +18 -14
  478. package/lib/pages/WwtpPage/PredictionCard.js +2 -2
  479. package/lib/pages/WwtpPage/TrendCard.js +18 -19
  480. package/lib/pages/WwtpPage/UpgradeBox.js +3 -3
  481. package/lib/pages/WwtpPage/WwtpPage.js +8 -8
  482. package/lib/pages/WwtpPage/WwtpPageContainer.js +21 -16
  483. package/lib/providers/Slideshow/SlideshowContext.js +11 -9
  484. package/lib/providers/Slideshow/SlideshowProvider.js +22 -38
  485. package/lib/providers/Slideshow/SlideshowRunner.js +17 -19
  486. package/lib/providers/UrlHistory/UrlHistoryContext.js +6 -4
  487. package/lib/providers/UrlHistory/UrlHistoryProvider.js +12 -11
  488. package/lib/providers/UrlHistory/index.js +2 -2
  489. package/lib/providers/UrlHistory/useLastVisited.js +5 -5
  490. package/lib/store/ImportGis/actionTypes.js +1 -1
  491. package/lib/store/ImportGis/actionsCreator.js +7 -5
  492. package/lib/store/ImportGis/reducer.js +40 -29
  493. package/lib/store/WBE/actionTypes.js +2 -2
  494. package/lib/store/WBE/reducer.js +13 -9
  495. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +24 -14
  496. package/lib/store/areas/actionTypes.js +4 -4
  497. package/lib/store/areas/actions.js +7 -13
  498. package/lib/store/areas/reducer.js +8 -6
  499. package/lib/store/context/actionTypes.js +3 -3
  500. package/lib/store/context/actions.js +3 -3
  501. package/lib/store/context/contextMiddlewares.js +14 -16
  502. package/lib/store/context/reducer.js +13 -9
  503. package/lib/store/dashboard/dashboardSlice.js +18 -10
  504. package/lib/store/edges/actionTypes.js +5 -5
  505. package/lib/store/edges/actions.js +4 -8
  506. package/lib/store/edges/reducer.js +13 -17
  507. package/lib/store/events/actionTypes.js +17 -17
  508. package/lib/store/events/actions.js +3 -7
  509. package/lib/store/events/reducer.js +42 -49
  510. package/lib/store/global/actionTypes.js +11 -11
  511. package/lib/store/global/actions.js +8 -6
  512. package/lib/store/global/reducer.js +11 -10
  513. package/lib/store/permissions/permissionsSlice.js +12 -8
  514. package/lib/store/points/actionTypes.js +3 -3
  515. package/lib/store/points/actions.js +4 -8
  516. package/lib/store/points/reducer.js +7 -5
  517. package/lib/store/rootActionTypes.js +2 -2
  518. package/lib/store/rootReducer.js +17 -12
  519. package/lib/store/rootStore.js +5 -5
  520. package/lib/store/samplings/actionTypes.js +1 -1
  521. package/lib/store/samplings/reducer.js +16 -14
  522. package/lib/styles/StylesLayout.js +5 -3
  523. package/lib/styles/theme/theme.js +26 -27
  524. package/lib/test/mocks/browser.js +2 -4
  525. package/lib/test/test-utils.js +17 -15
  526. package/lib/ui-kit/Button/Button.js +128 -80
  527. package/lib/ui-kit/Button/Button.test.js +24 -29
  528. package/lib/ui-kit/Checkbox/Checkbox.js +30 -20
  529. package/lib/ui-kit/ContentCard/ContentCard.js +15 -18
  530. package/lib/ui-kit/Dashboard/Dashboard.js +25 -22
  531. package/lib/ui-kit/DropDown/DropDown.js +23 -24
  532. package/lib/ui-kit/DropDown/DropDown.test.js +12 -12
  533. package/lib/ui-kit/DropDown/DropDownItem.js +24 -21
  534. package/lib/ui-kit/DropDown/DropdownToggle.js +12 -8
  535. package/lib/ui-kit/EmptyState/EmptyState.js +6 -4
  536. package/lib/ui-kit/IconAction/IconAction.js +7 -5
  537. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +48 -64
  538. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +69 -52
  539. package/lib/ui-kit/InletsPie/InletsPie.js +15 -13
  540. package/lib/ui-kit/InletsPie/options.js +6 -6
  541. package/lib/ui-kit/KandoList/KandoList.js +14 -12
  542. package/lib/ui-kit/KandoTable/KandoTable.js +48 -40
  543. package/lib/ui-kit/KandoTable/KandoTable.test.js +16 -22
  544. package/lib/ui-kit/Layout/Layout.js +6 -4
  545. package/lib/ui-kit/MobileInput/MobileInput.js +60 -50
  546. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +13 -16
  547. package/lib/ui-kit/OrganicEvents/GaugeChart.js +8 -6
  548. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +6 -6
  549. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +27 -20
  550. package/lib/ui-kit/OrganicEvents/TextInfo.js +15 -10
  551. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +10 -8
  552. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +14 -17
  553. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -3
  554. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +20 -20
  555. package/lib/ui-kit/ScoreGauge/constant.js +3 -3
  556. package/lib/ui-kit/TimeLineChart/TrendChart.js +54 -42
  557. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +8 -7
  558. package/lib/ui-kit/Tooltip/Tooltip.js +14 -8
  559. package/lib/ui-kit/index.js +8 -8
  560. package/lib/ui-kit/kandoStepper/KandoStepper.js +12 -12
  561. package/lib/ui-kit/siteName/SiteName.js +11 -8
  562. package/lib/utilities/ActionUtility.js +7 -7
  563. package/lib/utilities/Alert.js +21 -17
  564. package/lib/utilities/Analytics.js +11 -11
  565. package/lib/utilities/Array.js +4 -5
  566. package/lib/utilities/Enum.js +15 -51
  567. package/lib/utilities/ErrorBoundary.js +27 -41
  568. package/lib/utilities/File.js +40 -69
  569. package/lib/utilities/GetDir.js +8 -7
  570. package/lib/utilities/KandoDate.js +7 -15
  571. package/lib/utilities/KandoModal.js +16 -26
  572. package/lib/utilities/LocalStorage.js +8 -10
  573. package/lib/utilities/ThousandsToK.js +3 -3
  574. package/lib/utilities/TimeFormat.js +21 -20
  575. package/lib/utilities/Truncate.js +17 -25
  576. package/lib/utilities/edgesMath.js +14 -15
  577. package/lib/utilities/i18n.js +3 -3
  578. package/lib/utilities/kql.js +12 -14
  579. package/lib/utilities/map/icons.js +3 -3
  580. package/lib/utilities/polylinedecorator.js +87 -112
  581. package/lib/utilities/scoreToData.js +17 -17
  582. package/lib/utilities/scoreToData.test.js +5 -5
  583. package/lib/utilities/time.js +8 -8
  584. package/lib/utilities/uploadToS3.js +11 -11
  585. package/lib/utilities/urls.js +61 -59
  586. package/package.json +1 -1
@@ -1,68 +1,77 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports.validateValueIsNotAnObject = exports.parseSeverities = exports.parseNotificationAdvancedSelection = exports.handleWaterAuthorities = exports.handleTags = exports.handleSources = exports.handleSeverities = exports.handleSensors = exports.handleSendVia = exports.handleSelectionAndSet = exports.handleNotificationType = exports.handleNotificationSample = exports.formatSendVia = exports.formatNotification = exports.deleteAttributes = void 0;
8
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/typeof"));
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
10
- var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
- var handleNotificationType = function handleNotificationType(option, notification, setNewNotification) {
12
- var value = notification.available_types.find(function (type) {
13
- return type === option.value;
14
- });
15
- if (value) setNewNotification(function (prevState) {
16
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
17
- type: value
18
- });
19
- });
6
+ exports.validateValueIsNotAnObject = exports.parseSeverities = exports.parseNotificationAdvancedSelection = exports.handleWaterAuthorities = exports.handleTags = exports.handleSources = exports.handleSeverities = exports.handleSensors = exports.handleSendVia = exports.handleSelectionAndSet = exports.handleNotificationType = exports.handleNotificationSample = exports.handleDirectImpact = exports.formatSendVia = exports.formatNotification = exports.deleteAttributes = void 0;
7
+ const handleNotificationType = (option, notification, setNewNotification) => {
8
+ const value = notification.available_types.find(type => type === option.value);
9
+ if (value) setNewNotification(prevState => ({
10
+ ...prevState,
11
+ type: value
12
+ }));
20
13
  };
21
14
  exports.handleNotificationType = handleNotificationType;
22
- var handleSeverities = function handleSeverities(e, setNewNotification) {
23
- var value = e.target.value;
24
- setNewNotification(function (prevState) {
25
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
26
- severity: value
27
- });
28
- });
15
+ const handleSeverities = (e, setNewNotification) => {
16
+ const value = e.target.value;
17
+ setNewNotification(prevState => ({
18
+ ...prevState,
19
+ severity: value
20
+ }));
29
21
  };
30
22
  exports.handleSeverities = handleSeverities;
31
- var handleWaterAuthorities = function handleWaterAuthorities(e) {
32
- var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
33
- var newNotification = arguments.length > 2 ? arguments[2] : undefined;
34
- var setNewNotification = arguments.length > 3 ? arguments[3] : undefined;
35
- var value = (0, _objectSpread3.default)({}, newNotification.water_authorities);
23
+ const handleDirectImpact = (e, setNewNotification, notification) => {
24
+ if (notification.type !== 'RollingEventAlertConfig') return;
25
+ const value = e.target.checked ? '0' : '1';
26
+ setNewNotification(prevState => ({
27
+ ...prevState,
28
+ direct_impact_only: value
29
+ }));
30
+ };
31
+ exports.handleDirectImpact = handleDirectImpact;
32
+ const handleWaterAuthorities = function (e) {
33
+ let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
34
+ let newNotification = arguments.length > 2 ? arguments[2] : undefined;
35
+ let setNewNotification = arguments.length > 3 ? arguments[3] : undefined;
36
+ const value = {
37
+ ...newNotification.water_authorities
38
+ };
36
39
  handleSelectionAndSet(value, 'water_authorities', e, option, setNewNotification);
37
40
  };
38
41
  exports.handleWaterAuthorities = handleWaterAuthorities;
39
- var handleSources = function handleSources(e) {
40
- var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
41
- var newNotification = arguments.length > 2 ? arguments[2] : undefined;
42
- var setNewNotification = arguments.length > 3 ? arguments[3] : undefined;
43
- var value = (0, _objectSpread3.default)({}, newNotification.points);
42
+ const handleSources = function (e) {
43
+ let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
44
+ let newNotification = arguments.length > 2 ? arguments[2] : undefined;
45
+ let setNewNotification = arguments.length > 3 ? arguments[3] : undefined;
46
+ const value = {
47
+ ...newNotification.points
48
+ };
44
49
  handleSelectionAndSet(value, 'points', e, option, setNewNotification);
45
50
  };
46
51
  exports.handleSources = handleSources;
47
- var handleTags = function handleTags(e) {
48
- var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
49
- var newNotification = arguments.length > 2 ? arguments[2] : undefined;
50
- var setNewNotification = arguments.length > 3 ? arguments[3] : undefined;
51
- var value = (0, _objectSpread3.default)({}, newNotification.tags);
52
+ const handleTags = function (e) {
53
+ let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
54
+ let newNotification = arguments.length > 2 ? arguments[2] : undefined;
55
+ let setNewNotification = arguments.length > 3 ? arguments[3] : undefined;
56
+ const value = {
57
+ ...newNotification.tags
58
+ };
52
59
  handleSelectionAndSet(value, 'tags', e, option, setNewNotification);
53
60
  };
54
61
  exports.handleTags = handleTags;
55
- var handleSensors = function handleSensors(e) {
56
- var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
57
- var newNotification = arguments.length > 2 ? arguments[2] : undefined;
58
- var setNewNotification = arguments.length > 3 ? arguments[3] : undefined;
59
- var value = (0, _objectSpread3.default)({}, newNotification.sensors);
62
+ const handleSensors = function (e) {
63
+ let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
64
+ let newNotification = arguments.length > 2 ? arguments[2] : undefined;
65
+ let setNewNotification = arguments.length > 3 ? arguments[3] : undefined;
66
+ const value = {
67
+ ...newNotification.sensors
68
+ };
60
69
  handleSelectionAndSet(value, 'sensors', e, option, setNewNotification);
61
70
  };
62
71
  exports.handleSensors = handleSensors;
63
- var handleSelectionAndSet = function handleSelectionAndSet(value, field, e) {
64
- var option = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
65
- var setNewNotification = arguments.length > 4 ? arguments[4] : undefined;
72
+ const handleSelectionAndSet = function (value, field, e) {
73
+ let option = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
74
+ let setNewNotification = arguments.length > 4 ? arguments[4] : undefined;
66
75
  if (e !== undefined && e.target !== undefined) {
67
76
  value.selection_type = e.target.value;
68
77
  } else {
@@ -72,20 +81,23 @@ var handleSelectionAndSet = function handleSelectionAndSet(value, field, e) {
72
81
  value.set = new Array();
73
82
  } else {
74
83
  var _option$set;
75
- var set = [];
76
- (_option$set = option.set) === null || _option$set === void 0 ? void 0 : _option$set.forEach(function (option) {
84
+ const set = [];
85
+ (_option$set = option.set) === null || _option$set === void 0 ? void 0 : _option$set.forEach(option => {
77
86
  set.push(JSON.stringify(option.value));
78
87
  });
79
88
  value.set = set;
80
89
  }
81
- setNewNotification(function (prevState) {
82
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, (0, _defineProperty2.default)({}, field, value));
83
- });
90
+ setNewNotification(prevState => ({
91
+ ...prevState,
92
+ [field]: value
93
+ }));
84
94
  };
85
95
  exports.handleSelectionAndSet = handleSelectionAndSet;
86
- var handleSendVia = function handleSendVia(e, newNotification, setNewNotification, setModalDetails) {
87
- var value = (0, _objectSpread3.default)({}, newNotification.actions);
88
- var field = e.target.value;
96
+ const handleSendVia = (e, newNotification, setNewNotification, setModalDetails) => {
97
+ const value = {
98
+ ...newNotification.actions
99
+ };
100
+ const field = e.target.value;
89
101
  value[field] = !value[field];
90
102
  if (field === 'sms' || field === 'telegram') {
91
103
  setModalDetails({
@@ -93,39 +105,37 @@ var handleSendVia = function handleSendVia(e, newNotification, setNewNotificatio
93
105
  instance: field
94
106
  });
95
107
  }
96
- setNewNotification(function (prevState) {
97
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
98
- actions: value
99
- });
100
- });
108
+ setNewNotification(prevState => ({
109
+ ...prevState,
110
+ actions: value
111
+ }));
101
112
  };
102
113
  exports.handleSendVia = handleSendVia;
103
- var handleNotificationSample = function handleNotificationSample(e, setNewNotification) {
104
- var value = e.target.checked;
105
- var parsedValue = value ? '1' : '0';
106
- setNewNotification(function (prevState) {
107
- return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
108
- pump_only: parsedValue
109
- });
110
- });
114
+ const handleNotificationSample = (e, setNewNotification) => {
115
+ const value = e.target.checked;
116
+ let parsedValue = value ? '1' : '0';
117
+ setNewNotification(prevState => ({
118
+ ...prevState,
119
+ pump_only: parsedValue
120
+ }));
111
121
  };
112
122
  exports.handleNotificationSample = handleNotificationSample;
113
- var validateValueIsNotAnObject = function validateValueIsNotAnObject(value) {
114
- return (0, _typeof2.default)(value) === 'object' && !Array.isArray(value) && value !== null && value !== undefined;
123
+ const validateValueIsNotAnObject = value => {
124
+ return typeof value === 'object' && !Array.isArray(value) && value !== null && value !== undefined;
115
125
  };
116
126
  exports.validateValueIsNotAnObject = validateValueIsNotAnObject;
117
- var parseNotificationAdvancedSelection = function parseNotificationAdvancedSelection(notification) {
127
+ const parseNotificationAdvancedSelection = notification => {
118
128
  // If there'll be a future requirement to add another AdvancedSelection fields, please add them right below
119
129
 
120
- var points = notification.points;
121
- var waterAuthorities = notification.water_authorities;
122
- var tags = notification.tags;
123
- var sensors = notification.sensors;
124
- var all_advanced_selections = [points, waterAuthorities, tags, sensors];
125
- all_advanced_selections.forEach(function (selection) {
130
+ let points = notification.points;
131
+ let waterAuthorities = notification.water_authorities;
132
+ let tags = notification.tags;
133
+ let sensors = notification.sensors;
134
+ const all_advanced_selections = [points, waterAuthorities, tags, sensors];
135
+ all_advanced_selections.forEach(selection => {
126
136
  if (validateValueIsNotAnObject(selection !== undefined && selection.set !== null && selection.set[0])) {
127
- var set = [];
128
- selection.set.forEach(function (point) {
137
+ const set = [];
138
+ selection.set.forEach(point => {
129
139
  set.push(JSON.stringify(point.id));
130
140
  });
131
141
  selection.set = set;
@@ -137,7 +147,7 @@ var parseNotificationAdvancedSelection = function parseNotificationAdvancedSelec
137
147
  return notification;
138
148
  };
139
149
  exports.parseNotificationAdvancedSelection = parseNotificationAdvancedSelection;
140
- var deleteAttributes = function deleteAttributes(notification, newNotification) {
150
+ const deleteAttributes = (notification, newNotification) => {
141
151
  // Make sure to remove unnecessary attributes for some AlertConfigs
142
152
 
143
153
  delete notification.available_types;
@@ -151,8 +161,8 @@ var deleteAttributes = function deleteAttributes(notification, newNotification)
151
161
  return notification;
152
162
  };
153
163
  exports.deleteAttributes = deleteAttributes;
154
- var formatSendVia = function formatSendVia(notification) {
155
- var formattedValue = [];
164
+ const formatSendVia = notification => {
165
+ let formattedValue = [];
156
166
  if (notification.actions['telegram']) formattedValue.push(['SendTelegramAction', '0']);
157
167
  if (notification.actions['email']) formattedValue.push(['SendEmailAction', '0']);
158
168
  // if (notification.actions['sms']) formattedValue.push(['SendSmsAction', '0']);
@@ -160,8 +170,8 @@ var formatSendVia = function formatSendVia(notification) {
160
170
  return notification;
161
171
  };
162
172
  exports.formatSendVia = formatSendVia;
163
- var parseSeverities = function parseSeverities(notification) {
164
- var value;
173
+ const parseSeverities = notification => {
174
+ let value;
165
175
  switch (notification.severity) {
166
176
  case 'medium':
167
177
  value = '0';
@@ -176,25 +186,27 @@ var parseSeverities = function parseSeverities(notification) {
176
186
  return notification;
177
187
  };
178
188
  exports.parseSeverities = parseSeverities;
179
- var formatNotification = function formatNotification(newNotification) {
180
- var notificationCopy = JSON.parse(JSON.stringify(newNotification));
189
+ const formatNotification = newNotification => {
190
+ let notificationCopy = JSON.parse(JSON.stringify(newNotification));
181
191
  notificationCopy = parseNotificationAdvancedSelection(notificationCopy);
182
192
  notificationCopy = formatSendVia(notificationCopy);
183
193
  notificationCopy = deleteAttributes(notificationCopy, newNotification);
184
194
  notificationCopy = parseSeverities(notificationCopy);
185
- var notificationToSave = {
195
+ let notificationToSave = {
186
196
  user: {
187
- alert_configs_attributes: (0, _objectSpread3.default)({}, notificationCopy)
197
+ alert_configs_attributes: {
198
+ ...notificationCopy
199
+ }
188
200
  }
189
201
  };
190
- var notificationWithTimeStamp = {
202
+ const notificationWithTimeStamp = {
191
203
  user: {
192
204
  alert_configs_attributes: {}
193
205
  }
194
206
  };
195
- var now = new Date();
196
- notificationWithTimeStamp.user.alert_configs_attributes["".concat(now.getTime())] = notificationToSave.user.alert_configs_attributes;
207
+ const now = new Date();
208
+ notificationWithTimeStamp.user.alert_configs_attributes[`${now.getTime()}`] = notificationToSave.user.alert_configs_attributes;
197
209
  return notificationWithTimeStamp;
198
210
  };
199
211
  exports.formatNotification = formatNotification;
200
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoYW5kbGVOb3RpZmljYXRpb25UeXBlIiwib3B0aW9uIiwibm90aWZpY2F0aW9uIiwic2V0TmV3Tm90aWZpY2F0aW9uIiwidmFsdWUiLCJhdmFpbGFibGVfdHlwZXMiLCJmaW5kIiwidHlwZSIsInByZXZTdGF0ZSIsIl9vYmplY3RTcHJlYWQzIiwiZGVmYXVsdCIsImV4cG9ydHMiLCJoYW5kbGVTZXZlcml0aWVzIiwiZSIsInRhcmdldCIsInNldmVyaXR5IiwiaGFuZGxlV2F0ZXJBdXRob3JpdGllcyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIm5ld05vdGlmaWNhdGlvbiIsIndhdGVyX2F1dGhvcml0aWVzIiwiaGFuZGxlU2VsZWN0aW9uQW5kU2V0IiwiaGFuZGxlU291cmNlcyIsInBvaW50cyIsImhhbmRsZVRhZ3MiLCJ0YWdzIiwiaGFuZGxlU2Vuc29ycyIsInNlbnNvcnMiLCJmaWVsZCIsInNlbGVjdGlvbl90eXBlIiwic2V0IiwiQXJyYXkiLCJfb3B0aW9uJHNldCIsImZvckVhY2giLCJwdXNoIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJoYW5kbGVTZW5kVmlhIiwic2V0TW9kYWxEZXRhaWxzIiwiYWN0aW9ucyIsIm9wZW4iLCJpbnN0YW5jZSIsImhhbmRsZU5vdGlmaWNhdGlvblNhbXBsZSIsImNoZWNrZWQiLCJwYXJzZWRWYWx1ZSIsInB1bXBfb25seSIsInZhbGlkYXRlVmFsdWVJc05vdEFuT2JqZWN0IiwiX3R5cGVvZjIiLCJpc0FycmF5IiwicGFyc2VOb3RpZmljYXRpb25BZHZhbmNlZFNlbGVjdGlvbiIsIndhdGVyQXV0aG9yaXRpZXMiLCJhbGxfYWR2YW5jZWRfc2VsZWN0aW9ucyIsInNlbGVjdGlvbiIsInBvaW50IiwiaWQiLCJkZWxldGVBdHRyaWJ1dGVzIiwiZm9ybWF0U2VuZFZpYSIsImZvcm1hdHRlZFZhbHVlIiwiZmxhdCIsInBhcnNlU2V2ZXJpdGllcyIsImZvcm1hdE5vdGlmaWNhdGlvbiIsIm5vdGlmaWNhdGlvbkNvcHkiLCJwYXJzZSIsIm5vdGlmaWNhdGlvblRvU2F2ZSIsInVzZXIiLCJhbGVydF9jb25maWdzX2F0dHJpYnV0ZXMiLCJub3RpZmljYXRpb25XaXRoVGltZVN0YW1wIiwibm93IiwiRGF0ZSIsImNvbmNhdCIsImdldFRpbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnZXMvTm90aWZpY2F0aW9uc1BhZ2VWMi9jb21wb25lbnRzL05vdGlmaWNhdGlvbnNVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlTm90aWZpY2F0aW9uVHlwZSA9IChcbiAgb3B0aW9uLFxuICBub3RpZmljYXRpb24sXG4gIHNldE5ld05vdGlmaWNhdGlvbixcbikgPT4ge1xuICBjb25zdCB2YWx1ZSA9IG5vdGlmaWNhdGlvbi5hdmFpbGFibGVfdHlwZXMhLmZpbmQoXG4gICAgKHR5cGUpID0+IHR5cGUgPT09IG9wdGlvbi52YWx1ZSxcbiAgKTtcbiAgaWYgKHZhbHVlKVxuICAgIHNldE5ld05vdGlmaWNhdGlvbigocHJldlN0YXRlKSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdHlwZTogdmFsdWUsXG4gICAgfSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVNldmVyaXRpZXMgPSAoXG4gIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+LFxuICBzZXROZXdOb3RpZmljYXRpb24sXG4pID0+IHtcbiAgY29uc3QgdmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcblxuICBzZXROZXdOb3RpZmljYXRpb24oKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAuLi5wcmV2U3RhdGUsXG4gICAgc2V2ZXJpdHk6IHZhbHVlLFxuICB9KSk7XG59O1xuZXhwb3J0IGNvbnN0IGhhbmRsZVdhdGVyQXV0aG9yaXRpZXMgPSAoXG4gIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+IHwgdW5kZWZpbmVkLFxuICBvcHRpb246IGFueSA9ICcnLFxuICBuZXdOb3RpZmljYXRpb24sXG4gIHNldE5ld05vdGlmaWNhdGlvbixcbikgPT4ge1xuICBjb25zdCB2YWx1ZSA9IHsgLi4ubmV3Tm90aWZpY2F0aW9uLndhdGVyX2F1dGhvcml0aWVzIH07XG4gIGhhbmRsZVNlbGVjdGlvbkFuZFNldChcbiAgICB2YWx1ZSxcbiAgICAnd2F0ZXJfYXV0aG9yaXRpZXMnLFxuICAgIGUsXG4gICAgb3B0aW9uLFxuICAgIHNldE5ld05vdGlmaWNhdGlvbixcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVTb3VyY2VzID0gKFxuICBlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PiB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uOiBhbnkgPSAnJyxcbiAgbmV3Tm90aWZpY2F0aW9uLFxuICBzZXROZXdOb3RpZmljYXRpb24sXG4pID0+IHtcbiAgY29uc3QgdmFsdWUgPSB7IC4uLm5ld05vdGlmaWNhdGlvbi5wb2ludHMgfTtcbiAgaGFuZGxlU2VsZWN0aW9uQW5kU2V0KHZhbHVlLCAncG9pbnRzJywgZSwgb3B0aW9uLCBzZXROZXdOb3RpZmljYXRpb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVRhZ3MgPSAoXG4gIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+IHwgdW5kZWZpbmVkLFxuICBvcHRpb246IGFueSA9ICcnLFxuICBuZXdOb3RpZmljYXRpb24sXG4gIHNldE5ld05vdGlmaWNhdGlvbixcbikgPT4ge1xuICBjb25zdCB2YWx1ZSA9IHsgLi4ubmV3Tm90aWZpY2F0aW9uLnRhZ3MgfTtcbiAgaGFuZGxlU2VsZWN0aW9uQW5kU2V0KHZhbHVlLCAndGFncycsIGUsIG9wdGlvbiwgc2V0TmV3Tm90aWZpY2F0aW9uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVTZW5zb3JzID0gKFxuICBlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PiB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uOiBhbnkgPSAnJyxcbiAgbmV3Tm90aWZpY2F0aW9uLFxuICBzZXROZXdOb3RpZmljYXRpb24sXG4pID0+IHtcbiAgY29uc3QgdmFsdWUgPSB7IC4uLm5ld05vdGlmaWNhdGlvbi5zZW5zb3JzIH07XG4gIGhhbmRsZVNlbGVjdGlvbkFuZFNldCh2YWx1ZSwgJ3NlbnNvcnMnLCBlLCBvcHRpb24sIHNldE5ld05vdGlmaWNhdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlU2VsZWN0aW9uQW5kU2V0ID0gKFxuICB2YWx1ZSxcbiAgZmllbGQ6IHN0cmluZyxcbiAgZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4gfCB1bmRlZmluZWQsXG4gIG9wdGlvbjogYW55ID0gJycsXG4gIHNldE5ld05vdGlmaWNhdGlvbixcbikgPT4ge1xuICBpZiAoZSAhPT0gdW5kZWZpbmVkICYmIGUudGFyZ2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YWx1ZS5zZWxlY3Rpb25fdHlwZSA9IGUudGFyZ2V0LnZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlLnNlbGVjdGlvbl90eXBlID0gb3B0aW9uLnNlbGVjdGlvbl90eXBlO1xuICB9XG5cbiAgaWYgKHZhbHVlLnNlbGVjdGlvbl90eXBlID09PSAnYWxsJykge1xuICAgIHZhbHVlLnNldCA9IG5ldyBBcnJheSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHNldDogc3RyaW5nW10gPSBbXTtcbiAgICBvcHRpb24uc2V0Py5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgIHNldC5wdXNoKEpTT04uc3RyaW5naWZ5KG9wdGlvbi52YWx1ZSkpO1xuICAgIH0pO1xuICAgIHZhbHVlLnNldCA9IHNldDtcbiAgfVxuXG4gIHNldE5ld05vdGlmaWNhdGlvbigocHJldlN0YXRlKSA9PiAoe1xuICAgIC4uLnByZXZTdGF0ZSxcbiAgICBbZmllbGRdOiB2YWx1ZSxcbiAgfSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVNlbmRWaWEgPSAoXG4gIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+LFxuICBuZXdOb3RpZmljYXRpb24sXG4gIHNldE5ld05vdGlmaWNhdGlvbixcbiAgc2V0TW9kYWxEZXRhaWxzLFxuKSA9PiB7XG4gIGNvbnN0IHZhbHVlID0geyAuLi5uZXdOb3RpZmljYXRpb24uYWN0aW9ucyB9O1xuICBjb25zdCBmaWVsZCA9IGUudGFyZ2V0LnZhbHVlO1xuICB2YWx1ZVtmaWVsZF0gPSAhdmFsdWVbZmllbGRdO1xuXG4gIGlmIChmaWVsZCA9PT0gJ3NtcycgfHwgZmllbGQgPT09ICd0ZWxlZ3JhbScpIHtcbiAgICBzZXRNb2RhbERldGFpbHMoeyBvcGVuOiB0cnVlLCBpbnN0YW5jZTogZmllbGQgfSk7XG4gIH1cblxuICBzZXROZXdOb3RpZmljYXRpb24oKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAuLi5wcmV2U3RhdGUsXG4gICAgYWN0aW9uczogdmFsdWUsXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVOb3RpZmljYXRpb25TYW1wbGUgPSAoXG4gIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+LFxuICBzZXROZXdOb3RpZmljYXRpb24sXG4pID0+IHtcbiAgY29uc3QgdmFsdWUgPSBlLnRhcmdldC5jaGVja2VkO1xuICBsZXQgcGFyc2VkVmFsdWUgPSB2YWx1ZSA/ICcxJyA6ICcwJztcbiAgc2V0TmV3Tm90aWZpY2F0aW9uKChwcmV2U3RhdGUpID0+ICh7XG4gICAgLi4ucHJldlN0YXRlLFxuICAgIHB1bXBfb25seTogcGFyc2VkVmFsdWUsXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVZhbHVlSXNOb3RBbk9iamVjdCA9ICh2YWx1ZSkgPT4ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHZhbHVlICE9PSB1bmRlZmluZWRcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZU5vdGlmaWNhdGlvbkFkdmFuY2VkU2VsZWN0aW9uID0gKG5vdGlmaWNhdGlvbikgPT4ge1xuICAvLyBJZiB0aGVyZSdsbCBiZSBhIGZ1dHVyZSByZXF1aXJlbWVudCB0byBhZGQgYW5vdGhlciBBZHZhbmNlZFNlbGVjdGlvbiBmaWVsZHMsIHBsZWFzZSBhZGQgdGhlbSByaWdodCBiZWxvd1xuXG4gIGxldCBwb2ludHMgPSBub3RpZmljYXRpb24ucG9pbnRzO1xuICBsZXQgd2F0ZXJBdXRob3JpdGllcyA9IG5vdGlmaWNhdGlvbi53YXRlcl9hdXRob3JpdGllcztcbiAgbGV0IHRhZ3MgPSBub3RpZmljYXRpb24udGFncztcbiAgbGV0IHNlbnNvcnMgPSBub3RpZmljYXRpb24uc2Vuc29ycztcblxuICBjb25zdCBhbGxfYWR2YW5jZWRfc2VsZWN0aW9ucyA9IFtwb2ludHMsIHdhdGVyQXV0aG9yaXRpZXMsIHRhZ3MsIHNlbnNvcnNdO1xuXG4gIGFsbF9hZHZhbmNlZF9zZWxlY3Rpb25zLmZvckVhY2goKHNlbGVjdGlvbikgPT4ge1xuICAgIGlmIChcbiAgICAgIHZhbGlkYXRlVmFsdWVJc05vdEFuT2JqZWN0KFxuICAgICAgICBzZWxlY3Rpb24gIT09IHVuZGVmaW5lZCAmJiBzZWxlY3Rpb24uc2V0ICE9PSBudWxsICYmIHNlbGVjdGlvbi5zZXRbMF0sXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb25zdCBzZXQ6IHN0cmluZ1tdID0gW107XG4gICAgICBzZWxlY3Rpb24uc2V0LmZvckVhY2goKHBvaW50KSA9PiB7XG4gICAgICAgIHNldC5wdXNoKEpTT04uc3RyaW5naWZ5KHBvaW50LmlkKSk7XG4gICAgICB9KTtcblxuICAgICAgc2VsZWN0aW9uLnNldCA9IHNldDtcbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5zZXQgIT09IHVuZGVmaW5lZCAmJiBzZWxlY3Rpb24uc2V0ID09PSBudWxsKSB7XG4gICAgICBzZWxlY3Rpb24uc2V0ID0gW107XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbm90aWZpY2F0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUF0dHJpYnV0ZXMgPSAobm90aWZpY2F0aW9uLCBuZXdOb3RpZmljYXRpb24pID0+IHtcbiAgLy8gTWFrZSBzdXJlIHRvIHJlbW92ZSB1bm5lY2Vzc2FyeSBhdHRyaWJ1dGVzIGZvciBzb21lIEFsZXJ0Q29uZmlnc1xuXG4gIGRlbGV0ZSBub3RpZmljYXRpb24uYXZhaWxhYmxlX3R5cGVzO1xuICBpZiAoXG4gICAgbmV3Tm90aWZpY2F0aW9uLnR5cGUgIT09ICdQb2xsdXRpb25BbGVydENvbmZpZycgJiZcbiAgICBub3RpZmljYXRpb24udHlwZSAhPT0gJ1JvbGxpbmdFdmVudEFsZXJ0Q29uZmlnJ1xuICApXG4gICAgZGVsZXRlIG5vdGlmaWNhdGlvbi5zZXZlcml0eTtcbiAgaWYgKFxuICAgIG5ld05vdGlmaWNhdGlvbi50eXBlICE9PSAnUG9sbHV0aW9uQWxlcnRDb25maWcnICYmXG4gICAgbm90aWZpY2F0aW9uLnR5cGUgIT09ICdSb2xsaW5nRXZlbnRBbGVydENvbmZpZydcbiAgKVxuICAgIGRlbGV0ZSBub3RpZmljYXRpb24ucHVtcF9vbmx5O1xuICBpZiAobmV3Tm90aWZpY2F0aW9uLnR5cGUgPT09ICdXYmVXZWVrbHlEaWdlc3RBbGVydENvbmZpZycpXG4gICAgZGVsZXRlIG5vdGlmaWNhdGlvbi5wb2ludHM7XG4gIGlmIChuZXdOb3RpZmljYXRpb24udHlwZSAhPT0gJ1diZVdlZWtseURpZ2VzdEFsZXJ0Q29uZmlnJylcbiAgICBkZWxldGUgbm90aWZpY2F0aW9uLnRhZ3M7XG4gIGlmIChuZXdOb3RpZmljYXRpb24udHlwZSAhPT0gJ0RhdGFsb2dnZXJUaHJlc2hvbGRBbGVydENvbmZpZycpXG4gICAgZGVsZXRlIG5vdGlmaWNhdGlvbi5zZW5zb3JzO1xuXG4gIG5vdGlmaWNhdGlvblsnYWxlcnRfdHlwZSddID0gbm90aWZpY2F0aW9uLnR5cGU7XG4gIG5vdGlmaWNhdGlvblsnX2Rlc3Ryb3knXSA9IDA7XG5cbiAgcmV0dXJuIG5vdGlmaWNhdGlvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRTZW5kVmlhID0gKG5vdGlmaWNhdGlvbikgPT4ge1xuICBsZXQgZm9ybWF0dGVkVmFsdWU6IGFueSA9IFtdO1xuICBpZiAobm90aWZpY2F0aW9uLmFjdGlvbnNbJ3RlbGVncmFtJ10pXG4gICAgZm9ybWF0dGVkVmFsdWUucHVzaChbJ1NlbmRUZWxlZ3JhbUFjdGlvbicsICcwJ10pO1xuICBpZiAobm90aWZpY2F0aW9uLmFjdGlvbnNbJ2VtYWlsJ10pXG4gICAgZm9ybWF0dGVkVmFsdWUucHVzaChbJ1NlbmRFbWFpbEFjdGlvbicsICcwJ10pO1xuICAvLyBpZiAobm90aWZpY2F0aW9uLmFjdGlvbnNbJ3NtcyddKSBmb3JtYXR0ZWRWYWx1ZS5wdXNoKFsnU2VuZFNtc0FjdGlvbicsICcwJ10pO1xuICBub3RpZmljYXRpb24uYWN0aW9ucyA9IGZvcm1hdHRlZFZhbHVlLmZsYXQoKTtcblxuICByZXR1cm4gbm90aWZpY2F0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlU2V2ZXJpdGllcyA9IChub3RpZmljYXRpb24pID0+IHtcbiAgbGV0IHZhbHVlO1xuICBzd2l0Y2ggKG5vdGlmaWNhdGlvbi5zZXZlcml0eSkge1xuICAgIGNhc2UgJ21lZGl1bSc6XG4gICAgICB2YWx1ZSA9ICcwJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2hpZ2gnOlxuICAgICAgdmFsdWUgPSAnMSc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdleHRyZW1lJzpcbiAgICAgIHZhbHVlID0gJzInO1xuICB9XG4gIG5vdGlmaWNhdGlvbi5zZXZlcml0eSA9IHZhbHVlO1xuICByZXR1cm4gbm90aWZpY2F0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdE5vdGlmaWNhdGlvbiA9IChuZXdOb3RpZmljYXRpb24pID0+IHtcbiAgbGV0IG5vdGlmaWNhdGlvbkNvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5ld05vdGlmaWNhdGlvbikpO1xuICBub3RpZmljYXRpb25Db3B5ID0gcGFyc2VOb3RpZmljYXRpb25BZHZhbmNlZFNlbGVjdGlvbihub3RpZmljYXRpb25Db3B5KTtcbiAgbm90aWZpY2F0aW9uQ29weSA9IGZvcm1hdFNlbmRWaWEobm90aWZpY2F0aW9uQ29weSk7XG4gIG5vdGlmaWNhdGlvbkNvcHkgPSBkZWxldGVBdHRyaWJ1dGVzKG5vdGlmaWNhdGlvbkNvcHksIG5ld05vdGlmaWNhdGlvbik7XG4gIG5vdGlmaWNhdGlvbkNvcHkgPSBwYXJzZVNldmVyaXRpZXMobm90aWZpY2F0aW9uQ29weSk7XG5cbiAgbGV0IG5vdGlmaWNhdGlvblRvU2F2ZSA9IHtcbiAgICB1c2VyOiB7XG4gICAgICBhbGVydF9jb25maWdzX2F0dHJpYnV0ZXM6IHtcbiAgICAgICAgLi4ubm90aWZpY2F0aW9uQ29weSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBub3RpZmljYXRpb25XaXRoVGltZVN0YW1wID0ge1xuICAgIHVzZXI6IHtcbiAgICAgIGFsZXJ0X2NvbmZpZ3NfYXR0cmlidXRlczoge30sXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBub3RpZmljYXRpb25XaXRoVGltZVN0YW1wLnVzZXIuYWxlcnRfY29uZmlnc19hdHRyaWJ1dGVzW2Ake25vdy5nZXRUaW1lKCl9YF0gPVxuICAgIG5vdGlmaWNhdGlvblRvU2F2ZS51c2VyLmFsZXJ0X2NvbmZpZ3NfYXR0cmlidXRlcztcblxuICByZXR1cm4gbm90aWZpY2F0aW9uV2l0aFRpbWVTdGFtcDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUNqQ0MsTUFBTSxFQUNOQyxZQUFZLEVBQ1pD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
212
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoYW5kbGVOb3RpZmljYXRpb25UeXBlIiwib3B0aW9uIiwibm90aWZpY2F0aW9uIiwic2V0TmV3Tm90aWZpY2F0aW9uIiwidmFsdWUiLCJhdmFpbGFibGVfdHlwZXMiLCJmaW5kIiwidHlwZSIsInByZXZTdGF0ZSIsImV4cG9ydHMiLCJoYW5kbGVTZXZlcml0aWVzIiwiZSIsInRhcmdldCIsInNldmVyaXR5IiwiaGFuZGxlRGlyZWN0SW1wYWN0IiwiY2hlY2tlZCIsImRpcmVjdF9pbXBhY3Rfb25seSIsImhhbmRsZVdhdGVyQXV0aG9yaXRpZXMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJuZXdOb3RpZmljYXRpb24iLCJ3YXRlcl9hdXRob3JpdGllcyIsImhhbmRsZVNlbGVjdGlvbkFuZFNldCIsImhhbmRsZVNvdXJjZXMiLCJwb2ludHMiLCJoYW5kbGVUYWdzIiwidGFncyIsImhhbmRsZVNlbnNvcnMiLCJzZW5zb3JzIiwiZmllbGQiLCJzZWxlY3Rpb25fdHlwZSIsInNldCIsIkFycmF5IiwiX29wdGlvbiRzZXQiLCJmb3JFYWNoIiwicHVzaCIsIkpTT04iLCJzdHJpbmdpZnkiLCJoYW5kbGVTZW5kVmlhIiwic2V0TW9kYWxEZXRhaWxzIiwiYWN0aW9ucyIsIm9wZW4iLCJpbnN0YW5jZSIsImhhbmRsZU5vdGlmaWNhdGlvblNhbXBsZSIsInBhcnNlZFZhbHVlIiwicHVtcF9vbmx5IiwidmFsaWRhdGVWYWx1ZUlzTm90QW5PYmplY3QiLCJpc0FycmF5IiwicGFyc2VOb3RpZmljYXRpb25BZHZhbmNlZFNlbGVjdGlvbiIsIndhdGVyQXV0aG9yaXRpZXMiLCJhbGxfYWR2YW5jZWRfc2VsZWN0aW9ucyIsInNlbGVjdGlvbiIsInBvaW50IiwiaWQiLCJkZWxldGVBdHRyaWJ1dGVzIiwiZm9ybWF0U2VuZFZpYSIsImZvcm1hdHRlZFZhbHVlIiwiZmxhdCIsInBhcnNlU2V2ZXJpdGllcyIsImZvcm1hdE5vdGlmaWNhdGlvbiIsIm5vdGlmaWNhdGlvbkNvcHkiLCJwYXJzZSIsIm5vdGlmaWNhdGlvblRvU2F2ZSIsInVzZXIiLCJhbGVydF9jb25maWdzX2F0dHJpYnV0ZXMiLCJub3RpZmljYXRpb25XaXRoVGltZVN0YW1wIiwibm93IiwiRGF0ZSIsImdldFRpbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnZXMvTm90aWZpY2F0aW9uc1BhZ2VWMi9jb21wb25lbnRzL05vdGlmaWNhdGlvbnNVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlTm90aWZpY2F0aW9uVHlwZSA9IChcbiAgb3B0aW9uLFxuICBub3RpZmljYXRpb24sXG4gIHNldE5ld05vdGlmaWNhdGlvbixcbikgPT4ge1xuICBjb25zdCB2YWx1ZSA9IG5vdGlmaWNhdGlvbi5hdmFpbGFibGVfdHlwZXMhLmZpbmQoXG4gICAgKHR5cGUpID0+IHR5cGUgPT09IG9wdGlvbi52YWx1ZSxcbiAgKTtcbiAgaWYgKHZhbHVlKVxuICAgIHNldE5ld05vdGlmaWNhdGlvbigocHJldlN0YXRlKSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdHlwZTogdmFsdWUsXG4gICAgfSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVNldmVyaXRpZXMgPSAoXG4gIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+LFxuICBzZXROZXdOb3RpZmljYXRpb24sXG4pID0+IHtcbiAgY29uc3QgdmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcblxuICBzZXROZXdOb3RpZmljYXRpb24oKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAuLi5wcmV2U3RhdGUsXG4gICAgc2V2ZXJpdHk6IHZhbHVlLFxuICB9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlRGlyZWN0SW1wYWN0ID0gKFxuICBlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PixcbiAgc2V0TmV3Tm90aWZpY2F0aW9uLFxuICBub3RpZmljYXRpb24sXG4pID0+IHtcbiAgaWYgKG5vdGlmaWNhdGlvbi50eXBlICE9PSAnUm9sbGluZ0V2ZW50QWxlcnRDb25maWcnKSByZXR1cm47XG4gIGNvbnN0IHZhbHVlID0gZS50YXJnZXQuY2hlY2tlZCA/ICcwJyA6ICcxJztcblxuICBzZXROZXdOb3RpZmljYXRpb24oKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAuLi5wcmV2U3RhdGUsXG4gICAgZGlyZWN0X2ltcGFjdF9vbmx5OiB2YWx1ZSxcbiAgfSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVdhdGVyQXV0aG9yaXRpZXMgPSAoXG4gIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+IHwgdW5kZWZpbmVkLFxuICBvcHRpb246IGFueSA9ICcnLFxuICBuZXdOb3RpZmljYXRpb24sXG4gIHNldE5ld05vdGlmaWNhdGlvbixcbikgPT4ge1xuICBjb25zdCB2YWx1ZSA9IHsgLi4ubmV3Tm90aWZpY2F0aW9uLndhdGVyX2F1dGhvcml0aWVzIH07XG4gIGhhbmRsZVNlbGVjdGlvbkFuZFNldChcbiAgICB2YWx1ZSxcbiAgICAnd2F0ZXJfYXV0aG9yaXRpZXMnLFxuICAgIGUsXG4gICAgb3B0aW9uLFxuICAgIHNldE5ld05vdGlmaWNhdGlvbixcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVTb3VyY2VzID0gKFxuICBlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PiB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uOiBhbnkgPSAnJyxcbiAgbmV3Tm90aWZpY2F0aW9uLFxuICBzZXROZXdOb3RpZmljYXRpb24sXG4pID0+IHtcbiAgY29uc3QgdmFsdWUgPSB7IC4uLm5ld05vdGlmaWNhdGlvbi5wb2ludHMgfTtcbiAgaGFuZGxlU2VsZWN0aW9uQW5kU2V0KHZhbHVlLCAncG9pbnRzJywgZSwgb3B0aW9uLCBzZXROZXdOb3RpZmljYXRpb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVRhZ3MgPSAoXG4gIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+IHwgdW5kZWZpbmVkLFxuICBvcHRpb246IGFueSA9ICcnLFxuICBuZXdOb3RpZmljYXRpb24sXG4gIHNldE5ld05vdGlmaWNhdGlvbixcbikgPT4ge1xuICBjb25zdCB2YWx1ZSA9IHsgLi4ubmV3Tm90aWZpY2F0aW9uLnRhZ3MgfTtcbiAgaGFuZGxlU2VsZWN0aW9uQW5kU2V0KHZhbHVlLCAndGFncycsIGUsIG9wdGlvbiwgc2V0TmV3Tm90aWZpY2F0aW9uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVTZW5zb3JzID0gKFxuICBlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PiB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uOiBhbnkgPSAnJyxcbiAgbmV3Tm90aWZpY2F0aW9uLFxuICBzZXROZXdOb3RpZmljYXRpb24sXG4pID0+IHtcbiAgY29uc3QgdmFsdWUgPSB7IC4uLm5ld05vdGlmaWNhdGlvbi5zZW5zb3JzIH07XG4gIGhhbmRsZVNlbGVjdGlvbkFuZFNldCh2YWx1ZSwgJ3NlbnNvcnMnLCBlLCBvcHRpb24sIHNldE5ld05vdGlmaWNhdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlU2VsZWN0aW9uQW5kU2V0ID0gKFxuICB2YWx1ZSxcbiAgZmllbGQ6IHN0cmluZyxcbiAgZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4gfCB1bmRlZmluZWQsXG4gIG9wdGlvbjogYW55ID0gJycsXG4gIHNldE5ld05vdGlmaWNhdGlvbixcbikgPT4ge1xuICBpZiAoZSAhPT0gdW5kZWZpbmVkICYmIGUudGFyZ2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YWx1ZS5zZWxlY3Rpb25fdHlwZSA9IGUudGFyZ2V0LnZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlLnNlbGVjdGlvbl90eXBlID0gb3B0aW9uLnNlbGVjdGlvbl90eXBlO1xuICB9XG5cbiAgaWYgKHZhbHVlLnNlbGVjdGlvbl90eXBlID09PSAnYWxsJykge1xuICAgIHZhbHVlLnNldCA9IG5ldyBBcnJheSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHNldDogc3RyaW5nW10gPSBbXTtcbiAgICBvcHRpb24uc2V0Py5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgIHNldC5wdXNoKEpTT04uc3RyaW5naWZ5KG9wdGlvbi52YWx1ZSkpO1xuICAgIH0pO1xuICAgIHZhbHVlLnNldCA9IHNldDtcbiAgfVxuXG4gIHNldE5ld05vdGlmaWNhdGlvbigocHJldlN0YXRlKSA9PiAoe1xuICAgIC4uLnByZXZTdGF0ZSxcbiAgICBbZmllbGRdOiB2YWx1ZSxcbiAgfSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVNlbmRWaWEgPSAoXG4gIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+LFxuICBuZXdOb3RpZmljYXRpb24sXG4gIHNldE5ld05vdGlmaWNhdGlvbixcbiAgc2V0TW9kYWxEZXRhaWxzLFxuKSA9PiB7XG4gIGNvbnN0IHZhbHVlID0geyAuLi5uZXdOb3RpZmljYXRpb24uYWN0aW9ucyB9O1xuICBjb25zdCBmaWVsZCA9IGUudGFyZ2V0LnZhbHVlO1xuICB2YWx1ZVtmaWVsZF0gPSAhdmFsdWVbZmllbGRdO1xuXG4gIGlmIChmaWVsZCA9PT0gJ3NtcycgfHwgZmllbGQgPT09ICd0ZWxlZ3JhbScpIHtcbiAgICBzZXRNb2RhbERldGFpbHMoeyBvcGVuOiB0cnVlLCBpbnN0YW5jZTogZmllbGQgfSk7XG4gIH1cblxuICBzZXROZXdOb3RpZmljYXRpb24oKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAuLi5wcmV2U3RhdGUsXG4gICAgYWN0aW9uczogdmFsdWUsXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVOb3RpZmljYXRpb25TYW1wbGUgPSAoXG4gIGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+LFxuICBzZXROZXdOb3RpZmljYXRpb24sXG4pID0+IHtcbiAgY29uc3QgdmFsdWUgPSBlLnRhcmdldC5jaGVja2VkO1xuICBsZXQgcGFyc2VkVmFsdWUgPSB2YWx1ZSA/ICcxJyA6ICcwJztcbiAgc2V0TmV3Tm90aWZpY2F0aW9uKChwcmV2U3RhdGUpID0+ICh7XG4gICAgLi4ucHJldlN0YXRlLFxuICAgIHB1bXBfb25seTogcGFyc2VkVmFsdWUsXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVZhbHVlSXNOb3RBbk9iamVjdCA9ICh2YWx1ZSkgPT4ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHZhbHVlICE9PSB1bmRlZmluZWRcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZU5vdGlmaWNhdGlvbkFkdmFuY2VkU2VsZWN0aW9uID0gKG5vdGlmaWNhdGlvbikgPT4ge1xuICAvLyBJZiB0aGVyZSdsbCBiZSBhIGZ1dHVyZSByZXF1aXJlbWVudCB0byBhZGQgYW5vdGhlciBBZHZhbmNlZFNlbGVjdGlvbiBmaWVsZHMsIHBsZWFzZSBhZGQgdGhlbSByaWdodCBiZWxvd1xuXG4gIGxldCBwb2ludHMgPSBub3RpZmljYXRpb24ucG9pbnRzO1xuICBsZXQgd2F0ZXJBdXRob3JpdGllcyA9IG5vdGlmaWNhdGlvbi53YXRlcl9hdXRob3JpdGllcztcbiAgbGV0IHRhZ3MgPSBub3RpZmljYXRpb24udGFncztcbiAgbGV0IHNlbnNvcnMgPSBub3RpZmljYXRpb24uc2Vuc29ycztcblxuICBjb25zdCBhbGxfYWR2YW5jZWRfc2VsZWN0aW9ucyA9IFtwb2ludHMsIHdhdGVyQXV0aG9yaXRpZXMsIHRhZ3MsIHNlbnNvcnNdO1xuXG4gIGFsbF9hZHZhbmNlZF9zZWxlY3Rpb25zLmZvckVhY2goKHNlbGVjdGlvbikgPT4ge1xuICAgIGlmIChcbiAgICAgIHZhbGlkYXRlVmFsdWVJc05vdEFuT2JqZWN0KFxuICAgICAgICBzZWxlY3Rpb24gIT09IHVuZGVmaW5lZCAmJiBzZWxlY3Rpb24uc2V0ICE9PSBudWxsICYmIHNlbGVjdGlvbi5zZXRbMF0sXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb25zdCBzZXQ6IHN0cmluZ1tdID0gW107XG4gICAgICBzZWxlY3Rpb24uc2V0LmZvckVhY2goKHBvaW50KSA9PiB7XG4gICAgICAgIHNldC5wdXNoKEpTT04uc3RyaW5naWZ5KHBvaW50LmlkKSk7XG4gICAgICB9KTtcblxuICAgICAgc2VsZWN0aW9uLnNldCA9IHNldDtcbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5zZXQgIT09IHVuZGVmaW5lZCAmJiBzZWxlY3Rpb24uc2V0ID09PSBudWxsKSB7XG4gICAgICBzZWxlY3Rpb24uc2V0ID0gW107XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbm90aWZpY2F0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUF0dHJpYnV0ZXMgPSAobm90aWZpY2F0aW9uLCBuZXdOb3RpZmljYXRpb24pID0+IHtcbiAgLy8gTWFrZSBzdXJlIHRvIHJlbW92ZSB1bm5lY2Vzc2FyeSBhdHRyaWJ1dGVzIGZvciBzb21lIEFsZXJ0Q29uZmlnc1xuXG4gIGRlbGV0ZSBub3RpZmljYXRpb24uYXZhaWxhYmxlX3R5cGVzO1xuICBpZiAoXG4gICAgbmV3Tm90aWZpY2F0aW9uLnR5cGUgIT09ICdQb2xsdXRpb25BbGVydENvbmZpZycgJiZcbiAgICBub3RpZmljYXRpb24udHlwZSAhPT0gJ1JvbGxpbmdFdmVudEFsZXJ0Q29uZmlnJ1xuICApXG4gICAgZGVsZXRlIG5vdGlmaWNhdGlvbi5zZXZlcml0eTtcbiAgaWYgKFxuICAgIG5ld05vdGlmaWNhdGlvbi50eXBlICE9PSAnUG9sbHV0aW9uQWxlcnRDb25maWcnICYmXG4gICAgbm90aWZpY2F0aW9uLnR5cGUgIT09ICdSb2xsaW5nRXZlbnRBbGVydENvbmZpZydcbiAgKVxuICAgIGRlbGV0ZSBub3RpZmljYXRpb24ucHVtcF9vbmx5O1xuICBpZiAobmV3Tm90aWZpY2F0aW9uLnR5cGUgPT09ICdXYmVXZWVrbHlEaWdlc3RBbGVydENvbmZpZycpXG4gICAgZGVsZXRlIG5vdGlmaWNhdGlvbi5wb2ludHM7XG4gIGlmIChuZXdOb3RpZmljYXRpb24udHlwZSAhPT0gJ1diZVdlZWtseURpZ2VzdEFsZXJ0Q29uZmlnJylcbiAgICBkZWxldGUgbm90aWZpY2F0aW9uLnRhZ3M7XG4gIGlmIChuZXdOb3RpZmljYXRpb24udHlwZSAhPT0gJ0RhdGFsb2dnZXJUaHJlc2hvbGRBbGVydENvbmZpZycpXG4gICAgZGVsZXRlIG5vdGlmaWNhdGlvbi5zZW5zb3JzO1xuXG4gIG5vdGlmaWNhdGlvblsnYWxlcnRfdHlwZSddID0gbm90aWZpY2F0aW9uLnR5cGU7XG4gIG5vdGlmaWNhdGlvblsnX2Rlc3Ryb3knXSA9IDA7XG5cbiAgcmV0dXJuIG5vdGlmaWNhdGlvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRTZW5kVmlhID0gKG5vdGlmaWNhdGlvbikgPT4ge1xuICBsZXQgZm9ybWF0dGVkVmFsdWU6IGFueSA9IFtdO1xuICBpZiAobm90aWZpY2F0aW9uLmFjdGlvbnNbJ3RlbGVncmFtJ10pXG4gICAgZm9ybWF0dGVkVmFsdWUucHVzaChbJ1NlbmRUZWxlZ3JhbUFjdGlvbicsICcwJ10pO1xuICBpZiAobm90aWZpY2F0aW9uLmFjdGlvbnNbJ2VtYWlsJ10pXG4gICAgZm9ybWF0dGVkVmFsdWUucHVzaChbJ1NlbmRFbWFpbEFjdGlvbicsICcwJ10pO1xuICAvLyBpZiAobm90aWZpY2F0aW9uLmFjdGlvbnNbJ3NtcyddKSBmb3JtYXR0ZWRWYWx1ZS5wdXNoKFsnU2VuZFNtc0FjdGlvbicsICcwJ10pO1xuICBub3RpZmljYXRpb24uYWN0aW9ucyA9IGZvcm1hdHRlZFZhbHVlLmZsYXQoKTtcblxuICByZXR1cm4gbm90aWZpY2F0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlU2V2ZXJpdGllcyA9IChub3RpZmljYXRpb24pID0+IHtcbiAgbGV0IHZhbHVlO1xuICBzd2l0Y2ggKG5vdGlmaWNhdGlvbi5zZXZlcml0eSkge1xuICAgIGNhc2UgJ21lZGl1bSc6XG4gICAgICB2YWx1ZSA9ICcwJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2hpZ2gnOlxuICAgICAgdmFsdWUgPSAnMSc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdleHRyZW1lJzpcbiAgICAgIHZhbHVlID0gJzInO1xuICB9XG4gIG5vdGlmaWNhdGlvbi5zZXZlcml0eSA9IHZhbHVlO1xuICByZXR1cm4gbm90aWZpY2F0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdE5vdGlmaWNhdGlvbiA9IChuZXdOb3RpZmljYXRpb24pID0+IHtcbiAgbGV0IG5vdGlmaWNhdGlvbkNvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5ld05vdGlmaWNhdGlvbikpO1xuICBub3RpZmljYXRpb25Db3B5ID0gcGFyc2VOb3RpZmljYXRpb25BZHZhbmNlZFNlbGVjdGlvbihub3RpZmljYXRpb25Db3B5KTtcbiAgbm90aWZpY2F0aW9uQ29weSA9IGZvcm1hdFNlbmRWaWEobm90aWZpY2F0aW9uQ29weSk7XG4gIG5vdGlmaWNhdGlvbkNvcHkgPSBkZWxldGVBdHRyaWJ1dGVzKG5vdGlmaWNhdGlvbkNvcHksIG5ld05vdGlmaWNhdGlvbik7XG4gIG5vdGlmaWNhdGlvbkNvcHkgPSBwYXJzZVNldmVyaXRpZXMobm90aWZpY2F0aW9uQ29weSk7XG5cbiAgbGV0IG5vdGlmaWNhdGlvblRvU2F2ZSA9IHtcbiAgICB1c2VyOiB7XG4gICAgICBhbGVydF9jb25maWdzX2F0dHJpYnV0ZXM6IHtcbiAgICAgICAgLi4ubm90aWZpY2F0aW9uQ29weSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBub3RpZmljYXRpb25XaXRoVGltZVN0YW1wID0ge1xuICAgIHVzZXI6IHtcbiAgICAgIGFsZXJ0X2NvbmZpZ3NfYXR0cmlidXRlczoge30sXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBub3RpZmljYXRpb25XaXRoVGltZVN0YW1wLnVzZXIuYWxlcnRfY29uZmlnc19hdHRyaWJ1dGVzW2Ake25vdy5nZXRUaW1lKCl9YF0gPVxuICAgIG5vdGlmaWNhdGlvblRvU2F2ZS51c2VyLmFsZXJ0X2NvbmZpZ3NfYXR0cmlidXRlcztcblxuICByZXR1cm4gbm90aWZpY2F0aW9uV2l0aFRpbWVTdGFtcDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVPLE1BQU1BLHNCQUFzQixHQUFHQSxDQUNwQ0MsTUFBTSxFQUNOQyxZQUFZLEVBQ1pDLGtCQUFrQixLQUNmO0VBQ0gsTUFBTUMsS0FBSyxHQUFHRixZQUFZLENBQUNHLGVBQWUsQ0FBRUMsSUFBSSxDQUM3Q0MsSUFBSSxJQUFLQSxJQUFJLEtBQUtOLE1BQU0sQ0FBQ0csS0FDNUIsQ0FBQztFQUNELElBQUlBLEtBQUssRUFDUEQsa0JBQWtCLENBQUVLLFNBQVMsS0FBTTtJQUNqQyxHQUFHQSxTQUFTO0lBQ1pELElBQUksRUFBRUg7RUFDUixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFBQ0ssT0FBQSxDQUFBVCxzQkFBQSxHQUFBQSxzQkFBQTtBQUVLLE1BQU1VLGdCQUFnQixHQUFHQSxDQUM5QkMsQ0FBc0MsRUFDdENSLGtCQUFrQixLQUNmO0VBQ0gsTUFBTUMsS0FBSyxHQUFHTyxDQUFDLENBQUNDLE1BQU0sQ0FBQ1IsS0FBSztFQUU1QkQsa0JBQWtCLENBQUVLLFNBQVMsS0FBTTtJQUNqQyxHQUFHQSxTQUFTO0lBQ1pLLFFBQVEsRUFBRVQ7RUFDWixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFBQ0ssT0FBQSxDQUFBQyxnQkFBQSxHQUFBQSxnQkFBQTtBQUVLLE1BQU1JLGtCQUFrQixHQUFHQSxDQUNoQ0gsQ0FBc0MsRUFDdENSLGtCQUFrQixFQUNsQkQsWUFBWSxLQUNUO0VBQ0gsSUFBSUEsWUFBWSxDQUFDSyxJQUFJLEtBQUsseUJB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