@kando-env/kando-ui 1.2.354-alpha.7 → 1.2.354

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