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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (672) hide show
  1. package/lib/Router.js +76 -37
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +37 -26
  3. package/lib/Widgets/EventsRow/EventsRow.js +41 -28
  4. package/lib/Widgets/Map/GraphUtils.js +6 -4
  5. package/lib/Widgets/Map/Map.js +89 -69
  6. package/lib/Widgets/Map/MapUtils.js +42 -42
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +79 -54
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +25 -23
  9. package/lib/Widgets/Map/areas/AreaUtils.js +47 -48
  10. package/lib/Widgets/Map/areas/Patterns.js +5 -5
  11. package/lib/Widgets/Map/edges/Edge.js +34 -28
  12. package/lib/Widgets/Map/edges/Edges.js +26 -20
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +45 -24
  14. package/lib/Widgets/Map/events/Event.js +18 -17
  15. package/lib/Widgets/Map/events/EventIndicator.js +55 -58
  16. package/lib/Widgets/Map/events/EventPath.js +25 -25
  17. package/lib/Widgets/Map/events/EventUtils.js +81 -60
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +19 -17
  19. package/lib/Widgets/Map/events/PointOfEvent.js +38 -32
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +37 -29
  21. package/lib/Widgets/Map/events/Snail.js +21 -19
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +90 -94
  23. package/lib/Widgets/Map/map/FloatingGraph.js +21 -24
  24. package/lib/Widgets/Map/map/GraphDateButton.js +20 -27
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +14 -14
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +16 -17
  27. package/lib/Widgets/Map/points/PointIcon.js +18 -24
  28. package/lib/Widgets/Map/points/PointMarker.js +89 -71
  29. package/lib/Widgets/Map/points/PointMarkers.js +67 -45
  30. package/lib/Widgets/Map/points/PointUtils.js +88 -146
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +48 -30
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +11 -11
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +13 -11
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +6 -4
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +61 -31
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +4 -3
  37. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  38. package/lib/Widgets/MostPolluting/Areas/styles.js +6 -4
  39. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +9 -12
  40. package/lib/Widgets/MostPolluting/Factories/Factories.js +71 -39
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +19 -16
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +9 -9
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +11 -13
  44. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +6 -4
  45. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +3 -2
  46. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  47. package/lib/Widgets/MostPolluting/Factories/styles.js +6 -4
  48. package/lib/Widgets/MostPolluting/MostPolluting.js +28 -21
  49. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +32 -20
  50. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +5 -7
  51. package/lib/Widgets/MostPolluting/ShowMore/styles.js +6 -7
  52. package/lib/Widgets/MostPolluting/assets/index.js +12 -12
  53. package/lib/Widgets/MostPolluting/components/ChangePercent.js +14 -20
  54. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +31 -36
  55. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +36 -36
  56. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +36 -40
  57. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +28 -29
  58. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +52 -56
  59. package/lib/Widgets/MostPolluting/models.js +1 -1
  60. package/lib/Widgets/MostPolluting/styles.js +6 -4
  61. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +6 -8
  62. package/lib/Widgets/PotentialImpactSummary/Icon.js +7 -10
  63. package/lib/Widgets/PotentialImpactSummary/index.js +28 -20
  64. package/lib/Widgets/PotentialImpactSummary/index.test.js +54 -48
  65. package/lib/Widgets/PotentialImpactSummary/styles.js +13 -8
  66. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  67. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +8 -10
  68. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +18 -23
  69. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +33 -36
  70. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +25 -27
  71. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +38 -35
  72. package/lib/Widgets/QualitySummary/QualitySummary.js +14 -10
  73. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +7 -4
  74. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  75. package/lib/Widgets/QualitySummary/styles.js +21 -24
  76. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +14 -12
  77. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +27 -27
  78. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +26 -30
  79. package/lib/Widgets/UtilityInformation/UtilityInformation.js +43 -25
  80. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  81. package/lib/Widgets/UtilityInformation/styles.js +31 -30
  82. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +5 -3
  83. package/lib/assets/icons/TopNavbar/index.js +7 -7
  84. package/lib/assets/icons/TrendSvg.js +7 -7
  85. package/lib/assets/icons/index.js +16 -16
  86. package/lib/assets/icons/kandoStepper/index.js +6 -6
  87. package/lib/assets/icons/siteTypes/index.js +2 -2
  88. package/lib/components/ApplyButton/ApplyButton.js +12 -11
  89. package/lib/components/ApplyButton/index.js +4 -3
  90. package/lib/components/Backdrop/Backdrop.js +5 -7
  91. package/lib/components/ContentLoader/ContentLoader.js +10 -12
  92. package/lib/components/ContentLoader/index.js +2 -2
  93. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +15 -15
  94. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +9 -5
  95. package/lib/components/CustomInputs/DoubleTabs/styles.js +16 -21
  96. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +21 -13
  97. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +6 -7
  98. package/lib/components/CustomInputs/Search/Search.js +66 -43
  99. package/lib/components/CustomInputs/Search/index.js +4 -3
  100. package/lib/components/CustomInputs/Select/Select.js +59 -45
  101. package/lib/components/CustomInputs/Select/Select.stories.js +10 -6
  102. package/lib/components/DamageType/DamageType.js +61 -36
  103. package/lib/components/DamageType/index.js +4 -3
  104. package/lib/components/DataLoaderError/DataLoaderError.js +7 -9
  105. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +13 -11
  106. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +73 -72
  107. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +40 -28
  108. package/lib/components/DischargeHeatmap/HighchartsOptions.js +16 -12
  109. package/lib/components/DischargeHeatmap/index.js +4 -3
  110. package/lib/components/DischargeHeatmap/mocks/handlers.js +4 -3
  111. package/lib/components/DischargeHeatmap/popupText.js +13 -12
  112. package/lib/components/DischargeHeatmap/titles.js +6 -4
  113. package/lib/components/DischargeHeatmap/types.js +1 -1
  114. package/lib/components/ErrorBoundary.js +42 -27
  115. package/lib/components/Events/Events.js +61 -42
  116. package/lib/components/Events/index.js +4 -3
  117. package/lib/components/Graph/Graph.js +94 -73
  118. package/lib/components/Graph/index.js +4 -3
  119. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +24 -19
  120. package/lib/components/Header/Breadcrumbs/index.js +4 -3
  121. package/lib/components/Header/DoubleTabs/DoubleTabs.js +35 -25
  122. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +9 -5
  123. package/lib/components/Header/DoubleTabs/styles.js +8 -5
  124. package/lib/components/Header/Header.js +3 -3
  125. package/lib/components/Header/Header.stories.js +9 -5
  126. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +198 -83
  127. package/lib/components/Header/InfoBar/InfoBar.js +105 -75
  128. package/lib/components/Header/InfoBar/Search/Control.js +12 -11
  129. package/lib/components/Header/InfoBar/Search/GroupLabel.js +8 -9
  130. package/lib/components/Header/InfoBar/Search/Search.js +22 -15
  131. package/lib/components/Header/InfoBar/Search/SearchContainer.js +32 -18
  132. package/lib/components/Header/InfoBar/Search/index.js +4 -3
  133. package/lib/components/Header/InfoBar/Search/searchStyle.js +51 -42
  134. package/lib/components/Header/InfoBar/TimeFilter.js +17 -13
  135. package/lib/components/Header/InfoBar/types.js +1 -1
  136. package/lib/components/Header/KandoNavbar/KandoNavbar.js +95 -68
  137. package/lib/components/Header/KandoNavbar/index.js +4 -3
  138. package/lib/components/Header/Slideshow/Slideshow.js +92 -68
  139. package/lib/components/Header/Slideshow/index.js +4 -3
  140. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +5 -7
  141. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +24 -22
  142. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +22 -22
  143. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +44 -38
  144. package/lib/components/Header/Toolbar/Toolbar.js +76 -56
  145. package/lib/components/InfoBar/InfoBar.js +24 -10
  146. package/lib/components/InfoBar/InfoBar.stories.js +9 -5
  147. package/lib/components/KandoModal/KandoModal.js +44 -28
  148. package/lib/components/KandoModal/index.js +4 -3
  149. package/lib/components/Link.js +8 -9
  150. package/lib/components/Links/CustomRedirect/CustomRedirect.js +9 -10
  151. package/lib/components/Links/StyledLink/StyledLink.js +14 -13
  152. package/lib/components/Links/StyledNavLink/StyledNavLink.js +12 -12
  153. package/lib/components/LiveEvents/CarouselSlide.js +10 -11
  154. package/lib/components/LiveEvents/LiveEvents.js +6 -7
  155. package/lib/components/LiveEvents/index.js +4 -3
  156. package/lib/components/LoaderByPercent/LoaderByPercent.js +31 -38
  157. package/lib/components/Map/Map.js +26 -21
  158. package/lib/components/Map/index.js +4 -3
  159. package/lib/components/Modal/Modal.js +10 -10
  160. package/lib/components/NarrowHeader.js +32 -18
  161. package/lib/components/PointInfo/PointInfo.js +20 -21
  162. package/lib/components/PointInfo/index.js +4 -3
  163. package/lib/components/PopupModal/PopupModal.js +17 -13
  164. package/lib/components/PopupModal/PopupModal.stories.js +24 -17
  165. package/lib/components/Sector/Sector.js +9 -10
  166. package/lib/components/Sector/Sector.test.js +25 -24
  167. package/lib/components/Sector/index.js +4 -3
  168. package/lib/components/Sector/sectorIcons.js +5 -4
  169. package/lib/components/SevereEvent/Eta/Eta.js +55 -50
  170. package/lib/components/SevereEvent/Eta/styles.js +8 -11
  171. package/lib/components/SevereEvent/SevereEvent.js +38 -30
  172. package/lib/components/Spinner/Spinner.js +9 -9
  173. package/lib/components/Spinner/Spinner.stories.js +11 -6
  174. package/lib/components/Spinner/index.js +4 -3
  175. package/lib/components/Spinner/styles.js +18 -23
  176. package/lib/components/Tabs/Tabs.js +31 -18
  177. package/lib/components/Tabs/Tabs.stories.js +10 -6
  178. package/lib/components/Tabs/assets/index.js +6 -6
  179. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +18 -13
  180. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +54 -41
  181. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +34 -20
  182. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +4 -3
  183. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +26 -21
  184. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +16 -15
  185. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +4 -3
  186. package/lib/components/TimeRangeSelector/TimeRangeList.js +27 -24
  187. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +28 -18
  188. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +35 -32
  189. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +10 -6
  190. package/lib/components/TimeRangeSelector/constants.js +5 -3
  191. package/lib/components/TimeRangeSelector/index.js +4 -3
  192. package/lib/components/Toggle/Toggle.js +20 -13
  193. package/lib/components/Toggle/index.js +4 -3
  194. package/lib/components/TrendGraph/TrendGraph.js +43 -25
  195. package/lib/components/TrendGraph/index.js +4 -3
  196. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +36 -29
  197. package/lib/components/TrendGraphNVL/index.js +4 -3
  198. package/lib/development-environment/index.js +13 -9
  199. package/lib/development-environment/mock/browser.js +5 -2
  200. package/lib/development-environment/mock/get.js +10 -8
  201. package/lib/development-environment/mock/handlers.js +3 -2
  202. package/lib/development-environment/mock/mockBus.js +5 -4
  203. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +3 -2
  204. package/lib/development-environment/mock/mockObjects/areaInformation.js +3 -2
  205. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +3 -2
  206. package/lib/development-environment/mock/mockObjects/areaSitesData.js +3 -2
  207. package/lib/development-environment/mock/mockObjects/areasJson.js +3 -2
  208. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +3 -2
  209. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +3 -2
  210. package/lib/development-environment/mock/mockObjects/data-menuData.js +3 -2
  211. package/lib/development-environment/mock/mockObjects/data-search.js +3 -2
  212. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +3 -2
  213. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +3 -2
  214. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +3 -2
  215. package/lib/development-environment/mock/mockObjects/eventsJson.js +3 -2
  216. package/lib/development-environment/mock/mockObjects/metascore.js +3 -2
  217. package/lib/development-environment/mock/mockObjects/permissionsJson.js +3 -2
  218. package/lib/development-environment/mock/mockObjects/pointsJson.js +3 -2
  219. package/lib/development-environment/mock/mockObjects/site-info.js +3 -2
  220. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +3 -2
  221. package/lib/development-environment/togly/ToglyDashboard.js +23 -13
  222. package/lib/development-environment/togly/ToglyItem.js +31 -24
  223. package/lib/development-environment/togly/flags.js +1 -1
  224. package/lib/development-environment/togly/init.js +4 -4
  225. package/lib/development-environment/togly/macro.js +10 -14
  226. package/lib/development-environment/togly/useDoubleKeyDown.js +9 -7
  227. package/lib/development-environment/togly/useLocalStorage.js +18 -13
  228. package/lib/hooks/useApi.js +56 -20
  229. package/lib/hooks/useApiWithDashboardQuery.js +49 -30
  230. package/lib/hooks/useClickOutside.js +5 -4
  231. package/lib/hooks/useInitializeHeaders.js +6 -6
  232. package/lib/hooks/useKandoFetch.js +32 -18
  233. package/lib/hooks/useMap.js +37 -25
  234. package/lib/hooks/useNavContext.js +26 -22
  235. package/lib/hooks/useQueryURL.js +3 -2
  236. package/lib/hooks/useRemoveExistingLayers.js +8 -7
  237. package/lib/hooks/useUpdateEventBodyTail.js +19 -14
  238. package/lib/hooks/useUserTimeZone.js +31 -34
  239. package/lib/hooks/useUserTimeZone.test.js +23 -19
  240. package/lib/hooks/useWindowSize.js +14 -7
  241. package/lib/index.js +13 -11
  242. package/lib/macros/getVersion.js +3 -3
  243. package/lib/models/IAction.js +1 -1
  244. package/lib/models/IAppState.js +1 -1
  245. package/lib/pages/AreaPage/AreaPage.js +68 -34
  246. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +16 -14
  247. package/lib/pages/AreaPage/Dashboard/Dashboard.js +30 -28
  248. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +26 -17
  249. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +5 -5
  250. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +9 -9
  251. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +12 -12
  252. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +6 -4
  253. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  254. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +3 -2
  255. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +8 -5
  256. package/lib/pages/AssessmentPage/AssessmentPage.js +49 -41
  257. package/lib/pages/CannyWidget/Feedback.js +16 -14
  258. package/lib/pages/CovidPage/CovidPage.js +16 -9
  259. package/lib/pages/CovidPage/components/Body.js +30 -26
  260. package/lib/pages/CovidPage/components/Map.js +42 -30
  261. package/lib/pages/CovidPage/components/Sidebar.js +18 -17
  262. package/lib/pages/CovidPage/components/Summary.js +30 -21
  263. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +36 -29
  264. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +4 -3
  265. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +76 -52
  266. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +4 -3
  267. package/lib/pages/CovidPage/components/areas/Area.js +41 -29
  268. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +49 -56
  269. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +36 -32
  270. package/lib/pages/CovidPage/components/areas/AreasList.js +47 -34
  271. package/lib/pages/CovidPage/components/areas/Sort.js +17 -12
  272. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  273. package/lib/pages/DashboardMap/AreaCard.js +29 -29
  274. package/lib/pages/DashboardMap/AssessmentIcon.js +8 -9
  275. package/lib/pages/DashboardMap/Capacity.js +85 -34
  276. package/lib/pages/DashboardMap/FactoryCard.js +28 -33
  277. package/lib/pages/DashboardMap/HighchartsOptions.js +5 -6
  278. package/lib/pages/DashboardMap/List.js +98 -69
  279. package/lib/pages/DashboardMap/ListContext.js +19 -14
  280. package/lib/pages/DashboardMap/Loader.js +3 -3
  281. package/lib/pages/DashboardMap/SeverityBadge.js +19 -11
  282. package/lib/pages/DashboardMap/WWTPMap.js +67 -50
  283. package/lib/pages/DashboardMap/WaterDischarge.js +9 -9
  284. package/lib/pages/DashboardMap/Widget.js +72 -54
  285. package/lib/pages/DashboardMap/index.js +4 -3
  286. package/lib/pages/DashboardMap/utils.js +54 -44
  287. package/lib/pages/EventsPage/Body/Body.js +18 -21
  288. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +20 -17
  289. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +36 -27
  290. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +9 -10
  291. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +10 -13
  292. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +31 -22
  293. package/lib/pages/EventsPage/DragAndDropArea/index.js +4 -3
  294. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +64 -52
  295. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +31 -19
  296. package/lib/pages/EventsPage/EventsPage.js +13 -8
  297. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +42 -28
  298. package/lib/pages/EventsPage/events/MoreInfo.js +19 -18
  299. package/lib/pages/EventsPage/events/Sidebar.js +19 -22
  300. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +10 -9
  301. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +24 -19
  302. package/lib/pages/EventsPage/events/event_info/Contaminants/index.js +4 -3
  303. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +38 -31
  304. package/lib/pages/EventsPage/events/event_info/EventDetails.js +40 -42
  305. package/lib/pages/EventsPage/events/event_info/EventInfo.js +45 -44
  306. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +5 -5
  307. package/lib/pages/EventsPage/events/event_info/EventSection.js +22 -19
  308. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +39 -44
  309. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +51 -40
  310. package/lib/pages/EventsPage/events/event_info/Header/Header.js +7 -8
  311. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +36 -31
  312. package/lib/pages/EventsPage/events/event_info/Header/index.js +4 -3
  313. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +9 -8
  314. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +39 -30
  315. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +9 -6
  316. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +24 -23
  317. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +22 -13
  318. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +6 -7
  319. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/index.js +4 -3
  320. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +12 -13
  321. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +29 -23
  322. package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +4 -3
  323. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +11 -14
  324. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +10 -9
  325. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +4 -3
  326. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +5 -7
  327. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +5 -4
  328. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +11 -13
  329. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +9 -11
  330. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +14 -11
  331. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +6 -7
  332. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +8 -9
  333. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +8 -9
  334. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +7 -8
  335. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +12 -13
  336. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +19 -18
  337. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +7 -7
  338. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +8 -9
  339. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +18 -19
  340. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +7 -6
  341. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +11 -12
  342. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +14 -18
  343. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +11 -12
  344. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +5 -4
  345. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +4 -3
  346. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +6 -4
  347. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +41 -26
  348. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +39 -30
  349. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +12 -13
  350. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +20 -17
  351. package/lib/pages/EventsPage/events/event_info/sources/Source.js +33 -29
  352. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +29 -24
  353. package/lib/pages/EventsPage/events/event_info/styles.js +15 -21
  354. package/lib/pages/EventsPage/events/events_list/EventItem.js +22 -19
  355. package/lib/pages/EventsPage/events/events_list/EventUtils.js +11 -11
  356. package/lib/pages/EventsPage/events/events_list/EventsList.js +150 -126
  357. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +58 -41
  358. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +118 -80
  359. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +81 -62
  360. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +44 -39
  361. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +39 -30
  362. package/lib/pages/EventsPage/events/events_list/Sort.js +19 -14
  363. package/lib/pages/ImportFileWizard/FileUploadRespones.js +23 -15
  364. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +8 -9
  365. package/lib/pages/ImportFileWizard/ImportFile.js +25 -21
  366. package/lib/pages/ImportFileWizard/ResponseBody.js +36 -26
  367. package/lib/pages/ImportFileWizard/ValidationForm.js +25 -25
  368. package/lib/pages/ImportFileWizard/ValidationResponse.js +25 -23
  369. package/lib/pages/ImportFileWizard/importFileUtils.js +5 -4
  370. package/lib/pages/ImportFileWizard/index.js +4 -3
  371. package/lib/pages/ImportGisPage/ImportGisContainer.js +27 -22
  372. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +26 -23
  373. package/lib/pages/ImportGisPage/importGisUtils.js +25 -16
  374. package/lib/pages/ImportGisProcess/index.js +18 -14
  375. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +13 -7
  376. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +20 -18
  377. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +4 -4
  378. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +66 -34
  379. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +12 -8
  380. package/lib/pages/NotificationsPage/Notification/Notification.js +13 -17
  381. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  382. package/lib/pages/NotificationsPage/Notifications.mock.js +3 -2
  383. package/lib/pages/NotificationsPage/Notifications.stories.js +10 -6
  384. package/lib/pages/NotificationsPage/NotificationsPage.js +38 -19
  385. package/lib/pages/NotificationsPage/assets/index.js +10 -10
  386. package/lib/pages/NotificationsPageV2/NotificationsPage.js +97 -71
  387. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +66 -96
  388. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +144 -131
  389. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +76 -74
  390. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +88 -91
  391. package/lib/pages/NotificationsPageV2/notificationUtils.js +54 -55
  392. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  393. package/lib/pages/OldSitePage/OldSitePage.js +133 -57
  394. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +10 -6
  395. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +9 -5
  396. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +7 -9
  397. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +21 -19
  398. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -10
  399. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +19 -12
  400. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +13 -17
  401. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +9 -5
  402. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +17 -19
  403. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +64 -51
  404. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +8 -10
  405. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +54 -29
  406. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +7 -4
  407. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +19 -12
  408. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  409. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +12 -10
  410. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +29 -33
  411. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +31 -29
  412. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  413. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +8 -5
  414. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +15 -19
  415. package/lib/pages/ProfilePage/Container.js +4 -3
  416. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +45 -28
  417. package/lib/pages/ProfilePage/ProfilePage.js +207 -118
  418. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +34 -25
  419. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +21 -21
  420. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +35 -32
  421. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +120 -58
  422. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +23 -18
  423. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +13 -14
  424. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +46 -41
  425. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +29 -27
  426. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +19 -18
  427. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +18 -15
  428. package/lib/pages/SamplingsPage/DesktopActions/index.js +4 -3
  429. package/lib/pages/SamplingsPage/NavigationDropdown.js +34 -46
  430. package/lib/pages/SamplingsPage/NewSamplingAction.js +105 -78
  431. package/lib/pages/SamplingsPage/SamplingMobileModal.js +102 -130
  432. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +25 -23
  433. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +25 -36
  434. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +64 -39
  435. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +21 -16
  436. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +10 -11
  437. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +195 -110
  438. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +56 -49
  439. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +44 -47
  440. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +46 -49
  441. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +26 -19
  442. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +6 -4
  443. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +7 -11
  444. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +55 -58
  445. package/lib/pages/SamplingsPage/SamplingsMobileList.js +31 -22
  446. package/lib/pages/SamplingsPage/SamplingsPage.js +35 -27
  447. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +59 -50
  448. package/lib/pages/SamplingsPage/index.js +3 -2
  449. package/lib/pages/SamplingsPage/samplingsPageUtils.js +93 -69
  450. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +6 -7
  451. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +16 -16
  452. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +16 -12
  453. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  454. package/lib/pages/SitePage/PollutionContributor/index.js +4 -3
  455. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +9 -5
  456. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +15 -15
  457. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -10
  458. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +24 -27
  459. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +18 -15
  460. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +33 -37
  461. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -10
  462. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +25 -15
  463. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +13 -17
  464. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +9 -5
  465. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +17 -19
  466. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +71 -58
  467. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +8 -10
  468. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +27 -15
  469. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +9 -5
  470. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +19 -12
  471. package/lib/pages/SitePage/SamplingParameters/body/Body.js +12 -11
  472. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +40 -30
  473. package/lib/pages/SitePage/SamplingParameters/body/index.js +4 -3
  474. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +12 -11
  475. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +12 -10
  476. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +60 -61
  477. package/lib/pages/SitePage/SamplingParameters/dataParser.js +41 -32
  478. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +9 -11
  479. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  480. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +8 -5
  481. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +15 -19
  482. package/lib/pages/SitePage/SiteInformation/EmptyState.js +10 -13
  483. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +32 -31
  484. package/lib/pages/SitePage/SitePage.js +80 -40
  485. package/lib/pages/UploadLabResult/index.js +16 -15
  486. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +37 -27
  487. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +13 -8
  488. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +15 -11
  489. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +9 -5
  490. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +51 -48
  491. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +8 -11
  492. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +7 -6
  493. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +9 -6
  494. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +13 -14
  495. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  496. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +13 -16
  497. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +9 -8
  498. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +4 -3
  499. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +27 -17
  500. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +40 -28
  501. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +16 -14
  502. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +14 -7
  503. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +32 -27
  504. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -9
  505. package/lib/pages/WbeDashboard/GraphWrapper.js +37 -30
  506. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -16
  507. package/lib/pages/WbeDashboard/SearchInput.js +21 -15
  508. package/lib/pages/WbeDashboard/SummaryGraph.js +77 -50
  509. package/lib/pages/WbeDashboard/SummaryGraphModal.js +18 -20
  510. package/lib/pages/WbeDashboard/Tabs.js +12 -12
  511. package/lib/pages/WbeDashboard/WbeDashboardPage.js +211 -148
  512. package/lib/pages/WbeDashboard/WbeSummaryBar.js +49 -40
  513. package/lib/pages/WwtpPage/DashboardCard.js +26 -28
  514. package/lib/pages/WwtpPage/DischargePatternCard.js +25 -14
  515. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +25 -28
  516. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +22 -22
  517. package/lib/pages/WwtpPage/InletsCard/index.js +4 -3
  518. package/lib/pages/WwtpPage/Map.js +6 -7
  519. package/lib/pages/WwtpPage/OrganicCard.js +5 -4
  520. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +5 -4
  521. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +9 -10
  522. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +11 -11
  523. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +17 -20
  524. package/lib/pages/WwtpPage/PotentialSaving/index.js +4 -3
  525. package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
  526. package/lib/pages/WwtpPage/PredictionCard.js +5 -4
  527. package/lib/pages/WwtpPage/TrendCard.js +22 -20
  528. package/lib/pages/WwtpPage/UpgradeBox.js +6 -5
  529. package/lib/pages/WwtpPage/WwtpPage.js +11 -10
  530. package/lib/pages/WwtpPage/WwtpPageContainer.js +19 -23
  531. package/lib/pages/WwtpPage/index.js +4 -3
  532. package/lib/providers/Slideshow/SlideshowContext.js +10 -11
  533. package/lib/providers/Slideshow/SlideshowProvider.js +40 -22
  534. package/lib/providers/Slideshow/SlideshowRunner.js +21 -18
  535. package/lib/providers/UrlHistory/UrlHistoryContext.js +6 -7
  536. package/lib/providers/UrlHistory/UrlHistoryProvider.js +13 -12
  537. package/lib/providers/UrlHistory/index.js +4 -4
  538. package/lib/providers/UrlHistory/useLastVisited.js +7 -6
  539. package/lib/react-app-env.d.js +1 -1
  540. package/lib/store/ImportGis/action.js +1 -1
  541. package/lib/store/ImportGis/actionTypes.js +5 -4
  542. package/lib/store/ImportGis/actionsCreator.js +5 -7
  543. package/lib/store/ImportGis/models/gisImports.js +1 -1
  544. package/lib/store/ImportGis/reducer.js +30 -41
  545. package/lib/store/WBE/actionTypes.js +3 -2
  546. package/lib/store/WBE/actions.js +1 -1
  547. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  548. package/lib/store/WBE/models/IWBE.js +1 -1
  549. package/lib/store/WBE/models/IWBEState.js +1 -1
  550. package/lib/store/WBE/reducer.js +10 -14
  551. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +15 -24
  552. package/lib/store/WWTPDashboard/types.js +1 -1
  553. package/lib/store/areas/actionTypes.js +7 -4
  554. package/lib/store/areas/actions.js +13 -7
  555. package/lib/store/areas/models/IArea.js +1 -1
  556. package/lib/store/areas/models/IAreasState.js +1 -1
  557. package/lib/store/areas/reducer.js +6 -8
  558. package/lib/store/context/actionTypes.js +5 -3
  559. package/lib/store/context/actions.js +3 -3
  560. package/lib/store/context/contextMiddlewares.js +18 -15
  561. package/lib/store/context/models/INavContext.js +1 -1
  562. package/lib/store/context/models/INavContextState.js +1 -1
  563. package/lib/store/context/reducer.js +10 -14
  564. package/lib/store/dashboard/dashboardSlice.js +11 -18
  565. package/lib/store/dashboard/periodType.js +1 -1
  566. package/lib/store/edges/actionTypes.js +9 -5
  567. package/lib/store/edges/actions.js +8 -4
  568. package/lib/store/edges/models/IEdge.js +1 -1
  569. package/lib/store/edges/models/IEdgesState.js +1 -1
  570. package/lib/store/edges/reducer.js +17 -13
  571. package/lib/store/events/actionTypes.js +33 -17
  572. package/lib/store/events/actions.js +7 -3
  573. package/lib/store/events/models/IEvent.js +1 -1
  574. package/lib/store/events/models/IEventsState.js +1 -1
  575. package/lib/store/events/models/ISource.js +1 -1
  576. package/lib/store/events/reducer.js +49 -42
  577. package/lib/store/filters/IFilter.js +1 -1
  578. package/lib/store/filters/IFilterItem.js +1 -1
  579. package/lib/store/global/actionTypes.js +21 -11
  580. package/lib/store/global/actions.js +6 -8
  581. package/lib/store/global/models/IGlobalState.js +1 -1
  582. package/lib/store/global/reducer.js +10 -11
  583. package/lib/store/permissions/permissionsSlice.js +9 -12
  584. package/lib/store/points/actionTypes.js +5 -3
  585. package/lib/store/points/actions.js +7 -3
  586. package/lib/store/points/models/IGroup.js +1 -1
  587. package/lib/store/points/models/IPoint.js +1 -1
  588. package/lib/store/points/models/IPointsState.js +1 -1
  589. package/lib/store/points/reducer.js +5 -7
  590. package/lib/store/rootActionTypes.js +3 -2
  591. package/lib/store/rootActions.js +1 -1
  592. package/lib/store/rootReducer.js +13 -17
  593. package/lib/store/rootStore.js +6 -6
  594. package/lib/store/samplings/action.js +1 -1
  595. package/lib/store/samplings/actionTypes.js +5 -4
  596. package/lib/store/samplings/actionsCreator.js +1 -1
  597. package/lib/store/samplings/models/Samplings.js +1 -1
  598. package/lib/store/samplings/reducer.js +14 -16
  599. package/lib/styles/StylesLayout.js +6 -7
  600. package/lib/styles/theme/theme.js +30 -26
  601. package/lib/test/mocks/browser.js +5 -2
  602. package/lib/test/test-utils.js +16 -18
  603. package/lib/ui-kit/Button/Button.js +84 -130
  604. package/lib/ui-kit/Button/Button.test.js +33 -27
  605. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  606. package/lib/ui-kit/Checkbox/Checkbox.js +24 -32
  607. package/lib/ui-kit/ContentCard/ContentCard.js +21 -17
  608. package/lib/ui-kit/Dashboard/Dashboard.js +25 -26
  609. package/lib/ui-kit/Dashboard/index.js +4 -3
  610. package/lib/ui-kit/DropDown/DropDown.js +25 -24
  611. package/lib/ui-kit/DropDown/DropDown.test.js +13 -13
  612. package/lib/ui-kit/DropDown/DropDownItem.js +25 -26
  613. package/lib/ui-kit/DropDown/DropdownToggle.js +10 -13
  614. package/lib/ui-kit/EmptyState/EmptyState.js +7 -8
  615. package/lib/ui-kit/IconAction/IconAction.js +8 -9
  616. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +66 -49
  617. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +53 -70
  618. package/lib/ui-kit/InletsPie/InletsPie.js +16 -17
  619. package/lib/ui-kit/InletsPie/index.js +4 -3
  620. package/lib/ui-kit/InletsPie/options.js +9 -7
  621. package/lib/ui-kit/KandoList/KandoList.js +12 -13
  622. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  623. package/lib/ui-kit/KandoTable/KandoTable.js +41 -48
  624. package/lib/ui-kit/KandoTable/KandoTable.test.js +27 -21
  625. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  626. package/lib/ui-kit/Layout/Layout.js +7 -8
  627. package/lib/ui-kit/MobileInput/MobileInput.js +51 -61
  628. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +17 -14
  629. package/lib/ui-kit/ModalConfirmation/index.js +3 -2
  630. package/lib/ui-kit/OrganicEvents/GaugeChart.js +9 -10
  631. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +9 -8
  632. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +23 -29
  633. package/lib/ui-kit/OrganicEvents/TextInfo.js +13 -17
  634. package/lib/ui-kit/OrganicEvents/index.js +4 -3
  635. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +11 -12
  636. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +21 -17
  637. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +4 -3
  638. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +25 -22
  639. package/lib/ui-kit/ScoreGauge/constant.js +4 -3
  640. package/lib/ui-kit/ScoreGauge/index.js +4 -3
  641. package/lib/ui-kit/TimeLineChart/TrendChart.js +45 -56
  642. package/lib/ui-kit/TimeLineChart/index.js +4 -3
  643. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +11 -10
  644. package/lib/ui-kit/Tooltip/Tooltip.js +9 -15
  645. package/lib/ui-kit/index.js +8 -8
  646. package/lib/ui-kit/kandoStepper/KandoStepper.js +15 -14
  647. package/lib/ui-kit/siteName/SiteName.js +11 -13
  648. package/lib/utilities/ActionUtility.js +7 -7
  649. package/lib/utilities/Alert.js +20 -23
  650. package/lib/utilities/Analytics.js +12 -12
  651. package/lib/utilities/Array.js +5 -4
  652. package/lib/utilities/Enum.js +51 -15
  653. package/lib/utilities/ErrorBoundary.js +42 -27
  654. package/lib/utilities/File.js +70 -41
  655. package/lib/utilities/GetDir.js +10 -10
  656. package/lib/utilities/KandoDate.js +15 -7
  657. package/lib/utilities/KandoModal.js +28 -16
  658. package/lib/utilities/LocalStorage.js +10 -8
  659. package/lib/utilities/ThousandsToK.js +3 -3
  660. package/lib/utilities/TimeFormat.js +23 -22
  661. package/lib/utilities/Truncate.js +28 -18
  662. package/lib/utilities/edgesMath.js +16 -15
  663. package/lib/utilities/i18n.js +6 -5
  664. package/lib/utilities/kql.js +14 -12
  665. package/lib/utilities/map/icons.js +4 -4
  666. package/lib/utilities/polylinedecorator.js +113 -88
  667. package/lib/utilities/scoreToData.js +16 -16
  668. package/lib/utilities/scoreToData.test.js +5 -5
  669. package/lib/utilities/time.js +10 -9
  670. package/lib/utilities/uploadToS3.js +12 -12
  671. package/lib/utilities/urls.js +61 -62
  672. package/package.json +1 -1
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
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"));
9
11
  var _styledComponents = _interopRequireDefault(require("styled-components"));
