@kando-env/kando-ui 1.2.228-alpha.3 → 1.2.228-alpha.32

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 (569) hide show
  1. package/lib/Router.js +38 -106
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +14 -46
  3. package/lib/Widgets/EventsRow/EventsRow.js +17 -46
  4. package/lib/Widgets/Map/GraphUtils.js +2 -5
  5. package/lib/Widgets/Map/Map.js +59 -88
  6. package/lib/Widgets/Map/MapUtils.js +6 -57
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +9 -31
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +10 -25
  9. package/lib/Widgets/Map/edges/Edge.js +11 -34
  10. package/lib/Widgets/Map/edges/Edges.js +13 -24
  11. package/lib/Widgets/Map/edges/arrows/Arrows.js +9 -24
  12. package/lib/Widgets/Map/events/Event.js +9 -27
  13. package/lib/Widgets/Map/events/EventIndicator.js +21 -46
  14. package/lib/Widgets/Map/events/EventPath.js +7 -24
  15. package/lib/Widgets/Map/events/EventUtils.js +5 -55
  16. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +7 -23
  17. package/lib/Widgets/Map/events/PointOfEvent.js +7 -38
  18. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +5 -17
  19. package/lib/Widgets/Map/events/Snail.js +9 -23
  20. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +17 -58
  21. package/lib/Widgets/Map/map/FloatingGraph.js +4 -20
  22. package/lib/Widgets/Map/map/GraphDateButton.js +4 -10
  23. package/lib/Widgets/Map/matchGraph/MatchGraph.js +5 -11
  24. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +5 -11
  25. package/lib/Widgets/Map/points/PointIcon.js +7 -23
  26. package/lib/Widgets/Map/points/PointMarker.js +15 -25
  27. package/lib/Widgets/Map/points/PointMarkers.js +18 -26
  28. package/lib/Widgets/Map/points/PointUtils.js +12 -95
  29. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +17 -53
  30. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +6 -23
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +3 -17
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +2 -6
  33. package/lib/Widgets/MostPolluting/Areas/Areas.js +21 -57
  34. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +1 -1
  35. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  36. package/lib/Widgets/MostPolluting/Areas/styles.js +2 -8
  37. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +4 -12
  38. package/lib/Widgets/MostPolluting/Factories/Factories.js +32 -68
  39. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +5 -22
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +2 -11
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +5 -18
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +4 -8
  43. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +1 -1
  44. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  45. package/lib/Widgets/MostPolluting/Factories/styles.js +2 -8
  46. package/lib/Widgets/MostPolluting/MostPolluting.js +6 -21
  47. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +14 -18
  48. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +3 -10
  49. package/lib/Widgets/MostPolluting/ShowMore/styles.js +2 -6
  50. package/lib/Widgets/MostPolluting/assets/index.js +18 -29
  51. package/lib/Widgets/MostPolluting/components/ChangePercent.js +2 -17
  52. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +16 -27
  53. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +5 -27
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +26 -34
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +5 -21
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +30 -44
  57. package/lib/Widgets/MostPolluting/models.js +1 -1
  58. package/lib/Widgets/MostPolluting/styles.js +2 -8
  59. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +3 -10
  60. package/lib/Widgets/PotentialImpactSummary/Icon.js +2 -12
  61. package/lib/Widgets/PotentialImpactSummary/index.js +9 -31
  62. package/lib/Widgets/PotentialImpactSummary/index.test.js +18 -37
  63. package/lib/Widgets/PotentialImpactSummary/styles.js +3 -16
  64. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  65. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +5 -11
  66. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +8 -22
  67. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +20 -30
  68. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +16 -25
  69. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +9 -25
  70. package/lib/Widgets/QualitySummary/QualitySummary.js +9 -25
  71. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +2 -2
  72. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  73. package/lib/Widgets/QualitySummary/styles.js +3 -16
  74. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +11 -24
  75. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +11 -38
  76. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +10 -19
  77. package/lib/Widgets/UtilityInformation/UtilityInformation.js +26 -51
  78. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  79. package/lib/Widgets/UtilityInformation/styles.js +4 -26
  80. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +2 -2
  81. package/lib/assets/icons/index.js +5 -8
  82. package/lib/assets/icons/kandoStepper/index.js +9 -14
  83. package/lib/components/ApplyButton/ApplyButton.js +6 -12
  84. package/lib/components/ApplyButton/index.js +2 -5
  85. package/lib/components/Backdrop/Backdrop.js +3 -9
  86. package/lib/components/ContentLoader/ContentLoader.js +8 -13
  87. package/lib/components/ContentLoader/index.js +1 -2
  88. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +8 -15
  89. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +3 -9
  90. package/lib/components/CustomInputs/DoubleTabs/styles.js +3 -11
  91. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +7 -22
  92. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +2 -6
  93. package/lib/components/CustomInputs/Search/Search.js +15 -42
  94. package/lib/components/CustomInputs/Search/index.js +2 -5
  95. package/lib/components/CustomInputs/Select/Select.js +15 -35
  96. package/lib/components/CustomInputs/Select/Select.stories.js +3 -9
  97. package/lib/components/DamageType/DamageType.js +39 -80
  98. package/lib/components/DamageType/index.js +2 -5
  99. package/lib/components/DataLoaderError/DataLoaderError.js +5 -11
  100. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +7 -17
  101. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +18 -38
  102. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +14 -41
  103. package/lib/components/DischargeHeatmap/HighchartsOptions.js +7 -11
  104. package/lib/components/DischargeHeatmap/index.js +2 -5
  105. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -4
  106. package/lib/components/DischargeHeatmap/popupText.js +2 -17
  107. package/lib/components/DischargeHeatmap/titles.js +2 -9
  108. package/lib/components/DischargeHeatmap/types.js +1 -1
  109. package/lib/components/ErrorBoundary.js +4 -16
  110. package/lib/components/Events/Events.js +7 -34
  111. package/lib/components/Events/index.js +2 -5
  112. package/lib/components/Graph/Graph.js +35 -80
  113. package/lib/components/Graph/index.js +2 -5
  114. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +2 -8
  115. package/lib/components/Header/Breadcrumbs/index.js +2 -5
  116. package/lib/components/Header/DoubleTabs/DoubleTabs.js +16 -34
  117. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +3 -9
  118. package/lib/components/Header/DoubleTabs/styles.js +3 -11
  119. package/lib/components/Header/Header.js +2 -8
  120. package/lib/components/Header/Header.stories.js +3 -9
  121. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +2 -12
  122. package/lib/components/Header/InfoBar/InfoBar.js +6 -34
  123. package/lib/components/Header/InfoBar/Search/Control.js +3 -14
  124. package/lib/components/Header/InfoBar/Search/GroupLabel.js +2 -13
  125. package/lib/components/Header/InfoBar/Search/Search.js +7 -30
  126. package/lib/components/Header/InfoBar/Search/SearchContainer.js +6 -25
  127. package/lib/components/Header/InfoBar/Search/index.js +2 -5
  128. package/lib/components/Header/InfoBar/Search/searchStyle.js +2 -5
  129. package/lib/components/Header/KandoNavbar/KandoNavbar.js +48 -95
  130. package/lib/components/Header/KandoNavbar/index.js +2 -5
  131. package/lib/components/Header/Slideshow/Slideshow.js +33 -71
  132. package/lib/components/Header/Slideshow/index.js +2 -5
  133. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +2 -8
  134. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +3 -16
  135. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +2 -16
  136. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +8 -25
  137. package/lib/components/Header/Toolbar/Toolbar.js +49 -89
  138. package/lib/components/InfoBar/InfoBar.js +10 -27
  139. package/lib/components/InfoBar/InfoBar.stories.js +3 -9
  140. package/lib/components/KandoModal/KandoModal.js +21 -46
  141. package/lib/components/KandoModal/index.js +2 -5
  142. package/lib/components/Link.js +3 -12
  143. package/lib/components/Links/CustomRedirect/CustomRedirect.js +4 -13
  144. package/lib/components/Links/StyledLink/StyledLink.js +7 -17
  145. package/lib/components/Links/StyledNavLink/StyledNavLink.js +5 -15
  146. package/lib/components/LiveEvents/CarouselSlide.js +6 -12
  147. package/lib/components/LiveEvents/LiveEvents.js +2 -11
  148. package/lib/components/LiveEvents/index.js +2 -5
  149. package/lib/components/LoaderByPercent/LoaderByPercent.js +14 -24
  150. package/lib/components/Map/Map.js +14 -30
  151. package/lib/components/Map/index.js +2 -5
  152. package/lib/components/Modal/Modal.js +4 -11
  153. package/lib/components/NarrowHeader.js +2 -13
  154. package/lib/components/PointInfo/PointInfo.js +11 -23
  155. package/lib/components/PointInfo/index.js +2 -5
  156. package/lib/components/PopupModal/PopupModal.js +7 -18
  157. package/lib/components/PopupModal/PopupModal.stories.js +3 -12
  158. package/lib/components/Sector/Sector.js +5 -14
  159. package/lib/components/Sector/Sector.test.js +4 -9
  160. package/lib/components/Sector/index.js +2 -5
  161. package/lib/components/Sector/sectorIcons.js +2 -28
  162. package/lib/components/SevereEvent/Eta/Eta.js +16 -43
  163. package/lib/components/SevereEvent/Eta/styles.js +2 -6
  164. package/lib/components/SevereEvent/SevereEvent.js +17 -40
  165. package/lib/components/Spinner/Spinner.js +6 -11
  166. package/lib/components/Spinner/Spinner.stories.js +3 -9
  167. package/lib/components/Spinner/index.js +2 -5
  168. package/lib/components/Spinner/styles.js +2 -10
  169. package/lib/components/Tabs/Tabs.js +7 -29
  170. package/lib/components/Tabs/Tabs.stories.js +3 -9
  171. package/lib/components/Tabs/assets/index.js +1 -6
  172. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +4 -16
  173. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +14 -47
  174. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +14 -40
  175. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +2 -5
  176. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +10 -30
  177. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +5 -10
  178. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +2 -5
  179. package/lib/components/TimeRangeSelector/TimeRangeList.js +6 -17
  180. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +13 -28
  181. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +13 -40
  182. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +3 -11
  183. package/lib/components/TimeRangeSelector/constants.js +2 -2
  184. package/lib/components/TimeRangeSelector/index.js +2 -5
  185. package/lib/components/Toggle/Toggle.js +9 -25
  186. package/lib/components/Toggle/index.js +2 -5
  187. package/lib/components/TrendGraph/TrendGraph.js +19 -54
  188. package/lib/components/TrendGraph/index.js +2 -5
  189. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +12 -39
  190. package/lib/components/TrendGraphNVL/index.js +2 -5
  191. package/lib/development-environment/index.js +2 -14
  192. package/lib/development-environment/mock/browser.js +2 -9
  193. package/lib/development-environment/mock/get.js +1 -5
  194. package/lib/development-environment/mock/handlers.js +1 -26
  195. package/lib/development-environment/mock/mockBus.js +2 -7
  196. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +1 -1
  197. package/lib/development-environment/mock/mockObjects/areaInformation.js +1 -1
  198. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +1 -1
  199. package/lib/development-environment/mock/mockObjects/areaSitesData.js +1 -1
  200. package/lib/development-environment/mock/mockObjects/areasJson.js +1 -1
  201. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +1 -1
  202. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +1 -1
  203. package/lib/development-environment/mock/mockObjects/data-menuData.js +1 -1
  204. package/lib/development-environment/mock/mockObjects/data-search.js +1 -1
  205. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +1 -1
  206. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +1 -1
  207. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +1 -1
  208. package/lib/development-environment/mock/mockObjects/eventsJson.js +1 -1
  209. package/lib/development-environment/mock/mockObjects/metascore.js +1 -1
  210. package/lib/development-environment/mock/mockObjects/permissionsJson.js +1 -1
  211. package/lib/development-environment/mock/mockObjects/pointsJson.js +1 -1
  212. package/lib/development-environment/mock/mockObjects/site-info.js +1 -1
  213. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +1 -1
  214. package/lib/development-environment/togly/ToglyDashboard.js +6 -26
  215. package/lib/development-environment/togly/ToglyItem.js +7 -29
  216. package/lib/development-environment/togly/flags.js +1 -1
  217. package/lib/development-environment/togly/init.js +2 -7
  218. package/lib/development-environment/togly/macro.js +7 -9
  219. package/lib/development-environment/togly/useDoubleKeyDown.js +1 -8
  220. package/lib/development-environment/togly/useLocalStorage.js +13 -20
  221. package/lib/hooks/useApi.js +38 -59
  222. package/lib/hooks/useApiWithDashboardQuery.js +11 -31
  223. package/lib/hooks/useClickOutside.js +1 -5
  224. package/lib/hooks/useInitializeHeaders.js +2 -8
  225. package/lib/hooks/useKandoFetch.js +14 -28
  226. package/lib/hooks/useMap.js +11 -38
  227. package/lib/hooks/useNavContext.js +14 -23
  228. package/lib/hooks/useQueryURL.js +1 -4
  229. package/lib/hooks/useRemoveExistingLayers.js +2 -7
  230. package/lib/hooks/useUpdateEventBodyTail.js +1 -10
  231. package/lib/hooks/useUserTimeZone.js +1 -9
  232. package/lib/hooks/useUserTimeZone.test.js +3 -13
  233. package/lib/hooks/useWindowSize.js +15 -20
  234. package/lib/index.js +14 -30
  235. package/lib/macros/getVersion.js +2 -3
  236. package/lib/models/IAction.js +1 -1
  237. package/lib/models/IAppState.js +1 -1
  238. package/lib/pages/AreaPage/AreaPage.js +31 -64
  239. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +7 -20
  240. package/lib/pages/AreaPage/Dashboard/Dashboard.js +4 -27
  241. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +13 -39
  242. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +7 -9
  243. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +30 -68
  244. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +2 -11
  245. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +4 -16
  246. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +4 -8
  247. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  248. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +1 -1
  249. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +3 -11
  250. package/lib/pages/AssessmentPage/AssessmentPage.js +7 -34
  251. package/lib/pages/CannyWidget/Feedback.js +12 -29
  252. package/lib/pages/CovidPage/CovidPage.js +3 -18
  253. package/lib/pages/CovidPage/components/Body.js +11 -37
  254. package/lib/pages/CovidPage/components/Map.js +22 -42
  255. package/lib/pages/CovidPage/components/Sidebar.js +6 -22
  256. package/lib/pages/CovidPage/components/Summary.js +10 -33
  257. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +12 -39
  258. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +2 -5
  259. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +15 -45
  260. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +2 -5
  261. package/lib/pages/CovidPage/components/areas/Area.js +8 -37
  262. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +6 -49
  263. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +7 -22
  264. package/lib/pages/CovidPage/components/areas/AreasList.js +16 -37
  265. package/lib/pages/CovidPage/components/areas/Sort.js +7 -23
  266. package/lib/pages/CovidPage/components/nvlStatusHelper.js +2 -11
  267. package/lib/pages/EventsPage/Body/Body.js +4 -23
  268. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +13 -32
  269. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +12 -32
  270. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +5 -12
  271. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +4 -12
  272. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +6 -11
  273. package/lib/pages/EventsPage/DragAndDropArea/index.js +2 -5
  274. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +9 -37
  275. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +3 -22
  276. package/lib/pages/EventsPage/EventsPage.js +3 -17
  277. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +12 -37
  278. package/lib/pages/EventsPage/events/MoreInfo.js +3 -23
  279. package/lib/pages/EventsPage/events/Sidebar.js +7 -22
  280. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +7 -33
  281. package/lib/pages/EventsPage/events/event_info/EventDetails.js +9 -33
  282. package/lib/pages/EventsPage/events/event_info/EventInfo.js +14 -45
  283. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +3 -15
  284. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +12 -44
  285. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +2 -13
  286. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +10 -34
  287. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +2 -9
  288. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/LineChartYear/LineChartYear.js +9 -31
  289. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/MockHistoryInformation.js +3 -11
  290. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +7 -25
  291. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsLineChart.js +6 -27
  292. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +6 -26
  293. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +8 -37
  294. package/lib/pages/EventsPage/events/event_info/samplings/Sampling.js +4 -16
  295. package/lib/pages/EventsPage/events/event_info/samplings/Samplings.js +3 -11
  296. package/lib/pages/EventsPage/events/event_info/sources/Source.js +9 -32
  297. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +6 -24
  298. package/lib/pages/EventsPage/events/events_list/EventItem.js +5 -28
  299. package/lib/pages/EventsPage/events/events_list/EventUtils.js +3 -14
  300. package/lib/pages/EventsPage/events/events_list/EventsList.js +41 -107
  301. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +13 -36
  302. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +33 -100
  303. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +12 -59
  304. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +7 -21
  305. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +17 -42
  306. package/lib/pages/EventsPage/events/events_list/Sort.js +6 -27
  307. package/lib/pages/ImportFileWizard/FileUploadRespones.js +5 -20
  308. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +4 -10
  309. package/lib/pages/ImportFileWizard/ImportFile.js +12 -33
  310. package/lib/pages/ImportFileWizard/ResponseBody.js +4 -13
  311. package/lib/pages/ImportFileWizard/ValidationForm.js +8 -28
  312. package/lib/pages/ImportFileWizard/ValidationResponse.js +9 -35
  313. package/lib/pages/ImportFileWizard/importFileUtils.js +5 -6
  314. package/lib/pages/ImportFileWizard/index.js +2 -5
  315. package/lib/pages/ImportGisPage/ImportGisContainer.js +9 -31
  316. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +11 -28
  317. package/lib/pages/ImportGisPage/importGisUtils.js +6 -18
  318. package/lib/pages/ImportGisProcess/index.js +5 -19
  319. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -23
  320. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +4 -11
  321. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +2 -9
  322. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +27 -62
  323. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +3 -9
  324. package/lib/pages/NotificationsPage/Notification/Notification.js +9 -17
  325. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  326. package/lib/pages/NotificationsPage/Notifications.mock.js +1 -1
  327. package/lib/pages/NotificationsPage/Notifications.stories.js +3 -11
  328. package/lib/pages/NotificationsPage/NotificationsPage.js +14 -40
  329. package/lib/pages/NotificationsPage/assets/index.js +15 -24
  330. package/lib/pages/NotificationsPageV2/NotificationsPage.js +37 -87
  331. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +5 -25
  332. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +17 -44
  333. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +20 -53
  334. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +5 -48
  335. package/lib/pages/NotificationsPageV2/notificationUtils.js +3 -30
  336. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  337. package/lib/pages/OldSitePage/OldSitePage.js +65 -132
  338. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +4 -17
  339. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -9
  340. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +5 -10
  341. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +6 -13
  342. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +3 -13
  343. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +9 -27
  344. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +7 -21
  345. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -11
  346. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +3 -13
  347. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +11 -28
  348. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +5 -13
  349. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +30 -63
  350. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
  351. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +13 -11
  352. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +5 -22
  353. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +4 -19
  354. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +9 -17
  355. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +3 -18
  356. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  357. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +3 -11
  358. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +3 -8
  359. package/lib/pages/ProfilePage/Container.js +2 -6
  360. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +18 -47
  361. package/lib/pages/ProfilePage/ProfilePage.js +41 -92
  362. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +11 -36
  363. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +8 -18
  364. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +5 -18
  365. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +69 -111
  366. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +6 -25
  367. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +8 -16
  368. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +9 -30
  369. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +7 -26
  370. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +10 -22
  371. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +2 -14
  372. package/lib/pages/SamplingsPage/DesktopActions/index.js +2 -5
  373. package/lib/pages/SamplingsPage/NavigationDropdown.js +4 -22
  374. package/lib/pages/SamplingsPage/NewSamplingAction.js +29 -79
  375. package/lib/pages/SamplingsPage/SamplingMobileModal.js +13 -66
  376. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +6 -20
  377. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +3 -14
  378. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +24 -60
  379. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +6 -24
  380. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +2 -15
  381. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +113 -192
  382. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +13 -46
  383. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +16 -51
  384. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +17 -53
  385. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +7 -25
  386. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -9
  387. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +2 -12
  388. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +9 -40
  389. package/lib/pages/SamplingsPage/SamplingsMobileList.js +12 -38
  390. package/lib/pages/SamplingsPage/SamplingsPage.js +16 -43
  391. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +16 -52
  392. package/lib/pages/SamplingsPage/index.js +1 -3
  393. package/lib/pages/SamplingsPage/samplingsPageUtils.js +8 -31
  394. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +3 -11
  395. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -9
  396. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +4 -18
  397. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +7 -12
  398. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +16 -24
  399. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +8 -17
  400. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +19 -28
  401. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +3 -13
  402. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +11 -30
  403. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +7 -21
  404. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -11
  405. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +3 -13
  406. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +11 -28
  407. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +5 -13
  408. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +34 -72
  409. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
  410. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +13 -11
  411. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +6 -23
  412. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +4 -19
  413. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +18 -39
  414. package/lib/pages/SitePage/SamplingParameters/dataParser.js +15 -31
  415. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +3 -7
  416. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  417. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +3 -11
  418. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +3 -9
  419. package/lib/pages/SitePage/SiteInformation/ContributorItem.js +6 -13
  420. package/lib/pages/SitePage/SiteInformation/EmptyState.js +2 -11
  421. package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +6 -16
  422. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +19 -52
  423. package/lib/pages/SitePage/SiteInformation/style.js +3 -9
  424. package/lib/pages/SitePage/SitePage.js +36 -79
  425. package/lib/pages/UploadLabResult/index.js +2 -9
  426. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +12 -42
  427. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +3 -10
  428. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +3 -17
  429. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +3 -9
  430. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +11 -39
  431. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +2 -6
  432. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +2 -8
  433. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +2 -11
  434. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +8 -17
  435. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  436. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +2 -11
  437. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -6
  438. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +5 -29
  439. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +14 -20
  440. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +7 -20
  441. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -24
  442. package/lib/pages/WbeDashboard/ExpandableComponent.js +3 -15
  443. package/lib/pages/WbeDashboard/GraphWrapper.js +7 -30
  444. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +8 -23
  445. package/lib/pages/WbeDashboard/SearchInput.js +6 -26
  446. package/lib/pages/WbeDashboard/SummaryGraph.js +34 -69
  447. package/lib/pages/WbeDashboard/SummaryGraphModal.js +2 -14
  448. package/lib/pages/WbeDashboard/Tabs.js +4 -10
  449. package/lib/pages/WbeDashboard/WbeDashboardPage.js +27 -116
  450. package/lib/pages/WbeDashboard/WbeSummaryBar.js +10 -46
  451. package/lib/providers/Slideshow/SlideshowContext.js +3 -5
  452. package/lib/providers/Slideshow/SlideshowProvider.js +18 -35
  453. package/lib/providers/Slideshow/SlideshowRunner.js +7 -17
  454. package/lib/providers/UrlHistory/UrlHistoryContext.js +4 -8
  455. package/lib/providers/UrlHistory/UrlHistoryProvider.js +2 -16
  456. package/lib/providers/UrlHistory/index.js +6 -9
  457. package/lib/providers/UrlHistory/useLastVisited.js +1 -7
  458. package/lib/react-app-env.d.js +1 -1
  459. package/lib/store/ImportGis/action.js +1 -1
  460. package/lib/store/ImportGis/actionTypes.js +5 -6
  461. package/lib/store/ImportGis/actionsCreator.js +7 -17
  462. package/lib/store/ImportGis/models/gisImports.js +1 -1
  463. package/lib/store/ImportGis/reducer.js +3 -19
  464. package/lib/store/WBE/actionTypes.js +1 -1
  465. package/lib/store/WBE/actions.js +1 -3
  466. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  467. package/lib/store/WBE/models/IWBE.js +1 -1
  468. package/lib/store/WBE/models/IWBEState.js +1 -1
  469. package/lib/store/WBE/reducer.js +3 -10
  470. package/lib/store/areas/actionTypes.js +2 -2
  471. package/lib/store/areas/actions.js +3 -12
  472. package/lib/store/areas/models/IArea.js +1 -1
  473. package/lib/store/areas/models/IAreasState.js +1 -1
  474. package/lib/store/areas/reducer.js +1 -9
  475. package/lib/store/context/actionTypes.js +2 -2
  476. package/lib/store/context/actions.js +2 -6
  477. package/lib/store/context/contextMiddlewares.js +1 -9
  478. package/lib/store/context/models/INavContext.js +1 -1
  479. package/lib/store/context/models/INavContextState.js +1 -1
  480. package/lib/store/context/reducer.js +3 -10
  481. package/lib/store/dashboard/dashboardSlice.js +1 -3
  482. package/lib/store/dashboard/periodType.js +1 -1
  483. package/lib/store/edges/actionTypes.js +2 -2
  484. package/lib/store/edges/actions.js +3 -9
  485. package/lib/store/edges/models/IEdge.js +1 -1
  486. package/lib/store/edges/models/IEdgesState.js +1 -1
  487. package/lib/store/edges/reducer.js +3 -17
  488. package/lib/store/events/actionTypes.js +2 -2
  489. package/lib/store/events/actions.js +10 -28
  490. package/lib/store/events/models/IEvent.js +1 -1
  491. package/lib/store/events/models/IEventsState.js +1 -1
  492. package/lib/store/events/models/ISource.js +1 -1
  493. package/lib/store/events/reducer.js +4 -42
  494. package/lib/store/filters/IFilter.js +1 -1
  495. package/lib/store/filters/IFilterItem.js +1 -1
  496. package/lib/store/global/actionTypes.js +2 -2
  497. package/lib/store/global/actions.js +8 -20
  498. package/lib/store/global/models/IGlobalState.js +1 -1
  499. package/lib/store/global/reducer.js +3 -19
  500. package/lib/store/permissions/permissionsSlice.js +1 -6
  501. package/lib/store/points/actionTypes.js +2 -2
  502. package/lib/store/points/actions.js +1 -5
  503. package/lib/store/points/models/IGroup.js +1 -1
  504. package/lib/store/points/models/IPoint.js +1 -1
  505. package/lib/store/points/models/IPointsState.js +1 -1
  506. package/lib/store/points/reducer.js +1 -7
  507. package/lib/store/rootActionTypes.js +1 -1
  508. package/lib/store/rootActions.js +1 -3
  509. package/lib/store/rootReducer.js +5 -24
  510. package/lib/store/rootStore.js +5 -13
  511. package/lib/store/samplings/action.js +1 -1
  512. package/lib/store/samplings/actionTypes.js +5 -6
  513. package/lib/store/samplings/actionsCreator.js +2 -5
  514. package/lib/store/samplings/models/Samplings.js +1 -1
  515. package/lib/store/samplings/reducer.js +2 -10
  516. package/lib/styles/StylesLayout.js +2 -8
  517. package/lib/styles/theme/theme.js +2 -4
  518. package/lib/test/mocks/browser.js +4 -8
  519. package/lib/test/test-utils.js +12 -22
  520. package/lib/ui-kit/Button/Button.js +16 -24
  521. package/lib/ui-kit/Button/Button.test.js +8 -30
  522. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  523. package/lib/ui-kit/Checkbox/Checkbox.js +8 -22
  524. package/lib/ui-kit/DropDown/DropDown.js +6 -17
  525. package/lib/ui-kit/DropDown/DropDown.test.js +7 -13
  526. package/lib/ui-kit/DropDown/DropDownItem.js +6 -14
  527. package/lib/ui-kit/DropDown/DropdownToggle.js +3 -14
  528. package/lib/ui-kit/IconAction/IconAction.js +4 -10
  529. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +19 -54
  530. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +17 -28
  531. package/lib/ui-kit/KandoList/KandoList.js +6 -19
  532. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  533. package/lib/ui-kit/KandoTable/KandoTable.js +23 -39
  534. package/lib/ui-kit/KandoTable/KandoTable.test.js +2 -17
  535. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  536. package/lib/ui-kit/Layout/Layout.js +2 -9
  537. package/lib/ui-kit/MobileInput/MobileInput.js +19 -34
  538. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +9 -15
  539. package/lib/ui-kit/ModalConfirmation/index.js +1 -3
  540. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +6 -11
  541. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +4 -12
  542. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +4 -11
  543. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +6 -15
  544. package/lib/ui-kit/Tooltip/Tooltip.js +4 -9
  545. package/lib/ui-kit/index.js +1 -15
  546. package/lib/ui-kit/kandoStepper/KandoStepper.js +3 -8
  547. package/lib/utilities/ActionUtility.js +1 -2
  548. package/lib/utilities/Alert.js +3 -11
  549. package/lib/utilities/Analytics.js +2 -13
  550. package/lib/utilities/Array.js +2 -6
  551. package/lib/utilities/Enum.js +22 -39
  552. package/lib/utilities/ErrorBoundary.js +4 -19
  553. package/lib/utilities/File.js +43 -66
  554. package/lib/utilities/GetDir.js +5 -9
  555. package/lib/utilities/KandoDate.js +2 -8
  556. package/lib/utilities/KandoModal.js +9 -26
  557. package/lib/utilities/LocalStorage.js +2 -13
  558. package/lib/utilities/ThousandsToK.js +1 -3
  559. package/lib/utilities/TimeFormat.js +8 -23
  560. package/lib/utilities/Truncate.js +9 -31
  561. package/lib/utilities/edgesMath.js +9 -28
  562. package/lib/utilities/i18n.js +2 -15
  563. package/lib/utilities/kql.js +3 -10
  564. package/lib/utilities/map/icons.js +2 -19
  565. package/lib/utilities/scoreToColor.js +1 -8
  566. package/lib/utilities/time.js +3 -10
  567. package/lib/utilities/uploadToS3.js +2 -10
  568. package/lib/utilities/urls.js +5 -13
  569. package/package.json +4 -2
