@kando-env/kando-ui 1.2.383 → 1.2.385-alpha.0

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 (603) hide show
  1. package/lib/Router.js +78 -36
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +35 -25
  3. package/lib/Widgets/EventsRow/EventsRow.js +39 -27
  4. package/lib/Widgets/Map/GraphUtils.js +3 -3
  5. package/lib/Widgets/Map/Map.js +138 -99
  6. package/lib/Widgets/Map/MapUtils.js +99 -82
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +77 -53
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +24 -23
  9. package/lib/Widgets/Map/areas/AreaUtils.js +46 -47
  10. package/lib/Widgets/Map/areas/Patterns.js +4 -4
  11. package/lib/Widgets/Map/edges/Edge.js +37 -33
  12. package/lib/Widgets/Map/edges/Edges.js +26 -21
  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 +60 -65
  16. package/lib/Widgets/Map/events/EventPath.js +23 -25
  17. package/lib/Widgets/Map/events/EventUtils.js +80 -60
  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 +15 -22
  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 +83 -145
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +47 -30
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +10 -11
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +12 -11
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -3
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +60 -31
  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 +70 -39
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +18 -15
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +8 -8
  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 +35 -25
  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 +35 -45
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +35 -39
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +27 -28
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +50 -54
  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 +10 -12
  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 +26 -27
  73. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +24 -29
  74. package/lib/Widgets/UtilityInformation/UtilityInformation.js +37 -23
  75. package/lib/Widgets/UtilityInformation/styles.js +25 -34
  76. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -3
  77. package/lib/assets/icons/TopNavbar/index.js +6 -6
  78. package/lib/assets/icons/TrendSvg.js +6 -6
  79. package/lib/assets/icons/index.js +15 -15
  80. package/lib/assets/icons/kandoStepper/index.js +5 -5
  81. package/lib/assets/icons/siteTypes/index.js +1 -1
  82. package/lib/components/ApplyButton/ApplyButton.js +9 -9
  83. package/lib/components/Backdrop/Backdrop.js +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 +12 -13
  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 +20 -13
  90. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +4 -6
  91. package/lib/components/CustomInputs/Search/Search.js +63 -42
  92. package/lib/components/CustomInputs/Select/Select.js +58 -45
  93. package/lib/components/CustomInputs/Select/Select.stories.js +6 -4
  94. package/lib/components/DamageType/DamageType.js +57 -35
  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 +10 -10
  102. package/lib/components/DischargeHeatmap/titles.js +3 -3
  103. package/lib/components/ErrorBoundary.js +41 -27
  104. package/lib/components/Events/Events.js +58 -41
  105. package/lib/components/Graph/Graph.js +96 -77
  106. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +21 -17
  107. package/lib/components/Header/DoubleTabs/DoubleTabs.js +33 -25
  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 +34 -22
  113. package/lib/components/Header/InfoBar/InfoBar.js +103 -74
  114. package/lib/components/Header/InfoBar/Search/Control.js +9 -9
  115. package/lib/components/Header/InfoBar/Search/GroupLabel.js +5 -7
  116. package/lib/components/Header/InfoBar/Search/Search.js +21 -16
  117. package/lib/components/Header/InfoBar/Search/SearchContainer.js +33 -21
  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 +89 -64
  121. package/lib/components/Header/Slideshow/Slideshow.js +90 -68
  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 +18 -18
  125. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +43 -37
  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 +41 -27
  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 +29 -37
  137. package/lib/components/Map/Map.js +23 -20
  138. package/lib/components/Modal/Modal.js +9 -9
  139. package/lib/components/NarrowHeader.js +31 -17
  140. package/lib/components/PointInfo/PointInfo.js +17 -19
  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 +23 -18
  144. package/lib/components/Sector/Sector.test.js +20 -19
  145. package/lib/components/Sector/SectorIconsNew.js +112 -0
  146. package/lib/components/Sector/sectorIcons.js +2 -2
  147. package/lib/components/SevereEvent/Eta/Eta.js +52 -49
  148. package/lib/components/SevereEvent/Eta/styles.js +6 -10
  149. package/lib/components/SevereEvent/SevereEvent.js +37 -30
  150. package/lib/components/Spinner/Spinner.js +8 -8
  151. package/lib/components/Spinner/Spinner.stories.js +6 -4
  152. package/lib/components/Spinner/styles.js +14 -22
  153. package/lib/components/Tabs/Tabs.js +29 -21
  154. package/lib/components/Tabs/Tabs.stories.js +6 -4
  155. package/lib/components/Tabs/assets/index.js +5 -5
  156. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +15 -12
  157. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +51 -40
  158. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +31 -19
  159. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +25 -20
  160. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -13
  161. package/lib/components/TimeRangeSelector/TimeRangeList.js +24 -23
  162. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +25 -17
  163. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +32 -31
  164. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +6 -4
  165. package/lib/components/TimeRangeSelector/constants.js +3 -3
  166. package/lib/components/Toggle/Toggle.js +17 -12
  167. package/lib/components/TrendGraph/TrendGraph.js +39 -23
  168. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +33 -27
  169. package/lib/development-environment/index.js +12 -8
  170. package/lib/development-environment/mock/browser.js +4 -2
  171. package/lib/development-environment/mock/get.js +10 -8
  172. package/lib/development-environment/mock/handlers.js +2 -2
  173. package/lib/development-environment/mock/mockBus.js +4 -4
  174. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -2
  175. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -2
  176. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -2
  177. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -2
  178. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -2
  179. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -2
  180. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -2
  181. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -2
  182. package/lib/development-environment/mock/mockObjects/data-search.js +2 -2
  183. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -2
  184. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -2
  185. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -2
  186. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -2
  187. package/lib/development-environment/mock/mockObjects/metascore.js +2 -2
  188. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -2
  189. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -2
  190. package/lib/development-environment/mock/mockObjects/site-info.js +2 -2
  191. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -2
  192. package/lib/development-environment/togly/ToglyDashboard.js +22 -13
  193. package/lib/development-environment/togly/ToglyItem.js +31 -36
  194. package/lib/development-environment/togly/init.js +2 -2
  195. package/lib/development-environment/togly/macro.js +10 -14
  196. package/lib/development-environment/togly/useDoubleKeyDown.js +9 -7
  197. package/lib/development-environment/togly/useLocalStorage.js +18 -13
  198. package/lib/hooks/useApi.js +55 -19
  199. package/lib/hooks/useApiWithDashboardQuery.js +49 -30
  200. package/lib/hooks/useClickOutside.js +3 -3
  201. package/lib/hooks/useInitializeHeaders.js +5 -5
  202. package/lib/hooks/useKandoFetch.js +29 -16
  203. package/lib/hooks/useMap.js +34 -22
  204. package/lib/hooks/useNavContext.js +26 -22
  205. package/lib/hooks/useRemoveExistingLayers.js +6 -6
  206. package/lib/hooks/useUpdateEventBodyTail.js +17 -13
  207. package/lib/hooks/useUserTimeZone.js +30 -33
  208. package/lib/hooks/useUserTimeZone.test.js +22 -19
  209. package/lib/hooks/useWindowSize.js +14 -7
  210. package/lib/i18n/en.json +15 -0
  211. package/lib/index.js +12 -11
  212. package/lib/macros/getVersion.js +3 -3
  213. package/lib/pages/AreaPage/AreaPage.js +67 -34
  214. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +17 -16
  215. package/lib/pages/AreaPage/Dashboard/Dashboard.js +31 -30
  216. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +25 -17
  217. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +4 -4
  218. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  219. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +11 -11
  220. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -3
  221. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -2
  222. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -4
  223. package/lib/pages/AssessmentPage/AssessmentPage.js +46 -40
  224. package/lib/pages/CannyWidget/Feedback.js +13 -13
  225. package/lib/pages/CovidPage/CovidPage.js +13 -8
  226. package/lib/pages/CovidPage/components/Body.js +27 -25
  227. package/lib/pages/CovidPage/components/Map.js +39 -29
  228. package/lib/pages/CovidPage/components/Sidebar.js +15 -16
  229. package/lib/pages/CovidPage/components/Summary.js +27 -20
  230. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +33 -27
  231. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +73 -51
  232. package/lib/pages/CovidPage/components/areas/Area.js +40 -29
  233. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +46 -55
  234. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +35 -32
  235. package/lib/pages/CovidPage/components/areas/AreasList.js +46 -34
  236. package/lib/pages/CovidPage/components/areas/Sort.js +14 -11
  237. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  238. package/lib/pages/DashboardMap/AreaCard.js +28 -28
  239. package/lib/pages/DashboardMap/AssessmentIcon.js +7 -8
  240. package/lib/pages/DashboardMap/Capacity.js +80 -31
  241. package/lib/pages/DashboardMap/FactoryCard.js +26 -31
  242. package/lib/pages/DashboardMap/HighchartsOptions.js +4 -5
  243. package/lib/pages/DashboardMap/List.js +105 -74
  244. package/lib/pages/DashboardMap/ListContext.js +19 -15
  245. package/lib/pages/DashboardMap/Loader.js +2 -2
  246. package/lib/pages/DashboardMap/SeverityBadge.js +21 -14
  247. package/lib/pages/DashboardMap/WWTPMap.js +60 -48
  248. package/lib/pages/DashboardMap/WaterDischarge.js +8 -8
  249. package/lib/pages/DashboardMap/Widget.js +71 -54
  250. package/lib/pages/DashboardMap/utils.js +65 -48
  251. package/lib/pages/EventsPage/Body/Body.js +15 -20
  252. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +19 -17
  253. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +35 -27
  254. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +6 -8
  255. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +7 -11
  256. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +30 -21
  257. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +64 -53
  258. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +31 -19
  259. package/lib/pages/EventsPage/EventsPage.js +10 -7
  260. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +38 -26
  261. package/lib/pages/EventsPage/events/MoreInfo.js +16 -17
  262. package/lib/pages/EventsPage/events/Sidebar.js +18 -22
  263. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +7 -7
  264. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +20 -17
  265. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +35 -30
  266. package/lib/pages/EventsPage/events/event_info/EventDetails.js +37 -40
  267. package/lib/pages/EventsPage/events/event_info/EventInfo.js +42 -43
  268. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +4 -4
  269. package/lib/pages/EventsPage/events/event_info/EventSection.js +19 -17
  270. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +38 -43
  271. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +47 -39
  272. package/lib/pages/EventsPage/events/event_info/Header/Header.js +4 -6
  273. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +33 -30
  274. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -6
  275. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +36 -29
  276. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +6 -4
  277. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +10 -10
  278. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +9 -7
  279. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +21 -22
  280. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +19 -12
  281. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +3 -5
  282. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +9 -11
  283. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +26 -22
  284. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +8 -12
  285. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +7 -7
  286. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +4 -6
  287. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -2
  288. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +10 -12
  289. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +8 -10
  290. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +12 -10
  291. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +3 -5
  292. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +5 -7
  293. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +5 -7
  294. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +4 -6
  295. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +9 -11
  296. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -15
  297. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +6 -6
  298. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +5 -7
  299. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +15 -17
  300. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +4 -4
  301. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +8 -10
  302. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +11 -16
  303. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +8 -9
  304. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +2 -2
  305. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -3
  306. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +38 -25
  307. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +36 -29
  308. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +9 -11
  309. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +17 -15
  310. package/lib/pages/EventsPage/events/event_info/sources/Source.js +30 -27
  311. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +26 -23
  312. package/lib/pages/EventsPage/events/event_info/styles.js +12 -20
  313. package/lib/pages/EventsPage/events/events_list/EventItem.js +19 -18
  314. package/lib/pages/EventsPage/events/events_list/EventUtils.js +10 -10
  315. package/lib/pages/EventsPage/events/events_list/EventsList.js +145 -124
  316. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +55 -40
  317. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +115 -79
  318. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +77 -60
  319. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +41 -38
  320. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +36 -29
  321. package/lib/pages/EventsPage/events/events_list/Sort.js +16 -13
  322. package/lib/pages/ImportFileWizard/FileUploadRespones.js +20 -13
  323. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +4 -6
  324. package/lib/pages/ImportFileWizard/ImportFile.js +22 -20
  325. package/lib/pages/ImportFileWizard/ResponseBody.js +33 -24
  326. package/lib/pages/ImportFileWizard/ValidationForm.js +22 -23
  327. package/lib/pages/ImportFileWizard/ValidationResponse.js +21 -21
  328. package/lib/pages/ImportFileWizard/importFileUtils.js +1 -1
  329. package/lib/pages/ImportGisPage/ImportGisContainer.js +24 -21
  330. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +23 -21
  331. package/lib/pages/ImportGisPage/importGisUtils.js +21 -13
  332. package/lib/pages/ImportGisProcess/index.js +15 -12
  333. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +12 -7
  334. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +19 -17
  335. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -3
  336. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +65 -56
  337. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -6
  338. package/lib/pages/NotificationsPage/Notification/Notification.js +12 -16
  339. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -2
  340. package/lib/pages/NotificationsPage/Notifications.stories.js +6 -4
  341. package/lib/pages/NotificationsPage/NotificationsPage.js +36 -18
  342. package/lib/pages/NotificationsPage/assets/index.js +9 -9
  343. package/lib/pages/NotificationsPageV2/NotificationsPage.js +97 -71
  344. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +63 -94
  345. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +16 -14
  346. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +16 -18
  347. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +21 -17
  348. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +21 -17
  349. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +22 -18
  350. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +69 -83
  351. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +22 -18
  352. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +74 -74
  353. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +95 -97
  354. package/lib/pages/NotificationsPageV2/notificationUtils.js +48 -54
  355. package/lib/pages/OldSitePage/OldSitePage.js +132 -57
  356. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -5
  357. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  358. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +6 -8
  359. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +20 -18
  360. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +7 -9
  361. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +18 -12
  362. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +12 -16
  363. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  364. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -18
  365. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +63 -51
  366. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +7 -9
  367. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +53 -29
  368. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -4
  369. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  370. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +10 -11
  371. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +11 -10
  372. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +28 -32
  373. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +29 -27
  374. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  375. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +12 -18
  376. package/lib/pages/PollutionRiskAssessment/FactoryDetails.js +130 -0
  377. package/lib/pages/PollutionRiskAssessment/FilterBehaviors.js +64 -0
  378. package/lib/pages/PollutionRiskAssessment/FilterButton.js +36 -0
  379. package/lib/pages/PollutionRiskAssessment/Map.js +49 -0
  380. package/lib/pages/PollutionRiskAssessment/Map.scss +59 -0
  381. package/lib/pages/PollutionRiskAssessment/TotalSavings.js +51 -0
  382. package/lib/pages/PollutionRiskAssessment/UseCases.js +53 -0
  383. package/lib/pages/PollutionRiskAssessment/contact_us.svg +18 -0
  384. package/lib/pages/PollutionRiskAssessment/filter_button.svg +5 -0
  385. package/lib/pages/PollutionRiskAssessment/index.js +246 -0
  386. package/lib/pages/PollutionRiskAssessment/index.scss +45 -0
  387. package/lib/pages/PollutionRiskAssessment/pig.svg +3 -0
  388. package/lib/pages/PollutionRiskAssessment/useMap.js +132 -0
  389. package/lib/pages/PollutionRiskAssessment/use_cases.json +50 -0
  390. package/lib/pages/ProfilePage/Container.js +2 -2
  391. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +44 -28
  392. package/lib/pages/ProfilePage/ProfilePage.js +214 -121
  393. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +33 -25
  394. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +16 -19
  395. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +30 -28
  396. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +117 -57
  397. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +20 -17
  398. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +10 -12
  399. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +41 -39
  400. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +26 -25
  401. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +16 -16
  402. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +15 -13
  403. package/lib/pages/SamplingsPage/NavigationDropdown.js +32 -45
  404. package/lib/pages/SamplingsPage/NewSamplingAction.js +100 -76
  405. package/lib/pages/SamplingsPage/SamplingMobileModal.js +101 -129
  406. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +22 -21
  407. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +22 -34
  408. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +59 -36
  409. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +18 -15
  410. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +7 -9
  411. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +194 -110
  412. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +55 -49
  413. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +43 -47
  414. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +45 -49
  415. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +20 -19
  416. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -3
  417. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +6 -10
  418. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +54 -58
  419. package/lib/pages/SamplingsPage/SamplingsMobileList.js +28 -21
  420. package/lib/pages/SamplingsPage/SamplingsPage.js +33 -27
  421. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +58 -50
  422. package/lib/pages/SamplingsPage/samplingsPageUtils.js +76 -68
  423. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +4 -6
  424. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +13 -14
  425. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +13 -10
  426. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  427. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  428. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +10 -14
  429. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +8 -9
  430. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +23 -26
  431. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +17 -14
  432. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +32 -36
  433. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +7 -9
  434. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +24 -15
  435. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +12 -16
  436. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  437. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -18
  438. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +70 -58
  439. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +7 -9
  440. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +26 -15
  441. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -5
  442. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  443. package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -9
  444. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +37 -29
  445. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  446. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +11 -10
  447. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +59 -60
  448. package/lib/pages/SitePage/SamplingParameters/dataParser.js +39 -30
  449. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +9 -11
  450. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  451. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +12 -18
  452. package/lib/pages/SitePage/SiteInformation/EmptyState.js +7 -11
  453. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +30 -31
  454. package/lib/pages/SitePage/SitePage.js +81 -42
  455. package/lib/pages/UploadLabResult/index.js +13 -13
  456. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +35 -26
  457. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +8 -6
  458. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +8 -9
  459. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +5 -3
  460. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +48 -47
  461. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +6 -10
  462. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -4
  463. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +6 -4
  464. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +12 -13
  465. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +12 -15
  466. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +7 -7
  467. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -2
  468. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +29 -21
  469. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +30 -26
  470. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +17 -16
  471. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +13 -7
  472. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +31 -27
  473. package/lib/pages/WbeDashboard/ExpandableComponent.js +8 -9
  474. package/lib/pages/WbeDashboard/GraphWrapper.js +36 -30
  475. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -17
  476. package/lib/pages/WbeDashboard/SearchInput.js +20 -15
  477. package/lib/pages/WbeDashboard/SummaryGraph.js +76 -50
  478. package/lib/pages/WbeDashboard/SummaryGraphModal.js +17 -19
  479. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  480. package/lib/pages/WbeDashboard/WbeDashboardPage.js +213 -151
  481. package/lib/pages/WbeDashboard/WbeSummaryBar.js +48 -40
  482. package/lib/pages/WwtpPage/DashboardCard.js +23 -26
  483. package/lib/pages/WwtpPage/DischargePatternCard.js +23 -14
  484. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +22 -26
  485. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +18 -19
  486. package/lib/pages/WwtpPage/Map.js +3 -5
  487. package/lib/pages/WwtpPage/OrganicCard.js +2 -2
  488. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -2
  489. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +6 -8
  490. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +8 -9
  491. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +14 -18
  492. package/lib/pages/WwtpPage/PredictionCard.js +2 -2
  493. package/lib/pages/WwtpPage/TrendCard.js +19 -18
  494. package/lib/pages/WwtpPage/UpgradeBox.js +3 -3
  495. package/lib/pages/WwtpPage/WwtpPage.js +8 -8
  496. package/lib/pages/WwtpPage/WwtpPageContainer.js +16 -21
  497. package/lib/providers/Slideshow/SlideshowContext.js +9 -11
  498. package/lib/providers/Slideshow/SlideshowProvider.js +38 -22
  499. package/lib/providers/Slideshow/SlideshowRunner.js +19 -17
  500. package/lib/providers/UrlHistory/UrlHistoryContext.js +4 -6
  501. package/lib/providers/UrlHistory/UrlHistoryProvider.js +11 -12
  502. package/lib/providers/UrlHistory/index.js +2 -2
  503. package/lib/providers/UrlHistory/useLastVisited.js +5 -5
  504. package/lib/store/ImportGis/actionTypes.js +1 -1
  505. package/lib/store/ImportGis/actionsCreator.js +5 -7
  506. package/lib/store/ImportGis/reducer.js +29 -40
  507. package/lib/store/WBE/actionTypes.js +2 -2
  508. package/lib/store/WBE/reducer.js +9 -13
  509. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +14 -24
  510. package/lib/store/areas/actionTypes.js +4 -4
  511. package/lib/store/areas/actions.js +13 -7
  512. package/lib/store/areas/reducer.js +6 -8
  513. package/lib/store/context/actionTypes.js +3 -3
  514. package/lib/store/context/actions.js +3 -3
  515. package/lib/store/context/contextMiddlewares.js +16 -14
  516. package/lib/store/context/reducer.js +9 -13
  517. package/lib/store/dashboard/dashboardSlice.js +10 -18
  518. package/lib/store/edges/actionTypes.js +5 -5
  519. package/lib/store/edges/actions.js +8 -4
  520. package/lib/store/edges/reducer.js +17 -13
  521. package/lib/store/events/actionTypes.js +17 -17
  522. package/lib/store/events/actions.js +7 -3
  523. package/lib/store/events/reducer.js +49 -42
  524. package/lib/store/global/actionTypes.js +11 -11
  525. package/lib/store/global/actions.js +6 -8
  526. package/lib/store/global/reducer.js +10 -11
  527. package/lib/store/permissions/permissionsSlice.js +8 -12
  528. package/lib/store/points/actionTypes.js +3 -3
  529. package/lib/store/points/actions.js +8 -4
  530. package/lib/store/points/models/IGeoPoint.js +6 -0
  531. package/lib/store/points/reducer.js +5 -7
  532. package/lib/store/rootActionTypes.js +2 -2
  533. package/lib/store/rootReducer.js +12 -17
  534. package/lib/store/rootStore.js +5 -5
  535. package/lib/store/samplings/actionTypes.js +1 -1
  536. package/lib/store/samplings/reducer.js +14 -16
  537. package/lib/styles/StylesLayout.js +3 -5
  538. package/lib/styles/theme/theme.js +28 -27
  539. package/lib/test/mocks/browser.js +4 -2
  540. package/lib/test/test-utils.js +15 -17
  541. package/lib/ui-kit/Button/Button.js +80 -128
  542. package/lib/ui-kit/Button/Button.test.js +29 -24
  543. package/lib/ui-kit/Checkbox/Checkbox.js +26 -31
  544. package/lib/ui-kit/ContentCard/ContentCard.js +18 -15
  545. package/lib/ui-kit/Dashboard/Dashboard.js +22 -25
  546. package/lib/ui-kit/DropDown/DropDown.js +24 -23
  547. package/lib/ui-kit/DropDown/DropDown.test.js +12 -12
  548. package/lib/ui-kit/DropDown/DropDownItem.js +21 -24
  549. package/lib/ui-kit/DropDown/DropdownToggle.js +8 -12
  550. package/lib/ui-kit/EmptyState/EmptyState.js +4 -6
  551. package/lib/ui-kit/IconAction/IconAction.js +5 -7
  552. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +64 -48
  553. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +52 -69
  554. package/lib/ui-kit/InletsPie/InletsPie.js +13 -15
  555. package/lib/ui-kit/InletsPie/options.js +6 -6
  556. package/lib/ui-kit/KandoBottomSheet/KandoBottomSheet.js +44 -0
  557. package/lib/ui-kit/KandoBottomSheet/KandoBottomSheet.scss +18 -0
  558. package/lib/ui-kit/KandoList/KandoList.js +12 -14
  559. package/lib/ui-kit/KandoTable/KandoTable.js +40 -48
  560. package/lib/ui-kit/KandoTable/KandoTable.test.js +22 -16
  561. package/lib/ui-kit/Layout/Layout.js +4 -6
  562. package/lib/ui-kit/MobileInput/MobileInput.js +50 -60
  563. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +16 -13
  564. package/lib/ui-kit/OrganicEvents/GaugeChart.js +6 -8
  565. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +6 -6
  566. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +20 -27
  567. package/lib/ui-kit/OrganicEvents/TextInfo.js +10 -15
  568. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +8 -10
  569. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +17 -14
  570. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -3
  571. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +20 -20
  572. package/lib/ui-kit/ScoreGauge/constant.js +3 -3
  573. package/lib/ui-kit/TimeLineChart/TrendChart.js +42 -54
  574. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +7 -8
  575. package/lib/ui-kit/Tooltip/Tooltip.js +8 -14
  576. package/lib/ui-kit/index.js +8 -8
  577. package/lib/ui-kit/kandoStepper/KandoStepper.js +12 -12
  578. package/lib/ui-kit/siteName/SiteName.js +8 -11
  579. package/lib/utilities/ActionUtility.js +7 -7
  580. package/lib/utilities/Alert.js +17 -21
  581. package/lib/utilities/Analytics.js +11 -11
  582. package/lib/utilities/Array.js +5 -4
  583. package/lib/utilities/Enum.js +51 -15
  584. package/lib/utilities/ErrorBoundary.js +41 -27
  585. package/lib/utilities/File.js +69 -40
  586. package/lib/utilities/GetDir.js +7 -8
  587. package/lib/utilities/KandoDate.js +15 -7
  588. package/lib/utilities/KandoModal.js +26 -16
  589. package/lib/utilities/LocalStorage.js +10 -8
  590. package/lib/utilities/ThousandsToK.js +3 -3
  591. package/lib/utilities/TimeFormat.js +20 -21
  592. package/lib/utilities/Truncate.js +25 -17
  593. package/lib/utilities/edgesMath.js +15 -14
  594. package/lib/utilities/i18n.js +3 -3
  595. package/lib/utilities/kql.js +14 -12
  596. package/lib/utilities/map/icons.js +3 -3
  597. package/lib/utilities/polylinedecorator.js +112 -87
  598. package/lib/utilities/scoreToData.js +17 -17
  599. package/lib/utilities/scoreToData.test.js +5 -5
  600. package/lib/utilities/time.js +8 -8
  601. package/lib/utilities/uploadToS3.js +11 -11
  602. package/lib/utilities/urls.js +64 -61
  603. package/package.json +3 -1
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.WbeDashboardPage = void 0;
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
8
11
  var _styledComponents = _interopRequireDefault(require("styled-components"));