10
12
  var _react = _interopRequireWildcard(require("react"));
11
13
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
@@ -25,7 +27,7 @@ var _nvlStatusHelper = require("../CovidPage/components/nvlStatusHelper");
25
27
  var _Map = require("../../Widgets/Map/Map");
26
28
  var _KandoTable = require("ui-kit/KandoTable/KandoTable");
27
29
  var _Tabs = require("./Tabs");
28
- var _useKandoFetch = _interopRequireDefault(require("../../hooks/useKandoFetch"));
30
+ var _useKandoFetch2 = _interopRequireDefault(require("../../hooks/useKandoFetch"));
29
31
  var _useQueryURL = _interopRequireDefault(require("../../hooks/useQueryURL"));
30
32
  var _Dropdown = _interopRequireDefault(require("react-bootstrap/cjs/Dropdown"));
31
33
  var _DropdownButton = _interopRequireDefault(require("react-bootstrap/cjs/DropdownButton"));
@@ -36,23 +38,27 @@ var _Spinner = require("../../components/Spinner/Spinner");
36
38
  var _WbeSummaryBar = require("./WbeSummaryBar");
37
39
  var _ErrorBoundary = _interopRequireDefault(require("../../utilities/ErrorBoundary"));
38
40
  var _theme = require("../../styles/theme/theme");
