tango-app-ui-shared 3.5.1-task.2 → 3.5.1-task.4

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 (396) hide show
  1. package/esm2022/lib/guards/auth.guard.mjs +26 -0
  2. package/esm2022/lib/guards/lead.guard.mjs +16 -0
  3. package/esm2022/lib/guards/stores.guard.mjs +16 -0
  4. package/esm2022/lib/guards/tickets.guard.mjs +16 -0
  5. package/esm2022/lib/i18n/index.mjs +3 -0
  6. package/esm2022/lib/i18n/translation.module.mjs +17 -0
  7. package/esm2022/lib/i18n/translation.service.mjs +53 -0
  8. package/esm2022/lib/i18n/vocabs/ch.mjs +106 -0
  9. package/esm2022/lib/i18n/vocabs/de.mjs +106 -0
  10. package/esm2022/lib/i18n/vocabs/en.mjs +106 -0
  11. package/esm2022/lib/i18n/vocabs/es.mjs +106 -0
  12. package/esm2022/lib/i18n/vocabs/fr.mjs +106 -0
  13. package/esm2022/lib/i18n/vocabs/jp.mjs +106 -0
  14. package/esm2022/lib/interceptors/http-auth-interceptor.mjs +201 -0
  15. package/esm2022/lib/interfaces/global-state.mjs +2 -0
  16. package/esm2022/lib/modules/common/common-shared.module.mjs +31 -0
  17. package/esm2022/lib/modules/common/custom-select/custom-select.component.mjs +155 -0
  18. package/esm2022/lib/modules/common/filters/filters.component.mjs +179 -0
  19. package/esm2022/lib/modules/common/pagination/pagination.component.mjs +49 -0
  20. package/esm2022/lib/modules/errors/error403/error403.component.mjs +33 -0
  21. package/esm2022/lib/modules/errors/error404/error404.component.mjs +44 -0
  22. package/esm2022/lib/modules/errors/error500/error500.component.mjs +45 -0
  23. package/esm2022/lib/modules/errors/errors-routing.module.mjs +48 -0
  24. package/esm2022/lib/modules/errors/errors.component.mjs +39 -0
  25. package/esm2022/lib/modules/errors/errors.module.mjs +37 -0
  26. package/esm2022/lib/modules/errors/invalid-ip/invalid-ip.component.mjs +44 -0
  27. package/esm2022/lib/modules/intro/contact-support/contact-support.component.mjs +19 -0
  28. package/esm2022/lib/modules/intro/intro-routing.module.mjs +24 -0
  29. package/esm2022/lib/modules/intro/intro.module.mjs +32 -0
  30. package/esm2022/lib/modules/intro/lead-intro/lead-intro.component.mjs +110 -0
  31. package/esm2022/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.mjs +31 -0
  32. package/esm2022/lib/modules/layout/content/content.component.mjs +107 -0
  33. package/esm2022/lib/modules/layout/footer/footer.component.mjs +17 -0
  34. package/esm2022/lib/modules/layout/header/header-menu/header-menu.component.mjs +41 -0
  35. package/esm2022/lib/modules/layout/header/header.component.mjs +100 -0
  36. package/esm2022/lib/modules/layout/header/navbar/navbar.component.mjs +256 -0
  37. package/esm2022/lib/modules/layout/header/notifications-inner/notifications-inner.component.mjs +79 -0
  38. package/esm2022/lib/modules/layout/header/page-title/page-title.component.mjs +56 -0
  39. package/esm2022/lib/modules/layout/keenicon/icons.json +1 -0
  40. package/esm2022/lib/modules/layout/keenicon/keenicon.component.mjs +37 -0
  41. package/esm2022/lib/modules/layout/layout/layout.component.mjs +314 -0
  42. package/esm2022/lib/modules/layout/layout.module.mjs +195 -0
  43. package/esm2022/lib/modules/layout/scripts-init/scripts-init.component.mjs +74 -0
  44. package/esm2022/lib/modules/layout/scroll-top/scroll-top.component.mjs +74 -0
  45. package/esm2022/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.mjs +118 -0
  46. package/esm2022/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.mjs +45 -0
  47. package/esm2022/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.mjs +111 -0
  48. package/esm2022/lib/modules/layout/sidebar/sidebar.component.mjs +134 -0
  49. package/esm2022/lib/modules/layout/toolbar/accounting/accounting.component.mjs +16 -0
  50. package/esm2022/lib/modules/layout/toolbar/classic/classic.component.mjs +331 -0
  51. package/esm2022/lib/modules/layout/toolbar/client-settings/client-settings.component.mjs +88 -0
  52. package/esm2022/lib/modules/layout/toolbar/date-single-select/date-single-select.component.mjs +201 -0
  53. package/esm2022/lib/modules/layout/toolbar/datepicker/datepicker.component.mjs +150 -0
  54. package/esm2022/lib/modules/layout/toolbar/extended/extended.component.mjs +15 -0
  55. package/esm2022/lib/modules/layout/toolbar/metrics-header/metrics-header.component.mjs +1321 -0
  56. package/esm2022/lib/modules/layout/toolbar/reports/reports.component.mjs +18 -0
  57. package/esm2022/lib/modules/layout/toolbar/saas/saas.component.mjs +18 -0
  58. package/esm2022/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.mjs +11 -0
  59. package/esm2022/lib/modules/layout/toolbar/single-store/single-store.component.mjs +176 -0
  60. package/esm2022/lib/modules/layout/toolbar/single-storedate/single-storedate.component.mjs +166 -0
  61. package/esm2022/lib/modules/layout/toolbar/storesingle/storesingle.component.mjs +105 -0
  62. package/esm2022/lib/modules/layout/toolbar/toolbar.component.mjs +314 -0
  63. package/esm2022/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.mjs +1060 -0
  64. package/esm2022/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.mjs +795 -0
  65. package/esm2022/lib/modules/layout/toolbar/trax-header/trax-header.component.mjs +880 -0
  66. package/esm2022/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.mjs +729 -0
  67. package/esm2022/lib/modules/notification/conformation/conformation.component.mjs +22 -0
  68. package/esm2022/lib/modules/notification/notification/notification.component.mjs +317 -0
  69. package/esm2022/lib/modules/notification/notification-routing.module.mjs +28 -0
  70. package/esm2022/lib/modules/notification/notification.module.mjs +32 -0
  71. package/esm2022/lib/pipes/customDate.pipe.mjs +22 -0
  72. package/esm2022/lib/routes/route-wraper-modules/edge-wrapper.module.mjs +18 -0
  73. package/esm2022/lib/routes/route-wraper-modules/manage-wrapper.module.mjs +18 -0
  74. package/esm2022/lib/routes/route-wraper-modules/profile-wrapper.module.mjs +18 -0
  75. package/esm2022/lib/routes/route-wraper-modules/store-wrapper.module.mjs +18 -0
  76. package/esm2022/lib/routes/route-wraper-modules/ticket-wrapper.module.mjs +18 -0
  77. package/esm2022/lib/routes/routing.mjs +53 -0
  78. package/esm2022/lib/services/auth.service.mjs +154 -0
  79. package/esm2022/lib/services/notification.service.mjs +74 -0
  80. package/esm2022/lib/services/toast.service.mjs +83 -0
  81. package/esm2022/public-api.mjs +56 -0
  82. package/esm2022/tango-app-ui-shared.mjs +5 -0
  83. package/fesm2022/tango-app-ui-shared-edge-wrapper.module-CFDk0tvS.mjs +21 -0
  84. package/fesm2022/tango-app-ui-shared-edge-wrapper.module-CFDk0tvS.mjs.map +1 -0
  85. package/fesm2022/tango-app-ui-shared-intro.module-DYh4ZRha.mjs +188 -0
  86. package/fesm2022/tango-app-ui-shared-intro.module-DYh4ZRha.mjs.map +1 -0
  87. package/fesm2022/tango-app-ui-shared-manage-wrapper.module-BHyh4Njw.mjs +21 -0
  88. package/fesm2022/tango-app-ui-shared-manage-wrapper.module-BHyh4Njw.mjs.map +1 -0
  89. package/fesm2022/tango-app-ui-shared-notification.module-C5ZmCf8U.mjs +400 -0
  90. package/fesm2022/tango-app-ui-shared-notification.module-C5ZmCf8U.mjs.map +1 -0
  91. package/fesm2022/tango-app-ui-shared-profile-wrapper.module-BNC1AGOk.mjs +21 -0
  92. package/fesm2022/tango-app-ui-shared-profile-wrapper.module-BNC1AGOk.mjs.map +1 -0
  93. package/fesm2022/tango-app-ui-shared-store-wrapper.module-DdaCYHdv.mjs +21 -0
  94. package/fesm2022/tango-app-ui-shared-store-wrapper.module-DdaCYHdv.mjs.map +1 -0
  95. package/fesm2022/tango-app-ui-shared-ticket-wrapper.module-r32uKkDO.mjs +21 -0
  96. package/fesm2022/tango-app-ui-shared-ticket-wrapper.module-r32uKkDO.mjs.map +1 -0
  97. package/fesm2022/tango-app-ui-shared.mjs +11121 -0
  98. package/fesm2022/tango-app-ui-shared.mjs.map +1 -0
  99. package/index.d.ts +5 -0
  100. package/lib/guards/auth.guard.d.ts +10 -0
  101. package/lib/guards/lead.guard.d.ts +2 -0
  102. package/lib/guards/stores.guard.d.ts +2 -0
  103. package/lib/guards/tickets.guard.d.ts +2 -0
  104. package/{src/lib/i18n/index.ts → lib/i18n/index.d.ts} +2 -2
  105. package/lib/i18n/translation.module.d.ts +8 -0
  106. package/lib/i18n/translation.service.d.ts +19 -0
  107. package/lib/i18n/vocabs/ch.d.ts +104 -0
  108. package/lib/i18n/vocabs/de.d.ts +104 -0
  109. package/lib/i18n/vocabs/en.d.ts +104 -0
  110. package/lib/i18n/vocabs/es.d.ts +104 -0
  111. package/lib/i18n/vocabs/fr.d.ts +104 -0
  112. package/lib/i18n/vocabs/jp.d.ts +104 -0
  113. package/lib/interceptors/http-auth-interceptor.d.ts +20 -0
  114. package/lib/interfaces/global-state.d.ts +5 -0
  115. package/lib/modules/common/common-shared.module.d.ts +13 -0
  116. package/lib/modules/common/custom-select/custom-select.component.d.ts +33 -0
  117. package/lib/modules/common/filters/filters.component.d.ts +38 -0
  118. package/lib/modules/common/pagination/pagination.component.d.ts +18 -0
  119. package/lib/modules/errors/error403/error403.component.d.ts +14 -0
  120. package/lib/modules/errors/error404/error404.component.d.ts +15 -0
  121. package/lib/modules/errors/error500/error500.component.d.ts +15 -0
  122. package/lib/modules/errors/errors-routing.module.d.ts +7 -0
  123. package/lib/modules/errors/errors.component.d.ts +13 -0
  124. package/lib/modules/errors/errors.module.d.ts +13 -0
  125. package/lib/modules/errors/invalid-ip/invalid-ip.component.d.ts +17 -0
  126. package/lib/modules/intro/contact-support/contact-support.component.d.ts +9 -0
  127. package/lib/modules/intro/intro-routing.module.d.ts +7 -0
  128. package/lib/modules/intro/intro.module.d.ts +11 -0
  129. package/lib/modules/intro/lead-intro/lead-intro.component.d.ts +31 -0
  130. package/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.d.ts +13 -0
  131. package/lib/modules/layout/content/content.component.d.ts +25 -0
  132. package/lib/modules/layout/footer/footer.component.d.ts +8 -0
  133. package/lib/modules/layout/header/header-menu/header-menu.component.d.ts +18 -0
  134. package/lib/modules/layout/header/header.component.d.ts +30 -0
  135. package/lib/modules/layout/header/navbar/navbar.component.d.ts +45 -0
  136. package/lib/modules/layout/header/notifications-inner/notifications-inner.component.d.ts +25 -0
  137. package/lib/modules/layout/header/page-title/page-title.component.d.ts +23 -0
  138. package/lib/modules/layout/keenicon/keenicon.component.d.ts +13 -0
  139. package/lib/modules/layout/layout/layout.component.d.ts +82 -0
  140. package/lib/modules/layout/layout.module.d.ts +49 -0
  141. package/lib/modules/layout/scripts-init/scripts-init.component.d.ts +19 -0
  142. package/lib/modules/layout/scroll-top/scroll-top.component.d.ts +19 -0
  143. package/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.d.ts +39 -0
  144. package/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.d.ts +19 -0
  145. package/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.d.ts +23 -0
  146. package/lib/modules/layout/sidebar/sidebar.component.d.ts +36 -0
  147. package/lib/modules/layout/toolbar/accounting/accounting.component.d.ts +8 -0
  148. package/lib/modules/layout/toolbar/classic/classic.component.d.ts +48 -0
  149. package/lib/modules/layout/toolbar/client-settings/client-settings.component.d.ts +16 -0
  150. package/lib/modules/layout/toolbar/date-single-select/date-single-select.component.d.ts +28 -0
  151. package/lib/modules/layout/toolbar/datepicker/datepicker.component.d.ts +28 -0
  152. package/lib/modules/layout/toolbar/extended/extended.component.d.ts +8 -0
  153. package/lib/modules/layout/toolbar/metrics-header/metrics-header.component.d.ts +103 -0
  154. package/lib/modules/layout/toolbar/reports/reports.component.d.ts +9 -0
  155. package/lib/modules/layout/toolbar/saas/saas.component.d.ts +9 -0
  156. package/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.d.ts +5 -0
  157. package/lib/modules/layout/toolbar/single-store/single-store.component.d.ts +33 -0
  158. package/lib/modules/layout/toolbar/single-storedate/single-storedate.component.d.ts +34 -0
  159. package/lib/modules/layout/toolbar/storesingle/storesingle.component.d.ts +24 -0
  160. package/lib/modules/layout/toolbar/toolbar.component.d.ts +55 -0
  161. package/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.d.ts +93 -0
  162. package/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.d.ts +80 -0
  163. package/lib/modules/layout/toolbar/trax-header/trax-header.component.d.ts +83 -0
  164. package/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.d.ts +74 -0
  165. package/lib/modules/notification/conformation/conformation.component.d.ts +10 -0
  166. package/lib/modules/notification/notification/notification.component.d.ts +63 -0
  167. package/lib/modules/notification/notification-routing.module.d.ts +7 -0
  168. package/lib/modules/notification/notification.module.d.ts +11 -0
  169. package/lib/pipes/customDate.pipe.d.ts +7 -0
  170. package/lib/routes/route-wraper-modules/edge-wrapper.module.d.ts +7 -0
  171. package/lib/routes/route-wraper-modules/manage-wrapper.module.d.ts +7 -0
  172. package/lib/routes/route-wraper-modules/profile-wrapper.module.d.ts +7 -0
  173. package/lib/routes/route-wraper-modules/store-wrapper.module.d.ts +7 -0
  174. package/lib/routes/route-wraper-modules/ticket-wrapper.module.d.ts +7 -0
  175. package/lib/routes/routing.d.ts +3 -0
  176. package/lib/services/auth.service.d.ts +52 -0
  177. package/lib/services/notification.service.d.ts +30 -0
  178. package/lib/services/toast.service.d.ts +10 -0
  179. package/package.json +25 -12
  180. package/{src/public-api.ts → public-api.d.ts} +44 -71
  181. package/.eslintrc.json +0 -37
  182. package/ng-package.json +0 -7
  183. package/src/lib/guards/auth.guard.ts +0 -20
  184. package/src/lib/guards/lead.guard.ts +0 -16
  185. package/src/lib/guards/stores.guard.ts +0 -16
  186. package/src/lib/guards/tickets.guard.ts +0 -16
  187. package/src/lib/i18n/translation.module.ts +0 -9
  188. package/src/lib/i18n/translation.service.ts +0 -61
  189. package/src/lib/i18n/vocabs/ch.ts +0 -105
  190. package/src/lib/i18n/vocabs/de.ts +0 -105
  191. package/src/lib/i18n/vocabs/en.ts +0 -105
  192. package/src/lib/i18n/vocabs/es.ts +0 -105
  193. package/src/lib/i18n/vocabs/fr.ts +0 -105
  194. package/src/lib/i18n/vocabs/jp.ts +0 -105
  195. package/src/lib/interceptors/http-auth-interceptor.ts +0 -225
  196. package/src/lib/interfaces/global-state.ts +0 -6
  197. package/src/lib/modules/common/common-shared.module.ts +0 -20
  198. package/src/lib/modules/common/custom-select/custom-select.component.html +0 -42
  199. package/src/lib/modules/common/custom-select/custom-select.component.scss +0 -131
  200. package/src/lib/modules/common/custom-select/custom-select.component.spec.ts +0 -23
  201. package/src/lib/modules/common/custom-select/custom-select.component.ts +0 -149
  202. package/src/lib/modules/common/filters/filters.component.html +0 -76
  203. package/src/lib/modules/common/filters/filters.component.scss +0 -131
  204. package/src/lib/modules/common/filters/filters.component.spec.ts +0 -23
  205. package/src/lib/modules/common/filters/filters.component.ts +0 -181
  206. package/src/lib/modules/common/pagination/pagination.component.html +0 -26
  207. package/src/lib/modules/common/pagination/pagination.component.scss +0 -63
  208. package/src/lib/modules/common/pagination/pagination.component.spec.ts +0 -23
  209. package/src/lib/modules/common/pagination/pagination.component.ts +0 -46
  210. package/src/lib/modules/errors/error403/error403.component.html +0 -25
  211. package/src/lib/modules/errors/error403/error403.component.scss +0 -0
  212. package/src/lib/modules/errors/error403/error403.component.spec.ts +0 -23
  213. package/src/lib/modules/errors/error403/error403.component.ts +0 -28
  214. package/src/lib/modules/errors/error404/error404.component.html +0 -24
  215. package/src/lib/modules/errors/error404/error404.component.scss +0 -0
  216. package/src/lib/modules/errors/error404/error404.component.spec.ts +0 -25
  217. package/src/lib/modules/errors/error404/error404.component.ts +0 -50
  218. package/src/lib/modules/errors/error500/error500.component.html +0 -24
  219. package/src/lib/modules/errors/error500/error500.component.scss +0 -0
  220. package/src/lib/modules/errors/error500/error500.component.spec.ts +0 -25
  221. package/src/lib/modules/errors/error500/error500.component.ts +0 -50
  222. package/src/lib/modules/errors/errors-routing.module.ts +0 -40
  223. package/src/lib/modules/errors/errors.component.html +0 -15
  224. package/src/lib/modules/errors/errors.component.scss +0 -4
  225. package/src/lib/modules/errors/errors.component.spec.ts +0 -25
  226. package/src/lib/modules/errors/errors.component.ts +0 -42
  227. package/src/lib/modules/errors/errors.module.ts +0 -25
  228. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.html +0 -16
  229. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.scss +0 -0
  230. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.spec.ts +0 -23
  231. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.ts +0 -43
  232. package/src/lib/modules/intro/contact-support/contact-support.component.html +0 -30
  233. package/src/lib/modules/intro/contact-support/contact-support.component.scss +0 -60
  234. package/src/lib/modules/intro/contact-support/contact-support.component.spec.ts +0 -23
  235. package/src/lib/modules/intro/contact-support/contact-support.component.ts +0 -17
  236. package/src/lib/modules/intro/intro-routing.module.ts +0 -16
  237. package/src/lib/modules/intro/intro.module.ts +0 -21
  238. package/src/lib/modules/intro/lead-intro/lead-intro.component.html +0 -325
  239. package/src/lib/modules/intro/lead-intro/lead-intro.component.scss +0 -185
  240. package/src/lib/modules/intro/lead-intro/lead-intro.component.spec.ts +0 -23
  241. package/src/lib/modules/intro/lead-intro/lead-intro.component.ts +0 -120
  242. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.html +0 -44
  243. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.scss +0 -28
  244. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.spec.ts +0 -23
  245. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.ts +0 -24
  246. package/src/lib/modules/layout/content/content.component.html +0 -12
  247. package/src/lib/modules/layout/content/content.component.scss +0 -0
  248. package/src/lib/modules/layout/content/content.component.ts +0 -102
  249. package/src/lib/modules/layout/footer/footer.component.html +0 -29
  250. package/src/lib/modules/layout/footer/footer.component.scss +0 -7
  251. package/src/lib/modules/layout/footer/footer.component.spec.ts +0 -25
  252. package/src/lib/modules/layout/footer/footer.component.ts +0 -13
  253. package/src/lib/modules/layout/header/header-menu/header-menu.component.html +0 -27
  254. package/src/lib/modules/layout/header/header-menu/header-menu.component.scss +0 -4
  255. package/src/lib/modules/layout/header/header-menu/header-menu.component.spec.ts +0 -25
  256. package/src/lib/modules/layout/header/header-menu/header-menu.component.ts +0 -38
  257. package/src/lib/modules/layout/header/header.component.html +0 -90
  258. package/src/lib/modules/layout/header/header.component.scss +0 -7
  259. package/src/lib/modules/layout/header/header.component.spec.ts +0 -25
  260. package/src/lib/modules/layout/header/header.component.ts +0 -139
  261. package/src/lib/modules/layout/header/navbar/navbar.component.html +0 -156
  262. package/src/lib/modules/layout/header/navbar/navbar.component.scss +0 -223
  263. package/src/lib/modules/layout/header/navbar/navbar.component.spec.ts +0 -23
  264. package/src/lib/modules/layout/header/navbar/navbar.component.ts +0 -255
  265. package/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.html +0 -200
  266. package/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.scss +0 -139
  267. package/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.ts +0 -76
  268. package/src/lib/modules/layout/header/page-title/page-title.component.html +0 -32
  269. package/src/lib/modules/layout/header/page-title/page-title.component.scss +0 -11
  270. package/src/lib/modules/layout/header/page-title/page-title.component.ts +0 -47
  271. package/src/lib/modules/layout/keenicon/icons.json +0 -1
  272. package/src/lib/modules/layout/keenicon/keenicon.component.html +0 -4
  273. package/src/lib/modules/layout/keenicon/keenicon.component.scss +0 -0
  274. package/src/lib/modules/layout/keenicon/keenicon.component.spec.ts +0 -23
  275. package/src/lib/modules/layout/keenicon/keenicon.component.ts +0 -30
  276. package/src/lib/modules/layout/layout/layout.component.html +0 -71
  277. package/src/lib/modules/layout/layout/layout.component.scss +0 -23
  278. package/src/lib/modules/layout/layout/layout.component.ts +0 -425
  279. package/src/lib/modules/layout/layout.module.ts +0 -127
  280. package/src/lib/modules/layout/scripts-init/scripts-init.component.html +0 -0
  281. package/src/lib/modules/layout/scripts-init/scripts-init.component.ts +0 -81
  282. package/src/lib/modules/layout/scroll-top/scroll-top.component.html +0 -1
  283. package/src/lib/modules/layout/scroll-top/scroll-top.component.ts +0 -75
  284. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.html +0 -70
  285. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.scss +0 -57
  286. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.spec.ts +0 -23
  287. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.ts +0 -101
  288. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.html +0 -26
  289. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.scss +0 -0
  290. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.spec.ts +0 -23
  291. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.ts +0 -36
  292. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.html +0 -705
  293. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.scss +0 -38
  294. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.spec.ts +0 -23
  295. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.ts +0 -118
  296. package/src/lib/modules/layout/sidebar/sidebar.component.html +0 -16
  297. package/src/lib/modules/layout/sidebar/sidebar.component.scss +0 -3
  298. package/src/lib/modules/layout/sidebar/sidebar.component.spec.ts +0 -23
  299. package/src/lib/modules/layout/sidebar/sidebar.component.ts +0 -203
  300. package/src/lib/modules/layout/toolbar/accounting/accounting.component.html +0 -84
  301. package/src/lib/modules/layout/toolbar/accounting/accounting.component.scss +0 -0
  302. package/src/lib/modules/layout/toolbar/accounting/accounting.component.spec.ts +0 -23
  303. package/src/lib/modules/layout/toolbar/accounting/accounting.component.ts +0 -14
  304. package/src/lib/modules/layout/toolbar/classic/classic.component.html +0 -69
  305. package/src/lib/modules/layout/toolbar/classic/classic.component.scss +0 -238
  306. package/src/lib/modules/layout/toolbar/classic/classic.component.spec.ts +0 -23
  307. package/src/lib/modules/layout/toolbar/classic/classic.component.ts +0 -389
  308. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.html +0 -4
  309. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.scss +0 -3
  310. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.spec.ts +0 -23
  311. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.ts +0 -91
  312. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.html +0 -22
  313. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.scss +0 -156
  314. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.spec.ts +0 -23
  315. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.ts +0 -229
  316. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.html +0 -14
  317. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.scss +0 -149
  318. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.spec.ts +0 -23
  319. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.ts +0 -174
  320. package/src/lib/modules/layout/toolbar/extended/extended.component.html +0 -100
  321. package/src/lib/modules/layout/toolbar/extended/extended.component.scss +0 -0
  322. package/src/lib/modules/layout/toolbar/extended/extended.component.spec.ts +0 -23
  323. package/src/lib/modules/layout/toolbar/extended/extended.component.ts +0 -12
  324. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.html +0 -311
  325. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.scss +0 -311
  326. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.spec.ts +0 -23
  327. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.ts +0 -1555
  328. package/src/lib/modules/layout/toolbar/reports/reports.component.html +0 -62
  329. package/src/lib/modules/layout/toolbar/reports/reports.component.scss +0 -0
  330. package/src/lib/modules/layout/toolbar/reports/reports.component.spec.ts +0 -23
  331. package/src/lib/modules/layout/toolbar/reports/reports.component.ts +0 -14
  332. package/src/lib/modules/layout/toolbar/saas/saas.component.html +0 -77
  333. package/src/lib/modules/layout/toolbar/saas/saas.component.scss +0 -0
  334. package/src/lib/modules/layout/toolbar/saas/saas.component.spec.ts +0 -23
  335. package/src/lib/modules/layout/toolbar/saas/saas.component.ts +0 -14
  336. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.html +0 -1
  337. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.scss +0 -0
  338. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.spec.ts +0 -23
  339. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.ts +0 -10
  340. package/src/lib/modules/layout/toolbar/single-store/single-store.component.html +0 -39
  341. package/src/lib/modules/layout/toolbar/single-store/single-store.component.scss +0 -172
  342. package/src/lib/modules/layout/toolbar/single-store/single-store.component.spec.ts +0 -23
  343. package/src/lib/modules/layout/toolbar/single-store/single-store.component.ts +0 -186
  344. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.html +0 -17
  345. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.scss +0 -172
  346. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.spec.ts +0 -23
  347. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.ts +0 -179
  348. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.html +0 -4
  349. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.scss +0 -19
  350. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.spec.ts +0 -23
  351. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.ts +0 -105
  352. package/src/lib/modules/layout/toolbar/toolbar.component.html +0 -56
  353. package/src/lib/modules/layout/toolbar/toolbar.component.scss +0 -0
  354. package/src/lib/modules/layout/toolbar/toolbar.component.spec.ts +0 -25
  355. package/src/lib/modules/layout/toolbar/toolbar.component.ts +0 -352
  356. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.html +0 -259
  357. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.scss +0 -311
  358. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.spec.ts +0 -23
  359. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.ts +0 -1200
  360. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.html +0 -199
  361. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.scss +0 -311
  362. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.spec.ts +0 -23
  363. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.ts +0 -899
  364. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.html +0 -204
  365. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.scss +0 -311
  366. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.spec.ts +0 -23
  367. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.ts +0 -1045
  368. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.html +0 -190
  369. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.scss +0 -311
  370. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.spec.ts +0 -23
  371. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.ts +0 -825
  372. package/src/lib/modules/notification/conformation/conformation.component.html +0 -25
  373. package/src/lib/modules/notification/conformation/conformation.component.scss +0 -0
  374. package/src/lib/modules/notification/conformation/conformation.component.spec.ts +0 -23
  375. package/src/lib/modules/notification/conformation/conformation.component.ts +0 -23
  376. package/src/lib/modules/notification/notification/notification.component.html +0 -209
  377. package/src/lib/modules/notification/notification/notification.component.scss +0 -211
  378. package/src/lib/modules/notification/notification/notification.component.spec.ts +0 -23
  379. package/src/lib/modules/notification/notification/notification.component.ts +0 -310
  380. package/src/lib/modules/notification/notification-routing.module.ts +0 -20
  381. package/src/lib/modules/notification/notification.module.ts +0 -21
  382. package/src/lib/pipes/customDate.pipe.ts +0 -18
  383. package/src/lib/routes/route-wraper-modules/analyse-wrapper.module.ts +0 -12
  384. package/src/lib/routes/route-wraper-modules/edge-wrapper.module.ts +0 -11
  385. package/src/lib/routes/route-wraper-modules/manage-wrapper.module.ts +0 -11
  386. package/src/lib/routes/route-wraper-modules/profile-wrapper.module.ts +0 -12
  387. package/src/lib/routes/route-wraper-modules/store-wrapper.module.ts +0 -11
  388. package/src/lib/routes/route-wraper-modules/ticket-wrapper.module.ts +0 -10
  389. package/src/lib/routes/routing.ts +0 -56
  390. package/src/lib/services/auth.service.ts +0 -173
  391. package/src/lib/services/notification.service.spec.ts +0 -16
  392. package/src/lib/services/notification.service.ts +0 -73
  393. package/src/lib/services/toast.service.ts +0 -82
  394. package/tsconfig.lib.json +0 -14
  395. package/tsconfig.lib.prod.json +0 -10
  396. package/tsconfig.spec.json +0 -14