9
12
  var _react = _interopRequireWildcard(require("react"));
10
13
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
@@ -24,7 +27,7 @@ var _nvlStatusHelper = require("../CovidPage/components/nvlStatusHelper");
24
27
  var _Map = require("../../Widgets/Map/Map");
25
28
  var _KandoTable = require("ui-kit/KandoTable/KandoTable");
26
29
  var _Tabs = require("./Tabs");
27
- var _useKandoFetch = _interopRequireDefault(require("../../hooks/useKandoFetch"));
30
+ var _useKandoFetch2 = _interopRequireDefault(require("../../hooks/useKandoFetch"));
28
31
  var _useQueryURL = _interopRequireDefault(require("../../hooks/useQueryURL"));
29
32
  var _Dropdown = _interopRequireDefault(require("react-bootstrap/cjs/Dropdown"));
30
33
  var _DropdownButton = _interopRequireDefault(require("react-bootstrap/cjs/DropdownButton"));
@@ -35,25 +38,27 @@ var _Spinner = require("../../components/Spinner/Spinner");
35
38
  var _WbeSummaryBar = require("./WbeSummaryBar");
36
39
  var _ErrorBoundary = _interopRequireDefault(require("../../utilities/ErrorBoundary"));
37
40
  var _theme = require("../../styles/theme/theme");
38
- var _useKandoFetch2 = _interopRequireDefault(require("hooks/useKandoFetch"));
41
+ var _useKandoFetch3 = _interopRequireDefault(require("hooks/useKandoFetch"));
39
42
  var _urls = require("utilities/urls");
40
43
  var _useUserTimeZone = require("hooks/useUserTimeZone");