39
- var _useKandoFetch2 = _interopRequireDefault(require("hooks/useKandoFetch"));
41
+ var _useKandoFetch3 = _interopRequireDefault(require("hooks/useKandoFetch"));
40
42
  var _urls = require("utilities/urls");
41
43
  var _useUserTimeZone = require("hooks/useUserTimeZone");
42
- const TABLE_ROWS_PER_PAGE = 25;
43
- const MAPBOX_WBE_DASHBOARD_STYLE = 'ckzzkjsi7005f14o9im0mczs9';
44
- const WbeDashboardPage = () => {
45
- 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() {
46
50
  return query.get('water_authority_id');
47
51
  };
48
- const fetchUrl = firstParam => {
49
- 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());
50
54
  };
51
- const pathogensUrl = () => (0, _urls.urls)({
52
- waterAuthorityId: getWAId()
53
- }).wbeDashboard.pathogens.url;
54
- const DEFAULT_TABS = [_i18n.default.t('components.wbe_dashboard.cities'), _i18n.default.t('components.wbe_dashboard.monitored_areas')];
55
- 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) {
56
62
  if (tab_name === _i18n.default.t('components.wbe_dashboard.cities')) {
57
63
  return 'city';
58
64
  } else if (tab_name === _i18n.default.t('components.wbe_dashboard.monitored_areas')) {
@@ -60,32 +66,55 @@ const WbeDashboardPage = () => {
60
66
  }
61
67
  return 'city';
62
68
  };
63
- const query = (0, _useQueryURL.default)();
64
- const getPathogen = () => {
69
+ var query = (0, _useQueryURL.default)();
70
+ var getPathogen = function getPathogen() {
65
71
  return query.get('pathogen') || 'covid';
66
72
  };
67
- const [currentData, setCurrentData] = (0, _react.useState)([]);
68
- const [mapAreas, setMapAreas] = (0, _react.useState)([]);
69
- const [mapZoom, setMapZoom] = (0, _react.useState)([]);
70
- const [rows, setRows] = (0, _react.useState)([]);
71
- const [tabs, setTabs] = (0, _react.useState)(DEFAULT_TABS);
72
- const [selectedTab, setSelectedTab] = (0, _react.useState)(tabs[0]);
73
- const [selectedPathogen, setSelectedPathogen] = (0, _react.useState)(getPathogen());
74
- const {
75
- data,
76
- isFetching,
77
- setFetching
78
- } = (0, _useKandoFetch.default)(fetchUrl(convertTabNameToParam(selectedTab)));
79
- const {
80
- data: pathogens,
81
- isFetching: isFetchingPathogens
82
- } = (0, _useKandoFetch2.default)(pathogensUrl());
83
- const dispatch = (0, _reactRedux.useDispatch)();
84
- const navContext = (0, _reactRedux.useSelector)(state => state.nav_context_data.navContext);
85
- const globalData = (0, _reactRedux.useSelector)(state => state.global_data);
86
- const isRtl = navContext.locale === 'he' ? true : false;
87
- const colorForRow = row => {
88
- let quality;
73
+ var _useState = (0, _react.useState)([]),
74
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
75
+ currentData = _useState2[0],
76
+ setCurrentData = _useState2[1];
77
+ var _useState3 = (0, _react.useState)([]),
78
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
79
+ mapAreas = _useState4[0],
80
+ setMapAreas = _useState4[1];
81
+ var _useState5 = (0, _react.useState)([]),
82
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
83
+ mapZoom = _useState6[0],
84
+ setMapZoom = _useState6[1];
85
+ var _useState7 = (0, _react.useState)([]),
86
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
87
+ rows = _useState8[0],
88
+ setRows = _useState8[1];
89
+ var _useState9 = (0, _react.useState)(DEFAULT_TABS),
90
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
91
+ tabs = _useState10[0],
92
+ setTabs = _useState10[1];
93
+ var _useState11 = (0, _react.useState)(tabs[0]),
94
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
95
+ selectedTab = _useState12[0],
96
+ setSelectedTab = _useState12[1];
97
+ var _useState13 = (0, _react.useState)(getPathogen()),
98
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
99
+ selectedPathogen = _useState14[0],
100
+ setSelectedPathogen = _useState14[1];
101
+ var _useKandoFetch = (0, _useKandoFetch2.default)(fetchUrl(convertTabNameToParam(selectedTab))),
102
+ data = _useKandoFetch.data,
103
+ isFetching = _useKandoFetch.isFetching,
104
+ setFetching = _useKandoFetch.setFetching;
105
+ var _UseKandoFetch = (0, _useKandoFetch3.default)(pathogensUrl()),
106
+ pathogens = _UseKandoFetch.data,
107
+ isFetchingPathogens = _UseKandoFetch.isFetching;
108
+ var dispatch = (0, _reactRedux.useDispatch)();
109
+ var navContext = (0, _reactRedux.useSelector)(function (state) {
110
+ return state.nav_context_data.navContext;
111
+ });
112
+ var globalData = (0, _reactRedux.useSelector)(function (state) {
113
+ return state.global_data;
114
+ });
115
+ var isRtl = navContext.locale === 'he' ? true : false;
116
+ var colorForRow = function colorForRow(row) {
117
+ var quality;
89
118
  if (!row.sample_active) {
90
119
  quality = 'inactive-sampling';
91
120
  } else if (isInfected(row.nvl)) {
@@ -93,82 +122,106 @@ const WbeDashboardPage = () => {
93
122
  } else {
94
123
  quality = 'clean';
95
124
  }
96
- return `row_name--${quality}`;
125
+ return "row_name--".concat(quality);
97
126
  };
98
- const userFormat = (0, _useUserTimeZone.useUserSelectedDateFormat)();
99
- const columns = _react.default.useMemo(() => [{
100
- name: _i18n.default.t('components.wbe_dashboard.name'),
101
- selector: row => row.name,
102
- sortable: true,
103
- cell: row => /*#__PURE__*/_react.default.createElement(RowName, {
104
- isRtl: isRtl
105
- }, /*#__PURE__*/_react.default.createElement("div", {
106
- "data-tag": "allowRowEvents",
107
- className: `row_name ${colorForRow(row)}`,
108
- onClick: () => {
109
- handleAreaClick(row);
127
+ var userFormat = (0, _useUserTimeZone.useUserSelectedDateFormat)();
128
+ var columns = _react.default.useMemo(function () {
129
+ return [{
130
+ name: _i18n.default.t('components.wbe_dashboard.name'),
131
+ selector: function selector(row) {
132
+ return row.name;
133
+ },
134
+ sortable: true,
135
+ cell: function cell(row) {
136
+ return /*#__PURE__*/_react.default.createElement(RowName, {
137
+ isRtl: isRtl
138
+ }, /*#__PURE__*/_react.default.createElement("div", {
139
+ "data-tag": "allowRowEvents",
140
+ className: "row_name ".concat(colorForRow(row)),
141
+ onClick: function onClick() {
142
+ handleAreaClick(row);
143
+ }
144
+ }, /*#__PURE__*/_react.default.createElement("div", {
145
+ className: 'expandable-icon'
146
+ }, /*#__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", {
147
+ className: 'name'
148
+ }, /*#__PURE__*/_react.default.createElement(_Truncate.default, {
149
+ characters: 3,
150
+ inheritTextAlign: true
151
+ }, row.name))));
110
152
  }
111
- }, /*#__PURE__*/_react.default.createElement("div", {
112
- className: 'expandable-icon'
113
- }, /*#__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", {
114
- className: 'name'
115
- }, /*#__PURE__*/_react.default.createElement(_Truncate.default, {
116
- characters: 3,
117
- inheritTextAlign: true
118
- }, row.name))))
119
- }, {
120
- name: _i18n.default.t('components.wbe_dashboard.nvl_score'),
121
- selector: row => row.nvl,
122
- sortable: true,
123
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
124
- "data-tag": "allowRowEvents"
125
- }, row.nvl)
126
- }, {
127
- name: _i18n.default.t('components.wbe_dashboard.percentage_from_last_sampling'),
128
- selector: row => row.nvl_change,
129
- sortable: true,
130
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
131
- "data-tag": "allowRowEvents",
132
- style: {
133
- direction: 'ltr'
153
+ }, {
154
+ name: _i18n.default.t('components.wbe_dashboard.nvl_score'),
155
+ selector: function selector(row) {
156
+ return row.nvl;
157
+ },
158
+ sortable: true,
159
+ cell: function cell(row) {
160
+ return /*#__PURE__*/_react.default.createElement("div", {
161
+ "data-tag": "allowRowEvents"
162
+ }, row.nvl);
134
163
  }
135
- }, /*#__PURE__*/_react.default.createElement("span", {
136
- style: {
137
- color: '#000000',
138
- margin: '0 6px'
164
+ }, {
165
+ name: _i18n.default.t('components.wbe_dashboard.percentage_from_last_sampling'),
166
+ selector: function selector(row) {
167
+ return row.nvl_change;
168
+ },
169
+ sortable: true,
170
+ cell: function cell(row) {
171
+ return /*#__PURE__*/_react.default.createElement("div", {
172
+ "data-tag": "allowRowEvents",
173
+ style: {
174
+ direction: 'ltr'
175
+ }
176
+ }, /*#__PURE__*/_react.default.createElement("span", {
177
+ style: {
178
+ color: '#000000',
179
+ margin: '0 6px'
180
+ }
181
+ }, row.nvl_change, "%"), /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
182
+ icon: row.nvl_change > 0 ? _freeSolidSvgIcons.faChevronUp : _freeSolidSvgIcons.faChevronDown
183
+ }));
139
184
  }
140
- }, row.nvl_change, "%"), /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
141
- icon: row.nvl_change > 0 ? _freeSolidSvgIcons.faChevronUp : _freeSolidSvgIcons.faChevronDown
142
- }))
143
- }, {
144
- name: _i18n.default.t('components.wbe_dashboard.last_sampled'),
145
- selector: 'last_sampled',
146
- sortable: row => row.last_updated,
147
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
148
- "data-tag": "allowRowEvents"
149
- }, row.last_updated === null ? '-' : (0, _useUserTimeZone.dayFormatFromTime)(row.last_updated, userFormat))
150
- }, {
151
- name: _i18n.default.t('components.wbe_dashboard.trend_graph'),
152
- selector: 'trend_graph',
153
- sortable: true,
154
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
155
- "data-tag": "allowRowEvents"
156
- }, /*#__PURE__*/_react.default.createElement(_GraphWrapper.GraphWrapper, {
157
- key: row.id,
158
- row: row,
159
- water_authority_id: getWAId(),
160
- pathogen: selectedPathogen
161
- }))
162
- }, {
163
- name: _i18n.default.t('components.wbe_dashboard.population'),
164
- selector: row => row.population,
165
- sortable: true,
166
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
167
- "data-tag": "allowRowEvents"
168
- }, (0, _ThousandsToK.kFormatter)(parseInt(row.population)))
169
- }], [isRtl, selectedPathogen, userFormat]);
170
- const initializeMapAreas = areas => {
171
- const mappedWithColor = areas.map(a => {
185
+ }, {
186
+ name: _i18n.default.t('components.wbe_dashboard.last_sampled'),
187
+ selector: 'last_sampled',
188
+ sortable: function sortable(row) {
189
+ return row.last_updated;
190
+ },
191
+ cell: function cell(row) {
192
+ return /*#__PURE__*/_react.default.createElement("div", {
193
+ "data-tag": "allowRowEvents"
194
+ }, row.last_updated === null ? '-' : (0, _useUserTimeZone.dayFormatFromTime)(row.last_updated, userFormat));
195
+ }
196
+ }, {
197
+ name: _i18n.default.t('components.wbe_dashboard.trend_graph'),
198
+ selector: 'trend_graph',
199
+ sortable: true,
200
+ cell: function cell(row) {
201
+ return /*#__PURE__*/_react.default.createElement("div", {
202
+ "data-tag": "allowRowEvents"
203
+ }, /*#__PURE__*/_react.default.createElement(_GraphWrapper.GraphWrapper, {
204
+ key: row.id,
205
+ row: row,
206
+ water_authority_id: getWAId(),
207
+ pathogen: selectedPathogen
208
+ }));
209
+ }
210
+ }, {
211
+ name: _i18n.default.t('components.wbe_dashboard.population'),
212
+ selector: function selector(row) {
213
+ return row.population;
214
+ },
215
+ sortable: true,
216
+ cell: function cell(row) {
217
+ return /*#__PURE__*/_react.default.createElement("div", {
218
+ "data-tag": "allowRowEvents"
219
+ }, (0, _ThousandsToK.kFormatter)(parseInt(row.population)));
220
+ }
221
+ }];
222
+ }, [isRtl, selectedPathogen, userFormat]);
223
+ var initializeMapAreas = function initializeMapAreas(areas) {
224
+ var mappedWithColor = areas.map(function (a) {
172
225
  a.wbe_dashboard_name = a.name;
173
226
  a.showColorOnlyInBorders = true;
174
227
  if (!a.sample_active) {
@@ -185,16 +238,16 @@ const WbeDashboardPage = () => {
185
238
  });
186
239
  setMapAreas(mappedWithColor);
187
240
  };
188
- const zoomToArea = area => {
241
+ var zoomToArea = function zoomToArea(area) {
189
242
  area.shape_data !== undefined && setMapZoom(area.shape_data);
190
243
  };
191
- const zoomAllAreas = data => {
192
- const shapeData = data.map(datum => {
244
+ var zoomAllAreas = function zoomAllAreas(data) {
245
+ var shapeData = data.map(function (datum) {
193
246
  return datum.shape_data;
194
247
  });
195
248
  setMapZoom(shapeData);
196
249
  };
197
- const isInfected = nvl => {
250
+ var isInfected = function isInfected(nvl) {
198
251
  if ((0, _nvlStatusHelper.levelNVL)(nvl) === 'clean') {
199
252
  return false;
200
253
  } else if ((0, _nvlStatusHelper.levelNVL)(nvl) === 'low' || (0, _nvlStatusHelper.levelNVL)(nvl) === 'medium' || (0, _nvlStatusHelper.levelNVL)(nvl) === 'high') {
@@ -202,32 +255,36 @@ const WbeDashboardPage = () => {
202
255
  }
203
256
  return;
204
257
  };
205
- const history = (0, _reactRouterDom.useHistory)();
206
- const waterAuthorityId = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityId);
207
- const dir = navContext.locale === 'he' ? _reactDataTableComponent.Direction.RTL : _reactDataTableComponent.Direction.LTR;
208
- const filterResultsAndSetRows = text => {
209
- let results = currentData.filter(function (el) {
258
+ var history = (0, _reactRouterDom.useHistory)();
259
+ var waterAuthorityId = (0, _reactRedux.useSelector)(function (state) {
260
+ return state.global_data.waterAuthorityId;
261
+ });
262
+ var dir = navContext.locale === 'he' ? _reactDataTableComponent.Direction.RTL : _reactDataTableComponent.Direction.LTR;
263
+ var filterResultsAndSetRows = function filterResultsAndSetRows(text) {
264
+ var results = currentData.filter(function (el) {
210
265
  return el.name.toLowerCase().includes(text.toLowerCase());
211
266
  });
212
267
  setRows(results);
213
268
  };
214
- const handleOnRowExpand = (expanded, row) => {
269
+ var handleOnRowExpand = function handleOnRowExpand(expanded, row) {
215
270
  expanded && zoomToArea(row);
216
271
  !expanded && zoomAllAreas(data);
217
272
  };
218
- const waterAuthorityName = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityName);
219
- const handleSelectPathogenClick = pathogen => {
273
+ var waterAuthorityName = (0, _reactRedux.useSelector)(function (state) {
274
+ return state.global_data.waterAuthorityName;
275
+ });
276
+ var handleSelectPathogenClick = function handleSelectPathogenClick(pathogen) {
220
277
  (0, _Analytics.analyticsTrack)('WBE Status Report - Pathogen change clicked', {
221
278
  pathogen: pathogen,
222
279
  utility_name: waterAuthorityName
223
280
  });
224
281
  setSelectedPathogen(pathogen);
225
- history.push(`/wbe_dashboard/index?locale=${navContext.locale}&water_authority_id=${waterAuthorityId}&pathogen=${pathogen}`);
282
+ history.push("/wbe_dashboard/index?locale=".concat(navContext.locale, "&water_authority_id=").concat(waterAuthorityId, "&pathogen=").concat(pathogen));
226
283
  };
227
- const fetchForTabSelection = tab => {
284
+ var fetchForTabSelection = function fetchForTabSelection(tab) {
228
285
  setFetching(true);
229
- _axios.default.get(fetchUrl(tab)).then(response => {
230
- let responseData = response.data.data;
286
+ _axios.default.get(fetchUrl(tab)).then(function (response) {
287
+ var responseData = response.data.data;
231
288
  setFetching(false);
232
289
  setTabs(DEFAULT_TABS);
233
290
  setRows(responseData);
@@ -236,7 +293,7 @@ const WbeDashboardPage = () => {
236
293
  zoomAllAreas(responseData);
237
294
  });
238
295
  };
239
- const handleTabSelectionClick = tab => {
296
+ var handleTabSelectionClick = function handleTabSelectionClick(tab) {
240
297
  if (!isFetching) {
241
298
  setSelectedTab(tab);
242
299
  if (tab !== _i18n.default.t('components.wbe_dashboard.custom')) {
@@ -245,24 +302,24 @@ const WbeDashboardPage = () => {
245
302
  }
246
303
  }
247
304
  };
248
- const initializeDrilledArea = response => {
249
- let data = response.data.data;
305
+ var initializeDrilledArea = function initializeDrilledArea(response) {
306
+ var data = response.data.data;
250
307
  setRows(data);
251
308
  setCurrentData(data);
252
309
  initializeMapAreas(data);
253
310
  zoomAllAreas(data);
254
311
  };
255
- const handleAreaClick = area => {
312
+ var handleAreaClick = function handleAreaClick(area) {
256
313
  zoomToArea(area);
257
314
  if (area.has_children) {
258
- setTabs([...tabs, _i18n.default.t('components.wbe_dashboard.custom')]);
315
+ setTabs([].concat((0, _toConsumableArray2.default)(tabs), [_i18n.default.t('components.wbe_dashboard.custom')]));
259
316
  setSelectedTab(_i18n.default.t('components.wbe_dashboard.custom'));
260
- _axios.default.get(fetchUrl(area.id)).then(response => {
317
+ _axios.default.get(fetchUrl(area.id)).then(function (response) {
261
318
  initializeDrilledArea(response);
262
319
  });
263
320
  }
264
321
  };
265
- const initializeComponent = () => {
322
+ var initializeComponent = function initializeComponent() {
266
323
  setCurrentData(data);
267
324
  setRows(data);
268
325
  (0, _Analytics.analyticsTrack)('WBE Status Report', {
@@ -274,23 +331,27 @@ const WbeDashboardPage = () => {
274
331
  initializeMapAreas(data);
275
332
  zoomAllAreas(data);
276
333
  };
277
- (0, _react.useEffect)(() => {
334
+ (0, _react.useEffect)(function () {
278
335
  if (!isFetching && data !== null) {
279
336
  initializeComponent();
280
337
  }
281
338
  }, [isFetching, selectedPathogen, data]);
282
- const pathogenTitle = !isFetchingPathogens && (pathogens === null || pathogens === void 0 ? void 0 : pathogens.find(item => item.toLowerCase() === selectedPathogen.toLowerCase())) || '';
283
- const dropDownTitle = pathogenTitle || _i18n.default.t('components.wbe_dashboard.pathogen_not_found');
284
- 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')} (${pathogenTitle || 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, {
339
+ var pathogenTitle = !isFetchingPathogens && (pathogens === null || pathogens === void 0 ? void 0 : pathogens.find(function (item) {
340
+ return item.toLowerCase() === selectedPathogen.toLowerCase();
341
+ })) || '';
342
+ var dropDownTitle = pathogenTitle || _i18n.default.t('components.wbe_dashboard.pathogen_not_found');
343
+ 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(pathogenTitle || 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, {
285
344
  id: "dropdown-basic-button",
286
345
  className: 'button button--sort',
287
346
  title: dropDownTitle + ' ',
288
347
  variant: "secondary"
289
- }, pathogens.map(pathogen => {
348
+ }, pathogens.map(function (pathogen) {
290
349
  return /*#__PURE__*/_react.default.createElement(_Dropdown.default.Item, {
291
350
  key: pathogen,
292
351
  href: "#",
293
- onClick: () => handleSelectPathogenClick(pathogen),
352
+ onClick: function onClick() {
353
+ return handleSelectPathogenClick(pathogen);
354
+ },
294
355
  style: {
295
356
  textAlign: navContext.locale === 'he' ? 'right' : 'left'
296
357
  }
@@ -333,28 +394,30 @@ const WbeDashboardPage = () => {
333
394
  })))));
334
395
  };
335
396
  exports.WbeDashboardPage = WbeDashboardPage;
336
- const RowName = _styledComponents.default.div.withConfig({
397
+ var RowName = _styledComponents.default.div.withConfig({
337
398
  displayName: "WbeDashboardPage__RowName",
338
399
  componentId: "sc-14f81cv-0"
339
- })(["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;');
340
- const ActionsContainer = _styledComponents.default.div.withConfig({
400
+ })(["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) {
401
+ return p.isRtl ? 'right: 51px;' : 'left: 51px;';
402
+ });
403
+ var ActionsContainer = _styledComponents.default.div.withConfig({
341
404
  displayName: "WbeDashboardPage__ActionsContainer",
342
405
  componentId: "sc-14f81cv-1"
343
406
  })(["display:flex;justify-content:start;align-items:center;"]);
344
- const FirstSection = _styledComponents.default.div.withConfig({
407
+ var FirstSection = _styledComponents.default.div.withConfig({
345
408
  displayName: "WbeDashboardPage__FirstSection",
346
409
  componentId: "sc-14f81cv-2"
347
410
  })(["margin:85px 0 20px 0;"]);
348
- const SecondSection = _styledComponents.default.div.withConfig({
411
+ var SecondSection = _styledComponents.default.div.withConfig({
349
412
  displayName: "WbeDashboardPage__SecondSection",
350
413
  componentId: "sc-14f81cv-3"
351
414
  })(["padding:20px;background:#fcfcfc;border:1px solid #e7e7e7;border-radius:6px;"]);
352
- const MapTableContainer = _styledComponents.default.div.withConfig({
415
+ var MapTableContainer = _styledComponents.default.div.withConfig({
353
416
  displayName: "WbeDashboardPage__MapTableContainer",
354
417
  componentId: "sc-14f81cv-4"
355
418
  })(["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;}"]);
356
- const Content = _styledComponents.default.div.withConfig({
419
+ var Content = _styledComponents.default.div.withConfig({
357
420
  displayName: "WbeDashboardPage__Content",
358
421
  componentId: "sc-14f81cv-5"
359
422
  })(["@media (max-width:576px){padding:20px;}h1{font-weight:bold;}padding:60px 60px;"]);
360
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdFJvdXRlckRvbSIsIl9BbmFseXRpY3MiLCJfU2VhcmNoSW5wdXQiLCJfcmVhY3RGb250YXdlc29tZSIsIl9HcmFwaFdyYXBwZXIiLCJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJfYWN0aW9ucyIsIl9UaG91c2FuZHNUb0siLCJfRHJpbGxEb3duSWNvbiIsIl9CYXNlTGV2ZWwiLCJfcmVhY3REYXRhVGFibGVDb21wb25lbnQiLCJfbnZsU3RhdHVzSGVscGVyIiwiX01hcCIsIl9LYW5kb1RhYmxlIiwiX1RhYnMiLCJfdXNlS2FuZG9GZXRjaCIsIl91c2VRdWVyeVVSTCIsIl9Ecm9wZG93biIsIl9Ecm9wZG93bkJ1dHRvbiIsIl9heGlvcyIsIl9UcnVuY2F0ZSIsIl9FeHBhbmRhYmxlQ29tcG9uZW50IiwiX1NwaW5uZXIiLCJfV2JlU3VtbWFyeUJhciIsIl9FcnJvckJvdW5kYXJ5IiwiX3RoZW1lIiwiX3VzZUthbmRvRmV0Y2gyIiwiX3VybHMiLCJfdXNlVXNlclRpbWVab25lIiwiVEFCTEVfUk9XU19QRVJfUEFHRSIsIk1BUEJPWF9XQkVfREFTSEJPQVJEX1NUWUxFIiwiV2JlRGFzaGJvYXJkUGFnZSIsImdldFdBSWQiLCJxdWVyeSIsImdldCIsImZldGNoVXJsIiwiZmlyc3RQYXJhbSIsInNlbGVjdGVkUGF0aG9nZW4iLCJwYXRob2dlbnNVcmwiLCJ1cmxzIiwid2F0ZXJBdXRob3JpdHlJZCIsIndiZURhc2hib2FyZCIsInBhdGhvZ2VucyIsInVybCIsIkRFRkFVTFRfVEFCUyIsImkxOG4iLCJ0IiwiY29udmVydFRhYk5hbWVUb1BhcmFtIiwidGFiX25hbWUiLCJ1c2VRdWVyeVVSTCIsImdldFBhdGhvZ2VuIiwiY3VycmVudERhdGEiLCJzZXRDdXJyZW50RGF0YSIsInVzZVN0YXRlIiwibWFwQXJlYXMiLCJzZXRNYXBBcmVhcyIsIm1hcFpvb20iLCJzZXRNYXBab29tIiwicm93cyIsInNldFJvd3MiLCJ0YWJzIiwic2V0VGFicyIsInNlbGVjdGVkVGFiIiwic2V0U2VsZWN0ZWRUYWIiLCJzZXRTZWxlY3RlZFBhdGhvZ2VuIiwiZGF0YSIsImlzRmV0Y2hpbmciLCJzZXRGZXRjaGluZyIsInVzZUthbmRvRmV0Y2giLCJpc0ZldGNoaW5nUGF0aG9nZW5zIiwiVXNlS2FuZG9GZXRjaCIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJuYXZDb250ZXh0IiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJnbG9iYWxEYXRhIiwiZ2xvYmFsX2RhdGEiLCJpc1J0bCIsImxvY2FsZSIsImNvbG9yRm9yUm93Iiwicm93IiwicXVhbGl0eSIsInNhbXBsZV9hY3RpdmUiLCJpc0luZmVjdGVkIiwibnZsIiwidXNlckZvcm1hdCIsInVzZVVzZXJTZWxlY3RlZERhdGVGb3JtYXQiLCJjb2x1bW5zIiwiUmVhY3QiLCJ1c2VNZW1vIiwibmFtZSIsInNlbGVjdG9yIiwic29ydGFibGUiLCJjZWxsIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJSb3dOYW1lIiwiY2xhc3NOYW1lIiwib25DbGljayIsImhhbmRsZUFyZWFDbGljayIsImhhc19jaGlsZHJlbiIsIlJlYWN0Q29tcG9uZW50IiwiY2hhcmFjdGVycyIsImluaGVyaXRUZXh0QWxpZ24iLCJudmxfY2hhbmdlIiwic3R5bGUiLCJkaXJlY3Rpb24iLCJjb2xvciIsIm1hcmdpbiIsIkZvbnRBd2Vzb21lSWNvbiIsImljb24iLCJmYUNoZXZyb25VcCIsImZhQ2hldnJvbkRvd24iLCJsYXN0X3VwZGF0ZWQiLCJkYXlGb3JtYXRGcm9tVGltZSIsIkdyYXBoV3JhcHBlciIsImtleSIsImlkIiwid2F0ZXJfYXV0aG9yaXR5X2lkIiwicGF0aG9nZW4iLCJwb3B1bGF0aW9uIiwia0Zvcm1hdHRlciIsInBhcnNlSW50IiwiaW5pdGlhbGl6ZU1hcEFyZWFzIiwiYXJlYXMiLCJtYXBwZWRXaXRoQ29sb3IiLCJtYXAiLCJhIiwid2JlX2Rhc2hib2FyZF9uYW1lIiwic2hvd0NvbG9yT25seUluQm9yZGVycyIsInRoZW1lIiwiY29sb3JTY2hlbWUiLCJuYXR1cmFsIiwibjYwIiwiUjEwMCIsIkcxMDAiLCJ6b29tVG9BcmVhIiwiYXJlYSIsInNoYXBlX2RhdGEiLCJ1bmRlZmluZWQiLCJ6b29tQWxsQXJlYXMiLCJzaGFwZURhdGEiLCJkYXR1bSIsImxldmVsTlZMIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJkaXIiLCJEaXJlY3Rpb24iLCJSVEwiLCJMVFIiLCJmaWx0ZXJSZXN1bHRzQW5kU2V0Um93cyIsInRleHQiLCJyZXN1bHRzIiwiZmlsdGVyIiwiZWwiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiaGFuZGxlT25Sb3dFeHBhbmQiLCJleHBhbmRlZCIsIndhdGVyQXV0aG9yaXR5TmFtZSIsImhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2siLCJhbmFseXRpY3NUcmFjayIsInV0aWxpdHlfbmFtZSIsInB1c2giLCJmZXRjaEZvclRhYlNlbGVjdGlvbiIsInRhYiIsImF4aW9zIiwidGhlbiIsInJlc3BvbnNlIiwicmVzcG9uc2VEYXRhIiwiaGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2siLCJpbml0aWFsaXplRHJpbGxlZEFyZWEiLCJpbml0aWFsaXplQ29tcG9uZW50IiwidXBkYXRlTmF2Q29udGV4dCIsInVzZUVmZmVjdCIsInBhdGhvZ2VuVGl0bGUiLCJmaW5kIiwiaXRlbSIsImRyb3BEb3duVGl0bGUiLCJGcmFnbWVudCIsIkNvbnRlbnQiLCJsZW5ndGgiLCJBY3Rpb25zQ29udGFpbmVyIiwidGl0bGUiLCJ2YXJpYW50IiwiSXRlbSIsImhyZWYiLCJ0ZXh0QWxpZ24iLCJGaXJzdFNlY3Rpb24iLCJXYmVTdW1tYXJ5QmFyIiwiU2Vjb25kU2VjdGlvbiIsIlNlYXJjaElucHV0Iiwib25DaGFuZ2VCZWhhdmlvciIsIlRhYnMiLCJoYW5kbGVPbkNsaWNrIiwiTWFwVGFibGVDb250YWluZXIiLCJTcGlubmVyIiwiTWFwIiwiYXJlYVRvQ2VudGVyQnkiLCJlZGdlcyIsInBvaW50cyIsIm1hcEJveFN0eWxlIiwiS2FuZG9UYWJsZSIsIm9uUm93RXhwYW5kVG9nZ2xlZCIsImV4cGFuZGFibGVSb3dzIiwicGFnaW5hdGlvblBlclBhZ2UiLCJyb3dDb21wb25lbnQiLCJFeHBhbmRlZENvbXBvbmVudCIsImV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHMiLCJkZWZhdWx0U29ydEZpZWxkSWQiLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2Iiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhZ2VzL1diZURhc2hib2FyZC9XYmVEYXNoYm9hcmRQYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyBhbmFseXRpY3NUcmFjayB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICcuL1NlYXJjaElucHV0JztcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9yZWFjdC1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBHcmFwaFdyYXBwZXIgfSBmcm9tICcuL0dyYXBoV3JhcHBlcic7XG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25VcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuaW1wb3J0IHsgdXBkYXRlTmF2Q29udGV4dCB9IGZyb20gJy4uLy4uL3N0b3JlL2NvbnRleHQvYWN0aW9ucyc7XG5pbXBvcnQgeyBrRm9ybWF0dGVyIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1Rob3VzYW5kc1RvSyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBEcmlsbERvd25JY29uIH0gZnJvbSAnLi9EcmlsbERvd25JY29uLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBCYXNlTGV2ZWwgfSBmcm9tICcuL0Jhc2VMZXZlbC5zdmcnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAncmVhY3QtZGF0YS10YWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgbGV2ZWxOVkwgfSBmcm9tICcuLi9Db3ZpZFBhZ2UvY29tcG9uZW50cy9udmxTdGF0dXNIZWxwZXInO1xuaW1wb3J0IHsgTWFwIH0gZnJvbSAnLi4vLi4vV2lkZ2V0cy9NYXAvTWFwJztcbmltcG9ydCB7IEthbmRvVGFibGUgfSBmcm9tICdzcmMvdWkta2l0L0thbmRvVGFibGUvS2FuZG9UYWJsZSc7XG5pbXBvcnQgeyBUYWJzIH0gZnJvbSAnLi9UYWJzJztcbmltcG9ydCB1c2VLYW5kb0ZldGNoIGZyb20gJy4uLy4uL2hvb2tzL3VzZUthbmRvRmV0Y2gnO1xuaW1wb3J0IHVzZVF1ZXJ5VVJMIGZyb20gJy4uLy4uL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMvbWFjcm8nO1xuaW1wb3J0IERyb3Bkb3duIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd24nO1xuaW1wb3J0IERyb3Bkb3duQnV0dG9uIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd25CdXR0b24nO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBUcnVuY2F0ZSBmcm9tICcuLi8uLi91dGlsaXRpZXMvVHJ1bmNhdGUnO1xuaW1wb3J0IHsgRXhwYW5kZWRDb21wb25lbnQgfSBmcm9tICcuL0V4cGFuZGFibGVDb21wb25lbnQnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyJztcbmltcG9ydCB7IFdiZVN1bW1hcnlCYXIgfSBmcm9tICcuL1diZVN1bW1hcnlCYXInO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuaW1wb3J0IFVzZUthbmRvRmV0Y2ggZnJvbSAnc3JjL2hvb2tzL3VzZUthbmRvRmV0Y2gnO1xuaW1wb3J0IHsgdXJscyB9IGZyb20gJ3NyYy91dGlsaXRpZXMvdXJscyc7XG5pbXBvcnQge1xuICBkYXlGb3JtYXRGcm9tVGltZSxcbiAgdXNlVXNlclNlbGVjdGVkRGF0ZUZvcm1hdCxcbn0gZnJvbSAnc3JjL2hvb2tzL3VzZVVzZXJUaW1lWm9uZSc7XG5jb25zdCBUQUJMRV9ST1dTX1BFUl9QQUdFID0gMjU7XG5jb25zdCBNQVBCT1hfV0JFX0RBU0hCT0FSRF9TVFlMRSA9ICdja3p6a2pzaTcwMDVmMTRvOWltMG1jenM5JztcblxuZXhwb3J0IGNvbnN0IFdiZURhc2hib2FyZFBhZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IGdldFdBSWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgnd2F0ZXJfYXV0aG9yaXR5X2lkJyk7XG4gIH07XG4gIGNvbnN0IGZldGNoVXJsID0gKGZpcnN0UGFyYW0pID0+IHtcbiAgICByZXR1cm4gYC9hcGlfdWkvd2JlX2Rhc2hib2FyZC8ke3NlbGVjdGVkUGF0aG9nZW59LyR7Zmlyc3RQYXJhbX0/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7Z2V0V0FJZCgpfWA7XG4gIH07XG4gIGNvbnN0IHBhdGhvZ2Vuc1VybCA9ICgpID0+XG4gICAgdXJscyh7IHdhdGVyQXV0aG9yaXR5SWQ6IGdldFdBSWQoKSB9KS53YmVEYXNoYm9hcmQucGF0aG9nZW5zLnVybDtcbiAgY29uc3QgREVGQVVMVF9UQUJTID0gW1xuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmNpdGllcycpLFxuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm1vbml0b3JlZF9hcmVhcycpLFxuICBdO1xuICBjb25zdCBjb252ZXJ0VGFiTmFtZVRvUGFyYW0gPSAodGFiX25hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmICh0YWJfbmFtZSA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJykpIHtcbiAgICAgIHJldHVybiAnY2l0eSc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRhYl9uYW1lID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKVxuICAgICkge1xuICAgICAgcmV0dXJuICdtb25pdG9yZWQnO1xuICAgIH1cblxuICAgIHJldHVybiAnY2l0eSc7XG4gIH07XG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnlVUkwoKTtcbiAgY29uc3QgZ2V0UGF0aG9nZW4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgncGF0aG9nZW4nKSB8fCAnY292aWQnO1xuICB9O1xuXG4gIGNvbnN0IFtjdXJyZW50RGF0YSwgc2V0Q3VycmVudERhdGFdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbbWFwQXJlYXMsIHNldE1hcEFyZWFzXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFttYXBab29tLCBzZXRNYXBab29tXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IHVzZVN0YXRlPGFueT4oW10pO1xuICBjb25zdCBbdGFicywgc2V0VGFic10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oREVGQVVMVF9UQUJTKTtcbiAgY29uc3QgW3NlbGVjdGVkVGFiLCBzZXRTZWxlY3RlZFRhYl0gPSB1c2VTdGF0ZTxzdHJpbmc+KHRhYnNbMF0pO1xuICBjb25zdCBbc2VsZWN0ZWRQYXRob2dlbiwgc2V0U2VsZWN0ZWRQYXRob2dlbl0gPSB1c2VTdGF0ZTxzdHJpbmc+KFxuICAgIGdldFBhdGhvZ2VuKCksXG4gICk7XG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZywgc2V0RmV0Y2hpbmcgfSA9IHVzZUthbmRvRmV0Y2goXG4gICAgZmV0Y2hVcmwoY29udmVydFRhYk5hbWVUb1BhcmFtKHNlbGVjdGVkVGFiKSksXG4gICk7XG4gIGNvbnN0IHsgZGF0YTogcGF0aG9nZW5zLCBpc0ZldGNoaW5nOiBpc0ZldGNoaW5nUGF0aG9nZW5zIH0gPSBVc2VLYW5kb0ZldGNoKFxuICAgIHBhdGhvZ2Vuc1VybCgpLFxuICApO1xuXG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgbmF2Q29udGV4dCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLm5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dCxcbiAgKTtcbiAgY29uc3QgZ2xvYmFsRGF0YSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLmdsb2JhbF9kYXRhLFxuICApO1xuICBjb25zdCBpc1J0bDogYm9vbGVhbiA9IG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gdHJ1ZSA6IGZhbHNlO1xuICBjb25zdCBjb2xvckZvclJvdyA9IChyb3cpID0+IHtcbiAgICBsZXQgcXVhbGl0eTtcbiAgICBpZiAoIXJvdy5zYW1wbGVfYWN0aXZlKSB7XG4gICAgICBxdWFsaXR5ID0gJ2luYWN0aXZlLXNhbXBsaW5nJztcbiAgICB9IGVsc2UgaWYgKGlzSW5mZWN0ZWQocm93Lm52bCkpIHtcbiAgICAgIHF1YWxpdHkgPSAnaW5mZWN0ZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWFsaXR5ID0gJ2NsZWFuJztcbiAgICB9XG5cbiAgICByZXR1cm4gYHJvd19uYW1lLS0ke3F1YWxpdHl9YDtcbiAgfTtcblxuICBjb25zdCB1c2VyRm9ybWF0ID0gdXNlVXNlclNlbGVjdGVkRGF0ZUZvcm1hdCgpO1xuICBjb25zdCBjb2x1bW5zOiBhbnkgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubmFtZScpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm5hbWUsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG5hbWU6IHN0cmluZzsgbnZsOiBudW1iZXI7IGhhc19jaGlsZHJlbjogYm9vbGVhbiB9KSA9PiAoXG4gICAgICAgICAgPFJvd05hbWUgaXNSdGw9e2lzUnRsfT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHJvd19uYW1lICR7Y29sb3JGb3JSb3cocm93KX1gfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQXJlYUNsaWNrKHJvdyk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZXhwYW5kYWJsZS1pY29uJ30+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICB7cm93Lmhhc19jaGlsZHJlbiAmJiA8RHJpbGxEb3duSWNvbiAvPn1cbiAgICAgICAgICAgICAgICAgIHshcm93Lmhhc19jaGlsZHJlbiAmJiA8QmFzZUxldmVsIC8+fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J25hbWUnfT5cbiAgICAgICAgICAgICAgICA8VHJ1bmNhdGUgY2hhcmFjdGVycz17M30gaW5oZXJpdFRleHRBbGlnbj17dHJ1ZX0+XG4gICAgICAgICAgICAgICAgICB7cm93Lm5hbWV9XG4gICAgICAgICAgICAgICAgPC9UcnVuY2F0ZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9Sb3dOYW1lPlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubnZsX3Njb3JlJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cubnZsLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBudmw6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+e3Jvdy5udmx9PC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wZXJjZW50YWdlX2Zyb21fbGFzdF9zYW1wbGluZycpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm52bF9jaGFuZ2UsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG52bF9jaGFuZ2U6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXJlY3Rpb246ICdsdHInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBjb2xvcjogJyMwMDAwMDAnLCBtYXJnaW46ICcwIDZweCcgfX0+XG4gICAgICAgICAgICAgIHtyb3cubnZsX2NoYW5nZX0lXG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgPEZvbnRBd2Vzb21lSWNvblxuICAgICAgICAgICAgICAgIGljb249e3Jvdy5udmxfY2hhbmdlID4gMCA/IGZhQ2hldnJvblVwIDogZmFDaGV2cm9uRG93bn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmxhc3Rfc2FtcGxlZCcpLFxuICAgICAgICBzZWxlY3RvcjogJ2xhc3Rfc2FtcGxlZCcsXG4gICAgICAgIHNvcnRhYmxlOiAocm93KSA9PiByb3cubGFzdF91cGRhdGVkLFxuICAgICAgICBjZWxsOiAocm93OiB7IGxhc3RfdXBkYXRlZDogc3RyaW5nIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj5cbiAgICAgICAgICAgIHtyb3cubGFzdF91cGRhdGVkID09PSBudWxsXG4gICAgICAgICAgICAgID8gJy0nXG4gICAgICAgICAgICAgIDogZGF5Rm9ybWF0RnJvbVRpbWUocm93Lmxhc3RfdXBkYXRlZCwgdXNlckZvcm1hdCl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC50cmVuZF9ncmFwaCcpLFxuICAgICAgICBzZWxlY3RvcjogJ3RyZW5kX2dyYXBoJyxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgaWQ6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+XG4gICAgICAgICAgICA8R3JhcGhXcmFwcGVyXG4gICAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgICByb3c9e3Jvd31cbiAgICAgICAgICAgICAgd2F0ZXJfYXV0aG9yaXR5X2lkPXtnZXRXQUlkKCl9XG4gICAgICAgICAgICAgIHBhdGhvZ2VuPXtzZWxlY3RlZFBhdGhvZ2VufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBvcHVsYXRpb24nKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5wb3B1bGF0aW9uLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBwb3B1bGF0aW9uOiBzdHJpbmcgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPlxuICAgICAgICAgICAge2tGb3JtYXR0ZXIocGFyc2VJbnQocm93LnBvcHVsYXRpb24pKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbaXNSdGwsIHNlbGVjdGVkUGF0aG9nZW4sIHVzZXJGb3JtYXRdLFxuICApO1xuXG4gIGNvbnN0IGluaXRpYWxpemVNYXBBcmVhcyA9IChhcmVhcykgPT4ge1xuICAgIGNvbnN0IG1hcHBlZFdpdGhDb2xvciA9IGFyZWFzLm1hcCgoYTogYW55KSA9PiB7XG4gICAgICBhLndiZV9kYXNoYm9hcmRfbmFtZSA9IGEubmFtZTtcbiAgICAgIGEuc2hvd0NvbG9yT25seUluQm9yZGVycyA9IHRydWU7XG5cbiAgICAgIGlmICghYS5zYW1wbGVfYWN0aXZlKSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MDtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0luZmVjdGVkKGEubnZsKSkge1xuICAgICAgICBhLmNvbG9yID0gdGhlbWUuY29sb3JTY2hlbWUuZGF0YS5SMTAwO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5kYXRhLkcxMDA7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0TWFwQXJlYXMobWFwcGVkV2l0aENvbG9yKTtcbiAgfTtcblxuICBjb25zdCB6b29tVG9BcmVhID0gKGFyZWEpID0+IHtcbiAgICBhcmVhLnNoYXBlX2RhdGEgIT09IHVuZGVmaW5lZCAmJiBzZXRNYXBab29tKGFyZWEuc2hhcGVfZGF0YSk7XG4gIH07XG5cbiAgY29uc3Qgem9vbUFsbEFyZWFzID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCBzaGFwZURhdGEgPSBkYXRhLm1hcCgoZGF0dW0pID0+IHtcbiAgICAgIHJldHVybiBkYXR1bS5zaGFwZV9kYXRhO1xuICAgIH0pO1xuXG4gICAgc2V0TWFwWm9vbShzaGFwZURhdGEpO1xuICB9O1xuXG4gIGNvbnN0IGlzSW5mZWN0ZWQgPSAobnZsOiBudW1iZXIpID0+IHtcbiAgICBpZiAobGV2ZWxOVkwobnZsKSA9PT0gJ2NsZWFuJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsZXZlbE5WTChudmwpID09PSAnbG93JyB8fFxuICAgICAgbGV2ZWxOVkwobnZsKSA9PT0gJ21lZGl1bScgfHxcbiAgICAgIGxldmVsTlZMKG52bCkgPT09ICdoaWdoJ1xuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9O1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCB3YXRlckF1dGhvcml0eUlkID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT5cbiAgICAgIHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICk7XG5cbiAgY29uc3QgZGlyOiBEaXJlY3Rpb24gPVxuICAgIG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gRGlyZWN0aW9uLlJUTCA6IERpcmVjdGlvbi5MVFI7XG5cbiAgY29uc3QgZmlsdGVyUmVzdWx0c0FuZFNldFJvd3MgPSAodGV4dDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IHJlc3VsdHMgPSBjdXJyZW50RGF0YS5maWx0ZXIoZnVuY3Rpb24gKGVsOiBhbnkpIHtcbiAgICAgIHJldHVybiBlbC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGV4dC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9KTtcblxuICAgIHNldFJvd3MocmVzdWx0cyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT25Sb3dFeHBhbmQgPSAoZXhwYW5kZWQsIHJvdykgPT4ge1xuICAgIGV4cGFuZGVkICYmIHpvb21Ub0FyZWEocm93KTtcbiAgICAhZXhwYW5kZWQgJiYgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5TmFtZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlOYW1lLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2sgPSAocGF0aG9nZW4pID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnV0JFIFN0YXR1cyBSZXBvcnQgLSBQYXRob2dlbiBjaGFuZ2UgY2xpY2tlZCcsIHtcbiAgICAgIHBhdGhvZ2VuOiBwYXRob2dlbixcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIHNldFNlbGVjdGVkUGF0aG9nZW4ocGF0aG9nZW4pO1xuICAgIGhpc3RvcnkucHVzaChcbiAgICAgIGAvd2JlX2Rhc2hib2FyZC9pbmRleD9sb2NhbGU9JHtuYXZDb250ZXh0LmxvY2FsZX0md2F0ZXJfYXV0aG9yaXR5X2lkPSR7d2F0ZXJBdXRob3JpdHlJZH0mcGF0aG9nZW49JHtwYXRob2dlbn1gLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hGb3JUYWJTZWxlY3Rpb24gPSAodGFiKSA9PiB7XG4gICAgc2V0RmV0Y2hpbmcodHJ1ZSk7XG4gICAgYXhpb3MuZ2V0KGZldGNoVXJsKHRhYikpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICBsZXQgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuXG4gICAgICBzZXRGZXRjaGluZyhmYWxzZSk7XG4gICAgICBzZXRUYWJzKERFRkFVTFRfVEFCUyk7XG4gICAgICBzZXRSb3dzKHJlc3BvbnNlRGF0YSk7XG4gICAgICBzZXRDdXJyZW50RGF0YShyZXNwb25zZURhdGEpO1xuICAgICAgaW5pdGlhbGl6ZU1hcEFyZWFzKHJlc3BvbnNlRGF0YSk7XG4gICAgICB6b29tQWxsQXJlYXMocmVzcG9uc2VEYXRhKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUYWJTZWxlY3Rpb25DbGljayA9ICh0YWIpID0+IHtcbiAgICBpZiAoIWlzRmV0Y2hpbmcpIHtcbiAgICAgIHNldFNlbGVjdGVkVGFiKHRhYik7XG5cbiAgICAgIGlmICh0YWIgIT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmN1c3RvbScpKSB7XG4gICAgICAgIHRhYiA9XG4gICAgICAgICAgdGFiID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jaXRpZXMnKVxuICAgICAgICAgICAgPyAnY2l0eSdcbiAgICAgICAgICAgIDogdGFiID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKVxuICAgICAgICAgICAgPyAnbW9uaXRvcmVkJ1xuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICBmZXRjaEZvclRhYlNlbGVjdGlvbih0YWIpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBpbml0aWFsaXplRHJpbGxlZEFyZWEgPSAocmVzcG9uc2UpID0+IHtcbiAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICBzZXRSb3dzKGRhdGEpO1xuICAgIHNldEN1cnJlbnREYXRhKGRhdGEpO1xuICAgIGluaXRpYWxpemVNYXBBcmVhcyhkYXRhKTtcbiAgICB6b29tQWxsQXJlYXMoZGF0YSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQXJlYUNsaWNrID0gKGFyZWEpID0+IHtcbiAgICB6b29tVG9BcmVhKGFyZWEpO1xuXG4gICAgaWYgKGFyZWEuaGFzX2NoaWxkcmVuKSB7XG4gICAgICBzZXRUYWJzKFsuLi50YWJzLCBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jdXN0b20nKV0pO1xuICAgICAgc2V0U2VsZWN0ZWRUYWIoaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY3VzdG9tJykpO1xuXG4gICAgICBheGlvcy5nZXQoZmV0Y2hVcmwoYXJlYS5pZCkpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGluaXRpYWxpemVEcmlsbGVkQXJlYShyZXNwb25zZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNvbXBvbmVudCA9ICgpID0+IHtcbiAgICBzZXRDdXJyZW50RGF0YShkYXRhKTtcbiAgICBzZXRSb3dzKGRhdGEpO1xuICAgIGFuYWx5dGljc1RyYWNrKCdXQkUgU3RhdHVzIFJlcG9ydCcsIHtcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIGRpc3BhdGNoKHVwZGF0ZU5hdkNvbnRleHQoeyBuYW1lOiAnd2JlX2Rhc2hib2FyZCcgfSkpO1xuICAgIGluaXRpYWxpemVNYXBBcmVhcyhkYXRhKTtcbiAgICB6b29tQWxsQXJlYXMoZGF0YSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRmV0Y2hpbmcgJiYgZGF0YSAhPT0gbnVsbCkge1xuICAgICAgaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICAgIH1cbiAgfSwgW2lzRmV0Y2hpbmcsIHNlbGVjdGVkUGF0aG9nZW4sIGRhdGFdKTtcblxuICBjb25zdCBwYXRob2dlblRpdGxlID1cbiAgICAoIWlzRmV0Y2hpbmdQYXRob2dlbnMgJiZcbiAgICAgIHBhdGhvZ2Vucz8uZmluZChcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0udG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWRQYXRob2dlbi50b0xvd2VyQ2FzZSgpLFxuICAgICAgKSkgfHxcbiAgICAnJztcbiAgY29uc3QgZHJvcERvd25UaXRsZSA9XG4gICAgcGF0aG9nZW5UaXRsZSB8fCBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wYXRob2dlbl9ub3RfZm91bmQnKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Q29udGVudD5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDE+XG4gICAgICAgICAgICB7YCR7aTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQudGFibGVfbmFtZScpfSAoJHtcbiAgICAgICAgICAgICAgcGF0aG9nZW5UaXRsZSB8fCBnZXRQYXRob2dlbigpXG4gICAgICAgICAgICB9KWB9XG4gICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7IWlzRmV0Y2hpbmdQYXRob2dlbnMgJiYgcGF0aG9nZW5zLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICA8aDM+e2kxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBhdGhvZ2VuX25vdF9mb3VuZCcpfTwvaDM+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8QWN0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgIHshaXNGZXRjaGluZ1BhdGhvZ2VucyAmJiBwYXRob2dlbnMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgIDxEcm9wZG93bkJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiZHJvcGRvd24tYmFzaWMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydidXR0b24gYnV0dG9uLS1zb3J0J31cbiAgICAgICAgICAgICAgICB0aXRsZT17ZHJvcERvd25UaXRsZSArICcgJ31cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtwYXRob2dlbnMubWFwKChwYXRob2dlbikgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BhdGhvZ2VufVxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RQYXRob2dlbkNsaWNrKHBhdGhvZ2VuKX1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZDb250ZXh0LmxvY2FsZSA9PT0gJ2hlJyA/ICdyaWdodCcgOiAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtwYXRob2dlbn1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5JdGVtPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bkJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9BY3Rpb25zQ29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPEZpcnN0U2VjdGlvbj5cbiAgICAgICAgICA8V2JlU3VtbWFyeUJhclxuICAgICAgICAgICAgcGF0aG9nZW49e3NlbGVjdGVkUGF0aG9nZW59XG4gICAgICAgICAgICB3YXRlckF1dGhvcml0eUlkPXt3YXRlckF1dGhvcml0eUlkfVxuICAgICAgICAgICAgaXNSdGw9e2lzUnRsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRmlyc3RTZWN0aW9uPlxuXG4gICAgICAgIDxTZWNvbmRTZWN0aW9uPlxuICAgICAgICAgIDxTZWFyY2hJbnB1dCBvbkNoYW5nZUJlaGF2aW9yPXtmaWx0ZXJSZXN1bHRzQW5kU2V0Um93c30gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3RhYnMtY29udGFpbmVyJ30+XG4gICAgICAgICAgICA8VGFic1xuICAgICAgICAgICAgICB0YWJzPXt0YWJzfVxuICAgICAgICAgICAgICBzZWxlY3RlZFRhYj17c2VsZWN0ZWRUYWJ9XG4gICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2s9e2hhbmRsZVRhYlNlbGVjdGlvbkNsaWNrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8TWFwVGFibGVDb250YWluZXIgaXNSdGw9e2lzUnRsfT5cbiAgICAgICAgICAgIHtpc0ZldGNoaW5nICYmIDxTcGlubmVyIC8+fVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydtYXAtY29udGFpbmVyJ30+XG4gICAgICAgICAgICAgIHshaXNGZXRjaGluZyAmJiByb3dzICE9PSBudWxsICYmIG1hcFpvb20gIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgICAgICAgICAgPE1hcFxuICAgICAgICAgICAgICAgICAgICBhcmVhcz17bWFwQXJlYXN9XG4gICAgICAgICAgICAgICAgICAgIGFyZWFUb0NlbnRlckJ5PXttYXBab29tfVxuICAgICAgICAgICAgICAgICAgICBlZGdlcz17W119XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cz17W119XG4gICAgICAgICAgICAgICAgICAgIGdsb2JhbF9kYXRhPXtnbG9iYWxEYXRhfVxuICAgICAgICAgICAgICAgICAgICBtYXBCb3hTdHlsZT17TUFQQk9YX1dCRV9EQVNIQk9BUkRfU1RZTEV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgeyFpc0ZldGNoaW5nICYmIHJvd3MgIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICA8S2FuZG9UYWJsZVxuICAgICAgICAgICAgICAgIG9uUm93RXhwYW5kVG9nZ2xlZD17aGFuZGxlT25Sb3dFeHBhbmR9XG4gICAgICAgICAgICAgICAgZGF0YT17cm93c31cbiAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbj17ZGlyfVxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGVSb3dzPXt0cnVlfVxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25QZXJQYWdlPXtUQUJMRV9ST1dTX1BFUl9QQUdFfVxuICAgICAgICAgICAgICAgIHJvd0NvbXBvbmVudD17RXhwYW5kZWRDb21wb25lbnR9XG4gICAgICAgICAgICAgICAgZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wcz17eyBwYXRob2dlbjogc2VsZWN0ZWRQYXRob2dlbiB9fVxuICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0RmllbGRJZD17M31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9NYXBUYWJsZUNvbnRhaW5lcj5cbiAgICAgICAgPC9TZWNvbmRTZWN0aW9uPlxuICAgICAgPC9Db250ZW50PlxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgUm93TmFtZSA9IHN0eWxlZC5kaXY8eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgICB3aWR0aDogMTAwJTtcbiAgICAgIFxuICAgIC5yb3dfbmFtZSB7XG4gICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgdHJhbnNpdGlvbjogLjJzIGVhc2UtaW47ICAgICAgXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMCA0cHg7XG4gICAgICAgIFxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAycHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICYtLWNsZWFuIHtcbiAgICAgICAgIGNvbG9yOiAjMjdhNjNhOyBcbiAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzI3YTYzYTsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0taW5mZWN0ZWQge1xuICAgICAgICAgIGNvbG9yOiAjZTEwMDM2O1xuICAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2UxMDAzNjsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0taW5hY3RpdmUtc2FtcGxpbmcge1xuICAgICAgICAgIGNvbG9yOiAke3RoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwfTtcbiAgICAgICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNjB9OyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAubmFtZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDA7XG4gICAgICAgICAgJHsocCkgPT4gKHAuaXNSdGwgPyAncmlnaHQ6IDUxcHg7JyA6ICdsZWZ0OiA1MXB4OycpfVxuICAgICAgICAgIHRvcDogMTZweDtcbiAgICAgICAgICB3aWR0aDogNy41ZW07XG4gICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogM3B4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBgO1xuXG5jb25zdCBBY3Rpb25zQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEZpcnN0U2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbjogODVweCAwIDIwcHggMDtcbmA7XG5cbmNvbnN0IFNlY29uZFNlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAyMHB4O1xuICBiYWNrZ3JvdW5kOiAjZmNmY2ZjO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTdlN2U3O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG5gO1xuXG5jb25zdCBNYXBUYWJsZUNvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAubWFwLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgLmV2ZW50LXRpbWVyYW5nZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAjbWFwIHtcbiAgICAgIGhlaWdodDogNjl2aDtcbiAgICAgIHdpZHRoOiAzMHZ3O1xuICAgIH1cbiAgfVxuICBbZGF0YS10ZXN0aWQ9J2thbmRvLXRhYmxlJ10ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG4gIFtkYXRhLWNvbHVtbi1pZD0nMSddIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICY6aG92ZXIge1xuICAgICAgLm5hbWUge1xuICAgICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICB3aWR0aDogY2FsYygxMjBweCArIDF2dyk7XG4gICAgICAgIHRyYW5zaXRpb246IDAuMnMgY3ViaWMtYmV6aWVyKDAuNjUsIDAuMDUsIDAuMzYsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zcGlubmVyLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuYDtcblxuY29uc3QgQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH1cblxuICBoMSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICBwYWRkaW5nOiA2MHB4IDYwcHg7XG5gO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsYUFBQSxHQUFB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
423
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdFJvdXRlckRvbSIsIl9BbmFseXRpY3MiLCJfU2VhcmNoSW5wdXQiLCJfcmVhY3RGb250YXdlc29tZSIsIl9HcmFwaFdyYXBwZXIiLCJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJfYWN0aW9ucyIsIl9UaG91c2FuZHNUb0siLCJfRHJpbGxEb3duSWNvbiIsIl9CYXNlTGV2ZWwiLCJfcmVhY3REYXRhVGFibGVDb21wb25lbnQiLCJfbnZsU3RhdHVzSGVscGVyIiwiX01hcCIsIl9LYW5kb1RhYmxlIiwiX1RhYnMiLCJfdXNlS2FuZG9GZXRjaDIiLCJfdXNlUXVlcnlVUkwiLCJfRHJvcGRvd24iLCJfRHJvcGRvd25CdXR0b24iLCJfYXhpb3MiLCJfVHJ1bmNhdGUiLCJfRXhwYW5kYWJsZUNvbXBvbmVudCIsIl9TcGlubmVyIiwiX1diZVN1bW1hcnlCYXIiLCJfRXJyb3JCb3VuZGFyeSIsIl90aGVtZSIsIl91c2VLYW5kb0ZldGNoMyIsIl91cmxzIiwiX3VzZVVzZXJUaW1lWm9uZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiVEFCTEVfUk9XU19QRVJfUEFHRSIsIk1BUEJPWF9XQkVfREFTSEJPQVJEX1NUWUxFIiwiV2JlRGFzaGJvYXJkUGFnZSIsImdldFdBSWQiLCJxdWVyeSIsImZldGNoVXJsIiwiZmlyc3RQYXJhbSIsImNvbmNhdCIsInNlbGVjdGVkUGF0aG9nZW4iLCJwYXRob2dlbnNVcmwiLCJ1cmxzIiwid2F0ZXJBdXRob3JpdHlJZCIsIndiZURhc2hib2FyZCIsInBhdGhvZ2VucyIsInVybCIsIkRFRkFVTFRfVEFCUyIsImkxOG4iLCJ0IiwiY29udmVydFRhYk5hbWVUb1BhcmFtIiwidGFiX25hbWUiLCJ1c2VRdWVyeVVSTCIsImdldFBhdGhvZ2VuIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY3VycmVudERhdGEiLCJzZXRDdXJyZW50RGF0YSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibWFwQXJlYXMiLCJzZXRNYXBBcmVhcyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwibWFwWm9vbSIsInNldE1hcFpvb20iLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInJvd3MiLCJzZXRSb3dzIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwidGFicyIsInNldFRhYnMiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwic2VsZWN0ZWRUYWIiLCJzZXRTZWxlY3RlZFRhYiIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJzZXRTZWxlY3RlZFBhdGhvZ2VuIiwiX3VzZUthbmRvRmV0Y2giLCJ1c2VLYW5kb0ZldGNoIiwiZGF0YSIsImlzRmV0Y2hpbmciLCJzZXRGZXRjaGluZyIsIl9Vc2VLYW5kb0ZldGNoIiwiVXNlS2FuZG9GZXRjaCIsImlzRmV0Y2hpbmdQYXRob2dlbnMiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwibmF2Q29udGV4dCIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJuYXZfY29udGV4dF9kYXRhIiwiZ2xvYmFsRGF0YSIsImdsb2JhbF9kYXRhIiwiaXNSdGwiLCJsb2NhbGUiLCJjb2xvckZvclJvdyIsInJvdyIsInF1YWxpdHkiLCJzYW1wbGVfYWN0aXZlIiwiaXNJbmZlY3RlZCIsIm52bCIsInVzZXJGb3JtYXQiLCJ1c2VVc2VyU2VsZWN0ZWREYXRlRm9ybWF0IiwiY29sdW1ucyIsIlJlYWN0IiwidXNlTWVtbyIsIm5hbWUiLCJzZWxlY3RvciIsInNvcnRhYmxlIiwiY2VsbCIsImNyZWF0ZUVsZW1lbnQiLCJSb3dOYW1lIiwiY2xhc3NOYW1lIiwib25DbGljayIsImhhbmRsZUFyZWFDbGljayIsImhhc19jaGlsZHJlbiIsIlJlYWN0Q29tcG9uZW50IiwiY2hhcmFjdGVycyIsImluaGVyaXRUZXh0QWxpZ24iLCJudmxfY2hhbmdlIiwic3R5bGUiLCJkaXJlY3Rpb24iLCJjb2xvciIsIm1hcmdpbiIsIkZvbnRBd2Vzb21lSWNvbiIsImljb24iLCJmYUNoZXZyb25VcCIsImZhQ2hldnJvbkRvd24iLCJsYXN0X3VwZGF0ZWQiLCJkYXlGb3JtYXRGcm9tVGltZSIsIkdyYXBoV3JhcHBlciIsImlkIiwid2F0ZXJfYXV0aG9yaXR5X2lkIiwicGF0aG9nZW4iLCJwb3B1bGF0aW9uIiwia0Zvcm1hdHRlciIsInBhcnNlSW50IiwiaW5pdGlhbGl6ZU1hcEFyZWFzIiwiYXJlYXMiLCJtYXBwZWRXaXRoQ29sb3IiLCJtYXAiLCJhIiwid2JlX2Rhc2hib2FyZF9uYW1lIiwic2hvd0NvbG9yT25seUluQm9yZGVycyIsInRoZW1lIiwiY29sb3JTY2hlbWUiLCJuYXR1cmFsIiwibjYwIiwiUjEwMCIsIkcxMDAiLCJ6b29tVG9BcmVhIiwiYXJlYSIsInNoYXBlX2RhdGEiLCJ1bmRlZmluZWQiLCJ6b29tQWxsQXJlYXMiLCJzaGFwZURhdGEiLCJkYXR1bSIsImxldmVsTlZMIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJkaXIiLCJEaXJlY3Rpb24iLCJSVEwiLCJMVFIiLCJmaWx0ZXJSZXN1bHRzQW5kU2V0Um93cyIsInRleHQiLCJyZXN1bHRzIiwiZmlsdGVyIiwiZWwiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiaGFuZGxlT25Sb3dFeHBhbmQiLCJleHBhbmRlZCIsIndhdGVyQXV0aG9yaXR5TmFtZSIsImhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2siLCJhbmFseXRpY3NUcmFjayIsInV0aWxpdHlfbmFtZSIsInB1c2giLCJmZXRjaEZvclRhYlNlbGVjdGlvbiIsInRhYiIsImF4aW9zIiwidGhlbiIsInJlc3BvbnNlIiwicmVzcG9uc2VEYXRhIiwiaGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2siLCJpbml0aWFsaXplRHJpbGxlZEFyZWEiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiaW5pdGlhbGl6ZUNvbXBvbmVudCIsInVwZGF0ZU5hdkNvbnRleHQiLCJ1c2VFZmZlY3QiLCJwYXRob2dlblRpdGxlIiwiZmluZCIsIml0ZW0iLCJkcm9wRG93blRpdGxlIiwiRnJhZ21lbnQiLCJDb250ZW50IiwibGVuZ3RoIiwiQWN0aW9uc0NvbnRhaW5lciIsInRpdGxlIiwidmFyaWFudCIsIkl0ZW0iLCJocmVmIiwidGV4dEFsaWduIiwiRmlyc3RTZWN0aW9uIiwiV2JlU3VtbWFyeUJhciIsIlNlY29uZFNlY3Rpb24iLCJTZWFyY2hJbnB1dCIsIm9uQ2hhbmdlQmVoYXZpb3IiLCJUYWJzIiwiaGFuZGxlT25DbGljayIsIk1hcFRhYmxlQ29udGFpbmVyIiwiU3Bpbm5lciIsIk1hcCIsImFyZWFUb0NlbnRlckJ5IiwiZWRnZXMiLCJwb2ludHMiLCJtYXBCb3hTdHlsZSIsIkthbmRvVGFibGUiLCJvblJvd0V4cGFuZFRvZ2dsZWQiLCJleHBhbmRhYmxlUm93cyIsInBhZ2luYXRpb25QZXJQYWdlIiwicm93Q29tcG9uZW50IiwiRXhwYW5kZWRDb21wb25lbnQiLCJleHBhbmRhYmxlUm93c0NvbXBvbmVudFByb3BzIiwiZGVmYXVsdFNvcnRGaWVsZElkIiwiZXhwb3J0cyIsInN0eWxlZCIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwicCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9XYmVEYXNoYm9hcmQvV2JlRGFzaGJvYXJkUGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgYW5hbHl0aWNzVHJhY2sgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQW5hbHl0aWNzJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnLi9TZWFyY2hJbnB1dCc7XG5pbXBvcnQgeyBGb250QXdlc29tZUljb24gfSBmcm9tICdAZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgR3JhcGhXcmFwcGVyIH0gZnJvbSAnLi9HcmFwaFdyYXBwZXInO1xuaW1wb3J0IHsgZmFDaGV2cm9uRG93biwgZmFDaGV2cm9uVXAgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgYXBwUmVkdWNlciB9IGZyb20gJy4uLy4uL3N0b3JlL3Jvb3RSZWR1Y2VyJztcbmltcG9ydCB7IHVwZGF0ZU5hdkNvbnRleHQgfSBmcm9tICcuLi8uLi9zdG9yZS9jb250ZXh0L2FjdGlvbnMnO1xuaW1wb3J0IHsga0Zvcm1hdHRlciB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9UaG91c2FuZHNUb0snO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgRHJpbGxEb3duSWNvbiB9IGZyb20gJy4vRHJpbGxEb3duSWNvbi5zdmcnO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgQmFzZUxldmVsIH0gZnJvbSAnLi9CYXNlTGV2ZWwuc3ZnJztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ3JlYWN0LWRhdGEtdGFibGUtY29tcG9uZW50JztcbmltcG9ydCB7IGxldmVsTlZMIH0gZnJvbSAnLi4vQ292aWRQYWdlL2NvbXBvbmVudHMvbnZsU3RhdHVzSGVscGVyJztcbmltcG9ydCB7IE1hcCB9IGZyb20gJy4uLy4uL1dpZGdldHMvTWFwL01hcCc7XG5pbXBvcnQgeyBLYW5kb1RhYmxlIH0gZnJvbSAnc3JjL3VpLWtpdC9LYW5kb1RhYmxlL0thbmRvVGFibGUnO1xuaW1wb3J0IHsgVGFicyB9IGZyb20gJy4vVGFicyc7XG5pbXBvcnQgdXNlS2FuZG9GZXRjaCBmcm9tICcuLi8uLi9ob29rcy91c2VLYW5kb0ZldGNoJztcbmltcG9ydCB1c2VRdWVyeVVSTCBmcm9tICcuLi8uLi9ob29rcy91c2VRdWVyeVVSTCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzL21hY3JvJztcbmltcG9ydCBEcm9wZG93biBmcm9tICdyZWFjdC1ib290c3RyYXAvY2pzL0Ryb3Bkb3duJztcbmltcG9ydCBEcm9wZG93bkJ1dHRvbiBmcm9tICdyZWFjdC1ib290c3RyYXAvY2pzL0Ryb3Bkb3duQnV0dG9uJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgVHJ1bmNhdGUgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1RydW5jYXRlJztcbmltcG9ydCB7IEV4cGFuZGVkQ29tcG9uZW50IH0gZnJvbSAnLi9FeHBhbmRhYmxlQ29tcG9uZW50JztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1NwaW5uZXIvU3Bpbm5lcic7XG5pbXBvcnQgeyBXYmVTdW1tYXJ5QmFyIH0gZnJvbSAnLi9XYmVTdW1tYXJ5QmFyJztcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gJy4uLy4uL3V0aWxpdGllcy9FcnJvckJvdW5kYXJ5JztcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3RoZW1lL3RoZW1lJztcbmltcG9ydCBVc2VLYW5kb0ZldGNoIGZyb20gJ3NyYy9ob29rcy91c2VLYW5kb0ZldGNoJztcbmltcG9ydCB7IHVybHMgfSBmcm9tICdzcmMvdXRpbGl0aWVzL3VybHMnO1xuaW1wb3J0IHtcbiAgZGF5Rm9ybWF0RnJvbVRpbWUsXG4gIHVzZVVzZXJTZWxlY3RlZERhdGVGb3JtYXQsXG59IGZyb20gJ3NyYy9ob29rcy91c2VVc2VyVGltZVpvbmUnO1xuY29uc3QgVEFCTEVfUk9XU19QRVJfUEFHRSA9IDI1O1xuY29uc3QgTUFQQk9YX1dCRV9EQVNIQk9BUkRfU1RZTEUgPSAnY2t6emtqc2k3MDA1ZjE0bzlpbTBtY3pzOSc7XG5cbmV4cG9ydCBjb25zdCBXYmVEYXNoYm9hcmRQYWdlID0gKCkgPT4ge1xuICBjb25zdCBnZXRXQUlkID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3dhdGVyX2F1dGhvcml0eV9pZCcpO1xuICB9O1xuICBjb25zdCBmZXRjaFVybCA9IChmaXJzdFBhcmFtKSA9PiB7XG4gICAgcmV0dXJuIGAvYXBpX3VpL3diZV9kYXNoYm9hcmQvJHtzZWxlY3RlZFBhdGhvZ2VufS8ke2ZpcnN0UGFyYW19P3dhdGVyX2F1dGhvcml0eV9pZD0ke2dldFdBSWQoKX1gO1xuICB9O1xuICBjb25zdCBwYXRob2dlbnNVcmwgPSAoKSA9PlxuICAgIHVybHMoeyB3YXRlckF1dGhvcml0eUlkOiBnZXRXQUlkKCkgfSkud2JlRGFzaGJvYXJkLnBhdGhvZ2Vucy51cmw7XG4gIGNvbnN0IERFRkFVTFRfVEFCUyA9IFtcbiAgICBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jaXRpZXMnKSxcbiAgICBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKSxcbiAgXTtcbiAgY29uc3QgY29udmVydFRhYk5hbWVUb1BhcmFtID0gKHRhYl9uYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAodGFiX25hbWUgPT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmNpdGllcycpKSB7XG4gICAgICByZXR1cm4gJ2NpdHknO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0YWJfbmFtZSA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubW9uaXRvcmVkX2FyZWFzJylcbiAgICApIHtcbiAgICAgIHJldHVybiAnbW9uaXRvcmVkJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ2NpdHknO1xuICB9O1xuICBjb25zdCBxdWVyeSA9IHVzZVF1ZXJ5VVJMKCk7XG4gIGNvbnN0IGdldFBhdGhvZ2VuID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3BhdGhvZ2VuJykgfHwgJ2NvdmlkJztcbiAgfTtcblxuICBjb25zdCBbY3VycmVudERhdGEsIHNldEN1cnJlbnREYXRhXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW21hcEFyZWFzLCBzZXRNYXBBcmVhc10gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbbWFwWm9vbSwgc2V0TWFwWm9vbV0gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbcm93cywgc2V0Um93c10gPSB1c2VTdGF0ZTxhbnk+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/bG9jYWxlPSR7bmF2Q29udGV4dC5sb2NhbGV9JndhdGVyX2F1dGhvcml0eV9pZD0ke3dhdGVyQXV0aG9yaXR5SWR9JnBhdGhvZ2VuPSR7cGF0aG9nZW59YCxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRm9yVGFiU2VsZWN0aW9uID0gKHRhYikgPT4ge1xuICAgIHNldEZldGNoaW5nKHRydWUpO1xuICAgIGF4aW9zLmdldChmZXRjaFVybCh0YWIpKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgbGV0IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcblxuICAgICAgc2V0RmV0Y2hpbmcoZmFsc2UpO1xuICAgICAgc2V0VGFicyhERUZBVUxUX1RBQlMpO1xuICAgICAgc2V0Um93cyhyZXNwb25zZURhdGEpO1xuICAgICAgc2V0Q3VycmVudERhdGEocmVzcG9uc2VEYXRhKTtcbiAgICAgIGluaXRpYWxpemVNYXBBcmVhcyhyZXNwb25zZURhdGEpO1xuICAgICAgem9vbUFsbEFyZWFzKHJlc3BvbnNlRGF0YSk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2sgPSAodGFiKSA9PiB7XG4gICAgaWYgKCFpc0ZldGNoaW5nKSB7XG4gICAgICBzZXRTZWxlY3RlZFRhYih0YWIpO1xuXG4gICAgICBpZiAodGFiICE9PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jdXN0b20nKSkge1xuICAgICAgICB0YWIgPVxuICAgICAgICAgIHRhYiA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJylcbiAgICAgICAgICAgID8gJ2NpdHknXG4gICAgICAgICAgICA6IHRhYiA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubW9uaXRvcmVkX2FyZWFzJylcbiAgICAgICAgICAgID8gJ21vbml0b3JlZCdcbiAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgZmV0Y2hGb3JUYWJTZWxlY3Rpb24odGFiKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaW5pdGlhbGl6ZURyaWxsZWRBcmVhID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgbGV0IGRhdGEgPSByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgc2V0Um93cyhkYXRhKTtcbiAgICBzZXRDdXJyZW50RGF0YShkYXRhKTtcbiAgICBpbml0aWFsaXplTWFwQXJlYXMoZGF0YSk7XG4gICAgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFyZWFDbGljayA9IChhcmVhKSA9PiB7XG4gICAgem9vbVRvQXJlYShhcmVhKTtcblxuICAgIGlmIChhcmVhLmhhc19jaGlsZHJlbikge1xuICAgICAgc2V0VGFicyhbLi4udGFicywgaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY3VzdG9tJyldKTtcbiAgICAgIHNldFNlbGVjdGVkVGFiKGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmN1c3RvbScpKTtcblxuICAgICAgYXhpb3MuZ2V0KGZldGNoVXJsKGFyZWEuaWQpKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpbml0aWFsaXplRHJpbGxlZEFyZWEocmVzcG9uc2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGluaXRpYWxpemVDb21wb25lbnQgPSAoKSA9PiB7XG4gICAgc2V0Q3VycmVudERhdGEoZGF0YSk7XG4gICAgc2V0Um93cyhkYXRhKTtcbiAgICBhbmFseXRpY3NUcmFjaygnV0JFIFN0YXR1cyBSZXBvcnQnLCB7XG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICBkaXNwYXRjaCh1cGRhdGVOYXZDb250ZXh0KHsgbmFtZTogJ3diZV9kYXNoYm9hcmQnIH0pKTtcbiAgICBpbml0aWFsaXplTWFwQXJlYXMoZGF0YSk7XG4gICAgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0ZldGNoaW5nICYmIGRhdGEgIT09IG51bGwpIHtcbiAgICAgIGluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgICB9XG4gIH0sIFtpc0ZldGNoaW5nLCBzZWxlY3RlZFBhdGhvZ2VuLCBkYXRhXSk7XG5cbiAgY29uc3QgcGF0aG9nZW5UaXRsZSA9XG4gICAgKCFpc0ZldGNoaW5nUGF0aG9nZW5zICYmXG4gICAgICBwYXRob2dlbnM/LmZpbmQoXG4gICAgICAgIChpdGVtKSA9PiBpdGVtLnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkUGF0aG9nZW4udG9Mb3dlckNhc2UoKSxcbiAgICAgICkpIHx8XG4gICAgJyc7XG4gIGNvbnN0IGRyb3BEb3duVGl0bGUgPVxuICAgIHBhdGhvZ2VuVGl0bGUgfHwgaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQucGF0aG9nZW5fbm90X2ZvdW5kJyk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPENvbnRlbnQ+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGgxPlxuICAgICAgICAgICAge2Ake2kxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnRhYmxlX25hbWUnKX0gKCR7XG4gICAgICAgICAgICAgIHBhdGhvZ2VuVGl0bGUgfHwgZ2V0UGF0aG9nZW4oKVxuICAgICAgICAgICAgfSlgfVxuICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgeyFpc0ZldGNoaW5nUGF0aG9nZW5zICYmIHBhdGhvZ2Vucy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgPGgzPntpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wYXRob2dlbl9ub3RfZm91bmQnKX08L2gzPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEFjdGlvbnNDb250YWluZXI+XG4gICAgICAgICAgICB7IWlzRmV0Y2hpbmdQYXRob2dlbnMgJiYgcGF0aG9nZW5zLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICAgICAgICA8RHJvcGRvd25CdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImRyb3Bkb3duLWJhc2ljLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnYnV0dG9uIGJ1dHRvbi0tc29ydCd9XG4gICAgICAgICAgICAgICAgdGl0bGU9e2Ryb3BEb3duVGl0bGUgKyAnICd9XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7cGF0aG9nZW5zLm1hcCgocGF0aG9nZW4pID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bi5JdGVtXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtwYXRob2dlbn1cbiAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0UGF0aG9nZW5DbGljayhwYXRob2dlbil9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2Q29udGV4dC5sb2NhbGUgPT09ICdoZScgPyAncmlnaHQnIDogJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7cGF0aG9nZW59XG4gICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd24uSXRlbT5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25CdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQWN0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxGaXJzdFNlY3Rpb24+XG4gICAgICAgICAgPFdiZVN1bW1hcnlCYXJcbiAgICAgICAgICAgIHBhdGhvZ2VuPXtzZWxlY3RlZFBhdGhvZ2VufVxuICAgICAgICAgICAgd2F0ZXJBdXRob3JpdHlJZD17d2F0ZXJBdXRob3JpdHlJZH1cbiAgICAgICAgICAgIGlzUnRsPXtpc1J0bH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0ZpcnN0U2VjdGlvbj5cblxuICAgICAgICA8U2Vjb25kU2VjdGlvbj5cbiAgICAgICAgICA8U2VhcmNoSW5wdXQgb25DaGFuZ2VCZWhhdmlvcj17ZmlsdGVyUmVzdWx0c0FuZFNldFJvd3N9IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyd0YWJzLWNvbnRhaW5lcid9PlxuICAgICAgICAgICAgPFRhYnNcbiAgICAgICAgICAgICAgdGFicz17dGFic31cbiAgICAgICAgICAgICAgc2VsZWN0ZWRUYWI9e3NlbGVjdGVkVGFifVxuICAgICAgICAgICAgICBoYW5kbGVPbkNsaWNrPXtoYW5kbGVUYWJTZWxlY3Rpb25DbGlja31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPE1hcFRhYmxlQ29udGFpbmVyIGlzUnRsPXtpc1J0bH0+XG4gICAgICAgICAgICB7aXNGZXRjaGluZyAmJiA8U3Bpbm5lciAvPn1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnbWFwLWNvbnRhaW5lcid9PlxuICAgICAgICAgICAgICB7IWlzRmV0Y2hpbmcgJiYgcm93cyAhPT0gbnVsbCAmJiBtYXBab29tICE9PSBudWxsICYmIChcbiAgICAgICAgICAgICAgICA8RXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICAgICAgICAgIDxNYXBcbiAgICAgICAgICAgICAgICAgICAgYXJlYXM9e21hcEFyZWFzfVxuICAgICAgICAgICAgICAgICAgICBhcmVhVG9DZW50ZXJCeT17bWFwWm9vbX1cbiAgICAgICAgICAgICAgICAgICAgZWRnZXM9e1tdfVxuICAgICAgICAgICAgICAgICAgICBwb2ludHM9e1tdfVxuICAgICAgICAgICAgICAgICAgICBnbG9iYWxfZGF0YT17Z2xvYmFsRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgbWFwQm94U3R5bGU9e01BUEJPWF9XQkVfREFTSEJPQVJEX1NUWUxFfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHshaXNGZXRjaGluZyAmJiByb3dzICE9PSBudWxsICYmIChcbiAgICAgICAgICAgICAgPEthbmRvVGFibGVcbiAgICAgICAgICAgICAgICBvblJvd0V4cGFuZFRvZ2dsZWQ9e2hhbmRsZU9uUm93RXhwYW5kfVxuICAgICAgICAgICAgICAgIGRhdGE9e3Jvd3N9XG4gICAgICAgICAgICAgICAgY29sdW1ucz17Y29sdW1uc31cbiAgICAgICAgICAgICAgICBkaXJlY3Rpb249e2Rpcn1cbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlUm93cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uUGVyUGFnZT17VEFCTEVfUk9XU19QRVJfUEFHRX1cbiAgICAgICAgICAgICAgICByb3dDb21wb25lbnQ9e0V4cGFuZGVkQ29tcG9uZW50fVxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHM9e3sgcGF0aG9nZW46IHNlbGVjdGVkUGF0aG9nZW4gfX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0U29ydEZpZWxkSWQ9ezN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvTWFwVGFibGVDb250YWluZXI+XG4gICAgICAgIDwvU2Vjb25kU2VjdGlvbj5cbiAgICAgIDwvQ29udGVudD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IFJvd05hbWUgPSBzdHlsZWQuZGl2PHsgaXNSdGw6IGJvb2xlYW4gfT5gXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgICBcbiAgICAucm93X25hbWUge1xuICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIHRyYW5zaXRpb246IC4ycyBlYXNlLWluOyAgICAgIFxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgICAgICBcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogMnB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAgIFxuICAgICAgICAmLS1jbGVhbiB7XG4gICAgICAgICBjb2xvcjogIzI3YTYzYTsgXG4gICAgICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyN2E2M2E7ICAgICAgICBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICYtLWluZmVjdGVkIHtcbiAgICAgICAgICBjb2xvcjogI2UxMDAzNjtcbiAgICAgICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlMTAwMzY7ICAgICAgICBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICYtLWluYWN0aXZlLXNhbXBsaW5nIHtcbiAgICAgICAgICBjb2xvcjogJHt0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MH07XG4gICAgICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwfTsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLm5hbWUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBmb250LXdlaWdodDogMTAwO1xuICAgICAgICAgICR7KHApID0+IChwLmlzUnRsID8gJ3JpZ2h0OiA1MXB4OycgOiAnbGVmdDogNTFweDsnKX1cbiAgICAgICAgICB0b3A6IDE2cHg7XG4gICAgICAgICAgd2lkdGg6IDcuNWVtO1xuICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDNweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgYDtcblxuY29uc3QgQWN0aW9uc0NvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBGaXJzdFNlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBtYXJnaW46IDg1cHggMCAyMHB4IDA7XG5gO1xuXG5jb25zdCBTZWNvbmRTZWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogMjBweDtcbiAgYmFja2dyb3VuZDogI2ZjZmNmYztcbiAgYm9yZGVyOiAxcHggc29saWQgI2U3ZTdlNztcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuYDtcblxuY29uc3QgTWFwVGFibGVDb250YWluZXIgPSBzdHlsZWQuZGl2PHsgaXNSdGw6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgLm1hcC1jb250YWluZXIge1xuICAgIHdpZHRoOiB1bnNldCAhaW1wb3J0YW50O1xuICAgIC5ldmVudC10aW1lcmFuZ2Uge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgI21hcCB7XG4gICAgICBoZWlnaHQ6IDY5dmg7XG4gICAgICB3aWR0aDogMzB2dztcbiAgICB9XG4gIH1cbiAgW2RhdGEtdGVzdGlkPSdrYW5kby10YWJsZSddIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuICBbZGF0YS1jb2x1bW4taWQ9JzEnXSB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAmOmhvdmVyIHtcbiAgICAgIC5uYW1lIHtcbiAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTIwcHggKyAxdncpO1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjJzIGN1YmljLWJlemllcigwLjY1LCAwLjA1LCAwLjM2LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc3Bpbm5lci1jb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbmA7XG5cbmNvbnN0IENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICB9XG5cbiAgaDEge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgcGFkZGluZzogNjBweCA2MHB4O1xuYDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsYUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsa0JBQUEsR0FBQVQsT0FBQTtBQUVBLElBQUFVLFFBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLGFBQUEsR0FBQVgsT0FBQTtBQUEwRCxJQUFBWSxjQUFBLEdBQUFaLE9BQUE7QUFBQSxJQUFBYSxVQUFBLEdBQUFiLE9BQUE7QUFHMUQsSUFBQWMsd0JBQUEsR0FBQWQsT0FBQTtBQUNBLElBQUFlLGdCQUFBLEdBQUFmLE9BQUE7QUFDQSxJQUFBZ0IsSUFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQixXQUFBLEdBQUFqQixPQUFBO0FBQ0EsSUFBQWtCLEtBQUEsR0FBQWxCLE9BQUE7QUFDQSxJQUFBbUIsZUFBQSxHQUFBakIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFvQixZQUFBLEdBQUFsQixzQkFBQSxD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