@@ -1,117 +1,75 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.default = void 0;
11
-
12
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
-
9
+ var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regeneratorRuntime"));
14
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
15
-
16
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
17
-
18
12
  var _styledComponents = _interopRequireDefault(require("styled-components"));
19
-
20
13
  var _react = _interopRequireWildcard(require("react"));
21
-
22
14
  var _reactBootstrap = require("react-bootstrap");
23
-
24
15
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
25
-
26
16
  var _reactDeviceDetect = require("react-device-detect");
27
-
28
17
  var _formik = require("formik");
29
-
30
18
  var Yup = _interopRequireWildcard(require("yup"));
31
-
32
19
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
33
-
34
20
  var _reactQuery = require("react-query");
35
-
36
21
  var _moment = _interopRequireDefault(require("moment"));
37
-
38
22
  var _axios = _interopRequireDefault(require("axios"));
39
-
40
23
  var _reactSelect = _interopRequireDefault(require("react-select"));
41
-
42
24
  var _reactToastify = require("react-toastify");
43
-
44
25
  var _reactI18next = require("react-i18next");
45
-
46
26
  var _reactDatepicker = _interopRequireDefault(require("react-datepicker"));
47
-
48
27
  var _Analytics = require("utilities/Analytics");
49
-
50
28
  var _uiKit = require("ui-kit");
