tango-app-ui-shared 3.7.3-dev6-demo6 → 3.7.3-dev6-demo7

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 (402) hide show
  1. package/.eslintrc.json +37 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +12 -25
  4. package/src/lib/guards/auth.guard.ts +20 -0
  5. package/src/lib/guards/lead.guard.ts +16 -0
  6. package/src/lib/guards/stores.guard.ts +16 -0
  7. package/src/lib/guards/tickets.guard.ts +16 -0
  8. package/{lib/i18n/index.d.ts → src/lib/i18n/index.ts} +2 -2
  9. package/src/lib/i18n/translation.module.ts +9 -0
  10. package/src/lib/i18n/translation.service.ts +61 -0
  11. package/src/lib/i18n/vocabs/ch.ts +105 -0
  12. package/src/lib/i18n/vocabs/de.ts +105 -0
  13. package/src/lib/i18n/vocabs/en.ts +105 -0
  14. package/src/lib/i18n/vocabs/es.ts +105 -0
  15. package/src/lib/i18n/vocabs/fr.ts +105 -0
  16. package/src/lib/i18n/vocabs/jp.ts +105 -0
  17. package/src/lib/interceptors/http-auth-interceptor.ts +225 -0
  18. package/src/lib/interfaces/global-state.ts +6 -0
  19. package/src/lib/modules/common/common-shared.module.ts +20 -0
  20. package/src/lib/modules/common/custom-select/custom-select.component.html +42 -0
  21. package/src/lib/modules/common/custom-select/custom-select.component.scss +131 -0
  22. package/src/lib/modules/common/custom-select/custom-select.component.spec.ts +23 -0
  23. package/src/lib/modules/common/custom-select/custom-select.component.ts +149 -0
  24. package/src/lib/modules/common/filters/filters.component.html +76 -0
  25. package/src/lib/modules/common/filters/filters.component.scss +131 -0
  26. package/src/lib/modules/common/filters/filters.component.spec.ts +23 -0
  27. package/src/lib/modules/common/filters/filters.component.ts +181 -0
  28. package/src/lib/modules/common/pagination/pagination.component.html +26 -0
  29. package/src/lib/modules/common/pagination/pagination.component.scss +63 -0
  30. package/src/lib/modules/common/pagination/pagination.component.spec.ts +23 -0
  31. package/src/lib/modules/common/pagination/pagination.component.ts +46 -0
  32. package/src/lib/modules/errors/error403/error403.component.html +25 -0
  33. package/src/lib/modules/errors/error403/error403.component.scss +0 -0
  34. package/src/lib/modules/errors/error403/error403.component.spec.ts +23 -0
  35. package/src/lib/modules/errors/error403/error403.component.ts +28 -0
  36. package/src/lib/modules/errors/error404/error404.component.html +24 -0
  37. package/src/lib/modules/errors/error404/error404.component.scss +0 -0
  38. package/src/lib/modules/errors/error404/error404.component.spec.ts +25 -0
  39. package/src/lib/modules/errors/error404/error404.component.ts +50 -0
  40. package/src/lib/modules/errors/error500/error500.component.html +24 -0
  41. package/src/lib/modules/errors/error500/error500.component.scss +0 -0
  42. package/src/lib/modules/errors/error500/error500.component.spec.ts +25 -0
  43. package/src/lib/modules/errors/error500/error500.component.ts +50 -0
  44. package/src/lib/modules/errors/errors-routing.module.ts +40 -0
  45. package/src/lib/modules/errors/errors.component.html +15 -0
  46. package/src/lib/modules/errors/errors.component.scss +4 -0
  47. package/src/lib/modules/errors/errors.component.spec.ts +25 -0
  48. package/src/lib/modules/errors/errors.component.ts +42 -0
  49. package/src/lib/modules/errors/errors.module.ts +25 -0
  50. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.html +16 -0
  51. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.scss +0 -0
  52. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.spec.ts +23 -0
  53. package/src/lib/modules/errors/invalid-ip/invalid-ip.component.ts +43 -0
  54. package/src/lib/modules/intro/contact-support/contact-support.component.html +30 -0
  55. package/src/lib/modules/intro/contact-support/contact-support.component.scss +60 -0
  56. package/src/lib/modules/intro/contact-support/contact-support.component.spec.ts +23 -0
  57. package/src/lib/modules/intro/contact-support/contact-support.component.ts +17 -0
  58. package/src/lib/modules/intro/intro-routing.module.ts +16 -0
  59. package/src/lib/modules/intro/intro.module.ts +21 -0
  60. package/src/lib/modules/intro/lead-intro/lead-intro.component.html +325 -0
  61. package/src/lib/modules/intro/lead-intro/lead-intro.component.scss +185 -0
  62. package/src/lib/modules/intro/lead-intro/lead-intro.component.spec.ts +23 -0
  63. package/src/lib/modules/intro/lead-intro/lead-intro.component.ts +120 -0
  64. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.html +44 -0
  65. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.scss +28 -0
  66. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.spec.ts +23 -0
  67. package/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.ts +24 -0
  68. package/src/lib/modules/layout/content/content.component.html +12 -0
  69. package/src/lib/modules/layout/content/content.component.scss +0 -0
  70. package/src/lib/modules/layout/content/content.component.ts +102 -0
  71. package/src/lib/modules/layout/footer/footer.component.html +29 -0
  72. package/src/lib/modules/layout/footer/footer.component.scss +7 -0
  73. package/src/lib/modules/layout/footer/footer.component.spec.ts +25 -0
  74. package/src/lib/modules/layout/footer/footer.component.ts +13 -0
  75. package/src/lib/modules/layout/header/header-menu/header-menu.component.html +27 -0
  76. package/src/lib/modules/layout/header/header-menu/header-menu.component.scss +4 -0
  77. package/src/lib/modules/layout/header/header-menu/header-menu.component.spec.ts +25 -0
  78. package/src/lib/modules/layout/header/header-menu/header-menu.component.ts +38 -0
  79. package/src/lib/modules/layout/header/header.component.html +90 -0
  80. package/src/lib/modules/layout/header/header.component.scss +7 -0
  81. package/src/lib/modules/layout/header/header.component.spec.ts +25 -0
  82. package/src/lib/modules/layout/header/header.component.ts +139 -0
  83. package/src/lib/modules/layout/header/navbar/navbar.component.html +156 -0
  84. package/src/lib/modules/layout/header/navbar/navbar.component.scss +223 -0
  85. package/src/lib/modules/layout/header/navbar/navbar.component.spec.ts +23 -0
  86. package/src/lib/modules/layout/header/navbar/navbar.component.ts +255 -0
  87. package/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.html +200 -0
  88. package/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.scss +139 -0
  89. package/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.ts +76 -0
  90. package/src/lib/modules/layout/header/page-title/page-title.component.html +32 -0
  91. package/src/lib/modules/layout/header/page-title/page-title.component.scss +11 -0
  92. package/src/lib/modules/layout/header/page-title/page-title.component.ts +47 -0
  93. package/src/lib/modules/layout/keenicon/icons.json +1 -0
  94. package/src/lib/modules/layout/keenicon/keenicon.component.html +4 -0
  95. package/src/lib/modules/layout/keenicon/keenicon.component.scss +0 -0
  96. package/src/lib/modules/layout/keenicon/keenicon.component.spec.ts +23 -0
  97. package/src/lib/modules/layout/keenicon/keenicon.component.ts +30 -0
  98. package/src/lib/modules/layout/layout/layout.component.html +71 -0
  99. package/src/lib/modules/layout/layout/layout.component.scss +23 -0
  100. package/src/lib/modules/layout/layout/layout.component.ts +425 -0
  101. package/src/lib/modules/layout/layout.module.ts +129 -0
  102. package/src/lib/modules/layout/scripts-init/scripts-init.component.html +0 -0
  103. package/src/lib/modules/layout/scripts-init/scripts-init.component.ts +81 -0
  104. package/src/lib/modules/layout/scroll-top/scroll-top.component.html +1 -0
  105. package/src/lib/modules/layout/scroll-top/scroll-top.component.ts +75 -0
  106. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.html +70 -0
  107. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.scss +57 -0
  108. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.spec.ts +23 -0
  109. package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.ts +136 -0
  110. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.html +26 -0
  111. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.scss +0 -0
  112. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.spec.ts +23 -0
  113. package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.ts +36 -0
  114. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.html +761 -0
  115. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.scss +38 -0
  116. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.spec.ts +23 -0
  117. package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.ts +130 -0
  118. package/src/lib/modules/layout/sidebar/sidebar.component.html +16 -0
  119. package/src/lib/modules/layout/sidebar/sidebar.component.scss +3 -0
  120. package/src/lib/modules/layout/sidebar/sidebar.component.spec.ts +23 -0
  121. package/src/lib/modules/layout/sidebar/sidebar.component.ts +203 -0
  122. package/src/lib/modules/layout/toolbar/accounting/accounting.component.html +84 -0
  123. package/src/lib/modules/layout/toolbar/accounting/accounting.component.scss +0 -0
  124. package/src/lib/modules/layout/toolbar/accounting/accounting.component.spec.ts +23 -0
  125. package/src/lib/modules/layout/toolbar/accounting/accounting.component.ts +14 -0
  126. package/src/lib/modules/layout/toolbar/classic/classic.component.html +69 -0
  127. package/src/lib/modules/layout/toolbar/classic/classic.component.scss +238 -0
  128. package/src/lib/modules/layout/toolbar/classic/classic.component.spec.ts +23 -0
  129. package/src/lib/modules/layout/toolbar/classic/classic.component.ts +389 -0
  130. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.html +4 -0
  131. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.scss +3 -0
  132. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.spec.ts +23 -0
  133. package/src/lib/modules/layout/toolbar/client-settings/client-settings.component.ts +91 -0
  134. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.html +22 -0
  135. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.scss +156 -0
  136. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.spec.ts +23 -0
  137. package/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.ts +238 -0
  138. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.html +14 -0
  139. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.scss +149 -0
  140. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.spec.ts +23 -0
  141. package/src/lib/modules/layout/toolbar/datepicker/datepicker.component.ts +183 -0
  142. package/src/lib/modules/layout/toolbar/extended/extended.component.html +100 -0
  143. package/src/lib/modules/layout/toolbar/extended/extended.component.scss +0 -0
  144. package/src/lib/modules/layout/toolbar/extended/extended.component.spec.ts +23 -0
  145. package/src/lib/modules/layout/toolbar/extended/extended.component.ts +12 -0
  146. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.html +311 -0
  147. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.scss +311 -0
  148. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.spec.ts +23 -0
  149. package/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.ts +1555 -0
  150. package/src/lib/modules/layout/toolbar/reports/reports.component.html +62 -0
  151. package/src/lib/modules/layout/toolbar/reports/reports.component.scss +0 -0
  152. package/src/lib/modules/layout/toolbar/reports/reports.component.spec.ts +23 -0
  153. package/src/lib/modules/layout/toolbar/reports/reports.component.ts +14 -0
  154. package/src/lib/modules/layout/toolbar/saas/saas.component.html +77 -0
  155. package/src/lib/modules/layout/toolbar/saas/saas.component.scss +0 -0
  156. package/src/lib/modules/layout/toolbar/saas/saas.component.spec.ts +23 -0
  157. package/src/lib/modules/layout/toolbar/saas/saas.component.ts +14 -0
  158. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.html +26 -0
  159. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.scss +176 -0
  160. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.spec.ts +23 -0
  161. package/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.ts +235 -0
  162. package/src/lib/modules/layout/toolbar/single-store/single-store.component.html +39 -0
  163. package/src/lib/modules/layout/toolbar/single-store/single-store.component.scss +176 -0
  164. package/src/lib/modules/layout/toolbar/single-store/single-store.component.spec.ts +23 -0
  165. package/src/lib/modules/layout/toolbar/single-store/single-store.component.ts +188 -0
  166. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.html +17 -0
  167. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.scss +172 -0
  168. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.spec.ts +23 -0
  169. package/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.ts +179 -0
  170. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.html +4 -0
  171. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.scss +19 -0
  172. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.spec.ts +23 -0
  173. package/src/lib/modules/layout/toolbar/storesingle/storesingle.component.ts +105 -0
  174. package/src/lib/modules/layout/toolbar/toolbar.component.html +64 -0
  175. package/src/lib/modules/layout/toolbar/toolbar.component.scss +0 -0
  176. package/src/lib/modules/layout/toolbar/toolbar.component.spec.ts +25 -0
  177. package/src/lib/modules/layout/toolbar/toolbar.component.ts +400 -0
  178. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.html +259 -0
  179. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.scss +305 -0
  180. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.spec.ts +23 -0
  181. package/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.ts +1202 -0
  182. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.html +199 -0
  183. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.scss +311 -0
  184. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.spec.ts +23 -0
  185. package/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.ts +899 -0
  186. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.html +204 -0
  187. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.scss +311 -0
  188. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.spec.ts +23 -0
  189. package/src/lib/modules/layout/toolbar/trax-header/trax-header.component.ts +1045 -0
  190. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.html +190 -0
  191. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.scss +311 -0
  192. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.spec.ts +23 -0
  193. package/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.ts +825 -0
  194. package/src/lib/modules/layout/toolbar/zone-header/zone-header.component.html +259 -0
  195. package/src/lib/modules/layout/toolbar/zone-header/zone-header.component.scss +305 -0
  196. package/src/lib/modules/layout/toolbar/zone-header/zone-header.component.spec.ts +23 -0
  197. package/src/lib/modules/layout/toolbar/zone-header/zone-header.component.ts +1242 -0
  198. package/src/lib/modules/notification/conformation/conformation.component.html +25 -0
  199. package/src/lib/modules/notification/conformation/conformation.component.scss +0 -0
  200. package/src/lib/modules/notification/conformation/conformation.component.spec.ts +23 -0
  201. package/src/lib/modules/notification/conformation/conformation.component.ts +23 -0
  202. package/src/lib/modules/notification/notification/notification.component.html +209 -0
  203. package/src/lib/modules/notification/notification/notification.component.scss +211 -0
  204. package/src/lib/modules/notification/notification/notification.component.spec.ts +23 -0
  205. package/src/lib/modules/notification/notification/notification.component.ts +310 -0
  206. package/src/lib/modules/notification/notification-routing.module.ts +20 -0
  207. package/src/lib/modules/notification/notification.module.ts +21 -0
  208. package/src/lib/pipes/customDate.pipe.ts +18 -0
  209. package/src/lib/routes/route-wraper-modules/analyse-wrapper.module.ts +12 -0
  210. package/src/lib/routes/route-wraper-modules/edge-wrapper.module.ts +11 -0
  211. package/src/lib/routes/route-wraper-modules/manage-wrapper.module.ts +11 -0
  212. package/src/lib/routes/route-wraper-modules/profile-wrapper.module.ts +12 -0
  213. package/src/lib/routes/route-wraper-modules/store-wrapper.module.ts +11 -0
  214. package/src/lib/routes/route-wraper-modules/ticket-wrapper.module.ts +10 -0
  215. package/src/lib/routes/routing.ts +56 -0
  216. package/src/lib/services/auth.service.ts +178 -0
  217. package/src/lib/services/notification.service.spec.ts +16 -0
  218. package/src/lib/services/notification.service.ts +73 -0
  219. package/src/lib/services/toast.service.ts +82 -0
  220. package/{public-api.d.ts → src/public-api.ts} +71 -44
  221. package/tsconfig.lib.json +14 -0
  222. package/tsconfig.lib.prod.json +10 -0
  223. package/tsconfig.spec.json +14 -0
  224. package/esm2022/lib/guards/auth.guard.mjs +0 -26
  225. package/esm2022/lib/guards/lead.guard.mjs +0 -16
  226. package/esm2022/lib/guards/stores.guard.mjs +0 -16
  227. package/esm2022/lib/guards/tickets.guard.mjs +0 -16
  228. package/esm2022/lib/i18n/index.mjs +0 -3
  229. package/esm2022/lib/i18n/translation.module.mjs +0 -17
  230. package/esm2022/lib/i18n/translation.service.mjs +0 -53
  231. package/esm2022/lib/i18n/vocabs/ch.mjs +0 -106
  232. package/esm2022/lib/i18n/vocabs/de.mjs +0 -106
  233. package/esm2022/lib/i18n/vocabs/en.mjs +0 -106
  234. package/esm2022/lib/i18n/vocabs/es.mjs +0 -106
  235. package/esm2022/lib/i18n/vocabs/fr.mjs +0 -106
  236. package/esm2022/lib/i18n/vocabs/jp.mjs +0 -106
  237. package/esm2022/lib/interceptors/http-auth-interceptor.mjs +0 -124
  238. package/esm2022/lib/interfaces/global-state.mjs +0 -2
  239. package/esm2022/lib/modules/common/common-shared.module.mjs +0 -31
  240. package/esm2022/lib/modules/common/custom-select/custom-select.component.mjs +0 -155
  241. package/esm2022/lib/modules/common/filters/filters.component.mjs +0 -179
  242. package/esm2022/lib/modules/common/pagination/pagination.component.mjs +0 -49
  243. package/esm2022/lib/modules/errors/error403/error403.component.mjs +0 -33
  244. package/esm2022/lib/modules/errors/error404/error404.component.mjs +0 -44
  245. package/esm2022/lib/modules/errors/error500/error500.component.mjs +0 -45
  246. package/esm2022/lib/modules/errors/errors-routing.module.mjs +0 -48
  247. package/esm2022/lib/modules/errors/errors.component.mjs +0 -39
  248. package/esm2022/lib/modules/errors/errors.module.mjs +0 -37
  249. package/esm2022/lib/modules/errors/invalid-ip/invalid-ip.component.mjs +0 -44
  250. package/esm2022/lib/modules/intro/contact-support/contact-support.component.mjs +0 -19
  251. package/esm2022/lib/modules/intro/intro-routing.module.mjs +0 -24
  252. package/esm2022/lib/modules/intro/intro.module.mjs +0 -32
  253. package/esm2022/lib/modules/intro/lead-intro/lead-intro.component.mjs +0 -110
  254. package/esm2022/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.mjs +0 -31
  255. package/esm2022/lib/modules/layout/content/content.component.mjs +0 -107
  256. package/esm2022/lib/modules/layout/footer/footer.component.mjs +0 -17
  257. package/esm2022/lib/modules/layout/header/header-menu/header-menu.component.mjs +0 -41
  258. package/esm2022/lib/modules/layout/header/header.component.mjs +0 -100
  259. package/esm2022/lib/modules/layout/header/navbar/navbar.component.mjs +0 -256
  260. package/esm2022/lib/modules/layout/header/notifications-inner/notifications-inner.component.mjs +0 -79
  261. package/esm2022/lib/modules/layout/header/page-title/page-title.component.mjs +0 -56
  262. package/esm2022/lib/modules/layout/keenicon/icons.json +0 -1
  263. package/esm2022/lib/modules/layout/keenicon/keenicon.component.mjs +0 -37
  264. package/esm2022/lib/modules/layout/layout/layout.component.mjs +0 -314
  265. package/esm2022/lib/modules/layout/layout.module.mjs +0 -198
  266. package/esm2022/lib/modules/layout/scripts-init/scripts-init.component.mjs +0 -74
  267. package/esm2022/lib/modules/layout/scroll-top/scroll-top.component.mjs +0 -74
  268. package/esm2022/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.mjs +0 -159
  269. package/esm2022/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.mjs +0 -45
  270. package/esm2022/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.mjs +0 -122
  271. package/esm2022/lib/modules/layout/sidebar/sidebar.component.mjs +0 -134
  272. package/esm2022/lib/modules/layout/toolbar/accounting/accounting.component.mjs +0 -16
  273. package/esm2022/lib/modules/layout/toolbar/classic/classic.component.mjs +0 -331
  274. package/esm2022/lib/modules/layout/toolbar/client-settings/client-settings.component.mjs +0 -88
  275. package/esm2022/lib/modules/layout/toolbar/date-single-select/date-single-select.component.mjs +0 -207
  276. package/esm2022/lib/modules/layout/toolbar/datepicker/datepicker.component.mjs +0 -158
  277. package/esm2022/lib/modules/layout/toolbar/extended/extended.component.mjs +0 -15
  278. package/esm2022/lib/modules/layout/toolbar/metrics-header/metrics-header.component.mjs +0 -1321
  279. package/esm2022/lib/modules/layout/toolbar/reports/reports.component.mjs +0 -18
  280. package/esm2022/lib/modules/layout/toolbar/saas/saas.component.mjs +0 -18
  281. package/esm2022/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.mjs +0 -216
  282. package/esm2022/lib/modules/layout/toolbar/single-store/single-store.component.mjs +0 -178
  283. package/esm2022/lib/modules/layout/toolbar/single-storedate/single-storedate.component.mjs +0 -166
  284. package/esm2022/lib/modules/layout/toolbar/storesingle/storesingle.component.mjs +0 -105
  285. package/esm2022/lib/modules/layout/toolbar/toolbar.component.mjs +0 -372
  286. package/esm2022/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.mjs +0 -1062
  287. package/esm2022/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.mjs +0 -795
  288. package/esm2022/lib/modules/layout/toolbar/trax-header/trax-header.component.mjs +0 -880
  289. package/esm2022/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.mjs +0 -729
  290. package/esm2022/lib/modules/layout/toolbar/zone-header/zone-header.component.mjs +0 -1088
  291. package/esm2022/lib/modules/notification/conformation/conformation.component.mjs +0 -22
  292. package/esm2022/lib/modules/notification/notification/notification.component.mjs +0 -317
  293. package/esm2022/lib/modules/notification/notification-routing.module.mjs +0 -28
  294. package/esm2022/lib/modules/notification/notification.module.mjs +0 -32
  295. package/esm2022/lib/pipes/customDate.pipe.mjs +0 -22
  296. package/esm2022/lib/routes/route-wraper-modules/edge-wrapper.module.mjs +0 -18
  297. package/esm2022/lib/routes/route-wraper-modules/manage-wrapper.module.mjs +0 -18
  298. package/esm2022/lib/routes/route-wraper-modules/profile-wrapper.module.mjs +0 -18
  299. package/esm2022/lib/routes/route-wraper-modules/store-wrapper.module.mjs +0 -18
  300. package/esm2022/lib/routes/route-wraper-modules/ticket-wrapper.module.mjs +0 -18
  301. package/esm2022/lib/routes/routing.mjs +0 -53
  302. package/esm2022/lib/services/auth.service.mjs +0 -141
  303. package/esm2022/lib/services/notification.service.mjs +0 -74
  304. package/esm2022/lib/services/toast.service.mjs +0 -83
  305. package/esm2022/public-api.mjs +0 -56
  306. package/esm2022/tango-app-ui-shared.mjs +0 -5
  307. package/fesm2022/tango-app-ui-shared-edge-wrapper.module-CFDk0tvS.mjs +0 -21
  308. package/fesm2022/tango-app-ui-shared-edge-wrapper.module-CFDk0tvS.mjs.map +0 -1
  309. package/fesm2022/tango-app-ui-shared-intro.module-DYh4ZRha.mjs +0 -188
  310. package/fesm2022/tango-app-ui-shared-intro.module-DYh4ZRha.mjs.map +0 -1
  311. package/fesm2022/tango-app-ui-shared-manage-wrapper.module-BHyh4Njw.mjs +0 -21
  312. package/fesm2022/tango-app-ui-shared-manage-wrapper.module-BHyh4Njw.mjs.map +0 -1
  313. package/fesm2022/tango-app-ui-shared-notification.module-C5ZmCf8U.mjs +0 -400
  314. package/fesm2022/tango-app-ui-shared-notification.module-C5ZmCf8U.mjs.map +0 -1
  315. package/fesm2022/tango-app-ui-shared-profile-wrapper.module-BNC1AGOk.mjs +0 -21
  316. package/fesm2022/tango-app-ui-shared-profile-wrapper.module-BNC1AGOk.mjs.map +0 -1
  317. package/fesm2022/tango-app-ui-shared-store-wrapper.module-DdaCYHdv.mjs +0 -21
  318. package/fesm2022/tango-app-ui-shared-store-wrapper.module-DdaCYHdv.mjs.map +0 -1
  319. package/fesm2022/tango-app-ui-shared-ticket-wrapper.module-r32uKkDO.mjs +0 -21
  320. package/fesm2022/tango-app-ui-shared-ticket-wrapper.module-r32uKkDO.mjs.map +0 -1
  321. package/fesm2022/tango-app-ui-shared.mjs +0 -12438
  322. package/fesm2022/tango-app-ui-shared.mjs.map +0 -1
  323. package/index.d.ts +0 -5
  324. package/lib/guards/auth.guard.d.ts +0 -10
  325. package/lib/guards/lead.guard.d.ts +0 -2
  326. package/lib/guards/stores.guard.d.ts +0 -2
  327. package/lib/guards/tickets.guard.d.ts +0 -2
  328. package/lib/i18n/translation.module.d.ts +0 -8
  329. package/lib/i18n/translation.service.d.ts +0 -19
  330. package/lib/i18n/vocabs/ch.d.ts +0 -104
  331. package/lib/i18n/vocabs/de.d.ts +0 -104
  332. package/lib/i18n/vocabs/en.d.ts +0 -104
  333. package/lib/i18n/vocabs/es.d.ts +0 -104
  334. package/lib/i18n/vocabs/fr.d.ts +0 -104
  335. package/lib/i18n/vocabs/jp.d.ts +0 -104
  336. package/lib/interceptors/http-auth-interceptor.d.ts +0 -19
  337. package/lib/interfaces/global-state.d.ts +0 -5
  338. package/lib/modules/common/common-shared.module.d.ts +0 -13
  339. package/lib/modules/common/custom-select/custom-select.component.d.ts +0 -33
  340. package/lib/modules/common/filters/filters.component.d.ts +0 -38
  341. package/lib/modules/common/pagination/pagination.component.d.ts +0 -18
  342. package/lib/modules/errors/error403/error403.component.d.ts +0 -14
  343. package/lib/modules/errors/error404/error404.component.d.ts +0 -15
  344. package/lib/modules/errors/error500/error500.component.d.ts +0 -15
  345. package/lib/modules/errors/errors-routing.module.d.ts +0 -7
  346. package/lib/modules/errors/errors.component.d.ts +0 -13
  347. package/lib/modules/errors/errors.module.d.ts +0 -13
  348. package/lib/modules/errors/invalid-ip/invalid-ip.component.d.ts +0 -17
  349. package/lib/modules/intro/contact-support/contact-support.component.d.ts +0 -9
  350. package/lib/modules/intro/intro-routing.module.d.ts +0 -7
  351. package/lib/modules/intro/intro.module.d.ts +0 -11
  352. package/lib/modules/intro/lead-intro/lead-intro.component.d.ts +0 -31
  353. package/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.d.ts +0 -13
  354. package/lib/modules/layout/content/content.component.d.ts +0 -25
  355. package/lib/modules/layout/footer/footer.component.d.ts +0 -8
  356. package/lib/modules/layout/header/header-menu/header-menu.component.d.ts +0 -18
  357. package/lib/modules/layout/header/header.component.d.ts +0 -30
  358. package/lib/modules/layout/header/navbar/navbar.component.d.ts +0 -45
  359. package/lib/modules/layout/header/notifications-inner/notifications-inner.component.d.ts +0 -25
  360. package/lib/modules/layout/header/page-title/page-title.component.d.ts +0 -23
  361. package/lib/modules/layout/keenicon/keenicon.component.d.ts +0 -13
  362. package/lib/modules/layout/layout/layout.component.d.ts +0 -82
  363. package/lib/modules/layout/layout.module.d.ts +0 -50
  364. package/lib/modules/layout/scripts-init/scripts-init.component.d.ts +0 -19
  365. package/lib/modules/layout/scroll-top/scroll-top.component.d.ts +0 -19
  366. package/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.d.ts +0 -45
  367. package/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.d.ts +0 -19
  368. package/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.d.ts +0 -26
  369. package/lib/modules/layout/sidebar/sidebar.component.d.ts +0 -36
  370. package/lib/modules/layout/toolbar/accounting/accounting.component.d.ts +0 -8
  371. package/lib/modules/layout/toolbar/classic/classic.component.d.ts +0 -48
  372. package/lib/modules/layout/toolbar/client-settings/client-settings.component.d.ts +0 -16
  373. package/lib/modules/layout/toolbar/date-single-select/date-single-select.component.d.ts +0 -28
  374. package/lib/modules/layout/toolbar/datepicker/datepicker.component.d.ts +0 -28
  375. package/lib/modules/layout/toolbar/extended/extended.component.d.ts +0 -8
  376. package/lib/modules/layout/toolbar/metrics-header/metrics-header.component.d.ts +0 -103
  377. package/lib/modules/layout/toolbar/reports/reports.component.d.ts +0 -9
  378. package/lib/modules/layout/toolbar/saas/saas.component.d.ts +0 -9
  379. package/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.d.ts +0 -32
  380. package/lib/modules/layout/toolbar/single-store/single-store.component.d.ts +0 -33
  381. package/lib/modules/layout/toolbar/single-storedate/single-storedate.component.d.ts +0 -34
  382. package/lib/modules/layout/toolbar/storesingle/storesingle.component.d.ts +0 -24
  383. package/lib/modules/layout/toolbar/toolbar.component.d.ts +0 -57
  384. package/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.d.ts +0 -93
  385. package/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.d.ts +0 -80
  386. package/lib/modules/layout/toolbar/trax-header/trax-header.component.d.ts +0 -83
  387. package/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.d.ts +0 -74
  388. package/lib/modules/layout/toolbar/zone-header/zone-header.component.d.ts +0 -97
  389. package/lib/modules/notification/conformation/conformation.component.d.ts +0 -10
  390. package/lib/modules/notification/notification/notification.component.d.ts +0 -63
  391. package/lib/modules/notification/notification-routing.module.d.ts +0 -7
  392. package/lib/modules/notification/notification.module.d.ts +0 -11
  393. package/lib/pipes/customDate.pipe.d.ts +0 -7
  394. package/lib/routes/route-wraper-modules/edge-wrapper.module.d.ts +0 -7
  395. package/lib/routes/route-wraper-modules/manage-wrapper.module.d.ts +0 -7
  396. package/lib/routes/route-wraper-modules/profile-wrapper.module.d.ts +0 -7
  397. package/lib/routes/route-wraper-modules/store-wrapper.module.d.ts +0 -7
  398. package/lib/routes/route-wraper-modules/ticket-wrapper.module.d.ts +0 -7
  399. package/lib/routes/routing.d.ts +0 -3
  400. package/lib/services/auth.service.d.ts +0 -49
  401. package/lib/services/notification.service.d.ts +0 -30
  402. package/lib/services/toast.service.d.ts +0 -10