@@ -0,0 +1,105 @@
1
+ import { Component } from '@angular/core';
2
+ import dayjs from 'dayjs';
3
+ import 'dayjs/locale/en';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../../../services/auth.service";
6
+ import * as i2 from "tango-app-ui-global";
7
+ import * as i3 from "@angular/router";
8
+ import * as i4 from "../../../common/custom-select/custom-select.component";
9
+ export class StoresingleComponent {
10
+ auth;
11
+ gs;
12
+ cd;
13
+ router;
14
+ dayjs = dayjs;
15
+ isCustomDate = (m) => {
16
+ const isValidDate = m > this.dayjs();
17
+ return isValidDate ? 'invalid-date' : false;
18
+ };
19
+ selectedDateRange = {};
20
+ storeList = [];
21
+ selectedClient;
22
+ selectedFilters = {
23
+ client: null,
24
+ clientName: null,
25
+ clients: [],
26
+ store: null,
27
+ stores: [],
28
+ date: null,
29
+ };
30
+ constructor(auth, gs, cd, router) {
31
+ this.auth = auth;
32
+ this.gs = gs;
33
+ this.cd = cd;
34
+ this.router = router;
35
+ }
36
+ ngOnInit() {
37
+ const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
38
+ this.cd.detectChanges();
39
+ if (headerFilters?.client) {
40
+ this.auth.getStores(headerFilters?.client).subscribe({
41
+ next: (e) => {
42
+ if (e) {
43
+ this.storeList = e.data.result;
44
+ const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
45
+ this.selectedDateRange = {
46
+ startDate: this.dayjs(headerFilters?.date?.startDate, "DD-MM-YYYY").format("YYYY-MM-DD"),
47
+ endDate: this.dayjs(headerFilters?.date?.endDate, "DD-MM-YYYY").format("YYYY-MM-DD")
48
+ };
49
+ if (headerFilters?.store) {
50
+ this.storeList.find((obj) => {
51
+ if (obj.storeId === headerFilters.store) {
52
+ this.selectedClient = obj;
53
+ }
54
+ });
55
+ this.selectedFilters.store = headerFilters.store;
56
+ this.selectedFilters.client = headerFilters.client;
57
+ this.selectedFilters.clientName = headerFilters.clientName;
58
+ this.selectedFilters.clients = headerFilters.clients;
59
+ this.selectedFilters.date = headerFilters.date;
60
+ this.selectedDateRange = {
61
+ startDate: this.dayjs(headerFilters.date.startDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
62
+ endDate: this.dayjs(headerFilters.date.endDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
63
+ };
64
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
65
+ this.gs.dataRangeValue.next(this.selectedFilters);
66
+ this.cd.detectChanges();
67
+ }
68
+ else {
69
+ this.selectedClient = this.storeList[0];
70
+ this.selectedFilters.store = this.selectedClient.storeId;
71
+ this.selectedFilters.client = headerFilters.client;
72
+ this.selectedFilters.clientName = headerFilters.clientName;
73
+ this.selectedFilters.clients = headerFilters.clients;
74
+ this.selectedDateRange = {
75
+ startDate: this.dayjs().format("DD-MM-YYYY"),
76
+ endDate: this.dayjs().format("DD-MM-YYYY"),
77
+ };
78
+ var datetime = {
79
+ startDate: this.dayjs().format("YYYY-MM-DD"),
80
+ endDate: this.dayjs().format("YYYY-MM-DD"),
81
+ };
82
+ this.selectedFilters.date = datetime;
83
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
84
+ this.gs.dataRangeValue.next(this.selectedFilters);
85
+ this.cd.detectChanges();
86
+ }
87
+ }
88
+ },
89
+ });
90
+ }
91
+ }
92
+ onClientSelect(event) {
93
+ this.selectedClient = event;
94
+ this.selectedFilters.store = this.selectedClient.storeId;
95
+ this.gs.dataRangeValue.next(this.selectedFilters);
96
+ localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
97
+ }
98
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoresingleComponent, deps: [{ token: i1.AuthService }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component });
99
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: StoresingleComponent, selector: "lib-storesingle", ngImport: i0, template: "<div class=\"wrapper\" >\r\n<lib-select [items]=\"storeList\" [multi]=\"false\" [searchField]=\"'storeName'\" [disabled]=\"false\" [idField]=\"'storeId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div> ", styles: [".daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}\n"], dependencies: [{ kind: "component", type: i4.CustomSelectComponent, selector: "lib-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }] });
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoresingleComponent, decorators: [{
102
+ type: Component,
103
+ args: [{ selector: 'lib-storesingle', template: "<div class=\"wrapper\" >\r\n<lib-select [items]=\"storeList\" [multi]=\"false\" [searchField]=\"'storeName'\" [disabled]=\"false\" [idField]=\"'storeId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div> ", styles: [".daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}\n"] }]
104
+ }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.Router }] });
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVzaW5nbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L3Rvb2xiYXIvc3RvcmVzaW5nbGUvc3RvcmVzaW5nbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L3Rvb2xiYXIvc3RvcmVzaW5nbGUvc3RvcmVzaW5nbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQTJDLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQVEsS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMzQixPQUFPLGlCQUFpQixDQUFDOzs7Ozs7QUFVekIsTUFBTSxPQUFPLG9CQUFvQjtJQWtCWjtJQUEwQjtJQUErQjtJQUE2QjtJQWpCekcsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNiLFlBQVksR0FBRyxDQUFDLENBQWMsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sV0FBVyxHQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEMsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2hELENBQUMsQ0FBQTtJQUNDLGlCQUFpQixHQUFRLEVBQUUsQ0FBQztJQUM1QixTQUFTLEdBQU8sRUFBRSxDQUFBO0lBQ2xCLGNBQWMsQ0FBSTtJQUNsQixlQUFlLEdBQVE7UUFDckIsTUFBTSxFQUFFLElBQUk7UUFDWixVQUFVLEVBQUMsSUFBSTtRQUNmLE9BQU8sRUFBRSxFQUFFO1FBQ1gsS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxJQUFJO0tBRVgsQ0FBQztJ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Q0gsQ0FBQzthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0QsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFTO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFBO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQ3pELElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7d0dBM0ZVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLHVEQ1pqQyxvUUFHTzs7NEZEU00sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgIGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0ICdkYXlqcy9sb2NhbGUvZW4nO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc3RvcmVzaW5nbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9yZXNpbmdsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3N0b3Jlc2luZ2xlLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvcmVzaW5nbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGRheWpzID0gZGF5anNcclxuICBpc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgIGNvbnN0IGlzVmFsaWREYXRlID0gIG0gPiB0aGlzLmRheWpzKCk7ICAgIFxyXG4gICAgcmV0dXJuIGlzVmFsaWREYXRlID8gJ2ludmFsaWQtZGF0ZScgOiBmYWxzZTtcclxufVxyXG4gIHNlbGVjdGVkRGF0ZVJhbmdlOiBhbnkgPSB7fTtcclxuICBzdG9yZUxpc3Q6YW55ID0gW11cclxuICBzZWxlY3RlZENsaWVudDphbnlcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHtcclxuICAgIGNsaWVudDogbnVsbCxcclxuICAgIGNsaWVudE5hbWU6bnVsbCxcclxuICAgIGNsaWVudHM6IFtdLFxyXG4gICAgc3RvcmU6IG51bGwsXHJcbiAgICBzdG9yZXM6IFtdLFxyXG4gICAgZGF0ZTogbnVsbCxcclxuXHJcbiAgfTtcclxuIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aDpBdXRoU2VydmljZSwgcHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UsIHByaXZhdGUgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSByb3V0ZXI6Um91dGVyKXtcclxuIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGhlYWRlckZpbHRlcnM6IGFueSA9IEpTT04ucGFyc2UoXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJ7fVwiXHJcbiAgICApO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZihoZWFkZXJGaWx0ZXJzPy5jbGllbnQpe1xyXG4gICAgdGhpcy5hdXRoLmdldFN0b3JlcyhoZWFkZXJGaWx0ZXJzPy5jbGllbnQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGUpIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gZS5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgIGNvbnN0IGhlYWRlckZpbHRlcnM6IGFueSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJ7fVwiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IHtcclxuICAgICAgICAgICAgc3RhcnREYXRlOiB0aGlzLmRheWpzKGhlYWRlckZpbHRlcnM/LmRhdGU/LnN0YXJ0RGF0ZSxcIkRELU1NLVlZWVlcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcyhoZWFkZXJGaWx0ZXJzPy5kYXRlPy5lbmREYXRlLCBcIkRELU1NLVlZWVlcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGlmIChoZWFkZXJGaWx0ZXJzPy5zdG9yZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlTGlzdC5maW5kKChvYmo6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChvYmouc3RvcmVJZCA9PT0gaGVhZGVyRmlsdGVycy5zdG9yZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENsaWVudCA9IG9iajtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3JlID0gIGhlYWRlckZpbHRlcnMuc3RvcmU7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50ID0gIGhlYWRlckZpbHRlcnMuY2xpZW50O1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudE5hbWUgPSAgaGVhZGVyRmlsdGVycy5jbGllbnROYW1lO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudHMgPSAgaGVhZGVyRmlsdGVycy5jbGllbnRzOyAgXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuZGF0ZSA9IGhlYWRlckZpbHRlcnMuZGF0ZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhcnREYXRlOnRoaXMuZGF5anMoIGhlYWRlckZpbHRlcnMuZGF0ZS5zdGFydERhdGUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgICAgICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcyggaGVhZGVyRmlsdGVycy5kYXRlLmVuZERhdGUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgICBcImhlYWRlci1maWx0ZXJzXCIsXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmlsdGVycylcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2xpZW50ID0gdGhpcy5zdG9yZUxpc3RbMF07XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3JlID0gIHRoaXMuc2VsZWN0ZWRDbGllbnQuc3RvcmVJZDsgXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudCA9ICBoZWFkZXJGaWx0ZXJzLmNsaWVudDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50TmFtZSA9ICBoZWFkZXJGaWx0ZXJzLmNsaWVudE5hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudHMgPSAgaGVhZGVyRmlsdGVycy5jbGllbnRzOyAgXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhcnREYXRlOiB0aGlzLmRheWpzKCkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSxcclxuICAgICAgICAgICAgICBlbmREYXRlOiB0aGlzLmRheWpzKCkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmFyIGRhdGV0aW1lID0ge1xyXG4gICAgICAgICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXlqcygpLmZvcm1hdChcIllZWVktTU0tRERcIiksXHJcbiAgICAgICAgICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcygpLmZvcm1hdChcIllZWVktTU0tRERcIiksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmRhdGUgPSBkYXRldGltZTtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgXCJoZWFkZXItZmlsdGVyc1wiLFxyXG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQodGhpcy5zZWxlY3RlZEZpbHRlcnMpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgfVxyXG4gIG9uQ2xpZW50U2VsZWN0KGV2ZW50OmFueSl7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2xpZW50ID0gZXZlbnRcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3JlID0gdGhpcy5zZWxlY3RlZENsaWVudC5zdG9yZUlkO1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdoZWFkZXItZmlsdGVycycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ3cmFwcGVyXCIgPlxyXG48bGliLXNlbGVjdCBbaXRlbXNdPVwic3RvcmVMaXN0XCIgW211bHRpXT1cImZhbHNlXCIgW3NlYXJjaEZpZWxkXT1cIidzdG9yZU5hbWUnXCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW2lkRmllbGRdPVwiJ3N0b3JlSWQnXCJcclxuKHNlbGVjdGVkKT1cIm9uQ2xpZW50U2VsZWN0KCRldmVudClcIiBbc2VsZWN0ZWRWYWx1ZXNdPVwiW3NlbGVjdGVkQ2xpZW50XVwiPjwvbGliLXNlbGVjdD5cclxuPC9kaXY+ICJdfQ==
@@ -0,0 +1,314 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { Subject } from "rxjs";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "tango-app-ui-global";
5
+ import * as i2 from "@angular/router";
6
+ import * as i3 from "../../../services/auth.service";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "../header/page-title/page-title.component";
9
+ import * as i6 from "./classic/classic.component";
10
+ import * as i7 from "./client-settings/client-settings.component";
11
+ import * as i8 from "./datepicker/datepicker.component";
12
+ import * as i9 from "./date-single-select/date-single-select.component";
13
+ import * as i10 from "./single-store/single-store.component";
14
+ import * as i11 from "./traffic-header/traffic-header/traffic-header.component";
15
+ import * as i12 from "./trax-header/trax-header.component";
16
+ import * as i13 from "./single-storedate/single-storedate.component";
17
+ import * as i14 from "./trax-withoutdate/trax-withoutdate.component";
18
+ import * as i15 from "./traffic-nob/traffic-nob.component";
19
+ import * as i16 from "./metrics-header/metrics-header.component";
20
+ export class ToolbarComponent {
21
+ layout;
22
+ router;
23
+ route;
24
+ gs;
25
+ auth;
26
+ unsubscribe = [];
27
+ // Public props
28
+ currentLayoutType;
29
+ appToolbarLayout;
30
+ // toolbar
31
+ appToolbarDisplay;
32
+ appToolbarContainer;
33
+ appToolbarContainerCSSClass = "";
34
+ appToolbarFixedDesktop;
35
+ appToolbarFixedMobile;
36
+ appPageTitleDisplay;
37
+ // page title
38
+ appPageTitleDirection = "";
39
+ appPageTitleCSSClass = "";
40
+ appPageTitleBreadcrumb;
41
+ appPageTitleDescription;
42
+ querParams;
43
+ singleSelect;
44
+ multiSelect;
45
+ datepicker;
46
+ singleSelectdatepicker;
47
+ singleStore;
48
+ headervalue;
49
+ storeId;
50
+ users;
51
+ selectedFilters = {
52
+ client: null,
53
+ clients: [],
54
+ store: null,
55
+ stores: [],
56
+ date: null,
57
+ };
58
+ trafficdatepicker;
59
+ traxdatepicker;
60
+ urlString;
61
+ traxwithoutdatepicker;
62
+ storesSingle;
63
+ nobWithoutClient;
64
+ merticsHeader;
65
+ constructor(layout, router, route, gs, auth) {
66
+ this.layout = layout;
67
+ this.router = router;
68
+ this.route = route;
69
+ this.gs = gs;
70
+ this.auth = auth;
71
+ }
72
+ ngOnInit() {
73
+ if ("user-info" in localStorage) {
74
+ const userData = JSON.parse(localStorage.getItem("user-info") || "{}");
75
+ this.users = userData;
76
+ }
77
+ if ("header-filters" in localStorage) {
78
+ const data = JSON.parse(localStorage.getItem("header-filters") || "{}");
79
+ this.client = data?.client;
80
+ }
81
+ this.getUserInfo(this.client ? this.client : this.users.client);
82
+ this.showPageTitle();
83
+ const subscr = this.layout.layoutConfigSubject
84
+ .asObservable()
85
+ .subscribe((config) => {
86
+ this.updateProps(config);
87
+ });
88
+ this.unsubscribe.push(subscr);
89
+ }
90
+ updateProps(config) {
91
+ this.appToolbarDisplay = this.layout.getProp("app.toolbar.display", config);
92
+ if (!this.appToolbarDisplay) {
93
+ return;
94
+ }
95
+ this.appPageTitleDisplay = this.layout.getProp("app.pageTitle.display", config);
96
+ this.appToolbarContainer = this.layout.getProp("app.toolbar.container", config);
97
+ this.appToolbarContainerCSSClass =
98
+ this.appToolbarContainer === "fixed"
99
+ ? "container-xxl"
100
+ : "container-fluid";
101
+ const containerClass = this.layout.getProp("app.toolbar.containerClass", config);
102
+ if (containerClass) {
103
+ this.appToolbarContainerCSSClass += ` ${containerClass}`;
104
+ }
105
+ this.appToolbarFixedDesktop = this.layout.getProp("app.toolbar.fixed.desktop", config);
106
+ if (this.appToolbarFixedDesktop) {
107
+ document.body.setAttribute("data-kt-app-toolbar-fixed", "true");
108
+ }
109
+ this.appToolbarFixedMobile = this.layout.getProp("app.toolbar.fixed.mobile", config);
110
+ if (this.appToolbarFixedMobile) {
111
+ document.body.setAttribute("data-kt-app-toolbar-fixed-mobile", "true");
112
+ }
113
+ // toolbar
114
+ this.appPageTitleDirection = this.layout.getProp("app.pageTitle.direction", config);
115
+ this.appPageTitleCSSClass = this.layout.getProp("app.pageTitle.class", config);
116
+ this.appPageTitleBreadcrumb = this.layout.getProp("app.pageTitle.breadCrumb", config);
117
+ this.appPageTitleDescription = this.layout.getProp("app.pageTitle.description", config);
118
+ document.body.setAttribute("data-kt-app-toolbar-enabled", "true");
119
+ }
120
+ destroy$ = new Subject();
121
+ ngOnDestroy() {
122
+ this.unsubscribe.forEach((sb) => sb.unsubscribe());
123
+ this.destroy$.next(true);
124
+ this.destroy$.complete();
125
+ // localStorage.removeItem("usersEmail-info");
126
+ }
127
+ client;
128
+ urlString1;
129
+ showPageTitle() {
130
+ let URL = "";
131
+ if ("header-filters" in localStorage) {
132
+ const data = JSON.parse(localStorage.getItem("header-filters") || "{}");
133
+ const store = this.route.snapshot.queryParamMap;
134
+ this.storeId = data?.store;
135
+ if (store?.params?.['storeId']) {
136
+ this.storeId = store.params['storeId'];
137
+ data.store = store.params['storeId'];
138
+ localStorage.setItem('header-filters', JSON.stringify(data));
139
+ }
140
+ const currentUrl = this.router.url;
141
+ const updatedUrl = currentUrl.replace(/\/manage\/stores\/\d+-\d+\//, `/manage/stores/`);
142
+ URL = updatedUrl;
143
+ // this.router.navigate([URL])
144
+ }
145
+ const url = URL.split("?")[0].split('/');
146
+ this.urlString = URL;
147
+ this.urlString1 = URL.split('/');
148
+ if (this.users?.userType === "tango") {
149
+ if (url[2] == "settings" || URL == "/manage/users/client" ||
150
+ URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=clusters" ||
151
+ URL == "/manage/stores/addition-method" ||
152
+ URL == "/manage/stores/add-single-store" || URL === "/manage/trax/gallery" || URL == "/notifications/alerts?tab=alert" || URL == "/notifications/alerts?tab=download" || URL === "/manage/trax/audit") {
153
+ this.setUIProperties(true, false, false, false, false, false, false, false, false, false, false);
154
+ }
155
+ else if (url[3] == "edge-app") {
156
+ this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false);
157
+ }
158
+ else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
159
+ URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
160
+ URL == `/manage/stores/zones?storeId=${this.storeId}` ||
161
+ URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
162
+ // URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
163
+ URL == `/manage/stores/mat?storeId=${this.storeId}`) {
164
+ this.setUIProperties(false, false, false, true, false, false, false, false, false, false, false);
165
+ }
166
+ else if (URL == "/tickets/stores" || URL == "/manage/users/tango/audit") {
167
+ this.setUIProperties(false, false, true, false, false, false, false, false, false, false, false);
168
+ }
169
+ else if (url[2] === 'controlcenter') {
170
+ if (URL == `/manage/controlcenter/playback?storeId=${this.storeId}` || URL == `/manage/controlcenter/playback`) {
171
+ this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false);
172
+ }
173
+ else {
174
+ this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false);
175
+ }
176
+ }
177
+ else if (URL == "/profile" || url[2] === "data-mismatch" || url[2] === "employeetraining"
178
+ || URL == "/manage/brands" || URL == "/manage/users/tango" || (url[1] === "tickets" && url[2] === "audit")) {
179
+ this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
180
+ }
181
+ else if (URL == "/manage/traffic/nob") {
182
+ this.setUIProperties(false, false, false, false, false, false, false, false, false, true, false);
183
+ }
184
+ else if (url[2] === "traffic" || url[2] === "zones" || URL == "/manage/analyse/reports" || URL == "/manage/employee-metrics/beeahGroup") {
185
+ this.setUIProperties(false, false, false, false, false, true, false, false, false, false, false);
186
+ }
187
+ else if (url[2] === "employee-metrics" && url[3] === "heatmap") {
188
+ this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false);
189
+ }
190
+ else if (url[2] === "employee-metrics") {
191
+ this.setUIProperties(false, false, false, false, false, false, false, false, false, false, true);
192
+ }
193
+ else if (url[2] == 'trax') {
194
+ if (url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure') || url.includes('create-order') || url[3] == 'create-task' || url[3] == 'task-configure')) {
195
+ this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
196
+ }
197
+ // else if(url[2] == 'trax' && (url.includes('taskinfo'))){
198
+ // this.setUIProperties(false, false, false, false,false,false,false,true,false,false,false);
199
+ // }
200
+ else if (url[2] == 'trax' && url.includes('start')) {
201
+ this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
202
+ }
203
+ else if (url[2] == 'trax' && (url.includes('checklist') || url.includes('gallery')) || url.includes('audit')) {
204
+ this.setUIProperties(true, false, false, false, false, false, false, false, false, false, false);
205
+ }
206
+ else {
207
+ this.setUIProperties(false, false, false, false, false, false, true, false, false, false, false);
208
+ }
209
+ }
210
+ else {
211
+ this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false);
212
+ }
213
+ }
214
+ else {
215
+ if (url[3] == "edge-app") {
216
+ this.setUIProperties(false, false, true, false, false, false, false, false, false, false, false);
217
+ }
218
+ else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
219
+ URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
220
+ URL == `/manage/stores/zones?storeId=${this.storeId}` ||
221
+ URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
222
+ // URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
223
+ URL == `/manage/stores/mat?storeId=${this.storeId}`) {
224
+ this.setUIProperties(false, false, false, true, false, false, false, false, false, false, false);
225
+ }
226
+ else if (url[2] === 'controlcenter') {
227
+ if (URL == `/manage/controlcenter/playback?storeId=${this.storeId}` || URL == `/manage/controlcenter/playback`) {
228
+ this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false);
229
+ }
230
+ else {
231
+ this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false);
232
+ }
233
+ }
234
+ else if (URL == "/profile" || URL == "/manage/users/client" || URL == "/manage/users/tango" ||
235
+ URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=clusters" || url[2] == "settings" ||
236
+ URL == "/manage/stores/addition-method" ||
237
+ URL == "/manage/stores/add-single-store" || url[2] === "data-mismatch" || url[2] === "employeetraining" || URL == "/notifications/alerts?tab=alert" || URL == "/notifications/alerts?tab=download"
238
+ || URL == "/manage/users/tango" || URL === "/manage/controlcenter" || URL === 'manage/controlcenter/template-manager' || url[2] === 'controlcenter') {
239
+ this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
240
+ }
241
+ else if (URL == "/manage/traffic/nob") {
242
+ this.setUIProperties(false, false, false, false, false, false, false, false, false, true, false);
243
+ }
244
+ else if (url[2] === "traffic" || url[2] === "zones" || URL == "/manage/analyse/reports" || URL == "/manage/employee-metrics/beeahGroup") {
245
+ this.setUIProperties(false, false, false, false, false, true, false, false, false, false, false);
246
+ }
247
+ else if (url[2] === "employee-metrics" && url[3] === "heatmap") {
248
+ this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false);
249
+ }
250
+ else if (url[2] === "employee-metrics") {
251
+ this.setUIProperties(false, false, false, false, false, false, false, false, false, false, true);
252
+ }
253
+ else if (url[2] == 'trax') {
254
+ if (url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure') || url.includes('create-order') || url[3] == 'create-task' || url[3] == 'task-configure')) {
255
+ this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
256
+ }
257
+ // else if(url[2] == 'trax' && (url.includes('taskinfo'))){
258
+ // this.setUIProperties(false, false, false, false,false,false,false,true,false,false,false);
259
+ // }
260
+ else if (url[2] == 'trax' && url.includes('start')) {
261
+ this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
262
+ }
263
+ else if (url[2] == 'trax' && (url.includes('checklist') || url.includes('gallery') || url.includes('audit'))) {
264
+ this.setUIProperties(true, false, false, false, false, false, false, false, false, false, false);
265
+ }
266
+ else {
267
+ this.setUIProperties(false, false, false, false, false, false, true, false, false, false, false);
268
+ }
269
+ }
270
+ else {
271
+ this.setUIProperties(false, false, true, false, false, false, false, false, false, false, false);
272
+ }
273
+ }
274
+ const viewsWithPageTitles = ["classic", "reports", "saas"];
275
+ return (this.appPageTitleDisplay &&
276
+ viewsWithPageTitles.some((t) => t === this.appToolbarLayout));
277
+ }
278
+ setUIProperties(singleSelect, multiSelect, datepicker, singleStore, singleSelectdatepicker, trafficdatepicker, traxdatepicker, traxwithoutdatepicker, storesSingle, nobWithoutClient, merticsHeader) {
279
+ this.singleSelect = singleSelect;
280
+ this.multiSelect = multiSelect;
281
+ this.datepicker = datepicker;
282
+ this.singleStore = singleStore;
283
+ this.singleSelectdatepicker = singleSelectdatepicker;
284
+ this.trafficdatepicker = trafficdatepicker;
285
+ this.traxdatepicker = traxdatepicker;
286
+ this.traxwithoutdatepicker = traxwithoutdatepicker;
287
+ this.storesSingle = storesSingle;
288
+ this.nobWithoutClient = nobWithoutClient;
289
+ this.merticsHeader = merticsHeader;
290
+ }
291
+ getUserInfo(client) {
292
+ let obj = {
293
+ clientId: client ? client : ''
294
+ };
295
+ if (client) {
296
+ this.auth.getHeaderUsers(obj).subscribe({
297
+ next: (e) => {
298
+ localStorage.setItem("usersEmail-info", JSON.stringify(e?.data?.userEmailData || []));
299
+ }
300
+ });
301
+ }
302
+ }
303
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, deps: [{ token: i1.LayoutService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i1.GlobalStateService }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Component });
304
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ToolbarComponent, selector: "lib-toolbar", inputs: { currentLayoutType: "currentLayoutType", appToolbarLayout: "appToolbarLayout" }, ngImport: i0, template: "<!--begin::Toolbar container-->\r\n<div id=\"kt_app_toolbar_container\" class=\"app-container\" [ngClass]=\"appToolbarContainerCSSClass\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || (gs.userAccess | async)?.userType === 'client' || (gs.userAccess | async)?.userType === 'lead'\" >\r\n <ng-container *ngIf=\"showPageTitle()\">\r\n <lib-page-title [appPageTitleDirection]=\"appPageTitleDirection\" [appPageTitleBreadcrumb]=\"appPageTitleBreadcrumb\"\r\n [appPageTitleDescription]=\"appPageTitleDescription\" class=\"page-title d-flex flex-wrap me-3\"\r\n [ngClass]=\"{'flex-column justify-content-center': appPageTitleDirection === 'column', 'align-items-center': appPageTitleDirection !== 'column', appPageTitleCSSClass}\">\r\n </lib-page-title>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiSelect && users.userType ==='tango'\">\r\n <lib-classic class=\"d-flex align-items-center gap-2 gap-lg-3\"></lib-classic>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelect && users.userType ==='tango'\">\r\n <lib-client-settings class=\"d-flex align-items-center me-5\"></lib-client-settings>\r\n </ng-container>\r\n <ng-container *ngIf=\"datepicker && (users.userType ==='client' || users.userType ==='tango')\">\r\n <lib-datepicker class=\"d-flex align-items-center me-5\"></lib-datepicker>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelectdatepicker && users.userType ==='tango'\">\r\n <lib-date-single-select class=\"d-flex align-items-center me-5\"></lib-date-single-select>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleStore\">\r\n <lib-single-store class=\"d-flex align-items-center me-5\"></lib-single-store>\r\n </ng-container>\r\n <ng-container *ngIf=\"trafficdatepicker\">\r\n <lib-traffic-header class=\"d-flex align-items-center me-5\"></lib-traffic-header>\r\n </ng-container>\r\n <ng-container *ngIf=\"traxdatepicker\">\r\n <lib-trax-header class=\"d-flex align-items-center me-5\"></lib-trax-header>\r\n </ng-container>\r\n <ng-container *ngIf=\"traxwithoutdatepicker\">\r\n <lib-trax-withoutdate class=\"d-flex align-items-center me-5\"></lib-trax-withoutdate>\r\n </ng-container>\r\n <ng-container *ngIf=\"storesSingle\">\r\n <lib-single-storedate class=\"d-flex align-items-center me-5\"></lib-single-storedate>\r\n </ng-container>\r\n <ng-container *ngIf=\"nobWithoutClient\">\r\n <lib-traffic-nob class=\"d-flex align-items-center me-5\"></lib-traffic-nob>\r\n </ng-container>\r\n <ng-container *ngIf=\"merticsHeader\">\r\n <lib-metrics-header class=\"d-flex align-items-center me-5\"></lib-metrics-header>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarLayout === 'extended'\">\r\n <lib-extended class=\"d-flex align-items-center flex-shrink-0 me-5\"></lib-extended>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'reports'\">\r\n <lib-reports class=\"d-flex align-items-center overflow-auto\" [appPageTitleDisplay]=\"appPageTitleDisplay\">\r\n </lib-reports>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'saas'\">\r\n <lib-saas class=\"d-flex align-items-center gap-2\" [appPageTitleDisplay]=\"appPageTitleDisplay\"></lib-saas>\r\n </ng-container> -->\r\n</ng-container>\r\n</div>\r\n<!--end::Toolbar container-->\r\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PageTitleComponent, selector: "lib-page-title", inputs: ["appPageTitleDirection", "appPageTitleBreadcrumb", "appPageTitleDescription"] }, { kind: "component", type: i6.ClassicComponent, selector: "lib-classic" }, { kind: "component", type: i7.ClientSettingsComponent, selector: "lib-client-settings" }, { kind: "component", type: i8.DatepickerComponent, selector: "lib-datepicker" }, { kind: "component", type: i9.DateSingleSelectComponent, selector: "lib-date-single-select" }, { kind: "component", type: i10.SingleStoreComponent, selector: "lib-single-store", inputs: ["urlString"] }, { kind: "component", type: i11.TrafficHeaderComponent, selector: "lib-traffic-header" }, { kind: "component", type: i12.TraxHeaderComponent, selector: "lib-trax-header" }, { kind: "component", type: i13.SingleStoredateComponent, selector: "lib-single-storedate" }, { kind: "component", type: i14.TraxWithoutdateComponent, selector: "lib-trax-withoutdate" }, { kind: "component", type: i15.TrafficNobComponent, selector: "lib-traffic-nob" }, { kind: "component", type: i16.MetricsHeaderComponent, selector: "lib-metrics-header" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
305
+ }
306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, decorators: [{
307
+ type: Component,
308
+ args: [{ selector: "lib-toolbar", template: "<!--begin::Toolbar container-->\r\n<div id=\"kt_app_toolbar_container\" class=\"app-container\" [ngClass]=\"appToolbarContainerCSSClass\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || (gs.userAccess | async)?.userType === 'client' || (gs.userAccess | async)?.userType === 'lead'\" >\r\n <ng-container *ngIf=\"showPageTitle()\">\r\n <lib-page-title [appPageTitleDirection]=\"appPageTitleDirection\" [appPageTitleBreadcrumb]=\"appPageTitleBreadcrumb\"\r\n [appPageTitleDescription]=\"appPageTitleDescription\" class=\"page-title d-flex flex-wrap me-3\"\r\n [ngClass]=\"{'flex-column justify-content-center': appPageTitleDirection === 'column', 'align-items-center': appPageTitleDirection !== 'column', appPageTitleCSSClass}\">\r\n </lib-page-title>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiSelect && users.userType ==='tango'\">\r\n <lib-classic class=\"d-flex align-items-center gap-2 gap-lg-3\"></lib-classic>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelect && users.userType ==='tango'\">\r\n <lib-client-settings class=\"d-flex align-items-center me-5\"></lib-client-settings>\r\n </ng-container>\r\n <ng-container *ngIf=\"datepicker && (users.userType ==='client' || users.userType ==='tango')\">\r\n <lib-datepicker class=\"d-flex align-items-center me-5\"></lib-datepicker>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelectdatepicker && users.userType ==='tango'\">\r\n <lib-date-single-select class=\"d-flex align-items-center me-5\"></lib-date-single-select>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleStore\">\r\n <lib-single-store class=\"d-flex align-items-center me-5\"></lib-single-store>\r\n </ng-container>\r\n <ng-container *ngIf=\"trafficdatepicker\">\r\n <lib-traffic-header class=\"d-flex align-items-center me-5\"></lib-traffic-header>\r\n </ng-container>\r\n <ng-container *ngIf=\"traxdatepicker\">\r\n <lib-trax-header class=\"d-flex align-items-center me-5\"></lib-trax-header>\r\n </ng-container>\r\n <ng-container *ngIf=\"traxwithoutdatepicker\">\r\n <lib-trax-withoutdate class=\"d-flex align-items-center me-5\"></lib-trax-withoutdate>\r\n </ng-container>\r\n <ng-container *ngIf=\"storesSingle\">\r\n <lib-single-storedate class=\"d-flex align-items-center me-5\"></lib-single-storedate>\r\n </ng-container>\r\n <ng-container *ngIf=\"nobWithoutClient\">\r\n <lib-traffic-nob class=\"d-flex align-items-center me-5\"></lib-traffic-nob>\r\n </ng-container>\r\n <ng-container *ngIf=\"merticsHeader\">\r\n <lib-metrics-header class=\"d-flex align-items-center me-5\"></lib-metrics-header>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarLayout === 'extended'\">\r\n <lib-extended class=\"d-flex align-items-center flex-shrink-0 me-5\"></lib-extended>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'reports'\">\r\n <lib-reports class=\"d-flex align-items-center overflow-auto\" [appPageTitleDisplay]=\"appPageTitleDisplay\">\r\n </lib-reports>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'saas'\">\r\n <lib-saas class=\"d-flex align-items-center gap-2\" [appPageTitleDisplay]=\"appPageTitleDisplay\"></lib-saas>\r\n </ng-container> -->\r\n</ng-container>\r\n</div>\r\n<!--end::Toolbar container-->\r\n" }]
309
+ }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i1.GlobalStateService }, { type: i3.AuthService }], propDecorators: { currentLayoutType: [{
310
+ type: Input
311
+ }], appToolbarLayout: [{
312
+ type: Input
313
+ }] } });
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hcHAtc2hhcmVkL3NyYy9saWIvbW9kdWxlcy9sYXlvdXQvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxPQUFPLEVBQXdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjckQsTUFBTSxPQUFPLGdCQUFnQjtJQWlEakI7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQXBERixXQUFXLEdBQW1CLEVBQUUsQ0FBQztJQUV6QyxlQUFlO0lBQ04saUJBQWlCLENBQW9CO0lBQ3JDLGdCQUFnQixDQUtkO0lBRVgsVUFBVTtJQUNWLGlCQUFpQixDQUFVO0lBQzNCLG1CQUFtQixDQUFvQjtJQUN2QywyQkFBMkIsR0FBVyxFQUFFLENBQUM7SUFDekMsc0JBQXNCLENBQVU7SUFDaEMscUJBQXFCLENBQVU7SUFDL0IsbUJBQW1CLENBQVU7SUFFN0IsYUFBYTtJQUNiLHFCQUFxQixHQUFXLEVBQUUsQ0FBQztJQUNuQyxvQkFBb0IsR0FBVyxFQUFFLENBQUM7SUFDbEMsc0JBQXNCLENBQVU7SUFDaEMsdUJBQXVCLENBQVU7SUFDakMsVUFBVSxDQUFNO0lBQ2hCLFlBQVksQ0FBVTtJQUN0QixXQUFXLENBQVU7SUFDckIsVUFBVSxDQUFVO0lBQ3BCLHNCQUFzQixDQUFVO0lBQ2hDLFdBQVcsQ0FBVTtJQUNyQixXQUFXLENBQU07SUFDakIsT0FBTyxDQUFNO0lBQ2IsS0FB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QyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFFckMsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFVO1FBQ3BCLElBQUksR0FBRyxHQUFFO1lBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQSxFQUFFO1NBQ2hDLENBQUE7UUFDRCxJQUFHLE1BQU0sRUFBQztZQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDdEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ1YsWUFBWSxDQUFDLE9BQU8sQ0FDbEIsaUJBQWlCLEVBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDLENBQzdDLENBQUM7Z0JBQ0osQ0FBQzthQUNGLENBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQzt3R0E5VVksZ0JBQWdCOzRGQUFoQixnQkFBZ0IsNklDaEI3Qix1eUdBd0RBOzs0RkR4Q2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7K0xBUWQsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB3aW5kb3cgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1xyXG4gIEdsb2JhbFN0YXRlU2VydmljZSxcclxuICBMYXlvdXRTZXJ2aWNlLFxyXG4gIFBhZ2VJbmZvU2VydmljZSxcclxufSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBJTGF5b3V0LCBMYXlvdXRUeXBlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItdG9vbGJhclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdG9vbGJhci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi90b29sYmFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAvLyBQdWJsaWMgcHJvcHNcclxuICBASW5wdXQoKSBjdXJyZW50TGF5b3V0VHlwZTogTGF5b3V0VHlwZSB8IG51bGw7XHJcbiAgQElucHV0KCkgYXBwVG9vbGJhckxheW91dDpcclxuICAgIHwgXCJjbGFzc2ljXCJcclxuICAgIHwgXCJhY2NvdW50aW5nXCJcclxuICAgIHwgXCJleHRlbmRlZFwiXHJcbiAgICB8IFwicmVwb3J0c1wiXHJcbiAgICB8IFwic2Fhc1wiO1xyXG5cclxuICAvLyB0b29sYmFyXHJcbiAgYXBwVG9vbGJhckRpc3BsYXk6IGJvb2xlYW47XHJcbiAgYXBwVG9vbGJhckNvbnRhaW5lcjogXCJmaXhlZFwiIHwgXCJmbHVpZFwiO1xyXG4gIGFwcFRvb2xiYXJDb250YWluZXJDU1NDbGFzczogc3RyaW5nID0gXCJcIjtcclxuICBhcHBUb29sYmFyRml4ZWREZXNrdG9wOiBib29sZWFuO1xyXG4gIGFwcFRvb2xiYXJGaXhlZE1vYmlsZTogYm9vbGVhbjtcclxuICBhcHBQYWdlVGl0bGVEaXNwbGF5OiBib29sZWFuO1xyXG5cclxuICAvLyBwYWdlIHRpdGxlXHJcbiAgYXBwUGFnZVRpdGxlRGlyZWN0aW9uOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGFwcFBhZ2VUaXRsZUNTU0NsYXNzOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGFwcFBhZ2VUaXRsZUJyZWFkY3J1bWI6IGJvb2xlYW47XHJcbiAgYXBwUGFnZVRpdGxlRGVzY3JpcHRpb246IGJvb2xlYW47XHJcbiAgcXVlclBhcmFtczogYW55O1xyXG4gIHNpbmdsZVNlbGVjdDogYm9vbGVhbjtcclxuICBtdWx0aVNlbGVjdDogYm9vbGVhbjtcclxuICBkYXRlcGlja2VyOiBib29sZWFuO1xyXG4gIHNpbmdsZVNlbGVjdGRhdGVwaWNrZXI6IGJvb2xlYW47XHJcbiAgc2luZ2xlU3RvcmU6IGJvb2xlYW47XHJcbiAgaGVhZGVydmFsdWU6IGFueTtcclxuICBzdG9yZUlkOiBhbnk7XHJcbiAgdXNlcnM6IGFueTtcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHtcclxuICAgIGNsaWVudDogbnVsbCxcclxuICAgIGNsaWVudHM6IFtdLFxyXG4gICAgc3RvcmU6IG51bGwsXHJcbiAgICBzdG9yZXM6IFtdLFxyXG4gICAgZGF0ZTogbnVsbCxcclxuICB9O1xyXG4gIHRyYWZmaWNkYXRlcGlja2VyOiBib29sZWFuO1xyXG4gIHRyYXhkYXRlcGlja2VyOiBib29sZWFuO1xyXG4gIHVybFN0cmluZzphbnk7XHJcbiAgdHJheHdpdGhvdXRkYXRlcGlja2VyOmJvb2xlYW47XHJcbiAgc3RvcmVzU2luZ2xlOmJvb2xlYW47XHJcbiAgbm9iV2l0aG91dENsaWVudDpib29sZWFuO1xyXG4gIG1lcnRpY3NIZWFkZXI6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxheW91dDogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoIDogQXV0aFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKFwidXNlci1pbmZvXCIgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIGNvbnN0IHVzZXJEYXRhOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlci1pbmZvXCIpIHx8IFwie31cIlxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdXNlckRhdGE7XHJcbiAgICB9XHJcbiAgICBpZiAoXCJoZWFkZXItZmlsdGVyc1wiIGluIGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJ7fVwiXHJcbiAgICAgICk7XHJcbiB0aGlzLmNsaWVudCA9IGRhdGE/LmNsaWVudDtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0VXNlckluZm8odGhpcy5jbGllbnQgPyB0aGlzLmNsaWVudCA6IHRoaXMudXNlcnMuY2xpZW50KVxyXG4gICAgdGhpcy5zaG93UGFnZVRpdGxlKCk7XHJcbiAgICBjb25zdCBzdWJzY3IgPSB0aGlzLmxheW91dC5sYXlvdXRDb25maWdTdWJqZWN0XHJcbiAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maWc6IElMYXlvdXQpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVByb3BzKGNvbmZpZyk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5wdXNoKHN1YnNjcik7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9wcyhjb25maWc6IElMYXlvdXQpIHtcclxuICAgIHRoaXMuYXBwVG9vbGJhckRpc3BsYXkgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC50b29sYmFyLmRpc3BsYXlcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAoIXRoaXMuYXBwVG9vbGJhckRpc3BsYXkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwUGFnZVRpdGxlRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnBhZ2VUaXRsZS5kaXNwbGF5XCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5hcHBUb29sYmFyQ29udGFpbmVyID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgXCJhcHAudG9vbGJhci5jb250YWluZXJcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIFwiZmx1aWRcIiB8IFwiZml4ZWRcIjtcclxuICAgIHRoaXMuYXBwVG9vbGJhckNvbnRhaW5lckNTU0NsYXNzID1cclxuICAgICAgdGhpcy5hcHBUb29sYmFyQ29udGFpbmVyID09PSBcImZpeGVkXCJcclxuICAgICAgICA/IFwiY29udGFpbmVyLXh4bFwiXHJcbiAgICAgICAgOiBcImNvbnRhaW5lci1mbHVpZFwiO1xyXG4gICAgY29uc3QgY29udGFpbmVyQ2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC50b29sYmFyLmNvbnRhaW5lckNsYXNzXCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBzdHJpbmc7XHJcbiAgICBpZiAoY29udGFpbmVyQ2xhc3MpIHtcclxuICAgICAgdGhpcy5hcHBUb29sYmFyQ29udGFpbmVyQ1NTQ2xhc3MgKz0gYCAke2NvbnRhaW5lckNsYXNzfWA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBUb29sYmFyRml4ZWREZXNrdG9wID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgXCJhcHAudG9vbGJhci5maXhlZC5kZXNrdG9wXCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHRoaXMuYXBwVG9vbGJhckZpeGVkRGVza3RvcCkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZShcImRhdGEta3QtYXBwLXRvb2xiYXItZml4ZWRcIiwgXCJ0cnVlXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwVG9vbGJhckZpeGVkTW9iaWxlID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgXCJhcHAudG9vbGJhci5maXhlZC5tb2JpbGVcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyRml4ZWRNb2JpbGUpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWt0LWFwcC10b29sYmFyLWZpeGVkLW1vYmlsZVwiLCBcInRydWVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdG9vbGJhclxyXG4gICAgdGhpcy5hcHBQYWdlVGl0bGVEaXJlY3Rpb24gPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC5wYWdlVGl0bGUuZGlyZWN0aW9uXCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmFwcFBhZ2VUaXRsZUNTU0NsYXNzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgXCJhcHAucGFnZVRpdGxlLmNsYXNzXCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmFwcFBhZ2VUaXRsZUJyZWFkY3J1bWIgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC5wYWdlVGl0bGUuYnJlYWRDcnVtYlwiLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMuYXBwUGFnZVRpdGxlRGVzY3JpcHRpb24gPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC5wYWdlVGl0bGUuZGVzY3JpcHRpb25cIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWt0LWFwcC10b29sYmFyLWVuYWJsZWRcIiwgXCJ0cnVlXCIpO1xyXG4gIH1cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuZm9yRWFjaCgoc2IpID0+IHNiLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgLy8gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJ1c2Vyc0VtYWlsLWluZm9cIik7XHJcbiAgfVxyXG4gIGNsaWVudDphbnk7XHJcbiAgdXJsU3RyaW5nMTphbnk7XHJcbiAgc2hvd1BhZ2VUaXRsZSgpIHtcclxuICAgIGxldCBVUkw6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBpZiAoXCJoZWFkZXItZmlsdGVyc1wiIGluIGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJ7fVwiXHJcbiAgICAgICk7XHJcbiAgICAgY29uc3Qgc3RvcmUgPSAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwIGFzIGFueSAgICAgIFxyXG4gICAgICB0aGlzLnN0b3JlSWQgPSAgZGF0YT8uc3RvcmU7XHJcblxyXG4gICAgICBpZihzdG9yZT8ucGFyYW1zPy5bJ3N0b3JlSWQnXSl7XHJcbiAgICAgICAgdGhpcy5zdG9yZUlkID0gc3RvcmUucGFyYW1zWydzdG9yZUlkJ11cclxuICAgICAgICBkYXRhLnN0b3JlID0gc3RvcmUucGFyYW1zWydzdG9yZUlkJ11cclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSlcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgICBjb25zdCB1cGRhdGVkVXJsID0gY3VycmVudFVybC5yZXBsYWNlKFxyXG4gICAgICAgIC9cXC9tYW5hZ2VcXC9zdG9yZXNcXC9cXGQrLVxcZCtcXC8vLFxyXG4gICAgICAgIGAvbWFuYWdlL3N0b3Jlcy9gXHJcbiAgICAgICk7XHJcbiAgICAgIFVSTCA9IHVwZGF0ZWRVcmw7XHJcbiAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFtVUkxdKVxyXG4gICAgfVxyXG4gIGNvbnN0IHVybCA9IFVSTC5zcGxpdChcIj9cIilbMF0uc3BsaXQoJy8nKTtcclxuICB0aGlzLnVybFN0cmluZyA9IFVSTDtcclxuICAgdGhpcy51cmxTdHJpbmcxPSBVUkwuc3BsaXQoJy8nKTtcclxuICBpZiAodGhpcy51c2Vycz8udXNlclR5cGUgPT09IFwidGFuZ29cIikge1xyXG4gICAgaWYgKHVybFsyXSA9PSBcInNldHRpbmdzXCIgfHwgVVJMID09IFwiL21hbmFnZS91c2Vycy9jbGllbnRcIiAgfHxcclxuICAgIFVSTCA9PSBcIi9tYW5hZ2Uvc3RvcmVzXCIgfHwgIFVSTCA9PT0gXCIvbWFuYWdlL3N0b3Jlcz90eXBlPXN0b3Jlc1wiIHx8IFVSTCA9PT0gXCIvbWFuYWdlL3N0b3Jlcz90eXBlPWNsdXN0ZXJzXCIgfHxcclxuICAgIFVSTCA9PSBcIi9tYW5hZ2Uvc3RvcmVzL2FkZGl0aW9uLW1ldGhvZFwiIHx8XHJcbiAgICBVUkwgPT0gXCIvbWFuYWdlL3N0b3Jlcy9hZGQtc2luZ2xlLXN0b3JlXCIgfHwgVVJMID09PSBcIi9tYW5hZ2UvdHJheC9nYWxsZXJ5XCIgfHwgVVJMID09IFwiL25vdGlmaWNhdGlvbnMvYWxlcnRzP3RhYj1hbGVydFwiIHx8ICBVUkwgPT0gXCIvbm90aWZpY2F0aW9ucy9hbGVydHM/dGFiPWRvd25sb2FkXCIgfHwgVVJMID09PSBcIi9tYW5hZ2UvdHJheC9hdWRpdFwiICkge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyh0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9ICBlbHNlIGlmICh1cmxbM10gPT0gXCJlZGdlLWFwcFwiKSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fCAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYS10aWNrZXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH0mdHlwZT1pbmZyYWAgfHxcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9zZXR0aW5ncz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHwgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYS10aWNrZXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH0mdHlwZT1kYXRhTWlzbWF0Y2hgIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvem9uZXM/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvY2FtZXJhcz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHxcclxuICAgICAgLy8gVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYXN0cnVjdHVyZT9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHxcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9tYXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfWVsc2UgaWYgKFVSTCA9PSBcIi90aWNrZXRzL3N0b3Jlc1wiIHx8IFVSTCA9PSBcIi9tYW5hZ2UvdXNlcnMvdGFuZ28vYXVkaXRcIikge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodXJsWzJdID09PSAnY29udHJvbGNlbnRlcicpe1xyXG4gICAgICBpZihVUkwgPT0gYC9tYW5hZ2UvY29udHJvbGNlbnRlci9wbGF5YmFjaz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWB8fCBVUkwgPT0gYC9tYW5hZ2UvY29udHJvbGNlbnRlci9wbGF5YmFja2Ape1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gXHJcbiAgfWVsc2UgaWYgKFVSTCA9PSBcIi9wcm9maWxlXCIgfHwgdXJsWzJdPT09XCJkYXRhLW1pc21hdGNoXCIgfHwgdXJsWzJdPT09XCJlbXBsb3llZXRyYWluaW5nXCIgIFxyXG4gICAgICAgfHwgVVJMID09IFwiL21hbmFnZS9icmFuZHNcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL3VzZXJzL3RhbmdvXCIgfHwgKHVybFsxXSA9PT1cInRpY2tldHNcIiAmJiB1cmxbMl0gPT09IFwiYXVkaXRcIikpIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZihVUkwgPT0gXCIvbWFuYWdlL3RyYWZmaWMvbm9iXCIpe1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT09IFwidHJhZmZpY1wiIHx8IHVybFsyXSA9PT0gXCJ6b25lc1wiIHx8IFVSTCA9PSBcIi9tYW5hZ2UvYW5hbHlzZS9yZXBvcnRzXCIgfHwgVVJMID09IFwiL21hbmFnZS9lbXBsb3llZS1tZXRyaWNzL2JlZWFoR3JvdXBcIiApe1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmKHVybFsyXSA9PT0gXCJlbXBsb3llZS1tZXRyaWNzXCIgJiYgdXJsWzNdID09PSBcImhlYXRtYXBcIil7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSBcImVtcGxveWVlLW1ldHJpY3NcIil7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09ICd0cmF4Jyl7XHJcbiAgICAgIGlmKHVybFsyXSA9PSAndHJheCcgJiYgKHVybC5pbmNsdWRlcygnY3JlYXRlQ2hlY2tsaXN0JykgfHwgdXJsLmluY2x1ZGVzKCdjb25maWd1cmUnKSB8fCB1cmwuaW5jbHVkZXMoJ2NyZWF0ZS1vcmRlcicpfHwgdXJsWzNdID09ICdjcmVhdGUtdGFzaycgfHwgdXJsWzNdID09ICd0YXNrLWNvbmZpZ3VyZScpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9IFxyXG4gICAgICAvLyBlbHNlIGlmKHVybFsyXSA9PSAndHJheCcgJiYgKHVybC5pbmNsdWRlcygndGFza2luZm8nKSkpe1xyXG4gICAgICAvLyAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIGVsc2UgaWYodXJsWzJdID09ICd0cmF4JyAmJiB1cmwuaW5jbHVkZXMoJ3N0YXJ0Jykpe1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnICYmICh1cmwuaW5jbHVkZXMoJ2NoZWNrbGlzdCcpIHx8IHVybC5pbmNsdWRlcygnZ2FsbGVyeScpKSB8fCB1cmwuaW5jbHVkZXMoJ2F1ZGl0JykpIHtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyh0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfSAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNle1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKHVybFszXSA9PSBcImVkZ2UtYXBwXCIgKSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fCAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYS10aWNrZXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH0mdHlwZT1pbmZyYWAgfHxcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9zZXR0aW5ncz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHwgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYS10aWNrZXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH0mdHlwZT1kYXRhTWlzbWF0Y2hgIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvem9uZXM/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvY2FtZXJhcz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHxcclxuICAgICAgLy8gVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYXN0cnVjdHVyZT9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHxcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9tYXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmKHVybFsyXSA9PT0gJ2NvbnRyb2xjZW50ZXInKXtcclxuICAgICAgaWYoVVJMID09IGAvbWFuYWdlL2NvbnRyb2xjZW50ZXIvcGxheWJhY2s/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gfHwgVVJMID09IGAvbWFuYWdlL2NvbnRyb2xjZW50ZXIvcGxheWJhY2tgKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IFxyXG4gIH0gZWxzZSBpZiAoVVJMID09IFwiL3Byb2ZpbGVcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL3VzZXJzL2NsaWVudFwiIHx8IFVSTCA9PSBcIi9tYW5hZ2UvdXNlcnMvdGFuZ29cIiB8fFxyXG4gICAgVVJMID09IFwiL21hbmFnZS9zdG9yZXNcIiB8fCAgVVJMID09PSBcIi9tYW5hZ2Uvc3RvcmVzP3R5cGU9c3RvcmVzXCIgfHwgVVJMID09PSBcIi9tYW5hZ2Uvc3RvcmVzP3R5cGU9Y2x1c3RlcnNcIiB8fCB1cmxbMl0gPT0gXCJzZXR0aW5nc1wiIHx8IFxyXG4gICAgVVJMID09IFwiL21hbmFnZS9zdG9yZXMvYWRkaXRpb24tbWV0aG9kXCIgfHxcclxuICAgIFVSTCA9PSBcIi9tYW5hZ2Uvc3RvcmVzL2FkZC1zaW5nbGUtc3RvcmVcIiB8fCB1cmxbMl09PT1cImRhdGEtbWlzbWF0Y2hcIiB8fCB1cmxbMl09PT1cImVtcGxveWVldHJhaW5pbmdcIiAgfHwgVVJMID09IFwiL25vdGlmaWNhdGlvbnMvYWxlcnRzP3RhYj1hbGVydFwiIHx8ICBVUkwgPT0gXCIvbm90aWZpY2F0aW9ucy9hbGVydHM/dGFiPWRvd25sb2FkXCJcclxuICAgICB8fCBVUkwgPT0gXCIvbWFuYWdlL3VzZXJzL3RhbmdvXCIgfHwgVVJMID09PSBcIi9tYW5hZ2UvY29udHJvbGNlbnRlclwiIHx8IFVSTCA9PT0nbWFuYWdlL2NvbnRyb2xjZW50ZXIvdGVtcGxhdGUtbWFuYWdlcicgfHwgdXJsWzJdPT09J2NvbnRyb2xjZW50ZXInICkge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfWVsc2UgaWYoVVJMID09IFwiL21hbmFnZS90cmFmZmljL25vYlwiKXtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSBcInRyYWZmaWNcIiB8fCB1cmxbMl0gPT09IFwiem9uZXNcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL2FuYWx5c2UvcmVwb3J0c1wiIHx8IFVSTCA9PSBcIi9tYW5hZ2UvZW1wbG95ZWUtbWV0cmljcy9iZWVhaEdyb3VwXCIgKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT09IFwiZW1wbG95ZWUtbWV0cmljc1wiICYmIHVybFszXSA9PT0gXCJoZWF0bWFwXCIpe1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmKHVybFsyXSA9PT0gXCJlbXBsb3llZS1tZXRyaWNzXCIpe1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUpO1xyXG4gICAgfSBlbHNlIGlmKHVybFsyXSA9PSAndHJheCcpe1xyXG4gICAgICBpZih1cmxbMl0gPT0gJ3RyYXgnICYmICh1cmwuaW5jbHVkZXMoJ2NyZWF0ZUNoZWNrbGlzdCcpIHx8IHVybC5pbmNsdWRlcygnY29uZmlndXJlJykgfHwgdXJsLmluY2x1ZGVzKCdjcmVhdGUtb3JkZXInKSB8fCB1cmxbM10gPT0gJ2NyZWF0ZS10YXNrJyB8fCB1cmxbM10gPT0gJ3Rhc2stY29uZmlndXJlJykpIHtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnICYmICh1cmwuaW5jbHVkZXMoJ3Rhc2tpbmZvJykpKXtcclxuICAgICAgLy8gICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgLy8gfVxyXG4gICAgICBlbHNlIGlmKHVybFsyXSA9PSAndHJheCcgJiYgdXJsLmluY2x1ZGVzKCdzdGFydCcpKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodXJsWzJdID09ICd0cmF4JyAmJiAodXJsLmluY2x1ZGVzKCdjaGVja2xpc3QnKSB8fCB1cmwuaW5jbHVkZXMoJ2dhbGxlcnknKSB8fCB1cmwuaW5jbHVkZXMoJ2F1ZGl0JykpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXModHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH0gICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29uc3Qgdmlld3NXaXRoUGFnZVRpdGxlcyA9IFtcImNsYXNzaWNcIiwgXCJyZXBvcnRzXCIsIFwic2Fhc1wiXTtcclxuICByZXR1cm4gKFxyXG4gICAgdGhpcy5hcHBQYWdlVGl0bGVEaXNwbGF5ICYmXHJcbiAgICB2aWV3c1dpdGhQYWdlVGl0bGVzLnNvbWUoKHQpID0+IHQgPT09IHRoaXMuYXBwVG9vbGJhckxheW91dClcclxuICApO1xyXG59XHJcblxyXG5zZXRVSVByb3BlcnRpZXMoXHJcbiAgc2luZ2xlU2VsZWN0OiBib29sZWFuLFxyXG4gIG11bHRpU2VsZWN0OiBib29sZWFuLFxyXG4gIGRhdGVwaWNrZXI6IGJvb2xlYW4sXHJcbiAgc2luZ2xlU3RvcmU6IGJvb2xlYW4sXHJcbiAgc2luZ2xlU2VsZWN0ZGF0ZXBpY2tlcjogYm9vbGVhbixcclxuICB0cmFmZmljZGF0ZXBpY2tlcjpib29sZWFuLFxyXG4gIHRyYXhkYXRlcGlja2VyOmJvb2xlYW4sXHJcbiAgdHJheHdpdGhvdXRkYXRlcGlja2VyOmJvb2xlYW4sXHJcbiAgc3RvcmVzU2luZ2xlOmJvb2xlYW4sXHJcbiAgbm9iV2l0aG91dENsaWVudDpib29sZWFuLFxyXG4gIG1lcnRpY3NIZWFkZXI6Ym9vbGVhblxyXG4pOiB2b2lkIHtcclxuICB0aGlzLnNpbmdsZVNlbGVjdCA9IHNpbmdsZVNlbGVjdDtcclxuICB0aGlzLm11bHRpU2VsZWN0ID0gbXVsdGlTZWxlY3Q7XHJcbiAgdGhpcy5kYXRlcGlja2VyID0gZGF0ZXBpY2tlcjtcclxuICB0aGlzLnNpbmdsZVN0b3JlID0gc2luZ2xlU3RvcmU7XHJcbiAgdGhpcy5zaW5nbGVTZWxlY3RkYXRlcGlja2VyID0gc2luZ2xlU2VsZWN0ZGF0ZXBpY2tlcjtcclxuICB0aGlzLnRyYWZmaWNkYXRlcGlja2VyID0gdHJhZmZpY2RhdGVwaWNrZXI7XHJcbiAgdGhpcy50cmF4ZGF0ZXBpY2tlciA9IHRyYXhkYXRlcGlja2VyO1xyXG4gIHRoaXMudHJheHdpdGhvdXRkYXRlcGlja2VyID0gdHJheHdpdGhvdXRkYXRlcGlja2VyO1xyXG4gIHRoaXMuc3RvcmVzU2luZ2xlID0gc3RvcmVzU2luZ2xlO1xyXG4gIHRoaXMubm9iV2l0aG91dENsaWVudCA9IG5vYldpdGhvdXRDbGllbnQ7XHJcbiAgdGhpcy5tZXJ0aWNzSGVhZGVyID0gbWVydGljc0hlYWRlcjtcclxuXHJcbn1cclxuXHJcbmdldFVzZXJJbmZvKGNsaWVudDphbnkpe1xyXG4gIGxldCBvYmogPXtcclxuICAgICAgY2xpZW50SWQ6IGNsaWVudCA/IGNsaWVudCA6JydcclxuICB9XHJcbiAgaWYoY2xpZW50KXtcclxuICAgIHRoaXMuYXV0aC5nZXRIZWFkZXJVc2VycyhvYmopLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICBcInVzZXJzRW1haWwtaW5mb1wiLFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZT8uZGF0YT8udXNlckVtYWlsRGF0YSB8fCBbXSkgXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbn1cclxuIiwiPCEtLWJlZ2luOjpUb29sYmFyIGNvbnRhaW5lci0tPlxyXG48ZGl2IGlkPVwia3RfYXBwX3Rvb2xiYXJfY29udGFpbmVyXCIgY2xhc3M9XCJhcHAtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiYXBwVG9vbGJhckNvbnRhaW5lckNTU0NsYXNzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJyB8fCAoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICdjbGllbnQnIHx8IChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ2xlYWQnXCIgID5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1BhZ2VUaXRsZSgpXCI+XHJcbiAgICA8bGliLXBhZ2UtdGl0bGUgW2FwcFBhZ2VUaXRsZURpcmVjdGlvbl09XCJhcHBQYWdlVGl0bGVEaXJlY3Rpb25cIiBbYXBwUGFnZVRpdGxlQnJlYWRjcnVtYl09XCJhcHBQYWdlVGl0bGVCcmVhZGNydW1iXCJcclxuICAgICAgW2FwcFBhZ2VUaXRsZURlc2NyaXB0aW9uXT1cImFwcFBhZ2VUaXRsZURlc2NyaXB0aW9uXCIgY2xhc3M9XCJwYWdlLXRpdGxlIGQtZmxleCBmbGV4LXdyYXAgbWUtM1wiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsnZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlcic6IGFwcFBhZ2VUaXRsZURpcmVjdGlvbiA9PT0gJ2NvbHVtbicsICdhbGlnbi1pdGVtcy1jZW50ZXInOiBhcHBQYWdlVGl0bGVEaXJlY3Rpb24gIT09ICdjb2x1bW4nLCBhcHBQYWdlVGl0bGVDU1NDbGFzc31cIj5cclxuICAgIDwvbGliLXBhZ2UtdGl0bGU+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aVNlbGVjdCAmJiB1c2Vycy51c2VyVHlwZSA9PT0ndGFuZ28nXCI+XHJcbiAgICA8bGliLWNsYXNzaWMgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGdhcC1sZy0zXCI+PC9saWItY2xhc3NpYz5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2luZ2xlU2VsZWN0ICYmIHVzZXJzLnVzZXJUeXBlID09PSd0YW5nbydcIj5cclxuICAgIDxsaWItY2xpZW50LXNldHRpbmdzIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItY2xpZW50LXNldHRpbmdzPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGVwaWNrZXIgJiYgKHVzZXJzLnVzZXJUeXBlID09PSdjbGllbnQnIHx8IHVzZXJzLnVzZXJUeXBlID09PSd0YW5nbycpXCI+XHJcbiAgICA8bGliLWRhdGVwaWNrZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi1kYXRlcGlja2VyPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNpbmdsZVNlbGVjdGRhdGVwaWNrZXIgJiYgdXNlcnMudXNlclR5cGUgPT09J3RhbmdvJ1wiPlxyXG4gICAgPGxpYi1kYXRlLXNpbmdsZS1zZWxlY3QgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi1kYXRlLXNpbmdsZS1zZWxlY3Q+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwic2luZ2xlU3RvcmVcIj5cclxuICAgIDxsaWItc2luZ2xlLXN0b3JlIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItc2luZ2xlLXN0b3JlPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYWZmaWNkYXRlcGlja2VyXCI+XHJcbiAgICA8bGliLXRyYWZmaWMtaGVhZGVyIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItdHJhZmZpYy1oZWFkZXI+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwidHJheGRhdGVwaWNrZXJcIj5cclxuICAgIDxsaWItdHJheC1oZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi10cmF4LWhlYWRlcj5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmF4d2l0aG91dGRhdGVwaWNrZXJcIj5cclxuICAgIDxsaWItdHJheC13aXRob3V0ZGF0ZSBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLXRyYXgtd2l0aG91dGRhdGU+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RvcmVzU2luZ2xlXCI+XHJcbiAgICA8bGliLXNpbmdsZS1zdG9yZWRhdGUgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi1zaW5nbGUtc3RvcmVkYXRlPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vYldpdGhvdXRDbGllbnRcIj5cclxuICAgIDxsaWItdHJhZmZpYy1ub2IgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi10cmFmZmljLW5vYj5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVydGljc0hlYWRlclwiPlxyXG4gICAgPGxpYi1tZXRyaWNzLWhlYWRlciBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLW1ldHJpY3MtaGVhZGVyPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcFRvb2xiYXJMYXlvdXQgPT09ICdleHRlbmRlZCdcIj5cclxuICAgIDxsaWItZXh0ZW5kZWQgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtc2hyaW5rLTAgbWUtNVwiPjwvbGliLWV4dGVuZGVkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBUb29sYmFyTGF5b3V0ID09PSAncmVwb3J0cydcIj5cclxuICAgIDxsaWItcmVwb3J0cyBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgb3ZlcmZsb3ctYXV0b1wiIFthcHBQYWdlVGl0bGVEaXNwbGF5XT1cImFwcFBhZ2VUaXRsZURpc3BsYXlcIj5cclxuICAgIDwvbGliLXJlcG9ydHM+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcFRvb2xiYXJMYXlvdXQgPT09ICdzYWFzJ1wiPlxyXG4gICAgPGxpYi1zYWFzIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiIFthcHBQYWdlVGl0bGVEaXNwbGF5XT1cImFwcFBhZ2VUaXRsZURpc3BsYXlcIj48L2xpYi1zYWFzPlxyXG4gIDwvbmctY29udGFpbmVyPiAtLT5cclxuPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG48IS0tZW5kOjpUb29sYmFyIGNvbnRhaW5lci0tPlxyXG4iXX0=