51
-
52
29
  var _styleModule = _interopRequireDefault(require("./style.module.scss"));
53
-
54
30
  var _urls = require("utilities/urls");
55
-
56
31
  var _reactRedux = require("react-redux");
57
-
58
32
  var _actionsCreator = require("store/samplings/actionsCreator");
59
-
60
33
  var _IconAction = _interopRequireDefault(require("../../ui-kit/IconAction/IconAction"));
61
-
62
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
63
-
64
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
65
-
66
34
  var NewSamplingAction = function NewSamplingAction(_ref) {
67
35
  var waterAuthorityId = _ref.waterAuthorityId;
68
-
69
36
  var _useTranslation = (0, _reactI18next.useTranslation)(),
70
- t = _useTranslation.t;
71
-
37
+ t = _useTranslation.t;
72
38
  var _useState = (0, _react.useState)(false),
73
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
74
- isOpen = _useState2[0],
75
- setIsOpen = _useState2[1];
76
-
39
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
40
+ isOpen = _useState2[0],
41
+ setIsOpen = _useState2[1];
77
42
  var _useSelector = (0, _reactRedux.useSelector)(function (state) {
78
- return state.samplings_data;
79
- }),
80
- perPage = _useSelector.perPage;
81
-
43
+ return state.samplings_data;
44
+ }),
45
+ perPage = _useSelector.perPage;
82
46
  var dispatch = (0, _reactRedux.useDispatch)();
83
47
  var userInfo = (0, _reactRedux.useSelector)(function (state) {
84
48
  return state.permissions.user_info;
85
49
  });
86
-
87
- var _useQuery = (0, _reactQuery.useQuery)('selector_points', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
88
- var waterAuthorityPointsURL, response;
89
- return _regenerator.default.wrap(function _callee$(_context) {
90
- while (1) {
91
- switch (_context.prev = _context.next) {
50
+ var _useQuery = (0, _reactQuery.useQuery)('selector_points', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
51
+ var waterAuthorityPointsURL, response;
52
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
53
+ while (1) switch (_context.prev = _context.next) {
92
54
  case 0:
93
55
  waterAuthorityPointsURL = (0, _urls.urls)({
94
56
  waterAuthorityId: waterAuthorityId
95
57
  }).samplingsPage.getPoints.url;
96
58
  _context.next = 3;
97
59
  return _axios.default.get(waterAuthorityPointsURL);
98
-
99
60
  case 3:
100
61
  response = _context.sent;
101
62
  return _context.abrupt("return", response.data.data.points);
102
-
103
63
  case 5:
104
64
  case "end":
105
65
  return _context.stop();
106
66
  }
107
- }
108
- }, _callee);
109
- })), {
110
- refetchOnWindowFocus: false
111
- }),
112
- points = _useQuery.data,
113
- refetch = _useQuery.refetch;
114
-
67
+ }, _callee);
68
+ })), {
69
+ refetchOnWindowFocus: false
70
+ }),
71
+ points = _useQuery.data,
72
+ refetch = _useQuery.refetch;
115
73
  var createSamplingMutation = (0, _reactQuery.useMutation)(function (newSamplingValues) {
116
74
  // @ts-ignore
117
75
  _axios.default.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('[name=csrf-token]').content;
@@ -122,7 +80,6 @@ var NewSamplingAction = function NewSamplingAction(_ref) {
122
80
  _reactToastify.toast.success(t('samplings_page.sampling_created'), {
123
81
  position: 'top-center'
124
82
  });
125
-
126
83
  setIsOpen(false);
127
84
  }).catch(function (e) {
128
85
  _reactToastify.toast.error(t('samplings_page.sampling_not_created'), {
@@ -137,10 +94,12 @@ var NewSamplingAction = function NewSamplingAction(_ref) {
137
94
  }));
138
95
  dispatch((0, _actionsCreator.setSamplingData)({
139
96
  perPage: perPage
140
- })); // TODO: remove the above refresh hack and replace with the following - check KSD-2922
97
+ }));
98
+ // TODO: remove the above refresh hack and replace with the following - check KSD-2922
141
99
  // queryClient.invalidateQueries('the_samplings_list');