41
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
42
- 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; }
43
- const TABLE_ROWS_PER_PAGE = 25;
44
- const MAPBOX_WBE_DASHBOARD_STYLE = 'ckzzkjsi7005f14o9im0mczs9';
45
- const WbeDashboardPage = () => {
46
- const getWAId = () => {
44
+ 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); }
45
+ 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; }
46
+ var TABLE_ROWS_PER_PAGE = 25;
47
+ var MAPBOX_WBE_DASHBOARD_STYLE = 'ckzzkjsi7005f14o9im0mczs9';
48
+ var WbeDashboardPage = function WbeDashboardPage() {
49
+ var getWAId = function getWAId() {
47
50
  return query.get('water_authority_id');
48
51
  };
49
- const fetchUrl = firstParam => {
50
- return `/api_ui/wbe_dashboard/${selectedPathogen}/${firstParam}?water_authority_id=${getWAId()}`;
52
+ var fetchUrl = function fetchUrl(firstParam) {
53
+ return "/api_ui/wbe_dashboard/".concat(selectedPathogen, "/").concat(firstParam, "?water_authority_id=").concat(getWAId());
51
54
  };
52
- const pathogensUrl = () => (0, _urls.urls)({
53
- waterAuthorityId: getWAId()
54
- }).wbeDashboard.pathogens.url;
55
- const DEFAULT_TABS = [_i18n.default.t('components.wbe_dashboard.cities'), _i18n.default.t('components.wbe_dashboard.monitored_areas')];
56
- const convertTabNameToParam = tab_name => {
55
+ var pathogensUrl = function pathogensUrl() {
56
+ return (0, _urls.urls)({
57
+ waterAuthorityId: getWAId()
58
+ }).wbeDashboard.pathogens.url;
59
+ };
60
+ var DEFAULT_TABS = [_i18n.default.t('components.wbe_dashboard.cities'), _i18n.default.t('components.wbe_dashboard.monitored_areas')];
61
+ var convertTabNameToParam = function convertTabNameToParam(tab_name) {
57
62
  if (tab_name === _i18n.default.t('components.wbe_dashboard.cities')) {
58
63
  return 'city';
59
64
  } else if (tab_name === _i18n.default.t('components.wbe_dashboard.monitored_areas')) {
@@ -61,35 +66,58 @@ const WbeDashboardPage = () => {
61
66
  }
62
67
  return 'city';
63
68
  };
64
- const query = (0, _useQueryURL.default)();
65
- const getPathogenName = pathogen => {
69
+ var query = (0, _useQueryURL.default)();
70
+ var getPathogenName = function getPathogenName(pathogen) {
66
71
  return pathogen === 'Covid Hach' ? 'SARS-CoV-2' : pathogen;
67
72
  };
68
- const getPathogen = () => {
73
+ var getPathogen = function getPathogen() {
69
74
  return query.get('pathogen') || 'covid';
70
75
  };
71
- const [currentData, setCurrentData] = (0, _react.useState)([]);
72
- const [mapAreas, setMapAreas] = (0, _react.useState)([]);
73
- const [mapZoom, setMapZoom] = (0, _react.useState)([]);
74
- const [rows, setRows] = (0, _react.useState)([]);
75
- const [tabs, setTabs] = (0, _react.useState)(DEFAULT_TABS);
76
- const [selectedTab, setSelectedTab] = (0, _react.useState)(tabs[0]);
77
- const [selectedPathogen, setSelectedPathogen] = (0, _react.useState)(getPathogen());
78
- const {
79
- data,
80
- isFetching,
81
- setFetching
82
- } = (0, _useKandoFetch.default)(fetchUrl(convertTabNameToParam(selectedTab)));
83
- const {
84
- data: pathogens,
85
- isFetching: isFetchingPathogens
86
- } = (0, _useKandoFetch2.default)(pathogensUrl());
87
- const dispatch = (0, _reactRedux.useDispatch)();
88
- const navContext = (0, _reactRedux.useSelector)(state => state.nav_context_data.navContext);
89
- const globalData = (0, _reactRedux.useSelector)(state => state.global_data);
90
- const isRtl = navContext.locale === 'he' ? true : false;
91
- const colorForRow = row => {
92
- let quality;
76
+ var _useState = (0, _react.useState)([]),
77
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
78
+ currentData = _useState2[0],
79
+ setCurrentData = _useState2[1];
80
+ var _useState3 = (0, _react.useState)([]),
81
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
82
+ mapAreas = _useState4[0],
83
+ setMapAreas = _useState4[1];
84
+ var _useState5 = (0, _react.useState)([]),
85
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
86
+ mapZoom = _useState6[0],
87
+ setMapZoom = _useState6[1];
88
+ var _useState7 = (0, _react.useState)([]),
89
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
90
+ rows = _useState8[0],
91
+ setRows = _useState8[1];
92
+ var _useState9 = (0, _react.useState)(DEFAULT_TABS),
93
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
94
+ tabs = _useState10[0],
95
+ setTabs = _useState10[1];
96
+ var _useState11 = (0, _react.useState)(tabs[0]),
97
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
98
+ selectedTab = _useState12[0],
99
+ setSelectedTab = _useState12[1];
100
+ var _useState13 = (0, _react.useState)(getPathogen()),
101
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
102
+ selectedPathogen = _useState14[0],
103
+ setSelectedPathogen = _useState14[1];
104
+ var _useKandoFetch = (0, _useKandoFetch2.default)(fetchUrl(convertTabNameToParam(selectedTab))),
105
+ data = _useKandoFetch.data,
106
+ isFetching = _useKandoFetch.isFetching,
107
+ setFetching = _useKandoFetch.setFetching;
108
+ var _UseKandoFetch = (0, _useKandoFetch3.default)(pathogensUrl()),
109
+ pathogens = _UseKandoFetch.data,
110
+ isFetchingPathogens = _UseKandoFetch.isFetching;
111
+ var dispatch = (0, _reactRedux.useDispatch)();
112
+ var navContext = (0, _reactRedux.useSelector)(function (state) {
113
+ return state.nav_context_data.navContext;
114
+ });
115
+ var globalData = (0, _reactRedux.useSelector)(function (state) {
116
+ return state.global_data;
117
+ });
118
+ var isRtl = navContext.locale === 'he' ? true : false;
119
+ var colorForRow = function colorForRow(row) {
120
+ var quality;
93
121
  if (!row.sample_active) {
94
122
  quality = 'inactive-sampling';
95
123
  } else if (isInfected(row.nvl)) {
@@ -97,82 +125,106 @@ const WbeDashboardPage = () => {
97
125
  } else {
98
126
  quality = 'clean';
99
127
  }
100
- return `row_name--${quality}`;
128
+ return "row_name--".concat(quality);
101
129
  };
102
- const userFormat = (0, _useUserTimeZone.useUserSelectedDateFormat)();
103
- const columns = _react.default.useMemo(() => [{
104
- name: _i18n.default.t('components.wbe_dashboard.name'),
105
- selector: row => row.name,
106
- sortable: true,
107
- cell: row => /*#__PURE__*/_react.default.createElement(RowName, {
108
- isRtl: isRtl
109
- }, /*#__PURE__*/_react.default.createElement("div", {
110
- "data-tag": "allowRowEvents",
111
- className: `row_name ${colorForRow(row)}`,
112
- onClick: () => {
113
- handleAreaClick(row);
130
+ var userFormat = (0, _useUserTimeZone.useUserSelectedDateFormat)();
131
+ var columns = _react.default.useMemo(function () {
132
+ return [{
133
+ name: _i18n.default.t('components.wbe_dashboard.name'),
134
+ selector: function selector(row) {
135
+ return row.name;
136
+ },
137
+ sortable: true,
138
+ cell: function cell(row) {
139
+ return /*#__PURE__*/_react.default.createElement(RowName, {
140
+ isRtl: isRtl
141
+ }, /*#__PURE__*/_react.default.createElement("div", {
142
+ "data-tag": "allowRowEvents",
143
+ className: "row_name ".concat(colorForRow(row)),
144
+ onClick: function onClick() {
145
+ handleAreaClick(row);
146
+ }
147
+ }, /*#__PURE__*/_react.default.createElement("div", {
148
+ className: 'expandable-icon'
149
+ }, /*#__PURE__*/_react.default.createElement("span", null, row.has_children && /*#__PURE__*/_react.default.createElement(_DrillDownIcon.ReactComponent, null), !row.has_children && /*#__PURE__*/_react.default.createElement(_BaseLevel.ReactComponent, null))), /*#__PURE__*/_react.default.createElement("span", {
150
+ className: 'name'
151
+ }, /*#__PURE__*/_react.default.createElement(_Truncate.default, {
152
+ characters: 3,
153
+ inheritTextAlign: true
154
+ }, row.name))));
114
155
  }
115
- }, /*#__PURE__*/_react.default.createElement("div", {
116
- className: 'expandable-icon'
117
- }, /*#__PURE__*/_react.default.createElement("span", null, row.has_children && /*#__PURE__*/_react.default.createElement(_DrillDownIcon.ReactComponent, null), !row.has_children && /*#__PURE__*/_react.default.createElement(_BaseLevel.ReactComponent, null))), /*#__PURE__*/_react.default.createElement("span", {
118
- className: 'name'
119
- }, /*#__PURE__*/_react.default.createElement(_Truncate.default, {
120
- characters: 3,
121
- inheritTextAlign: true
122
- }, row.name))))
123
- }, {
124
- name: _i18n.default.t('components.wbe_dashboard.nvl_score'),
125
- selector: row => row.nvl,
126
- sortable: true,
127
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
128
- "data-tag": "allowRowEvents"
129
- }, row.nvl)
130
- }, {
131
- name: _i18n.default.t('components.wbe_dashboard.percentage_from_last_sampling'),
132
- selector: row => row.nvl_change,
133
- sortable: true,
134
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
135
- "data-tag": "allowRowEvents",
136
- style: {
137
- direction: 'ltr'
156
+ }, {
157
+ name: _i18n.default.t('components.wbe_dashboard.nvl_score'),
158
+ selector: function selector(row) {
159
+ return row.nvl;
160
+ },
161
+ sortable: true,
162
+ cell: function cell(row) {
163
+ return /*#__PURE__*/_react.default.createElement("div", {
164
+ "data-tag": "allowRowEvents"
165
+ }, row.nvl);
138
166
  }
139
- }, /*#__PURE__*/_react.default.createElement("span", {
140
- style: {
141
- color: '#000000',
142
- margin: '0 6px'
167
+ }, {
168
+ name: _i18n.default.t('components.wbe_dashboard.percentage_from_last_sampling'),
169
+ selector: function selector(row) {
170
+ return row.nvl_change;
171
+ },
172
+ sortable: true,
173
+ cell: function cell(row) {
174
+ return /*#__PURE__*/_react.default.createElement("div", {
175
+ "data-tag": "allowRowEvents",
176
+ style: {
177
+ direction: 'ltr'
178
+ }
179
+ }, /*#__PURE__*/_react.default.createElement("span", {
180
+ style: {
181
+ color: '#000000',
182
+ margin: '0 6px'
183
+ }
184
+ }, row.nvl_change, "%"), /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
185
+ icon: row.nvl_change > 0 ? _freeSolidSvgIcons.faChevronUp : _freeSolidSvgIcons.faChevronDown
186
+ }));
143
187
  }
144
- }, row.nvl_change, "%"), /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
145
- icon: row.nvl_change > 0 ? _freeSolidSvgIcons.faChevronUp : _freeSolidSvgIcons.faChevronDown
146
- }))
147
- }, {
148
- name: _i18n.default.t('components.wbe_dashboard.last_sampled'),
149
- selector: 'last_sampled',
150
- sortable: row => row.last_updated,
151
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
152
- "data-tag": "allowRowEvents"
153
- }, row.last_updated === null ? '-' : (0, _useUserTimeZone.dayFormatFromTime)(row.last_updated, userFormat))
154
- }, {
155
- name: _i18n.default.t('components.wbe_dashboard.trend_graph'),
156
- selector: 'trend_graph',
157
- sortable: true,
158
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
159
- "data-tag": "allowRowEvents"
160
- }, /*#__PURE__*/_react.default.createElement(_GraphWrapper.GraphWrapper, {
161
- key: row.id,
162
- row: row,
163
- water_authority_id: getWAId(),
164
- pathogen: selectedPathogen
165
- }))
166
- }, {
167
- name: _i18n.default.t('components.wbe_dashboard.population'),
168
- selector: row => row.population,
169
- sortable: true,
170
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
171
- "data-tag": "allowRowEvents"
172
- }, (0, _ThousandsToK.kFormatter)(parseInt(row.population)))
173
- }], [isRtl, selectedPathogen, userFormat]);
174
- const initializeMapAreas = areas => {
175
- const mappedWithColor = areas.map(a => {
188
+ }, {
189
+ name: _i18n.default.t('components.wbe_dashboard.last_sampled'),
190
+ selector: 'last_sampled',
191
+ sortable: function sortable(row) {
192
+ return row.last_updated;
193
+ },
194
+ cell: function cell(row) {
195
+ return /*#__PURE__*/_react.default.createElement("div", {
196
+ "data-tag": "allowRowEvents"
197
+ }, row.last_updated === null ? '-' : (0, _useUserTimeZone.dayFormatFromTime)(row.last_updated, userFormat));
198
+ }
199
+ }, {
200
+ name: _i18n.default.t('components.wbe_dashboard.trend_graph'),
201
+ selector: 'trend_graph',
202
+ sortable: true,
203
+ cell: function cell(row) {
204
+ return /*#__PURE__*/_react.default.createElement("div", {
205
+ "data-tag": "allowRowEvents"
206
+ }, /*#__PURE__*/_react.default.createElement(_GraphWrapper.GraphWrapper, {
207
+ key: row.id,
208
+ row: row,
209
+ water_authority_id: getWAId(),
210
+ pathogen: selectedPathogen
211
+ }));
212
+ }
213
+ }, {
214
+ name: _i18n.default.t('components.wbe_dashboard.population'),
215
+ selector: function selector(row) {
216
+ return row.population;
217
+ },
218
+ sortable: true,
219
+ cell: function cell(row) {
220
+ return /*#__PURE__*/_react.default.createElement("div", {
221
+ "data-tag": "allowRowEvents"
222
+ }, (0, _ThousandsToK.kFormatter)(parseInt(row.population)));
223
+ }
224
+ }];
225
+ }, [isRtl, selectedPathogen, userFormat]);
226
+ var initializeMapAreas = function initializeMapAreas(areas) {
227
+ var mappedWithColor = areas.map(function (a) {
176
228
  a.wbe_dashboard_name = a.name;
177
229
  a.showColorOnlyInBorders = true;
178
230
  if (!a.sample_active) {
@@ -189,16 +241,16 @@ const WbeDashboardPage = () => {
189
241
  });
190
242
  setMapAreas(mappedWithColor);
191
243
  };
192
- const zoomToArea = area => {
244
+ var zoomToArea = function zoomToArea(area) {
193
245
  area.shape_data !== undefined && setMapZoom(area.shape_data);
194
246
  };
195
- const zoomAllAreas = data => {
196
- const shapeData = data.map(datum => {
247
+ var zoomAllAreas = function zoomAllAreas(data) {
248
+ var shapeData = data.map(function (datum) {
197
249
  return datum.shape_data;
198
250
  });
199
251
  setMapZoom(shapeData);
200
252
  };
201
- const isInfected = nvl => {
253
+ var isInfected = function isInfected(nvl) {
202
254
  if ((0, _nvlStatusHelper.levelNVL)(nvl) === 'clean') {
203
255
  return false;
204
256
  } else if ((0, _nvlStatusHelper.levelNVL)(nvl) === 'low' || (0, _nvlStatusHelper.levelNVL)(nvl) === 'medium' || (0, _nvlStatusHelper.levelNVL)(nvl) === 'high') {
@@ -206,32 +258,36 @@ const WbeDashboardPage = () => {
206
258
  }
207
259
  return;
208
260
  };
209
- const history = (0, _reactRouterDom.useHistory)();
210
- const waterAuthorityId = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityId);
211
- const dir = navContext.locale === 'he' ? _reactDataTableComponent.Direction.RTL : _reactDataTableComponent.Direction.LTR;
212
- const filterResultsAndSetRows = text => {
213
- let results = currentData.filter(function (el) {
261
+ var history = (0, _reactRouterDom.useHistory)();
262
+ var waterAuthorityId = (0, _reactRedux.useSelector)(function (state) {
263
+ return state.global_data.waterAuthorityId;
264
+ });
265
+ var dir = navContext.locale === 'he' ? _reactDataTableComponent.Direction.RTL : _reactDataTableComponent.Direction.LTR;
266
+ var filterResultsAndSetRows = function filterResultsAndSetRows(text) {
267
+ var results = currentData.filter(function (el) {
214
268
  return el.name.toLowerCase().includes(text.toLowerCase());
215
269
  });
216
270
  setRows(results);
217
271
  };
218
- const handleOnRowExpand = (expanded, row) => {
272
+ var handleOnRowExpand = function handleOnRowExpand(expanded, row) {
219
273
  expanded && zoomToArea(row);
220
274
  !expanded && zoomAllAreas(data);
221
275
  };
222
- const waterAuthorityName = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityName);
223
- const handleSelectPathogenClick = pathogen => {
276
+ var waterAuthorityName = (0, _reactRedux.useSelector)(function (state) {
277
+ return state.global_data.waterAuthorityName;
278
+ });
279
+ var handleSelectPathogenClick = function handleSelectPathogenClick(pathogen) {
224
280
  (0, _Analytics.analyticsTrack)('WBE Status Report - Pathogen change clicked', {
225
281
  pathogen: pathogen,
226
282
  utility_name: waterAuthorityName
227
283
  });
228
284
  setSelectedPathogen(pathogen);
229
- history.push(`/wbe_dashboard/index?locale=${navContext.locale}&water_authority_id=${waterAuthorityId}&pathogen=${pathogen}`);
285
+ history.push("/wbe_dashboard/index?locale=".concat(navContext.locale, "&water_authority_id=").concat(waterAuthorityId, "&pathogen=").concat(pathogen));
230
286
  };
231
- const fetchForTabSelection = tab => {
287
+ var fetchForTabSelection = function fetchForTabSelection(tab) {
232
288
  setFetching(true);
233
- _axios.default.get(fetchUrl(tab)).then(response => {
234
- let responseData = response.data.data;
289
+ _axios.default.get(fetchUrl(tab)).then(function (response) {
290
+ var responseData = response.data.data;
235
291
  setFetching(false);
236
292
  setTabs(DEFAULT_TABS);
237
293
  setRows(responseData);
@@ -240,7 +296,7 @@ const WbeDashboardPage = () => {
240
296
  zoomAllAreas(responseData);
241
297
  });
242
298
  };
243
- const handleTabSelectionClick = tab => {
299
+ var handleTabSelectionClick = function handleTabSelectionClick(tab) {
244
300
  if (!isFetching) {
245
301
  setSelectedTab(tab);
246
302
  if (tab !== _i18n.default.t('components.wbe_dashboard.custom')) {
@@ -249,24 +305,24 @@ const WbeDashboardPage = () => {
249
305
  }
250
306
  }
251
307
  };
252
- const initializeDrilledArea = response => {
253
- let data = response.data.data;
308
+ var initializeDrilledArea = function initializeDrilledArea(response) {
309
+ var data = response.data.data;
254
310
  setRows(data);
255
311
  setCurrentData(data);
256
312
  initializeMapAreas(data);
257
313
  zoomAllAreas(data);
258
314
  };
259
- const handleAreaClick = area => {
315
+ var handleAreaClick = function handleAreaClick(area) {
260
316
  zoomToArea(area);
261
317
  if (area.has_children) {
262
- setTabs([...tabs, _i18n.default.t('components.wbe_dashboard.custom')]);
318
+ setTabs([].concat((0, _toConsumableArray2.default)(tabs), [_i18n.default.t('components.wbe_dashboard.custom')]));
263
319
  setSelectedTab(_i18n.default.t('components.wbe_dashboard.custom'));
264
- _axios.default.get(fetchUrl(area.id)).then(response => {
320
+ _axios.default.get(fetchUrl(area.id)).then(function (response) {
265
321
  initializeDrilledArea(response);
266
322
  });
267
323
  }
268
324
  };
269
- const initializeComponent = () => {
325
+ var initializeComponent = function initializeComponent() {
270
326
  setCurrentData(data);
271
327
  setRows(data);
272
328
  (0, _Analytics.analyticsTrack)('WBE Status Report', {
@@ -275,29 +331,33 @@ const WbeDashboardPage = () => {
275
331
  dispatch((0, _actions.updateNavContext)({
276
332
  name: 'wbe_dashboard'
277
333
  }));
278
- _axios.default.get(fetchUrl('monitored')).then(response => {
279
- let data = response.data.data;
334
+ _axios.default.get(fetchUrl('monitored')).then(function (response) {
335
+ var data = response.data.data;
280
336
  initializeMapAreas(data);
281
337
  zoomAllAreas(data);
282
338
  });
283
339
  };
284
- (0, _react.useEffect)(() => {
340
+ (0, _react.useEffect)(function () {
285
341
  if (!isFetching && data !== null) {
286
342
  initializeComponent();
287
343
  }
288
344
  }, [isFetching, selectedPathogen, data]);
289
- const pathogenTitle = !isFetchingPathogens && (pathogens === null || pathogens === void 0 ? void 0 : pathogens.find(item => item.toLowerCase() === selectedPathogen.toLowerCase())) || '';
290
- const dropDownTitle = getPathogenName(pathogenTitle) || _i18n.default.t('components.wbe_dashboard.pathogen_not_found');
291
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Content, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("h1", null, `${_i18n.default.t('components.wbe_dashboard.table_name')} (${getPathogenName(pathogenTitle) || getPathogenName(getPathogen())})`), !isFetchingPathogens && pathogens.length === 0 && /*#__PURE__*/_react.default.createElement("h3", null, _i18n.default.t('components.wbe_dashboard.pathogen_not_found')), /*#__PURE__*/_react.default.createElement(ActionsContainer, null, !isFetchingPathogens && pathogens.length > 1 && /*#__PURE__*/_react.default.createElement(_DropdownButton.default, {
345
+ var pathogenTitle = !isFetchingPathogens && (pathogens === null || pathogens === void 0 ? void 0 : pathogens.find(function (item) {
346
+ return item.toLowerCase() === selectedPathogen.toLowerCase();
347
+ })) || '';
348
+ var dropDownTitle = getPathogenName(pathogenTitle) || _i18n.default.t('components.wbe_dashboard.pathogen_not_found');
349
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Content, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("h1", null, "".concat(_i18n.default.t('components.wbe_dashboard.table_name'), " (").concat(getPathogenName(pathogenTitle) || getPathogenName(getPathogen()), ")")), !isFetchingPathogens && pathogens.length === 0 && /*#__PURE__*/_react.default.createElement("h3", null, _i18n.default.t('components.wbe_dashboard.pathogen_not_found')), /*#__PURE__*/_react.default.createElement(ActionsContainer, null, !isFetchingPathogens && pathogens.length > 1 && /*#__PURE__*/_react.default.createElement(_DropdownButton.default, {
292
350
  id: "dropdown-basic-button",
293
351
  className: 'button button--sort',
294
352
  title: dropDownTitle + ' ',
295
353
  variant: "secondary"
296
- }, pathogens.map(pathogen => {
354
+ }, pathogens.map(function (pathogen) {
297
355
  return /*#__PURE__*/_react.default.createElement(_Dropdown.default.Item, {
298
356
  key: pathogen,
299
357
  href: "#",
300
- onClick: () => handleSelectPathogenClick(pathogen),
358
+ onClick: function onClick() {
359
+ return handleSelectPathogenClick(pathogen);
360
+ },
301
361
  style: {
302
362
  textAlign: navContext.locale === 'he' ? 'right' : 'left'
303
363
  }
@@ -340,28 +400,30 @@ const WbeDashboardPage = () => {
340
400
  })))));
341
401
  };
342
402
  exports.WbeDashboardPage = WbeDashboardPage;
343
- const RowName = _styledComponents.default.div.withConfig({
403
+ var RowName = _styledComponents.default.div.withConfig({
344
404
  displayName: "WbeDashboardPage__RowName",
345
405
  componentId: "sc-14f81cv-0"
346
- })(["width:100%;.row_name{.expandable-icon{width:30px;height:30px;transition:.2s ease-in;border-radius:4px;display:flex;align-items:center;padding:0 4px;span{margin-inline-start:2px;}}&--clean{color:#27a63a;.expandable-icon{background:#27a63a;}}&--infected{color:#e10036;.expandable-icon{background:#e10036;}}&--inactive-sampling{color:", ";.expandable-icon{background:", ";}}.name{position:absolute;font-weight:100;", " top:16px;width:7.5em;margin-inline-start:3px;}}}"], _theme.theme.colorScheme.natural.n60, _theme.theme.colorScheme.natural.n60, p => p.isRtl ? 'right: 51px;' : 'left: 51px;');
347
- const ActionsContainer = _styledComponents.default.div.withConfig({
406
+ })(["width:100%;.row_name{.expandable-icon{width:30px;height:30px;transition:.2s ease-in;border-radius:4px;display:flex;align-items:center;padding:0 4px;span{margin-inline-start:2px;}}&--clean{color:#27a63a;.expandable-icon{background:#27a63a;}}&--infected{color:#e10036;.expandable-icon{background:#e10036;}}&--inactive-sampling{color:", ";.expandable-icon{background:", ";}}.name{position:absolute;font-weight:100;", " top:16px;width:7.5em;margin-inline-start:3px;}}}"], _theme.theme.colorScheme.natural.n60, _theme.theme.colorScheme.natural.n60, function (p) {
407
+ return p.isRtl ? 'right: 51px;' : 'left: 51px;';
408
+ });
409
+ var ActionsContainer = _styledComponents.default.div.withConfig({
348
410
  displayName: "WbeDashboardPage__ActionsContainer",
349
411
  componentId: "sc-14f81cv-1"
350
412
  })(["display:flex;justify-content:start;align-items:center;"]);
351
- const FirstSection = _styledComponents.default.div.withConfig({
413
+ var FirstSection = _styledComponents.default.div.withConfig({
352
414
  displayName: "WbeDashboardPage__FirstSection",
353
415
  componentId: "sc-14f81cv-2"
354
416
  })(["margin:85px 0 20px 0;"]);
355
- const SecondSection = _styledComponents.default.div.withConfig({
417
+ var SecondSection = _styledComponents.default.div.withConfig({
356
418
  displayName: "WbeDashboardPage__SecondSection",
357
419
  componentId: "sc-14f81cv-3"
358
420
  })(["padding:20px;background:#fcfcfc;border:1px solid #e7e7e7;border-radius:6px;"]);
359
- const MapTableContainer = _styledComponents.default.div.withConfig({
421
+ var MapTableContainer = _styledComponents.default.div.withConfig({
360
422
  displayName: "WbeDashboardPage__MapTableContainer",
361
423
  componentId: "sc-14f81cv-4"
362
424
  })(["display:flex;justify-content:start;flex-direction:row-reverse;.map-container{width:unset !important;.event-timerange{display:none;}#map{height:69vh;width:30vw;}}[data-testid='kando-table']{width:100%;}[data-column-id='1']{justify-content:flex-start !important;overflow:visible;position:relative;cursor:pointer;&:hover{.name{color:white !important;}.expandable-icon{width:calc(120px + 1vw);transition:0.2s cubic-bezier(0.65,0.05,0.36,1);}}}.spinner-container{width:100%;display:flex;justify-content:center;}"]);
363
- const Content = _styledComponents.default.div.withConfig({
425
+ var Content = _styledComponents.default.div.withConfig({
364
426
  displayName: "WbeDashboardPage__Content",
365
427
  componentId: "sc-14f81cv-5"
366
428
  })(["@media (max-width:576px){padding:20px;}h1{font-weight:bold;}padding:60px 60px;"]);
367
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdFJvdXRlckRvbSIsIl9BbmFseXRpY3MiLCJfU2VhcmNoSW5wdXQiLCJfcmVhY3RGb250YXdlc29tZSIsIl9HcmFwaFdyYXBwZXIiLCJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJfYWN0aW9ucyIsIl9UaG91c2FuZHNUb0siLCJfRHJpbGxEb3duSWNvbiIsIl9CYXNlTGV2ZWwiLCJfcmVhY3REYXRhVGFibGVDb21wb25lbnQiLCJfbnZsU3RhdHVzSGVscGVyIiwiX01hcCIsIl9LYW5kb1RhYmxlIiwiX1RhYnMiLCJfdXNlS2FuZG9GZXRjaCIsIl91c2VRdWVyeVVSTCIsIl9Ecm9wZG93biIsIl9Ecm9wZG93bkJ1dHRvbiIsIl9heGlvcyIsIl9UcnVuY2F0ZSIsIl9FeHBhbmRhYmxlQ29tcG9uZW50IiwiX1NwaW5uZXIiLCJfV2JlU3VtbWFyeUJhciIsIl9FcnJvckJvdW5kYXJ5IiwiX3RoZW1lIiwiX3VzZUthbmRvRmV0Y2gyIiwiX3VybHMiLCJfdXNlVXNlclRpbWVab25lIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIlRBQkxFX1JPV1NfUEVSX1BBR0UiLCJNQVBCT1hfV0JFX0RBU0hCT0FSRF9TVFlMRSIsIldiZURhc2hib2FyZFBhZ2UiLCJnZXRXQUlkIiwicXVlcnkiLCJmZXRjaFVybCIsImZpcnN0UGFyYW0iLCJzZWxlY3RlZFBhdGhvZ2VuIiwicGF0aG9nZW5zVXJsIiwidXJscyIsIndhdGVyQXV0aG9yaXR5SWQiLCJ3YmVEYXNoYm9hcmQiLCJwYXRob2dlbnMiLCJ1cmwiLCJERUZBVUxUX1RBQlMiLCJpMThuIiwidCIsImNvbnZlcnRUYWJOYW1lVG9QYXJhbSIsInRhYl9uYW1lIiwidXNlUXVlcnlVUkwiLCJnZXRQYXRob2dlbk5hbWUiLCJwYXRob2dlbiIsImdldFBhdGhvZ2VuIiwiY3VycmVudERhdGEiLCJzZXRDdXJyZW50RGF0YSIsInVzZVN0YXRlIiwibWFwQXJlYXMiLCJzZXRNYXBBcmVhcyIsIm1hcFpvb20iLCJzZXRNYXBab29tIiwicm93cyIsInNldFJvd3MiLCJ0YWJzIiwic2V0VGFicyIsInNlbGVjdGVkVGFiIiwic2V0U2VsZWN0ZWRUYWIiLCJzZXRTZWxlY3RlZFBhdGhvZ2VuIiwiZGF0YSIsImlzRmV0Y2hpbmciLCJzZXRGZXRjaGluZyIsInVzZUthbmRvRmV0Y2giLCJpc0ZldGNoaW5nUGF0aG9nZW5zIiwiVXNlS2FuZG9GZXRjaCIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJuYXZDb250ZXh0IiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJnbG9iYWxEYXRhIiwiZ2xvYmFsX2RhdGEiLCJpc1J0bCIsImxvY2FsZSIsImNvbG9yRm9yUm93Iiwicm93IiwicXVhbGl0eSIsInNhbXBsZV9hY3RpdmUiLCJpc0luZmVjdGVkIiwibnZsIiwidXNlckZvcm1hdCIsInVzZVVzZXJTZWxlY3RlZERhdGVGb3JtYXQiLCJjb2x1bW5zIiwiUmVhY3QiLCJ1c2VNZW1vIiwibmFtZSIsInNlbGVjdG9yIiwic29ydGFibGUiLCJjZWxsIiwiY3JlYXRlRWxlbWVudCIsIlJvd05hbWUiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiaGFuZGxlQXJlYUNsaWNrIiwiaGFzX2NoaWxkcmVuIiwiUmVhY3RDb21wb25lbnQiLCJjaGFyYWN0ZXJzIiwiaW5oZXJpdFRleHRBbGlnbiIsIm52bF9jaGFuZ2UiLCJzdHlsZSIsImRpcmVjdGlvbiIsImNvbG9yIiwibWFyZ2luIiwiRm9udEF3ZXNvbWVJY29uIiwiaWNvbiIsImZhQ2hldnJvblVwIiwiZmFDaGV2cm9uRG93biIsImxhc3RfdXBkYXRlZCIsImRheUZvcm1hdEZyb21UaW1lIiwiR3JhcGhXcmFwcGVyIiwiaWQiLCJ3YXRlcl9hdXRob3JpdHlfaWQiLCJwb3B1bGF0aW9uIiwia0Zvcm1hdHRlciIsInBhcnNlSW50IiwiaW5pdGlhbGl6ZU1hcEFyZWFzIiwiYXJlYXMiLCJtYXBwZWRXaXRoQ29sb3IiLCJtYXAiLCJhIiwid2JlX2Rhc2hib2FyZF9uYW1lIiwic2hvd0NvbG9yT25seUluQm9yZGVycyIsInRoZW1lIiwiY29sb3JTY2hlbWUiLCJuYXR1cmFsIiwibjYwIiwiUjEwMCIsIkcxMDAiLCJ6b29tVG9BcmVhIiwiYXJlYSIsInNoYXBlX2RhdGEiLCJ1bmRlZmluZWQiLCJ6b29tQWxsQXJlYXMiLCJzaGFwZURhdGEiLCJkYXR1bSIsImxldmVsTlZMIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJkaXIiLCJEaXJlY3Rpb24iLCJSVEwiLCJMVFIiLCJmaWx0ZXJSZXN1bHRzQW5kU2V0Um93cyIsInRleHQiLCJyZXN1bHRzIiwiZmlsdGVyIiwiZWwiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiaGFuZGxlT25Sb3dFeHBhbmQiLCJleHBhbmRlZCIsIndhdGVyQXV0aG9yaXR5TmFtZSIsImhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2siLCJhbmFseXRpY3NUcmFjayIsInV0aWxpdHlfbmFtZSIsInB1c2giLCJmZXRjaEZvclRhYlNlbGVjdGlvbiIsInRhYiIsImF4aW9zIiwidGhlbiIsInJlc3BvbnNlIiwicmVzcG9uc2VEYXRhIiwiaGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2siLCJpbml0aWFsaXplRHJpbGxlZEFyZWEiLCJpbml0aWFsaXplQ29tcG9uZW50IiwidXBkYXRlTmF2Q29udGV4dCIsInVzZUVmZmVjdCIsInBhdGhvZ2VuVGl0bGUiLCJmaW5kIiwiaXRlbSIsImRyb3BEb3duVGl0bGUiLCJGcmFnbWVudCIsIkNvbnRlbnQiLCJsZW5ndGgiLCJBY3Rpb25zQ29udGFpbmVyIiwidGl0bGUiLCJ2YXJpYW50IiwiSXRlbSIsImhyZWYiLCJ0ZXh0QWxpZ24iLCJGaXJzdFNlY3Rpb24iLCJXYmVTdW1tYXJ5QmFyIiwiU2Vjb25kU2VjdGlvbiIsIlNlYXJjaElucHV0Iiwib25DaGFuZ2VCZWhhdmlvciIsIlRhYnMiLCJoYW5kbGVPbkNsaWNrIiwiTWFwVGFibGVDb250YWluZXIiLCJTcGlubmVyIiwiTWFwIiwiYXJlYVRvQ2VudGVyQnkiLCJlZGdlcyIsInBvaW50cyIsIm1hcEJveFN0eWxlIiwiS2FuZG9UYWJsZSIsIm9uUm93RXhwYW5kVG9nZ2xlZCIsImV4cGFuZGFibGVSb3dzIiwicGFnaW5hdGlvblBlclBhZ2UiLCJyb3dDb21wb25lbnQiLCJFeHBhbmRlZENvbXBvbmVudCIsImV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHMiLCJkZWZhdWx0U29ydEZpZWxkSWQiLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2Iiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhZ2VzL1diZURhc2hib2FyZC9XYmVEYXNoYm9hcmRQYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyBhbmFseXRpY3NUcmFjayB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICcuL1NlYXJjaElucHV0JztcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9yZWFjdC1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBHcmFwaFdyYXBwZXIgfSBmcm9tICcuL0dyYXBoV3JhcHBlcic7XG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25VcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuaW1wb3J0IHsgdXBkYXRlTmF2Q29udGV4dCB9IGZyb20gJy4uLy4uL3N0b3JlL2NvbnRleHQvYWN0aW9ucyc7XG5pbXBvcnQgeyBrRm9ybWF0dGVyIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1Rob3VzYW5kc1RvSyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBEcmlsbERvd25JY29uIH0gZnJvbSAnLi9EcmlsbERvd25JY29uLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBCYXNlTGV2ZWwgfSBmcm9tICcuL0Jhc2VMZXZlbC5zdmcnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAncmVhY3QtZGF0YS10YWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgbGV2ZWxOVkwgfSBmcm9tICcuLi9Db3ZpZFBhZ2UvY29tcG9uZW50cy9udmxTdGF0dXNIZWxwZXInO1xuaW1wb3J0IHsgTWFwIH0gZnJvbSAnLi4vLi4vV2lkZ2V0cy9NYXAvTWFwJztcbmltcG9ydCB7IEthbmRvVGFibGUgfSBmcm9tICdzcmMvdWkta2l0L0thbmRvVGFibGUvS2FuZG9UYWJsZSc7XG5pbXBvcnQgeyBUYWJzIH0gZnJvbSAnLi9UYWJzJztcbmltcG9ydCB1c2VLYW5kb0ZldGNoIGZyb20gJy4uLy4uL2hvb2tzL3VzZUthbmRvRmV0Y2gnO1xuaW1wb3J0IHVzZVF1ZXJ5VVJMIGZyb20gJy4uLy4uL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMvbWFjcm8nO1xuaW1wb3J0IERyb3Bkb3duIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd24nO1xuaW1wb3J0IERyb3Bkb3duQnV0dG9uIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd25CdXR0b24nO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBUcnVuY2F0ZSBmcm9tICcuLi8uLi91dGlsaXRpZXMvVHJ1bmNhdGUnO1xuaW1wb3J0IHsgRXhwYW5kZWRDb21wb25lbnQgfSBmcm9tICcuL0V4cGFuZGFibGVDb21wb25lbnQnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyJztcbmltcG9ydCB7IFdiZVN1bW1hcnlCYXIgfSBmcm9tICcuL1diZVN1bW1hcnlCYXInO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuaW1wb3J0IFVzZUthbmRvRmV0Y2ggZnJvbSAnc3JjL2hvb2tzL3VzZUthbmRvRmV0Y2gnO1xuaW1wb3J0IHsgdXJscyB9IGZyb20gJ3NyYy91dGlsaXRpZXMvdXJscyc7XG5pbXBvcnQge1xuICBkYXlGb3JtYXRGcm9tVGltZSxcbiAgdXNlVXNlclNlbGVjdGVkRGF0ZUZvcm1hdCxcbn0gZnJvbSAnc3JjL2hvb2tzL3VzZVVzZXJUaW1lWm9uZSc7XG5jb25zdCBUQUJMRV9ST1dTX1BFUl9QQUdFID0gMjU7XG5jb25zdCBNQVBCT1hfV0JFX0RBU0hCT0FSRF9TVFlMRSA9ICdja3p6a2pzaTcwMDVmMTRvOWltMG1jenM5JztcblxuZXhwb3J0IGNvbnN0IFdiZURhc2hib2FyZFBhZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IGdldFdBSWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgnd2F0ZXJfYXV0aG9yaXR5X2lkJyk7XG4gIH07XG4gIGNvbnN0IGZldGNoVXJsID0gKGZpcnN0UGFyYW0pID0+IHtcbiAgICByZXR1cm4gYC9hcGlfdWkvd2JlX2Rhc2hib2FyZC8ke3NlbGVjdGVkUGF0aG9nZW59LyR7Zmlyc3RQYXJhbX0/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7Z2V0V0FJZCgpfWA7XG4gIH07XG4gIGNvbnN0IHBhdGhvZ2Vuc1VybCA9ICgpID0+XG4gICAgdXJscyh7IHdhdGVyQXV0aG9yaXR5SWQ6IGdldFdBSWQoKSB9KS53YmVEYXNoYm9hcmQucGF0aG9nZW5zLnVybDtcbiAgY29uc3QgREVGQVVMVF9UQUJTID0gW1xuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmNpdGllcycpLFxuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm1vbml0b3JlZF9hcmVhcycpLFxuICBdO1xuICBjb25zdCBjb252ZXJ0VGFiTmFtZVRvUGFyYW0gPSAodGFiX25hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmICh0YWJfbmFtZSA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJykpIHtcbiAgICAgIHJldHVybiAnY2l0eSc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRhYl9uYW1lID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKVxuICAgICkge1xuICAgICAgcmV0dXJuICdtb25pdG9yZWQnO1xuICAgIH1cblxuICAgIHJldHVybiAnY2l0eSc7XG4gIH07XG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnlVUkwoKTtcblxuICBjb25zdCBnZXRQYXRob2dlbk5hbWUgPSAocGF0aG9nZW4pID0+IHtcbiAgICByZXR1cm4gcGF0aG9nZW4gPT09ICdDb3ZpZCBIYWNoJyA/ICdTQVJTLUNvVi0yJyA6IHBhdGhvZ2VuO1xuICB9O1xuXG4gIGNvbnN0IGdldFBhdGhvZ2VuID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3BhdGhvZ2VuJykgfHwgJ2NvdmlkJztcbiAgfTtcblxuICBjb25zdCBbY3VycmVudERhdGEsIHNldEN1cnJlbnREYXRhXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW21hcEFyZWFzLCBzZXRNYXBBcmVhc10gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbbWFwWm9vbSwgc2V0TWFwWm9vbV0gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbcm93cywgc2V0Um93c10gPSB1c2VTdGF0ZTxhbnk+KFtdKTtcbiAgY29uc3QgW3RhYnMsIHNldFRhYnNdID0gdXNlU3RhdGU8c3RyaW5nW10+KERFRkFVTFRfVEFCUyk7XG4gIGNvbnN0IFtzZWxlY3RlZFRhYiwgc2V0U2VsZWN0ZWRUYWJdID0gdXNlU3RhdGU8c3RyaW5nPih0YWJzWzBdKTtcbiAgY29uc3QgW3NlbGVjdGVkUGF0aG9nZW4sIHNldFNlbGVjdGVkUGF0aG9nZW5dID0gdXNlU3RhdGU8c3RyaW5nPihcbiAgICBnZXRQYXRob2dlbigpLFxuICApO1xuICBjb25zdCB7IGRhdGEsIGlzRmV0Y2hpbmcsIHNldEZldGNoaW5nIH0gPSB1c2VLYW5kb0ZldGNoKFxuICAgIGZldGNoVXJsKGNvbnZlcnRUYWJOYW1lVG9QYXJhbShzZWxlY3RlZFRhYikpLFxuICApO1xuICBjb25zdCB7IGRhdGE6IHBhdGhvZ2VucywgaXNGZXRjaGluZzogaXNGZXRjaGluZ1BhdGhvZ2VucyB9ID0gVXNlS2FuZG9GZXRjaChcbiAgICBwYXRob2dlbnNVcmwoKSxcbiAgKTtcblxuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5hdkNvbnRleHQgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5uYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQsXG4gICk7XG4gIGNvbnN0IGdsb2JhbERhdGEgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5nbG9iYWxfZGF0YSxcbiAgKTtcbiAgY29uc3QgaXNSdGw6IGJvb2xlYW4gPSBuYXZDb250ZXh0LmxvY2FsZSA9PT0gJ2hlJyA/IHRydWUgOiBmYWxzZTtcbiAgY29uc3QgY29sb3JGb3JSb3cgPSAocm93KSA9PiB7XG4gICAgbGV0IHF1YWxpdHk7XG4gICAgaWYgKCFyb3cuc2FtcGxlX2FjdGl2ZSkge1xuICAgICAgcXVhbGl0eSA9ICdpbmFjdGl2ZS1zYW1wbGluZyc7XG4gICAgfSBlbHNlIGlmIChpc0luZmVjdGVkKHJvdy5udmwpKSB7XG4gICAgICBxdWFsaXR5ID0gJ2luZmVjdGVkJztcbiAgICB9IGVsc2Uge1xuICAgICAgcXVhbGl0eSA9ICdjbGVhbic7XG4gICAgfVxuXG4gICAgcmV0dXJuIGByb3dfbmFtZS0tJHtxdWFsaXR5fWA7XG4gIH07XG5cbiAgY29uc3QgdXNlckZvcm1hdCA9IHVzZVVzZXJTZWxlY3RlZERhdGVGb3JtYXQoKTtcbiAgY29uc3QgY29sdW1uczogYW55ID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm5hbWUnKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5uYW1lLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBuYW1lOiBzdHJpbmc7IG52bDogbnVtYmVyOyBoYXNfY2hpbGRyZW46IGJvb2xlYW4gfSkgPT4gKFxuICAgICAgICAgIDxSb3dOYW1lIGlzUnRsPXtpc1J0bH0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Byb3dfbmFtZSAke2NvbG9yRm9yUm93KHJvdyl9YH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUFyZWFDbGljayhyb3cpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2V4cGFuZGFibGUtaWNvbid9PlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAge3Jvdy5oYXNfY2hpbGRyZW4gJiYgPERyaWxsRG93bkljb24gLz59XG4gICAgICAgICAgICAgICAgICB7IXJvdy5oYXNfY2hpbGRyZW4gJiYgPEJhc2VMZXZlbCAvPn1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eyduYW1lJ30+XG4gICAgICAgICAgICAgICAgPFRydW5jYXRlIGNoYXJhY3RlcnM9ezN9IGluaGVyaXRUZXh0QWxpZ249e3RydWV9PlxuICAgICAgICAgICAgICAgICAge3Jvdy5uYW1lfVxuICAgICAgICAgICAgICAgIDwvVHJ1bmNhdGU+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvUm93TmFtZT5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm52bF9zY29yZScpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm52bCxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgbnZsOiBudW1iZXIgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPntyb3cubnZsfTwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQucGVyY2VudGFnZV9mcm9tX2xhc3Rfc2FtcGxpbmcnKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5udmxfY2hhbmdlLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBudmxfY2hhbmdlOiBudW1iZXIgfSkgPT4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnbHRyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgY29sb3I6ICcjMDAwMDAwJywgbWFyZ2luOiAnMCA2cHgnIH19PlxuICAgICAgICAgICAgICB7cm93Lm52bF9jaGFuZ2V9JVxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIDxGb250QXdlc29tZUljb25cbiAgICAgICAgICAgICAgICBpY29uPXtyb3cubnZsX2NoYW5nZSA+IDAgPyBmYUNoZXZyb25VcCA6IGZhQ2hldnJvbkRvd259XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5sYXN0X3NhbXBsZWQnKSxcbiAgICAgICAgc2VsZWN0b3I6ICdsYXN0X3NhbXBsZWQnLFxuICAgICAgICBzb3J0YWJsZTogKHJvdykgPT4gcm93Lmxhc3RfdXBkYXRlZCxcbiAgICAgICAgY2VsbDogKHJvdzogeyBsYXN0X3VwZGF0ZWQ6IHN0cmluZyB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+XG4gICAgICAgICAgICB7cm93Lmxhc3RfdXBkYXRlZCA9PT0gbnVsbFxuICAgICAgICAgICAgICA/ICctJ1xuICAgICAgICAgICAgICA6IGRheUZvcm1hdEZyb21UaW1lKHJvdy5sYXN0X3VwZGF0ZWQsIHVzZXJGb3JtYXQpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQudHJlbmRfZ3JhcGgnKSxcbiAgICAgICAgc2VsZWN0b3I6ICd0cmVuZF9ncmFwaCcsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IGlkOiBudW1iZXIgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPlxuICAgICAgICAgICAgPEdyYXBoV3JhcHBlclxuICAgICAgICAgICAgICBrZXk9e3Jvdy5pZH1cbiAgICAgICAgICAgICAgcm93PXtyb3d9XG4gICAgICAgICAgICAgIHdhdGVyX2F1dGhvcml0eV9pZD17Z2V0V0FJZCgpfVxuICAgICAgICAgICAgICBwYXRob2dlbj17c2VsZWN0ZWRQYXRob2dlbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wb3B1bGF0aW9uJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cucG9wdWxhdGlvbixcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgcG9wdWxhdGlvbjogc3RyaW5nIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj5cbiAgICAgICAgICAgIHtrRm9ybWF0dGVyKHBhcnNlSW50KHJvdy5wb3B1bGF0aW9uKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgIF0sXG4gICAgW2lzUnRsLCBzZWxlY3RlZFBhdGhvZ2VuLCB1c2VyRm9ybWF0XSxcbiAgKTtcblxuICBjb25zdCBpbml0aWFsaXplTWFwQXJlYXMgPSAoYXJlYXMpID0+IHtcbiAgICBjb25zdCBtYXBwZWRXaXRoQ29sb3IgPSBhcmVhcy5tYXAoKGE6IGFueSkgPT4ge1xuICAgICAgYS53YmVfZGFzaGJvYXJkX25hbWUgPSBhLm5hbWU7XG4gICAgICBhLnNob3dDb2xvck9ubHlJbkJvcmRlcnMgPSB0cnVlO1xuXG4gICAgICBpZiAoIWEuc2FtcGxlX2FjdGl2ZSkge1xuICAgICAgICBhLmNvbG9yID0gdGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNjA7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNJbmZlY3RlZChhLm52bCkpIHtcbiAgICAgICAgYS5jb2xvciA9IHRoZW1lLmNvbG9yU2NoZW1lLmRhdGEuUjEwMDtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhLmNvbG9yID0gdGhlbWUuY29sb3JTY2hlbWUuZGF0YS5HMTAwO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNldE1hcEFyZWFzKG1hcHBlZFdpdGhDb2xvcik7XG4gIH07XG5cbiAgY29uc3Qgem9vbVRvQXJlYSA9IChhcmVhKSA9PiB7XG4gICAgYXJlYS5zaGFwZV9kYXRhICE9PSB1bmRlZmluZWQgJiYgc2V0TWFwWm9vbShhcmVhLnNoYXBlX2RhdGEpO1xuICB9O1xuXG4gIGNvbnN0IHpvb21BbGxBcmVhcyA9IChkYXRhKSA9PiB7XG4gICAgY29uc3Qgc2hhcGVEYXRhID0gZGF0YS5tYXAoKGRhdHVtKSA9PiB7XG4gICAgICByZXR1cm4gZGF0dW0uc2hhcGVfZGF0YTtcbiAgICB9KTtcblxuICAgIHNldE1hcFpvb20oc2hhcGVEYXRhKTtcbiAgfTtcblxuICBjb25zdCBpc0luZmVjdGVkID0gKG52bDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGxldmVsTlZMKG52bCkgPT09ICdjbGVhbicpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbGV2ZWxOVkwobnZsKSA9PT0gJ2xvdycgfHxcbiAgICAgIGxldmVsTlZMKG52bCkgPT09ICdtZWRpdW0nIHx8XG4gICAgICBsZXZlbE5WTChudmwpID09PSAnaGlnaCdcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfTtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKTtcbiAgY29uc3Qgd2F0ZXJBdXRob3JpdHlJZCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+XG4gICAgICBzdGF0ZS5nbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICApO1xuXG4gIGNvbnN0IGRpcjogRGlyZWN0aW9uID1cbiAgICBuYXZDb250ZXh0LmxvY2FsZSA9PT0gJ2hlJyA/IERpcmVjdGlvbi5SVEwgOiBEaXJlY3Rpb24uTFRSO1xuXG4gIGNvbnN0IGZpbHRlclJlc3VsdHNBbmRTZXRSb3dzID0gKHRleHQ6IHN0cmluZykgPT4ge1xuICAgIGxldCByZXN1bHRzID0gY3VycmVudERhdGEuZmlsdGVyKGZ1bmN0aW9uIChlbDogYW55KSB7XG4gICAgICByZXR1cm4gZWwubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRleHQudG9Mb3dlckNhc2UoKSk7XG4gICAgfSk7XG5cbiAgICBzZXRSb3dzKHJlc3VsdHMpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9uUm93RXhwYW5kID0gKGV4cGFuZGVkLCByb3cpID0+IHtcbiAgICBleHBhbmRlZCAmJiB6b29tVG9BcmVhKHJvdyk7XG4gICAgIWV4cGFuZGVkICYmIHpvb21BbGxBcmVhcyhkYXRhKTtcbiAgfTtcblxuICBjb25zdCB3YXRlckF1dGhvcml0eU5hbWUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5TmFtZSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RQYXRob2dlbkNsaWNrID0gKHBhdGhvZ2VuKSA9PiB7XG4gICAgYW5hbHl0aWNzVHJhY2soJ1dCRSBTdGF0dXMgUmVwb3J0IC0gUGF0aG9nZW4gY2hhbmdlIGNsaWNrZWQnLCB7XG4gICAgICBwYXRob2dlbjogcGF0aG9nZW4sXG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICBzZXRTZWxlY3RlZFBhdGhvZ2VuKHBhdGhvZ2VuKTtcbiAgICBoaXN0b3J5LnB1c2goXG4gICAgICBgL3diZV9kYXNoYm9hcmQvaW5kZXg/bG9jYWxlPSR7bmF2Q29udGV4dC5sb2NhbGV9JndhdGVyX2F1dGhvcml0eV9pZD0ke3dhdGVyQXV0aG9yaXR5SWR9JnBhdGhvZ2VuPSR7cGF0aG9nZW59YCxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRm9yVGFiU2VsZWN0aW9uID0gKHRhYikgPT4ge1xuICAgIHNldEZldGNoaW5nKHRydWUpO1xuICAgIGF4aW9zLmdldChmZXRjaFVybCh0YWIpKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgbGV0IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcblxuICAgICAgc2V0RmV0Y2hpbmcoZmFsc2UpO1xuICAgICAgc2V0VGFicyhERUZBVUxUX1RBQlMpO1xuICAgICAgc2V0Um93cyhyZXNwb25zZURhdGEpO1xuICAgICAgc2V0Q3VycmVudERhdGEocmVzcG9uc2VEYXRhKTtcbiAgICAgIGluaXRpYWxpemVNYXBBcmVhcyhyZXNwb25zZURhdGEpO1xuICAgICAgem9vbUFsbEFyZWFzKHJlc3BvbnNlRGF0YSk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2sgPSAodGFiKSA9PiB7XG4gICAgaWYgKCFpc0ZldGNoaW5nKSB7XG4gICAgICBzZXRTZWxlY3RlZFRhYih0YWIpO1xuXG4gICAgICBpZiAodGFiICE9PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jdXN0b20nKSkge1xuICAgICAgICB0YWIgPVxuICAgICAgICAgIHRhYiA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJylcbiAgICAgICAgICAgID8gJ2NpdHknXG4gICAgICAgICAgICA6IHRhYiA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubW9uaXRvcmVkX2FyZWFzJylcbiAgICAgICAgICAgID8gJ21vbml0b3JlZCdcbiAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgZmV0Y2hGb3JUYWJTZWxlY3Rpb24odGFiKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaW5pdGlhbGl6ZURyaWxsZWRBcmVhID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgbGV0IGRhdGEgPSByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgc2V0Um93cyhkYXRhKTtcbiAgICBzZXRDdXJyZW50RGF0YShkYXRhKTtcbiAgICBpbml0aWFsaXplTWFwQXJlYXMoZGF0YSk7XG4gICAgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFyZWFDbGljayA9IChhcmVhKSA9PiB7XG4gICAgem9vbVRvQXJlYShhcmVhKTtcblxuICAgIGlmIChhcmVhLmhhc19jaGlsZHJlbikge1xuICAgICAgc2V0VGFicyhbLi4udGFicywgaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY3VzdG9tJyldKTtcbiAgICAgIHNldFNlbGVjdGVkVGFiKGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmN1c3RvbScpKTtcblxuICAgICAgYXhpb3MuZ2V0KGZldGNoVXJsKGFyZWEuaWQpKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpbml0aWFsaXplRHJpbGxlZEFyZWEocmVzcG9uc2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGluaXRpYWxpemVDb21wb25lbnQgPSAoKSA9PiB7XG4gICAgc2V0Q3VycmVudERhdGEoZGF0YSk7XG4gICAgc2V0Um93cyhkYXRhKTtcbiAgICBhbmFseXRpY3NUcmFjaygnV0JFIFN0YXR1cyBSZXBvcnQnLCB7XG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICBkaXNwYXRjaCh1cGRhdGVOYXZDb250ZXh0KHsgbmFtZTogJ3diZV9kYXNoYm9hcmQnIH0pKTtcblxuICAgIGF4aW9zLmdldChmZXRjaFVybCgnbW9uaXRvcmVkJykpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcblxuICAgICAgaW5pdGlhbGl6ZU1hcEFyZWFzKGRhdGEpO1xuICAgICAgem9vbUFsbEFyZWFzKGRhdGEpO1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0ZldGNoaW5nICYmIGRhdGEgIT09IG51bGwpIHtcbiAgICAgIGluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgICB9XG4gIH0sIFtpc0ZldGNoaW5nLCBzZWxlY3RlZFBhdGhvZ2VuLCBkYXRhXSk7XG5cbiAgY29uc3QgcGF0aG9nZW5UaXRsZSA9XG4gICAgKCFpc0ZldGNoaW5nUGF0aG9nZW5zICYmXG4gICAgICBwYXRob2dlbnM/LmZpbmQoXG4gICAgICAgIChpdGVtKSA9PiBpdGVtLnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkUGF0aG9nZW4udG9Mb3dlckNhc2UoKSxcbiAgICAgICkpIHx8XG4gICAgJyc7XG4gIGNvbnN0IGRyb3BEb3duVGl0bGUgPVxuICAgIGdldFBhdGhvZ2VuTmFtZShwYXRob2dlblRpdGxlKSB8fFxuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBhdGhvZ2VuX25vdF9mb3VuZCcpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxDb250ZW50PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxoMT5cbiAgICAgICAgICAgIHtgJHtpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC50YWJsZV9uYW1lJyl9ICgke1xuICAgICAgICAgICAgICBnZXRQYXRob2dlbk5hbWUocGF0aG9nZW5UaXRsZSkgfHwgZ2V0UGF0aG9nZW5OYW1lKGdldFBhdGhvZ2VuKCkpXG4gICAgICAgICAgICB9KWB9XG4gICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7IWlzRmV0Y2hpbmdQYXRob2dlbnMgJiYgcGF0aG9nZW5zLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICA8aDM+e2kxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBhdGhvZ2VuX25vdF9mb3VuZCcpfTwvaDM+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8QWN0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgIHshaXNGZXRjaGluZ1BhdGhvZ2VucyAmJiBwYXRob2dlbnMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgIDxEcm9wZG93bkJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiZHJvcGRvd24tYmFzaWMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydidXR0b24gYnV0dG9uLS1zb3J0J31cbiAgICAgICAgICAgICAgICB0aXRsZT17ZHJvcERvd25UaXRsZSArICcgJ31cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtwYXRob2dlbnMubWFwKChwYXRob2dlbikgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BhdGhvZ2VufVxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RQYXRob2dlbkNsaWNrKHBhdGhvZ2VuKX1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZDb250ZXh0LmxvY2FsZSA9PT0gJ2hlJyA/ICdyaWdodCcgOiAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtnZXRQYXRob2dlbk5hbWUocGF0aG9nZW4pfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0FjdGlvbnNDb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Rmlyc3RTZWN0aW9uPlxuICAgICAgICAgIDxXYmVTdW1tYXJ5QmFyXG4gICAgICAgICAgICBwYXRob2dlbj17c2VsZWN0ZWRQYXRob2dlbn1cbiAgICAgICAgICAgIHdhdGVyQXV0aG9yaXR5SWQ9e3dhdGVyQXV0aG9yaXR5SWR9XG4gICAgICAgICAgICBpc1J0bD17aXNSdGx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9GaXJzdFNlY3Rpb24+XG5cbiAgICAgICAgPFNlY29uZFNlY3Rpb24+XG4gICAgICAgICAgPFNlYXJjaElucHV0IG9uQ2hhbmdlQmVoYXZpb3I9e2ZpbHRlclJlc3VsdHNBbmRTZXRSb3dzfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsndGFicy1jb250YWluZXInfT5cbiAgICAgICAgICAgIDxUYWJzXG4gICAgICAgICAgICAgIHRhYnM9e3RhYnN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkVGFiPXtzZWxlY3RlZFRhYn1cbiAgICAgICAgICAgICAgaGFuZGxlT25DbGljaz17aGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2t9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxNYXBUYWJsZUNvbnRhaW5lciBpc1J0bD17aXNSdGx9PlxuICAgICAgICAgICAge2lzRmV0Y2hpbmcgJiYgPFNwaW5uZXIgLz59XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J21hcC1jb250YWluZXInfT5cbiAgICAgICAgICAgICAgeyFpc0ZldGNoaW5nICYmIHJvd3MgIT09IG51bGwgJiYgbWFwWm9vbSAhPT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgICAgICAgICAgICA8TWFwXG4gICAgICAgICAgICAgICAgICAgIGFyZWFzPXttYXBBcmVhc31cbiAgICAgICAgICAgICAgICAgICAgYXJlYVRvQ2VudGVyQnk9e21hcFpvb219XG4gICAgICAgICAgICAgICAgICAgIGVkZ2VzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsX2RhdGE9e2dsb2JhbERhdGF9XG4gICAgICAgICAgICAgICAgICAgIG1hcEJveFN0eWxlPXtNQVBCT1hfV0JFX0RBU0hCT0FSRF9TVFlMRX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7IWlzRmV0Y2hpbmcgJiYgcm93cyAhPT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgIDxLYW5kb1RhYmxlXG4gICAgICAgICAgICAgICAgb25Sb3dFeHBhbmRUb2dnbGVkPXtoYW5kbGVPblJvd0V4cGFuZH1cbiAgICAgICAgICAgICAgICBkYXRhPXtyb3dzfVxuICAgICAgICAgICAgICAgIGNvbHVtbnM9e2NvbHVtbnN9XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uPXtkaXJ9XG4gICAgICAgICAgICAgICAgZXhwYW5kYWJsZVJvd3M9e3RydWV9XG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvblBlclBhZ2U9e1RBQkxFX1JPV1NfUEVSX1BBR0V9XG4gICAgICAgICAgICAgICAgcm93Q29tcG9uZW50PXtFeHBhbmRlZENvbXBvbmVudH1cbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlUm93c0NvbXBvbmVudFByb3BzPXt7IHBhdGhvZ2VuOiBzZWxlY3RlZFBhdGhvZ2VuIH19XG4gICAgICAgICAgICAgICAgZGVmYXVsdFNvcnRGaWVsZElkPXszfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L01hcFRhYmxlQ29udGFpbmVyPlxuICAgICAgICA8L1NlY29uZFNlY3Rpb24+XG4gICAgICA8L0NvbnRlbnQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5jb25zdCBSb3dOYW1lID0gc3R5bGVkLmRpdjx7IGlzUnRsOiBib29sZWFuIH0+YFxuICAgIHdpZHRoOiAxMDAlO1xuICAgICAgXG4gICAgLnJvd19uYW1lIHtcbiAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICB0cmFuc2l0aW9uOiAuMnMgZWFzZS1pbjsgICAgICBcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwIDRweDtcbiAgICAgICAgXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDJweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0tY2xlYW4ge1xuICAgICAgICAgY29sb3I6ICMyN2E2M2E7IFxuICAgICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMjdhNjNhOyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAmLS1pbmZlY3RlZCB7XG4gICAgICAgICAgY29sb3I6ICNlMTAwMzY7XG4gICAgICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZTEwMDM2OyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAmLS1pbmFjdGl2ZS1zYW1wbGluZyB7XG4gICAgICAgICAgY29sb3I6ICR7dGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNjB9O1xuICAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHt0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MH07ICAgICAgICBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC5uYW1lIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgICAgICAgICAkeyhwKSA9PiAocC5pc1J0bCA/ICdyaWdodDogNTFweDsnIDogJ2xlZnQ6IDUxcHg7Jyl9XG4gICAgICAgICAgdG9wOiAxNnB4O1xuICAgICAgICAgIHdpZHRoOiA3LjVlbTtcbiAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAzcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIGA7XG5cbmNvbnN0IEFjdGlvbnNDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgRmlyc3RTZWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luOiA4NXB4IDAgMjBweCAwO1xuYDtcblxuY29uc3QgU2Vjb25kU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmc6IDIwcHg7XG4gIGJhY2tncm91bmQ6ICNmY2ZjZmM7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlN2U3ZTc7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbmA7XG5cbmNvbnN0IE1hcFRhYmxlQ29udGFpbmVyID0gc3R5bGVkLmRpdjx7IGlzUnRsOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gIC5tYXAtY29udGFpbmVyIHtcbiAgICB3aWR0aDogdW5zZXQgIWltcG9ydGFudDtcbiAgICAuZXZlbnQtdGltZXJhbmdlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgICNtYXAge1xuICAgICAgaGVpZ2h0OiA2OXZoO1xuICAgICAgd2lkdGg6IDMwdnc7XG4gICAgfVxuICB9XG4gIFtkYXRhLXRlc3RpZD0na2FuZG8tdGFibGUnXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgW2RhdGEtY29sdW1uLWlkPScxJ10ge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgJjpob3ZlciB7XG4gICAgICAubmFtZSB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEyMHB4ICsgMXZ3KTtcbiAgICAgICAgdHJhbnNpdGlvbjogMC4ycyBjdWJpYy1iZXppZXIoMC42NSwgMC4wNSwgMC4zNiwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNwaW5uZXItY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG5gO1xuXG5jb25zdCBDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gICAgcGFkZGluZzogMjBweDtcbiAgfVxuXG4gIGgxIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIHBhZGRpbmc6IDYwcHggNjBweDtcbmA7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksZUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGtCQUFBLEdBQUFULE9BQUE7QUFFQSxJQUFBVSxRQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFBMEQsSUFBQVksY0FBQSxHQUFBWixPQUFBO0FBQUEsSUFBQWEsVUFBQSxHQUFBYixPQUFBO0FBRzFELElBQUFjLHdCQUFBLEdBQUFkLE9BQUE7QUFDQSxJQUFBZSxnQkFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLElBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIsV0FBQSxHQUFBakIsT0FBQTtBQUNBLElBQUFrQixLQUFBLEdBQUFsQixPQUFBO0FBQ0EsSUFBQW1CLGNBQUEsR0FBQWpCLHNCQUFBLENB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
429
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdFJvdXRlckRvbSIsIl9BbmFseXRpY3MiLCJfU2VhcmNoSW5wdXQiLCJfcmVhY3RGb250YXdlc29tZSIsIl9HcmFwaFdyYXBwZXIiLCJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJfYWN0aW9ucyIsIl9UaG91c2FuZHNUb0siLCJfRHJpbGxEb3duSWNvbiIsIl9CYXNlTGV2ZWwiLCJfcmVhY3REYXRhVGFibGVDb21wb25lbnQiLCJfbnZsU3RhdHVzSGVscGVyIiwiX01hcCIsIl9LYW5kb1RhYmxlIiwiX1RhYnMiLCJfdXNlS2FuZG9GZXRjaDIiLCJfdXNlUXVlcnlVUkwiLCJfRHJvcGRvd24iLCJfRHJvcGRvd25CdXR0b24iLCJfYXhpb3MiLCJfVHJ1bmNhdGUiLCJfRXhwYW5kYWJsZUNvbXBvbmVudCIsIl9TcGlubmVyIiwiX1diZVN1bW1hcnlCYXIiLCJfRXJyb3JCb3VuZGFyeSIsIl90aGVtZSIsIl91c2VLYW5kb0ZldGNoMyIsIl91cmxzIiwiX3VzZVVzZXJUaW1lWm9uZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiVEFCTEVfUk9XU19QRVJfUEFHRSIsIk1BUEJPWF9XQkVfREFTSEJPQVJEX1NUWUxFIiwiV2JlRGFzaGJvYXJkUGFnZSIsImdldFdBSWQiLCJxdWVyeSIsImZldGNoVXJsIiwiZmlyc3RQYXJhbSIsImNvbmNhdCIsInNlbGVjdGVkUGF0aG9nZW4iLCJwYXRob2dlbnNVcmwiLCJ1cmxzIiwid2F0ZXJBdXRob3JpdHlJZCIsIndiZURhc2hib2FyZCIsInBhdGhvZ2VucyIsInVybCIsIkRFRkFVTFRfVEFCUyIsImkxOG4iLCJ0IiwiY29udmVydFRhYk5hbWVUb1BhcmFtIiwidGFiX25hbWUiLCJ1c2VRdWVyeVVSTCIsImdldFBhdGhvZ2VuTmFtZSIsInBhdGhvZ2VuIiwiZ2V0UGF0aG9nZW4iLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJjdXJyZW50RGF0YSIsInNldEN1cnJlbnREYXRhIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJtYXBBcmVhcyIsInNldE1hcEFyZWFzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJtYXBab29tIiwic2V0TWFwWm9vbSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwicm93cyIsInNldFJvd3MiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMTAiLCJ0YWJzIiwic2V0VGFicyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJzZWxlY3RlZFRhYiIsInNldFNlbGVjdGVkVGFiIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInNldFNlbGVjdGVkUGF0aG9nZW4iLCJfdXNlS2FuZG9GZXRjaCIsInVzZUthbmRvRmV0Y2giLCJkYXRhIiwiaXNGZXRjaGluZyIsInNldEZldGNoaW5nIiwiX1VzZUthbmRvRmV0Y2giLCJVc2VLYW5kb0ZldGNoIiwiaXNGZXRjaGluZ1BhdGhvZ2VucyIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJuYXZDb250ZXh0IiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJnbG9iYWxEYXRhIiwiZ2xvYmFsX2RhdGEiLCJpc1J0bCIsImxvY2FsZSIsImNvbG9yRm9yUm93Iiwicm93IiwicXVhbGl0eSIsInNhbXBsZV9hY3RpdmUiLCJpc0luZmVjdGVkIiwibnZsIiwidXNlckZvcm1hdCIsInVzZVVzZXJTZWxlY3RlZERhdGVGb3JtYXQiLCJjb2x1bW5zIiwiUmVhY3QiLCJ1c2VNZW1vIiwibmFtZSIsInNlbGVjdG9yIiwic29ydGFibGUiLCJjZWxsIiwiY3JlYXRlRWxlbWVudCIsIlJvd05hbWUiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiaGFuZGxlQXJlYUNsaWNrIiwiaGFzX2NoaWxkcmVuIiwiUmVhY3RDb21wb25lbnQiLCJjaGFyYWN0ZXJzIiwiaW5oZXJpdFRleHRBbGlnbiIsIm52bF9jaGFuZ2UiLCJzdHlsZSIsImRpcmVjdGlvbiIsImNvbG9yIiwibWFyZ2luIiwiRm9udEF3ZXNvbWVJY29uIiwiaWNvbiIsImZhQ2hldnJvblVwIiwiZmFDaGV2cm9uRG93biIsImxhc3RfdXBkYXRlZCIsImRheUZvcm1hdEZyb21UaW1lIiwiR3JhcGhXcmFwcGVyIiwiaWQiLCJ3YXRlcl9hdXRob3JpdHlfaWQiLCJwb3B1bGF0aW9uIiwia0Zvcm1hdHRlciIsInBhcnNlSW50IiwiaW5pdGlhbGl6ZU1hcEFyZWFzIiwiYXJlYXMiLCJtYXBwZWRXaXRoQ29sb3IiLCJtYXAiLCJhIiwid2JlX2Rhc2hib2FyZF9uYW1lIiwic2hvd0NvbG9yT25seUluQm9yZGVycyIsInRoZW1lIiwiY29sb3JTY2hlbWUiLCJuYXR1cmFsIiwibjYwIiwiUjEwMCIsIkcxMDAiLCJ6b29tVG9BcmVhIiwiYXJlYSIsInNoYXBlX2RhdGEiLCJ1bmRlZmluZWQiLCJ6b29tQWxsQXJlYXMiLCJzaGFwZURhdGEiLCJkYXR1bSIsImxldmVsTlZMIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJkaXIiLCJEaXJlY3Rpb24iLCJSVEwiLCJMVFIiLCJmaWx0ZXJSZXN1bHRzQW5kU2V0Um93cyIsInRleHQiLCJyZXN1bHRzIiwiZmlsdGVyIiwiZWwiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiaGFuZGxlT25Sb3dFeHBhbmQiLCJleHBhbmRlZCIsIndhdGVyQXV0aG9yaXR5TmFtZSIsImhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2siLCJhbmFseXRpY3NUcmFjayIsInV0aWxpdHlfbmFtZSIsInB1c2giLCJmZXRjaEZvclRhYlNlbGVjdGlvbiIsInRhYiIsImF4aW9zIiwidGhlbiIsInJlc3BvbnNlIiwicmVzcG9uc2VEYXRhIiwiaGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2siLCJpbml0aWFsaXplRHJpbGxlZEFyZWEiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiaW5pdGlhbGl6ZUNvbXBvbmVudCIsInVwZGF0ZU5hdkNvbnRleHQiLCJ1c2VFZmZlY3QiLCJwYXRob2dlblRpdGxlIiwiZmluZCIsIml0ZW0iLCJkcm9wRG93blRpdGxlIiwiRnJhZ21lbnQiLCJDb250ZW50IiwibGVuZ3RoIiwiQWN0aW9uc0NvbnRhaW5lciIsInRpdGxlIiwidmFyaWFudCIsIkl0ZW0iLCJocmVmIiwidGV4dEFsaWduIiwiRmlyc3RTZWN0aW9uIiwiV2JlU3VtbWFyeUJhciIsIlNlY29uZFNlY3Rpb24iLCJTZWFyY2hJbnB1dCIsIm9uQ2hhbmdlQmVoYXZpb3IiLCJUYWJzIiwiaGFuZGxlT25DbGljayIsIk1hcFRhYmxlQ29udGFpbmVyIiwiU3Bpbm5lciIsIk1hcCIsImFyZWFUb0NlbnRlckJ5IiwiZWRnZXMiLCJwb2ludHMiLCJtYXBCb3hTdHlsZSIsIkthbmRvVGFibGUiLCJvblJvd0V4cGFuZFRvZ2dsZWQiLCJleHBhbmRhYmxlUm93cyIsInBhZ2luYXRpb25QZXJQYWdlIiwicm93Q29tcG9uZW50IiwiRXhwYW5kZWRDb21wb25lbnQiLCJleHBhbmRhYmxlUm93c0NvbXBvbmVudFByb3BzIiwiZGVmYXVsdFNvcnRGaWVsZElkIiwiZXhwb3J0cyIsInN0eWxlZCIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwicCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9XYmVEYXNoYm9hcmQvV2JlRGFzaGJvYXJkUGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgYW5hbHl0aWNzVHJhY2sgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQW5hbHl0aWNzJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnLi9TZWFyY2hJbnB1dCc7XG5pbXBvcnQgeyBGb250QXdlc29tZUljb24gfSBmcm9tICdAZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgR3JhcGhXcmFwcGVyIH0gZnJvbSAnLi9HcmFwaFdyYXBwZXInO1xuaW1wb3J0IHsgZmFDaGV2cm9uRG93biwgZmFDaGV2cm9uVXAgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgYXBwUmVkdWNlciB9IGZyb20gJy4uLy4uL3N0b3JlL3Jvb3RSZWR1Y2VyJztcbmltcG9ydCB7IHVwZGF0ZU5hdkNvbnRleHQgfSBmcm9tICcuLi8uLi9zdG9yZS9jb250ZXh0L2FjdGlvbnMnO1xuaW1wb3J0IHsga0Zvcm1hdHRlciB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9UaG91c2FuZHNUb0snO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgRHJpbGxEb3duSWNvbiB9IGZyb20gJy4vRHJpbGxEb3duSWNvbi5zdmcnO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgQmFzZUxldmVsIH0gZnJvbSAnLi9CYXNlTGV2ZWwuc3ZnJztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ3JlYWN0LWRhdGEtdGFibGUtY29tcG9uZW50JztcbmltcG9ydCB7IGxldmVsTlZMIH0gZnJvbSAnLi4vQ292aWRQYWdlL2NvbXBvbmVudHMvbnZsU3RhdHVzSGVscGVyJztcbmltcG9ydCB7IE1hcCB9IGZyb20gJy4uLy4uL1dpZGdldHMvTWFwL01hcCc7XG5pbXBvcnQgeyBLYW5kb1RhYmxlIH0gZnJvbSAnc3JjL3VpLWtpdC9LYW5kb1RhYmxlL0thbmRvVGFibGUnO1xuaW1wb3J0IHsgVGFicyB9IGZyb20gJy4vVGFicyc7XG5pbXBvcnQgdXNlS2FuZG9GZXRjaCBmcm9tICcuLi8uLi9ob29rcy91c2VLYW5kb0ZldGNoJztcbmltcG9ydCB1c2VRdWVyeVVSTCBmcm9tICcuLi8uLi9ob29rcy91c2VRdWVyeVVSTCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzL21hY3JvJztcbmltcG9ydCBEcm9wZG93biBmcm9tICdyZWFjdC1ib290c3RyYXAvY2pzL0Ryb3Bkb3duJztcbmltcG9ydCBEcm9wZG93bkJ1dHRvbiBmcm9tICdyZWFjdC1ib290c3RyYXAvY2pzL0Ryb3Bkb3duQnV0dG9uJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgVHJ1bmNhdGUgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1RydW5jYXRlJztcbmltcG9ydCB7IEV4cGFuZGVkQ29tcG9uZW50IH0gZnJvbSAnLi9FeHBhbmRhYmxlQ29tcG9uZW50JztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1NwaW5uZXIvU3Bpbm5lcic7XG5pbXBvcnQgeyBXYmVTdW1tYXJ5QmFyIH0gZnJvbSAnLi9XYmVTdW1tYXJ5QmFyJztcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gJy4uLy4uL3V0aWxpdGllcy9FcnJvckJvdW5kYXJ5JztcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3RoZW1lL3RoZW1lJztcbmltcG9ydCBVc2VLYW5kb0ZldGNoIGZyb20gJ3NyYy9ob29rcy91c2VLYW5kb0ZldGNoJztcbmltcG9ydCB7IHVybHMgfSBmcm9tICdzcmMvdXRpbGl0aWVzL3VybHMnO1xuaW1wb3J0IHtcbiAgZGF5Rm9ybWF0RnJvbVRpbWUsXG4gIHVzZVVzZXJTZWxlY3RlZERhdGVGb3JtYXQsXG59IGZyb20gJ3NyYy9ob29rcy91c2VVc2VyVGltZVpvbmUnO1xuY29uc3QgVEFCTEVfUk9XU19QRVJfUEFHRSA9IDI1O1xuY29uc3QgTUFQQk9YX1dCRV9EQVNIQk9BUkRfU1RZTEUgPSAnY2t6emtqc2k3MDA1ZjE0bzlpbTBtY3pzOSc7XG5cbmV4cG9ydCBjb25zdCBXYmVEYXNoYm9hcmRQYWdlID0gKCkgPT4ge1xuICBjb25zdCBnZXRXQUlkID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3dhdGVyX2F1dGhvcml0eV9pZCcpO1xuICB9O1xuICBjb25zdCBmZXRjaFVybCA9IChmaXJzdFBhcmFtKSA9PiB7XG4gICAgcmV0dXJuIGAvYXBpX3VpL3diZV9kYXNoYm9hcmQvJHtzZWxlY3RlZFBhdGhvZ2VufS8ke2ZpcnN0UGFyYW19P3dhdGVyX2F1dGhvcml0eV9pZD0ke2dldFdBSWQoKX1gO1xuICB9O1xuICBjb25zdCBwYXRob2dlbnNVcmwgPSAoKSA9PlxuICAgIHVybHMoeyB3YXRlckF1dGhvcml0eUlkOiBnZXRXQUlkKCkgfSkud2JlRGFzaGJvYXJkLnBhdGhvZ2Vucy51cmw7XG4gIGNvbnN0IERFRkFVTFRfVEFCUyA9IFtcbiAgICBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jaXRpZXMnKSxcbiAgICBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKSxcbiAgXTtcbiAgY29uc3QgY29udmVydFRhYk5hbWVUb1BhcmFtID0gKHRhYl9uYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAodGFiX25hbWUgPT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmNpdGllcycpKSB7XG4gICAgICByZXR1cm4gJ2NpdHknO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0YWJfbmFtZSA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubW9uaXRvcmVkX2FyZWFzJylcbiAgICApIHtcbiAgICAgIHJldHVybiAnbW9uaXRvcmVkJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ2NpdHknO1xuICB9O1xuICBjb25zdCBxdWVyeSA9IHVzZVF1ZXJ5VVJMKCk7XG5cbiAgY29uc3QgZ2V0UGF0aG9nZW5OYW1lID0gKHBhdGhvZ2VuKSA9PiB7XG4gICAgcmV0dXJuIHBhdGhvZ2VuID09PSAnQ292aWQgSGFjaCcgPyAnU0FSUy1Db1YtMicgOiBwYXRob2dlbjtcbiAgfTtcblxuICBjb25zdCBnZXRQYXRob2dlbiA9ICgpID0+IHtcbiAgICByZXR1cm4gcXVlcnkuZ2V0KCdwYXRob2dlbicpIHx8ICdjb3ZpZCc7XG4gIH07XG5cbiAgY29uc3QgW2N1cnJlbnREYXRhLCBzZXRDdXJyZW50RGF0YV0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFttYXBBcmVhcywgc2V0TWFwQXJlYXNdID0gdXNlU3RhdGU8YW55W10+KFtdKTtcbiAgY29uc3QgW21hcFpvb20sIHNldE1hcFpvb21dID0gdXNlU3RhdGU8YW55W10+KFtdKTtcbiAgY29uc3QgW3Jvd3MsIHNldFJvd3NdID0gdXNlU3RhdGU8YW55PihbXSk7XG4gIGNvbnN0IFt0YWJzLCBzZXRUYWJzXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihERUZBVUxUX1RBQlMpO1xuICBjb25zdCBbc2VsZWN0ZWRUYWIsIHNldFNlbGVjdGVkVGFiXSA9IHVzZVN0YXRlPHN0cmluZz4odGFic1swXSk7XG4gIGNvbnN0IFtzZWxlY3RlZFBhdGhvZ2VuLCBzZXRTZWxlY3RlZFBhdGhvZ2VuXSA9IHVzZVN0YXRlPHN0cmluZz4oXG4gICAgZ2V0UGF0aG9nZW4oKSxcbiAgKTtcbiAgY29uc3QgeyBkYXRhLCBpc0ZldGNoaW5nLCBzZXRGZXRjaGluZyB9ID0gdXNlS2FuZG9GZXRjaChcbiAgICBmZXRjaFVybChjb252ZXJ0VGFiTmFtZVRvUGFyYW0oc2VsZWN0ZWRUYWIpKSxcbiAgKTtcbiAgY29uc3QgeyBkYXRhOiBwYXRob2dlbnMsIGlzRmV0Y2hpbmc6IGlzRmV0Y2hpbmdQYXRob2dlbnMgfSA9IFVzZUthbmRvRmV0Y2goXG4gICAgcGF0aG9nZW5zVXJsKCksXG4gICk7XG5cbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBuYXZDb250ZXh0ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUubmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LFxuICApO1xuICBjb25zdCBnbG9iYWxEYXRhID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT4gc3RhdGUuZ2xvYmFsX2RhdGEsXG4gICk7XG4gIGNvbnN0IGlzUnRsOiBib29sZWFuID0gbmF2Q29udGV4dC5sb2NhbGUgPT09ICdoZScgPyB0cnVlIDogZmFsc2U7XG4gIGNvbnN0IGNvbG9yRm9yUm93ID0gKHJvdykgPT4ge1xuICAgIGxldCBxdWFsaXR5O1xuICAgIGlmICghcm93LnNhbXBsZV9hY3RpdmUpIHtcbiAgICAgIHF1YWxpdHkgPSAnaW5hY3RpdmUtc2FtcGxpbmcnO1xuICAgIH0gZWxzZSBpZiAoaXNJbmZlY3RlZChyb3cubnZsKSkge1xuICAgICAgcXVhbGl0eSA9ICdpbmZlY3RlZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHF1YWxpdHkgPSAnY2xlYW4nO1xuICAgIH1cblxuICAgIHJldHVybiBgcm93X25hbWUtLSR7cXVhbGl0eX1gO1xuICB9O1xuXG4gIGNvbnN0IHVzZXJGb3JtYXQgPSB1c2VVc2VyU2VsZWN0ZWREYXRlRm9ybWF0KCk7XG4gIGNvbnN0IGNvbHVtbnM6IGFueSA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gW1xuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5uYW1lJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cubmFtZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgbmFtZTogc3RyaW5nOyBudmw6IG51bWJlcjsgaGFzX2NoaWxkcmVuOiBib29sZWFuIH0pID0+IChcbiAgICAgICAgICA8Um93TmFtZSBpc1J0bD17aXNSdGx9PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm93X25hbWUgJHtjb2xvckZvclJvdyhyb3cpfWB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVBcmVhQ2xpY2socm93KTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydleHBhbmRhYmxlLWljb24nfT5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIHtyb3cuaGFzX2NoaWxkcmVuICYmIDxEcmlsbERvd25JY29uIC8+fVxuICAgICAgICAgICAgICAgICAgeyFyb3cuaGFzX2NoaWxkcmVuICYmIDxCYXNlTGV2ZWwgLz59XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXsnbmFtZSd9PlxuICAgICAgICAgICAgICAgIDxUcnVuY2F0ZSBjaGFyYWN0ZXJzPXszfSBpbmhlcml0VGV4dEFsaWduPXt0cnVlfT5cbiAgICAgICAgICAgICAgICAgIHtyb3cubmFtZX1cbiAgICAgICAgICAgICAgICA8L1RydW5jYXRlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L1Jvd05hbWU+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5udmxfc2NvcmUnKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5udmwsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG52bDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj57cm93Lm52bH08L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBlcmNlbnRhZ2VfZnJvbV9sYXN0X3NhbXBsaW5nJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cubnZsX2NoYW5nZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgbnZsX2NoYW5nZTogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCJcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2x0cicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGNvbG9yOiAnIzAwMDAwMCcsIG1hcmdpbjogJzAgNnB4JyB9fT5cbiAgICAgICAgICAgICAge3Jvdy5udmxfY2hhbmdlfSVcbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uXG4gICAgICAgICAgICAgICAgaWNvbj17cm93Lm52bF9jaGFuZ2UgPiAwID8gZmFDaGV2cm9uVXAgOiBmYUNoZXZyb25Eb3dufVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubGFzdF9zYW1wbGVkJyksXG4gICAgICAgIHNlbGVjdG9yOiAnbGFzdF9zYW1wbGVkJyxcbiAgICAgICAgc29ydGFibGU6IChyb3cpID0+IHJvdy5sYXN0X3VwZGF0ZWQsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgbGFzdF91cGRhdGVkOiBzdHJpbmcgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPlxuICAgICAgICAgICAge3Jvdy5sYXN0X3VwZGF0ZWQgPT09IG51bGxcbiAgICAgICAgICAgICAgPyAnLSdcbiAgICAgICAgICAgICAgOiBkYXlGb3JtYXRGcm9tVGltZShyb3cubGFzdF91cGRhdGVkLCB1c2VyRm9ybWF0KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnRyZW5kX2dyYXBoJyksXG4gICAgICAgIHNlbGVjdG9yOiAndHJlbmRfZ3JhcGgnLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBpZDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj5cbiAgICAgICAgICAgIDxHcmFwaFdyYXBwZXJcbiAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgIHJvdz17cm93fVxuICAgICAgICAgICAgICB3YXRlcl9hdXRob3JpdHlfaWQ9e2dldFdBSWQoKX1cbiAgICAgICAgICAgICAgcGF0aG9nZW49e3NlbGVjdGVkUGF0aG9nZW59XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQucG9wdWxhdGlvbicpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93LnBvcHVsYXRpb24sXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IHBvcHVsYXRpb246IHN0cmluZyB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+XG4gICAgICAgICAgICB7a0Zvcm1hdHRlcihwYXJzZUludChyb3cucG9wdWxhdGlvbikpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICBdLFxuICAgIFtpc1J0bCwgc2VsZWN0ZWRQYXRob2dlbiwgdXNlckZvcm1hdF0sXG4gICk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZU1hcEFyZWFzID0gKGFyZWFzKSA9PiB7XG4gICAgY29uc3QgbWFwcGVkV2l0aENvbG9yID0gYXJlYXMubWFwKChhOiBhbnkpID0+IHtcbiAgICAgIGEud2JlX2Rhc2hib2FyZF9uYW1lID0gYS5uYW1lO1xuICAgICAgYS5zaG93Q29sb3JPbmx5SW5Cb3JkZXJzID0gdHJ1ZTtcblxuICAgICAgaWYgKCFhLnNhbXBsZV9hY3RpdmUpIHtcbiAgICAgICAgYS5jb2xvciA9IHRoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzSW5mZWN0ZWQoYS5udmwpKSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5kYXRhLlIxMDA7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYS5jb2xvciA9IHRoZW1lLmNvbG9yU2NoZW1lLmRhdGEuRzEwMDtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzZXRNYXBBcmVhcyhtYXBwZWRXaXRoQ29sb3IpO1xuICB9O1xuXG4gIGNvbnN0IHpvb21Ub0FyZWEgPSAoYXJlYSkgPT4ge1xuICAgIGFyZWEuc2hhcGVfZGF0YSAhPT0gdW5kZWZpbmVkICYmIHNldE1hcFpvb20oYXJlYS5zaGFwZV9kYXRhKTtcbiAgfTtcblxuICBjb25zdCB6b29tQWxsQXJlYXMgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHNoYXBlRGF0YSA9IGRhdGEubWFwKChkYXR1bSkgPT4ge1xuICAgICAgcmV0dXJuIGRhdHVtLnNoYXBlX2RhdGE7XG4gICAgfSk7XG5cbiAgICBzZXRNYXBab29tKHNoYXBlRGF0YSk7XG4gIH07XG5cbiAgY29uc3QgaXNJbmZlY3RlZCA9IChudmw6IG51bWJlcikgPT4ge1xuICAgIGlmIChsZXZlbE5WTChudmwpID09PSAnY2xlYW4nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGxldmVsTlZMKG52bCkgPT09ICdsb3cnIHx8XG4gICAgICBsZXZlbE5WTChudmwpID09PSAnbWVkaXVtJyB8fFxuICAgICAgbGV2ZWxOVkwobnZsKSA9PT0gJ2hpZ2gnXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH07XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KCk7XG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5SWQgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PlxuICAgICAgc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCxcbiAgKTtcblxuICBjb25zdCBkaXI6IERpcmVjdGlvbiA9XG4gICAgbmF2Q29udGV4dC5sb2NhbGUgPT09ICdoZScgPyBEaXJlY3Rpb24uUlRMIDogRGlyZWN0aW9uLkxUUjtcblxuICBjb25zdCBmaWx0ZXJSZXN1bHRzQW5kU2V0Um93cyA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICBsZXQgcmVzdWx0cyA9IGN1cnJlbnREYXRhLmZpbHRlcihmdW5jdGlvbiAoZWw6IGFueSkge1xuICAgICAgcmV0dXJuIGVsLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXh0LnRvTG93ZXJDYXNlKCkpO1xuICAgIH0pO1xuXG4gICAgc2V0Um93cyhyZXN1bHRzKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPblJvd0V4cGFuZCA9IChleHBhbmRlZCwgcm93KSA9PiB7XG4gICAgZXhwYW5kZWQgJiYgem9vbVRvQXJlYShyb3cpO1xuICAgICFleHBhbmRlZCAmJiB6b29tQWxsQXJlYXMoZGF0YSk7XG4gIH07XG5cbiAgY29uc3Qgd2F0ZXJBdXRob3JpdHlOYW1lID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS5nbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eU5hbWUsXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0UGF0aG9nZW5DbGljayA9IChwYXRob2dlbikgPT4ge1xuICAgIGFuYWx5dGljc1RyYWNrKCdXQkUgU3RhdHVzIFJlcG9ydCAtIFBhdGhvZ2VuIGNoYW5nZSBjbGlja2VkJywge1xuICAgICAgcGF0aG9nZW46IHBhdGhvZ2VuLFxuICAgICAgdXRpbGl0eV9uYW1lOiB3YXRlckF1dGhvcml0eU5hbWUsXG4gICAgfSk7XG4gICAgc2V0U2VsZWN0ZWRQYXRob2dlbihwYXRob2dlbik7XG4gICAgaGlzdG9yeS5wdXNoKFxuICAgICAgYC93YmVfZGFzaGJvYXJkL2luZGV4P2xvY2FsZT0ke25hdkNvbnRleHQubG9jYWxlfSZ3YXRlcl9hdXRob3JpdHlfaWQ9JHt3YXRlckF1dGhvcml0eUlkfSZwYXRob2dlbj0ke3BhdGhvZ2VufWAsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaEZvclRhYlNlbGVjdGlvbiA9ICh0YWIpID0+IHtcbiAgICBzZXRGZXRjaGluZyh0cnVlKTtcbiAgICBheGlvcy5nZXQoZmV0Y2hVcmwodGFiKSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgIGxldCByZXNwb25zZURhdGEgPSByZXNwb25zZS5kYXRhLmRhdGE7XG5cbiAgICAgIHNldEZldGNoaW5nKGZhbHNlKTtcbiAgICAgIHNldFRhYnMoREVGQVVMVF9UQUJTKTtcbiAgICAgIHNldFJvd3MocmVzcG9uc2VEYXRhKTtcbiAgICAgIHNldEN1cnJlbnREYXRhKHJlc3BvbnNlRGF0YSk7XG4gICAgICBpbml0aWFsaXplTWFwQXJlYXMocmVzcG9uc2VEYXRhKTtcbiAgICAgIHpvb21BbGxBcmVhcyhyZXNwb25zZURhdGEpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRhYlNlbGVjdGlvbkNsaWNrID0gKHRhYikgPT4ge1xuICAgIGlmICghaXNGZXRjaGluZykge1xuICAgICAgc2V0U2VsZWN0ZWRUYWIodGFiKTtcblxuICAgICAgaWYgKHRhYiAhPT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY3VzdG9tJykpIHtcbiAgICAgICAgdGFiID1cbiAgICAgICAgICB0YWIgPT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmNpdGllcycpXG4gICAgICAgICAgICA/ICdjaXR5J1xuICAgICAgICAgICAgOiB0YWIgPT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm1vbml0b3JlZF9hcmVhcycpXG4gICAgICAgICAgICA/ICdtb25pdG9yZWQnXG4gICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIGZldGNoRm9yVGFiU2VsZWN0aW9uKHRhYik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGluaXRpYWxpemVEcmlsbGVkQXJlYSA9IChyZXNwb25zZSkgPT4ge1xuICAgIGxldCBkYXRhID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIHNldFJvd3MoZGF0YSk7XG4gICAgc2V0Q3VycmVudERhdGEoZGF0YSk7XG4gICAgaW5pdGlhbGl6ZU1hcEFyZWFzKGRhdGEpO1xuICAgIHpvb21BbGxBcmVhcyhkYXRhKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBcmVhQ2xpY2sgPSAoYXJlYSkgPT4ge1xuICAgIHpvb21Ub0FyZWEoYXJlYSk7XG5cbiAgICBpZiAoYXJlYS5oYXNfY2hpbGRyZW4pIHtcbiAgICAgIHNldFRhYnMoWy4uLnRhYnMsIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmN1c3RvbScpXSk7XG4gICAgICBzZXRTZWxlY3RlZFRhYihpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jdXN0b20nKSk7XG5cbiAgICAgIGF4aW9zLmdldChmZXRjaFVybChhcmVhLmlkKSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaW5pdGlhbGl6ZURyaWxsZWRBcmVhKHJlc3BvbnNlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBpbml0aWFsaXplQ29tcG9uZW50ID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnREYXRhKGRhdGEpO1xuICAgIHNldFJvd3MoZGF0YSk7XG4gICAgYW5hbHl0aWNzVHJhY2soJ1dCRSBTdGF0dXMgUmVwb3J0Jywge1xuICAgICAgdXRpbGl0eV9uYW1lOiB3YXRlckF1dGhvcml0eU5hbWUsXG4gICAgfSk7XG4gICAgZGlzcGF0Y2godXBkYXRlTmF2Q29udGV4dCh7IG5hbWU6ICd3YmVfZGFzaGJvYXJkJyB9KSk7XG5cbiAgICBheGlvcy5nZXQoZmV0Y2hVcmwoJ21vbml0b3JlZCcpKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgbGV0IGRhdGEgPSByZXNwb25zZS5kYXRhLmRhdGE7XG5cbiAgICAgIGluaXRpYWxpemVNYXBBcmVhcyhkYXRhKTtcbiAgICAgIHpvb21BbGxBcmVhcyhkYXRhKTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNGZXRjaGluZyAmJiBkYXRhICE9PSBudWxsKSB7XG4gICAgICBpbml0aWFsaXplQ29tcG9uZW50KCk7XG4gICAgfVxuICB9LCBbaXNGZXRjaGluZywgc2VsZWN0ZWRQYXRob2dlbiwgZGF0YV0pO1xuXG4gIGNvbnN0IHBhdGhvZ2VuVGl0bGUgPVxuICAgICghaXNGZXRjaGluZ1BhdGhvZ2VucyAmJlxuICAgICAgcGF0aG9nZW5zPy5maW5kKFxuICAgICAgICAoaXRlbSkgPT4gaXRlbS50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFBhdGhvZ2VuLnRvTG93ZXJDYXNlKCksXG4gICAgICApKSB8fFxuICAgICcnO1xuICBjb25zdCBkcm9wRG93blRpdGxlID1cbiAgICBnZXRQYXRob2dlbk5hbWUocGF0aG9nZW5UaXRsZSkgfHxcbiAgICBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wYXRob2dlbl9ub3RfZm91bmQnKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Q29udGVudD5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDE+XG4gICAgICAgICAgICB7YCR7aTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQudGFibGVfbmFtZScpfSAoJHtcbiAgICAgICAgICAgICAgZ2V0UGF0aG9nZW5OYW1lKHBhdGhvZ2VuVGl0bGUpIHx8IGdldFBhdGhvZ2VuTmFtZShnZXRQYXRob2dlbigpKVxuICAgICAgICAgICAgfSlgfVxuICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgeyFpc0ZldGNoaW5nUGF0aG9nZW5zICYmIHBhdGhvZ2Vucy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgPGgzPntpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wYXRob2dlbl9ub3RfZm91bmQnKX08L2gzPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEFjdGlvbnNDb250YWluZXI+XG4gICAgICAgICAgICB7IWlzRmV0Y2hpbmdQYXRob2dlbnMgJiYgcGF0aG9nZW5zLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICAgICAgICA8RHJvcGRvd25CdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImRyb3Bkb3duLWJhc2ljLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnYnV0dG9uIGJ1dHRvbi0tc29ydCd9XG4gICAgICAgICAgICAgICAgdGl0bGU9e2Ryb3BEb3duVGl0bGUgKyAnICd9XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7cGF0aG9nZW5zLm1hcCgocGF0aG9nZW4pID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bi5JdGVtXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtwYXRob2dlbn1cbiAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0UGF0aG9nZW5DbGljayhwYXRob2dlbil9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2Q29udGV4dC5sb2NhbGUgPT09ICdoZScgPyAncmlnaHQnIDogJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0UGF0aG9nZW5OYW1lKHBhdGhvZ2VuKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5JdGVtPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bkJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9BY3Rpb25zQ29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPEZpcnN0U2VjdGlvbj5cbiAgICAgICAgICA8V2JlU3VtbWFyeUJhclxuICAgICAgICAgICAgcGF0aG9nZW49e3NlbGVjdGVkUGF0aG9nZW59XG4gICAgICAgICAgICB3YXRlckF1dGhvcml0eUlkPXt3YXRlckF1dGhvcml0eUlkfVxuICAgICAgICAgICAgaXNSdGw9e2lzUnRsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRmlyc3RTZWN0aW9uPlxuXG4gICAgICAgIDxTZWNvbmRTZWN0aW9uPlxuICAgICAgICAgIDxTZWFyY2hJbnB1dCBvbkNoYW5nZUJlaGF2aW9yPXtmaWx0ZXJSZXN1bHRzQW5kU2V0Um93c30gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3RhYnMtY29udGFpbmVyJ30+XG4gICAgICAgICAgICA8VGFic1xuICAgICAgICAgICAgICB0YWJzPXt0YWJzfVxuICAgICAgICAgICAgICBzZWxlY3RlZFRhYj17c2VsZWN0ZWRUYWJ9XG4gICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2s9e2hhbmRsZVRhYlNlbGVjdGlvbkNsaWNrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8TWFwVGFibGVDb250YWluZXIgaXNSdGw9e2lzUnRsfT5cbiAgICAgICAgICAgIHtpc0ZldGNoaW5nICYmIDxTcGlubmVyIC8+fVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydtYXAtY29udGFpbmVyJ30+XG4gICAgICAgICAgICAgIHshaXNGZXRjaGluZyAmJiByb3dzICE9PSBudWxsICYmIG1hcFpvb20gIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgICAgICAgICAgPE1hcFxuICAgICAgICAgICAgICAgICAgICBhcmVhcz17bWFwQXJlYXN9XG4gICAgICAgICAgICAgICAgICAgIGFyZWFUb0NlbnRlckJ5PXttYXBab29tfVxuICAgICAgICAgICAgICAgICAgICBlZGdlcz17W119XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cz17W119XG4gICAgICAgICAgICAgICAgICAgIGdsb2JhbF9kYXRhPXtnbG9iYWxEYXRhfVxuICAgICAgICAgICAgICAgICAgICBtYXBCb3hTdHlsZT17TUFQQk9YX1dCRV9EQVNIQk9BUkRfU1RZTEV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgeyFpc0ZldGNoaW5nICYmIHJvd3MgIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICA8S2FuZG9UYWJsZVxuICAgICAgICAgICAgICAgIG9uUm93RXhwYW5kVG9nZ2xlZD17aGFuZGxlT25Sb3dFeHBhbmR9XG4gICAgICAgICAgICAgICAgZGF0YT17cm93c31cbiAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbj17ZGlyfVxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGVSb3dzPXt0cnVlfVxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25QZXJQYWdlPXtUQUJMRV9ST1dTX1BFUl9QQUdFfVxuICAgICAgICAgICAgICAgIHJvd0NvbXBvbmVudD17RXhwYW5kZWRDb21wb25lbnR9XG4gICAgICAgICAgICAgICAgZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wcz17eyBwYXRob2dlbjogc2VsZWN0ZWRQYXRob2dlbiB9fVxuICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0RmllbGRJZD17M31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9NYXBUYWJsZUNvbnRhaW5lcj5cbiAgICAgICAgPC9TZWNvbmRTZWN0aW9uPlxuICAgICAgPC9Db250ZW50PlxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgUm93TmFtZSA9IHN0eWxlZC5kaXY8eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgICB3aWR0aDogMTAwJTtcbiAgICAgIFxuICAgIC5yb3dfbmFtZSB7XG4gICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgdHJhbnNpdGlvbjogLjJzIGVhc2UtaW47ICAgICAgXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMCA0cHg7XG4gICAgICAgIFxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAycHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICYtLWNsZWFuIHtcbiAgICAgICAgIGNvbG9yOiAjMjdhNjNhOyBcbiAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzI3YTYzYTsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0taW5mZWN0ZWQge1xuICAgICAgICAgIGNvbG9yOiAjZTEwMDM2O1xuICAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2UxMDAzNjsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0taW5hY3RpdmUtc2FtcGxpbmcge1xuICAgICAgICAgIGNvbG9yOiAke3RoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwfTtcbiAgICAgICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNjB9OyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAubmFtZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDA7XG4gICAgICAgICAgJHsocCkgPT4gKHAuaXNSdGwgPyAncmlnaHQ6IDUxcHg7JyA6ICdsZWZ0OiA1MXB4OycpfVxuICAgICAgICAgIHRvcDogMTZweDtcbiAgICAgICAgICB3aWR0aDogNy41ZW07XG4gICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogM3B4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBgO1xuXG5jb25zdCBBY3Rpb25zQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEZpcnN0U2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbjogODVweCAwIDIwcHggMDtcbmA7XG5cbmNvbnN0IFNlY29uZFNlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAyMHB4O1xuICBiYWNrZ3JvdW5kOiAjZmNmY2ZjO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTdlN2U3O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG5gO1xuXG5jb25zdCBNYXBUYWJsZUNvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAubWFwLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgLmV2ZW50LXRpbWVyYW5nZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAjbWFwIHtcbiAgICAgIGhlaWdodDogNjl2aDtcbiAgICAgIHdpZHRoOiAzMHZ3O1xuICAgIH1cbiAgfVxuICBbZGF0YS10ZXN0aWQ9J2thbmRvLXRhYmxlJ10ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG4gIFtkYXRhLWNvbHVtbi1pZD0nMSddIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICY6aG92ZXIge1xuICAgICAgLm5hbWUge1xuICAgICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICB3aWR0aDogY2FsYygxMjBweCArIDF2dyk7XG4gICAgICAgIHRyYW5zaXRpb246IDAuMnMgY3ViaWMtYmV6aWVyKDAuNjUsIDAuMDUsIDAuMzYsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zcGlubmVyLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuYDtcblxuY29uc3QgQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH1cblxuICBoMSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICBwYWRkaW5nOiA2MHB4IDYwcHg7XG5gO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGlCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxrQkFBQSxHQUFBVCxPQUFBO0FB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