@@ -1,372 +0,0 @@
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
- import * as i17 from "./single-clientstore-date/single-clientstore-date.component";
21
- import * as i18 from "./zone-header/zone-header.component";
22
- export class ToolbarComponent {
23
- layout;
24
- router;
25
- route;
26
- gs;
27
- auth;
28
- unsubscribe = [];
29
- // Public props
30
- currentLayoutType;
31
- appToolbarLayout;
32
- // toolbar
33
- appToolbarDisplay;
34
- appToolbarContainer;
35
- appToolbarContainerCSSClass = "";
36
- appToolbarFixedDesktop;
37
- appToolbarFixedMobile;
38
- appPageTitleDisplay;
39
- // page title
40
- appPageTitleDirection = "";
41
- appPageTitleCSSClass = "";
42
- appPageTitleBreadcrumb;
43
- appPageTitleDescription;
44
- querParams;
45
- singleSelect;
46
- multiSelect;
47
- datepicker;
48
- singleSelectdatepicker;
49
- singleStore;
50
- headervalue;
51
- storeId;
52
- users;
53
- selectedFilters = {
54
- client: null,
55
- clients: [],
56
- store: null,
57
- stores: [],
58
- date: null,
59
- };
60
- trafficdatepicker;
61
- traxdatepicker;
62
- urlString;
63
- traxwithoutdatepicker;
64
- storesSingle;
65
- nobWithoutClient;
66
- merticsHeader;
67
- singleClientStoreDate;
68
- constructor(layout, router, route, gs, auth) {
69
- this.layout = layout;
70
- this.router = router;
71
- this.route = route;
72
- this.gs = gs;
73
- this.auth = auth;
74
- }
75
- ngOnInit() {
76
- if ("user-info" in localStorage) {
77
- const userData = JSON.parse(localStorage.getItem("user-info") || "{}");
78
- this.users = userData;
79
- }
80
- if ("header-filters" in localStorage) {
81
- const data = JSON.parse(localStorage.getItem("header-filters") || "{}");
82
- this.client = data?.client;
83
- }
84
- this.getUserInfo(this.client ? this.client : this.users.client);
85
- this.showPageTitle();
86
- const subscr = this.layout.layoutConfigSubject
87
- .asObservable()
88
- .subscribe((config) => {
89
- this.updateProps(config);
90
- });
91
- this.unsubscribe.push(subscr);
92
- }
93
- updateProps(config) {
94
- this.appToolbarDisplay = this.layout.getProp("app.toolbar.display", config);
95
- if (!this.appToolbarDisplay) {
96
- return;
97
- }
98
- this.appPageTitleDisplay = this.layout.getProp("app.pageTitle.display", config);
99
- this.appToolbarContainer = this.layout.getProp("app.toolbar.container", config);
100
- this.appToolbarContainerCSSClass =
101
- this.appToolbarContainer === "fixed"
102
- ? "container-xxl"
103
- : "container-fluid";
104
- const containerClass = this.layout.getProp("app.toolbar.containerClass", config);
105
- if (containerClass) {
106
- this.appToolbarContainerCSSClass += ` ${containerClass}`;
107
- }
108
- this.appToolbarFixedDesktop = this.layout.getProp("app.toolbar.fixed.desktop", config);
109
- if (this.appToolbarFixedDesktop) {
110
- document.body.setAttribute("data-kt-app-toolbar-fixed", "true");
111
- }
112
- this.appToolbarFixedMobile = this.layout.getProp("app.toolbar.fixed.mobile", config);
113
- if (this.appToolbarFixedMobile) {
114
- document.body.setAttribute("data-kt-app-toolbar-fixed-mobile", "true");
115
- }
116
- // toolbar
117
- this.appPageTitleDirection = this.layout.getProp("app.pageTitle.direction", config);
118
- this.appPageTitleCSSClass = this.layout.getProp("app.pageTitle.class", config);
119
- this.appPageTitleBreadcrumb = this.layout.getProp("app.pageTitle.breadCrumb", config);
120
- this.appPageTitleDescription = this.layout.getProp("app.pageTitle.description", config);
121
- document.body.setAttribute("data-kt-app-toolbar-enabled", "true");
122
- }
123
- destroy$ = new Subject();
124
- ngOnDestroy() {
125
- this.unsubscribe.forEach((sb) => sb.unsubscribe());
126
- this.destroy$.next(true);
127
- this.destroy$.complete();
128
- // localStorage.removeItem("usersEmail-info");
129
- }
130
- client;
131
- urlString1;
132
- showPageTitle() {
133
- // debugger
134
- let URL = "";
135
- if ("header-filters" in localStorage) {
136
- const data = JSON.parse(localStorage.getItem("header-filters") || "{}");
137
- const store = this.route.snapshot.queryParamMap;
138
- this.storeId = data?.store;
139
- if (store?.params?.['storeId']) {
140
- this.storeId = store.params['storeId'];
141
- data.store = store.params['storeId'];
142
- localStorage.setItem('header-filters', JSON.stringify(data));
143
- }
144
- const currentUrl = this.router.url;
145
- const updatedUrl = currentUrl.replace(/\/manage\/stores\/\d+-\d+\//, `/manage/stores/`);
146
- URL = updatedUrl;
147
- // this.router.navigate([URL])
148
- }
149
- const url = URL.split("?")[0].split('/');
150
- this.urlString = URL;
151
- this.urlString1 = URL.split('/');
152
- if (this.users?.userType === "tango") {
153
- if (url[2] == "settings" || URL == "/manage/users/client" ||
154
- URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=clusters" ||
155
- URL == "/manage/stores/addition-method" ||
156
- URL == "/manage/stores/add-single-store" || URL === "/manage/trax/gallery" || URL == "/notifications/alerts?tab=alert" || URL == "/notifications/alerts?tab=download" || URL === "/manage/trax/audit") {
157
- this.setUIProperties(true, false, false, false, false, false, false, false, false, false, false, false, false);
158
- }
159
- else if (url[3] == "edge-app") {
160
- this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false, false, false);
161
- }
162
- else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
163
- URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
164
- URL == `/manage/stores/zones?storeId=${this.storeId}` ||
165
- URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
166
- // URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
167
- URL == `/manage/stores/mat?storeId=${this.storeId}`) {
168
- this.setUIProperties(false, false, false, true, false, false, false, false, false, false, false, false, false);
169
- }
170
- else if (URL == "/tickets/stores" || URL == "/manage/users/tango/audit") {
171
- this.setUIProperties(false, false, true, false, false, false, false, false, false, false, false, false, false);
172
- }
173
- else if (url[2] === 'controlcenter') {
174
- if (URL == `/manage/controlcenter/playback?storeId=${this.storeId}` || URL == `/manage/controlcenter/playback`) {
175
- this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false, false, false);
176
- }
177
- else {
178
- this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false, false, false);
179
- }
180
- }
181
- else if (URL == "/profile" || url[2] === "data-mismatch" || url[2] === "employeetraining"
182
- || URL == "/manage/brands" || URL == "/manage/users/tango" || (url[1] === "tickets" && url[2] === "audit") || url.includes('list')) {
183
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, false, false);
184
- }
185
- else if (URL == "/manage/traffic/nob") {
186
- this.setUIProperties(false, false, false, false, false, false, false, false, false, true, false, false, false);
187
- }
188
- else if (url[2] === "zones") {
189
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, false, true);
190
- }
191
- else if (url[2] === "traffic" || URL == "/manage/analyse/reports") {
192
- this.setUIProperties(false, false, false, false, false, true, false, false, false, false, false, false, false);
193
- }
194
- else if (URL == "/manage/employee-metrics/beeahGroup" || URL == "/manage/employee-metrics/beeahLive") {
195
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, true, false);
196
- }
197
- else if (url[2] === "employee-metrics" && url[3] === "heatmap") {
198
- this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false, false, false);
199
- }
200
- else if (url[2] === "employee-metrics") {
201
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, true, false, false);
202
- }
203
- else if (url[2] == 'trax') {
204
- if (url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure') || url.includes('create-order') || url[3] == 'create-task' || url[3] == 'task-configure')) {
205
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, false, false);
206
- }
207
- // else if(url[2] == 'trax' && (url.includes('taskinfo'))){
208
- // this.setUIProperties(false, false, false, false,false,false,false,true,false,false,false,false);
209
- // }
210
- else if (url[2] == 'trax' && url.includes('start')) {
211
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, false, false);
212
- }
213
- else if (url[2] == 'trax' && (url.includes('checklist') || url.includes('gallery')) || url.includes('audit')) {
214
- this.setUIProperties(true, false, false, false, false, false, false, false, false, false, false, false, false);
215
- }
216
- else {
217
- this.setUIProperties(false, false, false, false, false, false, true, false, false, false, false, false, false);
218
- }
219
- }
220
- else if (url[2] == 'planogram') {
221
- if (url[2] == 'planogram' && (url.includes('verification'))) {
222
- this.setUIProperties(false, false, false, false, false, true, false, false, false, false, false, false, false);
223
- }
224
- if (url[2] == 'planogram' && (url.includes('layout-builder'))) {
225
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, false, false);
226
- }
227
- else {
228
- if (url[2] == 'planogram' && url[3] == 'manage-planogram') {
229
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, false, false);
230
- }
231
- else {
232
- this.setUIProperties(true, false, false, false, false, false, false, false, false, false, false, false, false);
233
- }
234
- }
235
- }
236
- else {
237
- if (url[3] == 'plano') {
238
- this.setUIProperties(false, false, false, true, false, false, false, false, false, false, false, false, false);
239
- }
240
- else {
241
- this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false, false, false);
242
- }
243
- }
244
- }
245
- else {
246
- if (URL === '/manage/planogram/manage-planograms/verification') {
247
- this.setUIProperties(false, false, false, false, false, true, false, false, false, false, false, false, false);
248
- }
249
- if (url[3] == "edge-app") {
250
- this.setUIProperties(false, false, true, false, false, false, false, false, false, false, false, false, false);
251
- }
252
- else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
253
- URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
254
- URL == `/manage/stores/zones?storeId=${this.storeId}` ||
255
- URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
256
- // URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
257
- URL == `/manage/stores/mat?storeId=${this.storeId}`) {
258
- this.setUIProperties(false, false, false, true, false, false, false, false, false, false, false, false, false);
259
- }
260
- else if (url[2] === 'controlcenter') {
261
- if (URL == `/manage/controlcenter/playback?storeId=${this.storeId}` || URL == `/manage/controlcenter/playback`) {
262
- this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false, false, false);
263
- }
264
- else {
265
- this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false, false, false);
266
- }
267
- }
268
- else if (URL == "/profile" || URL == "/manage/users/client" || URL == "/manage/users/tango" ||
269
- URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=clusters" || url[2] == "settings" ||
270
- URL == "/manage/stores/addition-method" ||
271
- URL == "/manage/stores/add-single-store" || url[2] === "data-mismatch" || url[2] === "employeetraining" || URL == "/notifications/alerts?tab=alert" || URL == "/notifications/alerts?tab=download"
272
- || URL == "/manage/users/tango" || URL === "/manage/controlcenter" || URL === 'manage/controlcenter/template-manager' || url[2] === 'controlcenter' || url.includes('list')) {
273
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, false, false);
274
- }
275
- else if (URL == "/manage/traffic/nob") {
276
- this.setUIProperties(false, false, false, false, false, false, false, false, false, true, false, false, false);
277
- }
278
- else if (url[2] === "zones") {
279
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, false, true);
280
- }
281
- else if (url[2] === "traffic" || URL == "/manage/analyse/reports") {
282
- this.setUIProperties(false, false, false, false, false, true, false, false, false, false, false, false, false);
283
- }
284
- else if (URL == "/manage/employee-metrics/beeahGroup" || URL == "/manage/employee-metrics/beeahLive") {
285
- this.setUIProperties(false, false, false, true, false, false, false, false, false, false, false, false, false);
286
- }
287
- else if (url[2] === "employee-metrics" && url[3] === "heatmap") {
288
- this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false, false, false);
289
- }
290
- else if (url[2] === "employee-metrics") {
291
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, true, false, false);
292
- }
293
- else if (url[2] == 'trax') {
294
- if (url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure') || url.includes('create-order') || url[3] == 'create-task' || url[3] == 'task-configure')) {
295
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, false, false);
296
- }
297
- // else if(url[2] == 'trax' && (url.includes('taskinfo'))){
298
- // this.setUIProperties(false, false, false, false,false,false,false,true,false,false,false,false);
299
- // }
300
- else if (url[2] == 'trax' && url.includes('start')) {
301
- this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false, false, false);
302
- }
303
- else if (url[2] == 'trax' && (url.includes('checklist') || url.includes('gallery') || url.includes('audit'))) {
304
- this.setUIProperties(true, false, false, false, false, false, false, false, false, false, false, false, false);
305
- }
306
- else {
307
- this.setUIProperties(false, false, false, false, false, false, true, false, false, false, false, false, false);
308
- }
309
- }
310
- else if (url[2] == 'planogram') {
311
- this.setUIProperties(false, false, false, false, false, true, false, false, false, false, false, false, false);
312
- // if(url[2] == 'planogram' && (url.includes('verification'))){
313
- // }
314
- // if(url[2] == 'planogram' && (url.includes('layout-builder'))) {
315
- // this.setUIProperties(false, false, false, false,false,false,false,false,false,false,false,false);
316
- // } else {
317
- // this.setUIProperties(true, false, false, false,false,false,false,false,false,false,false,false);
318
- // }
319
- }
320
- else {
321
- if (url[3] == "plano") {
322
- this.setUIProperties(false, false, false, true, false, false, false, false, false, false, false, false, false);
323
- }
324
- else {
325
- this.setUIProperties(false, false, true, false, false, false, false, false, false, false, false, false, false);
326
- }
327
- }
328
- }
329
- const viewsWithPageTitles = ["classic", "reports", "saas"];
330
- return (this.appPageTitleDisplay &&
331
- viewsWithPageTitles.some((t) => t === this.appToolbarLayout));
332
- }
333
- zoneHeader;
334
- setUIProperties(singleSelect, multiSelect, datepicker, singleStore, singleSelectdatepicker, trafficdatepicker, traxdatepicker, traxwithoutdatepicker, storesSingle, nobWithoutClient, merticsHeader, singleClientStoreDate, zoneHeader) {
335
- this.singleSelect = singleSelect;
336
- this.multiSelect = multiSelect;
337
- this.datepicker = datepicker;
338
- this.singleStore = singleStore;
339
- this.singleSelectdatepicker = singleSelectdatepicker;
340
- this.trafficdatepicker = trafficdatepicker;
341
- this.traxdatepicker = traxdatepicker;
342
- this.traxwithoutdatepicker = traxwithoutdatepicker;
343
- this.storesSingle = storesSingle;
344
- this.nobWithoutClient = nobWithoutClient;
345
- this.merticsHeader = merticsHeader;
346
- this.singleClientStoreDate = singleClientStoreDate;
347
- this.zoneHeader = zoneHeader;
348
- }
349
- getUserInfo(client) {
350
- let obj = {
351
- clientId: client ? client : ''
352
- };
353
- if (client) {
354
- this.auth.getHeaderUsers(obj).subscribe({
355
- next: (e) => {
356
- localStorage.setItem("usersEmail-info", JSON.stringify(e?.data?.userEmailData || []));
357
- }
358
- });
359
- }
360
- }
361
- 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 });
362
- 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\" [urlString]=\"urlString\"></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\r\n <ng-container *ngIf=\"singleClientStoreDate\">\r\n <lib-single-clientstore-date class=\"d-flex align-items-center me-5\"></lib-single-clientstore-date>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"zoneHeader\">\r\n <lib-zone-header class=\"d-flex align-items-center me-5\"></lib-zone-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: "component", type: i17.SingleClientstoreDateComponent, selector: "lib-single-clientstore-date" }, { kind: "component", type: i18.ZoneHeaderComponent, selector: "lib-zone-header" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
363
- }
364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, decorators: [{
365
- type: Component,
366
- 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\" [urlString]=\"urlString\"></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\r\n <ng-container *ngIf=\"singleClientStoreDate\">\r\n <lib-single-clientstore-date class=\"d-flex align-items-center me-5\"></lib-single-clientstore-date>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"zoneHeader\">\r\n <lib-zone-header class=\"d-flex align-items-center me-5\"></lib-zone-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" }]
367
- }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i1.GlobalStateService }, { type: i3.AuthService }], propDecorators: { currentLayoutType: [{
368
- type: Input
369
- }], appToolbarLayout: [{
370
- type: Input
371
- }] } });
372
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hcHAtc2hhcmVkL3NyYy9saWIvbW9kdWxlcy9sYXlvdXQvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxPQUFPLEVBQXdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNyRCxNQUFNLE9BQU8sZ0JBQWdCO0lBa0RqQjtJQUNBO0lBQ0E7SUFDRDtJQUNDO0lBckRGLFdBQVcsR0FBbUIsRUFBRSxDQUFDO0lBRXpDLGVBQWU7SUFDTixpQkFBaUIsQ0FBb0I7SUFDckMsZ0JBQWdCLENBS2Q7SUFFWCxVQUFVO0lBQ1YsaUJBQWlCLENBQVU7SUFDM0IsbUJBQW1CLENBQW9CO0lBQ3ZDLDJCQUEyQixHQUFXLEVBQUUsQ0FBQztJQUN6QyxzQkFBc0IsQ0FBVTtJQUNoQyxxQkFBcUIsQ0FBVTtJQUMvQixtQkFBbUIsQ0FBVTtJQUU3QixhQUFhO0lBQ2IscUJBQXFCLEdBQVcsRUFBRSxDQUFDO0lBQ25DLG9CQUFvQixHQUFXLEVBQUUsQ0FBQztJQUNsQyxzQkFBc0IsQ0FBVTtJQUNoQyx1QkFBdUIsQ0FBVTtJQUNqQyxVQUFVLENBQU07SUFDaEIsWUFBWSxDQUFVO0lBQ3RCLFdBQVcsQ0FBVTtJQUNyQixVQUFVLENBQVU7SUFDcEIsc0JBQXNCLENBQVU7SUFDaEMsV0FBVyxDQUFVO0lBQ3JCLFdBQVcsQ0FBTTtJQUNqQixPQUFPLENBQU07SUFDYixL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QixDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQVU7UUFDcEIsSUFBSSxHQUFHLEdBQUU7WUFDTCxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBLEVBQUU7U0FDaEMsQ0FBQTtRQUNELElBQUcsTUFBTSxFQUFDO1lBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN0QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDVixZQUFZLENBQUMsT0FBTyxDQUNsQixpQkFBaUIsRUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FDN0MsQ0FBQztnQkFDSixDQUFDO2FBQ0YsQ0FBQyxDQUFBO1NBQ0g7SUFDSCxDQUFDO3dHQTlYWSxnQkFBZ0I7NEZBQWhCLGdCQUFnQiw2SUNoQjdCLG9wSEFnRUE7OzRGRGhEYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsYUFBYTsrTEFRZCxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHdpbmRvdyB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7XHJcbiAgR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gIExheW91dFNlcnZpY2UsXHJcbiAgUGFnZUluZm9TZXJ2aWNlLFxyXG59IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IElMYXlvdXQsIExheW91dFR5cGUgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi10b29sYmFyXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi90b29sYmFyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3Rvb2xiYXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIC8vIFB1YmxpYyBwcm9wc1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRMYXlvdXRUeXBlOiBMYXlvdXRUeXBlIHwgbnVsbDtcclxuICBASW5wdXQoKSBhcHBUb29sYmFyTGF5b3V0OlxyXG4gICAgfCBcImNsYXNzaWNcIlxyXG4gICAgfCBcImFjY291bnRpbmdcIlxyXG4gICAgfCBcImV4dGVuZGVkXCJcclxuICAgIHwgXCJyZXBvcnRzXCJcclxuICAgIHwgXCJzYWFzXCI7XHJcblxyXG4gIC8vIHRvb2xiYXJcclxuICBhcHBUb29sYmFyRGlzcGxheTogYm9vbGVhbjtcclxuICBhcHBUb29sYmFyQ29udGFpbmVyOiBcImZpeGVkXCIgfCBcImZsdWlkXCI7XHJcbiAgYXBwVG9vbGJhckNvbnRhaW5lckNTU0NsYXNzOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGFwcFRvb2xiYXJGaXhlZERlc2t0b3A6IGJvb2xlYW47XHJcbiAgYXBwVG9vbGJhckZpeGVkTW9iaWxlOiBib29sZWFuO1xyXG4gIGFwcFBhZ2VUaXRsZURpc3BsYXk6IGJvb2xlYW47XHJcblxyXG4gIC8vIHBhZ2UgdGl0bGVcclxuICBhcHBQYWdlVGl0bGVEaXJlY3Rpb246IHN0cmluZyA9IFwiXCI7XHJcbiAgYXBwUGFnZVRpdGxlQ1NTQ2xhc3M6IHN0cmluZyA9IFwiXCI7XHJcbiAgYXBwUGFnZVRpdGxlQnJlYWRjcnVtYjogYm9vbGVhbjtcclxuICBhcHBQYWdlVGl0bGVEZXNjcmlwdGlvbjogYm9vbGVhbjtcclxuICBxdWVyUGFyYW1zOiBhbnk7XHJcbiAgc2luZ2xlU2VsZWN0OiBib29sZWFuO1xyXG4gIG11bHRpU2VsZWN0OiBib29sZWFuO1xyXG4gIGRhdGVwaWNrZXI6IGJvb2xlYW47XHJcbiAgc2luZ2xlU2VsZWN0ZGF0ZXBpY2tlcjogYm9vbGVhbjtcclxuICBzaW5nbGVTdG9yZTogYm9vbGVhbjtcclxuICBoZWFkZXJ2YWx1ZTogYW55O1xyXG4gIHN0b3JlSWQ6IGFueTtcclxuICB1c2VyczogYW55O1xyXG4gIHNlbGVjdGVkRmlsdGVyczogYW55ID0ge1xyXG4gICAgY2xpZW50OiBudWxsLFxyXG4gICAgY2xpZW50czogW10sXHJcbiAgICBzdG9yZTogbnVsbCxcclxuICAgIHN0b3JlczogW10sXHJcbiAgICBkYXRlOiBudWxsLFxyXG4gIH07XHJcbiAgdHJhZmZpY2RhdGVwaWNrZXI6IGJvb2xlYW47XHJcbiAgdHJheGRhdGVwaWNrZXI6IGJvb2xlYW47XHJcbiAgdXJsU3RyaW5nOmFueTtcclxuICB0cmF4d2l0aG91dGRhdGVwaWNrZXI6Ym9vbGVhbjtcclxuICBzdG9yZXNTaW5nbGU6Ym9vbGVhbjtcclxuICBub2JXaXRob3V0Q2xpZW50OmJvb2xlYW47XHJcbiAgbWVydGljc0hlYWRlcjogYm9vbGVhbjtcclxuICBzaW5nbGVDbGllbnRTdG9yZURhdGU6Ym9vbGVhbjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbGF5b3V0OiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGggOiBBdXRoU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoXCJ1c2VyLWluZm9cIiBpbiBsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgY29uc3QgdXNlckRhdGE6IGFueSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJ7fVwiXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB1c2VyRGF0YTtcclxuICAgIH1cclxuICAgIGlmIChcImhlYWRlci1maWx0ZXJzXCIgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIGNvbnN0IGRhdGE6IGFueSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcInt9XCJcclxuICAgICAgKTtcclxuIHRoaXMuY2xpZW50ID0gZGF0YT8uY2xpZW50O1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRVc2VySW5mbyh0aGlzLmNsaWVudCA/IHRoaXMuY2xpZW50IDogdGhpcy51c2Vycy5jbGllbnQpXHJcbiAgICB0aGlzLnNob3dQYWdlVGl0bGUoKTtcclxuICAgIGNvbnN0IHN1YnNjciA9IHRoaXMubGF5b3V0LmxheW91dENvbmZpZ1N1YmplY3RcclxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZzogSUxheW91dCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlUHJvcHMoY29uZmlnKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLnB1c2goc3Vic2NyKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVByb3BzKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5hcHBUb29sYmFyRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnRvb2xiYXIuZGlzcGxheVwiLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICghdGhpcy5hcHBUb29sYmFyRGlzcGxheSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBQYWdlVGl0bGVEaXNwbGF5ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgXCJhcHAucGFnZVRpdGxlLmRpc3BsYXlcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICB0aGlzLmFwcFRvb2xiYXJDb250YWluZXIgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC50b29sYmFyLmNvbnRhaW5lclwiLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgXCJmbHVpZFwiIHwgXCJmaXhlZFwiO1xyXG4gICAgdGhpcy5hcHBUb29sYmFyQ29udGFpbmVyQ1NTQ2xhc3MgPVxyXG4gICAgICB0aGlzLmFwcFRvb2xiYXJDb250YWluZXIgPT09IFwiZml4ZWRcIlxyXG4gICAgICAgID8gXCJjb250YWluZXIteHhsXCJcclxuICAgICAgICA6IFwiY29udGFpbmVyLWZsdWlkXCI7XHJcbiAgICBjb25zdCBjb250YWluZXJDbGFzcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnRvb2xiYXIuY29udGFpbmVyQ2xhc3NcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIHN0cmluZztcclxuICAgIGlmIChjb250YWluZXJDbGFzcykge1xyXG4gICAgICB0aGlzLmFwcFRvb2xiYXJDb250YWluZXJDU1NDbGFzcyArPSBgICR7Y29udGFpbmVyQ2xhc3N9YDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcFRvb2xiYXJGaXhlZERlc2t0b3AgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC50b29sYmFyLmZpeGVkLmRlc2t0b3BcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyRml4ZWREZXNrdG9wKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKFwiZGF0YS1rdC1hcHAtdG9vbGJhci1maXhlZFwiLCBcInRydWVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBUb29sYmFyRml4ZWRNb2JpbGUgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC50b29sYmFyLmZpeGVkLm1vYmlsZVwiLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFRvb2xiYXJGaXhlZE1vYmlsZSkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZShcImRhdGEta3QtYXBwLXRvb2xiYXItZml4ZWQtbW9iaWxlXCIsIFwidHJ1ZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0b29sYmFyXHJcbiAgICB0aGlzLmFwcFBhZ2VUaXRsZURpcmVjdGlvbiA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnBhZ2VUaXRsZS5kaXJlY3Rpb25cIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIHN0cmluZztcclxuICAgIHRoaXMuYXBwUGFnZVRpdGxlQ1NTQ2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC5wYWdlVGl0bGUuY2xhc3NcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIHN0cmluZztcclxuICAgIHRoaXMuYXBwUGFnZVRpdGxlQnJlYWRjcnVtYiA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnBhZ2VUaXRsZS5icmVhZENydW1iXCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5hcHBQYWdlVGl0bGVEZXNjcmlwdGlvbiA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnBhZ2VUaXRsZS5kZXNjcmlwdGlvblwiLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZShcImRhdGEta3QtYXBwLXRvb2xiYXItZW5hYmxlZFwiLCBcInRydWVcIik7XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5mb3JFYWNoKChzYikgPT4gc2IudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICAvLyBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInVzZXJzRW1haWwtaW5mb1wiKTtcclxuICB9XHJcbiAgY2xpZW50OmFueTtcclxuICB1cmxTdHJpbmcxOmFueTtcclxuICBzaG93UGFnZVRpdGxlKCkge1xyXG4gICAgLy8gZGVidWdnZXJcclxuICAgIGxldCBVUkw6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBpZiAoXCJoZWFkZXItZmlsdGVyc1wiIGluIGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJ7fVwiXHJcbiAgICAgICk7XHJcbiAgICAgY29uc3Qgc3RvcmUgPSAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwIGFzIGFueSAgICAgIFxyXG4gICAgICB0aGlzLnN0b3JlSWQgPSAgZGF0YT8uc3RvcmU7XHJcblxyXG4gICAgICBpZihzdG9yZT8ucGFyYW1zPy5bJ3N0b3JlSWQnXSl7XHJcbiAgICAgICAgdGhpcy5zdG9yZUlkID0gc3RvcmUucGFyYW1zWydzdG9yZUlkJ11cclxuICAgICAgICBkYXRhLnN0b3JlID0gc3RvcmUucGFyYW1zWydzdG9yZUlkJ11cclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSlcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgICBjb25zdCB1cGRhdGVkVXJsID0gY3VycmVudFVybC5yZXBsYWNlKFxyXG4gICAgICAgIC9cXC9tYW5hZ2VcXC9zdG9yZXNcXC9cXGQrLVxcZCtcXC8vLFxyXG4gICAgICAgIGAvbWFuYWdlL3N0b3Jlcy9gXHJcbiAgICAgICk7XHJcbiAgICAgIFVSTCA9IHVwZGF0ZWRVcmw7XHJcbiAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFtVUkxdKVxyXG4gICAgfVxyXG4gIGNvbnN0IHVybCA9IFVSTC5zcGxpdChcIj9cIilbMF0uc3BsaXQoJy8nKTtcclxuICB0aGlzLnVybFN0cmluZyA9IFVSTDtcclxuICAgdGhpcy51cmxTdHJpbmcxPSBVUkwuc3BsaXQoJy8nKTtcclxuICBpZiAodGhpcy51c2Vycz8udXNlclR5cGUgPT09IFwidGFuZ29cIikge1xyXG4gICAgaWYgKHVybFsyXSA9PSBcInNldHRpbmdzXCIgfHwgVVJMID09IFwiL21hbmFnZS91c2Vycy9jbGllbnRcIiAgfHxcclxuICAgIFVSTCA9PSBcIi9tYW5hZ2Uvc3RvcmVzXCIgfHwgIFVSTCA9PT0gXCIvbWFuYWdlL3N0b3Jlcz90eXBlPXN0b3Jlc1wiIHx8IFVSTCA9PT0gXCIvbWFuYWdlL3N0b3Jlcz90eXBlPWNsdXN0ZXJzXCIgfHxcclxuICAgIFVSTCA9PSBcIi9tYW5hZ2Uvc3RvcmVzL2FkZGl0aW9uLW1ldGhvZFwiIHx8XHJcbiAgICBVUkwgPT0gXCIvbWFuYWdlL3N0b3Jlcy9hZGQtc2luZ2xlLXN0b3JlXCIgfHwgVVJMID09PSBcIi9tYW5hZ2UvdHJheC9nYWxsZXJ5XCIgfHwgVVJMID09IFwiL25vdGlmaWNhdGlvbnMvYWxlcnRzP3RhYj1hbGVydFwiIHx8ICBVUkwgPT0gXCIvbm90aWZpY2F0aW9ucy9hbGVydHM/dGFiPWRvd25sb2FkXCIgfHwgVVJMID09PSBcIi9tYW5hZ2UvdHJheC9hdWRpdFwiICkge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyh0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9ICBlbHNlIGlmICh1cmxbM10gPT0gXCJlZGdlLWFwcFwiKSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fCAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYS10aWNrZXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH0mdHlwZT1pbmZyYWAgfHxcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9zZXR0aW5ncz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHwgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYS10aWNrZXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH0mdHlwZT1kYXRhTWlzbWF0Y2hgIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvem9uZXM/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvY2FtZXJhcz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHxcclxuICAgICAgLy8gVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYXN0cnVjdHVyZT9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHxcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9tYXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfWVsc2UgaWYgKFVSTCA9PSBcIi90aWNrZXRzL3N0b3Jlc1wiIHx8IFVSTCA9PSBcIi9tYW5hZ2UvdXNlcnMvdGFuZ28vYXVkaXRcIikge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodXJsWzJdID09PSAnY29udHJvbGNlbnRlcicpe1xyXG4gICAgICBpZihVUkwgPT0gYC9tYW5hZ2UvY29udHJvbGNlbnRlci9wbGF5YmFjaz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWB8fCBVUkwgPT0gYC9tYW5hZ2UvY29udHJvbGNlbnRlci9wbGF5YmFja2Ape1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gXHJcbiAgfWVsc2UgaWYgKFVSTCA9PSBcIi9wcm9maWxlXCIgfHwgdXJsWzJdPT09XCJkYXRhLW1pc21hdGNoXCIgfHwgdXJsWzJdPT09XCJlbXBsb3llZXRyYWluaW5nXCIgIFxyXG4gICAgICAgfHwgVVJMID09IFwiL21hbmFnZS9icmFuZHNcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL3VzZXJzL3RhbmdvXCIgfHwgKHVybFsxXSA9PT1cInRpY2tldHNcIiAmJiB1cmxbMl0gPT09IFwiYXVkaXRcIikgfHwgdXJsLmluY2x1ZGVzKCdsaXN0JykpIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZihVUkwgPT0gXCIvbWFuYWdlL3RyYWZmaWMvbm9iXCIpe1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT09IFwiem9uZXNcIil7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSBcInRyYWZmaWNcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL2FuYWx5c2UvcmVwb3J0c1wiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH1lbHNlIGlmKFVSTCA9PSBcIi9tYW5hZ2UvZW1wbG95ZWUtbWV0cmljcy9iZWVhaEdyb3VwXCIgfHwgVVJMID09IFwiL21hbmFnZS9lbXBsb3llZS1tZXRyaWNzL2JlZWFoTGl2ZVwiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT09IFwiZW1wbG95ZWUtbWV0cmljc1wiICYmIHVybFszXSA9PT0gXCJoZWF0bWFwXCIpe1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmKHVybFsyXSA9PT0gXCJlbXBsb3llZS1tZXRyaWNzXCIpe1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmKHVybFsyXSA9PSAndHJheCcpe1xyXG4gICAgICBpZih1cmxbMl0gPT0gJ3RyYXgnICYmICh1cmwuaW5jbHVkZXMoJ2NyZWF0ZUNoZWNrbGlzdCcpIHx8IHVybC5pbmNsdWRlcygnY29uZmlndXJlJykgfHwgdXJsLmluY2x1ZGVzKCdjcmVhdGUtb3JkZXInKXx8IHVybFszXSA9PSAnY3JlYXRlLXRhc2snIHx8IHVybFszXSA9PSAndGFzay1jb25maWd1cmUnKSkge1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfSBcclxuICAgICAgLy8gZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnICYmICh1cmwuaW5jbHVkZXMoJ3Rhc2tpbmZvJykpKXtcclxuICAgICAgLy8gICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgLy8gfVxyXG4gICAgICBlbHNlIGlmKHVybFsyXSA9PSAndHJheCcgJiYgdXJsLmluY2x1ZGVzKCdzdGFydCcpKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodXJsWzJdID09ICd0cmF4JyAmJiAodXJsLmluY2x1ZGVzKCdjaGVja2xpc3QnKSB8fCB1cmwuaW5jbHVkZXMoJ2dhbGxlcnknKSkgfHwgdXJsLmluY2x1ZGVzKCdhdWRpdCcpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXModHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH0gICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT0gJ3BsYW5vZ3JhbScpe1xyXG4gICAgICAgICAgaWYodXJsWzJdID09ICdwbGFub2dyYW0nICYmICh1cmwuaW5jbHVkZXMoJ3ZlcmlmaWNhdGlvbicpKSl7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7IFxyXG4gICAgICB9XHJcbiAgICAgIGlmKHVybFsyXSA9PSAncGxhbm9ncmFtJyAmJiAodXJsLmluY2x1ZGVzKCdsYXlvdXQtYnVpbGRlcicpKSkge1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfWVsc2Uge1xyXG4gICAgICAgIGlmKHVybFsyXSA9PSAncGxhbm9ncmFtJyAmJiB1cmxbM10gPT0gJ21hbmFnZS1wbGFub2dyYW0nKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXModHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2V7XHJcbiAgICAgIGlmKHVybFszXSA9PSAncGxhbm8nKSB7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICAgIGlmKFVSTCA9PT0nL21hbmFnZS9wbGFub2dyYW0vbWFuYWdlLXBsYW5vZ3JhbXMvdmVyaWZpY2F0aW9uJyl7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7IFxyXG4gICAgICB9XHJcbiAgICBpZiAodXJsWzNdID09IFwiZWRnZS1hcHBcIiApIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYS10aWNrZXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8ICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL2luZnJhLXRpY2tldD9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfSZ0eXBlPWluZnJhYCB8fFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL3NldHRpbmdzP3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fCBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL2luZnJhLXRpY2tldD9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfSZ0eXBlPWRhdGFNaXNtYXRjaGAgfHxcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy96b25lcz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHxcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9jYW1lcmFzP3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fFxyXG4gICAgICAvLyBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL2luZnJhc3RydWN0dXJlP3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL21hdD9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWBcclxuICAgICkge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSAnY29udHJvbGNlbnRlcicpe1xyXG4gICAgICBpZihVUkwgPT0gYC9tYW5hZ2UvY29udHJvbGNlbnRlci9wbGF5YmFjaz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWB8fCBVUkwgPT0gYC9tYW5hZ2UvY29udHJvbGNlbnRlci9wbGF5YmFja2Ape1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gXHJcbiAgfSBlbHNlIGlmIChVUkwgPT0gXCIvcHJvZmlsZVwiIHx8IFVSTCA9PSBcIi9tYW5hZ2UvdXNlcnMvY2xpZW50XCIgfHwgVVJMID09IFwiL21hbmFnZS91c2Vycy90YW5nb1wiIHx8XHJcbiAgICBVUkwgPT0gXCIvbWFuYWdlL3N0b3Jlc1wiIHx8ICBVUkwgPT09IFwiL21hbmFnZS9zdG9yZXM/dHlwZT1zdG9yZXNcIiB8fCBVUkwgPT09IFwiL21hbmFnZS9zdG9yZXM/dHlwZT1jbHVzdGVyc1wiIHx8IHVybFsyXSA9PSBcInNldHRpbmdzXCIgfHwgXHJcbiAgICBVUkwgPT0gXCIvbWFuYWdlL3N0b3Jlcy9hZGRpdGlvbi1tZXRob2RcIiB8fFxyXG4gICAgVVJMID09IFwiL21hbmFnZS9zdG9yZXMvYWRkLXNpbmdsZS1zdG9yZVwiIHx8IHVybFsyXT09PVwiZGF0YS1taXNtYXRjaFwiIHx8IHVybFsyXT09PVwiZW1wbG95ZWV0cmFpbmluZ1wiICB8fCBVUkwgPT0gXCIvbm90aWZpY2F0aW9ucy9hbGVydHM/dGFiPWFsZXJ0XCIgfHwgIFVSTCA9PSBcIi9ub3RpZmljYXRpb25zL2FsZXJ0cz90YWI9ZG93bmxvYWRcIlxyXG4gICAgIHx8IFVSTCA9PSBcIi9tYW5hZ2UvdXNlcnMvdGFuZ29cIiB8fCBVUkwgPT09IFwiL21hbmFnZS9jb250cm9sY2VudGVyXCIgfHwgVVJMID09PSdtYW5hZ2UvY29udHJvbGNlbnRlci90ZW1wbGF0ZS1tYW5hZ2VyJyB8fCB1cmxbMl09PT0nY29udHJvbGNlbnRlcicgfHwgIHVybC5pbmNsdWRlcygnbGlzdCcpKSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9ZWxzZSBpZihVUkwgPT0gXCIvbWFuYWdlL3RyYWZmaWMvbm9iXCIpe1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH1lbHNlIGlmKHVybFsyXSA9PT0gXCJ6b25lc1wiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT09IFwidHJhZmZpY1wiIHx8IFVSTCA9PSBcIi9tYW5hZ2UvYW5hbHlzZS9yZXBvcnRzXCIpe1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfWVsc2UgaWYoVVJMID09IFwiL21hbmFnZS9lbXBsb3llZS1tZXRyaWNzL2JlZWFoR3JvdXBcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL2VtcGxveWVlLW1ldHJpY3MvYmVlYWhMaXZlXCIpe1xyXG4gICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSBcImVtcGxveWVlLW1ldHJpY3NcIiAmJiB1cmxbM10gPT09IFwiaGVhdG1hcFwiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT09IFwiZW1wbG95ZWUtbWV0cmljc1wiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnKXtcclxuICAgICAgaWYodXJsWzJdID09ICd0cmF4JyAmJiAodXJsLmluY2x1ZGVzKCdjcmVhdGVDaGVja2xpc3QnKSB8fCB1cmwuaW5jbHVkZXMoJ2NvbmZpZ3VyZScpIHx8IHVybC5pbmNsdWRlcygnY3JlYXRlLW9yZGVyJykgfHwgdXJsWzNdID09ICdjcmVhdGUtdGFzaycgfHwgdXJsWzNdID09ICd0YXNrLWNvbmZpZ3VyZScpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2UgaWYodXJsWzJdID09ICd0cmF4JyAmJiAodXJsLmluY2x1ZGVzKCd0YXNraW5mbycpKSl7XHJcbiAgICAgIC8vICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnICYmIHVybC5pbmNsdWRlcygnc3RhcnQnKSl7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHVybFsyXSA9PSAndHJheCcgJiYgKHVybC5pbmNsdWRlcygnY2hlY2tsaXN0JykgfHwgdXJsLmluY2x1ZGVzKCdnYWxsZXJ5JykgfHwgdXJsLmluY2x1ZGVzKCdhdWRpdCcpKSkge1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9ICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09ICdwbGFub2dyYW0nKXtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7IFxyXG4gICAgICAvLyAgaWYodXJsWzJdID09ICdwbGFub2dyYW0nICYmICh1cmwuaW5jbHVkZXMoJ3ZlcmlmaWNhdGlvbicpKSl7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gaWYodXJsWzJdID09ICdwbGFub2dyYW0nICYmICh1cmwuaW5jbHVkZXMoJ2xheW91dC1idWlsZGVyJykpKSB7XHJcbiAgICAgIC8vICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAvLyAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICAvLyB9XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIGlmICh1cmxbM10gPT0gXCJwbGFub1wiKSB7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnN0IHZpZXdzV2l0aFBhZ2VUaXRsZXMgPSBbXCJjbGFzc2ljXCIsIFwicmVwb3J0c1wiLCBcInNhYXNcIl07XHJcbiAgcmV0dXJuIChcclxuICAgIHRoaXMuYXBwUGFnZVRpdGxlRGlzcGxheSAmJlxyXG4gICAgdmlld3NXaXRoUGFnZVRpdGxlcy5zb21lKCh0KSA9PiB0ID09PSB0aGlzLmFwcFRvb2xiYXJMYXlvdXQpXHJcbiAgKTtcclxufVxyXG56b25lSGVhZGVyOmFueTtcclxuc2V0VUlQcm9wZXJ0aWVzKFxyXG4gIHNpbmdsZVNlbGVjdDogYm9vbGVhbixcclxuICBtdWx0aVNlbGVjdDogYm9vbGVhbixcclxuICBkYXRlcGlja2VyOiBib29sZWFuLFxyXG4gIHNpbmdsZVN0b3JlOiBib29sZWFuLFxyXG4gIHNpbmdsZVNlbGVjdGRhdGVwaWNrZXI6IGJvb2xlYW4sXHJcbiAgdHJhZmZpY2RhdGVwaWNrZXI6Ym9vbGVhbixcclxuICB0cmF4ZGF0ZXBpY2tlcjpib29sZWFuLFxyXG4gIHRyYXh3aXRob3V0ZGF0ZXBpY2tlcjpib29sZWFuLFxyXG4gIHN0b3Jlc1NpbmdsZTpib29sZWFuLFxyXG4gIG5vYldpdGhvdXRDbGllbnQ6Ym9vbGVhbixcclxuICBtZXJ0aWNzSGVhZGVyOmJvb2xlYW4sXHJcbiAgc2luZ2xlQ2xpZW50U3RvcmVEYXRlOmJvb2xlYW4sXHJcbiAgem9uZUhlYWRlcjpib29sZWFuXHJcbik6IHZvaWQge1xyXG4gIHRoaXMuc2luZ2xlU2VsZWN0ID0gc2luZ2xlU2VsZWN0O1xyXG4gIHRoaXMubXVsdGlTZWxlY3QgPSBtdWx0aVNlbGVjdDtcclxuICB0aGlzLmRhdGVwaWNrZXIgPSBkYXRlcGlja2VyO1xyXG4gIHRoaXMuc2luZ2xlU3RvcmUgPSBzaW5nbGVTdG9yZTtcclxuICB0aGlzLnNpbmdsZVNlbGVjdGRhdGVwaWNrZXIgPSBzaW5nbGVTZWxlY3RkYXRlcGlja2VyO1xyXG4gIHRoaXMudHJhZmZpY2RhdGVwaWNrZXIgPSB0cmFmZmljZGF0ZXBpY2tlcjtcclxuICB0aGlzLnRyYXhkYXRlcGlja2VyID0gdHJheGRhdGVwaWNrZXI7XHJcbiAgdGhpcy50cmF4d2l0aG91dGRhdGVwaWNrZXIgPSB0cmF4d2l0aG91dGRhdGVwaWNrZXI7XHJcbiAgdGhpcy5zdG9yZXNTaW5nbGUgPSBzdG9yZXNTaW5nbGU7XHJcbiAgdGhpcy5ub2JXaXRob3V0Q2xpZW50ID0gbm9iV2l0aG91dENsaWVudDtcclxuICB0aGlzLm1lcnRpY3NIZWFkZXIgPSBtZXJ0aWNzSGVhZGVyO1xyXG50aGlzLnNpbmdsZUNsaWVudFN0b3JlRGF0ZSA9IHNpbmdsZUNsaWVudFN0b3JlRGF0ZTtcclxudGhpcy56b25lSGVhZGVyID0gem9uZUhlYWRlcjtcclxufVxyXG5cclxuZ2V0VXNlckluZm8oY2xpZW50OmFueSl7XHJcbiAgbGV0IG9iaiA9e1xyXG4gICAgICBjbGllbnRJZDogY2xpZW50ID8gY2xpZW50IDonJ1xyXG4gIH1cclxuICBpZihjbGllbnQpe1xyXG4gICAgdGhpcy5hdXRoLmdldEhlYWRlclVzZXJzKG9iaikuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGUpID0+IHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgIFwidXNlcnNFbWFpbC1pbmZvXCIsXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShlPy5kYXRhPy51c2VyRW1haWxEYXRhIHx8IFtdKSBcclxuICAgICAgICApO1xyXG4gICAgICB9IFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxufVxyXG4iLCI8IS0tYmVnaW46OlRvb2xiYXIgY29udGFpbmVyLS0+XHJcbjxkaXYgaWQ9XCJrdF9hcHBfdG9vbGJhcl9jb250YWluZXJcIiBjbGFzcz1cImFwcC1jb250YWluZXJcIiBbbmdDbGFzc109XCJhcHBUb29sYmFyQ29udGFpbmVyQ1NTQ2xhc3NcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nIHx8IChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ2NsaWVudCcgfHwgKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAnbGVhZCdcIiAgPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UGFnZVRpdGxlKClcIj5cclxuICAgIDxsaWItcGFnZS10aXRsZSBbYXBwUGFnZVRpdGxlRGlyZWN0aW9uXT1cImFwcFBhZ2VUaXRsZURpcmVjdGlvblwiIFthcHBQYWdlVGl0bGVCcmVhZGNydW1iXT1cImFwcFBhZ2VUaXRsZUJyZWFkY3J1bWJcIlxyXG4gICAgICBbYXBwUGFnZVRpdGxlRGVzY3JpcHRpb25dPVwiYXBwUGFnZVRpdGxlRGVzY3JpcHRpb25cIiBjbGFzcz1cInBhZ2UtdGl0bGUgZC1mbGV4IGZsZXgtd3JhcCBtZS0zXCJcclxuICAgICAgW25nQ2xhc3NdPVwieydmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogYXBwUGFnZVRpdGxlRGlyZWN0aW9uID09PSAnY29sdW1uJywgJ2FsaWduLWl0ZW1zLWNlbnRlcic6IGFwcFBhZ2VUaXRsZURpcmVjdGlvbiAhPT0gJ2NvbHVtbicsIGFwcFBhZ2VUaXRsZUNTU0NsYXNzfVwiPlxyXG4gICAgPC9saWItcGFnZS10aXRsZT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpU2VsZWN0ICYmIHVzZXJzLnVzZXJUeXBlID09PSd0YW5nbydcIj5cclxuICAgIDxsaWItY2xhc3NpYyBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgZ2FwLWxnLTNcIj48L2xpYi1jbGFzc2ljPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaW5nbGVTZWxlY3QgJiYgdXNlcnMudXNlclR5cGUgPT09J3RhbmdvJ1wiPlxyXG4gICAgPGxpYi1jbGllbnQtc2V0dGluZ3MgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi1jbGllbnQtc2V0dGluZ3M+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0ZXBpY2tlciAmJiAodXNlcnMudXNlclR5cGUgPT09J2NsaWVudCcgfHwgdXNlcnMudXNlclR5cGUgPT09J3RhbmdvJylcIj5cclxuICAgIDxsaWItZGF0ZXBpY2tlciBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLWRhdGVwaWNrZXI+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwic2luZ2xlU2VsZWN0ZGF0ZXBpY2tlciAmJiB1c2Vycy51c2VyVHlwZSA9PT0ndGFuZ28nXCI+XHJcbiAgICA8bGliLWRhdGUtc2luZ2xlLXNlbGVjdCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLWRhdGUtc2luZ2xlLXNlbGVjdD5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaW5nbGVTdG9yZVwiPlxyXG4gICAgPGxpYi1zaW5nbGUtc3RvcmUgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIiBbdXJsU3RyaW5nXT1cInVybFN0cmluZ1wiPjwvbGliLXNpbmdsZS1zdG9yZT5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmFmZmljZGF0ZXBpY2tlclwiPlxyXG4gICAgPGxpYi10cmFmZmljLWhlYWRlciBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLXRyYWZmaWMtaGVhZGVyPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYXhkYXRlcGlja2VyXCI+XHJcbiAgICA8bGliLXRyYXgtaGVhZGVyIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItdHJheC1oZWFkZXI+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwidHJheHdpdGhvdXRkYXRlcGlja2VyXCI+XHJcbiAgICA8bGliLXRyYXgtd2l0aG91dGRhdGUgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi10cmF4LXdpdGhvdXRkYXRlPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b3Jlc1NpbmdsZVwiPlxyXG4gICAgPGxpYi1zaW5nbGUtc3RvcmVkYXRlIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItc2luZ2xlLXN0b3JlZGF0ZT5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2JXaXRob3V0Q2xpZW50XCI+XHJcbiAgICA8bGliLXRyYWZmaWMtbm9iIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItdHJhZmZpYy1ub2I+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lcnRpY3NIZWFkZXJcIj5cclxuICAgIDxsaWItbWV0cmljcy1oZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi1tZXRyaWNzLWhlYWRlcj5cclxuICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwic2luZ2xlQ2xpZW50U3RvcmVEYXRlXCI+XHJcbiAgICA8bGliLXNpbmdsZS1jbGllbnRzdG9yZS1kYXRlIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItc2luZ2xlLWNsaWVudHN0b3JlLWRhdGU+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInpvbmVIZWFkZXJcIj5cclxuICAgIDxsaWItem9uZS1oZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi16b25lLWhlYWRlcj5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBUb29sYmFyTGF5b3V0ID09PSAnZXh0ZW5kZWQnXCI+XHJcbiAgICA8bGliLWV4dGVuZGVkIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXNocmluay0wIG1lLTVcIj48L2xpYi1leHRlbmRlZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwVG9vbGJhckxheW91dCA9PT0gJ3JlcG9ydHMnXCI+XHJcbiAgICA8bGliLXJlcG9ydHMgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG92ZXJmbG93LWF1dG9cIiBbYXBwUGFnZVRpdGxlRGlzcGxheV09XCJhcHBQYWdlVGl0bGVEaXNwbGF5XCI+XHJcbiAgICA8L2xpYi1yZXBvcnRzPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBUb29sYmFyTGF5b3V0ID09PSAnc2FhcydcIj5cclxuICAgIDxsaWItc2FhcyBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIiBbYXBwUGFnZVRpdGxlRGlzcGxheV09XCJhcHBQYWdlVGl0bGVEaXNwbGF5XCI+PC9saWItc2Fhcz5cclxuICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbjwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuPCEtLWVuZDo6VG9vbGJhciBjb250YWluZXItLT5cclxuIl19