142
100
  }
143
101
  });
102
+
144
103
  (0, _react.useEffect)(function () {
145
104
  refetch();
146
105
  setIsOpen(false);
@@ -159,22 +118,18 @@ var NewSamplingAction = function NewSamplingAction(_ref) {
159
118
  type: 'sampling_type_rapid'
160
119
  }
161
120
  };
162
-
163
121
  var handleNewSamplingSubmit = function handleNewSamplingSubmit(values) {
164
122
  createSamplingMutation.mutate(values);
165
123
  };
166
-
167
124
  var waterAuthorityName = (0, _reactRedux.useSelector)(function (state) {
168
125
  return state.global_data.waterAuthorityName;
169
126
  });
170
-
171
127
  var handleOpenPopupAnalytics = function handleOpenPopupAnalytics() {
172
128
  (0, _Analytics.analyticsTrack)('Sampling Operation New Sampling Clicked', {
173
129
  water_authority: waterAuthorityId,
174
130
  utility_name: waterAuthorityName
175
131
  });
176
132
  };
177
-
178
133
  var NewSamplingButton = function NewSamplingButton() {
179
134
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !_reactDeviceDetect.isMobile && /*#__PURE__*/_react.default.createElement(_IconAction.default, {
180
135
  callback: function callback() {
@@ -194,7 +149,6 @@ var NewSamplingAction = function NewSamplingAction(_ref) {
194
149
  icon: _freeSolidSvgIcons.faPlus
195
150
  })));
196
151
  };
197
-
198
152
  return /*#__PURE__*/_react.default.createElement("div", {
199
153
  "data-test-id": "create-new-sampling",
200
154
  className: _styleModule.default.newSamplingActionDropdown
@@ -206,12 +160,11 @@ var NewSamplingAction = function NewSamplingAction(_ref) {
206
160
  validationSchema: NewSamplingValidationSchema
207
161
  }, function (_ref3) {
208
162
  var _errors$sampling, _errors$sampling2, _errors$sampling3, _errors$sampling4, _errors$sampling5;
209
-
210
163
  var handleSubmit = _ref3.handleSubmit,
211
- handleChange = _ref3.handleChange,
212
- values = _ref3.values,
213
- errors = _ref3.errors,
214
- setFieldValue = _ref3.setFieldValue;
164
+ handleChange = _ref3.handleChange,
165
+ values = _ref3.values,
166
+ errors = _ref3.errors,
167
+ setFieldValue = _ref3.setFieldValue;
215
168
  return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Form, {
216
169
  onSubmit: handleSubmit
217
170
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Form.Group, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Form.Label, null, t('samplings_page.samplings_table_cols.sampling_date')), /*#__PURE__*/_react.default.createElement(_reactDatepicker.default, {
@@ -223,7 +176,7 @@ var NewSamplingAction = function NewSamplingAction(_ref) {
223
176
  },
224
177
  calendarClassName: _styleModule.default.calendar,
225
178
  dateFormat: userInfo.date_time_format === 'us' ? 'MMM d, yyyy' : 'd/MM/yyyy'
226
- })), (errors === null || errors === void 0 ? void 0 : (_errors$sampling2 = errors.sampling) === null || _errors$sampling2 === void 0 ? void 0 : _errors$sampling2.date) ? /*#__PURE__*/_react.default.createElement("div", {
179
+ })), errors !== null && errors !== void 0 && (_errors$sampling2 = errors.sampling) !== null && _errors$sampling2 !== void 0 && _errors$sampling2.date ? /*#__PURE__*/_react.default.createElement("div", {
227
180
  className: _styleModule.default.validationError
228
181
  }, errors.sampling.date) : null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Form.Label, null, t('samplings_page.samplings_table_cols.site'), /*#__PURE__*/_react.default.createElement("span", {
229
182
  className: _styleModule.default.required
@@ -277,7 +230,6 @@ var NewSamplingAction = function NewSamplingAction(_ref) {
277
230
  }, t('samplings_page.create_button'))));
278
231
  })));
279
232
  };
280
-
281
233
  var NewSamplingTitle = _styledComponents.default.p.withConfig({
282
234
  displayName: "NewSamplingAction__NewSamplingTitle",
283
235
  componentId: "sc-1koa4p7-0"
@@ -285,7 +237,6 @@ var NewSamplingTitle = _styledComponents.default.p.withConfig({
285
237
  var theme = _ref4.theme;
286
238
  return theme.fontWeight.w700;
287
239
  });
288
-
289
240
  var MenuInputStyle = _styledComponents.default.div.attrs(function (props) {
290
241
  return {
291
242
  isOpen: props.isOpen
@@ -300,7 +251,6 @@ var MenuInputStyle = _styledComponents.default.div.attrs(function (props) {
300
251
  var theme = _ref6.theme;
301
252
  return theme.colorScheme.natural.n1;
302
253
  });
303
-
304
254
  var _default = NewSamplingAction;
305
255
  exports.default = _default;
306
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9TYW1wbGluZ3NQYWdlL05ld1NhbXBsaW5nQWN0aW9uLnRzeCJdLCJuYW1lcyI6WyJOZXdTYW1wbGluZ0FjdGlvbiIsIndhdGVyQXV0aG9yaXR5SWQiLCJ0IiwiaXNPcGVuIiwic2V0SXNPcGVuIiwic3RhdGUiLCJzYW1wbGluZ3NfZGF0YSIsInBlclBhZ2UiLCJkaXNwYXRjaCIsInVzZXJJbmZvIiwicGVybWlzc2lvbnMiLCJ1c2VyX2luZm8iLCJ3YXRlckF1dGhvcml0eVBvaW50c1VSTCIsInNhbXBsaW5nc1BhZ2UiLCJnZXRQb2ludHMiLCJ1cmwiLCJheGlvcyIsImdldCIsInJlc3BvbnNlIiwiZGF0YSIsInBvaW50cyIsInJlZmV0Y2hPbldpbmRvd0ZvY3VzIiwicmVmZXRjaCIsImNyZWF0ZVNhbXBsaW5nTXV0YXRpb24iLCJuZXdTYW1wbGluZ1ZhbHVlcyIsImRlZmF1bHRzIiwiaGVhZGVycyIsImNvbW1vbiIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImNvbnRlbnQiLCJwdXQiLCJjcmVhdGVOZXdTYW1wbGluZyIsInRoZW4iLCJyZXMiLCJ0b2FzdCIsInN1Y2Nlc3MiLCJwb3NpdGlvbiIsImNhdGNoIiwiZSIsImVycm9yIiwib25TdWNjZXNzIiwiTmV3U2FtcGxpbmdWYWxpZGF0aW9uU2NoZW1hIiwiWXVwIiwib2JqZWN0Iiwic2hhcGUiLCJzYW1wbGluZyIsImRhdGUiLCJzdHJpbmciLCJyZXF1aXJlZCIsInBvaW50X2lkIiwidG9kYXkiLCJmb3JtYXQiLCJuZXdTaXRlSW5pdGlhbFZhbHVlcyIsInR5cGUiLCJoYW5kbGVOZXdTYW1wbGluZ1N1Ym1pdCIsInZhbHVlcyIsIm11dGF0ZSIsIndhdGVyQXV0aG9yaXR5TmFtZSIsImdsb2JhbF9kYXRhIiwiaGFuZGxlT3BlblBvcHVwQW5hbHl0aWNzIiwid2F0ZXJfYXV0aG9yaXR5IiwidXRpbGl0eV9uYW1lIiwiTmV3U2FtcGxpbmdCdXR0b24iLCJpc01vYmlsZSIsImZhUGx1cyIsIlN0eWxlIiwibmV3U2FtcGxlckJ0bk1vYmlsZSIsIm5ld1NhbXBsaW5nQWN0aW9uRHJvcGRvd24iLCJoYW5kbGVTdWJtaXQiLCJoYW5kbGVDaGFuZ2UiLCJlcnJvcnMiLCJzZXRGaWVsZFZhbHVlIiwiZGF0ZUlucHV0IiwiRGF0ZSIsInRvRGF0ZVN0cmluZyIsImNhbGVuZGFyIiwiZGF0ZV90aW1lX2Zvcm1hdCIsInZhbGlkYXRpb25FcnJvciIsInNpdGVJbnB1dCIsImludmFsaWRCb3JkZXJzIiwib3B0aW9uIiwidmFsdWUiLCJtYXAiLCJwdCIsInBvaW50IiwiaWQiLCJsYWJlbCIsInR5cGVJbnB1dCIsImJ1dHRvbnNDb250YWluZXIiLCJidXR0b25DcmVhdGUiLCJ2YXJpYW50IiwiU0VDT05EQVJZIiwiTmV3U2FtcGxpbmdUaXRsZSIsInN0eWxlZCIsInAiLCJ0aGVtZSIsImZvbnRXZWlnaHQiLCJ3NzAwIiwiTWVudUlucHV0U3R5bGUiLCJkaXYiLCJhdHRycyIsInByb3BzIiwiekluZGV4ZXMiLCJtb2RhbCIsImNvbG9yU2NoZW1lIiwibmF0dXJhbCIsIm4xIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7OztBQTZCQSxJQUFNQSxpQkFBNkMsR0FBRyxTQUFoREEsaUJBQWdELE9BRWhEO0FBQUEsTUFESkMsZ0JBQ0ksUUFESkEsZ0JBQ0k7O0FBQ0osd0JBQWMsbUNBQWQ7QUFBQSxNQUFRQyxDQUFSLG1CQUFRQSxDQUFSOztBQUNBLGtCQUE0QixxQkFBa0IsS0FBbEIsQ0FBNUI7QUFBQTtBQUFBLE1BQU9DLE1BQVA7QUFBQSxNQUFlQyxTQUFmOztBQUVBLHFCQUFvQiw2QkFDbEIsVUFBQ0MsS0FBRDtBQUFBLFdBQTBDQSxLQUFLLENB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OztBQUlBLElBQU1DLGNBQWMsR0FBR0wsMEJBQU9NLEdBQVAsQ0FBV0MsS0FBWCxDQUFpQixVQUFDQyxLQUFEO0FBQUEsU0FBNEI7QUFDbEVuRyxJQUFBQSxNQUFNLEVBQUVtRyxLQUFLLENBQUNuRztBQURvRCxHQUE1QjtBQUFBLENBQWpCLENBQUg7QUFBQTtBQUFBO0FBQUEsb2dCQU9QO0FBQUEsTUFBRzZGLEtBQUgsU0FBR0EsS0FBSDtBQUFBLFNBQWVBLEtBQUssQ0FBQ08sUUFBTixDQUFlQyxLQUE5QjtBQUFBLENBUE8sRUFVRTtBQUFBLE1BQUdSLEtBQUgsU0FBR0EsS0FBSDtBQUFBLFNBQWVBLEtBQUssQ0FBQ1MsV0FBTixDQUFrQkMsT0FBbEIsQ0FBMEJDLEVBQXpDO0FBQUEsQ0FWRixDQUFwQjs7ZUFrRGUzRyxpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBGQywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZvcm0gfSBmcm9tICdyZWFjdC1ib290c3RyYXAnO1xuaW1wb3J0IHsgZmFQbHVzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMvbWFjcm8nO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICdyZWFjdC1kZXZpY2UtZGV0ZWN0JztcbmltcG9ydCB7IEZvcm1payB9IGZyb20gJ2Zvcm1payc7XG5pbXBvcnQgKiBhcyBZdXAgZnJvbSAneXVwJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9yZWFjdC1mb250YXdlc29tZSc7XG5pbXBvcnQgeyB1c2VRdWVyeSwgdXNlTXV0YXRpb24gfSBmcm9tICdyZWFjdC1xdWVyeSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IFNlbGVjdCBmcm9tICdyZWFjdC1zZWxlY3QnO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSc7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAncmVhY3QtZGF0ZXBpY2tlcic7XG5cbmltcG9ydCB7IGFuYWx5dGljc1RyYWNrIH0gZnJvbSAnc3JjL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgQnV0dG9uLCBNb2JpbGVJbnB1dCwgdmFyaWFudCB9IGZyb20gJ3NyYy91aS1raXQnO1xuaW1wb3J0IFN0eWxlIGZyb20gJy4vc3R5bGUubW9kdWxlLnNjc3MnO1xuaW1wb3J0IHsgdXJscyB9IGZyb20gJ3NyYy91dGlsaXRpZXMvdXJscyc7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnc3JjL3N0b3JlL3Jvb3RSZWR1Y2VyJztcbmltcG9ydCB7IHNldFNhbXBsaW5nRGF0YSB9IGZyb20gJ3NyYy9zdG9yZS9zYW1wbGluZ3MvYWN0aW9uc0NyZWF0b3InO1xuaW1wb3J0IEljb25BY3Rpb24gZnJvbSAnLi4vLi4vdWkta2l0L0ljb25BY3Rpb24vSWNvbkFjdGlvbic7XG5cbmludGVyZmFjZSBOZXdTaXRlSW5wdXRzIHtcbiAgc2FtcGxpbmc6IHtcbiAgICBkYXRlOiBzdHJpbmc7XG4gICAgcG9pbnRfaWQ6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gIH07XG59XG5cbmludGVyZmFjZSBQb2ludFByb3BzIHtcbiAgcG9pbnQ6IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG59XG50eXBlIEdldFBvaW50c1Jlc3BvbnNlID0ge1xuICBkYXRhOiB7XG4gICAgcG9pbnRzOiBQb2ludFByb3BzW107XG4gIH07XG59O1xuaW50ZXJmYWNlIE1lbnVJbnB1dFByb3BzIHtcbiAgaXNPcGVuOiBib29sZWFuO1xufVxuXG50eXBlIE5ld1NhbXBsaW5nQWN0aW9uUHJvcHMgPSB7XG4gIHdhdGVyQXV0aG9yaXR5SWQ6IG51bWJlcjtcbn07XG5cbmNvbnN0IE5ld1NhbXBsaW5nQWN0aW9uOiBGQzxOZXdTYW1wbGluZ0FjdGlvblByb3BzPiA9ICh7XG4gIHdhdGVyQXV0aG9yaXR5SWQsXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdCB7IHBlclBhZ2UgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLnNhbXBsaW5nc19kYXRhLFxuICApO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHVzZXJJbmZvID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5wZXJtaXNzaW9ucy51c2VyX2luZm8pO1xuXG4gIGNvbnN0IHsgZGF0YTogcG9pbnRzLCByZWZldGNoIH0gPSB1c2VRdWVyeShcbiAgICAnc2VsZWN0b3JfcG9pbnRzJyxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB3YXRlckF1dGhvcml0eVBvaW50c1VSTCA9IHVybHMoeyB3YXRlckF1dGhvcml0eUlkIH0pLnNhbXBsaW5nc1BhZ2VcbiAgICAgICAgLmdldFBvaW50cy51cmw7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldDxHZXRQb2ludHNSZXNwb25zZT4oXG4gICAgICAgIHdhdGVyQXV0aG9yaXR5UG9pbnRzVVJMLFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGEucG9pbnRzO1xuICAgIH0sXG4gICAge1xuICAgICAgcmVmZXRjaE9uV2luZG93Rm9jdXM6IGZhbHNlLFxuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgY3JlYXRlU2FtcGxpbmdNdXRhdGlvbiA9IHVzZU11dGF0aW9uKFxuICAgIChuZXdTYW1wbGluZ1ZhbHVlcykgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ1gtQ1NSRi1UT0tFTiddID1cbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9Y3NyZi10b2tlbl0nKS5jb250ZW50O1xuICAgICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzJztcbiAgICAgIHJldHVybiBheGlvc1xuICAgICAgICAucHV0KFxuICAgICAgICAgIHVybHMoeyB3YXRlckF1dGhvcml0eUlkIH0pLnNhbXBsaW5nc1BhZ2UuY3JlYXRlTmV3U2FtcGxpbmcudXJsLFxuICAgICAgICAgIG5ld1NhbXBsaW5nVmFsdWVzLFxuICAgICAgICApXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICB0b2FzdC5zdWNjZXNzKHQoJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nX2NyZWF0ZWQnKSwge1xuICAgICAgICAgICAgcG9zaXRpb246ICd0b3AtY2VudGVyJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICB0b2FzdC5lcnJvcih0KCdzYW1wbGluZ3NfcGFnZS5zYW1wbGluZ19ub3RfY3JlYXRlZCcpLCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHtcbiAgICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgICAvLyBSZWZyZXNoIHRoZSBzYW1wbGluZ3MgaGFja1xuICAgICAgICBkaXNwYXRjaChzZXRTYW1wbGluZ0RhdGEoeyBwZXJQYWdlOiBwZXJQYWdlIC0gMSB9KSk7XG4gICAgICAgIGRpc3BhdGNoKHNldFNhbXBsaW5nRGF0YSh7IHBlclBhZ2U6IHBlclBhZ2UgfSkpO1xuICAgICAgICAvLyBUT0RPOiByZW1vdmUgdGhlIGFib3ZlIHJlZnJlc2ggaGFjayBhbmQgcmVwbGFjZSB3aXRoIHRoZSBmb2xsb3dpbmcgLSBjaGVjayBLU0QtMjkyMlxuICAgICAgICAvLyBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcygndGhlX3NhbXBsaW5nc19saXN0Jyk7XG4gICAgICB9LFxuICAgIH0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZWZldGNoKCk7XG4gICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgfSwgW3dhdGVyQXV0aG9yaXR5SWRdKTtcblxuICBjb25zdCBOZXdTYW1wbGluZ1ZhbGlkYXRpb25TY2hlbWEgPSBZdXAub2JqZWN0KCkuc2hhcGUoe1xuICAgIHNhbXBsaW5nOiBZdXAub2JqZWN0KCkuc2hhcGUoe1xuICAgICAgZGF0ZTogWXVwLnN0cmluZygpLnJlcXVpcmVkKHQoJ3NhbXBsaW5nc19wYWdlLmRhdGVfcmVxdWlyZWQnKSksXG4gICAgICBwb2ludF9pZDogWXVwLnN0cmluZygpLnJlcXVpcmVkKHQoJ3NhbXBsaW5nc19wYWdlLnNpdGVfcmVxdWlyZWQnKSksXG4gICAgfSksXG4gIH0pO1xuXG4gIGNvbnN0IHRvZGF5ID0gbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG5cbiAgY29uc3QgbmV3U2l0ZUluaXRpYWxWYWx1ZXM6IE5ld1NpdGVJbnB1dHMgPSB7XG4gICAgc2FtcGxpbmc6IHtcbiAgICAgIGRhdGU6IHRvZGF5LFxuICAgICAgcG9pbnRfaWQ6ICcnLFxuICAgICAgdHlwZTogJ3NhbXBsaW5nX3R5cGVfcmFwaWQnLFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTmV3U2FtcGxpbmdTdWJtaXQgPSAodmFsdWVzKSA9PiB7XG4gICAgY3JlYXRlU2FtcGxpbmdNdXRhdGlvbi5tdXRhdGUodmFsdWVzKTtcbiAgfTtcblxuICBjb25zdCB3YXRlckF1dGhvcml0eU5hbWUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5TmFtZSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVPcGVuUG9wdXBBbmFseXRpY3MgPSAoKSA9PiB7XG4gICAgYW5hbHl0aWNzVHJhY2soJ1NhbXBsaW5nIE9wZXJhdGlvbiBOZXcgU2FtcGxpbmcgQ2xpY2tlZCcsIHtcbiAgICAgIHdhdGVyX2F1dGhvcml0eTogd2F0ZXJBdXRob3JpdHlJZCxcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IE5ld1NhbXBsaW5nQnV0dG9uID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7IWlzTW9iaWxlICYmIChcbiAgICAgICAgICA8SWNvbkFjdGlvblxuICAgICAgICAgICAgY2FsbGJhY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlT3BlblBvcHVwQW5hbHl0aWNzKCk7XG4gICAgICAgICAgICAgIHNldElzT3BlbighaXNPcGVuKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB0ZXh0X2tleT17J3NhbXBsaW5nc19wYWdlLm5ld19idXR0b24nfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxGb250QXdlc29tZUljb24gaWNvbj17ZmFQbHVzfSAvPlxuICAgICAgICAgIDwvSWNvbkFjdGlvbj5cbiAgICAgICAgKX1cbiAgICAgICAge2lzTW9iaWxlICYmIChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e1N0eWxlLm5ld1NhbXBsZXJCdG5Nb2JpbGV9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oIWlzT3Blbil9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEZvbnRBd2Vzb21lSWNvbiBjbGFzc05hbWU9e1N0eWxlLmZhUGx1c30gaWNvbj17ZmFQbHVzfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtdGVzdC1pZD1cImNyZWF0ZS1uZXctc2FtcGxpbmdcIlxuICAgICAgY2xhc3NOYW1lPXtTdHlsZS5uZXdTYW1wbGluZ0FjdGlvbkRyb3Bkb3dufVxuICAgID5cbiAgICAgIDxOZXdTYW1wbGluZ0J1dHRvbiAvPlxuICAgICAge2lzT3BlbiAmJiAoXG4gICAgICAgIDxNZW51SW5wdXRTdHlsZSBpc09wZW49e2lzT3Blbn0+XG4gICAgICAgICAgPE5ld1NhbXBsaW5nVGl0bGU+XG4gICAgICAgICAgICB7dCgnc2FtcGxpbmdzX3BhZ2UuYWRkX25ld19zYW1wbGluZycpfVxuICAgICAgICAgIDwvTmV3U2FtcGxpbmdUaXRsZT5cbiAgICAgICAgICA8Rm9ybWlrXG4gICAgICAgICAgICBvblN1Ym1pdD17aGFuZGxlTmV3U2FtcGxpbmdTdWJtaXR9XG4gICAgICAgICAgICBpbml0aWFsVmFsdWVzPXtuZXdTaXRlSW5pdGlhbFZhbHVlc31cbiAgICAgICAgICAgIHZhbGlkYXRpb25TY2hlbWE9e05ld1NhbXBsaW5nVmFsaWRhdGlvblNjaGVtYX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2UsXG4gICAgICAgICAgICAgIHZhbHVlcyxcbiAgICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICAgICAgfSkgPT4gKFxuICAgICAgICAgICAgICA8Rm9ybSBvblN1Ym1pdD17aGFuZGxlU3VibWl0fT5cbiAgICAgICAgICAgICAgICA8Rm9ybS5Hcm91cD5cbiAgICAgICAgICAgICAgICAgIDxGb3JtLkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICB7dCgnc2FtcGxpbmdzX3BhZ2Uuc2FtcGxpbmdzX3RhYmxlX2NvbHMuc2FtcGxpbmdfZGF0ZScpfVxuICAgICAgICAgICAgICAgICAgPC9Gb3JtLkxhYmVsPlxuICAgICAgICAgICAgICAgICAgPERhdGVQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZS5kYXRlSW5wdXR9ICR7XG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPy5zYW1wbGluZz8uZGF0ZSAmJiAnaW52YWxpZCdcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzYW1wbGluZy5kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZXMuc2FtcGxpbmcuZGF0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUodmFsdWVzLnNhbXBsaW5nLmRhdGUpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RmllbGRWYWx1ZSgnc2FtcGxpbmcuZGF0ZScsIGRhdGUudG9EYXRlU3RyaW5nKCkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJDbGFzc05hbWU9e1N0eWxlLmNhbGVuZGFyfVxuICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0PXtcbiAgICAgICAgICAgICAgICAgICAgICB1c2VySW5mby5kYXRlX3RpbWVfZm9ybWF0ID09PSAndXMnXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdNTU0gZCwgeXl5eSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2QvTU0veXl5eSdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0uR3JvdXA+XG4gICAgICAgICAgICAgICAge2Vycm9ycz8uc2FtcGxpbmc/LmRhdGUgPyAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17U3R5bGUudmFsaWRhdGlvbkVycm9yfT5cbiAgICAgICAgICAgICAgICAgICAge2Vycm9ycy5zYW1wbGluZy5kYXRlfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgICAgICA8Rm9ybS5MYWJlbD5cbiAgICAgICAgICAgICAgICAgIHt0KCdzYW1wbGluZ3NfcGFnZS5zYW1wbGluZ3NfdGFibGVfY29scy5zaXRlJyl9XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e1N0eWxlLnJlcXVpcmVkfT4qPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvRm9ybS5MYWJlbD5cbiAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnc2FtcGxpbmdzX3BhZ2Uuc2l0ZV9wbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZS5zaXRlSW5wdXR9ICR7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycz8uc2FtcGxpbmc/LnBvaW50X2lkICYmIFN0eWxlLmludmFsaWRCb3JkZXJzXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJzYW1wbGluZy5wb2ludF9pZFwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KG9wdGlvbjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldEZpZWxkVmFsdWUoJ3NhbXBsaW5nLnBvaW50X2lkJywgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWVQcmVmaXg9eydkYXNoYm9hcmQtc2VsZWN0J31cbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3BvaW50cz8ubWFwKChwdDogUG9pbnRQcm9wcykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHB0LnBvaW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHQucG9pbnQubGFiZWwsXG4gICAgICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7ZXJyb3JzPy5zYW1wbGluZz8ucG9pbnRfaWQgJiYgKFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1N0eWxlLnZhbGlkYXRpb25FcnJvcn0+XG4gICAgICAgICAgICAgICAgICAgIHtlcnJvcnMuc2FtcGxpbmcucG9pbnRfaWR9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgPE1vYmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake1N0eWxlLnR5cGVJbnB1dH0gJHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzPy5zYW1wbGluZz8udHlwZSAmJiBTdHlsZS5pbnZhbGlkQm9yZGVyc1xuICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICBpbnB1dFRpdGxlPXt0KCdsYWJfcmVzdWx0c19zY3JlZW4udHlwZScpfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlcy5zYW1wbGluZy50eXBlfVxuICAgICAgICAgICAgICAgICAgbmFtZT1cInNhbXBsaW5nLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwic2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeT17dHJ1ZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGtleT1cInJhcGlkXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzYW1wbGluZ190eXBlX3JhcGlkXCJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e3RydWV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdzYW1wbGluZ190eXBlc19taW5pLnNhbXBsaW5nX3R5cGVfcmFwaWQnKX1cbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9XCJjb21wbGV4XCIgdmFsdWU9XCJzYW1wbGluZ190eXBlX2NvbXBsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAge3QoJ3NhbXBsaW5nX3R5cGVzX21pbmkuc2FtcGxpbmdfdHlwZV9jb21wbGV4Jyl9XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PVwiYm90aFwiIHZhbHVlPVwic2FtcGxpbmdfdHlwZV9ib3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdzYW1wbGluZ190eXBlc19taW5pLnNhbXBsaW5nX3R5cGVfYm90aCcpfVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9Nb2JpbGVJbnB1dD5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtTdHlsZS5idXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX0gdmFyaWFudD1cImNsb3NlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdjbG9zZScpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17U3R5bGUuYnV0dG9uQ3JlYXRlfVxuICAgICAgICAgICAgICAgICAgICBvdXRsaW5lPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXt2YXJpYW50LlNFQ09OREFSWX1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdzYW1wbGluZ3NfcGFnZS5jcmVhdGVfYnV0dG9uJyl9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0Zvcm1paz5cbiAgICAgICAgPC9NZW51SW5wdXRTdHlsZT5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBOZXdTYW1wbGluZ1RpdGxlID0gc3R5bGVkLnBgXG4gIGZvbnQtd2VpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmZvbnRXZWlnaHQudzcwMH07XG5gO1xuXG5jb25zdCBNZW51SW5wdXRTdHlsZSA9IHN0eWxlZC5kaXYuYXR0cnMoKHByb3BzOiBNZW51SW5wdXRQcm9wcykgPT4gKHtcbiAgaXNPcGVuOiBwcm9wcy5pc09wZW4sXG59KSlgXG4gIHBhZGRpbmc6IDMzcHggMjhweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMTZweDtcbiAgdG9wOiAxNDBweDtcbiAgei1pbmRleDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS56SW5kZXhlcy5tb2RhbH07XG4gIG1pbi1oZWlnaHQ6IDQwMHB4O1xuICB3aWR0aDogMzkwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uMX07XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhNmFjYjk7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCAjZTNlM2UzO1xuXG4gIC5ydGwgJiB7XG4gICAgcmlnaHQ6IHVuc2V0O1xuICAgIGxlZnQ6IDE2cHg7XG4gIH1cblxuICAqIHtcbiAgICBmb250LWZhbWlseTogTnVuaXRvLCBHaWxyb3ksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIH1cblxuICBhbmltYXRpb246IHRyYW5zaXRpb24taW4gNDQ0bXMsIGZhZGUtaW4gNDQ0bXM7XG4gIEBrZXlmcmFtZXMgdHJhbnNpdGlvbi1pbiB7XG4gICAgZnJvbSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwcHgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuICB9XG4gIEBrZXlmcmFtZXMgZmFkZS1pbiB7XG4gICAgMCUge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC8qIFVzZSA0ODBweCBhcyBtb2JpbGUncyBtYXgtd2lkdGggKi9cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgdG9wOiBhdXRvO1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cbmA7XG5cbmV4cG9ydCBkZWZhdWx0IE5ld1NhbXBsaW5nQWN0aW9uO1xuIl19
256
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RCb290c3RyYXAiLCJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJfcmVhY3REZXZpY2VEZXRlY3QiLCJfZm9ybWlrIiwiWXVwIiwiX3JlYWN0Rm9udGF3ZXNvbWUiLCJfcmVhY3RRdWVyeSIsIl9tb21lbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2F4aW9zIiwiX3JlYWN0U2VsZWN0IiwiX3JlYWN0VG9hc3RpZnkiLCJfcmVhY3RJMThuZXh0IiwiX3JlYWN0RGF0ZXBpY2tlciIsIl9BbmFseXRpY3MiLCJfdWlLaXQiLCJfc3R5bGVNb2R1bGUiLCJfdXJscyIsIl9yZWFjdFJlZHV4IiwiX2FjdGlvbnNDcmVhdG9yIiwiX0ljb25BY3Rpb24iLCJOZXdTYW1wbGluZ0FjdGlvbiIsIl9yZWYiLCJ3YXRlckF1dGhvcml0eUlkIiwiX3VzZVRyYW5zbGF0aW9uIiwidXNlVHJhbnNsYXRpb24iLCJ0IiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZGVmYXVsdCIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTZWxlY3RvciIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJzYW1wbGluZ3NfZGF0YSIsInBlclBhZ2UiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwidXNlckluZm8iLCJwZXJtaXNzaW9ucyIsInVzZXJfaW5mbyIsIl91c2VRdWVyeSIsInVzZVF1ZXJ5IiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yUnVudGltZTIiLCJtYXJrIiwiX2NhbGxlZSIsIndhdGVyQXV0aG9yaXR5UG9pbnRzVVJMIiwicmVzcG9uc2UiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwidXJscyIsInNhbXBsaW5nc1BhZ2UiLCJnZXRQb2ludHMiLCJ1cmwiLCJheGlvcyIsImdldCIsInNlbnQiLCJhYnJ1cHQiLCJkYXRhIiwicG9pbnRzIiwic3RvcCIsInJlZmV0Y2hPbldpbmRvd0ZvY3VzIiwicmVmZXRjaCIsImNyZWF0ZVNhbXBsaW5nTXV0YXRpb24iLCJ1c2VNdXRhdGlvbiIsIm5ld1NhbXBsaW5nVmFsdWVzIiwiZGVmYXVsdHMiLCJoZWFkZXJzIiwiY29tbW9uIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY29udGVudCIsInB1dCIsImNyZWF0ZU5ld1NhbXBsaW5nIiwidGhlbiIsInJlcyIsInRvYXN0Iiwic3VjY2VzcyIsInBvc2l0aW9uIiwiY2F0Y2giLCJlIiwiZXJyb3IiLCJvblN1Y2Nlc3MiLCJzZXRTYW1wbGluZ0RhdGEiLCJ1c2VFZmZlY3QiLCJOZXdTYW1wbGluZ1ZhbGlkYXRpb25TY2hlbWEiLCJvYmplY3QiLCJzaGFwZSIsInNhbXBsaW5nIiwiZGF0ZSIsInN0cmluZyIsInJlcXVpcmVkIiwicG9pbnRfaWQiLCJ0b2RheSIsIm1vbWVudCIsImZvcm1hdCIsIm5ld1NpdGVJbml0aWFsVmFsdWVzIiwidHlwZSIsImhhbmRsZU5ld1NhbXBsaW5nU3VibWl0IiwidmFsdWVzIiwibXV0YXRlIiwid2F0ZXJBdXRob3JpdHlOYW1lIiwiZ2xvYmFsX2RhdGEiLCJoYW5kbGVPcGVuUG9wdXBBbmFseXRpY3MiLCJhbmFseXRpY3NUcmFjayIsIndhdGVyX2F1dGhvcml0eSIsInV0aWxpdHlfbmFtZSIsIk5ld1NhbXBsaW5nQnV0dG9uIiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiaXNNb2JpbGUiLCJjYWxsYmFjayIsInRleHRfa2V5IiwiRm9udEF3ZXNvbWVJY29uIiwiaWNvbiIsImZhUGx1cyIsImNsYXNzTmFtZSIsIlN0eWxlIiwibmV3U2FtcGxlckJ0bk1vYmlsZSIsIm9uQ2xpY2siLCJuZXdTYW1wbGluZ0FjdGlvbkRyb3Bkb3duIiwiTWVudUlucHV0U3R5bGUiLCJOZXdTYW1wbGluZ1RpdGxlIiwiRm9ybWlrIiwib25TdWJtaXQiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsIl9yZWYzIiwiX2Vycm9ycyRzYW1wbGluZyIsIl9lcnJvcnMkc2FtcGxpbmcyIiwiX2Vycm9ycyRzYW1wbGluZzMiLCJfZXJyb3JzJHNhbXBsaW5nNCIsIl9lcnJvcnMkc2FtcGxpbmc1IiwiaGFuZGxlU3VibWl0IiwiaGFuZGxlQ2hhbmdlIiwiZXJyb3JzIiwic2V0RmllbGRWYWx1ZSIsIkZvcm0iLCJHcm91cCIsIkxhYmVsIiwiY29uY2F0IiwiZGF0ZUlucHV0IiwibmFtZSIsInNlbGVjdGVkIiwiRGF0ZSIsIm9uQ2hhbmdlIiwidG9EYXRlU3RyaW5nIiwiY2FsZW5kYXJDbGFzc05hbWUiLCJjYWxlbmRhciIsImRhdGVGb3JtYXQiLCJkYXRlX3RpbWVfZm9ybWF0IiwidmFsaWRhdGlvbkVycm9yIiwicGxhY2Vob2xkZXIiLCJzaXRlSW5wdXQiLCJpbnZhbGlkQm9yZGVycyIsIm9wdGlvbiIsInZhbHVlIiwiaXNTZWFyY2hhYmxlIiwiY2xhc3NOYW1lUHJlZml4Iiwib3B0aW9ucyIsIm1hcCIsInB0IiwicG9pbnQiLCJpZCIsImxhYmVsIiwiTW9iaWxlSW5wdXQiLCJ0eXBlSW5wdXQiLCJpbnB1dFRpdGxlIiwibWFuZGF0b3J5Iiwia2V5IiwiYnV0dG9uc0NvbnRhaW5lciIsIkJ1dHRvbiIsInZhcmlhbnQiLCJidXR0b25DcmVhdGUiLCJvdXRsaW5lIiwiU0VDT05EQVJZIiwic3R5bGVkIiwicCIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiX3JlZjQiLCJ0aGVtZSIsImZvbnRXZWlnaHQiLCJ3NzAwIiwiZGl2IiwiYXR0cnMiLCJwcm9wcyIsIl9yZWY1IiwiekluZGV4ZXMiLCJtb2RhbCIsIl9yZWY2IiwiY29sb3JTY2hlbWUiLCJuYXR1cmFsIiwibjEiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvU2FtcGxpbmdzUGFnZS9OZXdTYW1wbGluZ0FjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IEZDLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRm9ybSB9IGZyb20gJ3JlYWN0LWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBmYVBsdXMgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cy9tYWNybyc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJ3JlYWN0LWRldmljZS1kZXRlY3QnO1xuaW1wb3J0IHsgRm9ybWlrIH0gZnJvbSAnZm9ybWlrJztcbmltcG9ydCAqIGFzIFl1cCBmcm9tICd5dXAnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVJY29uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3JlYWN0LWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IHVzZVF1ZXJ5LCB1c2VNdXRhdGlvbiB9IGZyb20gJ3JlYWN0LXF1ZXJ5JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gJ3JlYWN0LXRvYXN0aWZ5JztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgRGF0ZVBpY2tlciBmcm9tICdyZWFjdC1kYXRlcGlja2VyJztcblxuaW1wb3J0IHsgYW5hbHl0aWNzVHJhY2sgfSBmcm9tICdzcmMvdXRpbGl0aWVzL0FuYWx5dGljcyc7XG5pbXBvcnQgeyBCdXR0b24sIE1vYmlsZUlucHV0LCB2YXJpYW50IH0gZnJvbSAnc3JjL3VpLWtpdCc7XG5pbXBvcnQgU3R5bGUgZnJvbSAnLi9zdHlsZS5tb2R1bGUuc2Nzcyc7XG5pbXBvcnQgeyB1cmxzIH0gZnJvbSAnc3JjL3V0aWxpdGllcy91cmxzJztcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IGFwcFJlZHVjZXIgfSBmcm9tICdzcmMvc3RvcmUvcm9vdFJlZHVjZXInO1xuaW1wb3J0IHsgc2V0U2FtcGxpbmdEYXRhIH0gZnJvbSAnc3JjL3N0b3JlL3NhbXBsaW5ncy9hY3Rpb25zQ3JlYXRvcic7XG5pbXBvcnQgSWNvbkFjdGlvbiBmcm9tICcuLi8uLi91aS1raXQvSWNvbkFjdGlvbi9JY29uQWN0aW9uJztcblxuaW50ZXJmYWNlIE5ld1NpdGVJbnB1dHMge1xuICBzYW1wbGluZzoge1xuICAgIGRhdGU6IHN0cmluZztcbiAgICBwb2ludF9pZDogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFBvaW50UHJvcHMge1xuICBwb2ludDoge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcbn1cbnR5cGUgR2V0UG9pbnRzUmVzcG9uc2UgPSB7XG4gIGRhdGE6IHtcbiAgICBwb2ludHM6IFBvaW50UHJvcHNbXTtcbiAgfTtcbn07XG5pbnRlcmZhY2UgTWVudUlucHV0UHJvcHMge1xuICBpc09wZW46IGJvb2xlYW47XG59XG5cbnR5cGUgTmV3U2FtcGxpbmdBY3Rpb25Qcm9wcyA9IHtcbiAgd2F0ZXJBdXRob3JpdHlJZDogbnVtYmVyO1xufTtcblxuY29uc3QgTmV3U2FtcGxpbmdBY3Rpb246IEZDPE5ld1NhbXBsaW5nQWN0aW9uUHJvcHM+ID0gKHtcbiAgd2F0ZXJBdXRob3JpdHlJZCxcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0IHsgcGVyUGFnZSB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUuc2FtcGxpbmdzX2RhdGEsXG4gICk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgdXNlckluZm8gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLnBlcm1pc3Npb25zLnVzZXJfaW5mbyk7XG5cbiAgY29uc3QgeyBkYXRhOiBwb2ludHMsIHJlZmV0Y2ggfSA9IHVzZVF1ZXJ5KFxuICAgICdzZWxlY3Rvcl9wb2ludHMnLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHdhdGVyQXV0aG9yaXR5UG9pbnRzVVJMID0gdXJscyh7IHdhdGVyQXV0aG9yaXR5SWQgfSkuc2FtcGxpbmdzUGFnZVxuICAgICAgICAuZ2V0UG9pbnRzLnVybDtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0PEdldFBvaW50c1Jlc3BvbnNlPihcbiAgICAgICAgd2F0ZXJBdXRob3JpdHlQb2ludHNVUkwsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YS5wb2ludHM7XG4gICAgfSxcbiAgICB7XG4gICAgICByZWZldGNoT25XaW5kb3dGb2N1czogZmFsc2UsXG4gICAgfSxcbiAgKTtcblxuICBjb25zdCBjcmVhdGVTYW1wbGluZ011dGF0aW9uID0gdXNlTXV0YXRpb24oXG4gICAgKG5ld1NhbXBsaW5nVmFsdWVzKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1DU1JGLVRPS0VOJ10gPVxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1jc3JmLXRva2VuXScpLmNvbnRlbnQ7XG4gICAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24vanMnO1xuICAgICAgcmV0dXJuIGF4aW9zXG4gICAgICAgIC5wdXQoXG4gICAgICAgICAgdXJscyh7IHdhdGVyQXV0aG9yaXR5SWQgfSkuc2FtcGxpbmdzUGFnZS5jcmVhdGVOZXdTYW1wbGluZy51cmwsXG4gICAgICAgICAgbmV3U2FtcGxpbmdWYWx1ZXMsXG4gICAgICAgIClcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgIHRvYXN0LnN1Y2Nlc3ModCgnc2FtcGxpbmdzX3BhZ2Uuc2FtcGxpbmdfY3JlYXRlZCcpLCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIHRvYXN0LmVycm9yKHQoJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nX25vdF9jcmVhdGVkJyksIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAndG9wLWNlbnRlcicsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAge1xuICAgICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICAgIC8vIFJlZnJlc2ggdGhlIHNhbXBsaW5ncyBoYWNrXG4gICAgICAgIGRpc3BhdGNoKHNldFNhbXBsaW5nRGF0YSh7IHBlclBhZ2U6IHBlclBhZ2UgLSAxIH0pKTtcbiAgICAgICAgZGlzcGF0Y2goc2V0U2FtcGxpbmdEYXRhKHsgcGVyUGFnZTogcGVyUGFnZSB9KSk7XG4gICAgICAgIC8vIFRPRE86IHJlbW92ZSB0aGUgYWJvdmUgcmVmcmVzaCBoYWNrIGFuZCByZXBsYWNlIHdpdGggdGhlIGZvbGxvd2luZyAtIGNoZWNrIEtTRC0yOTIyXG4gICAgICAgIC8vIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKCd0aGVfc2FtcGxpbmdzX2xpc3QnKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlZmV0Y2goKTtcbiAgICBzZXRJc09wZW4oZmFsc2UpO1xuICB9LCBbd2F0ZXJBdXRob3JpdHlJZF0pO1xuXG4gIGNvbnN0IE5ld1NhbXBsaW5nVmFsaWRhdGlvblNjaGVtYSA9IFl1cC5vYmplY3QoKS5zaGFwZSh7XG4gICAgc2FtcGxpbmc6IFl1cC5vYmplY3QoKS5zaGFwZSh7XG4gICAgICBkYXRlOiBZdXAuc3RyaW5nKCkucmVxdWlyZWQodCgnc2FtcGxpbmdzX3BhZ2UuZGF0ZV9yZXF1aXJlZCcpKSxcbiAgICAgIHBvaW50X2lkOiBZdXAuc3RyaW5nKCkucmVxdWlyZWQodCgnc2FtcGxpbmdzX3BhZ2Uuc2l0ZV9yZXF1aXJlZCcpKSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgY29uc3QgdG9kYXkgPSBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcblxuICBjb25zdCBuZXdTaXRlSW5pdGlhbFZhbHVlczogTmV3U2l0ZUlucHV0cyA9IHtcbiAgICBzYW1wbGluZzoge1xuICAgICAgZGF0ZTogdG9kYXksXG4gICAgICBwb2ludF9pZDogJycsXG4gICAgICB0eXBlOiAnc2FtcGxpbmdfdHlwZV9yYXBpZCcsXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOZXdTYW1wbGluZ1N1Ym1pdCA9ICh2YWx1ZXMpID0+IHtcbiAgICBjcmVhdGVTYW1wbGluZ011dGF0aW9uLm11dGF0ZSh2YWx1ZXMpO1xuICB9O1xuXG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5TmFtZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlOYW1lLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Qb3B1cEFuYWx5dGljcyA9ICgpID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnU2FtcGxpbmcgT3BlcmF0aW9uIE5ldyBTYW1wbGluZyBDbGlja2VkJywge1xuICAgICAgd2F0ZXJfYXV0aG9yaXR5OiB3YXRlckF1dGhvcml0eUlkLFxuICAgICAgdXRpbGl0eV9uYW1lOiB3YXRlckF1dGhvcml0eU5hbWUsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgTmV3U2FtcGxpbmdCdXR0b24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHshaXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxJY29uQWN0aW9uXG4gICAgICAgICAgICBjYWxsYmFjaz17KCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVPcGVuUG9wdXBBbmFseXRpY3MoKTtcbiAgICAgICAgICAgICAgc2V0SXNPcGVuKCFpc09wZW4pO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHRleHRfa2V5PXsnc2FtcGxpbmdzX3BhZ2UubmV3X2J1dHRvbid9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEZvbnRBd2Vzb21lSWNvbiBpY29uPXtmYVBsdXN9IC8+XG4gICAgICAgICAgPC9JY29uQWN0aW9uPlxuICAgICAgICApfVxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17U3R5bGUubmV3U2FtcGxlckJ0bk1vYmlsZX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzT3BlbighaXNPcGVuKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uIGNsYXNzTmFtZT17U3R5bGUuZmFQbHVzfSBpY29uPXtmYVBsdXN9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0LWlkPVwiY3JlYXRlLW5ldy1zYW1wbGluZ1wiXG4gICAgICBjbGFzc05hbWU9e1N0eWxlLm5ld1NhbXBsaW5nQWN0aW9uRHJvcGRvd259XG4gICAgPlxuICAgICAgPE5ld1NhbXBsaW5nQnV0dG9uIC8+XG4gICAgICB7aXNPcGVuICYmIChcbiAgICAgICAgPE1lbnVJbnB1dFN0eWxlIGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgICA8TmV3U2FtcGxpbmdUaXRsZT5cbiAgICAgICAgICAgIHt0KCdzYW1wbGluZ3NfcGFnZS5hZGRfbmV3X3NhbXBsaW5nJyl9XG4gICAgICAgICAgPC9OZXdTYW1wbGluZ1RpdGxlPlxuICAgICAgICAgIDxGb3JtaWtcbiAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVOZXdTYW1wbGluZ1N1Ym1pdH1cbiAgICAgICAgICAgIGluaXRpYWxWYWx1ZXM9e25ld1NpdGVJbml0aWFsVmFsdWVzfVxuICAgICAgICAgICAgdmFsaWRhdGlvblNjaGVtYT17TmV3U2FtcGxpbmdWYWxpZGF0aW9uU2NoZW1hfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoe1xuICAgICAgICAgICAgICBoYW5kbGVTdWJtaXQsXG4gICAgICAgICAgICAgIGhhbmRsZUNoYW5nZSxcbiAgICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgIDxGb3JtIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9PlxuICAgICAgICAgICAgICAgIDxGb3JtLkdyb3VwPlxuICAgICAgICAgICAgICAgICAgPEZvcm0uTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdzYW1wbGluZ3NfcGFnZS5zYW1wbGluZ3NfdGFibGVfY29scy5zYW1wbGluZ19kYXRlJyl9XG4gICAgICAgICAgICAgICAgICA8L0Zvcm0uTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8RGF0ZVBpY2tlclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake1N0eWxlLmRhdGVJbnB1dH0gJHtcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM/LnNhbXBsaW5nPy5kYXRlICYmICdpbnZhbGlkJ1xuICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNhbXBsaW5nLmRhdGVcIlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgKHZhbHVlcy5zYW1wbGluZy5kYXRlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGF0ZSh2YWx1ZXMuc2FtcGxpbmcuZGF0ZSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzZXRGaWVsZFZhbHVlKCdzYW1wbGluZy5kYXRlJywgZGF0ZS50b0RhdGVTdHJpbmcoKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWxlbmRhckNsYXNzTmFtZT17U3R5bGUuY2FsZW5kYXJ9XG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ9e1xuICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvLmRhdGVfdGltZV9mb3JtYXQgPT09ICd1cydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ01NTSBkLCB5eXl5J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnZC9NTS95eXl5J1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRm9ybS5Hcm91cD5cbiAgICAgICAgICAgICAgICB7ZXJyb3JzPy5zYW1wbGluZz8uZGF0ZSA/IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtTdHlsZS52YWxpZGF0aW9uRXJyb3J9PlxuICAgICAgICAgICAgICAgICAgICB7ZXJyb3JzLnNhbXBsaW5nLmRhdGV9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgICAgICAgIDxGb3JtLkxhYmVsPlxuICAgICAgICAgICAgICAgICAge3QoJ3NhbXBsaW5nc19wYWdlLnNhbXBsaW5nc190YWJsZV9jb2xzLnNpdGUnKX1cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17U3R5bGUucmVxdWlyZWR9Pio8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9Gb3JtLkxhYmVsPlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdzYW1wbGluZ3NfcGFnZS5zaXRlX3BsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake1N0eWxlLnNpdGVJbnB1dH0gJHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzPy5zYW1wbGluZz8ucG9pbnRfaWQgJiYgU3R5bGUuaW52YWxpZEJvcmRlcnNcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgbmFtZT1cInNhbXBsaW5nLnBvaW50X2lkXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0RmllbGRWYWx1ZSgnc2FtcGxpbmcucG9pbnRfaWQnLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZVByZWZpeD17J2Rhc2hib2FyZC1zZWxlY3QnfVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17cG9pbnRzPy5tYXAoKHB0OiBQb2ludFByb3BzKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHQucG9pbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwdC5wb2ludC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHtlcnJvcnM/LnNhbXBsaW5nPy5wb2ludF9pZCAmJiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17U3R5bGUudmFsaWRhdGlvbkVycm9yfT5cbiAgICAgICAgICAgICAgICAgICAge2Vycm9ycy5zYW1wbGluZy5wb2ludF9pZH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICA8TW9iaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7U3R5bGUudHlwZUlucHV0fSAke1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnM/LnNhbXBsaW5nPy50eXBlICYmIFN0eWxlLmludmFsaWRCb3JkZXJzXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgIGlucHV0VGl0bGU9e3QoJ2xhYl9yZXN1bHRzX3NjcmVlbi50eXBlJyl9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWVzLnNhbXBsaW5nLnR5cGV9XG4gICAgICAgICAgICAgICAgICBuYW1lPVwic2FtcGxpbmcudHlwZVwiXG4gICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgbWFuZGF0b3J5PXt0cnVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAga2V5PVwicmFwaWRcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInNhbXBsaW5nX3R5cGVfcmFwaWRcIlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoJ3NhbXBsaW5nX3R5cGVzX21pbmkuc2FtcGxpbmdfdHlwZV9yYXBpZCcpfVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIGtleT1cImNvbXBsZXhcIiB2YWx1ZT1cInNhbXBsaW5nX3R5cGVfY29tcGxleFwiPlxuICAgICAgICAgICAgICAgICAgICB7dCgnc2FtcGxpbmdfdHlwZXNfbWluaS5zYW1wbGluZ190eXBlX2NvbXBsZXgnKX1cbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9XCJib3RoXCIgdmFsdWU9XCJzYW1wbGluZ190eXBlX2JvdGhcIj5cbiAgICAgICAgICAgICAgICAgICAge3QoJ3NhbXBsaW5nX3R5cGVzX21pbmkuc2FtcGxpbmdfdHlwZV9ib3RoJyl9XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L01vYmlsZUlucHV0PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1N0eWxlLmJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfSB2YXJpYW50PVwiY2xvc2VcIj5cbiAgICAgICAgICAgICAgICAgICAge3QoJ2Nsb3NlJyl9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtTdHlsZS5idXR0b25DcmVhdGV9XG4gICAgICAgICAgICAgICAgICAgIG91dGxpbmU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e3ZhcmlhbnQuU0VDT05EQVJZfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoJ3NhbXBsaW5nc19wYWdlLmNyZWF0ZV9idXR0b24nKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvRm9ybWlrPlxuICAgICAgICA8L01lbnVJbnB1dFN0eWxlPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE5ld1NhbXBsaW5nVGl0bGUgPSBzdHlsZWQucGBcbiAgZm9udC13ZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZm9udFdlaWdodC53NzAwfTtcbmA7XG5cbmNvbnN0IE1lbnVJbnB1dFN0eWxlID0gc3R5bGVkLmRpdi5hdHRycygocHJvcHM6IE1lbnVJbnB1dFByb3BzKSA9PiAoe1xuICBpc09wZW46IHByb3BzLmlzT3Blbixcbn0pKWBcbiAgcGFkZGluZzogMzNweCAyOHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxNnB4O1xuICB0b3A6IDE0MHB4O1xuICB6LWluZGV4OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnpJbmRleGVzLm1vZGFsfTtcbiAgbWluLWhlaWdodDogNDAwcHg7XG4gIHdpZHRoOiAzOTBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm4xfTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2E2YWNiOTtcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4ICNlM2UzZTM7XG5cbiAgLnJ0bCAmIHtcbiAgICByaWdodDogdW5zZXQ7XG4gICAgbGVmdDogMTZweDtcbiAgfVxuXG4gICoge1xuICAgIGZvbnQtZmFtaWx5OiBOdW5pdG8sIEdpbHJveSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgfVxuXG4gIGFuaW1hdGlvbjogdHJhbnNpdGlvbi1pbiA0NDRtcywgZmFkZS1pbiA0NDRtcztcbiAgQGtleWZyYW1lcyB0cmFuc2l0aW9uLWluIHtcbiAgICBmcm9tIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDBweCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB9XG4gIH1cbiAgQGtleWZyYW1lcyBmYWRlLWluIHtcbiAgICAwJSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLyogVXNlIDQ4MHB4IGFzIG1vYmlsZSdzIG1heC13aWR0aCAqL1xuICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICB0b3A6IGF1dG87XG4gICAgd2lkdGg6IDEwMHZ3O1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuYDtcblxuZXhwb3J0IGRlZmF1bHQgTmV3U2FtcGxpbmdBY3Rpb247XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGtCQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxrQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssR0FBQSxHQUFBTix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0saUJBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQVQsT0FBQTtBQUNBLElBQUFVLE1BQUEsR0FBQUQsc0JBQUEsQ0FBQVQsT0FBQTtBQUNBLElBQUFXLFlBQUEsR0FBQUYsc0JBQUEsQ0FBQVQsT0FBQTtBQUNBLElBQUFZLGNBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLGFBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLGdCQUFBLEdBQUFMLHNCQUFBLENBQUFULE9BQUE7QUFFQSxJQUFBZSxVQUFBLEdBQUFmLE9BQUE7QUFDQSxJQUFBZ0IsTUFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQixZQUFBLEdBQUFSLHNCQUFBLENBQUFULE9BQUE7QUFDQSxJQUFBa0IsS0FBQSxHQUFBbEIsT0FBQTtBQUNBLElBQUFt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