tango-app-ui-shared 3.7.3-dev6-copilot → 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 (404) 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 -195
  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 -119
  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 -201
  276. package/esm2022/lib/modules/layout/toolbar/datepicker/datepicker.component.mjs +0 -150
  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 -176
  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 -354
  286. package/esm2022/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.mjs +0 -1061
  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/notification/conformation/conformation.component.mjs +0 -22
  291. package/esm2022/lib/modules/notification/notification/notification.component.mjs +0 -317
  292. package/esm2022/lib/modules/notification/notification-routing.module.mjs +0 -28
  293. package/esm2022/lib/modules/notification/notification.module.mjs +0 -32
  294. package/esm2022/lib/pipes/customDate.pipe.mjs +0 -22
  295. package/esm2022/lib/routes/route-wraper-modules/edge-wrapper.module.mjs +0 -18
  296. package/esm2022/lib/routes/route-wraper-modules/eyetest-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 -58
  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-eyetest-wrapper.module-CfO814JB.mjs +0 -21
  310. package/fesm2022/tango-app-ui-shared-eyetest-wrapper.module-CfO814JB.mjs.map +0 -1
  311. package/fesm2022/tango-app-ui-shared-intro.module-DYh4ZRha.mjs +0 -188
  312. package/fesm2022/tango-app-ui-shared-intro.module-DYh4ZRha.mjs.map +0 -1
  313. package/fesm2022/tango-app-ui-shared-manage-wrapper.module-BHyh4Njw.mjs +0 -21
  314. package/fesm2022/tango-app-ui-shared-manage-wrapper.module-BHyh4Njw.mjs.map +0 -1
  315. package/fesm2022/tango-app-ui-shared-notification.module-C5ZmCf8U.mjs +0 -400
  316. package/fesm2022/tango-app-ui-shared-notification.module-C5ZmCf8U.mjs.map +0 -1
  317. package/fesm2022/tango-app-ui-shared-profile-wrapper.module-BNC1AGOk.mjs +0 -21
  318. package/fesm2022/tango-app-ui-shared-profile-wrapper.module-BNC1AGOk.mjs.map +0 -1
  319. package/fesm2022/tango-app-ui-shared-store-wrapper.module-DdaCYHdv.mjs +0 -21
  320. package/fesm2022/tango-app-ui-shared-store-wrapper.module-DdaCYHdv.mjs.map +0 -1
  321. package/fesm2022/tango-app-ui-shared-ticket-wrapper.module-r32uKkDO.mjs +0 -21
  322. package/fesm2022/tango-app-ui-shared-ticket-wrapper.module-r32uKkDO.mjs.map +0 -1
  323. package/fesm2022/tango-app-ui-shared.mjs +0 -11322
  324. package/fesm2022/tango-app-ui-shared.mjs.map +0 -1
  325. package/index.d.ts +0 -5
  326. package/lib/guards/auth.guard.d.ts +0 -10
  327. package/lib/guards/lead.guard.d.ts +0 -2
  328. package/lib/guards/stores.guard.d.ts +0 -2
  329. package/lib/guards/tickets.guard.d.ts +0 -2
  330. package/lib/i18n/translation.module.d.ts +0 -8
  331. package/lib/i18n/translation.service.d.ts +0 -19
  332. package/lib/i18n/vocabs/ch.d.ts +0 -104
  333. package/lib/i18n/vocabs/de.d.ts +0 -104
  334. package/lib/i18n/vocabs/en.d.ts +0 -104
  335. package/lib/i18n/vocabs/es.d.ts +0 -104
  336. package/lib/i18n/vocabs/fr.d.ts +0 -104
  337. package/lib/i18n/vocabs/jp.d.ts +0 -104
  338. package/lib/interceptors/http-auth-interceptor.d.ts +0 -19
  339. package/lib/interfaces/global-state.d.ts +0 -5
  340. package/lib/modules/common/common-shared.module.d.ts +0 -13
  341. package/lib/modules/common/custom-select/custom-select.component.d.ts +0 -33
  342. package/lib/modules/common/filters/filters.component.d.ts +0 -38
  343. package/lib/modules/common/pagination/pagination.component.d.ts +0 -18
  344. package/lib/modules/errors/error403/error403.component.d.ts +0 -14
  345. package/lib/modules/errors/error404/error404.component.d.ts +0 -15
  346. package/lib/modules/errors/error500/error500.component.d.ts +0 -15
  347. package/lib/modules/errors/errors-routing.module.d.ts +0 -7
  348. package/lib/modules/errors/errors.component.d.ts +0 -13
  349. package/lib/modules/errors/errors.module.d.ts +0 -13
  350. package/lib/modules/errors/invalid-ip/invalid-ip.component.d.ts +0 -17
  351. package/lib/modules/intro/contact-support/contact-support.component.d.ts +0 -9
  352. package/lib/modules/intro/intro-routing.module.d.ts +0 -7
  353. package/lib/modules/intro/intro.module.d.ts +0 -11
  354. package/lib/modules/intro/lead-intro/lead-intro.component.d.ts +0 -31
  355. package/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.d.ts +0 -13
  356. package/lib/modules/layout/content/content.component.d.ts +0 -25
  357. package/lib/modules/layout/footer/footer.component.d.ts +0 -8
  358. package/lib/modules/layout/header/header-menu/header-menu.component.d.ts +0 -18
  359. package/lib/modules/layout/header/header.component.d.ts +0 -30
  360. package/lib/modules/layout/header/navbar/navbar.component.d.ts +0 -45
  361. package/lib/modules/layout/header/notifications-inner/notifications-inner.component.d.ts +0 -25
  362. package/lib/modules/layout/header/page-title/page-title.component.d.ts +0 -23
  363. package/lib/modules/layout/keenicon/keenicon.component.d.ts +0 -13
  364. package/lib/modules/layout/layout/layout.component.d.ts +0 -82
  365. package/lib/modules/layout/layout.module.d.ts +0 -49
  366. package/lib/modules/layout/scripts-init/scripts-init.component.d.ts +0 -19
  367. package/lib/modules/layout/scroll-top/scroll-top.component.d.ts +0 -19
  368. package/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.d.ts +0 -45
  369. package/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.d.ts +0 -19
  370. package/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.d.ts +0 -26
  371. package/lib/modules/layout/sidebar/sidebar.component.d.ts +0 -36
  372. package/lib/modules/layout/toolbar/accounting/accounting.component.d.ts +0 -8
  373. package/lib/modules/layout/toolbar/classic/classic.component.d.ts +0 -48
  374. package/lib/modules/layout/toolbar/client-settings/client-settings.component.d.ts +0 -16
  375. package/lib/modules/layout/toolbar/date-single-select/date-single-select.component.d.ts +0 -28
  376. package/lib/modules/layout/toolbar/datepicker/datepicker.component.d.ts +0 -28
  377. package/lib/modules/layout/toolbar/extended/extended.component.d.ts +0 -8
  378. package/lib/modules/layout/toolbar/metrics-header/metrics-header.component.d.ts +0 -103
  379. package/lib/modules/layout/toolbar/reports/reports.component.d.ts +0 -9
  380. package/lib/modules/layout/toolbar/saas/saas.component.d.ts +0 -9
  381. package/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.d.ts +0 -32
  382. package/lib/modules/layout/toolbar/single-store/single-store.component.d.ts +0 -33
  383. package/lib/modules/layout/toolbar/single-storedate/single-storedate.component.d.ts +0 -34
  384. package/lib/modules/layout/toolbar/storesingle/storesingle.component.d.ts +0 -24
  385. package/lib/modules/layout/toolbar/toolbar.component.d.ts +0 -56
  386. package/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.d.ts +0 -93
  387. package/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.d.ts +0 -80
  388. package/lib/modules/layout/toolbar/trax-header/trax-header.component.d.ts +0 -83
  389. package/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.d.ts +0 -74
  390. package/lib/modules/notification/conformation/conformation.component.d.ts +0 -10
  391. package/lib/modules/notification/notification/notification.component.d.ts +0 -63
  392. package/lib/modules/notification/notification-routing.module.d.ts +0 -7
  393. package/lib/modules/notification/notification.module.d.ts +0 -11
  394. package/lib/pipes/customDate.pipe.d.ts +0 -7
  395. package/lib/routes/route-wraper-modules/edge-wrapper.module.d.ts +0 -7
  396. package/lib/routes/route-wraper-modules/eyetest-wrapper.module.d.ts +0 -7
  397. package/lib/routes/route-wraper-modules/manage-wrapper.module.d.ts +0 -7
  398. package/lib/routes/route-wraper-modules/profile-wrapper.module.d.ts +0 -7
  399. package/lib/routes/route-wraper-modules/store-wrapper.module.d.ts +0 -7
  400. package/lib/routes/route-wraper-modules/ticket-wrapper.module.d.ts +0 -7
  401. package/lib/routes/routing.d.ts +0 -3
  402. package/lib/services/auth.service.d.ts +0 -49
  403. package/lib/services/notification.service.d.ts +0 -30
  404. package/lib/services/toast.service.d.ts +0 -10
@@ -1 +0,0 @@
1
- {"version":3,"file":"tango-app-ui-shared.mjs","sources":["../../../projects/tango-app-shared/src/lib/services/auth.service.ts","../../../projects/tango-app-shared/src/lib/services/toast.service.ts","../../../projects/tango-app-shared/src/lib/modules/layout/header/header-menu/header-menu.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/header/header-menu/header-menu.component.html","../../../projects/tango-app-shared/src/lib/services/notification.service.ts","../../../projects/tango-app-shared/src/lib/pipes/customDate.pipe.ts","../../../projects/tango-app-shared/src/lib/modules/layout/header/navbar/navbar.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/header/navbar/navbar.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/keenicon/keenicon.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/keenicon/keenicon.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/header/header.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/header/header.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/content/content.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/content/content.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/footer/footer.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/footer/footer.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/scripts-init/scripts-init.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/scripts-init/scripts-init.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/header/page-title/page-title.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/header/page-title/page-title.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/classic/classic.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/classic/classic.component.html","../../../projects/tango-app-shared/src/lib/modules/common/custom-select/custom-select.component.ts","../../../projects/tango-app-shared/src/lib/modules/common/custom-select/custom-select.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/client-settings/client-settings.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/client-settings/client-settings.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/datepicker/datepicker.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/datepicker/datepicker.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/date-single-select/date-single-select.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/single-store/single-store.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/single-store/single-store.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/trax-header/trax-header.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/trax-header/trax-header.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/single-storedate/single-storedate.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/metrics-header/metrics-header.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/single-clientstore-date/single-clientstore-date.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/toolbar.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/toolbar.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/sidebar/sidebar.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/sidebar/sidebar.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/scroll-top/scroll-top.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/scroll-top/scroll-top.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/layout/layout.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/layout/layout.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/accounting/accounting.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/accounting/accounting.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/extended/extended.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/extended/extended.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/reports/reports.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/reports/reports.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/saas/saas.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/saas/saas.component.html","../../../projects/tango-app-shared/src/lib/modules/errors/errors.component.ts","../../../projects/tango-app-shared/src/lib/modules/errors/errors.component.html","../../../projects/tango-app-shared/src/lib/modules/errors/error404/error404.component.ts","../../../projects/tango-app-shared/src/lib/modules/errors/error404/error404.component.html","../../../projects/tango-app-shared/src/lib/modules/errors/error500/error500.component.ts","../../../projects/tango-app-shared/src/lib/modules/errors/error500/error500.component.html","../../../projects/tango-app-shared/src/lib/modules/common/pagination/pagination.component.ts","../../../projects/tango-app-shared/src/lib/modules/common/pagination/pagination.component.html","../../../projects/tango-app-shared/src/lib/modules/common/filters/filters.component.ts","../../../projects/tango-app-shared/src/lib/modules/common/filters/filters.component.html","../../../projects/tango-app-shared/src/lib/i18n/translation.module.ts","../../../projects/tango-app-shared/src/lib/i18n/translation.service.ts","../../../projects/tango-app-shared/src/lib/i18n/vocabs/en.ts","../../../projects/tango-app-shared/src/lib/i18n/vocabs/ch.ts","../../../projects/tango-app-shared/src/lib/i18n/vocabs/de.ts","../../../projects/tango-app-shared/src/lib/i18n/vocabs/es.ts","../../../projects/tango-app-shared/src/lib/i18n/vocabs/fr.ts","../../../projects/tango-app-shared/src/lib/i18n/vocabs/jp.ts","../../../projects/tango-app-shared/src/lib/guards/stores.guard.ts","../../../projects/tango-app-shared/src/lib/guards/tickets.guard.ts","../../../projects/tango-app-shared/src/lib/guards/lead.guard.ts","../../../projects/tango-app-shared/src/lib/routes/routing.ts","../../../projects/tango-app-shared/src/lib/modules/common/common-shared.module.ts","../../../projects/tango-app-shared/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/header/notifications-inner/notifications-inner.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/storesingle/storesingle.component.ts","../../../projects/tango-app-shared/src/lib/modules/layout/toolbar/storesingle/storesingle.component.html","../../../projects/tango-app-shared/src/lib/modules/layout/layout.module.ts","../../../projects/tango-app-shared/src/lib/modules/errors/error403/error403.component.ts","../../../projects/tango-app-shared/src/lib/modules/errors/error403/error403.component.html","../../../projects/tango-app-shared/src/lib/modules/errors/invalid-ip/invalid-ip.component.ts","../../../projects/tango-app-shared/src/lib/modules/errors/invalid-ip/invalid-ip.component.html","../../../projects/tango-app-shared/src/lib/modules/errors/errors-routing.module.ts","../../../projects/tango-app-shared/src/lib/modules/errors/errors.module.ts","../../../projects/tango-app-shared/src/lib/guards/auth.guard.ts","../../../projects/tango-app-shared/src/lib/interceptors/http-auth-interceptor.ts","../../../projects/tango-app-shared/src/public-api.ts","../../../projects/tango-app-shared/src/tango-app-ui-shared.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, catchError, map, of, throwError,BehaviorSubject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n clientApiUrl: string;\r\n authlocalStorageToken: string;\r\n userApiUrl: string;\r\n storeApiUrl: string;\r\n billingApiUrl:string;\r\n oldDashboardUrl: string;\r\n dropDownTrigger = new BehaviorSubject(null)\r\n trafficApiUrl: any;\r\n traxUrl:any;\r\n galleryApiUrl:any;\r\n storeBuilderApiUrl: any;\r\n constructor(private router:Router,private gs:GlobalStateService,private http:HttpClient) { \r\n this.gs.environment.subscribe((env)=>{\r\n if(env){\r\n this.clientApiUrl = env.clientApiUrl;\r\n this.userApiUrl = env.userApiUrl; \r\n this.storeApiUrl =env.storeApiUrl;\r\n this.oldDashboardUrl =env.oldDashboardUrl;\r\n this.authlocalStorageToken = `${env.appVersion}-${env.USERDATA_KEY}`;\r\n this.billingApiUrl = env.billingApiUrl\r\n this.trafficApiUrl = env.trafficApiUrl;\r\n this.galleryApiUrl = env.galleryApiUrl;\r\n this.traxUrl = env.trafficApiUrl;\r\n this.traxUrl = env.traxUrl;\r\n this.storeBuilderApiUrl = env.storeBuilderUrl;\r\n }\r\n }) }\r\n \r\n handleError(res: any) {\r\n return throwError(res.error);\r\n}\r\ngetHeaders() {\r\n const headers = {\r\n 'Authorization': 'Bearer ' + this.authlocalStorageToken\r\n };\r\n\r\n return headers;\r\n}\r\n\r\n logout() {\r\n // this.deleteCookie(this.authlocalStorageToken);\r\n return this.http.get(`${this.userApiUrl}/logout`)\r\n }\r\n getClients(){\r\n return this.http.get(`${this.clientApiUrl}/get-clients`, {\r\n })\r\n .pipe(map((response: any) => response),\r\n catchError(this.handleError));\r\n }\r\n getStores(id:any){\r\n return this.http.get(`${this.storeApiUrl}/get-stores?clientId=${id}`, {\r\n })\r\n .pipe(map((response: any) => response),\r\n catchError(this.handleError));\r\n }\r\n getOldDashboardRedirect(data:any){\r\n return this.http.post(`${this.oldDashboardUrl}/auth/oldDashboardUserLogin`,data, {\r\n headers: this.getHeaders()\r\n })\r\n }\r\n userProfileDet(): Observable<any> {\r\n return this.http\r\n .get(`${this.userApiUrl}/profileV2`, { headers: this.getHeaders() })\r\n .pipe(\r\n map((response: any) => {\r\n localStorage.setItem(\"user-info\", JSON.stringify(response.data));\r\n return response;\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n refreshToken() {\r\n const userId = JSON.parse(localStorage.getItem(\"user-info\") || \"\")?._id;\r\n const refreshToken = JSON.parse(\r\n localStorage.getItem(this.authlocalStorageToken) || \"\"\r\n )?.refreshToken;\r\n let params: any = {\r\n userId: userId,\r\n refreshToken: refreshToken,\r\n };\r\n return this.http\r\n .get(`${this.userApiUrl}/refresh-token`, { params: params })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getPersonalInfo(): Observable<any> {\r\n return this.http.get<any>(`${this.userApiUrl}/profileV2`).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAssignedUsers(clientId:string):Observable<any>{ \r\n return this.http.get(`${this.userApiUrl}/get-assign-client?clientId=${clientId}` )\r\n }\r\n\r\n checkToShowPopup(clientId:string):Observable<any>{ \r\n return this.http.get(`${this.clientApiUrl}/show-csm-assign-confirmation?clientId=${clientId}` )\r\n }\r\n\r\n csmAssignClientAction(clientId:string, data:any):Observable<any>{ \r\n return this.http.post(`${this.clientApiUrl}/client-csm-assign-action?clientId=${clientId}`, data )\r\n }\r\n\r\n getLeadProducts(email:string):Observable<any>{ \r\n return this.http.get(`${this.billingApiUrl}/getLeadProducts/${email}` )\r\n }\r\n\r\n getClientProducts(clientId:string):Observable<any>{ \r\n return this.http.get(`${this.billingApiUrl}/getClientProducts/${clientId}` )\r\n }\r\n\r\n getLocation(data:any):Observable<any>{ \r\n return this.http.post(`${this.trafficApiUrl}/headerLocations_v2`,data)\r\n }\r\n getGroups(data:any):Observable<any>{ \r\n return this.http.post(`${this.trafficApiUrl}/headercluster_v2`,data)\r\n }\r\n getHeaderStores(data:any):Observable<any>{ \r\n return this.http.post(`${this.trafficApiUrl}/headerStores_v2`,data)\r\n }\r\n getHeadertraxStores(data:any):Observable<any>{ \r\n return this.http.post(`${this.galleryApiUrl}/headerStores_v2`,data)\r\n }\r\n\r\n getBrandDetails(id: any) {\r\n return this.http.get(`${this.clientApiUrl}/client-details/${id}`)\r\n }\r\n\r\n getHeaderUsers(data:any):Observable<any>{ \r\n return this.http.post(`${this.trafficApiUrl}/headerUserEmails_v2`,data)\r\n }\r\n\r\n getCountry(data:any):Observable<any>{ \r\n return this.http.post(`${this.trafficApiUrl}/headerCountry_v2`,data)\r\n }\r\n getPlanoUsers() {\r\n return this.http.get(`${this.storeBuilderApiUrl}/getPlanoUser`);\r\n }\r\n getHeaderZone(data:any):Observable<any>{\r\n return this.http.post(`${this.trafficApiUrl}/headerZoneV2`,data)\r\n }\r\n\r\n// private base64Encode(str: any) {\r\n// return btoa(encodeURIComponent(str));\r\n// }\r\n\r\n// private base64Decode(str: any) {\r\n// return decodeURIComponent(atob(str));\r\n// }\r\n// setCookie(name: string, value: string, days: number = 1): void {\r\n// const encodedValue = this.base64Encode(value);\r\n// const expires = new Date(Date.now() + days * 864e5).toUTCString();\r\n// document.cookie = `${name}=${encodedValue}; expires=${expires}; path=/; Secure; SameSite=Strict`;\r\n// }\r\n\r\n// getCookie(name: string): string | null {\r\n// const match = document.cookie.match(new RegExp(`(^| )${name}=([^;]+)`));\r\n// return match ? this.base64Decode(match[2]) : null;\r\n// }\r\n// deleteCookie(name: string): void {\r\n// document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\r\n// }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport Swal from 'sweetalert2';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastService {\r\n\r\n constructor() { }\r\n\r\n\r\n\r\ngetSuccessToast(message:any){\r\n Swal.fire({\r\n iconHtml: `<img src=\"../../../../assets/tango/toast-icons/success-icon.svg\">`,\r\n html: `<div class=\"col-md-12 pt-3 pb-0\"><div class=\"toasttitile\">${message}</div></div>`,\r\n toast: true,\r\n position: \"bottom\",\r\n showConfirmButton: false,\r\n showCloseButton: true,\r\n timer: 6000,\r\n timerProgressBar: true,\r\n customClass: \"toast-light-success\",\r\n didOpen: (toast) => {\r\n toast.addEventListener(\"mouseenter\", Swal.stopTimer);\r\n toast.addEventListener(\"mouseleave\", Swal.resumeTimer);\r\n },\r\n });\r\n}\r\n\r\ngetPrimaryToast(message:string){\r\n Swal.fire({\r\n iconHtml: `<img src=\"../../../../assets/tango/toast-icons/Envelope-Open-icon.svg\">`,\r\n html: `<div class=\"col-md-12 pt-3 pb-0\"><div class=\"toasttitile\">${message}</div></div>`,\r\n toast: true,\r\n position: 'bottom',\r\n showConfirmButton: false,\r\n showCloseButton: true,\r\n timer: 6000,\r\n timerProgressBar: true,\r\n customClass:'toast-light-primary',\r\n didOpen: (toast) => {\r\n toast.addEventListener('mouseenter', Swal.stopTimer)\r\n toast.addEventListener('mouseleave', Swal.resumeTimer)\r\n }\r\n })\r\n}\r\n\r\ngetErrorToast(message:string){\r\n Swal.fire({\r\n iconHtml: `<img src=\"../../../../assets/tango/toast-icons/error-icon.svg\">`,\r\n html: `<div class=\"col-md-12 pt-3 pb-0\"><div class=\"toasttitile\">${message}</div></div>`,\r\n toast: true,\r\n position: 'bottom',\r\n showConfirmButton: false,\r\n showCloseButton: true,\r\n timer: 6000,\r\n timerProgressBar: true,\r\n customClass:'toast-light-error',\r\n didOpen: (toast) => {\r\n toast.addEventListener('mouseenter', Swal.stopTimer)\r\n toast.addEventListener('mouseleave', Swal.resumeTimer)\r\n }\r\n })\r\n}\r\ngetWarningToast(message:string){\r\n Swal.fire({\r\n iconHtml: `<img src=\"../../../../assets/tango/toast-icons/warning-icon.svg\">`,\r\n html: `<div class=\"col-md-12 pt-3 pb-0\"><div class=\"toasttitile\">${message}</div></div>`,\r\n toast: true,\r\n position: 'bottom',\r\n showConfirmButton: false,\r\n showCloseButton: true,\r\n timer: 6000,\r\n timerProgressBar: true,\r\n customClass:'toast-light-warning',\r\n didOpen: (toast) => {\r\n toast.addEventListener('mouseenter', Swal.stopTimer)\r\n toast.addEventListener('mouseleave', Swal.resumeTimer)\r\n }\r\n })\r\n}\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { PageInfoService } from 'tango-app-ui-global';\r\n\r\n\r\n@Component({\r\n selector: 'lib-header-menu',\r\n templateUrl: './header-menu.component.html',\r\n styleUrls: ['./header-menu.component.scss'],\r\n})\r\nexport class HeaderMenuComponent implements OnInit, OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n\r\n @Input() appPageTitleDirection: string = '';\r\n @Input() appPageTitleDescription: boolean = true;\r\n\r\n title$: Observable<string>;\r\n description$: Observable<string>;\r\n\r\n constructor(private pageInfo: PageInfoService, private cd:ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.title$ = this.pageInfo.title.asObservable();\r\n this.description$ = this.pageInfo.description.asObservable();\r\n\r\n this.title$.subscribe((e)=>{\r\n this.cd.detectChanges()\r\n })\r\n this.description$.subscribe((e)=>{\r\n this.cd.detectChanges()\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n}\r\n\r\n","<ng-container *ngIf=\"title$ | async as title\">\r\n <!-- begin::Title -->\r\n <h1 class=\"page-heading d-flex text-gray-900 fw-bold fs-3 mt-7 mb-0 flex-column justify-content-center\">\r\n {{ title }}\r\n <ng-container *ngIf=\"appPageTitleDescription\">\r\n <ng-container *ngIf=\"description$ | async as description\">\r\n\r\n\r\n <!--begin::Description-->\r\n <span class=\"page-desc text-muted fs-7 fw-semibold mt-2\" [ngClass]=\"{'pt-2': appPageTitleDirection === 'column'}\">\r\n <ng-container *ngIf=\"appPageTitleDirection === 'row'\">\r\n <!--begin::Separator-->\r\n <span class=\"h-20px border-1 border-gray-300 border-start ms-3 mx-2\"></span>\r\n <!--end::Separator-->\r\n </ng-container>\r\n\r\n <!-- {{description}} -->\r\n </span>\r\n <!--end::Description-->\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n </h1>\r\n <!-- end::Title -->\r\n\r\n</ng-container>\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, catchError, map, throwError,BehaviorSubject } from 'rxjs';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n paymentSubscriptionApiUrl: any;\r\n clientApiUrl:string;\r\n traxUrl:any;\r\n private reloadDataSubject = new BehaviorSubject<boolean>(false);\r\n reloadData$ = this.reloadDataSubject.asObservable();\r\n\r\n clientId = new BehaviorSubject<string>('')\r\n clientData = new BehaviorSubject<any>(null)\r\n\r\n private notificationReceivedSubject = new BehaviorSubject<boolean>(false);\r\n notificationReceived$ = this.notificationReceivedSubject.asObservable();\r\n\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.paymentSubscriptionApiUrl = env.paymentSubscriptionApiUrl;\r\n this.traxUrl = env.traxUrl;\r\n }\r\n this.gs.dataRangeValue.subscribe((e:any)=>{ \r\n if(e){\r\n this.clientId.next(e.client)\r\n }\r\n })\r\n });\r\n\r\n }\r\n triggerReload() {\r\n this.reloadDataSubject.next(true);\r\n }\r\n\r\n notificationList(data:any): Observable<any> {\r\n return this.http.get(`${this.paymentSubscriptionApiUrl}/notificationList?limit=${data.limit}&offset=${data.offset}`)\r\n }\r\n notificationUpdate(_id:any):Observable<any>{\r\n return this.http.put(`${this.paymentSubscriptionApiUrl}/notification/update/${_id}`,'')\r\n }\r\n notificationPushUpdate( data:any):Observable<any>{\r\n return this.http.put(`${this.paymentSubscriptionApiUrl}/pushNotification/update/${data._id}`, data)\r\n }\r\n updateNotificationReceived(value: boolean) {\r\n this.notificationReceivedSubject.next(value);\r\n }\r\n updateRemind(_id:any):Observable<any>{\r\n return this.http.post(`${this.paymentSubscriptionApiUrl}/updateRemind/${_id}`,'')\r\n }\r\n updateSubscription(data: any): Observable<any> {\r\n return this.http\r\n .put<any>(`${this.paymentSubscriptionApiUrl}/update/subscription/${data.clientId}`, data, {\r\n })\r\n }\r\n\r\n trialApproved(data:any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.paymentSubscriptionApiUrl}/admin/trialApproval`, data, {\r\n })\r\n }\r\n getdownloadlist( data:any):Observable<any>{\r\n return this.http.post(`${this.traxUrl}/downloads/downloadList`, data)\r\n }\r\n\r\n cancelDownload(data:any): Observable<any> {\r\n return this.http.put(`${this.traxUrl}/downloads/cancelDownload/${data}`,'')\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n \r\n@Pipe({\r\n name: 'customDateFormat'\r\n})\r\nexport class CustomDateFormatPipe implements PipeTransform {\r\n \r\n transform(value: any, ...args: any[]): any {\r\n if (value) {\r\n const datePipe = new DatePipe('en-US');\r\n const formattedDate = datePipe.transform(value, 'dd MMM, yyyy');\r\n return formattedDate;\r\n }\r\n return null;\r\n }\r\n \r\n}","import { ChangeDetectorRef, Component, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NotificationService } from '../../../../services/notification.service';\r\nimport { Subscription,filter } from 'rxjs';\r\nimport { Router,ActivatedRoute,NavigationEnd } from '@angular/router';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { ToastService } from '../../../../services/toast.service';\r\nimport { trigger, state, style, transition, animate } from '@angular/animations';\r\nconst enterTransition = transition(':enter', [\r\n style({\r\n opacity: 0,\r\n // transform: 'translateX(50px)'\r\n }),\r\n animate('1s ease-in', style({\r\n opacity: 1\r\n }))\r\n]);\r\n \r\nconst leaveTrans = transition(':leave', [\r\n style({\r\n opacity: 1,\r\n // transform: 'translateX(-50px)'\r\n }),\r\n animate('1s ease-out', style({\r\n opacity: 0,\r\n }))\r\n])\r\n \r\nconst fadeIn = trigger('fadeIn', [\r\n enterTransition\r\n]);\r\n \r\nconst fadeOut = trigger('fadeOut', [\r\n leaveTrans\r\n])\r\n@Component({\r\n selector: 'lib-navbar',\r\n templateUrl: './navbar.component.html',\r\n styleUrls: ['./navbar.component.scss'],\r\n animations: [\r\n fadeIn,\r\n fadeOut\r\n\r\n ]\r\n})\r\nexport class NavbarComponent implements OnInit,OnDestroy {\r\n @Input() appHeaderDefaulMenuDisplay: boolean;\r\n @Input() isRtl: boolean;\r\n private readonly destroy$ = new Subject();\r\n\r\n itemClass: string = 'ms-1 ms-lg-3';\r\n btnClass: string = 'btn btn-icon btn-custom btn-icon-muted btn-active-light btn-active-color-primary w-35px h-35px w-md-40px h-md-40px';\r\n btnClass1: string;\r\n userAvatarClass: string = 'symbol-35px symbol-md-40px';\r\n btnIconClass: string = 'fs-2 fs-md-1';\r\n notificationReceived: boolean = false;\r\n notification:any = [];\r\n pushNotificationList:any = [];\r\n activeTabId:string = 'alerts';\r\n loading:boolean = true;\r\n noData:boolean = false;\r\n url:any;\r\n showNotification:boolean = true;\r\n showDropdown:boolean = false;\r\n\r\n private subscription: Subscription;\r\n notificationDropDownClass: boolean = true;\r\n\r\n constructor(private service:NotificationService,private router:Router,private toast:ToastService,private cd:ChangeDetectorRef) {\r\n \r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd),takeUntil(this.destroy$)).subscribe(() => {\r\n this.showNotificationIcon();\r\n });\r\n this.showNotificationIcon();\r\n \r\n }\r\n \r\n showNotificationIcon () {\r\n let url = this.router.url.split('/');\r\n if(url.includes('notifications')) {\r\n this.showNotification = false;\r\n }\r\n else {\r\n this.showNotification = true;\r\n }\r\n this.notificationList();\r\n }\r\n\r\n toggleUserDropDown() {\r\n this.notificationDropDownClass = !this.notificationDropDownClass;\r\n }\r\n setActiveTabId(tabId: any) {\r\n this.activeTabId = tabId;\r\n }\r\n\r\n notificationList() {\r\n this.pushNotificationList = []; \r\n this.loading = true;\r\n let data = {\r\n limit: 10,\r\n offset: 1\r\n };\r\n this.service.notificationList(data)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.loading = false;\r\n this.noData = false;\r\n this.notification = res.data.result.slice(0,5);\r\n this.pushNotificationList = res.data.result.filter((item:any) => item._source.showPushNotification);\r\n this.pushNotificationList.forEach((item: any) => {\r\n item._score = true;\r\n setTimeout(() => {\r\n item._score = false;\r\n this.service.notificationPushUpdate(item).pipe(takeUntil(this.destroy$)).subscribe ((res: any) => {\r\n })\r\n // this.notificationPushUpdate(item,'');\r\n }, 6000);\r\n });\r\n \r\n } else {\r\n this.notification = []; \r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },\r\n error: (err) => {\r\n this.notification = []; \r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n });\r\n }\r\n\r\n notificationPushUpdate(data: any,btnDetails:any): void {\r\n this.service.notificationPushUpdate(data).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if (res && res.code == 200) {\r\n if(btnDetails && btnDetails?.redirectionUrl != '' && btnDetails?.redirectionUrl.split('/').length > 1) {\r\n this.router.navigateByUrl(btnDetails.redirectionUrl);\r\n }\r\n if(btnDetails && btnDetails?.redirectionUrl == 'remind') {\r\n this.service.updateRemind(data._id).pipe(takeUntil(this.destroy$)).subscribe(() => {})\r\n \r\n }\r\n if(btnDetails && btnDetails?.redirectionUrl == 'trialApproved') {\r\n let params = {\r\n id:btnDetails.id,\r\n type:'approve'\r\n }\r\n this.service.trialApproved(params).pipe(takeUntil(this.destroy$)).subscribe((res:any) => {})\r\n }\r\n if(btnDetails && btnDetails?.redirectionUrl == 'subscribed') {\r\n let params = {\r\n clientId: btnDetails?.clientId,\r\n products: [\r\n {\r\n name: btnDetails.product,\r\n productName: btnDetails.name,\r\n type: \"subscription\",\r\n content: \"new\"\r\n }\r\n ]\r\n }\r\n this.service.updateSubscription(params).pipe(takeUntil(this.destroy$)).subscribe((res:any) => {})\r\n }\r\n this.cd.detectChanges();\r\n setTimeout(() => {\r\n if(btnDetails) {\r\n if(!this.showNotification){\r\n this.service.triggerReload();\r\n } \r\n this.service.notificationUpdate(data._id).pipe(takeUntil(this.destroy$)).subscribe()\r\n }\r\n this.notificationList();\r\n },1000);\r\n }\r\n })\r\n }\r\n\r\n updateNotification(data: any, btnDetails: any): void {\r\n this.loading = true;\r\n this.service.notificationUpdate(data._id).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if (res && res.code == 200) {\r\n if(!btnDetails || btnDetails?.redirectionUrl != 'subscribed')\r\n this.toast.getSuccessToast(res.message);\r\n setTimeout(() => {\r\n this.notificationList();\r\n },1000);\r\n if(btnDetails && btnDetails?.redirectionUrl != '' && !['remind','subscribed'].includes(btnDetails?.redirectionUrl)) {\r\n this.router.navigateByUrl(btnDetails.redirectionUrl);\r\n }\r\n if(btnDetails && btnDetails?.redirectionUrl == 'remind') {\r\n this.service.updateRemind(data._id).pipe(takeUntil(this.destroy$)).subscribe(() => {})\r\n }\r\n if(btnDetails && btnDetails?.redirectionUrl == 'trialApproved') {\r\n let params = {\r\n id:btnDetails.id,\r\n type:'approve'\r\n }\r\n this.service.trialApproved(params).pipe(takeUntil(this.destroy$)).subscribe(() => {})\r\n }\r\n if(btnDetails && btnDetails?.redirectionUrl == 'subscribed') {\r\n let params = {\r\n clientId: btnDetails?.clientId,\r\n products: [\r\n {\r\n name: btnDetails.product,\r\n productName: btnDetails.name,\r\n type: \"subscription\",\r\n content: \"new\"\r\n }\r\n ]\r\n }\r\n this.service.updateSubscription(params).pipe(takeUntil(this.destroy$)).subscribe((res:any) => {\r\n if(res && res.code == 200) {\r\n this.toast.getSuccessToast('Product Subscribed Successfully');\r\n }\r\n })\r\n }\r\n this.cd.detectChanges();\r\n }\r\n },(error:any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n })\r\n }\r\n\r\n handleNotification() {\r\n this.service.updateNotificationReceived(true);\r\n }\r\n\r\n viewAll(type:any){\r\n this.router.navigateByUrl('/notifications/alerts')\r\n }\r\n redirecttonotification(){\r\n this.router.navigateByUrl('/notifications/alerts?tab=download')\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick (event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if(!target.closest('.app-navbar')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n}\r\n","<!--begin::Notifications-->\r\n<div class=\"app-navbar-item\" [ngClass]=\"itemClass\" *ngIf=\"showNotification\">\r\n <!--begin::Menu- wrapper-->\r\n <div [ngClass]=\"btnClass\" (click)=\"showDropdown = !showDropdown\">\r\n <span *ngIf=\"!notification.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 20 24\" fill=\"none\">\r\n <path\r\n d=\"M10.6779 2.4V3.00688L11.2715 3.1335C14.1674 3.75125 16.3919 6.45842 16.3919 9.75V10.6313C16.3919 13.0131 17.2249 15.3087 18.7338 17.0963L18.7352 17.0979L19.0636 17.4846C19.0639 17.485 19.0642 17.4853 19.0645 17.4857C19.2557 17.7136 19.3048 18.0393 19.185 18.3174C19.0641 18.5983 18.8153 18.75 18.5704 18.75H1.42848C1.1825 18.75 0.933931 18.5974 0.815017 18.3193C0.695108 18.0388 0.744592 17.7123 0.933996 17.4853C0.934445 17.4848 0.934894 17.4843 0.935344 17.4837L1.26312 17.0985L1.26473 17.0966C2.77599 15.3086 3.60697 13.0127 3.60697 10.6313V9.75C3.60697 6.45434 5.79488 3.75145 8.72559 3.13388L9.32094 3.00843V2.4V1.5C9.32094 1.05052 9.65806 0.75 9.99944 0.75C10.3408 0.75 10.6779 1.05052 10.6779 1.5V2.4ZM9.99944 23.25C9.44983 23.25 8.91726 23.023 8.52034 22.6062C8.29649 22.3712 8.12457 22.0708 8.01769 21.75H11.9812C11.8743 22.0708 11.7024 22.3712 11.4785 22.6062C11.0856 23.0188 10.5146 23.25 9.99944 23.25Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.5\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"notification.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"24\" viewBox=\"0 0 20 24\" fill=\"none\">\r\n <path\r\n d=\"M11.4279 2.4V1.5C11.4279 0.671719 10.7896 0 9.99944 0C9.2093 0 8.57094 0.671719 8.57094 1.5V2.4C5.27202 3.09516 2.85697 6.12188 2.85697 9.75V10.6313C2.85697 12.8391 2.08648 14.9625 0.691915 16.6125L0.360862 17.0016C-0.0128805 17.4469 -0.10505 18.075 0.125384 18.6141C0.355818 19.1531 0.866013 19.5 1.42848 19.5H18.5704C19.1329 19.5 19.6418 19.1531 19.8739 18.6141C20.106 18.075 20.0123 17.4469 19.6373 17.0016L19.307 16.6125C17.9142 14.9625 17.1419 12.8391 17.1419 10.6313V9.75C17.1419 9.39947 17.119 9.05455 17.0746 8.71681C16.5845 8.8999 16.054 9 15.5 9C13.0147 9 11 6.98528 11 4.5C11 3.74877 11.1841 3.04054 11.5096 2.41795C11.4824 2.4118 11.4552 2.40582 11.4279 2.4Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M7.97723 23.1234C8.51291 23.6859 9.24055 24 9.99944 24C10.7181 24 11.486 23.6859 12.0216 23.1234C12.5573 22.5609 12.8564 21.7547 12.8564 21H7.14245C7.14245 21.7547 7.44154 22.5609 7.97723 23.1234Z\"\r\n fill=\"#00A3FF\" />\r\n <circle cx=\"16\" cy=\"4\" r=\"4\" fill=\"#F04438\" />\r\n </svg>\r\n </span>\r\n <div class=\"menu menu-sub menu-sub-dropdown menu-column w-450px w-lg-425px notificationMenu\" *ngIf=\"showDropdown\">\r\n <div class=\"card topbar\">\r\n <div class=\"card-header\">\r\n <h3 class=\"title-notify mt-10 mb-6\">\r\n Notifications\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex mt-5\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <div (click)=\"redirecttonotification()\" [routerLink]=\"['/notifications/alerts?tab=download']\" class=\"text-primary\">View All <span><svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M14 9.83333V14.8333C14 15.2754 13.8244 15.6993 13.5118 16.0118C13.1993 16.3244 12.7754 16.5 12.3333 16.5H3.16667C2.72464 16.5 2.30072 16.3244 1.98816 16.0118C1.67559 15.6993 1.5 15.2754 1.5 14.8333V5.66667C1.5 5.22464 1.67559 4.80072 1.98816 4.48816C2.30072 4.17559 2.72464 4 3.16667 4H8.16667M11.5 1.5H16.5M16.5 1.5V6.5M16.5 1.5L7.33333 10.6667\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData && !loading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/noNotification.svg\" alt=\"\">\r\n <span class=\"notificationAlign mt-10\">No New Notification</span>\r\n <span class=\"noNotification mt-2\">Any new notification will be shown here.</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alertscroll\" *ngIf=\"notification.length\">\r\n <div *ngFor=\"let item of notification\" class=\"mh-200px ng-star-inserted\" style=\"overflow: auto;\">\r\n <div class=\"d-flex flex-stack py-3 mx-4 ng-star-inserted\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px me-4\"><span class=\"symbol-label bg-light-primary\"><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"></span><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"\r\n version=\"1.1\" class=\"ng-star-inserted\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon points=\"0 0 24 0 24 24 0 24\"></polygon>\r\n <path\r\n d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\" opacity=\"0.3\"></path>\r\n <path\r\n d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\"></path>\r\n </g>\r\n </svg></span></span></div>\r\n <div class=\"mb-0 me-2\" style=\"text-align: left;\">\r\n <div class=\"alert-title\">{{ item._source.title }}</div>\r\n <div class=\"alt-desc\">{{ item._source.description }}</div>\r\n </div>\r\n </div><span class=\"badge badge-light fs-9\">{{ item._source.date|customDateFormat }}</span>\r\n </div>\r\n </div>\r\n <div class=\"text-center border-top\">\r\n <a (click)=\"viewAll('alerts')\" class=\"btn btn-color-gray-600 btn-active-color-primary my-2\">\r\n View All\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"w-450px position-fixed end-0 bottom-0 transition\">\r\n <div class=\"mb-4\" *ngFor=\"let item of pushNotificationList;let i = index\">\r\n <div class=\"alertbg card\" *ngIf=\"item._score\" @fadeIn @fadeOut>\r\n <div class=\"row m-2\">\r\n <div class=\"col-1 align-items-start mt-1\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12254_112653)\">\r\n <path\r\n d=\"M9.99935 13.3334V10M9.99935 6.66669H10.0077M18.3327 10C18.3327 14.6024 14.6017 18.3334 9.99935 18.3334C5.39698 18.3334 1.66602 14.6024 1.66602 10C1.66602 5.39765 5.39698 1.66669 9.99935 1.66669C14.6017 1.66669 18.3327 5.39765 18.3327 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12254_112653\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"col-10 align-items-start\">\r\n <span class=\"alert-title\">\r\n Notification\r\n </span>\r\n <div>\r\n {{item._source.description}}\r\n </div>\r\n </div>\r\n <div class=\"col-1 align-items-start cursor-pointer\" (click)=\"notificationPushUpdate(item,'')\">\r\n <span><svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <!-- -->\r\n <div class=\"d-flex my-2 justify-content-around\" >\r\n <div [ngClass]=\"!['remind','cancel'].includes(button.redirectionUrl) ? '' : 'mt-2'\" *ngFor=\"let button of item._source?.alertCta\">\r\n <button *ngIf=\"!['remind','cancel'].includes(button.redirectionUrl)\" (click)=\"notificationPushUpdate(item,button)\"\r\n type=\"button\" tabindex=\"0\" class=\" ms-10 btn btn-sm btn-primary ng-star-inserted\"\r\n style=\"white-space: nowrap;\"><span class=\"submit\">{{ button.buttonName }} </span></button>\r\n <span *ngIf=\"['remind','cancel'].includes(button.redirectionUrl)\" (click)=\"notificationPushUpdate(item,button)\"\r\n class=\"text-primary mx-6 remindlatertext cursor-pointer\">{{ button.buttonName }} </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import {Component, HostBinding, Input, OnInit} from '@angular/core';\r\nimport icons from './icons.json';\r\n\r\n@Component({\r\n selector: 'lib-keenicon',\r\n templateUrl: './keenicon.component.html',\r\n styleUrls: ['./keenicon.component.scss']\r\n})\r\nexport class KeeniconComponent implements OnInit {\r\n @Input() name: string;\r\n @Input() class: string;\r\n @Input() type: string = 'duotone';\r\n\r\n pathsNumber: number = 0;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.type === 'duotone') {\r\n // @ts-ignore\r\n this.pathsNumber = icons[this.type + '-paths'][this.name] ?? 0;\r\n }\r\n }\r\n\r\n @HostBinding('style.display')\r\n get styleDisplay() {\r\n return 'contents';\r\n }\r\n}\r\n","<span *ngIf=\"type === 'duotone'\" class=\"ki-{{ type }} ki-{{ name }}{{ class ? ' ' + class : '' }}\">\r\n <span *ngFor=\"let i of [].constructor(pathsNumber); let idx = index\" class=\"path{{ idx + 1 }}\"></span>\r\n</span>\r\n<span *ngIf=\"type !== 'duotone'\" class=\"ki-{{ type }} ki-{{ name }}{{ class ? ' ' + class : '' }}\"></span>\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NavigationCancel, NavigationEnd, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { ILayout, LayoutType } from 'tango-app-ui-global';\r\nimport { LayoutService } from 'tango-app-ui-global';\r\nimport { MenuComponent } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent implements OnInit, OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n // Public props\r\n currentLayoutType: LayoutType | null;\r\n\r\n appHeaderDisplay: boolean;\r\n appHeaderDefaultFixedDesktop: boolean;\r\n appHeaderDefaultFixedMobile: boolean;\r\n\r\n appHeaderDefaultContainer: 'fixed' | 'fluid';\r\n headerContainerCssClass: string = '';\r\n appHeaderDefaultContainerClass: string = '';\r\n\r\n appHeaderDefaultStacked: boolean;\r\n\r\n // view\r\n appSidebarDefaultCollapseDesktopEnabled: boolean;\r\n appSidebarDisplay: boolean;\r\n appHeaderDefaultContent: string = '';\r\n appHeaderDefaulMenuDisplay: boolean;\r\n appPageTitleDisplay: boolean;\r\n\r\n constructor(private layout: LayoutService, private router: Router) {\r\n this.routingChanges();\r\n }\r\n\r\n updateProps(config: ILayout) {\r\n this.appHeaderDisplay = this.layout.getProp(\r\n 'app.header.display',\r\n config\r\n ) as boolean;\r\n // view\r\n this.appSidebarDefaultCollapseDesktopEnabled = this.layout.getProp(\r\n 'app.sidebar.default.collapse.desktop.enabled',\r\n config\r\n ) as boolean;\r\n this.appSidebarDisplay = this.layout.getProp(\r\n 'app.sidebar.display',\r\n config\r\n ) as boolean;\r\n this.appHeaderDefaultContent = this.layout.getProp(\r\n 'app.header.default.content',\r\n config\r\n ) as string;\r\n this.appHeaderDefaulMenuDisplay = this.layout.getProp(\r\n 'app.header.default.menu.display',\r\n config\r\n ) as boolean;\r\n this.appPageTitleDisplay = this.layout.getProp(\r\n 'app.pageTitle.display',\r\n config\r\n ) as boolean;\r\n\r\n // body attrs and container css classes\r\n this.appHeaderDefaultFixedDesktop = this.layout.getProp(\r\n 'app.header.default.fixed.desktop',\r\n config\r\n ) as boolean;\r\n if (this.appHeaderDefaultFixedDesktop) {\r\n document.body.setAttribute('data-kt-app-header-fixed', 'true');\r\n }\r\n\r\n this.appHeaderDefaultFixedMobile = this.layout.getProp(\r\n 'app.header.default.fixed.mobile',\r\n config\r\n ) as boolean;\r\n if (this.appHeaderDefaultFixedMobile) {\r\n document.body.setAttribute('data-kt-app-header-fixed-mobile', 'true');\r\n }\r\n\r\n this.appHeaderDefaultContainer = this.layout.getProp(\r\n 'appHeaderDefaultContainer',\r\n config\r\n ) as 'fixed' | 'fluid';\r\n this.headerContainerCssClass =\r\n this.appHeaderDefaultContainer === 'fixed'\r\n ? 'container-xxl'\r\n : 'container-fluid';\r\n\r\n this.appHeaderDefaultContainerClass = this.layout.getProp(\r\n 'app.header.default.containerClass',\r\n config\r\n ) as string;\r\n if (this.appHeaderDefaultContainerClass) {\r\n this.headerContainerCssClass += ` ${this.appHeaderDefaultContainerClass}`;\r\n }\r\n\r\n this.appHeaderDefaultStacked = this.layout.getProp(\r\n 'app.header.default.stacked',\r\n config\r\n ) as boolean;\r\n if (this.appHeaderDefaultStacked) {\r\n document.body.setAttribute('data-kt-app-header-stacked', 'true');\r\n }\r\n\r\n // Primary header\r\n // Secondary header\r\n }\r\n\r\n ngOnInit(): void {\r\n const subscr = this.layout.layoutConfigSubject\r\n .asObservable()\r\n .subscribe((config: ILayout) => {\r\n this.updateProps(config);\r\n });\r\n this.unsubscribe.push(subscr);\r\n const layoutSubscr = this.layout.currentLayoutTypeSubject\r\n .asObservable()\r\n .subscribe((layout) => {\r\n this.currentLayoutType = layout;\r\n });\r\n this.unsubscribe.push(layoutSubscr);\r\n }\r\n\r\n routingChanges() {\r\n const routerSubscription = this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationEnd || event instanceof NavigationCancel) {\r\n MenuComponent.reinitialization();\r\n }\r\n });\r\n this.unsubscribe.push(routerSubscription);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n}\r\n","<!--begin::Header container-->\r\n<div class=\"app-container header-style\" id=\"kt_app_header_container\" [ngClass]=\"headerContainerCssClass\">\r\n <ng-container *ngIf=\"appSidebarDefaultCollapseDesktopEnabled\">\r\n <div class=\"app-sidebar-collapse-d-flex align-items-center me-3\">\r\n <!--begin::sidebar toggle-->\r\n <div class=\"btn btn-icon w-auto px-0 btn-color-muted btn-active-icon-primary\" data-kt-toggle=\"true\"\r\n data-kt-toggle-target=\"body\" data-kt-toggle-mode=\"on\" data-kt-toggle-name=\"app-sidebar-collapse\">\r\n <lib-keenicon name=\"double-right\" class=\"fs-1\"></lib-keenicon>\r\n </div>\r\n <!--end::sidebar toggle-->\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"appSidebarDisplay\">\r\n <!--begin::sidebar mobile toggle-->\r\n <div class=\"d-flex align-items-center d-lg-none ms-n2 me-2\" title=\"Show sidebar menu\">\r\n <div class=\"btn btn-icon btn-active-color-primary w-35px h-35px\" id=\"kt_app_sidebar_mobile_toggle\">\r\n <lib-keenicon name=\"abstract-14\" class=\"fs-1\"></lib-keenicon>\r\n </div>\r\n </div>\r\n <!--end::sidebar mobile toggle-->\r\n <!--begin::Mobile logo-->\r\n <div class=\"d-flex align-items-center flex-grow-1 flex-lg-grow-0\">\r\n <a class=\"d-lg-none\">\r\n <img alt=\"Logo\" src=\"./assets/tango/sidemenu-icons/tango_logo.svg\" class=\"h-30px\" />\r\n </a>\r\n </div>\r\n <!--end::Mobile logo-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!appSidebarDisplay\">\r\n <!--begin::Logo-->\r\n <div class=\"d-flex align-items-center flex-grow-1 flex-lg-grow-0 me-lg-15\">\r\n <a >\r\n <ng-container *ngIf=\"currentLayoutType === 'dark-header'\">\r\n <img alt=\"Logo\" src=\"./assets/tango/sidemenu-icons/tango_logo.svg\"\r\n class=\"h-20px h-lg-30px app-sidebar-logo-default\" />\r\n </ng-container>\r\n <ng-container *ngIf=\"currentLayoutType !== 'dark-header'\">\r\n <img alt=\"Logo\" src=\"./assets/tango/sidemenu-icons/tango_logo.svg\"\r\n class=\"h-20px h-lg-30px app-sidebar-logo-default theme-light-show\" />\r\n <img alt=\"Logo\" src=\"./assets/tango/sidemenu-icons/tango_logo.svg\"\r\n class=\"h-20px h-lg-30px app-sidebar-logo-default theme-dark-show\" />\r\n </ng-container>\r\n </a>\r\n </div>\r\n <!--end::Logo-->\r\n </ng-container>\r\n\r\n <!--begin::Header wrapper-->\r\n <div class=\"d-flex align-items-stretch justify-content-between flex-lg-grow-1 header-border\" id=\"kt_app_header_wrapper\">\r\n <ng-container *ngIf=\"appHeaderDefaultContent === 'menu' && appHeaderDefaulMenuDisplay\">\r\n <!--begin::Menu wrapper-->\r\n <div class=\"\r\n app-header-menu\r\n app-header-mobile-drawer\r\n align-items-stretch\r\n\" data-kt-drawer=\"true\" data-kt-drawer-name=\"app-header-menu\" data-kt-drawer-activate=\"{default: true, lg: false}\"\r\n data-kt-drawer-overlay=\"true\" data-kt-drawer-width=\"225px\" data-kt-drawer-direction=\"end\"\r\n data-kt-drawer-toggle=\"#kt_app_header_menu_toggle\" data-kt-swapper=\"true\"\r\n data-kt-swapper-mode=\"{default: 'append', lg: 'prepend'}\"\r\n data-kt-swapper-parent=\"{default: '#kt_app_body', lg: '#kt_app_header_wrapper'}\">\r\n <!--begin::Menu-->\r\n <lib-header-menu\r\n appPageTitleDirection = ''\r\n [appPageTitleDescription] = true\r\n class=\"\r\n menu\r\n menu-rounded\r\n menu-column\r\n menu-lg-row\r\n my-5\r\n my-lg-0\r\n align-items-stretch\r\n fw-semibold\r\n px-2 px-lg-0\r\n \" id=\"kt_app_header_menu\" data-kt-menu=\"true\"></lib-header-menu>\r\n <!--end::Menu-->\r\n </div>\r\n <!--end::Menu wrapper-->\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appHeaderDefaultContent === 'page-title' && appPageTitleDisplay\">\r\n <app-page-title #ktPageTitle class=\"page-title d-flex\"></app-page-title>\r\n </ng-container> -->\r\n <lib-navbar class=\"app-navbar flex-shrink-0\" [appHeaderDefaulMenuDisplay]=\"appHeaderDefaulMenuDisplay\"\r\n [isRtl]=\"false\"></lib-navbar>\r\n </div>\r\n <!--end::Header wrapper-->\r\n</div>\r\n<!--end::Header container-->\r\n","import { Component, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'lib-csm-assign-confirmation',\r\n templateUrl: './csm-assign-confirmation.component.html',\r\n styleUrl: './csm-assign-confirmation.component.scss'\r\n})\r\nexport class CsmAssignConfirmationComponent {\r\n\r\n @Input() clientId:string\r\n @Input() email:string\r\n @Input() mobile:string\r\n @Input() name:string\r\n\r\n constructor(private activeModal:NgbActiveModal){\r\n\r\n }\r\n\r\n onSubmit(value:string){\r\n this.activeModal.close({clientId:this.clientId, action:value})\r\n }\r\n\r\n}\r\n","<span class=\"mb-5\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\" />\r\n <path\r\n d=\"M27.9998 24V28M27.9998 32H28.0098M26.2898 18.86L17.8198 33C17.6451 33.3024 17.5527 33.6453 17.5518 33.9945C17.5508 34.3437 17.6413 34.6871 17.8142 34.9905C17.9871 35.2939 18.2365 35.5467 18.5375 35.7238C18.8385 35.9009 19.1806 35.9961 19.5298 36H36.4698C36.819 35.9961 37.1611 35.9009 37.4621 35.7238C37.7631 35.5467 38.0124 35.2939 38.1854 34.9905C38.3583 34.6871 38.4488 34.3437 38.4478 33.9945C38.4468 33.6453 38.3544 33.3024 38.1798 33L29.7098 18.86C29.5315 18.5661 29.2805 18.3231 28.981 18.1544C28.6814 17.9858 28.3435 17.8972 27.9998 17.8972C27.656 17.8972 27.3181 17.9858 27.0186 18.1544C26.7191 18.3231 26.468 18.5661 26.2898 18.86Z\"\r\n stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</span>\r\n\r\n<span class=\"mb-3 title\">\r\n {{name}} Assigned as Your CSM\r\n</span>\r\n\r\n<span class=\"mb-5 description\">\r\n {{name}} has been assigned as your Customer Success Manager (CSM). For inquiries about data management, store\r\n operations, or user management, please contact {{name}}.\r\n</span>\r\n\r\n<span class=\"mb-5 sub-title\">\r\n Contact Information:\r\n</span>\r\n\r\n<span class=\"mb-5 description\">\r\n <ul>\r\n <li>\r\n Phone: {{mobile}}\r\n </li>\r\n <li>\r\n Email: {{email}}\r\n </li>\r\n </ul>\r\n</span>\r\n\r\n<span class=\"mb-10 description\">\r\n Please approve {{name}}'s access to your data dashboard.\r\n</span>\r\n\r\n<div class=\"d-flex align-items-center justify-content-center\" >\r\n <button (click)=\"onSubmit('decline')\" class=\"btn btn-outline btn-cust me-5\">Decline</button>\r\n\r\n <button (click)=\"onSubmit('approve')\" class=\"btn btn-primary btn-cust\">Approve</button>\r\n\r\n</div>","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NavigationCancel, NavigationEnd, Router } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Subscription } from 'rxjs/internal/Subscription';\r\nimport { CsmAssignConfirmationComponent } from '../components/csm-assign-confirmation/csm-assign-confirmation.component';\r\nimport { AuthService } from '../../../services/auth.service';\r\nimport { ToastService } from '../../../services/toast.service';\r\n// import { DrawerComponent } from '../../../kt/components';\r\n@Component({\r\n selector: 'lib-content',\r\n templateUrl: './content.component.html',\r\n styleUrls: ['./content.component.scss'],\r\n})\r\nexport class ContentComponent implements OnInit, OnDestroy {\r\n @Input() contentContainerCSSClass: string = '';\r\n @Input() appContentContiner?: 'fixed' | 'fluid';\r\n @Input() appContentContainerClass: string = '';\r\n\r\n private unsubscribe: Subscription[] = [];\r\n\r\n constructor(private router: Router, private modalService: NgbModal, private authService:AuthService, private toastService:ToastService) { }\r\n\r\n ngOnInit(): void {\r\n this.routingChanges();\r\n this.getAssignedUsers()\r\n }\r\n\r\n routingChanges() {\r\n const routerSubscription = this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationEnd || event instanceof NavigationCancel) {\r\n // DrawerComponent.hideAll();\r\n }\r\n });\r\n this.unsubscribe.push(routerSubscription);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n\r\n confirmCsmAssign(clientId:string, email?:string, mobile?:string, name?:string ) {\r\n const modalRef = this.modalService.open(CsmAssignConfirmationComponent, {\r\n centered: true, size: 'md', scrollable: true,\r\n });\r\n\r\n modalRef.componentInstance.clientId = clientId;\r\n modalRef.componentInstance.email = email;\r\n modalRef.componentInstance.mobile = mobile;\r\n modalRef.componentInstance.name = name;\r\n\r\n modalRef.result.then((result: any) => {\r\n if(result.action === 'approve' || result.action === 'decline'){\r\n let data = {\r\n action: result.action\r\n }\r\n\r\n this.authService.csmAssignClientAction(result.clientId, data).subscribe({\r\n next:(e)=>{\r\n this.toastService.getSuccessToast(e.message)\r\n },\r\n error:(e)=>{\r\n this.toastService.getErrorToast('Update failed')\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n getAssignedUsers(){\r\n let userData:any = localStorage.getItem('user-info')\r\n if (userData) {\r\n userData = JSON.parse(userData)\r\n if (userData.role === 'superadmin' && userData.userType === 'client') {\r\n this.authService.checkToShowPopup(userData?.clientId).subscribe({\r\n next:(res)=>{\r\n if(res.data.notifyCsmAssign){\r\n this.getCsmDetail(userData?.clientId)\r\n }\r\n \r\n }\r\n })\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n getCsmDetail(clientId:string){\r\n this.authService.getAssignedUsers(clientId).subscribe({\r\n next:(e)=>{\r\n if(e?.data?.result?.length){\r\n e?.data?.result.forEach((element:any) => {\r\n if(element.tangoUserType === 'csm'){\r\n const csm = element?.assignedUser?.[0]\r\n this.confirmCsmAssign(clientId, csm?.email, csm?.mobileNumber, csm?.userName)\r\n }\r\n });\r\n } \r\n }\r\n })\r\n }\r\n}\r\n","<ng-container *ngIf=\"appContentContiner\">\r\n <!--begin::Content container-->\r\n <div id=\"kt_app_content_container\" class=\"app-container\"\r\n [ngClass]=\"appContentContainerClass + ' ' + contentContainerCSSClass\"\r\n [ngClass]=\"{'container-xxl': appContentContiner === 'fixed', 'container-fluid': appContentContiner === 'fluid'}\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <!--end::Content container-->\r\n</ng-container>\r\n<ng-container *ngIf=\"!appContentContiner\">\r\n <router-outlet></router-outlet>\r\n</ng-container>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss'],\r\n})\r\nexport class FooterComponent {\r\n @Input() appFooterContainerCSSClass: string = '';\r\n\r\n currentDateStr: string = new Date().getFullYear().toString();\r\n constructor() {}\r\n}\r\n","<ng-container *ngIf=\"appFooterContainerCSSClass\">\r\n <!--begin::Footer container-->\r\n <div class=\"app-container header-style mt-5\" [ngClass]=\"appFooterContainerCSSClass\">\r\n <ng-container *ngTemplateOutlet=\"footerView\"></ng-container>\r\n </div>\r\n <!--end::Footer container-->\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!appFooterContainerCSSClass\">\r\n <ng-container *ngTemplateOutlet=\"footerView\"></ng-container>\r\n</ng-container>\r\n\r\n<ng-template #footerView>\r\n <!--begin::Copyright-->\r\n <div class=\"text-gray-900 order-2 order-md-1\">\r\n <span class=\"text-muted fw-semibold me-1\">{{currentDateStr}}&copy;</span>\r\n <a target=\"_blank\" href=\"https://tangoeye.ai\" class=\"footer text-gray-800 text-hover-primary\">Tango IT Solutions India Pvt Ltd</a>\r\n </div>\r\n <!--end::Copyright-->\r\n\r\n <!--begin::Menu-->\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-7\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#aboutus\" class=\"menu-link px-5\">About us</a></li>\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/#contact\" class=\"menu-link px-5\">Contact Us</a></li>\r\n <li class=\"menu-item footer\"><a target=\"_blank\" href=\"https://tangoeye.ai/privacy-policy-2/\" class=\"menu-link px-5\">Privacy & policy</a></li>\r\n</ul>\r\n <!--end::Menu-->\r\n\r\n</ng-template>\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ResolveEnd, Router } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport {\r\n ToggleComponent,\r\n ScrollTopComponent,\r\n DrawerComponent,\r\n StickyComponent,\r\n MenuComponent,\r\n ScrollComponent,\r\n} from 'tango-app-ui-global';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { LayoutService, PageInfoService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-scripts-init',\r\n templateUrl: './scripts-init.component.html',\r\n})\r\nexport class ScriptsInitComponent implements OnInit, OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n constructor(\r\n private layout: LayoutService,\r\n private pageInfo: PageInfoService,\r\n private router: Router,\r\n private titleService: Title,\r\n ) {\r\n const initPageInfo = () => {\r\n setTimeout(() => {\r\n // this.pageInfo.calculateTitle();\r\n // this.pageInfo.calculateBreadcrumbs();\r\n\r\n this.pageInfo.title.asObservable().subscribe((title) => {\r\n this.titleService.setTitle(title + ' - TangoEye');\r\n });\r\n }, 10);\r\n };\r\n\r\n initPageInfo();\r\n // subscribe to router events\r\n this.router.events\r\n .pipe(filter((event) => event instanceof ResolveEnd))\r\n .subscribe(initPageInfo);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.pluginsInitialization();\r\n const layoutUpdateSubscription = this.layout.layoutConfigSubject\r\n .asObservable()\r\n .subscribe(() => {\r\n this.pluginsReInitialization();\r\n });\r\n this.unsubscribe.push(layoutUpdateSubscription);\r\n }\r\n\r\n pluginsInitialization() {\r\n setTimeout(() => {\r\n ToggleComponent.bootstrap();\r\n ScrollTopComponent.bootstrap();\r\n DrawerComponent.bootstrap();\r\n StickyComponent.bootstrap();\r\n MenuComponent.bootstrap();\r\n ScrollComponent.bootstrap();\r\n }, 200);\r\n }\r\n\r\n pluginsReInitialization() {\r\n setTimeout(() => {\r\n ToggleComponent.reinitialization();\r\n ScrollTopComponent.reinitialization();\r\n DrawerComponent.reinitialization();\r\n StickyComponent.bootstrap();\r\n MenuComponent.reinitialization();\r\n ScrollComponent.reinitialization();\r\n }, 100);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n}\r\n","","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { PageInfoService, PageLink } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-page-title',\r\n templateUrl: './page-title.component.html',\r\n styleUrls: ['./page-title.component.scss'],\r\n})\r\nexport class PageTitleComponent implements OnInit, OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n\r\n @Input() appPageTitleDirection: string = '';\r\n @Input() appPageTitleBreadcrumb: boolean;\r\n @Input() appPageTitleDescription: boolean;\r\n\r\n title$: Observable<string>;\r\n description$: Observable<string>;\r\n bc$: Observable<Array<PageLink>>;\r\n\r\n constructor(private pageInfo: PageInfoService, private cd:ChangeDetectorRef, private router:Router) {}\r\n\r\n ngOnInit(): void {\r\n this.title$ = this.pageInfo.title.asObservable();\r\n this.description$ = this.pageInfo.description.asObservable();\r\n this.bc$ = this.pageInfo.breadcrumbs.asObservable();\r\n this.title$.subscribe((e)=>{\r\n this.cd.detectChanges()\r\n })\r\n this.description$.subscribe((e)=>{\r\n this.cd.detectChanges()\r\n })\r\n this.bc$.subscribe((e)=>{\r\n this.cd.detectChanges()\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n\r\n redirectFunction(path:any){\r\n const user = JSON.parse(localStorage.getItem('user-info') as any);\r\n this.router.navigateByUrl(path);\r\n }\r\n}\r\n","<ng-container *ngIf=\"title$ | async as title\">\r\n\r\n <ng-container *ngIf=\"appPageTitleBreadcrumb\">\r\n <ng-container *ngIf=\"bc$ | async as _bc\">\r\n <ng-container *ngIf=\"_bc.length > 0\">\r\n <!-- <ng-container *ngIf=\"appPageTitleDirection === 'row'\">\r\n <span class=\"h-20px border-gray-300 border-start mx-4\"></span>\r\n </ng-container> -->\r\n <!--begin::Breadcrumb-->\r\n\r\n <ul class=\"breadcrumb breadcrumb-separatorless fw-semibold fs-7 my-0\"\r\n [ngClass]=\"{'pt-1': appPageTitleDirection === 'column'}\">\r\n <li *ngFor=\"let bc of _bc\" class=\"breadcrumb-item\"\r\n [ngClass]=\"!bc.isSeparator && bc.isActive ? 'text-gray-900' : ''\"\r\n [ngClass]=\"!bc.isSeparator && !bc.isActive ? 'text-muted' : ''\">\r\n <ng-container *ngIf=\"!bc.isSeparator\">\r\n <a class=\"inactive-bc text-hover-primary cursor-pointer\" (click)=\"redirectFunction(bc?.path)\" >\r\n {{ bc.title }}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"bc.isSeparator\">\r\n <img src=\"/assets/tango/layout/bc-seperator.svg\" alt=\"\">\r\n </ng-container>\r\n </li>\r\n <li class=\"breadcrumb-item active-bc\">{{ title }}</li>\r\n </ul>\r\n <!--end::Breadcrumb-->\r\n\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\n\r\nimport { Subscription } from \"rxjs\";\r\nimport { LayoutService } from \"tango-app-ui-global\";\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/en\";\r\nimport utc from \"dayjs/plugin/utc\";\r\nimport timezone from \"dayjs/plugin/timezone\";\r\nimport { AuthService } from '../../../../services/auth.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\n\r\ndayjs.extend(utc);\r\ndayjs.extend(timezone);\r\n@Component({\r\n selector: \"lib-classic\",\r\n templateUrl: \"./classic.component.html\",\r\n styleUrls: [\"./classic.component.scss\"],\r\n})\r\nexport class ClassicComponent implements OnInit, OnDestroy {\r\n dayjs = dayjs\r\n private unsubscribe: Subscription[] = [];\r\n\r\n dataObject: any = [{ Description: \"Clients\", Issues: [] }];\r\n\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs(); \r\n return isValidDate ? 'invalid-date' : false;\r\n}\r\n dummyArray: any = [];\r\n noFilter: boolean = false;\r\n searchValue: any;\r\n responseArray: any = [];\r\n getClientList: any = [];\r\n constructor(\r\n private layout: LayoutService,\r\n private globalService: GlobalStateService,\r\n private service: AuthService,\r\n private cd: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n // @Input() dataObject: any[] = [];\r\n Opendropdown: boolean = false;\r\n\r\n permission = [\r\n {\r\n group: \"Super Admin\",\r\n description: \"Lorem ipsum dolor sit amet, consectetur \",\r\n },\r\n { group: \"Admin\", description: \"Lorem ipsum dolor sit amet, consectetur \" },\r\n { group: \"User\", description: \"Lorem ipsum dolor sit amet, consectetur \" },\r\n ];\r\n\r\n showdropdown: any;\r\n selectedValues: string[] = [];\r\n selectedValuesArray: any[] = [];\r\n selectedDateRange: any = {};\r\n selectedFilters: any = {\r\n client: null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n };\r\n ngOnInit(): void {\r\n this.service.getClients().subscribe({\r\n next: (res: any) => {\r\n \r\n this.getClientList = res?.data?.result;\r\n if (\"header-filters\" in localStorage) {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n if(headerFilters.clients.length >0 && headerFilters.date?.startDate){\r\n this.dataObject[0].Issues = this.getClientList;\r\n this.toggleCheckbox(\"Select All\", 0);\r\n this.dummyArray = JSON.parse(JSON.stringify(this.dataObject));\r\n this.responseArray = JSON.parse(JSON.stringify(this.dataObject));\r\n const currentIssues = this.dummyArray[0].Issues.map(\r\n (item: any) => item.clientId \r\n );\r\n this.selectedFilters.clients = currentIssues;\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n\r\n this.selectedDateRange = {\r\n startDate:this.dayjs( headerFilters.date.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs( headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n \r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.globalService.dataRangeValue.next(this.selectedFilters);\r\n // this.cd.detectChanges();\r\n }else {\r\n this.dataObject[0].Issues = this.getClientList;\r\n this.toggleCheckbox(\"Select All\", 0);\r\n this.dummyArray = JSON.parse(JSON.stringify(this.dataObject));\r\n this.responseArray = JSON.parse(JSON.stringify(this.dataObject));\r\n const currentIssues = this.dummyArray[0].Issues.map(\r\n (item: any) => item.clientId \r\n );\r\n this.selectedFilters.clients = currentIssues;\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedDateRange = {\r\n startDate: this.dayjs().format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs().format(\"DD-MM-YYYY\"),\r\n };\r\n var datetime = {\r\n startDate: this.dayjs().format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs().format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.globalService.dataRangeValue.next(this.selectedFilters);\r\n }\r\n } else {\r\n \r\n this.dataObject[0].Issues = this.getClientList;\r\n this.toggleCheckbox(\"Select All\", 0);\r\n this.dummyArray = JSON.parse(JSON.stringify(this.dataObject));\r\n this.responseArray = JSON.parse(JSON.stringify(this.dataObject));\r\n const currentIssues = this.dummyArray[0].Issues.map(\r\n (item: any) => item.clientId \r\n );\r\n this.selectedFilters.clients = currentIssues;\r\n this.selectedFilters.client = currentIssues[0];\r\n this.selectedDateRange = {\r\n startDate: this.dayjs().format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs().format(\"DD-MM-YYYY\"),\r\n };\r\n var datetime = {\r\n startDate: this.dayjs().format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs().format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.globalService.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n }\r\n },\r\n });\r\n const subscr = this.layout.layoutConfigSubject\r\n .asObservable()\r\n .subscribe(() => {\r\n });\r\n this.unsubscribe.push(subscr);\r\n }\r\n\r\n getclients(){\r\n this.service.getClients().subscribe({\r\n next: (res: any) => {\r\n this.getClientList = res?.data?.result;\r\n this.toggleCheckbox(\"Select All\", 0);\r\n this.dummyArray = JSON.parse(JSON.stringify(this.dataObject));\r\n this.responseArray = JSON.parse(JSON.stringify(this.dataObject));\r\n }\r\n })\r\n }\r\n @HostListener(\"document:click\", [\"$event\"])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest(\".dropdown1\")) {\r\n this.Opendropdown = false;\r\n }\r\n if (!target.closest(\".dropdown-content\")) {\r\n this.dataObject.forEach((item: any, i: any) => {\r\n item.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n opendropdown(e: MouseEvent) {\r\n e.stopPropagation();\r\n this.Opendropdown = !this.Opendropdown;\r\n }\r\n\r\n Dropdown(value: any, index: number, event: MouseEvent) {\r\n event.stopPropagation();\r\n this.dataObject.forEach((item: any, i: any) => {\r\n if (i !== index) {\r\n item.isOpen = false; \r\n }\r\n });\r\n this.dataObject[index].isOpen = !this.dataObject[index].isOpen;\r\n\r\n // if (this.dataObject[index].isOpen) {\r\n // document.addEventListener('click', this.clickOutsideDropdownContent.bind(this, index));\r\n // } else {\r\n // document.removeEventListener('click', this.clickOutsideDropdownContent.bind(this, index));\r\n // }\r\n }\r\n\r\n // clickOutsideDropdownContent(index: number, event: Event) {\r\n // if (!this.elementRef.nativeElement.contains(event.target as Node)) {\r\n // this.dataObject[index].isOpen = false;\r\n // document.removeEventListener('click', this.clickOutsideDropdownContent.bind(this, index));\r\n // }\r\n // }\r\n searchData(event: any, i: any) {\r\n const filteredIssues = this.dummyArray[i].Issues.filter((item: any) =>\r\n new RegExp(event.target.value, \"i\").test(item.clientName) || this.selectedValuesArray[i].includes(item.clientName)\r\n );\r\n this.dataObject[i].Issues = filteredIssues;\r\n if (filteredIssues.length) {\r\n this.noFilter = false;\r\n } else {\r\n this.noFilter = true;\r\n }\r\n }\r\n toggleCheckbox(issue: string, index: number) {\r\n const currentIssues = this.dataObject[index].Issues;\r\n this.selectedValuesArray[index] = this.selectedValuesArray[index] || [];\r\n const selectedValues = this.selectedValuesArray[index]; // Retrieve selected values array for the current dropdown index\r\n\r\n if (issue === \"Select All\") {\r\n const currentIssues = this.dataObject[index].Issues.map(\r\n (item: any) => item.clientId\r\n );\r\n if (selectedValues.length === currentIssues.length) {\r\n // If all items are already selected, deselect all\r\n this.selectedValuesArray[index] = [];\r\n } else {\r\n // Otherwise, select all items\r\n this.selectedValuesArray[index] = [...currentIssues];\r\n }\r\n this.cd.detectChanges();\r\n } else {\r\n if (selectedValues.includes(issue)) {\r\n this.selectedValuesArray[index] = selectedValues.filter(\r\n (item: any) => item !== issue\r\n ); // Deselect the individual item if already selected\r\n } else {\r\n this.selectedValuesArray[index].push(issue); // Select the individual item if not already selected\r\n }\r\n }\r\n\r\n // Update \"Select All\" checkbox status based on selected values\r\n const selectAllId = `selectall${index}`;\r\n const selectAllElement = document.getElementById(\r\n selectAllId\r\n ) as HTMLInputElement;\r\n if (selectAllElement) {\r\n selectAllElement.checked \r\n //= selectedValues.length === currentIssues.length;\r\n }\r\n\r\n // Update checkboxes based on selected values\r\n currentIssues.forEach((item: string) => {\r\n const isChecked = this.selectedValuesArray[index].includes(item);\r\n const checkboxId = `option${item}`;\r\n const checkboxElement = document.getElementById(\r\n checkboxId\r\n ) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.checked = isChecked;\r\n }\r\n });\r\n }\r\n\r\n Reset() {\r\n this.selectedValuesArray = [];\r\n this.Opendropdown = false;\r\n }\r\n\r\n Apply() {\r\n \r\n var selectedValue: any = [];\r\n for (let i = 0; i < this.selectedValuesArray.length; i++) {\r\n const selectedValues = this.selectedValuesArray[i];\r\n const issues = this.dummyArray[i].Issues; // const issues = this.dataObject[i].Issues;\r\n\r\n if (selectedValues) {\r\n this.selectedValuesArray[i] = selectedValues.map((selectedId: any) => {\r\n const issue = issues.find(\r\n (issueItem: any) => issueItem.clientId === selectedId\r\n );\r\n selectedValue.push(issue);\r\n return issue ? issue : \"\"; // Get the text corresponding to the id\r\n });\r\n }\r\n }\r\n\r\n\r\n this.Opendropdown = false;\r\n this.selectedValuesArray.forEach((item: any, index: any) => {\r\n item = item.map((ele: any) => ele.clientId);\r\n this.selectedValuesArray[index] = item;\r\n });\r\n this.responseArray.forEach((item: any, index: any) => {\r\n item.Issues = this.selectedValuesArray[index]\r\n ? this.selectedValuesArray[index]\r\n : [];\r\n });\r\n this.selectedFilters.clients = this.responseArray[0].Issues;\r\n this.globalService.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n }\r\n\r\n ranges: any = {\r\n \"Today\": [this.dayjs(), this.dayjs()],\r\n \"Yesterday\": [this.dayjs().subtract(1, \"days\"), this.dayjs().subtract(1, \"days\")],\r\n \"This Week\": [this.dayjs().subtract(6, \"days\"), dayjs()],\r\n \"Last Week\": [\r\n this.dayjs().subtract(14, \"days\").startOf(\"days\"),\r\n this.dayjs().subtract(8, \"days\").endOf(\"days\"),\r\n ],\r\n \"This Month\": [this.dayjs().startOf(\"month\"), this.dayjs().endOf(\"month\")],\r\n \"Last Month\": [\r\n this.dayjs().subtract(1, \"month\").startOf(\"month\"),\r\n this.dayjs().subtract(1, \"month\").endOf(\"month\"),\r\n ],\r\n };\r\n\r\n onStartDateChange(event: any) {\r\n if (this.dayjs(event.startDate).isValid()) {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() || m > this.dayjs(event.startDate.add(90, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n }\r\n }\r\n\r\n datechange(event: any) {\r\n \r\n if (event && event.startDate && event.endDate) {\r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = event.startDate\r\n this.selectedDateRange.endDate = event.endDate\r\n var datetime = {\r\n startDate: this.dayjs(event.startDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs(event.endDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n }\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n } else {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedDateRange.startDate = this.dayjs(headerFilters.date?.startDate,\"YYYY-MM-DD\").format(\"DD-MM-YYYY\");\r\n this.selectedDateRange.endDate = this.dayjs(headerFilters.date?.endDate,\"YYYY-MM-DD\").format(\"DD-MM-YYYY\");\r\n this.globalService.dataRangeValue.next(headerFilters);\r\n }\r\n // else {\r\n // const headerFilters: any = JSON.parse(\r\n // localStorage.getItem(\"header-filters\") || \"{}\"\r\n // );\r\n // this.selectedFilters.date = headerFilters.date;\r\n // if(headerFilters.date?.startDate&&headerFilters.date?.endDate){\r\n // this.selectedDateRange = headerFilters.date;\r\n \r\n // }else{\r\n // this.selectedDateRange = {\r\n // startDate: dayjs().format(\"YYYY-MM-DD\"),\r\n // endDate: dayjs().format(\"YYYY-MM-DD\")\r\n // }\r\n \r\n // }\r\n // }\r\n // this.selectedFilters.date = this.selectedDateRange;\r\n }\r\n}\r\n","<div class=\"py-3 dropdown1 cursor-pointer\" *ngFor=\"let item of dataObject; let i = index\">\r\n <div class=\"dropdown form-select\" (click)=\"Dropdown('Clients',i,$event)\">\r\n <span class=\"\">{{ selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined ?\r\n selectedValuesArray[i]?.length + ' ' + 'Clients'.split(' ').pop() : 'Clients' }}</span>\r\n </div>\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute\">\r\n <div class=\"form-check d-flex align-items-center pt-3 px-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[i]?.length === item.Issues.length\"\r\n (change)=\"toggleCheckbox('Select All', i)\">\r\n <label class=\"form-check-label px-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div class=\"mt-3 d-flex align-items-center mx-2\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3 mt-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path\r\n d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\"\r\n stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input type=\"text\" [(ngModel)]=\"searchValue\" (input)=\"searchData($event,i)\"\r\n class=\"form-control searchinput ps-14 py-2 mt-2\" placeholder=\"Search\" autocomplete=\"off\" />\r\n </div>\r\n <div *ngFor=\"let issue of item.Issues\" class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"issue.clientName\" id=\"option{{issue.clientId}}\"\r\n [checked]=\"selectedValuesArray[i]?.includes(issue.clientId)\" (change)=\"toggleCheckbox(issue.clientId,i)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{issue.clientId}}\">\r\n {{ issue.clientName }}\r\n </label>\r\n </div>\r\n <div class=\"mt-5 d-flex justify-content-center\">\r\n <span class=\"form-check-label mb-3\" *ngIf=\"noFilter\"> No filters available</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n\r\n\r\n<!-- <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd \r\n [singleDatePicker]=\"true\"\r\n [drops]=\"'down'\"\r\n [opens]=\"'right'\"\r\n [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"true\"\r\n autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (selected)=\"onDateSelect($event)\"\r\n name=\"daterange\" /> -->\r\n\r\n<div class=\"btn btn-primary\" (click)=\"Apply()\">Apply</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { AuthService } from '../../../services/auth.service';\r\n \r\n@Component({\r\n selector: 'lib-select',\r\n templateUrl: './custom-select.component.html',\r\n styleUrl: './custom-select.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomSelectComponent implements OnChanges, OnInit {\r\n \r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n \r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n \r\n @Output() selected = new EventEmitter<any>()\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n \r\n \r\n constructor(private cd: ChangeDetectorRef, private authService:AuthService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e)=>{ \r\n if(e !== this.instanceId){ \r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n if (changes['items'] && this.items?.length) {\r\n this.initializeItems();\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) { \r\n this.updateSelectedValues();\r\n }\r\n }\r\n \r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n \r\n updateSelectedValues() { \r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n \r\n }\r\n \r\n openDropdown(event: any) {\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n \r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event.target.value.toLowerCase();\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].toLowerCase().includes(searchTerm)\r\n );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n \r\n onSelect(event: any, item: any) { \r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item ); \r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element:any) => {\r\n if(element[this.idField] !== item[this.idField]){\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n \r\n }\r\n \r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n \r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.selectedValues = [];\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n \r\n \r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n \r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n {{selectedValues?.length}} {{label}} Selected \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { ChangeDetectorRef, Component } from '@angular/core';\r\nimport { AuthService } from '../../../../services/auth.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-client-settings',\r\n templateUrl: './client-settings.component.html',\r\n styleUrl: './client-settings.component.scss'\r\n})\r\nexport class ClientSettingsComponent {\r\n\r\n clientList:any = []\r\n selectedClient:any\r\n selectedFilters: any = {\r\n client: null,\r\n clientName: null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n group: [],\r\n location: [],\r\n\r\n };\r\n constructor(private auth:AuthService, private gs:GlobalStateService, private cd:ChangeDetectorRef){\r\n this.auth.getClients().subscribe({\r\n next: (e) => {\r\n if (e) {\r\n this.clientList = e.data.result;\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n if (headerFilters.client) {\r\n this.clientList.find((obj: any) => {\r\n if (obj.clientId === headerFilters.client) {\r\n this.selectedClient = obj;\r\n }\r\n });\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.clientName = headerFilters.clientName\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n }\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n }\r\n },\r\n });\r\n }\r\n\r\n onClientSelect(event:any){\r\n this.selectedClient = event\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedFilters = headerFilters;\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName;\r\n this.selectedFilters.stores =[];\r\n this.selectedFilters.group= [];\r\n this.selectedFilters.location= [];\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n window.location.reload()\r\n this.cd.detectChanges();\r\n }\r\n\r\n}\r\n"," <div class=\"wrapper\" >\r\n <lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n (selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n </div>\r\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from \"@angular/core\";\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/en\";\r\nimport utc from \"dayjs/plugin/utc\";\r\nimport timezone from \"dayjs/plugin/timezone\";\r\nimport { LayoutService } from \"tango-app-ui-global\";\r\nimport { AuthService } from \"../../../../services/auth.service\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n@Component({\r\n selector: \"lib-datepicker\",\r\n templateUrl: \"./datepicker.component.html\",\r\n styleUrl: \"./datepicker.component.scss\",\r\n})\r\nexport class DatepickerComponent implements OnDestroy, OnInit {\r\n dayjs = dayjs;\r\n private unsubscribe: Subscription[] = [];\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs(); \r\n return isValidDate ? 'invalid-date' : false;\r\n}\r\n selectedDateRange: any = {};\r\n selectedFilters: any = {\r\n client: null,\r\n clientName:null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n };\r\n users: any;\r\n \r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private gs: GlobalStateService,\r\n private service: AuthService,\r\n private cd: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n\r\n ngOnInit(): void {\r\n if (\"user-info\" in localStorage) {\r\n const userData: any = JSON.parse(\r\n localStorage.getItem(\"user-info\") || \"{}\"\r\n );\r\n this.users = userData;\r\n } \r\n if (\"header-filters\" in localStorage) {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedFilters.client = this.users.clientId;\r\n this.selectedFilters.clients = [this.users.clientId];\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n\r\n this.selectedDateRange = {\r\n startDate:this.dayjs( headerFilters?.date.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs( headerFilters?.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n \r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n } else {\r\n this.selectedFilters.client = this.users.clientId;\r\n this.selectedFilters.clients = [this.users.clientId];\r\n this.selectedDateRange = {\r\n startDate: this.dayjs().subtract(1, \"days\").format(\"DD-MM-YYYY\"), // Yesterday\r\n endDate: this.dayjs().subtract(1, \"days\").format(\"DD-MM-YYYY\"), // Yesterday\r\n };\r\n \r\n // Set datetime to yesterday's date as well\r\n var datetime = {\r\n startDate: this.dayjs().subtract(1, \"days\").format(\"YYYY-MM-DD\"), // Yesterday\r\n endDate: this.dayjs().subtract(1, \"days\").format(\"YYYY-MM-DD\"), // Yesterday\r\n };\r\n // var datetime = {\r\n // startDate: this.dayjs().subtract(1, 'days').format(\"YYYY-MM-DD\"), // Yesterday\r\n // endDate: this.dayjs().subtract(1, 'days').format(\"YYYY-MM-DD\"), // Yesterday\r\n // };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n }\r\n this.getUserInfo(this.selectedFilters.client)\r\n }\r\n getUserInfo(client:any){\r\n let obj ={\r\n clientId: client ? client :''\r\n }\r\n if(client){\r\n this.service.getHeaderUsers(obj).subscribe({\r\n next: (e) => {\r\n localStorage.setItem(\r\n \"usersEmail-info\",\r\n JSON.stringify(e?.data?.userEmailData || [])\r\n );\r\n } \r\n })\r\n }\r\n }\r\n ranges: any = {\r\n Today: [this.dayjs(), this.dayjs()],\r\n Yesterday: [\r\n this.dayjs().subtract(1, \"days\"),\r\n this.dayjs().subtract(1, \"days\"),\r\n ],\r\n \"This Week\": [this.dayjs().subtract(7, \"days\"), this.dayjs().subtract(1, \"days\")],\r\n \"Last Week\": [\r\n this.dayjs().subtract(14, \"days\").startOf(\"days\"),\r\n this.dayjs().subtract(8, \"days\").endOf(\"days\"),\r\n ],\r\n \"This Month\": [\r\n this.dayjs().subtract(30, \"days\"), // Start date is 30 days before today\r\n this.dayjs().subtract(1, \"days\") // End date is Yesterday\r\n ],\r\n \"Last Month\": [\r\n this.dayjs().subtract(1, \"month\").startOf(\"month\"),\r\n this.dayjs().subtract(1, \"month\").endOf(\"month\"),\r\n ],\r\n };\r\n\r\n onStartDateChange(event: any) {\r\n if (this.dayjs(event.startDate).isValid()) {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() || m > this.dayjs(event.startDate.add(90, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n }\r\n }\r\n\r\n datechange(event: any) {\r\n if (event && event.startDate && event.endDate) {\r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = event.startDate\r\n this.selectedDateRange.endDate = event.endDate\r\n var datetime = {\r\n startDate: this.dayjs(event.startDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs(event.endDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n }\r\n } else {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedFilters.date = headerFilters.date;\r\n }\r\n \r\n this.selectedFilters.client = this.users.clientId;\r\n this.selectedFilters.clients = [this.users.clientId];\r\n this.selectedFilters.date = this.selectedFilters.date;\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n }\r\n}\r\n","<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\" [autoApply]=\"true\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>","import { ChangeDetectorRef, Component, OnInit } from \"@angular/core\";\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/en\";\r\nimport { AuthService } from '../../../../services/auth.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\n@Component({\r\n selector: \"lib-date-single-select\",\r\n templateUrl: \"./date-single-select.component.html\",\r\n styleUrl: \"./date-single-select.component.scss\",\r\n})\r\nexport class DateSingleSelectComponent implements OnInit {\r\n dayjs = dayjs;\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs(); \r\n return isValidDate ? 'invalid-date' : false;\r\n}\r\n selectedDateRange: any = {};\r\n clientList: any = [];\r\n selectedClient: any;\r\n selectedFilters: any = {\r\n client: null,\r\n clientName: null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n group:[],\r\n location:[]\r\n };\r\n dummyArray: any;\r\n respnsearray: any=[];\r\n\r\n constructor(\r\n private auth: AuthService,\r\n private gs: GlobalStateService,\r\n private cd: ChangeDetectorRef\r\n ) {\r\n \r\n this.auth.getClients().subscribe({\r\n next: (e) => {\r\n if (e) { \r\n this.clientList = e.data.result;\r\n const allOption = {\r\n _id: 'all',\r\n clientName: 'All Clients',\r\n clientId: ''\r\n };\r\n this.clientList.unshift(allOption); // Adds the \"ALL\" option at the beginning of the array\r\n this.dummyArray = JSON.parse(JSON.stringify(this.clientList));\r\n this.respnsearray = this.dummyArray.map(\r\n (item: any) => item.clientId \r\n );\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(headerFilters?.date?.startDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs(headerFilters?.date?.endDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\")\r\n };\r\n if (headerFilters.client) {\r\n this.clientList.find((obj: any) => {\r\n if (obj.clientId === headerFilters.client) {\r\n this.selectedClient = obj; \r\n } \r\n });\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n if(headerFilters.client ===''){\r\n this.selectedFilters.clients = this.respnsearray;\r\n } else {\r\n this.selectedFilters.clients = [headerFilters.client];\r\n }\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n\r\n this.selectedDateRange = {\r\n startDate:this.dayjs( headerFilters.date.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs( headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n \r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n } else if(headerFilters.client ===''){\r\n this.selectedFilters.clients = this.respnsearray;\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedDateRange = {\r\n startDate:this.dayjs(headerFilters.date.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n \r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n } else {\r\n this.dummyArray = JSON.parse(JSON.stringify(this.clientList));\r\n this.respnsearray = this.dummyArray.map(\r\n (item: any) => item.clientId \r\n );\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.clients = this.respnsearray;\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName;\r\n this.selectedDateRange = {\r\n startDate: this.dayjs().subtract(1, \"days\").format(\"DD-MM-YYYY\"), // Yesterday\r\n endDate: this.dayjs().subtract(1, \"days\").format(\"DD-MM-YYYY\"), // Yesterday\r\n };\r\n \r\n // Set datetime to yesterday's date as well\r\n var datetime = {\r\n startDate: this.dayjs().subtract(1, \"days\").format(\"YYYY-MM-DD\"), // Yesterday\r\n endDate: this.dayjs().subtract(1, \"days\").format(\"YYYY-MM-DD\"), // Yesterday\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n }\r\n }\r\n },\r\n });\r\n }\r\n ngOnInit(): void {}\r\n onClientSelect(event: any) {\r\n this.selectedClient = event;\r\n }\r\n\r\n\r\n ranges: any = {\r\n Today: [\r\n this.dayjs(),\r\n this.dayjs(),\r\n ],\r\n Yesterday: [\r\n this.dayjs().subtract(1, \"days\"),\r\n this.dayjs().subtract(1, \"days\"),\r\n ],\r\n \"This Week\": [this.dayjs().subtract(7, \"days\"), this.dayjs().subtract(1, \"days\")],\r\n \"Last Week\": [\r\n this.dayjs().subtract(14, \"days\").startOf(\"days\"),\r\n this.dayjs().subtract(8, \"days\").endOf(\"days\"),\r\n ],\r\n \"This Month\": [\r\n this.dayjs().subtract(30, \"days\"), // Start date is 30 days before today\r\n this.dayjs().subtract(1, \"days\") // End date is Yesterday\r\n ],\r\n \"Last Month\": [\r\n this.dayjs().subtract(1, \"month\").startOf(\"month\"),\r\n this.dayjs().subtract(1, \"month\").endOf(\"month\"),\r\n ],\r\n };\r\n\r\n onStartDateChange(event: any) {\r\n if(this.dayjs(event.startDate).isValid()){\r\n this.isCustomDate = (m: dayjs.Dayjs) => { \r\n const isValidDate = m > this.dayjs() || m > this.dayjs(event.startDate.add(90, 'days')) ;\r\n return isValidDate ? 'invalid-date' : false;\r\n }\r\n}\r\n }\r\n\r\n datechange(event: any) {\r\n \r\n \r\n if (event && event.startDate && event.endDate) {\r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = event.startDate\r\n this.selectedDateRange.endDate = event.endDate\r\n var datetime = {\r\n startDate: this.dayjs(event.startDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs(event.endDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n }\r\n }else {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedDateRange.startDate = this.dayjs(headerFilters?.date?.startDate,\"YYYY-MM-DD\").format(\"DD-MM-YYYY\");\r\n this.selectedDateRange.endDate = this.dayjs(headerFilters?.date?.endDate,\"YYYY-MM-DD\").format(\"DD-MM-YYYY\");\r\n this.gs?.dataRangeValue?.next(headerFilters);\r\n }\r\n \r\n }\r\n\r\n Apply() {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedFilters = headerFilters;\r\n this.selectedFilters.client = this.selectedClient?.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n if(this.selectedClient.clientId ===''){\r\n this.selectedFilters.clients = this.respnsearray;\r\n } else {\r\n this.selectedFilters.clients = [this.selectedClient.clientId];\r\n }\r\n this.selectedFilters.stores =[];\r\n this.selectedFilters.group= [];\r\n this.selectedFilters.location= [];\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n // window.location.reload()\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n window.location.reload()\r\n this.gs.manageRefreshTrigger.next(true)\r\n }\r\n}\r\n","<div class=\"wrapper mx-2\" >\r\n <lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n (selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n\r\n \r\n</div>\r\n<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\" [autoApply]=\"true\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n\r\n<div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div>\r\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport 'dayjs/locale/en';\r\nimport { AuthService } from '../../../../services/auth.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'lib-single-store',\r\n templateUrl: './single-store.component.html',\r\n styleUrl: './single-store.component.scss'\r\n})\r\nexport class SingleStoreComponent implements OnInit,OnChanges {\r\n @Input() urlString:any;\r\n dayjs = dayjs\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs(); \r\n return isValidDate ? 'invalid-date' : false;\r\n}\r\n selectedDateRange: any = {};\r\n storeList:any = []\r\n selectedClient:any\r\n selectedFilters: any = {\r\n client: null,\r\n clientName:null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n\r\n };\r\n URL: any;\r\n baseurl:any;\r\n constructor(private auth:AuthService, private gs:GlobalStateService, private cd:ChangeDetectorRef,private router:Router){\r\n const currentUrl = this.router.url;\r\n const updatedUrl = currentUrl.replace(\r\n /\\/manage\\/stores\\/\\d+-\\d+\\//,\r\n `/manage/stores/`\r\n );\r\n const url = updatedUrl;\r\n this.baseurl = url.split(\"?\")[1];\r\n this.URL= url.split(\"?\")[0].split('/');\r\n }\r\n ngOnInit(): void {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n if(headerFilters?.client){\r\n this.auth.getStores(headerFilters?.client).subscribe({\r\n next: (e) => {\r\n if (e) {\r\n \r\n this.storeList = e.data.result;\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(headerFilters?.date?.startDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs(headerFilters?.date?.endDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\")\r\n };\r\n if (headerFilters?.store) {\r\n this.storeList.find((obj: any) => {\r\n if (obj.storeId === headerFilters.store) {\r\n this.selectedClient = obj;\r\n }\r\n });\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.clients = headerFilters.clients; \r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.storeName = headerFilters.storeName; \r\n this.selectedDateRange = {\r\n startDate:this.dayjs( headerFilters.date.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs( headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n \r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n } else {\r\n this.selectedClient = this.storeList[0];\r\n this.selectedFilters.store = this.selectedClient.storeId; \r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.clients = headerFilters.clients; \r\n this.selectedFilters.storeName = headerFilters.storeName; \r\n this.selectedDateRange = {\r\n startDate: this.dayjs().format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs().format(\"DD-MM-YYYY\"),\r\n };\r\n var datetime = {\r\n startDate: this.dayjs().format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs().format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n }\r\n }\r\n },\r\n });\r\n }\r\n }\r\n onClientSelect(event:any){\r\n this.selectedClient = event\r\n }\r\n\r\n ranges: any = {\r\n Today: [\r\n this.dayjs(),\r\n this.dayjs(),\r\n ],\r\n 'Yesterday': [this.dayjs().subtract(1, 'days'), this.dayjs().subtract(1, 'days')],\r\n 'This Week': [this.dayjs().subtract(7, \"days\"), this.dayjs().subtract(1, \"days\")],\r\n 'Last Week': [this.dayjs().subtract(14, 'days').startOf('days'), this.dayjs().subtract(8, 'days').endOf('days')],\r\n \"This Month\": [\r\n this.dayjs().subtract(30, \"days\"), // Start date is 30 days before today\r\n this.dayjs().subtract(1, \"days\") // End date is Yesterday\r\n ],\r\n 'Last Month': [\r\n this.dayjs().subtract(1, 'month').startOf('month'),\r\n this.dayjs().subtract(1, 'month').endOf('month')\r\n ]\r\n };\r\n\r\n onStartDateChange(event:any){\r\n if(this.dayjs(event.startDate).isValid()){\r\n this.isCustomDate = (m: dayjs.Dayjs) => { \r\n const isValidDate = m > this.dayjs() || m > this.dayjs(event.startDate.add(90, 'days')) ;\r\n return isValidDate ? 'invalid-date' : false;\r\n }\r\n}\r\n}\r\n\r\ndatechange(event: any) {\r\n if (event && event.startDate && event.endDate) {\r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = event.startDate\r\n this.selectedDateRange.endDate = event.endDate\r\n var datetime = {\r\n startDate: this.dayjs(event.startDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs(event.endDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n }\r\n }else {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedDateRange.startDate = this.dayjs(headerFilters.date.startDate,\"YYYY-MM-DD\").format(\"DD-MM-YYYY\");\r\n this.selectedDateRange.endDate = this.dayjs(headerFilters.date.endDate,\"YYYY-MM-DD\").format(\"DD-MM-YYYY\");\r\n this.gs.dataRangeValue.next(headerFilters);\r\n } \r\n}\r\n\r\nApply() {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedFilters = headerFilters;\r\n this.selectedFilters.store = this.selectedClient.storeId;\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n}\r\n\r\nqueryString:any = ''\r\n\r\nngOnChanges(changes: SimpleChanges): void {\r\n this.urlString = changes?.urlString?.currentValue.split('?')[0].split('/');\r\n if(changes?.urlString?.currentValue.split('?').length > 1) {\r\n this.queryString = changes?.urlString?.currentValue.split('?')[1];\r\n }\r\n}\r\n}\r\n","<div *ngIf=\"URL[2] !=='controlcenter'\" class=\"wrapper mx-2\" >\r\n <lib-select [items]=\"storeList\" [multi]=\"false\" [searchField]=\"'storeName'\" [disabled]=\"false\" [idField]=\"'storeId'\"\r\n (selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select> \r\n</div>\r\n\r\n<div *ngIf=\"URL[2] !=='controlcenter' && !urlString.includes('plano') && URL[3] !== 'beeahGroup' && URL[3] !== 'beeahLive'\" class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\" [autoApply]=\"true\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n<div *ngIf=\"URL[2] ==='controlcenter' && urlString.includes('playback') || URL[3] === 'beeahGroup' || URL[3] === 'beeahLive'\" class=\"d-flex align-items-center w-150px position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [showCustomRangeLabel]=\"false\" [alwaysShowCalendars]=\"false\" [autoApply]=\"true\" [singleDatePicker]=\"true\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1}\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n\r\n<div *ngIf=\"URL[2] !=='controlcenter'\">\r\n <div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div>\r\n</div>\r\n\r\n\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/en\";\r\nimport { AuthService } from \"../../../../../services/auth.service\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\n@Component({\r\n selector: \"lib-traffic-header\",\r\n templateUrl: \"./traffic-header.component.html\",\r\n styleUrl: \"./traffic-header.component.scss\",\r\n})\r\nexport class TrafficHeaderComponent implements OnInit {\r\n dayjs = dayjs;\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs();\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n\r\n selectedDateRange: any = { startDate: dayjs().subtract(30, 'days'),\r\n endDate: dayjs().subtract(1, \"days\"),};\r\n selectedFilters: any = {\r\n client: null,\r\n clientName: null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n group: [],\r\n location: [],\r\n country: [],\r\n };\r\n Opendropdown: boolean = false;\r\n dropdownOpen: string | null = null; // 'location' or 'group'\r\n searchLocationText: string = \"\";\r\n searchGroupText: string = \"\";\r\n locations: any[] = [];\r\n filteredLocations: any[] = [];\r\n groupsData: any[] = [];\r\n filteredGroups: any[] = [];\r\n filteredStores: any[] = [];\r\n stores:any[] = []\r\n searchStoreText:string = '';\r\n clientList:any = []\r\n selectedClient:any\r\n locationLabel: any[]=[];\r\n groupLabel: any[]=[];\r\n users: any;\r\n url: any;\r\n filteredCountries: any[] = [];\r\n countryLabel: any[]=[];\r\n searchCountryText: string = \"\";\r\n countries: any[] = [];\r\n constructor(\r\n private auth: AuthService, private router: Router,\r\n public gs: GlobalStateService,\r\n private cd: ChangeDetectorRef,\r\n ) {}\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick (event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if(!target.closest('.dropdown2')) {\r\n this.Opendropdown = false;\r\n }\r\n }\r\n closeDropdown1(){\r\n this.Opendropdown = false;\r\n }\r\n ngOnInit(): void {\r\n // this.setRangesBasedOnRoute();\r\n\r\n // Listen for route changes to update ranges\r\n // this.router?.events?.subscribe((event) => {\r\n // if (event instanceof NavigationEnd) {\r\n // this.setRangesBasedOnRoute();\r\n // }\r\n // });\r\n this.url = this.router.url.split(\"?\")[0].split('/');\r\n const user = JSON.parse(localStorage.getItem('user-info') as string);\r\n this.users = user;\r\n this.gs?.manageRefreshTrigger?.subscribe((e) => { \r\n if (e) {\r\n if (user.userType === 'tango') {\r\n this.getClient();\r\n } else{\r\n const storedFilters = localStorage.getItem(\"header-filters\");\r\n if (storedFilters) {\r\n const headerFilters = JSON.parse(storedFilters);\r\n this.filteredStores = headerFilters?.stores.map((store:any) => ({\r\n ...store,\r\n checked: store.checked\r\n }));\r\n }\r\n }\r\n }\r\n });\r\n \r\n // Fetch client data if the user is of type 'tango'\r\n if (user.userType === 'tango') {\r\n this.getClient();\r\n } else {\r\n this.getCountry();\r\n this.getLocations();\r\n this.getGroups();\r\n this.getStore();\r\n const clientFilters = localStorage.getItem(\"client-details\");\r\n if (clientFilters) {\r\n const headerclientFilters = JSON.parse(clientFilters);\r\n this.selectedClient = {\r\n trafficDateRange : headerclientFilters.trafficDateRange\r\n }\r\n }\r\n }\r\n \r\n // Load filters from localStorage if they exist\r\n const storedFilters = localStorage.getItem(\"header-filters\");\r\n if (storedFilters) {\r\n const headerFilters = JSON.parse(storedFilters);\r\n \r\n // Initialize selectedFilters with defaults or existing values\r\n this.selectedFilters = {\r\n client: headerFilters.client || this.users.client,\r\n clientName: headerFilters.clientName || '',\r\n clients: headerFilters.clients || [],\r\n store: headerFilters.store || null,\r\n date: headerFilters.date || {},\r\n stores: headerFilters.stores || [],\r\n group: headerFilters.group || [],\r\n location: headerFilters.location || [],\r\n country: headerFilters.country || []\r\n };\r\n \r\n // Sync filtered data with stored selections\r\n this.filteredCountries = this.syncWithLocalStorage(headerFilters.country);\r\n this.filteredLocations = this.syncWithLocalStorage(headerFilters.location);\r\n this.filteredGroups = this.syncWithLocalStorage(headerFilters.group);\r\n this.filteredStores = this.syncWithLocalStorage(headerFilters.stores);\r\n \r\n // Format date range if it exists\r\n if (headerFilters.date) {\r\n \r\n this.selectedDateRange = {\r\n startDate: this.dayjs(headerFilters.date.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n } else {\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(this.selectedDateRange.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(this.selectedDateRange.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n }\r\n // console.log(\"3\")\r\n // Emit data via service and update localStorage\r\nthis.emitAndStoreFilters();\r\n } else {\r\n // Initialize empty states if no header filters are present in localStorage\r\n this.resetFilters();\r\n // console.log(\"2\")\r\n }\r\n }\r\n private syncWithLocalStorage(items: any[]): any[] {\r\n return items\r\n ? items.map((item: any) => ({\r\n ...item,\r\n checked: item.checked === true\r\n }))\r\n : [];\r\n }\r\n \r\n private emitAndStoreFilters(): void {\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n localStorage.setItem(\"header-filters\", JSON.stringify(this.selectedFilters));\r\n // console.log(\"1\")\r\n }\r\n \r\n /**\r\n * Reset selectedFilters and all related arrays to empty states\r\n */\r\n private resetFilters(): void {\r\n this.selectedFilters = {\r\n client: null,\r\n clientName: '',\r\n clients: [],\r\n store: null,\r\n date: {},\r\n stores: [],\r\n group: [],\r\n location: [],\r\n country: []\r\n };\r\n this.filteredLocations = [];\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredCountries = [];\r\n }\r\ngetClient(){\r\n this.auth.getClients().subscribe({\r\n next: (e) => {\r\n if (e) {\r\n this.clientList = e.data.result;\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n if (headerFilters.client) {\r\n this.clientList.find((obj: any) => {\r\n if (obj.clientId === headerFilters.client) {\r\n this.selectedClient = obj;\r\n }\r\n });\r\n // const startDate = this.dayjs(headerFilters.date.startDate);\r\n // const endDate = this.dayjs(headerFilters.date.endDate);\r\n // const differenceInDays = endDate.diff(startDate, 'days');\r\n // if (differenceInDays >= 90 && this.selectedClient?.trafficDateRange === 90) {\r\n // this.selectedDateRange = {\r\n // startDate: this.dayjs(headerFilters.date.startDate, \"YYYY-MM-DD\").subtract(-90, 'days').format(\"DD-MM-YYYY\"),\r\n // endDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n // };\r\n // } else {\r\n // this.selectedDateRange = {\r\n // startDate: this.dayjs(this.selectedDateRange.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n // endDate: this.dayjs(this.selectedDateRange.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n // };\r\n // }\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.stores = headerFilters.stores;\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n this.selectedFilters.country = headerFilters.country;\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"2\")\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getCountry(); \r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.stores = headerFilters.stores;\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n this.selectedFilters.country = headerFilters.country;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"3\")\r\n this.cd.detectChanges();\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getCountry();\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n }\r\n\r\n\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getCountry();\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"4\")\r\n this.cd.detectChanges();\r\n }\r\n this.getUserInfo(this.selectedFilters.client);\r\n\r\n },\r\n });\r\n}\r\ngetUserInfo(client:any){\r\n let obj ={\r\n clientId: client ? client :''\r\n }\r\n if(client){\r\n this.auth.getHeaderUsers(obj).subscribe({\r\n next: (e) => {\r\n localStorage.setItem(\r\n \"usersEmail-info\",\r\n JSON.stringify(e?.data?.userEmailData || [])\r\n );\r\n } \r\n })\r\n }\r\n}\r\nonClientSelect(event: any): void {\r\n // Update the selected client\r\n this.selectedClient = event;\r\n // Clear previous filtered data and selections\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredLocations = [];\r\n this.selectedFilters.stores = [];\r\n this.selectedFilters.group = [];\r\n this.selectedFilters.location = [];\r\n this.selectedFilters.country = [];\r\n\r\n\r\n // Fetch header filters from localStorage\r\n const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n \r\n // Update the selected filters with the new client\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName;\r\n \r\n // Remove old store, group, and location data from the header filters\r\n delete headerFilters.stores;\r\n delete headerFilters.groups;\r\n delete headerFilters.location;\r\n delete headerFilters.country;\r\n\r\n \r\n // Fetch new data based on the new client\r\n this.getCountry();\r\n this.getLocations();\r\n this.getStore();\r\n this.getGroups();\r\n\r\n // Update localStorage with the new client selection and empty filter data\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n // Emit data to the global service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection to reflect UI changes\r\n this.cd.detectChanges();\r\n}\r\n\r\n\r\n\r\nranges:any = {\r\n Today: [dayjs(), dayjs()],\r\n Yesterday: [dayjs().subtract(1, 'days'), dayjs().subtract(1, 'days')],\r\n 'This Week': [dayjs().subtract(7, 'days'), dayjs().subtract(1, 'days')],\r\n 'Last Week': [\r\n dayjs().subtract(14, 'days').startOf('day'),\r\n dayjs().subtract(8, 'days').endOf('day'),\r\n ],\r\n 'This Month': [dayjs().subtract(30, 'days'), dayjs().subtract(1, 'days')],\r\n 'Last Month': [\r\n dayjs().subtract(1, 'month').startOf('month'),\r\n dayjs().subtract(1, 'month').endOf('month'),\r\n ],\r\n};\r\n\r\n onStartDateChange(event: any) {\r\n if (this.dayjs(event.startDate).isValid()) {\r\n if(this.selectedClient?.traxDateRange === 90){\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() || m > this.dayjs(event.startDate.add(90, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n } else {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() || m > this.dayjs(event.startDate.add(180, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n }\r\n \r\n }\r\n }\r\n\r\n datechange(event: any) {\r\n if (event && event.startDate && event.endDate) {\r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = event.startDate;\r\n this.selectedDateRange.endDate = event.endDate;\r\n var datetime = {\r\n startDate: this.dayjs(event.startDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ),\r\n endDate: this.dayjs(event.endDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n window.location.reload()\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n }\r\n } \r\n }\r\n opendropdown(e:MouseEvent) {\r\n e.stopPropagation();\r\n this.Opendropdown = !this.Opendropdown;\r\n }\r\n getLocations(): void {\r\n const country = this.countries\r\n .filter(country => country.checked)\r\n .map(country => country.country); \r\n // const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n let obj ={\r\n clientId: this.selectedFilters.client ? this.selectedFilters.client :this.users.clientId,\r\n country,\r\n city: [],\r\n group: [],\r\n }\r\n this.auth.getLocation(obj).subscribe({\r\n next: (res: any) => {\r\n let cityList = this.selectedFilters?.location?.filter((location:any) => location.checked).map((loc:any) => loc.city);\r\n // Map the fetched locations with default unchecked state\r\n this.locations = res?.data?.locationData.map((city: any) => ({\r\n city: city.city,\r\n // checked: cityList?.length ? cityList.includes(city.city) : true,\r\n checked: cityList?.includes(city.city) ? true : false,\r\n }));\r\n \r\n // Sync the fetched locations with any stored checked values in localStorage\r\n if (this.selectedFilters.location && Array.isArray(this.selectedFilters.location)) {\r\n this.filteredLocations = this.locations.map(location => {\r\n const matchedLocation = this.selectedFilters.location.find((loc: any) => loc.city === location.city);\r\n return matchedLocation ? { ...location, checked: matchedLocation.checked } : location;\r\n });\r\n } else {\r\n this.filteredLocations = this.locations;\r\n }\r\n\r\n if(this.searchLocationText) {\r\n this.filteredLocations = this.locations.filter((location:any) => location.city.toLowerCase().includes(this.searchLocationText.toLowerCase()))\r\n }\r\n const selectedLocations = this.locations.filter((location) => location.checked).map((location) => location.city);\r\n if (selectedLocations.length > 0) {\r\n setTimeout(()=>{\r\n this.getGroups();\r\n this.getStore(); // Fetch stores based on selected groups\r\n },1000)\r\n }\r\n\r\n if(!selectedLocations.length && country.length) {\r\n this.getGroups();\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch locations\", err);\r\n },\r\n });\r\n }\r\n \r\n isAllLocationsSelected(): boolean {\r\n return this.filteredLocations.every(location => location.checked);\r\n\r\n }\r\n \r\n selectedLocationsLabel(): string {\r\n const selectedLocations = this.locationLabel = this.searchLocationText.length ? this.locations\r\n .filter(location => location.checked).map(location => location.city) : this.filteredLocations\r\n .filter(location => location.checked).map(location => location.city);\r\n return selectedLocations.length === 0\r\n ? ''\r\n : selectedLocations.length === 1\r\n ? selectedLocations[0]\r\n : `${selectedLocations.length} Regions`;\r\n }\r\n\r\n removeLocation(): void {\r\n this.Reset();\r\n }\r\n \r\n getGroups(): void { \r\n const country = this.countries\r\n .filter(country => country.checked)\r\n .map(country => country.country); \r\n let city;\r\n city = this.locations\r\n .filter(location => location.checked)\r\n .map(location => location.city);\r\n\r\n if(!city.length && country.length) {\r\n city = this.locations.map((loc) => loc.city);\r\n }\r\n const obj = { country,city,clientId:this.selectedFilters.client ? this.selectedFilters.client :this.users.clientId,group:[] };\r\n this.auth.getGroups(obj).subscribe({\r\n next: (res: any) => {\r\n let checkedGroup = this.selectedFilters?.group?.filter((group:any) => group.checked).map((group:any) => group.groupName);\r\n const combinedGroups = res?.data?.groupData?.map((groupName: any) => ({\r\n groupName: groupName.groupName,\r\n checked: checkedGroup?.includes(groupName.groupName) ? true : false,\r\n // checked: checkedGroup?.length ? checkedGroup.includes(groupName.groupName) : true,\r\n }));\r\n this.groupsData = combinedGroups;\r\n if(this.searchGroupText.length) {\r\n this.filteredGroups = combinedGroups.filter((item:any) => item.groupName.toLowerCase().includes(this.searchGroupText));\r\n }\r\n else {\r\n this.filteredGroups = combinedGroups;\r\n }\r\n \r\n // Auto-fetch stores when groups are selected\r\n const selectedGroups = this.groupsData.filter((group) => group.checked).map((group) => group.groupName);\r\n if (selectedGroups.length > 0) {\r\n setTimeout(()=>{\r\n this.getStore(); // Fetch stores based on selected groups\r\n },1000)\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch groups\", err);\r\n },\r\n });\r\n }\r\n\r\n toggleDropdown(type: 'country' | 'location' | 'group' | 'store'): void {\r\n if (this.dropdownOpen === type) {\r\n // If the dropdown is open, close it and avoid resetting the selected values unnecessarily\r\n this.dropdownOpen = null;\r\n } else {\r\n // Open the specific dropdown and handle data fetching only if necessary\r\n this.dropdownOpen = type;\r\n\r\n if (type === 'country') {\r\n // Fetch countries only if not already fetched and no search text exists\r\n if ((!this.filteredCountries || this.filteredCountries.length === 0) && !this.searchCountryText.trim()) {\r\n this.getCountry();\r\n }\r\n }\r\n \r\n if (type === 'group') {\r\n // Fetch groups only if there are selected cities and no active search text\r\n const selectedCities = this.locations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n \r\n // Fetch groups only if locations are selected, no search text exists, and dropdown is opened\r\n if (this.filteredLocations.length > 0 || (selectedCities.length > 0 && !this.searchGroupText.trim())) {\r\n this.getGroups();\r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n }\r\n }\r\n\r\n if (type === 'store') {\r\n // Fetch stores only if not already fetched and no search text is active\r\n if ((!this.filteredStores || this.filteredStores.length === 0) && !this.searchStoreText.trim()) {\r\n this.getStore();\r\n } \r\n }\r\n }\r\n }\r\n \r\n \r\n handleGroupDropdownClick(): void {\r\n if (this.dropdownOpen === 'group') {\r\n this.resetSelectedGroups();\r\n }\r\n this.toggleDropdown('group');\r\n }\r\n\r\n resetSelectedGroups(): void {\r\n this.filteredGroups.forEach((group) => (group.checked = false));\r\n this.searchGroupText = \"\";\r\n }\r\n selectedGroupsLabel(): string {\r\n const selectedGroups = this.groupLabel = this.searchGroupText.length ? this.groupsData.filter((group) => group.checked) : this.filteredGroups.filter((group) => group.checked);\r\n return selectedGroups.length === 0\r\n ? \"\"\r\n : selectedGroups.length === 1\r\n ? selectedGroups[0].groupName\r\n : `${selectedGroups.length} Clusters`;\r\n }\r\n removeGroup(): void {\r\n this.Reset();\r\n \r\n }\r\n \r\n\r\n isAllGroupsSelected(): boolean {\r\n \r\n return this.filteredGroups.length ? this.filteredGroups.every((group) => group.checked) : false;\r\n }\r\n \r\n getStore(): void {\r\n const country = this.countries\r\n .filter(country => country.checked)\r\n .map(country => country.country);\r\n const city = this.locations\r\n .filter(location => location.checked)\r\n .map(location => location.city);\r\n const group = this.groupsData\r\n .filter(group => group.checked)\r\n .map(group => group.groupName);\r\n \r\n const data = {\r\n country,\r\n city,\r\n clusters: group,\r\n clientId: this.users.clientId || this.selectedFilters.client\r\n };\r\n \r\n this.auth.getHeaderStores(data).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n // Initialize stores from API response\r\n this.stores = res.data.storesData;\r\n // Check if there are previously selected stores\r\n const checkedStoreIds = this.selectedFilters?.stores\r\n ? this.selectedFilters.stores.filter((store:any) => store.checked).map((store:any) => store.storeId)\r\n : [];\r\n // Sync the `checked` state\r\n this.stores.forEach(store => {\r\n store.checked = checkedStoreIds.length\r\n ? checkedStoreIds.includes(store.storeId) // Use previous selection\r\n : true; // Default to true if no previous selection\r\n });\r\n \r\n // Apply search filter if search text is present\r\n if (this.searchStoreText.length) {\r\n this.filteredStores = this.stores.filter(store =>\r\n store.storeName.toLowerCase().includes(this.searchStoreText.toLowerCase())\r\n );\r\n } else {\r\n this.filteredStores = [...this.stores];\r\n }\r\n \r\n // Update `selectedFilters.stores` to reflect the current state\r\n this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n storeId: store.storeId,\r\n storeName: store.storeName,\r\n checked: store.checked\r\n }));\r\n // this.selectedFilters.country = country;\r\n \r\n // Save updated filters to localStorage\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n \r\n // Trigger UI change detection\r\n this.cd.detectChanges();\r\n } else {\r\n // Handle empty or error response\r\n this.clearStoresState();\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch stores\", err);\r\n this.clearStoresState();\r\n }\r\n });\r\n }\r\n \r\n // Clear stores state and reset filters\r\n private clearStoresState(): void {\r\n this.stores = [];\r\n this.filteredStores = [];\r\n this.selectedFilters.stores = [];\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n }\r\n \r\n resetSelectedStores(): void {\r\n this.filteredStores.forEach((store) => (store.checked = false));\r\n this.searchStoreText = \"\";\r\n }\r\n\r\n selectedStoresLabel(): string {\r\n const selectedStores = this.searchStoreText.length ? this.stores.filter((store) => store.checked) : this.filteredStores.filter((store) => store.checked);\r\n return selectedStores.length === 0\r\n ? \"0 Stores\"\r\n : selectedStores.length === 1\r\n ? selectedStores[0].storeName\r\n : `${selectedStores.length} Stores`;\r\n }\r\n\r\n isAllStoresSelected(): boolean {\r\n return this.filteredStores.length > 0 && this.filteredStores.every(store => store.checked);\r\n }\r\n// Method to handle dropdown item selection\r\nupdateSelectedStores(): void {\r\n this.filteredStores.forEach(store => {\r\n const filteredStore = this.stores.findIndex(fStore => fStore.storeId === store.storeId);\r\n if (filteredStore != -1) {\r\n this.stores[filteredStore].checked = store.checked; // Sync the checked state with full store list\r\n }\r\n }); \r\n // Update selectedFilters based on the current store selection\r\n this.selectedFilters.stores = this.stores.filter(store => store.checked);\r\n\r\n // Update localStorage with the latest selection\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n\r\n // Emit updated filters via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n\r\n // Trigger change detection if necessary\r\n this.cd.detectChanges();\r\n}\r\n toggleSelectAllLocations(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredLocations.forEach((location) => (location.checked = isChecked));\r\n this.updateSelectedLocations();\r\n }\r\n\r\n toggleSelectAllStores(event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n \r\n // Apply the selection to both filtered and full list of stores\r\n this.filteredStores.forEach(store => store.checked = checked);\r\n this.stores.forEach(store => {\r\n const filteredStore = this.filteredStores.find(fStore => fStore.storeId === store.storeId);\r\n if (filteredStore) {\r\n store.checked = checked; // Sync the checked state with full store list\r\n }\r\n });\r\n \r\n // Update the selected stores and persist the selection\r\n this.updateSelectedStores();\r\n }\r\n\r\n updateSelectedLocations(): void {\r\n // When locations are selected, fetch the related groups\r\n const selectedCities = this.filteredLocations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n this.filteredLocations.forEach((location:any) => {\r\n let findLocationIndex = this.locations.findIndex((loc:any) => loc.city == location.city);\r\n if(findLocationIndex != -1) {\r\n this.locations[findLocationIndex].checked = location.checked;\r\n }\r\n })\r\n if (selectedCities.length > 0 || !selectedCities.length) {\r\n this.selectedFilters.stores =[];\r\n this.groupsData =[]\r\n this.getGroups(); // Fetch groups based on selected cities\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.location = this.locations;\r\n \r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n this.selectedFilters.location = [];\r\n }\r\n \r\n this.selectedFilters.group = [];\r\n this.filteredStores = []; // Reset stores as well\r\n this.searchGroupText = '';\r\n this.searchStoreText = '';\r\n // this.Opendropdown = false;\r\n }\r\n\r\n toggleSelectAllGroups(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredGroups.forEach((group) => (group.checked = isChecked));\r\n this.updateSelectedGroups();\r\n }\r\n\r\n updateSelectedGroups(): void {\r\n // Fetch the relevant stores after groups are selected\r\n const selectedGroups = this.filteredGroups\r\n .filter((group) => group.checked)\r\n .map((group) => group.groupName);\r\n\r\n this.filteredGroups.forEach((group:any) => {\r\n let findGroupIndex = this.groupsData.findIndex((item:any) => item.groupName == group.groupName);\r\n if(findGroupIndex != -1) {\r\n this.groupsData[findGroupIndex].checked = group.checked;\r\n }\r\n }) \r\n if (selectedGroups.length > 0 || !selectedGroups.length) {\r\n this.selectedFilters.stores =[];\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.group = this.groupsData;\r\n } else {\r\n // If no groups are selected, clear the stores list\r\n this.filteredStores = [];\r\n \r\n // Also, update localStorage to reflect the cleared store selection\r\n this.selectedFilters.stores = [];\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n \r\n // Emit data via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n }\r\n \r\n // Clear the search store text when groups are updated\r\n this.searchStoreText = '';\r\n }\r\n \r\n\r\n Reset(): void {\r\n setTimeout(()=>{\r\n // Clear selected groups, stores, and locations\r\n this.filteredCountries = []\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredLocations = []; // Reset locations as well\r\nthis.locations =[];this.groupsData =[]; this.stores =[]; this.countries =[];\r\n // Clear search input fields\r\n this.searchLocationText = \"\";\r\n this.searchGroupText = \"\";\r\n this.searchStoreText = \"\";\r\nthis.selectedFilters.stores =[];\r\nthis.selectedFilters.group =[];\r\nthis.selectedFilters.location =[];\r\nthis.selectedFilters.country =[];\r\n\r\n \r\n // Fetch locations, groups, and stores again\r\n this.getCountry();\r\n this.getLocations();\r\n this.getStore();\r\n this.getGroups();\r\n // Reset the filters in selectedFilters\r\n\r\n\r\n // // Once stores are fetched, mark all as checked\r\n // setTimeout(() => {\r\n // this.filteredStores = this.stores.map(store => ({\r\n // ...store,\r\n // checked: true // Mark all stores as checked\r\n // }));\r\n\r\n // // Sync selectedFilters with the updated store state\r\n // this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n // ...store,\r\n // checked: true\r\n // }));\r\n\r\n // Update localStorage with the latest selectedFilters\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n // Emit the reset filters to update other components if needed\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection\r\n this.cd.detectChanges();\r\n // Adding a slight delay to ensure stores are fetched first\r\n \r\n \r\n // Close dropdown after reset if necessary\r\n this.Opendropdown = false;\r\n },100)\r\n }\r\n \r\n \r\n \r\n\r\n filterLocations(): void { \r\n const searchText = this.searchLocationText.toLowerCase();\r\n \r\n if (searchText) {\r\n // Preserve the checked state during filtering\r\n this.filteredLocations = this.locations\r\n .map(location => ({\r\n ...location,\r\n checked: this.filteredLocations.find(l => l.city === location.city)?.checked || false\r\n }))\r\n .filter(location =>\r\n location?.city?.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Restore the original checked state when search text is cleared\r\n this.filteredLocations = this.locations.map(location => ({\r\n ...location,\r\n checked: this.selectedFilters.location.find((l:any) => l.city === location.city)?.checked || false\r\n }));\r\n }\r\n }\r\n \r\n\r\n filterGroups(): void { \r\n const searchText = this.searchGroupText.toLowerCase();\r\n \r\n if (searchText) {\r\n // Preserve the checked state during filtering\r\n this.filteredGroups = this.groupsData\r\n .map(group => ({\r\n ...group,\r\n checked: this.filteredGroups.find(g => g.groupName === group.groupName)?.checked || false\r\n }))\r\n .filter(group =>\r\n group?.groupName?.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Restore the original checked state when search text is cleared\r\n this.filteredGroups = this.groupsData.map(group => ({\r\n ...group,\r\n checked: this.selectedFilters.group.find((g:any) => g.groupName === group.groupName)?.checked || false\r\n }));\r\n }\r\n }\r\n \r\n \r\n filterStores(): void {\r\n const searchText = this.searchStoreText.toLowerCase();\r\n // Preserve checked states during filtering\r\n if (searchText) {\r\n // Filter based on search text while preserving checked state\r\n this.filteredStores = this.stores\r\n .map(store => ({\r\n ...store,\r\n // Check if the store is already checked in filteredStores, fallback to original stores' checked state\r\n checked: this.selectedFilters.stores.find((s: any) => s.storeId === store.storeId)?.checked || store.checked || false\r\n }))\r\n .filter(store => store.storeName.toLowerCase().includes(searchText));\r\n } else {\r\n // When the search text is cleared, restore the original list with preserved checked states\r\n this.filteredStores = this.stores.map(store => ({\r\n ...store,\r\n // Preserve the checked state based on the selected filters\r\n checked: this.selectedFilters.stores.find((s: any) => s.storeId === store.storeId)?.checked || store.checked || false\r\n }));\r\n }\r\n }\r\n\r\n closeDropdown(): void {\r\n this.dropdownOpen = null;\r\n }\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n clickOutside(event: MouseEvent): void {\r\n const clickedInside = (event.target as HTMLElement).closest(\r\n \".dropdown-container\"\r\n );\r\n const clickedoutSide = (event.target as HTMLElement).closest(\r\n \".dropdown2\"\r\n );\r\n if (!clickedInside) {\r\n this.closeDropdown();\r\n }\r\n if(!clickedoutSide) {\r\n this.closeDropdown1();\r\n }\r\n\r\n }\r\n\r\n // getCountry(): void {\r\n // // const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n // let obj ={\r\n // clientId: this.selectedFilters.client ? this.selectedFilters.client :this.users.clientId,\r\n // }\r\n // this.auth.getCountry(obj).subscribe({\r\n // next: (res: any) => {\r\n // let countryList = this.selectedFilters?.country?.filter((country:any) => country.checked).map((loc:any) => loc.allCountry);\r\n // // Map the fetched countries with default unchecked state\r\n // this.countires = res?.data?.countryData.map((allCountry: any) => ({\r\n // allCountry: allCountry.allCountry,\r\n // checked: countryList?.includes(allCountry.allCountry) ? true : false,\r\n // }));\r\n \r\n // // Sync the fetched countries with any stored checked values in localStorage\r\n // if (this.selectedFilters.country && Array.isArray(this.selectedFilters.country)) {\r\n // this.filteredCountries = this.countries.map(country => {\r\n // const matchedLocation = this.selectedFilters.country.find((loc: any) => loc.allCountry === country.allCountry);\r\n // return matchedLocation ? { ...country, checked: matchedLocation.checked } : country;\r\n // });\r\n // } else {\r\n // this.filteredCountries = this.countries;\r\n // }\r\n\r\n // if(this.searchLocationText) {\r\n // this.filteredCountries = this.countries.filter((country:any) => country.city.toLowerCase().includes(this.searchLocationText.toLowerCase()))\r\n // }\r\n // const selectedCountries = this.countries.filter((country) => country.checked).map((country) => country.allCountry);\r\n // if (selectedCountries.length > 0) {\r\n // setTimeout(()=>{\r\n // this.getStore(); // Fetch stores based on selected groups\r\n // },1000)\r\n // }\r\n // },\r\n // error: (err) => {\r\n // console.error(\"Failed to fetch countries\", err);\r\n // },\r\n // });\r\n // }\r\n\r\n // selectedCountriesLabel(): string {\r\n // const selectedCountries = this.countryLabel = this.searchLocationText.length ? this.countries\r\n // .filter(country => country.checked).map(country => country.allCountry) : this.filteredCountries\r\n // .filter(country => country.checked).map(country => country.allCountry);\r\n // return selectedCountries.length === 0\r\n // ? ''\r\n // : selectedCountries.length === 1\r\n // ? selectedCountries[0]\r\n // : `${selectedCountries.length} countries`;\r\n // }\r\n\r\n // isAllCountriesSelected(): boolean {\r\n // return this.filteredCountries.every(country => country.checked);\r\n\r\n // }\r\n // filterCountries(): void { \r\n // const searchText = this.searchCountryText.toLowerCase();\r\n \r\n // if (searchText) {\r\n // // Preserve the checked state during filtering\r\n // this.filteredCountries = this.countires\r\n // .map(country => ({\r\n // ...country,\r\n // checked: this.filteredCountries.find(l => l.allCountry === country.allCountry)?.checked || false\r\n // }))\r\n // .filter(location =>\r\n // location?.allCountry?.toLowerCase().includes(searchText)\r\n // );\r\n // } else {\r\n // // Restore the original checked state when search text is cleared\r\n // this.filteredCountries = this.countires.map(country => ({\r\n // ...country,\r\n // checked: this.selectedFilters.country.find((l:any) => l.allCountry === country.allCountry)?.checked || false\r\n // }));\r\n // }\r\n // }\r\n \r\n\r\n getCountry(): void {\r\n let obj = {\r\n clientId: this.selectedFilters.client ? this.selectedFilters.client : this.users.clientId,\r\n };\r\n \r\n this.auth.getCountry(obj).subscribe({\r\n next: (res: any) => {\r\n // Extract selected countries from existing filters (if any)\r\n let countryList = this.selectedFilters?.country?.filter((country: any) => country.checked).map((loc: any) => loc.country);\r\n \r\n // Map API response to frontend model\r\n this.countries = res?.data?.countryData.map((item: any) => ({\r\n country: item.country,\r\n // checked: countryList?.length ? countryList.includes(item.country) : true,\r\n // checked: cityList?.length ? cityList.includes(city.city) : true,\r\n checked: countryList?.includes(item.country) ? true : false,\r\n \r\n }));\r\n if (this.selectedFilters.country && Array.isArray(this.selectedFilters.country)) {\r\n this.filteredCountries = this.countries.map(location => {\r\n const matchedLocation = this.selectedFilters.country.find((loc: any) => loc.country === location.country);\r\n return matchedLocation ? { ...location, checked: matchedLocation.checked } : location;\r\n });\r\n } else {\r\n this.filteredCountries = this.countries;\r\n }\r\n\r\n\r\n // Initially, all countries are visible\r\n this.filteredCountries = [...this.countries];\r\n \r\n\r\n // If a search text already exists, filter immediately\r\n if (this.searchCountryText) {\r\n this.filterCountries();\r\n }\r\n \r\n // Fetch stores if at least one country is selected\r\n let selectedCountries = this.countries.filter((country) => country.checked);\r\n if (selectedCountries.length > 0) {\r\n setTimeout(() => {\r\n this.getLocations();\r\n this.getStore(); // fetch stores\r\n }, 1000);\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch countries\", err);\r\n },\r\n });\r\n }\r\n\r\n selectedCountriesLabel(): string {\r\n const selectedCountries = this.searchCountryText.length\r\n ? this.filteredCountries.filter(country => country.checked).map(country => country.country)\r\n : this.countries.filter(country => country.checked).map(country => country.country);\r\n \r\n return selectedCountries.length === 0\r\n ? ''\r\n : selectedCountries.length === 1\r\n ? selectedCountries[0]\r\n : `${selectedCountries.length} countries`;\r\n }\r\n\r\n filterCountries(): void {\r\n const searchText = this.searchCountryText.toLowerCase();\r\n \r\n if (searchText) {\r\n // Filter and preserve checked state\r\n this.filteredCountries = this.countries\r\n .map(country => ({\r\n ...country,\r\n checked: this.filteredCountries.find(c => c.country === country.country)?.checked || false\r\n }))\r\n .filter(country => country.country.toLowerCase().includes(searchText));\r\n } else {\r\n // Reset to full list\r\n this.filteredCountries = this.countries.map((country: Country) => ({\r\n ...country,\r\n checked: this.selectedFilters.country?.find((c: any) => c.country === country.country)?.checked || false\r\n }));\r\n }\r\n }\r\n\r\n isAllCountriesSelected(): boolean {\r\n return this.filteredCountries.length > 0 && this.filteredCountries.every(country => country.checked);\r\n }\r\n toggleSelectAllCountries(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredCountries.forEach((country) => (country.checked = isChecked));\r\n this.updateSelectedCountries();\r\n \r\n }\r\n \r\n updateSelectedCountries(): void {\r\n // When locations are selected, fetch the related groups\r\n const selectedCountries = this.filteredCountries\r\n .filter((country) => country.checked)\r\n .map((country) => country.country);\r\n this.filteredCountries.forEach((country:any) => {\r\n let findCountryIndex = this.countries.findIndex((loc:any) => loc.country == country.country);\r\n if(findCountryIndex != -1) {\r\n this.countries[findCountryIndex].checked = country.checked;\r\n }\r\n })\r\n if (selectedCountries.length > 0 || !selectedCountries.length) {\r\n this.selectedFilters.stores =[];\r\n this.groupsData =[]\r\n this.locations =[];\r\n this.getLocations();\r\n this.getGroups(); // Fetch groups based on selected cities\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.country = this.filteredCountries;\r\n \r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n this.selectedFilters.country = [];\r\n }\r\n \r\n this.selectedFilters.group = [];\r\n this.filteredStores = []; // Reset stores as well\r\n this.searchGroupText = '';\r\n this.searchStoreText = '';\r\n // this.Opendropdown = false;\r\n }\r\n\r\n removeCountry(): void {\r\n this.Reset();\r\n }\r\n\r\n Apply(): void {\r\n // Close the dropdown\r\n this.Opendropdown = false;\r\n \r\n // Fetch existing filters from localStorage\r\n const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n this.selectedFilters.store = null\r\n \r\n // Ensure current selections are reflected\r\n this.selectedFilters.country = this.filteredCountries;\r\n this.selectedFilters.location = this.locations;\r\n this.selectedFilters.group = this.groupsData;\r\n this.selectedFilters.stores = headerFilters.stores ? headerFilters.stores : this.stores;\r\n // Store updated filters back in localStorage\r\n localStorage.setItem(\"header-filters\", JSON.stringify(this.selectedFilters));\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n window.location.reload()\r\n // Emit the updated filters via the service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger refresh if necessary\r\n // this.gs.manageRefreshTrigger.next(true);\r\n this.cd.detectChanges();\r\n }\r\n \r\n\r\n\r\n}\r\ninterface City {\r\n city: string;\r\n}\r\n\r\ninterface Location {\r\n city: City;\r\n checked: boolean;\r\n}\r\ninterface Country {\r\n country: string;\r\n checked: boolean;\r\n}\r\n","<div class=\"me-3\">\r\n <label *ngIf=\"selectedCountriesLabel()\" class=\"badge badge-light-default mx-2\">{{selectedCountriesLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeCountry()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label *ngIf=\"selectedLocationsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedLocationsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeLocation()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label *ngIf=\"selectedGroupsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedGroupsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeGroup()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label class=\"badge badge-light-default\">{{selectedStoresLabel()}}</label>\r\n</div>\r\n\r\n\r\n<div class=\"wrapper me-3\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n<lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div>\r\n<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput\r\n ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [autoApply]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n<div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"opendropdown($event)\" class=\"btn btn-default mx-2 rounded-3 text-nowrap border-val\">\r\n <!-- <span class=\"me-2\">Filter</span> -->\r\n <svg class=\"pl-3\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-5 dropdown2 position-absolute z-1 end-0\" style=\"z-index: 1 !important;\" (clickOutside)=\"closeDropdown1()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-2\">Filter Options\r\n <button class=\"btn btn-outline w-25 ms-3 btn-resize\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n\r\n <!-- Country Dropdown -->\r\n<div class=\"dropdown-container\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('country')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedCountriesLabel()\"\r\n readonly\r\n placeholder=\"Select country\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'country'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search country\" \r\n [(ngModel)]=\"searchCountryText\" \r\n (ngModelChange)=\"filterCountries()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllCountries\" \r\n [checked]=\"isAllCountriesSelected()\" \r\n (change)=\"toggleSelectAllCountries($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllCountries\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let country of filteredCountries\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"country.country\" \r\n [(ngModel)]=\"country.checked\"\r\n (change)=\"updateSelectedCountries()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"country.country\">\r\n {{ country.country }}\r\n </label>\r\n \r\n </div>\r\n </div>\r\n</div>\r\n\r\n <!-- Location Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('location')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedLocationsLabel()\"\r\n readonly\r\n placeholder=\"Select Region\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'location'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search Region\" \r\n [(ngModel)]=\"searchLocationText\" \r\n (ngModelChange)=\"filterLocations()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllLocations\" \r\n [checked]=\"isAllLocationsSelected()\" \r\n (change)=\"toggleSelectAllLocations($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllLocations\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let location of filteredLocations\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"location.city\" \r\n [(ngModel)]=\"location.checked\"\r\n (change)=\"updateSelectedLocations()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"location.city\">\r\n {{ location.city }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Group Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('group')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedGroupsLabel()\" readonly\r\n placeholder=\"Select clusters\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'group'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search clusters\" \r\n [(ngModel)]=\"searchGroupText\" \r\n (ngModelChange)=\"filterGroups()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllGroups\" \r\n [checked]=\"isAllGroupsSelected()\" \r\n (change)=\"toggleSelectAllGroups($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllGroups\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let group of filteredGroups\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"group.groupName\"\r\n [(ngModel)]=\"group.checked\"\r\n (change)=\"updateSelectedGroups()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"group.groupName\">\r\n {{ group.groupName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Store Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('store')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\"\r\n [value]=\"selectedStoresLabel()\"\r\n readonly\r\n placeholder=\"Select stores\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'store'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search \" \r\n placeholder=\"Search stores\" \r\n [(ngModel)]=\"searchStoreText\" \r\n (ngModelChange)=\"filterStores()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllStores\" \r\n [checked]=\"isAllStoresSelected()\" \r\n (change)=\"toggleSelectAllStores($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllStores\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let store of filteredStores\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"store.storeId\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateSelectedStores()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"store.storeId\">\r\n {{ store.storeName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/en\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { Router } from \"@angular/router\";\r\nimport { AuthService } from \"../../../../services/auth.service\";\r\n\r\n@Component({\r\n selector: 'lib-trax-header',\r\n templateUrl: './trax-header.component.html',\r\n styleUrl: './trax-header.component.scss'\r\n})\r\nexport class TraxHeaderComponent implements OnInit {\r\n dayjs = dayjs;\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs();\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n\r\n selectedDateRange: any = { startDate: dayjs().subtract(30, 'days'),\r\n endDate: dayjs().subtract(1, \"days\"),};\r\n selectedFilters: any = {\r\n client: null,\r\n clientName: null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n group: [],\r\n location: [],\r\n };\r\n Opendropdown: boolean = false;\r\n dropdownOpen: string | null = null; // 'location' or 'group'\r\n searchLocationText: string = \"\";\r\n searchGroupText: string = \"\";\r\n locations: any[] = [];\r\n filteredLocations: any[] = [];\r\n groupsData: any[] = [];\r\n filteredGroups: any[] = [];\r\n filteredStores: any[] = [];\r\n stores:any[] = []\r\n searchStoreText:string = '';\r\n clientList:any = []\r\n selectedClient:any\r\n locationLabel: any[]=[];\r\n groupLabel: any[]=[];\r\n users: any;\r\n url: any;\r\n constructor(\r\n private auth: AuthService,private router: Router,\r\n public gs: GlobalStateService,\r\n private cd: ChangeDetectorRef,\r\n ) {}\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick (event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if(!target.closest('.dropdown1')) {\r\n this.Opendropdown = false;\r\n }\r\n }\r\n closeDropdown1(){\r\n this.Opendropdown = false;\r\n }\r\n ngOnInit(): void {\r\n // this.setRangesBasedOnRoute();\r\n\r\n // Listen for route changes to update ranges\r\n // this.router?.events?.subscribe((event) => {\r\n // if (event instanceof NavigationEnd) {\r\n // this.setRangesBasedOnRoute();\r\n // }\r\n // });\r\n this.url = this.router.url.split(\"?\")[0].split('/');\r\n const user = JSON.parse(localStorage.getItem('user-info') as string);\r\n this.users = user;\r\n this.gs?.manageRefreshTrigger?.subscribe((e) => { \r\n if (e) {\r\n if (user.userType === 'tango') {\r\n this.getClient();\r\n } else{\r\n const storedFilters = localStorage.getItem(\"header-filters\");\r\n if (storedFilters) {\r\n const headerFilters = JSON.parse(storedFilters);\r\n this.filteredStores = headerFilters?.stores.map((store:any) => ({\r\n ...store,\r\n checked: store.checked\r\n }));\r\n }\r\n }\r\n }\r\n });\r\n \r\n // Fetch client data if the user is of type 'tango'\r\n if (user.userType === 'tango') {\r\n this.getClient();\r\n } else {\r\n this.getLocations();\r\n this.getGroups();\r\n this.getStore();\r\n const clientFilters = localStorage.getItem(\"client-details\");\r\n if (clientFilters) {\r\n const headerclientFilters = JSON.parse(clientFilters);\r\n this.selectedClient = {\r\n traxDateRange : headerclientFilters.traxDateRange\r\n }\r\n }\r\n this.getDateRanges();\r\n// this.emitAndStoreFilters();\r\n// console.log(\"1\")\r\n\r\n }\r\n \r\n // Load filters from localStorage if they exist\r\n const storedFilters = localStorage.getItem(\"header-filters\");\r\n if (storedFilters) {\r\n const headerFilters = JSON.parse(storedFilters);\r\n \r\n // Initialize selectedFilters with defaults or existing values\r\n this.selectedFilters = {\r\n client: headerFilters.client || this.users.client,\r\n clientName: headerFilters.clientName || '',\r\n clients: headerFilters.clients || [],\r\n store: headerFilters.store || null,\r\n date: headerFilters.date || {},\r\n stores: headerFilters.stores || [],\r\n group: headerFilters.group || [],\r\n location: headerFilters.location || []\r\n };\r\n \r\n // Sync filtered data with stored selections\r\n this.filteredLocations = this.syncWithLocalStorage(headerFilters.location);\r\n this.filteredGroups = this.syncWithLocalStorage(headerFilters.group);\r\n this.filteredStores = this.syncWithLocalStorage(headerFilters.stores);\r\n // Format date range if it exists\r\n \r\n if (headerFilters.date) {\r\n const startDate = this.dayjs(headerFilters.date.startDate);\r\n const endDate = this.dayjs(headerFilters.date.endDate);\r\n const differenceInDays = endDate.diff(startDate, 'days');\r\n if (differenceInDays >= 7) {\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").subtract(6, \"days\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n } else{\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(headerFilters.date.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n }\r\n } else {\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(this.selectedDateRange.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(this.selectedDateRange.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n }\r\n \r\n // console.log(\"3\")\r\n // Emit data via service and update localStorage\r\nthis.emitAndStoreFilters();\r\n } else {\r\n // Initialize empty states if no header filters are present in localStorage\r\n this.resetFilters();\r\n // console.log(\"2\")\r\n }\r\n }\r\n private syncWithLocalStorage(items: any[]): any[] {\r\n return items\r\n ? items.map((item: any) => ({\r\n ...item,\r\n checked: item.checked === true\r\n }))\r\n : [];\r\n }\r\n private emitAndStoreFilters(): void {\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n localStorage.setItem(\"header-filters\", JSON.stringify(this.selectedFilters));\r\n // console.log(\"1\")\r\n }\r\n \r\n /**\r\n * Reset selectedFilters and all related arrays to empty states\r\n */\r\n private resetFilters(): void {\r\n this.selectedFilters = {\r\n client: null,\r\n clientName: '',\r\n clients: [],\r\n store: null,\r\n date: {},\r\n stores: [],\r\n group: [],\r\n location: []\r\n };\r\n this.filteredLocations = [];\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n }\r\ngetClient(){\r\n this.auth.getClients().subscribe({\r\n next: (e) => {\r\n if (e) {\r\n this.clientList = e.data.result;\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n if (headerFilters.client) {\r\n this.clientList.find((obj: any) => {\r\n if (obj.clientId === headerFilters.client) {\r\n this.selectedClient = obj;\r\n }\r\n });\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.stores = headerFilters.stores;\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"2\")\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.stores = headerFilters.stores;\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"3\")\r\n this.cd.detectChanges();\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n }\r\n\r\n\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"4\")\r\n this.cd.detectChanges();\r\n }\r\n this.getDateRanges();\r\n this.getUserInfo(this.selectedFilters?.client)\r\n },\r\n \r\n });\r\n\r\n}\r\nonClientSelect(event: any): void {\r\n // Update the selected client\r\n this.selectedClient = event;\r\n // Clear previous filtered data and selections\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredLocations = [];\r\n this.selectedFilters.stores = [];\r\n this.selectedFilters.group = [];\r\n this.selectedFilters.location = [];\r\n\r\n // Fetch header filters from localStorage\r\n const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n \r\n // Update the selected filters with the new client\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName;\r\n \r\n // Remove old store, group, and location data from the header filters\r\n delete headerFilters.stores;\r\n delete headerFilters.groups;\r\n delete headerFilters.location;\r\n \r\n // Fetch new data based on the new client\r\n this.getLocations();\r\n this.getStore();\r\n this.getGroups();\r\n // Update localStorage with the new client selection and empty filter data\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n // Emit data to the global service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection to reflect UI changes\r\n this.cd.detectChanges();\r\n}\r\n\r\n\r\ngetDateRanges(): any {\r\n\r\n if (this.selectedClient?.traxDateRange === 7) {\r\n this.ranges = {\r\n Today: [dayjs(), dayjs()],\r\n Yesterday: [dayjs().subtract(1, 'days'), dayjs().subtract(1, 'days')],\r\n 'This Week': [dayjs().subtract(7, 'days'), dayjs().subtract(1, 'days')],\r\n 'Last Week': [\r\n dayjs().subtract(14, 'days').startOf('day'),\r\n dayjs().subtract(8, 'days').endOf('day'),\r\n ],\r\n };\r\n } else {\r\n this.ranges = {\r\n Today: [dayjs(), dayjs()],\r\n Yesterday: [dayjs().subtract(1, 'days'), dayjs().subtract(1, 'days')],\r\n 'This Week': [dayjs().subtract(7, 'days'), dayjs().subtract(1, 'days')],\r\n 'Last Week': [\r\n dayjs().subtract(14, 'days').startOf('day'),\r\n dayjs().subtract(8, 'days').endOf('day'),\r\n ],\r\n 'This Month': [dayjs().subtract(30, 'days'), dayjs().subtract(1, 'days')],\r\n 'Last Month': [\r\n dayjs().subtract(1, 'month').startOf('month'),\r\n dayjs().subtract(1, 'month').endOf('month'),\r\n ],\r\n };\r\n }\r\n\r\n}\r\n\r\nranges:any = {}\r\n// Today: [dayjs(), dayjs()],\r\n// Yesterday: [dayjs().subtract(1, 'days'), dayjs().subtract(1, 'days')],\r\n// 'This Week': [dayjs().subtract(7, 'days'), dayjs().subtract(1, 'days')],\r\n// 'Last Week': [\r\n// dayjs().subtract(14, 'days').startOf('day'),\r\n// dayjs().subtract(8, 'days').endOf('day'),\r\n// ],\r\n// 'This Month': [dayjs().subtract(30, 'days'), dayjs().subtract(1, 'days')],\r\n// 'Last Month': [\r\n// dayjs().subtract(1, 'month').startOf('month'),\r\n// dayjs().subtract(1, 'month').endOf('month'),\r\n// ],\r\n// };\r\n\r\nresetValidation() {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n // Check if the given date is before yesterday\r\n return m.isAfter(this.dayjs(), 'day') ? 'invalid-date' : false;\r\n };\r\n}\r\n onStartDateChange(event: any) {\r\n if (this.dayjs(event.startDate).isValid()) {\r\n\r\n if(this.selectedClient?.traxDateRange === 7){\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() || m > this.dayjs(event.startDate.add(6, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n } else {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() || m > this.dayjs(event.startDate.add(30, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n }\r\n }\r\n }\r\n\r\n datechange(event: any) {\r\n if (event && event.startDate && event.endDate) {\r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = event.startDate;\r\n this.selectedDateRange.endDate = event.endDate;\r\n var datetime = {\r\n startDate: this.dayjs(event.startDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ),\r\n endDate: this.dayjs(event.endDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.resetValidation();\r\n // window.location.reload()\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n }\r\n } \r\n \r\n }\r\n getUserInfo(client:any){\r\n let obj ={\r\n clientId: client ? client :''\r\n }\r\n if(client){\r\n this.auth.getHeaderUsers(obj).subscribe({\r\n next: (e) => {\r\n localStorage.setItem(\r\n \"usersEmail-info\",\r\n JSON.stringify(e?.data?.userEmailData || [])\r\n );\r\n } \r\n })\r\n }\r\n }\r\n opendropdown(e:MouseEvent) {\r\n e.stopPropagation();\r\n this.Opendropdown = !this.Opendropdown;\r\n }\r\n getLocations(): void {\r\n // const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n let obj ={\r\n clientId: this.selectedFilters.client ? this.selectedFilters.client :this.users.clientId,\r\n city: [],\r\n group: [],\r\n }\r\n this.auth.getLocation(obj).subscribe({\r\n next: (res: any) => {\r\n let cityList = this.selectedFilters?.location?.filter((location:any) => location.checked).map((loc:any) => loc.city);\r\n // Map the fetched locations with default unchecked state\r\n this.locations = res?.data?.locationData.map((city: any) => ({\r\n city: city.city,\r\n checked: cityList?.includes(city.city) ? true : false,\r\n }));\r\n \r\n // Sync the fetched locations with any stored checked values in localStorage\r\n if (this.selectedFilters.location && Array.isArray(this.selectedFilters.location)) {\r\n this.filteredLocations = this.locations.map(location => {\r\n const matchedLocation = this.selectedFilters.location.find((loc: any) => loc.city === location.city);\r\n return matchedLocation ? { ...location, checked: matchedLocation.checked } : location;\r\n });\r\n } else {\r\n this.filteredLocations = this.locations;\r\n }\r\n\r\n if(this.searchLocationText) {\r\n this.filteredLocations = this.locations.filter((location:any) => location.city.toLowerCase().includes(this.searchLocationText.toLowerCase()))\r\n }\r\n const selectedLocations = this.locations.filter((location) => location.checked).map((location) => location.city);\r\n if (selectedLocations.length > 0) {\r\n setTimeout(()=>{\r\n this.getStore(); // Fetch stores based on selected groups\r\n },1000)\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch locations\", err);\r\n },\r\n });\r\n }\r\n \r\n isAllLocationsSelected(): boolean {\r\n return this.filteredLocations.every(location => location.checked);\r\n\r\n }\r\n \r\n selectedLocationsLabel(): string {\r\n const selectedLocations = this.locationLabel = this.searchLocationText.length ? this.locations\r\n .filter(location => location.checked).map(location => location.city) : this.filteredLocations\r\n .filter(location => location.checked).map(location => location.city);\r\n return selectedLocations.length === 0\r\n ? ''\r\n : selectedLocations.length === 1\r\n ? selectedLocations[0]\r\n : `${selectedLocations.length} locations`;\r\n }\r\n\r\n removeLocation(): void {\r\n this.Reset();\r\n }\r\n \r\n getGroups(): void { \r\n const city = this.locations\r\n .filter(location => location.checked)\r\n .map(location => location.city);\r\n const obj = { city,clientId:this.selectedFilters.client ? this.selectedFilters.client :this.users.clientId,group:[] };\r\n this.auth.getGroups(obj).subscribe({\r\n next: (res: any) => {\r\n let checkedGroup = this.selectedFilters?.group?.filter((group:any) => group.checked).map((group:any) => group.groupName);\r\n const combinedGroups = res?.data?.groupData?.map((groupName: any) => ({\r\n groupName: groupName.groupName,\r\n checked: checkedGroup?.includes(groupName.groupName) ? true : false,\r\n }));\r\n this.groupsData = combinedGroups;\r\n if(this.searchGroupText.length) {\r\n this.filteredGroups = combinedGroups.filter((item:any) => item.groupName.toLowerCase().includes(this.searchGroupText));\r\n }\r\n else {\r\n this.filteredGroups = combinedGroups;\r\n }\r\n \r\n // Auto-fetch stores when groups are selected\r\n const selectedGroups = this.groupsData.filter((group) => group.checked).map((group) => group.groupName);\r\n if (selectedGroups.length > 0) {\r\n setTimeout(()=>{\r\n this.getStore(); // Fetch stores based on selected groups\r\n },1000)\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch groups\", err);\r\n },\r\n });\r\n }\r\n\r\n toggleDropdown(type: 'location' | 'group' | 'store'): void {\r\n if (this.dropdownOpen === type) {\r\n // If the dropdown is open, close it and avoid resetting the selected values unnecessarily\r\n this.dropdownOpen = null;\r\n } else {\r\n // Open the specific dropdown and handle data fetching only if necessary\r\n this.dropdownOpen = type;\r\n \r\n if (type === 'group') {\r\n // Fetch groups only if there are selected cities and no active search text\r\n const selectedCities = this.locations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n \r\n // Fetch groups only if locations are selected, no search text exists, and dropdown is opened\r\n if (this.filteredLocations.length > 0 || (selectedCities.length > 0 && !this.searchGroupText.trim())) {\r\n this.getGroups();\r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n }\r\n }\r\n\r\n if (type === 'store') {\r\n // Fetch stores only if not already fetched and no search text is active\r\n if ((!this.filteredStores || this.filteredStores.length === 0) && !this.searchStoreText.trim()) {\r\n this.getStore();\r\n } \r\n }\r\n }\r\n }\r\n \r\n \r\n handleGroupDropdownClick(): void {\r\n if (this.dropdownOpen === 'group') {\r\n this.resetSelectedGroups();\r\n }\r\n this.toggleDropdown('group');\r\n }\r\n\r\n resetSelectedGroups(): void {\r\n this.filteredGroups.forEach((group) => (group.checked = false));\r\n this.searchGroupText = \"\";\r\n }\r\n selectedGroupsLabel(): string {\r\n const selectedGroups = this.groupLabel = this.searchGroupText.length ? this.groupsData.filter((group) => group.checked) : this.filteredGroups.filter((group) => group.checked);\r\n return selectedGroups.length === 0\r\n ? \"\"\r\n : selectedGroups.length === 1\r\n ? selectedGroups[0].groupName\r\n : `${selectedGroups.length} Clusters`;\r\n }\r\n removeGroup(): void {\r\n this.Reset();\r\n \r\n }\r\n \r\n\r\n isAllGroupsSelected(): boolean {\r\n \r\n return this.filteredGroups.length ? this.filteredGroups.every((group) => group.checked) : false;\r\n }\r\n \r\n getStore(): void {\r\n const city = this.locations\r\n .filter(location => location.checked)\r\n .map(location => location.city);\r\n \r\n const group = this.groupsData\r\n .filter(group => group.checked)\r\n .map(group => group.groupName);\r\n \r\n const data = { city, clusters:group, clientId: this.users.clientId ? this.users.clientId : this.selectedFilters.client };\r\n \r\n this.auth.getHeadertraxStores(data).subscribe({\r\n next: (res: any) => {\r\n if(res &&res.code ===200){\r\n this.stores = res.data.storesData; \r\n // Retrieve checked store IDs from selectedFilters\r\n const checkedStoreIds = this.selectedFilters?.stores\r\n ? this.selectedFilters.stores.filter((store: any) => store.checked).map((store: any) => store.storeId)\r\n : [];\r\n\r\n this.stores.forEach(store => {\r\n if (checkedStoreIds.includes(store.storeId)) {\r\n store.checked = true; // Sync the checked state with full store list\r\n }\r\n });\r\n \r\n \r\n // Map the stores and retain the 'checked' status\r\n if(this.searchStoreText.length) {\r\n this.filteredStores = this.stores?.filter(store => store.storeName.toLowerCase().includes(this.searchStoreText));\r\n }\r\n else {\r\n this.filteredStores = this.stores;\r\n }\r\n // Ensure selectedFilters is in sync with filteredStores\r\n if (!this.selectedFilters.stores || !this.selectedFilters.stores.length) {\r\n this.stores.forEach(store => {\r\n store.checked = true; // Sync the checked state with full store list\r\n });\r\n \r\n // No previously selected stores, mark all as checked\r\n this.filteredStores = this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: true\r\n }));\r\n } else {\r\n // Update selectedFilters to reflect current state of stores\r\n this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: store.checked\r\n }));\r\n }\r\n // Update localStorage with the latest selectedFilters\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n \r\n // Emit data via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection to reflect changes in the UI\r\n this.cd.detectChanges();\r\n } else {\r\n this.stores =[];\r\n this.selectedFilters.stores=[];\r\n this.filteredStores =[];\r\n this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: false\r\n }));\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n }\r\n },\r\n error: (err) => {\r\n this.stores =[];\r\n this.selectedFilters.stores=[];\r\n this.filteredStores =[];\r\n this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: false\r\n }));\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n console.error(\"Failed to fetch stores\", err);\r\n },\r\n });\r\n }\r\n \r\n\r\n resetSelectedStores(): void {\r\n this.filteredStores.forEach((store) => (store.checked = false));\r\n this.searchStoreText = \"\";\r\n }\r\n\r\n selectedStoresLabel(): string {\r\n const selectedStores = this.searchStoreText.length ? this.stores.filter((store) => store.checked) : this.filteredStores.filter((store) => store.checked);\r\n return selectedStores.length === 0\r\n ? \"0 Stores\"\r\n : selectedStores.length === 1\r\n ? selectedStores[0].storeName\r\n : `${selectedStores.length} Stores`;\r\n }\r\n\r\n isAllStoresSelected(): boolean {\r\n return this.filteredStores.length > 0 && this.filteredStores.every(store => store.checked);\r\n }\r\n// Method to handle dropdown item selection\r\nupdateSelectedStores(): void {\r\n this.filteredStores.forEach(store => {\r\n const filteredStore = this.stores.findIndex(fStore => fStore.storeId === store.storeId);\r\n if (filteredStore != -1) {\r\n this.stores[filteredStore].checked = store.checked; // Sync the checked state with full store list\r\n }\r\n }); \r\n // Update selectedFilters based on the current store selection\r\n this.selectedFilters.stores = this.stores.filter(store => store.checked);\r\n\r\n // Update localStorage with the latest selection\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n\r\n // Emit updated filters via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n\r\n // Trigger change detection if necessary\r\n this.cd.detectChanges();\r\n}\r\n toggleSelectAllLocations(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredLocations.forEach((location) => (location.checked = isChecked));\r\n this.updateSelectedLocations();\r\n }\r\n\r\n toggleSelectAllStores(event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n \r\n // Apply the selection to both filtered and full list of stores\r\n this.filteredStores.forEach(store => store.checked = checked);\r\n this.stores.forEach(store => {\r\n const filteredStore = this.filteredStores.find(fStore => fStore.storeId === store.storeId);\r\n if (filteredStore) {\r\n store.checked = checked; // Sync the checked state with full store list\r\n }\r\n });\r\n \r\n // Update the selected stores and persist the selection\r\n this.updateSelectedStores();\r\n }\r\n\r\n updateSelectedLocations(): void {\r\n // When locations are selected, fetch the related groups\r\n const selectedCities = this.filteredLocations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n this.filteredLocations.forEach((location:any) => {\r\n let findLocationIndex = this.locations.findIndex((loc:any) => loc.city == location.city);\r\n if(findLocationIndex != -1) {\r\n this.locations[findLocationIndex].checked = location.checked;\r\n }\r\n })\r\n if (selectedCities.length > 0 || !selectedCities.length) {\r\n this.selectedFilters.stores =[];\r\n this.groupsData =[]\r\n this.getGroups(); // Fetch groups based on selected cities\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.location = this.locations;\r\n \r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n this.selectedFilters.location = [];\r\n }\r\n \r\n this.selectedFilters.group = [];\r\n this.filteredStores = []; // Reset stores as well\r\n this.searchGroupText = '';\r\n this.searchStoreText = '';\r\n // this.Opendropdown = false;\r\n }\r\n\r\n toggleSelectAllGroups(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredGroups.forEach((group) => (group.checked = isChecked));\r\n this.updateSelectedGroups();\r\n // if (!isChecked) {\r\n // this.selectedFilters.stores =[];\r\n // // If there are selected groups, fetch the stores based on selected groups\r\n // this.getStore();\r\n // }\r\n }\r\n\r\n updateSelectedGroups(): void {\r\n // Fetch the relevant stores after groups are selected\r\n const selectedGroups = this.filteredGroups\r\n .filter((group) => group.checked)\r\n .map((group) => group.groupName);\r\n\r\n this.filteredGroups.forEach((group:any) => {\r\n let findGroupIndex = this.groupsData.findIndex((item:any) => item.groupName == group.groupName);\r\n if(findGroupIndex != -1) {\r\n this.groupsData[findGroupIndex].checked = group.checked;\r\n }\r\n }) \r\n if (selectedGroups.length > 0 || !selectedGroups.length) {\r\n this.selectedFilters.stores =[];\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.group = this.groupsData;\r\n } else {\r\n // If no groups are selected, clear the stores list\r\n this.filteredStores = [];\r\n \r\n // Also, update localStorage to reflect the cleared store selection\r\n this.selectedFilters.stores = [];\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n \r\n // Emit data via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n }\r\n \r\n // Clear the search store text when groups are updated\r\n this.searchStoreText = '';\r\n }\r\n \r\n\r\n Reset(): void {\r\n setTimeout(()=>{\r\n // Clear selected groups, stores, and locations\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredLocations = []; // Reset locations as well\r\nthis.locations =[];this.groupsData =[]; this.stores =[];\r\n // Clear search input fields\r\n this.searchLocationText = \"\";\r\n this.searchGroupText = \"\";\r\n this.searchStoreText = \"\";\r\nthis.selectedFilters.stores =[];\r\nthis.selectedFilters.group =[];\r\nthis.selectedFilters.location =[];\r\n\r\n \r\n // Fetch locations, groups, and stores again\r\n this.getLocations();\r\n this.getStore();\r\n this.getGroups();\r\n // Reset the filters in selectedFilters\r\n\r\n\r\n // // Once stores are fetched, mark all as checked\r\n // setTimeout(() => {\r\n // this.filteredStores = this.stores.map(store => ({\r\n // ...store,\r\n // checked: true // Mark all stores as checked\r\n // }));\r\n\r\n // // Sync selectedFilters with the updated store state\r\n // this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n // ...store,\r\n // checked: true\r\n // }));\r\n\r\n // Update localStorage with the latest selectedFilters\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n // Emit the reset filters to update other components if needed\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection\r\n this.cd.detectChanges();\r\n // Adding a slight delay to ensure stores are fetched first\r\n \r\n \r\n // Close dropdown after reset if necessary\r\n this.Opendropdown = false;\r\n },100)\r\n }\r\n \r\n \r\n \r\n Apply(): void {\r\n // Close the dropdown\r\n this.Opendropdown = false;\r\n \r\n // Fetch existing filters from localStorage\r\n const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n this.selectedFilters.store = null\r\n // Ensure current selections are reflected\r\n this.selectedFilters.location = this.locations;\r\n this.selectedFilters.group = this.groupsData;\r\n this.selectedFilters.stores = headerFilters.stores ? headerFilters.stores : this.stores;\r\n \r\n \r\n // Store updated filters back in localStorage\r\n localStorage.setItem(\"header-filters\", JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n // Emit the updated filters via the service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger refresh if necessary\r\n // this.gs.manageRefreshTrigger.next(true);\r\n this.cd.detectChanges();\r\n }\r\n \r\n filterLocations(): void { \r\n const searchText = this.searchLocationText.toLowerCase();\r\n \r\n if (searchText) {\r\n // Preserve the checked state during filtering\r\n this.filteredLocations = this.locations\r\n .map(location => ({\r\n ...location,\r\n checked: this.filteredLocations.find(l => l.city === location.city)?.checked || false\r\n }))\r\n .filter(location =>\r\n location?.city?.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Restore the original checked state when search text is cleared\r\n this.filteredLocations = this.locations.map(location => ({\r\n ...location,\r\n checked: this.selectedFilters.location.find((l:any) => l.city === location.city)?.checked || false\r\n }));\r\n }\r\n }\r\n \r\n\r\n filterGroups(): void { \r\n const searchText = this.searchGroupText.toLowerCase();\r\n \r\n if (searchText) {\r\n // Preserve the checked state during filtering\r\n this.filteredGroups = this.groupsData\r\n .map(group => ({\r\n ...group,\r\n checked: this.filteredGroups.find(g => g.groupName === group.groupName)?.checked || false\r\n }))\r\n .filter(group =>\r\n group?.groupName?.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Restore the original checked state when search text is cleared\r\n this.filteredGroups = this.groupsData.map(group => ({\r\n ...group,\r\n checked: this.selectedFilters.group.find((g:any) => g.groupName === group.groupName)?.checked || false\r\n }));\r\n }\r\n }\r\n \r\n \r\n filterStores(): void {\r\n const searchText = this.searchStoreText.toLowerCase();\r\n // Preserve checked states during filtering\r\n if (searchText) {\r\n // Filter based on search text while preserving checked state\r\n this.filteredStores = this.stores\r\n .map(store => ({\r\n ...store,\r\n // Check if the store is already checked in filteredStores, fallback to original stores' checked state\r\n checked: this.selectedFilters.stores.find((s: any) => s.storeId === store.storeId)?.checked || store.checked || false\r\n }))\r\n .filter(store => store.storeName.toLowerCase().includes(searchText));\r\n } else {\r\n // When the search text is cleared, restore the original list with preserved checked states\r\n this.filteredStores = this.stores.map(store => ({\r\n ...store,\r\n // Preserve the checked state based on the selected filters\r\n checked: this.selectedFilters.stores.find((s: any) => s.storeId === store.storeId)?.checked || store.checked || false\r\n }));\r\n }\r\n }\r\n \r\n \r\n \r\n closeDropdown(): void {\r\n this.dropdownOpen = null;\r\n }\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n clickOutside(event: MouseEvent): void {\r\n const clickedInside = (event.target as HTMLElement).closest(\r\n \".dropdown-container\"\r\n );\r\n const clickedoutSide = (event.target as HTMLElement).closest(\r\n \".dropdown1\"\r\n );\r\n if (!clickedInside) {\r\n this.closeDropdown();\r\n }\r\n if(!clickedoutSide) {\r\n this.closeDropdown1();\r\n }\r\n\r\n }\r\n}\r\ninterface City {\r\n city: string;\r\n}\r\n\r\ninterface Location {\r\n city: City;\r\n checked: boolean;\r\n}\r\n\r\n\r\n\r\n// limitedRanges = {\r\n// Today: [dayjs(), dayjs()],\r\n// Yesterday: [dayjs().subtract(1, 'days'), dayjs().subtract(1, 'days')],\r\n// 'This Week': [dayjs().subtract(7, 'days'), dayjs().subtract(1, 'days')],\r\n// 'Last Week': [\r\n// dayjs().subtract(14, 'days').startOf('day'),\r\n// dayjs().subtract(8, 'days').endOf('day'),\r\n// ],\r\n// };\r\n\r\n// ranges: any; // This will hold the currently active range options\r\n\r\n// setRangesBasedOnRoute(): void {\r\n// this.url = this.router.url.split(\"?\")[0].split('/');\r\n// // Change \"your-specific-route\" to the route path where you want the limited options\r\n// if (this.url[2]==='trax') {\r\n// this.ranges = this.limitedRanges;\r\n // const storedFilters = localStorage.getItem(\"header-filters\");\r\n // if (storedFilters) {\r\n // const headerFilters = JSON.parse(storedFilters);\r\n // const startDate = this.dayjs(headerFilters.date.startDate);\r\n // const endDate = this.dayjs(headerFilters.date.endDate);\r\n // const differenceInDays = endDate.diff(startDate, 'days');\r\n // this.selectedFilters.client = headerFilters.clientId;\r\n // this.selectedFilters.clientName = headerFilters.clientName;\r\n // // Set the date range based on the condition\r\n // if (differenceInDays >= 7) {\r\n // // Use the stored date range if it is 7 days or more\r\n // this.selectedDateRange = {\r\n // startDate: this.dayjs(headerFilters.date.endDate).subtract(6, \"days\").format(\"DD-MM-YYYY\"), \r\n // endDate: this.dayjs(headerFilters.date.endDate).format(\"DD-MM-YYYY\"), \r\n // };\r\n // var datetime = {\r\n // startDate: this.dayjs(headerFilters.date.endDate).subtract(6, \"days\").format(\"YYYY-MM-DD\"), \r\n // endDate: this.dayjs(headerFilters.date.endDate).format(\"YYYY-MM-DD\"), \r\n // };\r\n // } else {\r\n // this.selectedDateRange = {\r\n // startDate: this.dayjs(headerFilters.date.startDate).format(\"DD-MM-YYYY\"), \r\n // endDate: this.dayjs(headerFilters.date.endDate).format(\"DD-MM-YYYY\"), \r\n // };\r\n // var datetime = {\r\n // startDate: this.dayjs(headerFilters.date.startDate).format(\"YYYY-MM-DD\"), \r\n // endDate: this.dayjs(headerFilters.date.endDate).format(\"YYYY-MM-DD\"), \r\n // };\r\n // }\r\n // this.selectedFilters =storedFilters;\r\n // this.selectedFilters.date = datetime;\r\n// localStorage.setItem(\"header-filters\", JSON.stringify(this.selectedFilters));\r\n// }\r\n// } else {\r\n// this.ranges = this.fullRanges;\r\n// }\r\n// }","<div class=\"me-3\">\r\n <label *ngIf=\"selectedLocationsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedLocationsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeLocation()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label *ngIf=\"selectedGroupsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedGroupsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeGroup()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label class=\"badge badge-light-default\">{{selectedStoresLabel()}}</label>\r\n</div>\r\n\r\n\r\n<div class=\"wrapper me-3\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n<lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div>\r\n<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput\r\n ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [autoApply]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" (click)=\"resetValidation()\" \r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n<div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"opendropdown($event)\" class=\"btn btn-default mx-2 rounded-3 text-nowrap border-val\">\r\n <!-- <span class=\"me-2\">Filter</span> -->\r\n <svg class=\"pl-3\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-5 dropdown1 position-absolute z-1 end-0\" style=\"z-index: 1 !important;\" (clickOutside)=\"closeDropdown1()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-2\">Filter Options\r\n <button class=\"btn btn-outline w-25 ms-3 btn-resize\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n\r\n <!-- Location Dropdown -->\r\n<div class=\"dropdown-container\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('location')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedLocationsLabel()\"\r\n readonly\r\n placeholder=\"Select locations...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'location'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search locations...\" \r\n [(ngModel)]=\"searchLocationText\" \r\n (ngModelChange)=\"filterLocations()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllLocations\" \r\n [checked]=\"isAllLocationsSelected()\" \r\n (change)=\"toggleSelectAllLocations($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllLocations\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let location of filteredLocations\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"location.city\" \r\n [(ngModel)]=\"location.checked\"\r\n (change)=\"updateSelectedLocations()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"location.city\">\r\n {{ location.city }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Group Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('group')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedGroupsLabel()\" readonly\r\n placeholder=\"Select clusters..\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'group'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search clusters...\" \r\n [(ngModel)]=\"searchGroupText\" \r\n (ngModelChange)=\"filterGroups()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllGroups\" \r\n [checked]=\"isAllGroupsSelected()\" \r\n (change)=\"toggleSelectAllGroups($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllGroups\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let group of filteredGroups\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"group.groupName\"\r\n [(ngModel)]=\"group.checked\"\r\n (change)=\"updateSelectedGroups()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"group.groupName\">\r\n {{ group.groupName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Store Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('store')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\"\r\n [value]=\"selectedStoresLabel()\"\r\n readonly\r\n placeholder=\"Select stores...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'store'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search \" \r\n placeholder=\"Search stores...\" \r\n [(ngModel)]=\"searchStoreText\" \r\n (ngModelChange)=\"filterStores()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllStores\" \r\n [checked]=\"isAllStoresSelected()\" \r\n (change)=\"toggleSelectAllStores($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllStores\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let store of filteredStores\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"store.storeId\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateSelectedStores()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"store.storeId\">\r\n {{ store.storeName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport 'dayjs/locale/en';\r\nimport { AuthService } from '../../../../services/auth.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'lib-single-storedate',\r\n templateUrl: './single-storedate.component.html',\r\n styleUrl: './single-storedate.component.scss'\r\n})\r\nexport class SingleStoredateComponent implements OnInit {\r\n dayjs = dayjs\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs(); \r\n return isValidDate ? 'invalid-date' : false;\r\n}\r\n selectedDateRange: any = {};\r\n storeList:any = []\r\n selectedClient:any\r\n selectedFilters: any = {\r\n client: null,\r\n clientName:null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n };\r\n URL: any;\r\n baseurl:any;\r\n users:any;\r\n headerFilters:any;\r\n dataUser:any;\r\n constructor(private auth:AuthService, private gs:GlobalStateService, private cd:ChangeDetectorRef,private router:Router,private activatedRoute:ActivatedRoute){\r\n }\r\nngOnInit(): void {\r\n this.activatedRoute?.queryParams.subscribe(params => {\r\n this.dataUser = params;\r\n\r\n // Re-check date after params load\r\n this.initializeFilters();\r\n });\r\n\r\n if (\"user-info\" in localStorage) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.users = userData;\r\n }\r\n}\r\n\r\ninitializeFilters(): void {\r\n const clientFromRoute = this.dataUser?.client;\r\n const clientFromHeader = localStorage.getItem(\"header-filters\")\r\n ? JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\").client\r\n : null;\r\n const clientFromUser = this.users?.clientId;\r\n\r\n const headerFilters: any = localStorage.getItem(\"header-filters\")\r\n ? JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\")\r\n : {};\r\n\r\n this.headerFilters = headerFilters;\r\n\r\n // Determine final client ID\r\n const finalClient = clientFromRoute ?? clientFromHeader ?? clientFromUser;\r\n\r\n this.selectedFilters.client = finalClient;\r\n this.selectedFilters.clients = finalClient ? [finalClient] : [];\r\n this.selectedFilters.clientName = headerFilters.clientName || \"\";\r\n this.selectedFilters.store = this.dataUser?.storeId ?? headerFilters.store ?? \"\";\r\n this.selectedFilters.storeName = headerFilters.storeName || \"\";\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n this.selectedFilters.country = headerFilters.country;\r\n this.selectedFilters.stores = headerFilters.stores ?? \"\";\r\n this.selectedFilters.zoneName = headerFilters.zoneName ?? \"\";\r\n // ✅ Handle query param date if present\r\n if (this.dataUser?.date) {\r\n const date = this.dataUser.date;\r\n\r\n this.selectedFilters.date = {\r\n startDate: date,\r\n endDate: date,\r\n };\r\n\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(date, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(date, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n\r\n } else if (headerFilters?.date?.startDate && headerFilters?.date?.endDate) {\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n\r\n } else {\r\n // Default to yesterday\r\n const yesterday = this.dayjs().subtract(1, \"days\");\r\n const formattedDate = {\r\n startDate: yesterday.format(\"YYYY-MM-DD\"),\r\n endDate: yesterday.format(\"YYYY-MM-DD\"),\r\n };\r\n\r\n this.selectedFilters.date = formattedDate;\r\n this.selectedDateRange = {\r\n startDate: yesterday.format(\"DD-MM-YYYY\"),\r\n endDate: yesterday.format(\"DD-MM-YYYY\"),\r\n };\r\n }\r\n\r\n // Save only if valid\r\n if (finalClient && this.selectedFilters.date?.startDate && this.selectedFilters.store) {\r\n localStorage.setItem(\"header-filters\", JSON.stringify(this.selectedFilters));\r\n }\r\n\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n}\r\n\r\n\r\n onClientSelect(event:any){\r\n this.selectedClient = event\r\n }\r\n\r\n\r\n onStartDateChange(event:any){\r\n if(this.dayjs(event.startDate).isValid()){\r\n this.isCustomDate = (m: dayjs.Dayjs) => { \r\n const isValidDate = m > this.dayjs() || m > this.dayjs(event.startDate.add(90, 'days')) ;\r\n return isValidDate ? 'invalid-date' : false;\r\n }\r\n}\r\n}\r\ndatechange(event: any) {\r\n if (event && event.startDate && event.endDate) {\r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = event.endDate\r\n this.selectedDateRange.endDate = event.endDate\r\n var datetime = {\r\n startDate: this.dayjs(event.endDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs(event.endDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n }\r\n } else {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n ); \r\n this.selectedFilters.date = headerFilters.date;\r\n }\r\n\r\nconst clientId = this.users?.clientId ?? this.dataUser?.client ?? this.selectedFilters.client;\r\nthis.selectedFilters.client = clientId;\r\nthis.selectedFilters.clients = clientId ? [clientId] : [this.selectedFilters.client];\r\nthis.selectedFilters.date = this.selectedFilters.date;\r\nthis.selectedFilters.storeName = this.selectedFilters.storeName || '';\r\n\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\nthis.cd.detectChanges();\r\n \r\n}\r\nApply() {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedFilters = headerFilters;\r\n this.selectedFilters.store = this.selectedClient.storeId;\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n}\r\n}\r\n","\r\n<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"width:165px !important\" type=\"text\" matInput ngxDaterangepickerMd [singleDatePicker]=\"true\" [drops]=\"'down'\"\r\n [opens]=\"'left'\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" [autoApply]=\"true\"/>\r\n</div>\r\n\r\n<!-- <div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div> -->","import {\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/en\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { Router } from \"@angular/router\";\r\nimport { AuthService } from \"../../../../services/auth.service\";\r\n\r\n@Component({\r\n selector: 'lib-trax-withoutdate',\r\n templateUrl: './trax-withoutdate.component.html',\r\n styleUrl: './trax-withoutdate.component.scss'\r\n})\r\nexport class TraxWithoutdateComponent implements OnInit {\r\n dayjs = dayjs;\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs();\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n\r\n selectedDateRange: any = { startDate: dayjs().subtract(30, 'days'),\r\n endDate: dayjs().subtract(1, \"days\"),};\r\n selectedFilters: any = {\r\n client: null,\r\n clientName: null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n group: [],\r\n location: [],\r\n };\r\n Opendropdown: boolean = false;\r\n dropdownOpen: string | null = null; // 'location' or 'group'\r\n searchLocationText: string = \"\";\r\n searchGroupText: string = \"\";\r\n locations: any[] = [];\r\n filteredLocations: any[] = [];\r\n groupsData: any[] = [];\r\n filteredGroups: any[] = [];\r\n filteredStores: any[] = [];\r\n stores:any[] = []\r\n searchStoreText:string = '';\r\n clientList:any = []\r\n selectedClient:any\r\n locationLabel: any[]=[];\r\n groupLabel: any[]=[];\r\n users: any;\r\n url: any;\r\n constructor(\r\n private auth: AuthService,private router: Router,\r\n public gs: GlobalStateService,\r\n private cd: ChangeDetectorRef,\r\n ) {}\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick (event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if(!target.closest('.dropdown1')) {\r\n this.Opendropdown = false;\r\n }\r\n }\r\n closeDropdown1(){\r\n this.Opendropdown = false;\r\n }\r\n ngOnInit(): void {\r\n this.url = this.router.url.split(\"?\")[0].split('/');\r\n const user = JSON.parse(localStorage.getItem('user-info') as string);\r\n this.users = user;\r\n this.gs?.manageRefreshTrigger?.subscribe((e) => { \r\n if (e) {\r\n if (user.userType === 'tango') {\r\n this.getClient();\r\n } else{\r\n const storedFilters = localStorage.getItem(\"header-filters\");\r\n if (storedFilters) {\r\n const headerFilters = JSON.parse(storedFilters);\r\n this.filteredStores = headerFilters?.stores.map((store:any) => ({\r\n ...store,\r\n checked: store.checked\r\n }));\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (user.userType === 'tango') {\r\n this.getClient();\r\n } else {\r\n this.getLocations();\r\n this.getGroups();\r\n this.getStore();\r\n }\r\n \r\n const storedFilters = localStorage.getItem(\"header-filters\");\r\n if (storedFilters) {\r\n const headerFilters = JSON.parse(storedFilters);\r\n \r\n // Initialize selectedFilters with defaults or existing values\r\n this.selectedFilters = {\r\n client: headerFilters.client || this.users.client,\r\n clientName: headerFilters.clientName || '',\r\n clients: headerFilters.clients || [],\r\n store: headerFilters.store || null,\r\n date: headerFilters.date || {},\r\n stores: headerFilters.stores || [],\r\n group: headerFilters.group || [],\r\n location: headerFilters.location || []\r\n };\r\n \r\n // Sync filtered data with stored selections\r\n this.filteredLocations = this.syncWithLocalStorage(headerFilters.location);\r\n this.filteredGroups = this.syncWithLocalStorage(headerFilters.group);\r\n this.filteredStores = this.syncWithLocalStorage(headerFilters.stores);\r\n // Format date range if it exists\r\n // Emit data via service and update localStorage\r\nthis.emitAndStoreFilters();\r\n } else {\r\n // Initialize empty states if no header filters are present in localStorage\r\n this.resetFilters();\r\n }\r\n }\r\n private syncWithLocalStorage(items: any[]): any[] {\r\n return items\r\n ? items.map((item: any) => ({\r\n ...item,\r\n checked: item.checked === true\r\n }))\r\n : [];\r\n }\r\n private emitAndStoreFilters(): void {\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n localStorage.setItem(\"header-filters\", JSON.stringify(this.selectedFilters));\r\n }\r\n \r\n private resetFilters(): void {\r\n this.selectedFilters = {\r\n client: null,\r\n clientName: '',\r\n clients: [],\r\n store: null,\r\n date: {},\r\n stores: [],\r\n group: [],\r\n location: []\r\n };\r\n this.filteredLocations = [];\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n }\r\ngetClient(){\r\n this.auth.getClients().subscribe({\r\n next: (e) => {\r\n if (e) {\r\n this.clientList = e.data.result;\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n if (headerFilters.client) {\r\n this.clientList.find((obj: any) => {\r\n if (obj.clientId === headerFilters.client) {\r\n this.selectedClient = obj;\r\n }\r\n });\r\n \r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.stores = headerFilters.stores;\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.stores = headerFilters.stores;\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n }\r\n\r\n\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"4\")\r\n this.cd.detectChanges();\r\n }\r\n },\r\n });\r\n}\r\nonClientSelect(event: any): void {\r\n // Update the selected client\r\n this.selectedClient = event;\r\n // Clear previous filtered data and selections\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredLocations = [];\r\n this.selectedFilters.stores = [];\r\n this.selectedFilters.group = [];\r\n this.selectedFilters.location = [];\r\n\r\n // Fetch header filters from localStorage\r\n const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n \r\n // Update the selected filters with the new client\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName;\r\n \r\n // Remove old store, group, and location data from the header filters\r\n delete headerFilters.stores;\r\n delete headerFilters.groups;\r\n delete headerFilters.location;\r\n \r\n // Fetch new data based on the new client\r\n this.getLocations();\r\n this.getStore();\r\n this.getGroups();\r\n\r\n // Update localStorage with the new client selection and empty filter data\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n this.cd.detectChanges();\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n opendropdown(e:MouseEvent) {\r\n e.stopPropagation();\r\n this.Opendropdown = !this.Opendropdown;\r\n }\r\n getLocations(): void {\r\n // const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n let obj ={\r\n clientId: this.selectedFilters.client ? this.selectedFilters.client :this.users.clientId,\r\n city: [],\r\n group: [],\r\n }\r\n this.auth.getLocation(obj).subscribe({\r\n next: (res: any) => {\r\n let cityList = this.selectedFilters?.location?.filter((location:any) => location.checked).map((loc:any) => loc.city);\r\n // Map the fetched locations with default unchecked state\r\n this.locations = res?.data?.locationData.map((city: any) => ({\r\n city: city.city,\r\n checked: cityList?.includes(city.city) ? true : false,\r\n }));\r\n \r\n // Sync the fetched locations with any stored checked values in localStorage\r\n if (this.selectedFilters.location && Array.isArray(this.selectedFilters.location)) {\r\n this.filteredLocations = this.locations.map(location => {\r\n const matchedLocation = this.selectedFilters.location.find((loc: any) => loc.city === location.city);\r\n return matchedLocation ? { ...location, checked: matchedLocation.checked } : location;\r\n });\r\n } else {\r\n this.filteredLocations = this.locations;\r\n }\r\n\r\n if(this.searchLocationText) {\r\n this.filteredLocations = this.locations.filter((location:any) => location.city.toLowerCase().includes(this.searchLocationText.toLowerCase()))\r\n }\r\n const selectedLocations = this.locations.filter((location) => location.checked).map((location) => location.city);\r\n if (selectedLocations.length > 0) {\r\n setTimeout(()=>{\r\n this.getStore(); // Fetch stores based on selected groups\r\n },1000)\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch locations\", err);\r\n },\r\n });\r\n }\r\n \r\n isAllLocationsSelected(): boolean {\r\n return this.filteredLocations.every(location => location.checked);\r\n\r\n }\r\n \r\n selectedLocationsLabel(): string {\r\n const selectedLocations = this.locationLabel = this.searchLocationText.length ? this.locations\r\n .filter(location => location.checked).map(location => location.city) : this.filteredLocations\r\n .filter(location => location.checked).map(location => location.city);\r\n return selectedLocations.length === 0\r\n ? ''\r\n : selectedLocations.length === 1\r\n ? selectedLocations[0]\r\n : `${selectedLocations.length} locations`;\r\n }\r\n\r\n removeLocation(): void {\r\n this.Reset();\r\n }\r\n \r\n getGroups(): void { \r\n const city = this.locations\r\n .filter(location => location.checked)\r\n .map(location => location.city);\r\n const obj = { city,clientId:this.selectedFilters.client ? this.selectedFilters.client :this.users.clientId,group:[] };\r\n this.auth.getGroups(obj).subscribe({\r\n next: (res: any) => {\r\n let checkedGroup = this.selectedFilters?.group?.filter((group:any) => group.checked).map((group:any) => group.groupName);\r\n const combinedGroups = res?.data?.groupData?.map((groupName: any) => ({\r\n groupName: groupName.groupName,\r\n checked: checkedGroup?.includes(groupName.groupName) ? true : false,\r\n }));\r\n this.groupsData = combinedGroups;\r\n if(this.searchGroupText.length) {\r\n this.filteredGroups = combinedGroups.filter((item:any) => item.groupName.toLowerCase().includes(this.searchGroupText));\r\n }\r\n else {\r\n this.filteredGroups = combinedGroups;\r\n }\r\n \r\n // Auto-fetch stores when groups are selected\r\n const selectedGroups = this.groupsData.filter((group) => group.checked).map((group) => group.groupName);\r\n if (selectedGroups.length > 0) {\r\n setTimeout(()=>{\r\n this.getStore(); // Fetch stores based on selected groups\r\n },1000)\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch groups\", err);\r\n },\r\n });\r\n }\r\n\r\n toggleDropdown(type: 'location' | 'group' | 'store'): void {\r\n if (this.dropdownOpen === type) {\r\n // If the dropdown is open, close it and avoid resetting the selected values unnecessarily\r\n this.dropdownOpen = null;\r\n } else {\r\n // Open the specific dropdown and handle data fetching only if necessary\r\n this.dropdownOpen = type;\r\n \r\n if (type === 'group') {\r\n // Fetch groups only if there are selected cities and no active search text\r\n const selectedCities = this.locations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n \r\n // Fetch groups only if locations are selected, no search text exists, and dropdown is opened\r\n if (this.filteredLocations.length > 0 || (selectedCities.length > 0 && !this.searchGroupText.trim())) {\r\n this.getGroups();\r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n }\r\n }\r\n\r\n if (type === 'store') {\r\n // Fetch stores only if not already fetched and no search text is active\r\n if ((!this.filteredStores || this.filteredStores.length === 0) && !this.searchStoreText.trim()) {\r\n this.getStore();\r\n } \r\n }\r\n }\r\n }\r\n \r\n \r\n handleGroupDropdownClick(): void {\r\n if (this.dropdownOpen === 'group') {\r\n this.resetSelectedGroups();\r\n }\r\n this.toggleDropdown('group');\r\n }\r\n\r\n resetSelectedGroups(): void {\r\n this.filteredGroups.forEach((group) => (group.checked = false));\r\n this.searchGroupText = \"\";\r\n }\r\n selectedGroupsLabel(): string {\r\n const selectedGroups = this.groupLabel = this.searchGroupText.length ? this.groupsData.filter((group) => group.checked) : this.filteredGroups.filter((group) => group.checked);\r\n return selectedGroups.length === 0\r\n ? \"\"\r\n : selectedGroups.length === 1\r\n ? selectedGroups[0].groupName\r\n : `${selectedGroups.length} Clusters`;\r\n }\r\n removeGroup(): void {\r\n this.Reset();\r\n \r\n }\r\n \r\n\r\n isAllGroupsSelected(): boolean {\r\n \r\n return this.filteredGroups.length ? this.filteredGroups.every((group) => group.checked) : false;\r\n }\r\n \r\n getStore(): void {\r\n const city = this.locations\r\n .filter(location => location.checked)\r\n .map(location => location.city);\r\n \r\n const group = this.groupsData\r\n .filter(group => group.checked)\r\n .map(group => group.groupName);\r\n \r\n const data = { city, clusters:group, clientId: this.users.clientId ? this.users.clientId : this.selectedFilters.client };\r\n \r\n this.auth.getHeadertraxStores(data).subscribe({\r\n next: (res: any) => {\r\n if(res &&res.code ===200){\r\n this.stores = res.data.storesData; \r\n // Retrieve checked store IDs from selectedFilters\r\n const checkedStoreIds = this.selectedFilters?.stores\r\n ? this.selectedFilters.stores.filter((store: any) => store.checked).map((store: any) => store.storeId)\r\n : [];\r\n\r\n this.stores.forEach(store => {\r\n if (checkedStoreIds.includes(store.storeId)) {\r\n store.checked = true; // Sync the checked state with full store list\r\n }\r\n });\r\n \r\n \r\n // Map the stores and retain the 'checked' status\r\n if(this.searchStoreText.length) {\r\n this.filteredStores = this.stores?.filter(store => store.storeName.toLowerCase().includes(this.searchStoreText));\r\n }\r\n else {\r\n this.filteredStores = this.stores;\r\n }\r\n // Ensure selectedFilters is in sync with filteredStores\r\n if (!this.selectedFilters.stores || !this.selectedFilters.stores.length) {\r\n this.stores.forEach(store => {\r\n store.checked = true; // Sync the checked state with full store list\r\n });\r\n \r\n // No previously selected stores, mark all as checked\r\n this.filteredStores = this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: true\r\n }));\r\n } else {\r\n // Update selectedFilters to reflect current state of stores\r\n this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: store.checked\r\n }));\r\n }\r\n // Update localStorage with the latest selectedFilters\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n \r\n // Emit data via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection to reflect changes in the UI\r\n this.cd.detectChanges();\r\n } else {\r\n this.stores =[];\r\n this.selectedFilters.stores=[];\r\n this.filteredStores =[];\r\n this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: false\r\n }));\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n }\r\n },\r\n error: (err) => {\r\n this.stores =[];\r\n this.selectedFilters.stores=[];\r\n this.filteredStores =[];\r\n this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: false\r\n }));\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n console.error(\"Failed to fetch stores\", err);\r\n },\r\n });\r\n }\r\n \r\n\r\n resetSelectedStores(): void {\r\n this.filteredStores.forEach((store) => (store.checked = false));\r\n this.searchStoreText = \"\";\r\n }\r\n\r\n selectedStoresLabel(): string {\r\n const selectedStores = this.searchStoreText.length ? this.stores.filter((store) => store.checked) : this.filteredStores.filter((store) => store.checked);\r\n return selectedStores.length === 0\r\n ? \"0 Stores\"\r\n : selectedStores.length === 1\r\n ? selectedStores[0].storeName\r\n : `${selectedStores.length} Stores`;\r\n }\r\n\r\n isAllStoresSelected(): boolean {\r\n return this.filteredStores.length > 0 && this.filteredStores.every(store => store.checked);\r\n }\r\n// Method to handle dropdown item selection\r\nupdateSelectedStores(): void {\r\n this.filteredStores.forEach(store => {\r\n const filteredStore = this.stores.findIndex(fStore => fStore.storeId === store.storeId);\r\n if (filteredStore != -1) {\r\n this.stores[filteredStore].checked = store.checked; // Sync the checked state with full store list\r\n }\r\n }); \r\n // Update selectedFilters based on the current store selection\r\n this.selectedFilters.stores = this.stores.filter(store => store.checked);\r\n\r\n // Update localStorage with the latest selection\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n\r\n // Emit updated filters via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n\r\n // Trigger change detection if necessary\r\n this.cd.detectChanges();\r\n}\r\n toggleSelectAllLocations(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredLocations.forEach((location) => (location.checked = isChecked));\r\n this.updateSelectedLocations();\r\n }\r\n\r\n toggleSelectAllStores(event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n \r\n // Apply the selection to both filtered and full list of stores\r\n this.filteredStores.forEach(store => store.checked = checked);\r\n this.stores.forEach(store => {\r\n const filteredStore = this.filteredStores.find(fStore => fStore.storeId === store.storeId);\r\n if (filteredStore) {\r\n store.checked = checked; // Sync the checked state with full store list\r\n }\r\n });\r\n \r\n // Update the selected stores and persist the selection\r\n this.updateSelectedStores();\r\n }\r\n\r\n updateSelectedLocations(): void {\r\n // When locations are selected, fetch the related groups\r\n const selectedCities = this.filteredLocations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n this.filteredLocations.forEach((location:any) => {\r\n let findLocationIndex = this.locations.findIndex((loc:any) => loc.city == location.city);\r\n if(findLocationIndex != -1) {\r\n this.locations[findLocationIndex].checked = location.checked;\r\n }\r\n })\r\n if (selectedCities.length > 0 || !selectedCities.length) {\r\n this.selectedFilters.stores =[];\r\n this.groupsData =[]\r\n this.getGroups(); // Fetch groups based on selected cities\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.location = this.locations;\r\n \r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n this.selectedFilters.location = [];\r\n }\r\n \r\n this.selectedFilters.group = [];\r\n this.filteredStores = []; // Reset stores as well\r\n this.searchGroupText = '';\r\n this.searchStoreText = '';\r\n // this.Opendropdown = false;\r\n }\r\n\r\n toggleSelectAllGroups(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredGroups.forEach((group) => (group.checked = isChecked));\r\n this.updateSelectedGroups();\r\n // if (!isChecked) {\r\n // this.selectedFilters.stores =[];\r\n // // If there are selected groups, fetch the stores based on selected groups\r\n // this.getStore();\r\n // }\r\n }\r\n\r\n updateSelectedGroups(): void {\r\n // Fetch the relevant stores after groups are selected\r\n const selectedGroups = this.filteredGroups\r\n .filter((group) => group.checked)\r\n .map((group) => group.groupName);\r\n\r\n this.filteredGroups.forEach((group:any) => {\r\n let findGroupIndex = this.groupsData.findIndex((item:any) => item.groupName == group.groupName);\r\n if(findGroupIndex != -1) {\r\n this.groupsData[findGroupIndex].checked = group.checked;\r\n }\r\n }) \r\n if (selectedGroups.length > 0 || !selectedGroups.length) {\r\n this.selectedFilters.stores =[];\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.group = this.groupsData;\r\n } else {\r\n // If no groups are selected, clear the stores list\r\n this.filteredStores = [];\r\n \r\n // Also, update localStorage to reflect the cleared store selection\r\n this.selectedFilters.stores = [];\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n \r\n // Emit data via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n }\r\n \r\n // Clear the search store text when groups are updated\r\n this.searchStoreText = '';\r\n }\r\n \r\n Reset(): void {\r\n setTimeout(()=>{\r\n // Clear selected groups, stores, and locations\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredLocations = []; // Reset locations as well\r\nthis.locations =[];this.groupsData =[]; this.stores =[];\r\n // Clear search input fields\r\n this.searchLocationText = \"\";\r\n this.searchGroupText = \"\";\r\n this.searchStoreText = \"\";\r\nthis.selectedFilters.stores =[];\r\nthis.selectedFilters.group =[];\r\nthis.selectedFilters.location =[];\r\n\r\n \r\n // Fetch locations, groups, and stores again\r\n this.getLocations();\r\n this.getStore();\r\n this.getGroups();\r\n // Reset the filters in selectedFilters\r\n\r\n\r\n // // Once stores are fetched, mark all as checked\r\n // setTimeout(() => {\r\n // this.filteredStores = this.stores.map(store => ({\r\n // ...store,\r\n // checked: true // Mark all stores as checked\r\n // }));\r\n\r\n // // Sync selectedFilters with the updated store state\r\n // this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n // ...store,\r\n // checked: true\r\n // }));\r\n\r\n // Update localStorage with the latest selectedFilters\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n // Emit the reset filters to update other components if needed\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection\r\n this.cd.detectChanges();\r\n // Adding a slight delay to ensure stores are fetched first\r\n \r\n \r\n // Close dropdown after reset if necessary\r\n this.Opendropdown = false;\r\n },100)\r\n }\r\n \r\n \r\n \r\n Apply(): void {\r\n // Close the dropdown\r\n this.Opendropdown = false;\r\n \r\n // Fetch existing filters from localStorage\r\n const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n this.selectedFilters.store = null\r\n // Ensure current selections are reflected\r\n this.selectedFilters.location = this.locations;\r\n this.selectedFilters.group = this.groupsData;\r\n this.selectedFilters.stores = headerFilters.stores ? headerFilters.stores : this.stores;\r\n \r\n \r\n // Store updated filters back in localStorage\r\n localStorage.setItem(\"header-filters\", JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n // Emit the updated filters via the service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger refresh if necessary\r\n // this.gs.manageRefreshTrigger.next(true);\r\n this.cd.detectChanges();\r\n }\r\n \r\n filterLocations(): void { \r\n const searchText = this.searchLocationText.toLowerCase();\r\n \r\n if (searchText) {\r\n // Preserve the checked state during filtering\r\n this.filteredLocations = this.locations\r\n .map(location => ({\r\n ...location,\r\n checked: this.filteredLocations.find(l => l.city === location.city)?.checked || false\r\n }))\r\n .filter(location =>\r\n location?.city?.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Restore the original checked state when search text is cleared\r\n this.filteredLocations = this.locations.map(location => ({\r\n ...location,\r\n checked: this.selectedFilters.location.find((l:any) => l.city === location.city)?.checked || false\r\n }));\r\n }\r\n }\r\n \r\n\r\n filterGroups(): void { \r\n const searchText = this.searchGroupText.toLowerCase();\r\n \r\n if (searchText) {\r\n // Preserve the checked state during filtering\r\n this.filteredGroups = this.groupsData\r\n .map(group => ({\r\n ...group,\r\n checked: this.filteredGroups.find(g => g.groupName === group.groupName)?.checked || false\r\n }))\r\n .filter(group =>\r\n group?.groupName?.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Restore the original checked state when search text is cleared\r\n this.filteredGroups = this.groupsData.map(group => ({\r\n ...group,\r\n checked: this.selectedFilters.group.find((g:any) => g.groupName === group.groupName)?.checked || false\r\n }));\r\n }\r\n }\r\n \r\n \r\n filterStores(): void {\r\n const searchText = this.searchStoreText.toLowerCase();\r\n // Preserve checked states during filtering\r\n if (searchText) {\r\n // Filter based on search text while preserving checked state\r\n this.filteredStores = this.stores\r\n .map(store => ({\r\n ...store,\r\n // Check if the store is already checked in filteredStores, fallback to original stores' checked state\r\n checked: this.selectedFilters.stores.find((s: any) => s.storeId === store.storeId)?.checked || store.checked || false\r\n }))\r\n .filter(store => store.storeName.toLowerCase().includes(searchText));\r\n } else {\r\n // When the search text is cleared, restore the original list with preserved checked states\r\n this.filteredStores = this.stores.map(store => ({\r\n ...store,\r\n // Preserve the checked state based on the selected filters\r\n checked: this.selectedFilters.stores.find((s: any) => s.storeId === store.storeId)?.checked || store.checked || false\r\n }));\r\n }\r\n }\r\n \r\n \r\n \r\n closeDropdown(): void {\r\n this.dropdownOpen = null;\r\n }\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n clickOutside(event: MouseEvent): void {\r\n const clickedInside = (event.target as HTMLElement).closest(\r\n \".dropdown-container\"\r\n );\r\n const clickedoutSide = (event.target as HTMLElement).closest(\r\n \".dropdown1\"\r\n );\r\n if (!clickedInside) {\r\n this.closeDropdown();\r\n }\r\n if(!clickedoutSide) {\r\n this.closeDropdown1();\r\n }\r\n\r\n }\r\n}\r\ninterface City {\r\n city: string;\r\n}\r\n\r\ninterface Location {\r\n city: City;\r\n checked: boolean;\r\n}\r\n\r\n\r\n","<div class=\"me-3\">\r\n <label *ngIf=\"selectedLocationsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedLocationsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeLocation()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label *ngIf=\"selectedGroupsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedGroupsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeGroup()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label class=\"badge badge-light-default\">{{selectedStoresLabel()}}</label>\r\n</div>\r\n\r\n\r\n<div class=\"wrapper me-3\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n<lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div>\r\n\r\n<div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"opendropdown($event)\" class=\"btn btn-default mx-2 rounded-3 text-nowrap border-val\">\r\n <!-- <span class=\"me-2\">Filter</span> -->\r\n <svg class=\"pl-3\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-5 dropdown1 position-absolute z-1 end-0\" style=\"z-index: 1 !important;\" (clickOutside)=\"closeDropdown1()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-2\">Filter Options\r\n <button class=\"btn btn-outline w-25 ms-3 btn-resize\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n\r\n <!-- Location Dropdown -->\r\n<div class=\"dropdown-container\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('location')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedLocationsLabel()\"\r\n readonly\r\n placeholder=\"Select locations...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'location'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search locations...\" \r\n [(ngModel)]=\"searchLocationText\" \r\n (ngModelChange)=\"filterLocations()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllLocations\" \r\n [checked]=\"isAllLocationsSelected()\" \r\n (change)=\"toggleSelectAllLocations($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllLocations\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let location of filteredLocations\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"location.city\" \r\n [(ngModel)]=\"location.checked\"\r\n (change)=\"updateSelectedLocations()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"location.city\">\r\n {{ location.city }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Group Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('group')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedGroupsLabel()\" readonly\r\n placeholder=\"Select clusters..\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'group'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search clusters...\" \r\n [(ngModel)]=\"searchGroupText\" \r\n (ngModelChange)=\"filterGroups()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllGroups\" \r\n [checked]=\"isAllGroupsSelected()\" \r\n (change)=\"toggleSelectAllGroups($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllGroups\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let group of filteredGroups\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"group.groupName\"\r\n [(ngModel)]=\"group.checked\"\r\n (change)=\"updateSelectedGroups()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"group.groupName\">\r\n {{ group.groupName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Store Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('store')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\"\r\n [value]=\"selectedStoresLabel()\"\r\n readonly\r\n placeholder=\"Select stores...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'store'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search \" \r\n placeholder=\"Search stores...\" \r\n [(ngModel)]=\"searchStoreText\" \r\n (ngModelChange)=\"filterStores()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllStores\" \r\n [checked]=\"isAllStoresSelected()\" \r\n (change)=\"toggleSelectAllStores($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllStores\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let store of filteredStores\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"store.storeId\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateSelectedStores()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"store.storeId\">\r\n {{ store.storeName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/en\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\nimport { AuthService } from \"../../../../services/auth.service\";\r\n@Component({\r\n selector: 'lib-traffic-nob',\r\n templateUrl: './traffic-nob.component.html',\r\n styleUrl: './traffic-nob.component.scss'\r\n})\r\nexport class TrafficNobComponent implements OnInit {\r\n dayjs = dayjs;\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs();\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n\r\n selectedDateRange: any = { startDate: dayjs().subtract(30, 'days'),\r\n endDate: dayjs().subtract(1, \"days\"),};\r\n selectedFilters: any = {\r\n client: null,\r\n clientName: null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n group: [],\r\n location: [],\r\n };\r\n Opendropdown: boolean = false;\r\n dropdownOpen: string | null = null; // 'location' or 'group'\r\n searchLocationText: string = \"\";\r\n searchGroupText: string = \"\";\r\n locations: any[] = [];\r\n filteredLocations: any[] = [];\r\n groupsData: any[] = [];\r\n filteredGroups: any[] = [];\r\n filteredStores: any[] = [];\r\n stores:any[] = []\r\n searchStoreText:string = '';\r\n clientList:any = []\r\n selectedClient:any\r\n locationLabel: any[]=[];\r\n groupLabel: any[]=[];\r\n users: any;\r\n url: any;\r\n constructor(\r\n private auth: AuthService, private router: Router,\r\n public gs: GlobalStateService,\r\n private cd: ChangeDetectorRef,\r\n ) {}\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick (event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if(!target.closest('.dropdown1')) {\r\n this.Opendropdown = false;\r\n }\r\n }\r\n closeDropdown1(){\r\n this.Opendropdown = false;\r\n }\r\n ngOnInit(): void {\r\n this.url = this.router.url.split(\"?\")[0].split('/');\r\n const user = JSON.parse(localStorage.getItem('user-info') as string);\r\n this.users = user;\r\n this.gs?.manageRefreshTrigger?.subscribe((e) => { \r\n if (e) {\r\n if (user.userType === 'tango') {\r\n this.getClient();\r\n } else{\r\n const storedFilters = localStorage.getItem(\"header-filters\");\r\n if (storedFilters) {\r\n const headerFilters = JSON.parse(storedFilters);\r\n this.filteredStores = headerFilters?.stores.map((store:any) => ({\r\n ...store,\r\n checked: store.checked\r\n }));\r\n }\r\n }\r\n }\r\n });\r\n \r\n // Fetch client data if the user is of type 'tango'\r\n if (user.userType === 'tango') {\r\n this.getClient();\r\n } else {\r\n this.getLocations();\r\n this.getGroups();\r\n this.getStore();\r\n// this.emitAndStoreFilters();\r\n// console.log(\"1\")\r\n }\r\n \r\n // Load filters from localStorage if they exist\r\n const storedFilters = localStorage.getItem(\"header-filters\");\r\n if (storedFilters) {\r\n const headerFilters = JSON.parse(storedFilters);\r\n \r\n // Initialize selectedFilters with defaults or existing values\r\n this.selectedFilters = {\r\n client: headerFilters.client || this.users.client,\r\n clientName: headerFilters.clientName || '',\r\n clients: headerFilters.clients || [],\r\n store: headerFilters.store || null,\r\n date: headerFilters.date || {},\r\n stores: headerFilters.stores || [],\r\n group: headerFilters.group || [],\r\n location: headerFilters.location || []\r\n };\r\n \r\n // Sync filtered data with stored selections\r\n this.filteredLocations = this.syncWithLocalStorage(headerFilters.location);\r\n this.filteredGroups = this.syncWithLocalStorage(headerFilters.group);\r\n this.filteredStores = this.syncWithLocalStorage(headerFilters.stores);\r\n \r\n // Format date range if it exists\r\n if (headerFilters.date) {\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(headerFilters.date.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n } else {\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(this.selectedDateRange.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(this.selectedDateRange.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n }\r\n // console.log(\"3\")\r\n // Emit data via service and update localStorage\r\nthis.emitAndStoreFilters();\r\n } else {\r\n // Initialize empty states if no header filters are present in localStorage\r\n this.resetFilters();\r\n // console.log(\"2\")\r\n }\r\n }\r\n private syncWithLocalStorage(items: any[]): any[] {\r\n return items\r\n ? items.map((item: any) => ({\r\n ...item,\r\n checked: item.checked === true\r\n }))\r\n : [];\r\n }\r\n private emitAndStoreFilters(): void {\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n localStorage.setItem(\"header-filters\", JSON.stringify(this.selectedFilters));\r\n // console.log(\"1\")\r\n }\r\n \r\n /**\r\n * Reset selectedFilters and all related arrays to empty states\r\n */\r\n private resetFilters(): void {\r\n this.selectedFilters = {\r\n client: null,\r\n clientName: '',\r\n clients: [],\r\n store: null,\r\n date: {},\r\n stores: [],\r\n group: [],\r\n location: []\r\n };\r\n this.filteredLocations = [];\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n }\r\ngetClient(){\r\n this.auth.getClients().subscribe({\r\n next: (e) => {\r\n if (e) {\r\n this.clientList = e.data.result;\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n if (headerFilters.client) {\r\n this.clientList.find((obj: any) => {\r\n if (obj.clientId === headerFilters.client) {\r\n this.selectedClient = obj;\r\n }\r\n });\r\n \r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.stores = headerFilters.stores;\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"2\")\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.stores = headerFilters.stores;\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"3\")\r\n this.cd.detectChanges();\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n }\r\n\r\n\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"4\")\r\n this.cd.detectChanges();\r\n }\r\n },\r\n });\r\n}\r\nonClientSelect(event: any): void {\r\n // Update the selected client\r\n this.selectedClient = event;\r\n // Clear previous filtered data and selections\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredLocations = [];\r\n this.selectedFilters.stores = [];\r\n this.selectedFilters.group = [];\r\n this.selectedFilters.location = [];\r\n\r\n // Fetch header filters from localStorage\r\n const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n \r\n // Update the selected filters with the new client\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName;\r\n \r\n // Remove old store, group, and location data from the header filters\r\n delete headerFilters.stores;\r\n delete headerFilters.groups;\r\n delete headerFilters.location;\r\n \r\n // Fetch new data based on the new client\r\n this.getLocations();\r\n this.getStore();\r\n this.getGroups();\r\n\r\n // Update localStorage with the new client selection and empty filter data\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n // Emit data to the global service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection to reflect UI changes\r\n this.cd.detectChanges();\r\n}\r\n\r\n\r\n\r\nranges:any = {\r\n Today: [dayjs(), dayjs()],\r\n Yesterday: [dayjs().subtract(1, 'days'), dayjs().subtract(1, 'days')],\r\n 'This Week': [dayjs().subtract(7, 'days'), dayjs().subtract(1, 'days')],\r\n 'Last Week': [\r\n dayjs().subtract(14, 'days').startOf('day'),\r\n dayjs().subtract(8, 'days').endOf('day'),\r\n ],\r\n 'This Month': [dayjs().subtract(30, 'days'), dayjs().subtract(1, 'days')],\r\n 'Last Month': [\r\n dayjs().subtract(1, 'month').startOf('month'),\r\n dayjs().subtract(1, 'month').endOf('month'),\r\n ],\r\n};\r\n\r\n onStartDateChange(event: any) {\r\n if (this.dayjs(event.startDate).isValid()) {\r\n \r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() || m > this.dayjs(event.startDate.add(90, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n }\r\n }\r\n\r\n datechange(event: any) {\r\n if (event && event.startDate && event.endDate) {\r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = event.startDate;\r\n this.selectedDateRange.endDate = event.endDate;\r\n var datetime = {\r\n startDate: this.dayjs(event.startDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ),\r\n endDate: this.dayjs(event.endDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n window.location.reload()\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n }\r\n } \r\n }\r\n opendropdown(e:MouseEvent) {\r\n e.stopPropagation();\r\n this.Opendropdown = !this.Opendropdown;\r\n }\r\n getLocations(): void {\r\n // const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n let obj ={\r\n clientId: this.selectedFilters.client ? this.selectedFilters.client :this.users.clientId,\r\n city: [],\r\n group: [],\r\n }\r\n this.auth.getLocation(obj).subscribe({\r\n next: (res: any) => {\r\n let cityList = this.selectedFilters?.location?.filter((location:any) => location.checked).map((loc:any) => loc.city);\r\n // Map the fetched locations with default unchecked state\r\n this.locations = res?.data?.locationData.map((city: any) => ({\r\n city: city.city,\r\n checked: cityList?.includes(city.city) ? true : false,\r\n }));\r\n \r\n // Sync the fetched locations with any stored checked values in localStorage\r\n if (this.selectedFilters.location && Array.isArray(this.selectedFilters.location)) {\r\n this.filteredLocations = this.locations.map(location => {\r\n const matchedLocation = this.selectedFilters.location.find((loc: any) => loc.city === location.city);\r\n return matchedLocation ? { ...location, checked: matchedLocation.checked } : location;\r\n });\r\n } else {\r\n this.filteredLocations = this.locations;\r\n }\r\n\r\n if(this.searchLocationText) {\r\n this.filteredLocations = this.locations.filter((location:any) => location.city.toLowerCase().includes(this.searchLocationText.toLowerCase()))\r\n }\r\n const selectedLocations = this.locations.filter((location) => location.checked).map((location) => location.city);\r\n if (selectedLocations.length > 0) {\r\n setTimeout(()=>{\r\n this.getStore(); // Fetch stores based on selected groups\r\n },1000)\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch locations\", err);\r\n },\r\n });\r\n }\r\n \r\n isAllLocationsSelected(): boolean {\r\n return this.filteredLocations.every(location => location.checked);\r\n\r\n }\r\n \r\n selectedLocationsLabel(): string {\r\n const selectedLocations = this.locationLabel = this.searchLocationText.length ? this.locations\r\n .filter(location => location.checked).map(location => location.city) : this.filteredLocations\r\n .filter(location => location.checked).map(location => location.city);\r\n return selectedLocations.length === 0\r\n ? ''\r\n : selectedLocations.length === 1\r\n ? selectedLocations[0]\r\n : `${selectedLocations.length} locations`;\r\n }\r\n\r\n removeLocation(): void {\r\n this.Reset();\r\n }\r\n \r\n getGroups(): void { \r\n const city = this.locations\r\n .filter(location => location.checked)\r\n .map(location => location.city);\r\n const obj = { city,clientId:this.selectedFilters.client ? this.selectedFilters.client :this.users.clientId,group:[] };\r\n this.auth.getGroups(obj).subscribe({\r\n next: (res: any) => {\r\n let checkedGroup = this.selectedFilters?.group?.filter((group:any) => group.checked).map((group:any) => group.groupName);\r\n const combinedGroups = res?.data?.groupData?.map((groupName: any) => ({\r\n groupName: groupName.groupName,\r\n checked: checkedGroup?.includes(groupName.groupName) ? true : false,\r\n }));\r\n this.groupsData = combinedGroups;\r\n if(this.searchGroupText.length) {\r\n this.filteredGroups = combinedGroups.filter((item:any) => item.groupName.toLowerCase().includes(this.searchGroupText));\r\n }\r\n else {\r\n this.filteredGroups = combinedGroups;\r\n }\r\n \r\n // Auto-fetch stores when groups are selected\r\n const selectedGroups = this.groupsData.filter((group) => group.checked).map((group) => group.groupName);\r\n if (selectedGroups.length > 0) {\r\n setTimeout(()=>{\r\n this.getStore(); // Fetch stores based on selected groups\r\n },1000)\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch groups\", err);\r\n },\r\n });\r\n }\r\n\r\n toggleDropdown(type: 'location' | 'group' | 'store'): void {\r\n if (this.dropdownOpen === type) {\r\n // If the dropdown is open, close it and avoid resetting the selected values unnecessarily\r\n this.dropdownOpen = null;\r\n } else {\r\n // Open the specific dropdown and handle data fetching only if necessary\r\n this.dropdownOpen = type;\r\n \r\n if (type === 'group') {\r\n // Fetch groups only if there are selected cities and no active search text\r\n const selectedCities = this.locations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n \r\n // Fetch groups only if locations are selected, no search text exists, and dropdown is opened\r\n if (this.filteredLocations.length > 0 || (selectedCities.length > 0 && !this.searchGroupText.trim())) {\r\n this.getGroups();\r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n }\r\n }\r\n\r\n if (type === 'store') {\r\n // Fetch stores only if not already fetched and no search text is active\r\n if ((!this.filteredStores || this.filteredStores.length === 0) && !this.searchStoreText.trim()) {\r\n this.getStore();\r\n } \r\n }\r\n }\r\n }\r\n \r\n \r\n handleGroupDropdownClick(): void {\r\n if (this.dropdownOpen === 'group') {\r\n this.resetSelectedGroups();\r\n }\r\n this.toggleDropdown('group');\r\n }\r\n\r\n resetSelectedGroups(): void {\r\n this.filteredGroups.forEach((group) => (group.checked = false));\r\n this.searchGroupText = \"\";\r\n }\r\n selectedGroupsLabel(): string {\r\n const selectedGroups = this.groupLabel = this.searchGroupText.length ? this.groupsData.filter((group) => group.checked) : this.filteredGroups.filter((group) => group.checked);\r\n return selectedGroups.length === 0\r\n ? \"\"\r\n : selectedGroups.length === 1\r\n ? selectedGroups[0].groupName\r\n : `${selectedGroups.length} Clusters`;\r\n }\r\n removeGroup(): void {\r\n this.Reset();\r\n \r\n }\r\n \r\n\r\n isAllGroupsSelected(): boolean {\r\n \r\n return this.filteredGroups.length ? this.filteredGroups.every((group) => group.checked) : false;\r\n }\r\n \r\n getStore(): void {\r\n const city = this.locations\r\n .filter(location => location.checked)\r\n .map(location => location.city);\r\n \r\n const group = this.groupsData\r\n .filter(group => group.checked)\r\n .map(group => group.groupName);\r\n \r\n const data = { city, clusters:group, clientId: this.users.clientId ? this.users.clientId : this.selectedFilters.client };\r\n \r\n this.auth.getHeaderStores(data).subscribe({\r\n next: (res: any) => {\r\n if(res &&res.code ===200){\r\n this.stores = res.data.storesData; \r\n // Retrieve checked store IDs from selectedFilters\r\n const checkedStoreIds = this.selectedFilters?.stores\r\n ? this.selectedFilters.stores.filter((store: any) => store.checked).map((store: any) => store.storeId)\r\n : [];\r\n\r\n this.stores.forEach(store => {\r\n if (checkedStoreIds.includes(store.storeId)) {\r\n store.checked = true; // Sync the checked state with full store list\r\n }\r\n });\r\n \r\n \r\n // Map the stores and retain the 'checked' status\r\n if(this.searchStoreText.length) {\r\n this.filteredStores = this.stores?.filter(store => store.storeName.toLowerCase().includes(this.searchStoreText));\r\n }\r\n else {\r\n this.filteredStores = this.stores;\r\n }\r\n // Ensure selectedFilters is in sync with filteredStores\r\n if (!this.selectedFilters.stores || !this.selectedFilters.stores.length) {\r\n this.stores.forEach(store => {\r\n store.checked = true; // Sync the checked state with full store list\r\n });\r\n \r\n // No previously selected stores, mark all as checked\r\n this.filteredStores = this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: true\r\n }));\r\n } else {\r\n // Update selectedFilters to reflect current state of stores\r\n this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: store.checked\r\n }));\r\n }\r\n // Update localStorage with the latest selectedFilters\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n \r\n // Emit data via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection to reflect changes in the UI\r\n this.cd.detectChanges();\r\n } else {\r\n this.stores =[];\r\n this.selectedFilters.stores=[];\r\n this.filteredStores =[];\r\n this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: false\r\n }));\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n }\r\n },\r\n error: (err) => {\r\n this.stores =[]; \r\n this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n ...store,\r\n checked: false\r\n }));\r\n this.filteredStores =[];\r\n this.selectedFilters.stores=[];\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n console.error(\"Failed to fetch stores\", err);\r\n },\r\n });\r\n }\r\n \r\n\r\n resetSelectedStores(): void {\r\n this.filteredStores.forEach((store) => (store.checked = false));\r\n this.searchStoreText = \"\";\r\n }\r\n\r\n selectedStoresLabel(): string {\r\n const selectedStores = this.searchStoreText.length ? this.stores.filter((store) => store.checked) : this.filteredStores.filter((store) => store.checked);\r\n return selectedStores.length === 0\r\n ? \"0 Stores\"\r\n : selectedStores.length === 1\r\n ? selectedStores[0].storeName\r\n : `${selectedStores.length} Stores`;\r\n }\r\n\r\n isAllStoresSelected(): boolean {\r\n return this.filteredStores.length > 0 && this.filteredStores.every(store => store.checked);\r\n }\r\n// Method to handle dropdown item selection\r\nupdateSelectedStores(): void {\r\n this.filteredStores.forEach(store => {\r\n const filteredStore = this.stores.findIndex(fStore => fStore.storeId === store.storeId);\r\n if (filteredStore != -1) {\r\n this.stores[filteredStore].checked = store.checked; // Sync the checked state with full store list\r\n }\r\n }); \r\n // Update selectedFilters based on the current store selection\r\n this.selectedFilters.stores = this.stores.filter(store => store.checked);\r\n\r\n // Update localStorage with the latest selection\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n\r\n // Emit updated filters via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n\r\n // Trigger change detection if necessary\r\n this.cd.detectChanges();\r\n}\r\n toggleSelectAllLocations(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredLocations.forEach((location) => (location.checked = isChecked));\r\n this.updateSelectedLocations();\r\n }\r\n\r\n toggleSelectAllStores(event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n \r\n // Apply the selection to both filtered and full list of stores\r\n this.filteredStores.forEach(store => store.checked = checked);\r\n this.stores.forEach(store => {\r\n const filteredStore = this.filteredStores.find(fStore => fStore.storeId === store.storeId);\r\n if (filteredStore) {\r\n store.checked = checked; // Sync the checked state with full store list\r\n }\r\n });\r\n \r\n // Update the selected stores and persist the selection\r\n this.updateSelectedStores();\r\n }\r\n\r\n updateSelectedLocations(): void {\r\n // When locations are selected, fetch the related groups\r\n const selectedCities = this.filteredLocations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n this.filteredLocations.forEach((location:any) => {\r\n let findLocationIndex = this.locations.findIndex((loc:any) => loc.city == location.city);\r\n if(findLocationIndex != -1) {\r\n this.locations[findLocationIndex].checked = location.checked;\r\n }\r\n })\r\n if (selectedCities.length > 0 || !selectedCities.length) {\r\n this.selectedFilters.stores =[];\r\n this.groupsData =[]\r\n this.getGroups(); // Fetch groups based on selected cities\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.location = this.locations;\r\n \r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n this.selectedFilters.location = [];\r\n }\r\n \r\n this.selectedFilters.group = [];\r\n this.filteredStores = []; // Reset stores as well\r\n this.searchGroupText = '';\r\n this.searchStoreText = '';\r\n // this.Opendropdown = false;\r\n }\r\n\r\n toggleSelectAllGroups(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredGroups.forEach((group) => (group.checked = isChecked));\r\n this.updateSelectedGroups();\r\n // if (!isChecked) {\r\n // this.selectedFilters.stores =[];\r\n // // If there are selected groups, fetch the stores based on selected groups\r\n // this.getStore();\r\n // }\r\n }\r\n\r\n updateSelectedGroups(): void {\r\n // Fetch the relevant stores after groups are selected\r\n const selectedGroups = this.filteredGroups\r\n .filter((group) => group.checked)\r\n .map((group) => group.groupName);\r\n\r\n this.filteredGroups.forEach((group:any) => {\r\n let findGroupIndex = this.groupsData.findIndex((item:any) => item.groupName == group.groupName);\r\n if(findGroupIndex != -1) {\r\n this.groupsData[findGroupIndex].checked = group.checked;\r\n }\r\n }) \r\n if (selectedGroups.length > 0 || !selectedGroups.length) {\r\n this.selectedFilters.stores =[];\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.group = this.groupsData;\r\n } else {\r\n // If no groups are selected, clear the stores list\r\n this.filteredStores = [];\r\n \r\n // Also, update localStorage to reflect the cleared store selection\r\n this.selectedFilters.stores = [];\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n \r\n // Emit data via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n }\r\n \r\n // Clear the search store text when groups are updated\r\n this.searchStoreText = '';\r\n }\r\n \r\n\r\n Reset(): void {\r\n setTimeout(()=>{\r\n // Clear selected groups, stores, and locations\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredLocations = []; // Reset locations as well\r\nthis.locations =[];this.groupsData =[]; this.stores =[];\r\n // Clear search input fields\r\n this.searchLocationText = \"\";\r\n this.searchGroupText = \"\";\r\n this.searchStoreText = \"\";\r\nthis.selectedFilters.stores =[];\r\nthis.selectedFilters.group =[];\r\nthis.selectedFilters.location =[];\r\n\r\n \r\n // Fetch locations, groups, and stores again\r\n this.getLocations();\r\n this.getStore();\r\n this.getGroups();\r\n // Reset the filters in selectedFilters\r\n\r\n\r\n // // Once stores are fetched, mark all as checked\r\n // setTimeout(() => {\r\n // this.filteredStores = this.stores.map(store => ({\r\n // ...store,\r\n // checked: true // Mark all stores as checked\r\n // }));\r\n\r\n // // Sync selectedFilters with the updated store state\r\n // this.selectedFilters.stores = this.filteredStores.map(store => ({\r\n // ...store,\r\n // checked: true\r\n // }));\r\n\r\n // Update localStorage with the latest selectedFilters\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n // Emit the reset filters to update other components if needed\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection\r\n this.cd.detectChanges();\r\n // Adding a slight delay to ensure stores are fetched first\r\n \r\n \r\n // Close dropdown after reset if necessary\r\n this.Opendropdown = false;\r\n },100)\r\n }\r\n \r\n \r\n \r\n Apply(): void {\r\n // Close the dropdown\r\n this.Opendropdown = false;\r\n \r\n // Fetch existing filters from localStorage\r\n const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n this.selectedFilters.store = null\r\n // Ensure current selections are reflected\r\n this.selectedFilters.location = this.locations;\r\n this.selectedFilters.group = this.groupsData;\r\n this.selectedFilters.stores = headerFilters.stores ? headerFilters.stores : this.stores;\r\n \r\n \r\n // Store updated filters back in localStorage\r\n localStorage.setItem(\"header-filters\", JSON.stringify(this.selectedFilters));\r\n window.location.reload()\r\n // Emit the updated filters via the service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger refresh if necessary\r\n // this.gs.manageRefreshTrigger.next(true);\r\n this.cd.detectChanges();\r\n }\r\n \r\n filterLocations(): void { \r\n const searchText = this.searchLocationText.toLowerCase();\r\n \r\n if (searchText) {\r\n // Preserve the checked state during filtering\r\n this.filteredLocations = this.locations\r\n .map(location => ({\r\n ...location,\r\n checked: this.filteredLocations.find(l => l.city === location.city)?.checked || false\r\n }))\r\n .filter(location =>\r\n location?.city?.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Restore the original checked state when search text is cleared\r\n this.filteredLocations = this.locations.map(location => ({\r\n ...location,\r\n checked: this.selectedFilters.location.find((l:any) => l.city === location.city)?.checked || false\r\n }));\r\n }\r\n }\r\n \r\n\r\n filterGroups(): void { \r\n const searchText = this.searchGroupText.toLowerCase();\r\n \r\n if (searchText) {\r\n // Preserve the checked state during filtering\r\n this.filteredGroups = this.groupsData\r\n .map(group => ({\r\n ...group,\r\n checked: this.filteredGroups.find(g => g.groupName === group.groupName)?.checked || false\r\n }))\r\n .filter(group =>\r\n group?.groupName?.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Restore the original checked state when search text is cleared\r\n this.filteredGroups = this.groupsData.map(group => ({\r\n ...group,\r\n checked: this.selectedFilters.group.find((g:any) => g.groupName === group.groupName)?.checked || false\r\n }));\r\n }\r\n }\r\n \r\n \r\n filterStores(): void {\r\n const searchText = this.searchStoreText.toLowerCase();\r\n // Preserve checked states during filtering\r\n if (searchText) {\r\n // Filter based on search text while preserving checked state\r\n this.filteredStores = this.stores\r\n .map(store => ({\r\n ...store,\r\n // Check if the store is already checked in filteredStores, fallback to original stores' checked state\r\n checked: this.selectedFilters.stores.find((s: any) => s.storeId === store.storeId)?.checked || store.checked || false\r\n }))\r\n .filter(store => store.storeName.toLowerCase().includes(searchText));\r\n } else {\r\n // When the search text is cleared, restore the original list with preserved checked states\r\n this.filteredStores = this.stores.map(store => ({\r\n ...store,\r\n // Preserve the checked state based on the selected filters\r\n checked: this.selectedFilters.stores.find((s: any) => s.storeId === store.storeId)?.checked || store.checked || false\r\n }));\r\n }\r\n }\r\n \r\n \r\n \r\n closeDropdown(): void {\r\n this.dropdownOpen = null;\r\n }\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n clickOutside(event: MouseEvent): void {\r\n const clickedInside = (event.target as HTMLElement).closest(\r\n \".dropdown-container\"\r\n );\r\n const clickedoutSide = (event.target as HTMLElement).closest(\r\n \".dropdown1\"\r\n );\r\n if (!clickedInside) {\r\n this.closeDropdown();\r\n }\r\n if(!clickedoutSide) {\r\n this.closeDropdown1();\r\n }\r\n\r\n }\r\n}\r\ninterface City {\r\n city: string;\r\n}\r\n\r\ninterface Location {\r\n city: City;\r\n checked: boolean;\r\n}\r\n\r\n\r\n","<div class=\"me-3\">\r\n <label *ngIf=\"selectedLocationsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedLocationsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeLocation()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label *ngIf=\"selectedGroupsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedGroupsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeGroup()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label class=\"badge badge-light-default\">{{selectedStoresLabel()}}</label>\r\n</div>\r\n\r\n<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput\r\n ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [autoApply]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n<div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"opendropdown($event)\" class=\"btn btn-default mx-2 rounded-3 text-nowrap border-val\">\r\n <!-- <span class=\"me-2\">Filter</span> -->\r\n <svg class=\"pl-3\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-5 dropdown1 position-absolute z-1 end-0\" style=\"z-index: 1 !important;\" (clickOutside)=\"closeDropdown1()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-2\">Filter Options\r\n <button class=\"btn btn-outline w-25 ms-3 btn-resize\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n\r\n <!-- Location Dropdown -->\r\n<div class=\"dropdown-container\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('location')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedLocationsLabel()\"\r\n readonly\r\n placeholder=\"Select locations...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'location'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search locations...\" \r\n [(ngModel)]=\"searchLocationText\" \r\n (ngModelChange)=\"filterLocations()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllLocations\" \r\n [checked]=\"isAllLocationsSelected()\" \r\n (change)=\"toggleSelectAllLocations($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllLocations\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let location of filteredLocations\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"location.city\" \r\n [(ngModel)]=\"location.checked\"\r\n (change)=\"updateSelectedLocations()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"location.city\">\r\n {{ location.city }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Group Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('group')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedGroupsLabel()\" readonly\r\n placeholder=\"Select clusters..\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'group'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search clusters...\" \r\n [(ngModel)]=\"searchGroupText\" \r\n (ngModelChange)=\"filterGroups()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllGroups\" \r\n [checked]=\"isAllGroupsSelected()\" \r\n (change)=\"toggleSelectAllGroups($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllGroups\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let group of filteredGroups\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"group.groupName\"\r\n [(ngModel)]=\"group.checked\"\r\n (change)=\"updateSelectedGroups()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"group.groupName\">\r\n {{ group.groupName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Store Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('store')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\"\r\n [value]=\"selectedStoresLabel()\"\r\n readonly\r\n placeholder=\"Select stores...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'store'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search \" \r\n placeholder=\"Search stores...\" \r\n [(ngModel)]=\"searchStoreText\" \r\n (ngModelChange)=\"filterStores()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllStores\" \r\n [checked]=\"isAllStoresSelected()\" \r\n (change)=\"toggleSelectAllStores($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllStores\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let store of filteredStores\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"store.storeId\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateSelectedStores()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"store.storeId\">\r\n {{ store.storeName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/en\";\r\nimport { AuthService } from \"../../../../services/auth.service\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\n@Component({\r\n selector: \"lib-metrics-header\",\r\n templateUrl: \"./metrics-header.component.html\",\r\n styleUrl: \"./metrics-header.component.scss\",\r\n})\r\nexport class MetricsHeaderComponent implements OnInit {\r\n dayjs = dayjs;\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs();\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n\r\n selectedDateRange: any = {\r\n startDate: dayjs().subtract(30, \"days\"),\r\n endDate: dayjs().subtract(1, \"days\"),\r\n };\r\n selectedFilters: any = {\r\n client: null,\r\n clientName: null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n group: [],\r\n location: [],\r\n country: [],\r\n zoneName: [],\r\n };\r\n Opendropdown: boolean = false;\r\n dropdownOpen: string | null = null; // 'location' or 'group'\r\n searchLocationText: string = \"\";\r\n searchGroupText: string = \"\";\r\n locations: any[] = [];\r\n filteredLocations: any[] = [];\r\n groupsData: any[] = [];\r\n filteredGroups: any[] = [];\r\n filteredStores: any[] = [];\r\n filteredZones: any[] = [];\r\n stores: any[] = [];\r\n zones: any[] = [];\r\n searchStoreText: string = \"\";\r\n searchZoneText: string = \"\";\r\n clientList: any = [];\r\n selectedClient: any;\r\n locationLabel: any[] = [];\r\n groupLabel: any[] = [];\r\n users: any;\r\n url: any;\r\n filteredCountries: any[] = [];\r\n countryLabel: any[] = [];\r\n searchCountryText: string = \"\";\r\n countries: any[] = [];\r\n constructor(\r\n private auth: AuthService,\r\n private router: Router,\r\n public gs: GlobalStateService,\r\n private cd: ChangeDetectorRef\r\n ) {}\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest(\".dropdown2\")) {\r\n this.Opendropdown = false;\r\n }\r\n }\r\n closeDropdown1() {\r\n this.Opendropdown = false;\r\n }\r\n ngOnInit(): void {\r\n // this.setRangesBasedOnRoute();\r\n\r\n // Listen for route changes to update ranges\r\n // this.router?.events?.subscribe((event) => {\r\n // if (event instanceof NavigationEnd) {\r\n // this.setRangesBasedOnRoute();\r\n // }\r\n // });\r\n this.url = this.router.url.split(\"?\")[0].split(\"/\");\r\n const user = JSON.parse(localStorage.getItem(\"user-info\") as string);\r\n this.users = user;\r\n this.gs?.manageRefreshTrigger?.subscribe((e) => {\r\n if (e) {\r\n if (user.userType === \"tango\") {\r\n this.getClient();\r\n } else {\r\n const storedFilters = localStorage.getItem(\"header-filters\");\r\n if (storedFilters) {\r\n const headerFilters = JSON.parse(storedFilters);\r\n this.filteredStores = headerFilters?.stores.map((store: any) => ({\r\n ...store,\r\n checked: store.checked,\r\n }));\r\n this.filteredZones = headerFilters?.zoneName.map((store: any) => ({\r\n ...store,\r\n checked: store.checked,\r\n }));\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Fetch client data if the user is of type 'tango'\r\n if (user.userType === \"tango\") {\r\n this.getClient();\r\n } else {\r\n this.getCountry();\r\n this.getLocations();\r\n this.getGroups();\r\n this.getStore();\r\n const clientFilters = localStorage.getItem(\"client-details\");\r\n if (clientFilters) {\r\n const headerclientFilters = JSON.parse(clientFilters);\r\n this.selectedClient = {\r\n trafficDateRange: headerclientFilters.trafficDateRange,\r\n };\r\n }\r\n }\r\n\r\n // Load filters from localStorage if they exist\r\n const storedFilters = localStorage.getItem(\"header-filters\");\r\n if (storedFilters) {\r\n const headerFilters = JSON.parse(storedFilters);\r\n\r\n // Initialize selectedFilters with defaults or existing values\r\n this.selectedFilters = {\r\n client: headerFilters.client || this.users.client,\r\n clientName: headerFilters.clientName || \"\",\r\n clients: headerFilters.clients || [],\r\n store: headerFilters.store || null,\r\n date: headerFilters.date || {},\r\n stores: headerFilters.stores || [],\r\n group: headerFilters.group || [],\r\n location: headerFilters.location || [],\r\n country: headerFilters.country || [],\r\n zoneName: headerFilters.zoneName || [],\r\n };\r\n\r\n // Sync filtered data with stored selections\r\n this.filteredCountries = this.syncWithLocalStorage(headerFilters.country);\r\n this.filteredLocations = this.syncWithLocalStorage(\r\n headerFilters.location\r\n );\r\n this.filteredGroups = this.syncWithLocalStorage(headerFilters.group);\r\n this.filteredStores = this.syncWithLocalStorage(headerFilters.stores);\r\n this.filteredZones = this.syncWithLocalStorage(headerFilters.zoneName);\r\n // Format date range if it exists\r\n if (headerFilters.date) {\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(\r\n headerFilters.date.startDate,\r\n \"YYYY-MM-DD\"\r\n ).format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\r\n \"DD-MM-YYYY\"\r\n ),\r\n };\r\n } else {\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(\r\n this.selectedDateRange.startDate,\r\n \"YYYY-MM-DD\"\r\n ).format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(\r\n this.selectedDateRange.endDate,\r\n \"YYYY-MM-DD\"\r\n ).format(\"DD-MM-YYYY\"),\r\n };\r\n }\r\n // console.log(\"3\")\r\n // Emit data via service and update localStorage\r\n this.emitAndStoreFilters();\r\n } else {\r\n // Initialize empty states if no header filters are present in localStorage\r\n this.resetFilters();\r\n // console.log(\"2\")\r\n }\r\n }\r\n private syncWithLocalStorage(items: any[]): any[] {\r\n return items\r\n ? items.map((item: any) => ({\r\n ...item,\r\n checked: item.checked === true,\r\n }))\r\n : [];\r\n }\r\n\r\n private emitAndStoreFilters(): void {\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n // console.log(\"1\")\r\n }\r\n\r\n /**\r\n * Reset selectedFilters and all related arrays to empty states\r\n */\r\n private resetFilters(): void {\r\n this.selectedFilters = {\r\n client: null,\r\n clientName: \"\",\r\n clients: [],\r\n store: null,\r\n date: {},\r\n stores: [],\r\n group: [],\r\n location: [],\r\n country: [],\r\n zoneName: [],\r\n };\r\n this.filteredLocations = [];\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredCountries = [];\r\n this.filteredZones = [];\r\n }\r\n getClient() {\r\n this.auth.getClients().subscribe({\r\n next: (e) => {\r\n if (e) {\r\n this.clientList = e.data.result;\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n if (headerFilters.client) {\r\n this.clientList.find((obj: any) => {\r\n if (obj.clientId === headerFilters.client) {\r\n this.selectedClient = obj;\r\n }\r\n });\r\n // const startDate = this.dayjs(headerFilters.date.startDate);\r\n // const endDate = this.dayjs(headerFilters.date.endDate);\r\n // const differenceInDays = endDate.diff(startDate, 'days');\r\n // if (differenceInDays >= 90 && this.selectedClient?.trafficDateRange === 90) {\r\n // this.selectedDateRange = {\r\n // startDate: this.dayjs(headerFilters.date.startDate, \"YYYY-MM-DD\").subtract(-90, 'days').format(\"DD-MM-YYYY\"),\r\n // endDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n // };\r\n // } else {\r\n // this.selectedDateRange = {\r\n // startDate: this.dayjs(this.selectedDateRange.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n // endDate: this.dayjs(this.selectedDateRange.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n // };\r\n // }\r\n\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.clients = [headerFilters.client];\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.stores = headerFilters.stores;\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n this.selectedFilters.country = headerFilters.country;\r\n this.selectedFilters.zoneName = headerFilters.zoneName;\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"2\")\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getCountry();\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName;\r\n this.selectedFilters.clients = [this.selectedClient.clientId];\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.stores = headerFilters.stores;\r\n this.selectedFilters.group = headerFilters.group;\r\n this.selectedFilters.location = headerFilters.location;\r\n this.selectedFilters.country = headerFilters.country;\r\n this.selectedFilters.zoneName = headerFilters.zoneName;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"3\")\r\n this.cd.detectChanges();\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getCountry();\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n }\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName;\r\n // Ensure locations and groups are loaded before fetching stores\r\n this.getCountry();\r\n this.getLocations();\r\n this.getGroups();\r\n // Fetch stores only after locations and groups are set\r\n this.getStore();\r\n this.getZone();\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // console.log(\"4\")\r\n this.cd.detectChanges();\r\n }\r\n this.getUserInfo(this.selectedFilters.client);\r\n },\r\n });\r\n }\r\n getUserInfo(client: any) {\r\n let obj = {\r\n clientId: client ? client : \"\",\r\n };\r\n if (client) {\r\n this.auth.getHeaderUsers(obj).subscribe({\r\n next: (e) => {\r\n localStorage.setItem(\r\n \"usersEmail-info\",\r\n JSON.stringify(e?.data?.userEmailData || [])\r\n );\r\n },\r\n });\r\n }\r\n }\r\n onClientSelect(event: any): void {\r\n // Update the selected client\r\n this.selectedClient = event;\r\n // Clear previous filtered data and selections\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredLocations = [];\r\n this.selectedFilters.stores = [];\r\n this.selectedFilters.group = [];\r\n this.selectedFilters.location = [];\r\n this.selectedFilters.country = [];\r\n this.selectedFilters.zoneName = [];\r\n\r\n // Fetch header filters from localStorage\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n\r\n // Update the selected filters with the new client\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName;\r\n\r\n // Remove old store, group, and location data from the header filters\r\n delete headerFilters.stores;\r\n delete headerFilters.groups;\r\n delete headerFilters.location;\r\n delete headerFilters.country;\r\n delete headerFilters.zoneName;\r\n\r\n // Fetch new data based on the new client\r\n this.getCountry();\r\n this.getLocations();\r\n this.getStore();\r\n this.getGroups();\r\n\r\n // Update localStorage with the new client selection and empty filter data\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n window.location.reload();\r\n // Emit data to the global service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger change detection to reflect UI changes\r\n this.cd.detectChanges();\r\n }\r\n\r\n ranges: any = {\r\n Today: [dayjs(), dayjs()],\r\n Yesterday: [dayjs().subtract(1, \"days\"), dayjs().subtract(1, \"days\")],\r\n \"This Week\": [dayjs().subtract(7, \"days\"), dayjs().subtract(1, \"days\")],\r\n \"Last Week\": [\r\n dayjs().subtract(14, \"days\").startOf(\"day\"),\r\n dayjs().subtract(8, \"days\").endOf(\"day\"),\r\n ],\r\n \"This Month\": [dayjs().subtract(30, \"days\"), dayjs().subtract(1, \"days\")],\r\n \"Last Month\": [\r\n dayjs().subtract(1, \"month\").startOf(\"month\"),\r\n dayjs().subtract(1, \"month\").endOf(\"month\"),\r\n ],\r\n };\r\n\r\n onStartDateChange(event: any) {\r\n if (this.dayjs(event.startDate).isValid()) {\r\n if (this.selectedClient?.traxDateRange === 90) {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() || m > this.dayjs(event.startDate.add(90, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n } else {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() ||\r\n m > this.dayjs(event.startDate.add(180, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n }\r\n }\r\n }\r\n\r\n datechange(event: any) {\r\n if (event && event.startDate && event.endDate) {\r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = event.startDate;\r\n this.selectedDateRange.endDate = event.endDate;\r\n var datetime = {\r\n startDate: this.dayjs(event.startDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ),\r\n endDate: this.dayjs(event.endDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n window.location.reload();\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n }\r\n }\r\n }\r\n opendropdown(e: MouseEvent) {\r\n e.stopPropagation();\r\n this.Opendropdown = !this.Opendropdown;\r\n }\r\n getLocations(): void {\r\n const country = this.countries\r\n .filter((country) => country.checked)\r\n .map((country) => country.country);\r\n // const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n let obj = {\r\n clientId: this.selectedFilters.client\r\n ? this.selectedFilters.client\r\n : this.users.clientId,\r\n country,\r\n city: [],\r\n group: [],\r\n };\r\n this.auth.getLocation(obj).subscribe({\r\n next: (res: any) => {\r\n let cityList = this.selectedFilters?.location\r\n ?.filter((location: any) => location.checked)\r\n .map((loc: any) => loc.city);\r\n // Map the fetched locations with default unchecked state\r\n this.locations = res?.data?.locationData.map((city: any) => ({\r\n city: city.city,\r\n // checked: cityList?.length ? cityList.includes(city.city) : true,\r\n checked: cityList?.includes(city.city) ? true : false,\r\n }));\r\n\r\n // Sync the fetched locations with any stored checked values in localStorage\r\n if (\r\n this.selectedFilters.location &&\r\n Array.isArray(this.selectedFilters.location)\r\n ) {\r\n this.filteredLocations = this.locations.map((location) => {\r\n const matchedLocation = this.selectedFilters.location.find(\r\n (loc: any) => loc.city === location.city\r\n );\r\n return matchedLocation\r\n ? { ...location, checked: matchedLocation.checked }\r\n : location;\r\n });\r\n } else {\r\n this.filteredLocations = this.locations;\r\n }\r\n\r\n if (this.searchLocationText) {\r\n this.filteredLocations = this.locations.filter((location: any) =>\r\n location.city\r\n .toLowerCase()\r\n .includes(this.searchLocationText.toLowerCase())\r\n );\r\n }\r\n const selectedLocations = this.locations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n if (selectedLocations.length > 0) {\r\n setTimeout(() => {\r\n this.getGroups();\r\n this.getStore(); // Fetch stores based on selected groups\r\n }, 1000);\r\n }\r\n\r\n if (!selectedLocations.length && country.length) {\r\n this.getGroups();\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch locations\", err);\r\n },\r\n });\r\n }\r\n\r\n isAllLocationsSelected(): boolean {\r\n return this.filteredLocations.every((location) => location.checked);\r\n }\r\n\r\n selectedLocationsLabel(): string {\r\n const selectedLocations = (this.locationLabel = this.searchLocationText\r\n .length\r\n ? this.locations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city)\r\n : this.filteredLocations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city));\r\n return selectedLocations.length === 0\r\n ? \"\"\r\n : selectedLocations.length === 1\r\n ? selectedLocations[0]\r\n : `${selectedLocations.length} Region`;\r\n }\r\n\r\n removeLocation(): void {\r\n this.Reset();\r\n }\r\n\r\n getGroups(): void {\r\n const country = this.countries\r\n .filter((country) => country.checked)\r\n .map((country) => country.country);\r\n let city;\r\n city = this.locations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n\r\n if (!city.length && country.length) {\r\n city = this.locations.map((loc) => loc.city);\r\n }\r\n const obj = {\r\n country,\r\n city,\r\n clientId: this.selectedFilters.client\r\n ? this.selectedFilters.client\r\n : this.users.clientId,\r\n group: [],\r\n };\r\n this.auth.getGroups(obj).subscribe({\r\n next: (res: any) => {\r\n let checkedGroup = this.selectedFilters?.group\r\n ?.filter((group: any) => group.checked)\r\n .map((group: any) => group.groupName);\r\n const combinedGroups = res?.data?.groupData?.map((groupName: any) => ({\r\n groupName: groupName.groupName,\r\n checked: checkedGroup?.includes(groupName.groupName) ? true : false,\r\n // checked: checkedGroup?.length ? checkedGroup.includes(groupName.groupName) : true,\r\n }));\r\n this.groupsData = combinedGroups;\r\n if (this.searchGroupText.length) {\r\n this.filteredGroups = combinedGroups.filter((item: any) =>\r\n item.groupName.toLowerCase().includes(this.searchGroupText)\r\n );\r\n } else {\r\n this.filteredGroups = combinedGroups;\r\n }\r\n\r\n // Auto-fetch stores when groups are selected\r\n const selectedGroups = this.groupsData\r\n .filter((group) => group.checked)\r\n .map((group) => group.groupName);\r\n if (selectedGroups.length > 0) {\r\n setTimeout(() => {\r\n this.getStore(); // Fetch stores based on selected groups\r\n }, 1000);\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch groups\", err);\r\n },\r\n });\r\n }\r\n\r\n toggleDropdown(\r\n type: \"country\" | \"location\" | \"group\" | \"store\" | \"zone\"\r\n ): void {\r\n if (this.dropdownOpen === type) {\r\n // If the dropdown is open, close it and avoid resetting the selected values unnecessarily\r\n this.dropdownOpen = null;\r\n } else {\r\n // Open the specific dropdown and handle data fetching only if necessary\r\n this.dropdownOpen = type;\r\n\r\n if (type === \"country\") {\r\n // Fetch countries only if not already fetched and no search text exists\r\n if (\r\n (!this.filteredCountries || this.filteredCountries.length === 0) &&\r\n !this.searchCountryText.trim()\r\n ) {\r\n this.getCountry();\r\n }\r\n }\r\n\r\n if (type === \"group\") {\r\n // Fetch groups only if there are selected cities and no active search text\r\n const selectedCities = this.locations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n\r\n // Fetch groups only if locations are selected, no search text exists, and dropdown is opened\r\n if (\r\n this.filteredLocations.length > 0 ||\r\n (selectedCities.length > 0 && !this.searchGroupText.trim())\r\n ) {\r\n this.getGroups();\r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n }\r\n }\r\n\r\n if (type === \"store\") {\r\n // Fetch stores only if not already fetched and no search text is active\r\n if (\r\n (!this.filteredStores || this.filteredStores.length === 0) &&\r\n !this.searchStoreText.trim()\r\n ) {\r\n this.getStore();\r\n }\r\n }\r\n\r\n if (type === \"zone\") {\r\n // Fetch stores only if not already fetched and no search text is active\r\n if (\r\n (!this.filteredZones || this.filteredZones.length === 0) &&\r\n !this.searchZoneText.trim()\r\n ) {\r\n this.getZone();\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleGroupDropdownClick(): void {\r\n if (this.dropdownOpen === \"group\") {\r\n this.resetSelectedGroups();\r\n }\r\n this.toggleDropdown(\"group\");\r\n }\r\n\r\n resetSelectedGroups(): void {\r\n this.filteredGroups.forEach((group) => (group.checked = false));\r\n this.searchGroupText = \"\";\r\n }\r\n selectedGroupsLabel(): string {\r\n const selectedGroups = (this.groupLabel = this.searchGroupText.length\r\n ? this.groupsData.filter((group) => group.checked)\r\n : this.filteredGroups.filter((group) => group.checked));\r\n return selectedGroups.length === 0\r\n ? \"\"\r\n : selectedGroups.length === 1\r\n ? selectedGroups[0].groupName\r\n : `${selectedGroups.length} Clusters`;\r\n }\r\n removeGroup(): void {\r\n this.Reset();\r\n }\r\n\r\n isAllGroupsSelected(): boolean {\r\n return this.filteredGroups.length\r\n ? this.filteredGroups.every((group) => group.checked)\r\n : false;\r\n }\r\n\r\n getStore(): void {\r\n const country = this.countries\r\n .filter((country) => country.checked)\r\n .map((country) => country.country);\r\n const city = this.locations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n const group = this.groupsData\r\n .filter((group) => group.checked)\r\n .map((group) => group.groupName);\r\n\r\n const data = {\r\n country,\r\n city,\r\n clusters: group,\r\n clientId: this.users.clientId || this.selectedFilters.client,\r\n };\r\n\r\n this.auth.getHeaderStores(data).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n // Initialize stores from API response\r\n this.stores = res.data.storesData;\r\n // Check if there are previously selected stores\r\n const checkedStoreIds = this.selectedFilters?.stores\r\n ? this.selectedFilters.stores\r\n .filter((store: any) => store.checked)\r\n .map((store: any) => store.storeId)\r\n : [];\r\n // Sync the `checked` state\r\n this.stores.forEach((store) => {\r\n store.checked = checkedStoreIds.length\r\n ? checkedStoreIds.includes(store.storeId) // Use previous selection\r\n : true; // Default to true if no previous selection\r\n });\r\n\r\n // Apply search filter if search text is present\r\n if (this.searchStoreText.length) {\r\n this.filteredStores = this.stores.filter((store) =>\r\n store.storeName\r\n .toLowerCase()\r\n .includes(this.searchStoreText.toLowerCase())\r\n );\r\n } else {\r\n this.filteredStores = [...this.stores];\r\n }\r\n\r\n // Update `selectedFilters.stores` to reflect the current state\r\n this.selectedFilters.stores = this.filteredStores.map((store) => ({\r\n storeId: store.storeId,\r\n storeName: store.storeName,\r\n checked: store.checked,\r\n }));\r\n // this.selectedFilters.country = country;\r\n\r\n // Save updated filters to localStorage\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.getZone();\r\n // Trigger UI change detection\r\n this.cd.detectChanges();\r\n } else {\r\n // Handle empty or error response\r\n this.clearStoresState();\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch stores\", err);\r\n this.clearStoresState();\r\n },\r\n });\r\n }\r\n\r\n getZone() {\r\n const country = this.countries\r\n .filter((country) => country.checked)\r\n .map((country) => country.country);\r\n\r\n const city = this.locations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n\r\n const group = this.groupsData\r\n .filter((group) => group.checked)\r\n .map((group) => group.groupName);\r\n\r\n const storeId = this.filteredStores\r\n .filter((group) => group.checked)\r\n .map((group) => group.storeId);\r\n\r\n const data = {\r\n country,\r\n city,\r\n clusters: group,\r\n clientId: this.users.clientId || this.selectedFilters.client,\r\n storeId: storeId,\r\n };\r\n\r\n this.auth.getHeaderZone(data).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n // Initialize zones with Overall Store first, unchecked by default\r\n this.zones = [\r\n { _id: \"overall\", tagName: \"Overall Store\", checked: false },\r\n ...(res?.data?.zoneData?.map((zone: any) => ({\r\n _id: zone._id,\r\n tagName: zone.tagName,\r\n checked: false, // initialize unchecked; will update below\r\n })) || []),\r\n ];\r\n\r\n // Get previously selected zone IDs (checked ones)\r\n const checkedStoreIds = this.selectedFilters?.zoneName\r\n ? this.selectedFilters.zoneName\r\n .filter((zone: any) => zone.checked)\r\n .map((zone: any) => zone._id)\r\n : [];\r\n\r\n // Sync checked state with previous selections or default:\r\n // If no previous selection, Overall Store unchecked, others checked\r\n this.zones.forEach((zone) => {\r\n if (checkedStoreIds.length) {\r\n zone.checked = checkedStoreIds.includes(zone._id);\r\n } else {\r\n zone.checked = zone._id !== \"overall\";\r\n }\r\n });\r\n\r\n // Apply search filter if any\r\n if (this.searchZoneText.length) {\r\n this.filteredZones = this.zones.filter((zone) =>\r\n zone.tagName\r\n .toLowerCase()\r\n .includes(this.searchZoneText.toLowerCase())\r\n );\r\n } else {\r\n this.filteredZones = [...this.zones];\r\n }\r\n\r\n // Update selectedFilters.zoneName with current checked states\r\n this.selectedFilters.zoneName = this.filteredZones.map((zone) => ({\r\n _id: zone._id,\r\n tagName: zone.tagName,\r\n checked: zone.checked,\r\n }));\r\n\r\n // Save updated filters to localStorage\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n\r\n // Trigger change detection if needed\r\n this.cd.detectChanges();\r\n } else {\r\n this.clearZoneState();\r\n }\r\n },\r\n error: (err: any) => {\r\n console.error(\"Failed to fetch zones\", err);\r\n this.clearZoneState();\r\n },\r\n });\r\n }\r\n\r\n private clearZoneState(): void {\r\n this.zones = [];\r\n this.filteredZones = [];\r\n this.selectedFilters.zonename = [];\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n }\r\n // Clear stores state and reset filters\r\n private clearStoresState(): void {\r\n this.stores = [];\r\n this.filteredStores = [];\r\n this.selectedFilters.stores = [];\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n }\r\n\r\n resetSelectedStores(): void {\r\n this.filteredStores.forEach((store) => (store.checked = false));\r\n this.searchStoreText = \"\";\r\n }\r\n\r\n selectedStoresLabel(): string {\r\n const selectedStores = this.searchStoreText.length\r\n ? this.stores.filter((store) => store.checked)\r\n : this.filteredStores.filter((store) => store.checked);\r\n return selectedStores.length === 0\r\n ? \"0 Stores\"\r\n : selectedStores.length === 1\r\n ? selectedStores[0].storeName\r\n : `${selectedStores.length} Stores`;\r\n }\r\n\r\n selectedZonesLabel(): string {\r\n const selectedStores = this.searchZoneText.length\r\n ? this.zones.filter((zone) => zone.checked)\r\n : this.filteredZones.filter((zone) => zone.checked);\r\n return selectedStores.length === 0\r\n ? \"0 Zones\"\r\n : selectedStores.length === 1\r\n ? selectedStores[0].tagName\r\n : `${selectedStores.length} Zones`;\r\n }\r\n\r\n isAllStoresSelected(): boolean {\r\n return (\r\n this.filteredStores.length > 0 &&\r\n this.filteredStores.every((store) => store.checked)\r\n );\r\n }\r\n isAllZonesSelected(): boolean {\r\n return this.filteredZones\r\n .filter((zone) => zone._id !== \"overall\")\r\n .every((zone) => zone.checked);\r\n }\r\n\r\n // Method to handle dropdown item selection\r\n updateSelectedStores(): void {\r\n this.filteredStores.forEach((store) => {\r\n const filteredStore = this.stores.findIndex(\r\n (fStore) => fStore.storeId === store.storeId\r\n );\r\n if (filteredStore != -1) {\r\n this.stores[filteredStore].checked = store.checked; // Sync the checked state with full store list\r\n }\r\n });\r\n // Update selectedFilters based on the current store selection\r\n this.selectedFilters.stores = this.stores.filter((store) => store.checked);\r\n\r\n // Update localStorage with the latest selection\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n\r\n // Emit updated filters via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n\r\n // Trigger change detection if necessary\r\n if (this.selectedFilters.stores.length > 0) this.getZone();\r\n else this.zones = [];\r\n this.filteredZones = [];\r\n this.selectedFilters.zoneName = [];\r\n this.cd.detectChanges();\r\n }\r\n\r\n updateSelectedZones(clickedZoneId: string): void {\r\n this.filteredZones.forEach((zone) => {\r\n const index = this.zones.findIndex((z) => z._id === zone._id);\r\n if (index !== -1) {\r\n this.zones[index].checked = zone.checked;\r\n }\r\n });\r\n\r\n const overallZone = this.zones.find((z) => z._id === \"overall\");\r\n const overallChecked = overallZone?.checked ?? false;\r\n const othersSelected = this.zones.some(\r\n (z) => z._id !== \"overall\" && z.checked\r\n );\r\n\r\n if (clickedZoneId === \"overall\" && overallChecked) {\r\n this.zones = this.zones.map((z) => ({\r\n ...z,\r\n checked: z._id === \"overall\",\r\n }));\r\n }\r\n if (clickedZoneId !== \"overall\" && overallChecked) {\r\n if (overallZone) {\r\n overallZone.checked = false;\r\n }\r\n }\r\n this.filteredZones = [...this.zones];\r\n this.selectedFilters.zoneName = this.zones.filter((z) => z.checked);\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.cd.detectChanges();\r\n }\r\n\r\n toggleSelectAllLocations(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredLocations.forEach(\r\n (location) => (location.checked = isChecked)\r\n );\r\n this.updateSelectedLocations();\r\n }\r\n\r\n toggleSelectAllStores(event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n\r\n // Apply the selection to both filtered and full list of stores\r\n this.filteredStores.forEach((store) => (store.checked = checked));\r\n this.stores.forEach((store) => {\r\n const filteredStore = this.filteredStores.find(\r\n (fStore) => fStore.storeId === store.storeId\r\n );\r\n if (filteredStore) {\r\n store.checked = checked; // Sync the checked state with full store list\r\n }\r\n });\r\n\r\n // Update the selected stores and persist the selection\r\n this.updateSelectedStores();\r\n }\r\n\r\n toggleSelectAllZones(event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n this.filteredZones.forEach((zone) => {\r\n if (zone._id !== \"overall\") {\r\n zone.checked = checked;\r\n } else {\r\n zone.checked = false;\r\n }\r\n });\r\n this.zones.forEach((zone) => {\r\n const match = this.filteredZones.find((fz) => fz._id === zone._id);\r\n if (match) {\r\n zone.checked = match.checked;\r\n }\r\n });\r\n // Since this is bulk, pass a dummy value — any non-overall zone is fine\r\n const anySelectedZone = this.filteredZones.find((z) => z._id !== \"overall\");\r\n const clickedId = anySelectedZone ? anySelectedZone._id : \"\";\r\n this.updateSelectedZones(clickedId);\r\n }\r\n\r\n updateSelectedLocations(): void {\r\n // When locations are selected, fetch the related groups\r\n const selectedCities = this.filteredLocations\r\n .filter((location) => location.checked)\r\n .map((location) => location.city);\r\n this.filteredLocations.forEach((location: any) => {\r\n let findLocationIndex = this.locations.findIndex(\r\n (loc: any) => loc.city == location.city\r\n );\r\n if (findLocationIndex != -1) {\r\n this.locations[findLocationIndex].checked = location.checked;\r\n }\r\n });\r\n if (selectedCities.length > 0 || !selectedCities.length) {\r\n this.selectedFilters.stores = [];\r\n this.groupsData = [];\r\n this.getGroups(); // Fetch groups based on selected cities\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.location = this.locations;\r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n this.selectedFilters.location = [];\r\n }\r\n\r\n this.selectedFilters.group = [];\r\n this.filteredStores = []; // Reset stores as well\r\n this.searchGroupText = \"\";\r\n this.searchStoreText = \"\";\r\n // this.Opendropdown = false;\r\n }\r\n\r\n toggleSelectAllGroups(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredGroups.forEach((group) => (group.checked = isChecked));\r\n this.updateSelectedGroups();\r\n }\r\n\r\n updateSelectedGroups(): void {\r\n // Fetch the relevant stores after groups are selected\r\n const selectedGroups = this.filteredGroups\r\n .filter((group) => group.checked)\r\n .map((group) => group.groupName);\r\n\r\n this.filteredGroups.forEach((group: any) => {\r\n let findGroupIndex = this.groupsData.findIndex(\r\n (item: any) => item.groupName == group.groupName\r\n );\r\n if (findGroupIndex != -1) {\r\n this.groupsData[findGroupIndex].checked = group.checked;\r\n }\r\n });\r\n if (selectedGroups.length > 0 || !selectedGroups.length) {\r\n this.selectedFilters.stores = [];\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.selectedFilters.group = this.groupsData;\r\n } else {\r\n // If no groups are selected, clear the stores list\r\n this.filteredStores = [];\r\n\r\n // Also, update localStorage to reflect the cleared store selection\r\n this.selectedFilters.stores = [];\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n\r\n // Emit data via service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n }\r\n\r\n // Clear the search store text when groups are updated\r\n this.searchStoreText = \"\";\r\n }\r\n\r\n Reset(): void {\r\n setTimeout(() => {\r\n this.filteredCountries = [];\r\n this.filteredGroups = [];\r\n this.filteredStores = [];\r\n this.filteredLocations = [];\r\n this.locations = [];\r\n this.groupsData = [];\r\n this.stores = [];\r\n this.filteredZones = [];\r\n this.zones = [];\r\n this.countries = [];\r\n this.searchLocationText = \"\";\r\n this.searchGroupText = \"\";\r\n this.searchStoreText = \"\";\r\n this.selectedFilters.stores = [];\r\n this.selectedFilters.group = [];\r\n this.selectedFilters.location = [];\r\n this.selectedFilters.country = [];\r\n this.selectedFilters.zoneName = [];\r\n\r\n this.getCountry();\r\n this.getLocations();\r\n this.getStore();\r\n this.getGroups();\r\n\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n window.location.reload();\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n\r\n this.Opendropdown = false;\r\n }, 100);\r\n }\r\n\r\n filterLocations(): void {\r\n const searchText = this.searchLocationText.toLowerCase();\r\n\r\n if (searchText) {\r\n // Preserve the checked state during filtering\r\n this.filteredLocations = this.locations\r\n .map((location) => ({\r\n ...location,\r\n checked:\r\n this.filteredLocations.find((l) => l.city === location.city)\r\n ?.checked || false,\r\n }))\r\n .filter((location) =>\r\n location?.city?.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Restore the original checked state when search text is cleared\r\n this.filteredLocations = this.locations.map((location) => ({\r\n ...location,\r\n checked:\r\n this.selectedFilters.location.find(\r\n (l: any) => l.city === location.city\r\n )?.checked || false,\r\n }));\r\n }\r\n }\r\n\r\n filterGroups(): void {\r\n const searchText = this.searchGroupText.toLowerCase();\r\n\r\n if (searchText) {\r\n // Preserve the checked state during filtering\r\n this.filteredGroups = this.groupsData\r\n .map((group) => ({\r\n ...group,\r\n checked:\r\n this.filteredGroups.find((g) => g.groupName === group.groupName)\r\n ?.checked || false,\r\n }))\r\n .filter((group) =>\r\n group?.groupName?.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Restore the original checked state when search text is cleared\r\n this.filteredGroups = this.groupsData.map((group) => ({\r\n ...group,\r\n checked:\r\n this.selectedFilters.group.find(\r\n (g: any) => g.groupName === group.groupName\r\n )?.checked || false,\r\n }));\r\n }\r\n }\r\n\r\n filterStores(): void {\r\n const searchText = this.searchStoreText.toLowerCase();\r\n // Preserve checked states during filtering\r\n if (searchText) {\r\n // Filter based on search text while preserving checked state\r\n this.filteredStores = this.stores\r\n .map((store) => ({\r\n ...store,\r\n // Check if the store is already checked in filteredStores, fallback to original stores' checked state\r\n checked:\r\n this.selectedFilters.stores.find(\r\n (s: any) => s.storeId === store.storeId\r\n )?.checked ||\r\n store.checked ||\r\n false,\r\n }))\r\n .filter((store) => store.storeName.toLowerCase().includes(searchText));\r\n } else {\r\n // When the search text is cleared, restore the original list with preserved checked states\r\n this.filteredStores = this.stores.map((store) => ({\r\n ...store,\r\n // Preserve the checked state based on the selected filters\r\n checked:\r\n this.selectedFilters.stores.find(\r\n (s: any) => s.storeId === store.storeId\r\n )?.checked ||\r\n store.checked ||\r\n false,\r\n }));\r\n }\r\n }\r\n\r\n filterZones(): void {\r\n const searchText = this.searchZoneText.toLowerCase();\r\n // Preserve checked states during filtering\r\n if (searchText) {\r\n // Filter based on search text while preserving checked state\r\n this.filteredZones = this.zones\r\n .map((zone) => ({\r\n ...zone,\r\n // Check if the store is already checked in filteredStores, fallback to original stores' checked state\r\n checked:\r\n this.selectedFilters.zoneName.find((s: any) => s._id === zone._id)\r\n ?.checked ||\r\n zone.checked ||\r\n false,\r\n }))\r\n .filter((zone) => zone.tagName.toLowerCase().includes(searchText));\r\n } else {\r\n // When the search text is cleared, restore the original list with preserved checked states\r\n this.filteredZones = this.zones.map((zone) => ({\r\n ...zone,\r\n // Preserve the checked state based on the selected filters\r\n checked:\r\n this.selectedFilters.zoneName.find((s: any) => s._id === zone._id)\r\n ?.checked ||\r\n zone.checked ||\r\n false,\r\n }));\r\n }\r\n }\r\n\r\n closeDropdown(): void {\r\n this.dropdownOpen = null;\r\n }\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n clickOutside(event: MouseEvent): void {\r\n const clickedInside = (event.target as HTMLElement).closest(\r\n \".dropdown-container\"\r\n );\r\n const clickedoutSide = (event.target as HTMLElement).closest(\".dropdown2\");\r\n if (!clickedInside) {\r\n this.closeDropdown();\r\n }\r\n if (!clickedoutSide) {\r\n this.closeDropdown1();\r\n }\r\n }\r\n\r\n // getCountry(): void {\r\n // // const headerFilters: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"{}\");\r\n // let obj ={\r\n // clientId: this.selectedFilters.client ? this.selectedFilters.client :this.users.clientId,\r\n // }\r\n // this.auth.getCountry(obj).subscribe({\r\n // next: (res: any) => {\r\n // let countryList = this.selectedFilters?.country?.filter((country:any) => country.checked).map((loc:any) => loc.allCountry);\r\n // // Map the fetched countries with default unchecked state\r\n // this.countires = res?.data?.countryData.map((allCountry: any) => ({\r\n // allCountry: allCountry.allCountry,\r\n // checked: countryList?.includes(allCountry.allCountry) ? true : false,\r\n // }));\r\n\r\n // // Sync the fetched countries with any stored checked values in localStorage\r\n // if (this.selectedFilters.country && Array.isArray(this.selectedFilters.country)) {\r\n // this.filteredCountries = this.countries.map(country => {\r\n // const matchedLocation = this.selectedFilters.country.find((loc: any) => loc.allCountry === country.allCountry);\r\n // return matchedLocation ? { ...country, checked: matchedLocation.checked } : country;\r\n // });\r\n // } else {\r\n // this.filteredCountries = this.countries;\r\n // }\r\n\r\n // if(this.searchLocationText) {\r\n // this.filteredCountries = this.countries.filter((country:any) => country.city.toLowerCase().includes(this.searchLocationText.toLowerCase()))\r\n // }\r\n // const selectedCountries = this.countries.filter((country) => country.checked).map((country) => country.allCountry);\r\n // if (selectedCountries.length > 0) {\r\n // setTimeout(()=>{\r\n // this.getStore(); // Fetch stores based on selected groups\r\n // },1000)\r\n // }\r\n // },\r\n // error: (err) => {\r\n // console.error(\"Failed to fetch countries\", err);\r\n // },\r\n // });\r\n // }\r\n\r\n // selectedCountriesLabel(): string {\r\n // const selectedCountries = this.countryLabel = this.searchLocationText.length ? this.countries\r\n // .filter(country => country.checked).map(country => country.allCountry) : this.filteredCountries\r\n // .filter(country => country.checked).map(country => country.allCountry);\r\n // return selectedCountries.length === 0\r\n // ? ''\r\n // : selectedCountries.length === 1\r\n // ? selectedCountries[0]\r\n // : `${selectedCountries.length} countries`;\r\n // }\r\n\r\n // isAllCountriesSelected(): boolean {\r\n // return this.filteredCountries.every(country => country.checked);\r\n\r\n // }\r\n // filterCountries(): void {\r\n // const searchText = this.searchCountryText.toLowerCase();\r\n\r\n // if (searchText) {\r\n // // Preserve the checked state during filtering\r\n // this.filteredCountries = this.countires\r\n // .map(country => ({\r\n // ...country,\r\n // checked: this.filteredCountries.find(l => l.allCountry === country.allCountry)?.checked || false\r\n // }))\r\n // .filter(location =>\r\n // location?.allCountry?.toLowerCase().includes(searchText)\r\n // );\r\n // } else {\r\n // // Restore the original checked state when search text is cleared\r\n // this.filteredCountries = this.countires.map(country => ({\r\n // ...country,\r\n // checked: this.selectedFilters.country.find((l:any) => l.allCountry === country.allCountry)?.checked || false\r\n // }));\r\n // }\r\n // }\r\n\r\n getCountry(): void {\r\n let obj = {\r\n clientId: this.selectedFilters.client\r\n ? this.selectedFilters.client\r\n : this.users.clientId,\r\n };\r\n\r\n this.auth.getCountry(obj).subscribe({\r\n next: (res: any) => {\r\n // Extract selected countries from existing filters (if any)\r\n let countryList = this.selectedFilters?.country\r\n ?.filter((country: any) => country.checked)\r\n .map((loc: any) => loc.country);\r\n\r\n // Map API response to frontend model\r\n this.countries = res?.data?.countryData.map((item: any) => ({\r\n country: item.country,\r\n // checked: countryList?.length ? countryList.includes(item.country) : true,\r\n // checked: cityList?.length ? cityList.includes(city.city) : true,\r\n checked: countryList?.includes(item.country) ? true : false,\r\n }));\r\n if (\r\n this.selectedFilters.country &&\r\n Array.isArray(this.selectedFilters.country)\r\n ) {\r\n this.filteredCountries = this.countries.map((location) => {\r\n const matchedLocation = this.selectedFilters.country.find(\r\n (loc: any) => loc.country === location.country\r\n );\r\n return matchedLocation\r\n ? { ...location, checked: matchedLocation.checked }\r\n : location;\r\n });\r\n } else {\r\n this.filteredCountries = this.countries;\r\n }\r\n\r\n // Initially, all countries are visible\r\n this.filteredCountries = [...this.countries];\r\n\r\n // If a search text already exists, filter immediately\r\n if (this.searchCountryText) {\r\n this.filterCountries();\r\n }\r\n\r\n // Fetch stores if at least one country is selected\r\n let selectedCountries = this.countries.filter(\r\n (country) => country.checked\r\n );\r\n if (selectedCountries.length > 0) {\r\n setTimeout(() => {\r\n this.getLocations();\r\n this.getStore(); // fetch stores\r\n }, 1000);\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Failed to fetch countries\", err);\r\n },\r\n });\r\n }\r\n\r\n selectedCountriesLabel(): string {\r\n const selectedCountries = this.searchCountryText.length\r\n ? this.filteredCountries\r\n .filter((country) => country.checked)\r\n .map((country) => country.country)\r\n : this.countries\r\n .filter((country) => country.checked)\r\n .map((country) => country.country);\r\n\r\n return selectedCountries.length === 0\r\n ? \"\"\r\n : selectedCountries.length === 1\r\n ? selectedCountries[0]\r\n : `${selectedCountries.length} countries`;\r\n }\r\n\r\n filterCountries(): void {\r\n const searchText = this.searchCountryText.toLowerCase();\r\n\r\n if (searchText) {\r\n // Filter and preserve checked state\r\n this.filteredCountries = this.countries\r\n .map((country) => ({\r\n ...country,\r\n checked:\r\n this.filteredCountries.find((c) => c.country === country.country)\r\n ?.checked || false,\r\n }))\r\n .filter((country) =>\r\n country.country.toLowerCase().includes(searchText)\r\n );\r\n } else {\r\n // Reset to full list\r\n this.filteredCountries = this.countries.map((country: Country) => ({\r\n ...country,\r\n checked:\r\n this.selectedFilters.country?.find(\r\n (c: any) => c.country === country.country\r\n )?.checked || false,\r\n }));\r\n }\r\n }\r\n\r\n isAllCountriesSelected(): boolean {\r\n return (\r\n this.filteredCountries.length > 0 &&\r\n this.filteredCountries.every((country) => country.checked)\r\n );\r\n }\r\n toggleSelectAllCountries(event: any): void {\r\n const isChecked = event.target.checked;\r\n this.filteredCountries.forEach((country) => (country.checked = isChecked));\r\n this.updateSelectedCountries();\r\n }\r\n\r\n updateSelectedCountries(): void {\r\n // When locations are selected, fetch the related groups\r\n const selectedCountries = this.filteredCountries\r\n .filter((country) => country.checked)\r\n .map((country) => country.country);\r\n this.filteredCountries.forEach((country: any) => {\r\n let findCountryIndex = this.countries.findIndex(\r\n (loc: any) => loc.country == country.country\r\n );\r\n if (findCountryIndex != -1) {\r\n this.countries[findCountryIndex].checked = country.checked;\r\n }\r\n });\r\n if (selectedCountries.length > 0 || !selectedCountries.length) {\r\n this.selectedFilters.stores = [];\r\n this.groupsData = [];\r\n this.locations = [];\r\n this.selectedFilters.zoneName = [];\r\n this.getLocations();\r\n this.getGroups(); // Fetch groups based on selected cities\r\n // If there are selected groups, fetch the stores based on selected groups\r\n this.getStore();\r\n this.getZone();\r\n this.selectedFilters.country = this.filteredCountries;\r\n } else {\r\n this.filteredGroups = []; // Clear groups if no locations are selected\r\n this.selectedFilters.country = [];\r\n }\r\n\r\n this.selectedFilters.group = [];\r\n this.filteredStores = []; // Reset stores as well\r\n this.filteredZones = [];\r\n this.searchGroupText = \"\";\r\n this.searchStoreText = \"\";\r\n // this.Opendropdown = false;\r\n }\r\n\r\n removeCountry(): void {\r\n this.Reset();\r\n }\r\n\r\n Apply(): void {\r\n // Close the dropdown\r\n this.Opendropdown = false;\r\n\r\n // Fetch existing filters from localStorage\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedFilters.store = null;\r\n\r\n // Ensure current selections are reflected\r\n this.selectedFilters.country = this.filteredCountries;\r\n this.selectedFilters.location = this.locations;\r\n this.selectedFilters.group = this.groupsData;\r\n this.selectedFilters.stores = headerFilters.stores\r\n ? headerFilters.stores\r\n : this.stores;\r\n this.selectedFilters.zoneName = headerFilters.zoneName\r\n ? headerFilters.zoneName\r\n : this.zones;\r\n // this.selectedFilters.zoneName = this.filteredZones;\r\n // Store updated filters back in localStorage\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n window.location.reload();\r\n // Emit the updated filters via the service\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // Trigger refresh if necessary\r\n // this.gs.manageRefreshTrigger.next(true);\r\n this.cd.detectChanges();\r\n }\r\n}\r\ninterface City {\r\n city: string;\r\n}\r\n\r\ninterface Location {\r\n city: City;\r\n checked: boolean;\r\n}\r\ninterface Country {\r\n country: string;\r\n checked: boolean;\r\n}\r\n\r\n","<div class=\"me-3\">\r\n <label *ngIf=\"selectedCountriesLabel()\" class=\"badge badge-light-default mx-2\">{{selectedCountriesLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeCountry()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label *ngIf=\"selectedLocationsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedLocationsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeLocation()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label *ngIf=\"selectedGroupsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedGroupsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeGroup()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label class=\"badge badge-light-default\">{{selectedStoresLabel()}}</label>\r\n <label class=\"badge badge-light-default mx-2\">{{selectedZonesLabel()}} \r\n <!-- <span class=\"cursor-pointer\" (click)=\"removeGroup()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span> -->\r\n </label>\r\n</div>\r\n\r\n\r\n<div class=\"wrapper me-3\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n<lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div>\r\n<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput\r\n ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [autoApply]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n<div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"opendropdown($event)\" class=\"btn btn-default mx-2 rounded-3 text-nowrap border-val\">\r\n <!-- <span class=\"me-2\">Filter</span> -->\r\n <svg class=\"pl-3\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-5 dropdown2 position-absolute z-1 end-0\" style=\"z-index: 1 !important;\" (clickOutside)=\"closeDropdown1()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-2\">Filter Options\r\n <button class=\"btn btn-outline w-25 ms-3 btn-resize\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n\r\n <!-- Country Dropdown -->\r\n<div class=\"dropdown-container\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('country')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedCountriesLabel()\"\r\n readonly\r\n placeholder=\"Select country\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'country'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search country\" \r\n [(ngModel)]=\"searchCountryText\" \r\n (ngModelChange)=\"filterCountries()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllCountries\" \r\n [checked]=\"isAllCountriesSelected()\" \r\n (change)=\"toggleSelectAllCountries($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllCountries\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let country of filteredCountries\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"country.country\" \r\n [(ngModel)]=\"country.checked\"\r\n (change)=\"updateSelectedCountries()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"country.country\">\r\n {{ country.country }}\r\n </label>\r\n \r\n </div>\r\n </div>\r\n</div>\r\n\r\n <!-- Location Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('location')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedLocationsLabel()\"\r\n readonly\r\n placeholder=\"Select Region\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'location'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search Region\" \r\n [(ngModel)]=\"searchLocationText\" \r\n (ngModelChange)=\"filterLocations()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllLocations\" \r\n [checked]=\"isAllLocationsSelected()\" \r\n (change)=\"toggleSelectAllLocations($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllLocations\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let location of filteredLocations\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"location.city\" \r\n [(ngModel)]=\"location.checked\"\r\n (change)=\"updateSelectedLocations()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"location.city\">\r\n {{ location.city }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Group Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('group')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\" \r\n [value]=\"selectedGroupsLabel()\" readonly\r\n placeholder=\"Select clusters\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'group'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search clusters\" \r\n [(ngModel)]=\"searchGroupText\" \r\n (ngModelChange)=\"filterGroups()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllGroups\" \r\n [checked]=\"isAllGroupsSelected()\" \r\n (change)=\"toggleSelectAllGroups($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllGroups\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let group of filteredGroups\"\r\n >\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n [id]=\"group.groupName\"\r\n [(ngModel)]=\"group.checked\"\r\n (change)=\"updateSelectedGroups()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"group.groupName\">\r\n {{ group.groupName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Store Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('store')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\"\r\n [value]=\"selectedStoresLabel()\"\r\n readonly\r\n placeholder=\"Select stores\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'store'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search \" \r\n placeholder=\"Search stores\" \r\n [(ngModel)]=\"searchStoreText\" \r\n (ngModelChange)=\"filterStores()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllStores\" \r\n [checked]=\"isAllStoresSelected()\" \r\n (change)=\"toggleSelectAllStores($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllStores\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let store of filteredStores\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"store.storeId\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateSelectedStores()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"store.storeId\">\r\n {{ store.storeName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Zone Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('zone')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input cursor-pointer\"\r\n [value]=\"selectedZonesLabel()\"\r\n readonly\r\n placeholder=\"Select zones\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'zone'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search \" \r\n placeholder=\"Search zones\" \r\n [(ngModel)]=\"searchZoneText\" \r\n (ngModelChange)=\"filterZones()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input cursor-pointer\" \r\n type=\"checkbox\" \r\n id=\"selectAllZones\" \r\n [checked]=\"isAllZonesSelected()\" \r\n (change)=\"toggleSelectAllZones($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllZones\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let zone of filteredZones\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"zone._id\"\r\n [(ngModel)]=\"zone.checked\"\r\n (change)=\"updateSelectedZones(zone._id)\"\r\n />\r\n <label class=\"form-check-label\" [for]=\"zone._id\">\r\n {{ zone.tagName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, OnInit } from \"@angular/core\";\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/en\";\r\nimport { AuthService } from '../../../../services/auth.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-single-clientstore-date',\r\n templateUrl: './single-clientstore-date.component.html',\r\n styleUrl: './single-clientstore-date.component.scss'\r\n})\r\nexport class SingleClientstoreDateComponent implements OnInit {\r\ndayjs = dayjs;\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs(); \r\n return isValidDate ? 'invalid-date' : false;\r\n}\r\n selectedDateRange: any = {};\r\n clientList: any = [];\r\n selectedClient: any;\r\n selectedFilters: any = {\r\n client: null,\r\n clientName: null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n group:[],\r\n location:[]\r\n };\r\n dummyArray: any;\r\n respnsearray: any=[];\r\n\r\n constructor(\r\n private auth: AuthService,\r\n private gs: GlobalStateService,\r\n private cd: ChangeDetectorRef\r\n ) {\r\n \r\n this.auth.getClients().subscribe({\r\n next: (e) => {\r\n if (e) {\r\n this.clientList = e.data.result;\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n if (headerFilters.client) {\r\n this.clientList.find((obj: any) => {\r\n if (obj.clientId === headerFilters.client) {\r\n this.selectedClient = obj;\r\n }\r\n });\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.clientName = headerFilters.clientName\r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.getStores(this.selectedFilters.client)\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n this.selectedFilters.clients = headerFilters.clients;\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.date = headerFilters.date;\r\n this.getStores(this.selectedFilters.client)\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n }\r\n } else {\r\n this.selectedClient = this.clientList[0];\r\n this.selectedFilters.client = this.selectedClient.clientId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n this.getStores(this.selectedFilters.client)\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters) \r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n }\r\n },\r\n });\r\n }\r\n ngOnInit(): void {}\r\n onClientSelect(event: any) {\r\n this.selectedClient = event;\r\n this.getStores(this.selectedClient?.clientId);\r\n }\r\n storeList:any =[];\r\ngetStores(client:any){\r\n this.storeList =[];\r\n this.auth.getStores(client).subscribe({\r\n next: (e) => {\r\n if (e) {\r\n \r\n this.storeList = e.data.result;\r\n // const headerFilters: any = JSON.parse(\r\n // localStorage.getItem(\"header-filters\") || \"{}\"\r\n // );\r\n // this.selectedDateRange = {\r\n // startDate: this.dayjs(headerFilters?.date?.startDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n // endDate: this.dayjs(headerFilters?.date?.endDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\")\r\n // };\r\n // if (headerFilters?.store) {\r\n // this.storeList.find((obj: any) => {\r\n // if (obj.storeId === headerFilters.store) {\r\n // this.selectedStore = obj;\r\n // }\r\n // });\r\n // this.selectedFilters.store = headerFilters.store;\r\n // this.selectedFilters.client = headerFilters.client;\r\n // this.selectedFilters.clientName = headerFilters.clientName;\r\n // this.selectedFilters.clients = headerFilters.clients; \r\n // this.selectedFilters.date = headerFilters.date;\r\n // this.selectedFilters.storeName = headerFilters.storeName; \r\n // this.selectedDateRange = {\r\n // startDate:this.dayjs( headerFilters.date.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n // endDate: this.dayjs( headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n // };\r\n \r\n // localStorage.setItem(\r\n // \"header-filters\",\r\n // JSON.stringify(this.selectedFilters)\r\n // );\r\n // this.gs.dataRangeValue.next(this.selectedFilters);\r\n // this.cd.detectChanges();\r\n // } else {\r\n this.selectedStore = this.storeList[0];\r\n this.selectedFilters.store = this.selectedStore.storeId; \r\n this.cd.detectChanges();\r\n }\r\n // }\r\n },\r\n });\r\n}\r\nselectedStore:any;\r\n onStoreSelect(event: any) {\r\n this.selectedStore = event;\r\n }\r\n ranges: any = {\r\n Today: [\r\n this.dayjs(),\r\n this.dayjs(),\r\n ],\r\n Yesterday: [\r\n this.dayjs().subtract(1, \"days\"),\r\n this.dayjs().subtract(1, \"days\"),\r\n ],\r\n \"This Week\": [this.dayjs().subtract(7, \"days\"), this.dayjs().subtract(1, \"days\")],\r\n \"Last Week\": [\r\n this.dayjs().subtract(14, \"days\").startOf(\"days\"),\r\n this.dayjs().subtract(8, \"days\").endOf(\"days\"),\r\n ],\r\n \"This Month\": [\r\n this.dayjs().subtract(30, \"days\"), // Start date is 30 days before today\r\n this.dayjs().subtract(1, \"days\") // End date is Yesterday\r\n ],\r\n \"Last Month\": [\r\n this.dayjs().subtract(1, \"month\").startOf(\"month\"),\r\n this.dayjs().subtract(1, \"month\").endOf(\"month\"),\r\n ],\r\n };\r\n\r\n onStartDateChange(event: any) {\r\n if(this.dayjs(event.startDate).isValid()){\r\n this.isCustomDate = (m: dayjs.Dayjs) => { \r\n const isValidDate = m > this.dayjs() || m > this.dayjs(event.startDate.add(90, 'days')) ;\r\n return isValidDate ? 'invalid-date' : false;\r\n }\r\n}\r\n }\r\n\r\n datechange(event: any) {\r\n \r\n \r\n if (event && event.startDate && event.endDate) {\r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = event.endDate\r\n this.selectedDateRange.endDate = event.endDate\r\n var datetime = {\r\n startDate: this.dayjs(event.endDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs(event.endDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n }\r\n }else {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedDateRange.startDate = this.dayjs(headerFilters?.date?.endDate,\"YYYY-MM-DD\").format(\"DD-MM-YYYY\");\r\n this.selectedDateRange.endDate = this.dayjs(headerFilters?.date?.endDate,\"YYYY-MM-DD\").format(\"DD-MM-YYYY\");\r\n this.gs?.dataRangeValue?.next(headerFilters);\r\n }\r\n \r\n }\r\n\r\n Apply() {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedFilters = headerFilters;\r\n this.selectedFilters.client = this.selectedClient?.clientId;\r\n this.selectedFilters.store = this.selectedStore?.storeId;\r\n this.selectedFilters.clientName = this.selectedClient.clientName\r\n if(this.selectedClient.clientId ===''){\r\n this.selectedFilters.clients = this.respnsearray;\r\n } else {\r\n this.selectedFilters.clients = [this.selectedClient.clientId];\r\n }\r\n this.selectedFilters.stores =[];\r\n this.selectedFilters.group= [];\r\n this.selectedFilters.location= [];\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n // window.location.reload()\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n // window.location.reload()\r\n this.gs.manageRefreshTrigger.next(true)\r\n }\r\n}\r\n","<div class=\"wrapper mx-2\" >\r\n <lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n (selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n\r\n \r\n</div>\r\n<div class=\"wrapper mx-2\" >\r\n<lib-select [items]=\"storeList\" [multi]=\"false\" [searchField]=\"'storeName'\" [disabled]=\"false\" [idField]=\"'storeId'\"\r\n (selected)=\"onStoreSelect($event)\" [selectedValues]=\"[selectedStore]\"></lib-select> \r\n </div> \r\n<div class=\"d-flex align-items-center w-150px position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [showCustomRangeLabel]=\"false\" [alwaysShowCalendars]=\"false\" [autoApply]=\"true\" [singleDatePicker]=\"true\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1}\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n\r\n<div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div>","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { Subject, Subscription, window } from \"rxjs\";\r\nimport {\r\n GlobalStateService,\r\n LayoutService,\r\n PageInfoService,\r\n} from \"tango-app-ui-global\";\r\nimport { ILayout, LayoutType } from \"tango-app-ui-global\";\r\nimport { AuthService } from \"../../../services/auth.service\";\r\n\r\n@Component({\r\n selector: \"lib-toolbar\",\r\n templateUrl: \"./toolbar.component.html\",\r\n styleUrls: [\"./toolbar.component.scss\"],\r\n})\r\nexport class ToolbarComponent implements OnInit, OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n\r\n // Public props\r\n @Input() currentLayoutType: LayoutType | null;\r\n @Input() appToolbarLayout:\r\n | \"classic\"\r\n | \"accounting\"\r\n | \"extended\"\r\n | \"reports\"\r\n | \"saas\";\r\n\r\n // toolbar\r\n appToolbarDisplay: boolean;\r\n appToolbarContainer: \"fixed\" | \"fluid\";\r\n appToolbarContainerCSSClass: string = \"\";\r\n appToolbarFixedDesktop: boolean;\r\n appToolbarFixedMobile: boolean;\r\n appPageTitleDisplay: boolean;\r\n\r\n // page title\r\n appPageTitleDirection: string = \"\";\r\n appPageTitleCSSClass: string = \"\";\r\n appPageTitleBreadcrumb: boolean;\r\n appPageTitleDescription: boolean;\r\n querParams: any;\r\n singleSelect: boolean;\r\n multiSelect: boolean;\r\n datepicker: boolean;\r\n singleSelectdatepicker: boolean;\r\n singleStore: boolean;\r\n headervalue: any;\r\n storeId: any;\r\n users: any;\r\n selectedFilters: any = {\r\n client: null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n };\r\n trafficdatepicker: boolean;\r\n traxdatepicker: boolean;\r\n urlString:any;\r\n traxwithoutdatepicker:boolean;\r\n storesSingle:boolean;\r\n nobWithoutClient:boolean;\r\n merticsHeader: boolean;\r\n singleClientStoreDate:boolean;\r\n constructor(\r\n private layout: LayoutService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n public gs: GlobalStateService,\r\n private auth : AuthService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (\"user-info\" in localStorage) {\r\n const userData: any = JSON.parse(\r\n localStorage.getItem(\"user-info\") || \"{}\"\r\n );\r\n this.users = userData;\r\n }\r\n if (\"header-filters\" in localStorage) {\r\n const data: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.client = data?.client;\r\n }\r\n this.getUserInfo(this.client ? this.client : this.users.client)\r\n this.showPageTitle();\r\n const subscr = this.layout.layoutConfigSubject\r\n .asObservable()\r\n .subscribe((config: ILayout) => {\r\n this.updateProps(config);\r\n });\r\n this.unsubscribe.push(subscr);\r\n }\r\n\r\n updateProps(config: ILayout) {\r\n this.appToolbarDisplay = this.layout.getProp(\r\n \"app.toolbar.display\",\r\n config\r\n ) as boolean;\r\n if (!this.appToolbarDisplay) {\r\n return;\r\n }\r\n\r\n this.appPageTitleDisplay = this.layout.getProp(\r\n \"app.pageTitle.display\",\r\n config\r\n ) as boolean;\r\n this.appToolbarContainer = this.layout.getProp(\r\n \"app.toolbar.container\",\r\n config\r\n ) as \"fluid\" | \"fixed\";\r\n this.appToolbarContainerCSSClass =\r\n this.appToolbarContainer === \"fixed\"\r\n ? \"container-xxl\"\r\n : \"container-fluid\";\r\n const containerClass = this.layout.getProp(\r\n \"app.toolbar.containerClass\",\r\n config\r\n ) as string;\r\n if (containerClass) {\r\n this.appToolbarContainerCSSClass += ` ${containerClass}`;\r\n }\r\n\r\n this.appToolbarFixedDesktop = this.layout.getProp(\r\n \"app.toolbar.fixed.desktop\",\r\n config\r\n ) as boolean;\r\n if (this.appToolbarFixedDesktop) {\r\n document.body.setAttribute(\"data-kt-app-toolbar-fixed\", \"true\");\r\n }\r\n\r\n this.appToolbarFixedMobile = this.layout.getProp(\r\n \"app.toolbar.fixed.mobile\",\r\n config\r\n ) as boolean;\r\n if (this.appToolbarFixedMobile) {\r\n document.body.setAttribute(\"data-kt-app-toolbar-fixed-mobile\", \"true\");\r\n }\r\n\r\n // toolbar\r\n this.appPageTitleDirection = this.layout.getProp(\r\n \"app.pageTitle.direction\",\r\n config\r\n ) as string;\r\n this.appPageTitleCSSClass = this.layout.getProp(\r\n \"app.pageTitle.class\",\r\n config\r\n ) as string;\r\n this.appPageTitleBreadcrumb = this.layout.getProp(\r\n \"app.pageTitle.breadCrumb\",\r\n config\r\n ) as boolean;\r\n this.appPageTitleDescription = this.layout.getProp(\r\n \"app.pageTitle.description\",\r\n config\r\n ) as boolean;\r\n\r\n document.body.setAttribute(\"data-kt-app-toolbar-enabled\", \"true\");\r\n }\r\n private readonly destroy$ = new Subject();\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n // localStorage.removeItem(\"usersEmail-info\");\r\n }\r\n client:any;\r\n urlString1:any;\r\n showPageTitle() {\r\n let URL: string = \"\";\r\n if (\"header-filters\" in localStorage) {\r\n const data: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n const store = this.route.snapshot.queryParamMap as any \r\n this.storeId = data?.store;\r\n\r\n if(store?.params?.['storeId']){\r\n this.storeId = store.params['storeId']\r\n data.store = store.params['storeId']\r\n localStorage.setItem('header-filters', JSON.stringify(data))\r\n }\r\n const currentUrl = this.router.url;\r\n const updatedUrl = currentUrl.replace(\r\n /\\/manage\\/stores\\/\\d+-\\d+\\//,\r\n `/manage/stores/`\r\n );\r\n URL = updatedUrl;\r\n // this.router.navigate([URL])\r\n }\r\n const url = URL.split(\"?\")[0].split('/');\r\n this.urlString = URL;\r\n this.urlString1= URL.split('/');\r\n if (this.users?.userType === \"tango\") {\r\n if (url[2] == \"settings\" || URL == \"/manage/users/client\" ||\r\n URL == \"/manage/stores\" || URL === \"/manage/stores?type=stores\" || URL === \"/manage/stores?type=clusters\" ||\r\n URL == \"/manage/stores/addition-method\" ||\r\n URL == \"/manage/stores/add-single-store\" || URL === \"/manage/trax/gallery\" || URL == \"/notifications/alerts?tab=alert\" || URL == \"/notifications/alerts?tab=download\" || URL === \"/manage/trax/audit\" ) {\r\n this.setUIProperties(true, false, false, false, false,false,false,false,false,false,false,false);\r\n } else if (url[3] == \"edge-app\") {\r\n this.setUIProperties(false, false, false, false, true,false,false,false,false,false,false,false);\r\n } else if (\r\n URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||\r\n URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||\r\n URL == `/manage/stores/zones?storeId=${this.storeId}` ||\r\n URL == `/manage/stores/cameras?storeId=${this.storeId}` ||\r\n // URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||\r\n URL == `/manage/stores/mat?storeId=${this.storeId}`\r\n ) {\r\n this.setUIProperties(false, false, false, true, false,false,false,false,false,false,false,false);\r\n }else if (URL == \"/tickets/stores\" || URL == \"/manage/users/tango/audit\") {\r\n this.setUIProperties(false, false, true, false, false, false, false, false, false, false,false,false);\r\n }\r\n else if(url[2] === 'controlcenter'){\r\n if(URL == `/manage/controlcenter/playback?storeId=${this.storeId}`|| URL == `/manage/controlcenter/playback`){\r\n this.setUIProperties(false, false, false, false,false,false,false,false,true,false,false,false);\r\n }\r\n else {\r\n this.setUIProperties(false, false, false, false,true,false,false,false,false,false,false,false);\r\n } \r\n }else if (URL == \"/profile\" || url[2]===\"data-mismatch\" || url[2]===\"employeetraining\" \r\n || URL == \"/manage/brands\" || URL == \"/manage/users/tango\" || (url[1] ===\"tickets\" && url[2] === \"audit\") || url.includes('list')) {\r\n this.setUIProperties(false, false, false, false, false,false,false,false,false,false,false,false);\r\n } else if(URL == \"/manage/traffic/nob\"){\r\n this.setUIProperties(false, false, false, false,false,false,false,false,false,true,false,false);\r\n } else if(url[2] === \"traffic\" || url[2] === \"zones\" || URL == \"/manage/analyse/reports\" ){\r\n this.setUIProperties(false, false, false, false,false,true,false,false,false,false,false,false);\r\n }else if(URL == \"/manage/employee-metrics/beeahGroup\" || URL == \"/manage/employee-metrics/beeahLive\"){\r\n this.setUIProperties(false, false, false, false,false,false,false,false,false,false,false,true);\r\n } else if(url[2] === \"employee-metrics\" && url[3] === \"heatmap\"){\r\n this.setUIProperties(false, false, false, false,false,false,false,false,true,false,false,false);\r\n } else if(url[2] === \"employee-metrics\"){\r\n this.setUIProperties(false, false, false, false,false,false,false,false,false,false,true,false);\r\n } else if(url[2] == 'trax'){\r\n if(url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure') || url.includes('create-order')|| url[3] == 'create-task' || url[3] == 'task-configure')) {\r\n this.setUIProperties(false, false, false, false,false,false,false,false,false,false,false,false);\r\n } \r\n // else if(url[2] == 'trax' && (url.includes('taskinfo'))){\r\n // this.setUIProperties(false, false, false, false,false,false,false,true,false,false,false,false);\r\n // }\r\n else if(url[2] == 'trax' && url.includes('start')){\r\n this.setUIProperties(false, false, false, false, false,false,false,false,false,false,false,false);\r\n }\r\n else if(url[2] == 'trax' && (url.includes('checklist') || url.includes('gallery')) || url.includes('audit')) {\r\n this.setUIProperties(true, false, false, false,false,false,false,false,false,false,false,false);\r\n } else {\r\n this.setUIProperties(false, false, false, false,false,false,true,false,false,false,false,false);\r\n }\r\n } else if(url[2] == 'planogram'){\r\n if(url[2] == 'planogram' && (url.includes('layout-builder'))) {\r\n this.setUIProperties(false, false, false, false,false,false,false,false,false,false,false,false);\r\n }else {\r\n if(url[2] == 'planogram' && url[3] == 'manage-planogram') {\r\n this.setUIProperties(false,false,false,false,false,false,false,false,false,false,false,false);\r\n }\r\n else {\r\n this.setUIProperties(true, false, false, false,false,false,false,false,false,false,false,false);\r\n }\r\n }\r\n } else{\r\n if(url[3] == 'plano') {\r\n this.setUIProperties(false, false, false, true, false,false,false,false,false,false,false,false);\r\n }\r\n else {\r\n this.setUIProperties(false, false, false, false,true,false,false,false,false,false,false,false);\r\n }\r\n }\r\n } else {\r\n if (url[3] == \"edge-app\" ) {\r\n this.setUIProperties(false, false, true, false, false,false,false,false,false,false,false,false);\r\n } else if (\r\n URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||\r\n URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||\r\n URL == `/manage/stores/zones?storeId=${this.storeId}` ||\r\n URL == `/manage/stores/cameras?storeId=${this.storeId}` ||\r\n // URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||\r\n URL == `/manage/stores/mat?storeId=${this.storeId}`\r\n ) {\r\n this.setUIProperties(false, false, false, true, false,false,false,false,false,false,false,false);\r\n } else if(url[2] === 'controlcenter'){\r\n if(URL == `/manage/controlcenter/playback?storeId=${this.storeId}`|| URL == `/manage/controlcenter/playback`){\r\n this.setUIProperties(false, false, false, false,false,false,false,false,true,false,false,false);\r\n }\r\n else {\r\n this.setUIProperties(false, false, false, false,true,false,false,false,false,false,false,false);\r\n } \r\n } else if (URL == \"/profile\" || URL == \"/manage/users/client\" || URL == \"/manage/users/tango\" ||\r\n URL == \"/manage/stores\" || URL === \"/manage/stores?type=stores\" || URL === \"/manage/stores?type=clusters\" || url[2] == \"settings\" || \r\n URL == \"/manage/stores/addition-method\" ||\r\n URL == \"/manage/stores/add-single-store\" || url[2]===\"data-mismatch\" || url[2]===\"employeetraining\" || URL == \"/notifications/alerts?tab=alert\" || URL == \"/notifications/alerts?tab=download\"\r\n || URL == \"/manage/users/tango\" || URL === \"/manage/controlcenter\" || URL ==='manage/controlcenter/template-manager' || url[2]==='controlcenter' || url.includes('list')) {\r\n this.setUIProperties(false, false, false, false, false,false,false,false,false,false,false,false);\r\n }else if(URL == \"/manage/traffic/nob\"){\r\n this.setUIProperties(false, false, false, false,false,false,false,false,false,true,false,false);\r\n } else if(url[2] === \"traffic\" || url[2] === \"zones\" || URL == \"/manage/analyse/reports\"){\r\n this.setUIProperties(false, false, false, false,false,true,false,false,false,false,false,false);\r\n }else if(URL == \"/manage/employee-metrics/beeahGroup\" || URL == \"/manage/employee-metrics/beeahLive\"){\r\n this.setUIProperties(false, false, false, true, false,false,false,false,false,false,false,false);\r\n } else if(url[2] === \"employee-metrics\" && url[3] === \"heatmap\"){\r\n this.setUIProperties(false, false, false, false,false,false,false,false,true,false,false,false);\r\n } else if(url[2] === \"employee-metrics\"){\r\n this.setUIProperties(false, false, false, false,false,false,false,false,false,false,true,false);\r\n } else if(url[2] == 'trax'){\r\n if(url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure') || url.includes('create-order') || url[3] == 'create-task' || url[3] == 'task-configure')) {\r\n this.setUIProperties(false, false, false, false,false,false,false,false,false,false,false,false);\r\n }\r\n // else if(url[2] == 'trax' && (url.includes('taskinfo'))){\r\n // this.setUIProperties(false, false, false, false,false,false,false,true,false,false,false,false);\r\n // }\r\n else if(url[2] == 'trax' && url.includes('start')){\r\n this.setUIProperties(false, false, false, false, false,false,false,false,false,false,false,false);\r\n }\r\n else if(url[2] == 'trax' && (url.includes('checklist') || url.includes('gallery') || url.includes('audit'))) {\r\n this.setUIProperties(true, false, false, false,false,false,false,false,false,false,false,false);\r\n } else {\r\n this.setUIProperties(false, false, false, false,false,false,true,false,false,false,false,false);\r\n }\r\n } else if(url[2] == 'planogram'){\r\n if(url[2] == 'planogram' && (url.includes('layout-builder'))) {\r\n this.setUIProperties(false, false, false, false,false,false,false,false,false,false,false,false);\r\n } else {\r\n this.setUIProperties(true, false, false, false,false,false,false,false,false,false,false,false);\r\n }\r\n }else {\r\n if (url[3] == \"plano\") {\r\n this.setUIProperties(false,false,false,true,false,false,false,false,false,false,false,false);\r\n } else {\r\n this.setUIProperties(false, false, true, false, false,false,false,false,false,false,false,false);\r\n }\r\n }\r\n }\r\n const viewsWithPageTitles = [\"classic\", \"reports\", \"saas\"];\r\n return (\r\n this.appPageTitleDisplay &&\r\n viewsWithPageTitles.some((t) => t === this.appToolbarLayout)\r\n );\r\n}\r\n\r\nsetUIProperties(\r\n singleSelect: boolean,\r\n multiSelect: boolean,\r\n datepicker: boolean,\r\n singleStore: boolean,\r\n singleSelectdatepicker: boolean,\r\n trafficdatepicker:boolean,\r\n traxdatepicker:boolean,\r\n traxwithoutdatepicker:boolean,\r\n storesSingle:boolean,\r\n nobWithoutClient:boolean,\r\n merticsHeader:boolean,\r\n singleClientStoreDate:boolean\r\n): void {\r\n this.singleSelect = singleSelect;\r\n this.multiSelect = multiSelect;\r\n this.datepicker = datepicker;\r\n this.singleStore = singleStore;\r\n this.singleSelectdatepicker = singleSelectdatepicker;\r\n this.trafficdatepicker = trafficdatepicker;\r\n this.traxdatepicker = traxdatepicker;\r\n this.traxwithoutdatepicker = traxwithoutdatepicker;\r\n this.storesSingle = storesSingle;\r\n this.nobWithoutClient = nobWithoutClient;\r\n this.merticsHeader = merticsHeader;\r\nthis.singleClientStoreDate = singleClientStoreDate;\r\n}\r\n\r\ngetUserInfo(client:any){\r\n let obj ={\r\n clientId: client ? client :''\r\n }\r\n if(client){\r\n this.auth.getHeaderUsers(obj).subscribe({\r\n next: (e) => {\r\n localStorage.setItem(\r\n \"usersEmail-info\",\r\n JSON.stringify(e?.data?.userEmailData || []) \r\n );\r\n } \r\n })\r\n }\r\n}\r\n}\r\n","<!--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\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","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { LayoutService } from 'tango-app-ui-global';\r\nimport { LayoutType } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-sidebar-logo',\r\n templateUrl: './sidebar-logo.component.html',\r\n styleUrls: ['./sidebar-logo.component.scss'],\r\n})\r\nexport class SidebarLogoComponent implements OnInit, OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n @Input() toggleButtonClass: string = '';\r\n @Input() toggleEnabled: boolean;\r\n @Input() toggleType: string = '';\r\n @Input() toggleState: string = '';\r\n currentLayoutType: LayoutType | null;\r\n\r\n toggleAttr: string;\r\n\r\n constructor(private layout: LayoutService) {}\r\n\r\n ngOnInit(): void {\r\n this.toggleAttr = `app-sidebar-${this.toggleType}`;\r\n const layoutSubscr = this.layout.currentLayoutTypeSubject\r\n .asObservable()\r\n .subscribe((layout) => {\r\n this.currentLayoutType = layout;\r\n });\r\n this.unsubscribe.push(layoutSubscr);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n}\r\n","<!--begin::Logo image-->\r\n<a>\r\n <ng-container *ngIf=\"currentLayoutType === 'dark-sidebar'\">\r\n <img alt=\"Logo\" src=\"./assets/tango/sidemenu-icons/tango_logo_text.svg\" class=\"h-40px app-sidebar-logo-default\" />\r\n </ng-container>\r\n <ng-container *ngIf=\"currentLayoutType !== 'dark-sidebar'\">\r\n <img alt=\"Logo\" src=\"./assets/tango/sidemenu-icons/tango_logo_text.svg\" class=\"h-40px app-sidebar-logo-default theme-light-show\" />\r\n <img alt=\"Logo\" src=\"./assets/tango/sidemenu-icons/tango_logo_text.svg\"\r\n class=\"h-40px app-sidebar-logo-default theme-dark-show\" />\r\n </ng-container>\r\n\r\n <img alt=\"Logo\" src=\"./assets/tango/sidemenu-icons/tango_logo.svg\" class=\"h-38px app-sidebar-logo-minimize\" />\r\n</a>\r\n<!--end::Logo image-->\r\n\r\n\r\n<ng-container *ngIf=\"toggleEnabled\">\r\n <!--begin::Sidebar toggle-->\r\n <div id=\"kt_app_sidebar_toggle\"\r\n class=\"app-sidebar-toggle btn btn-icon btn-shadow btn-sm btn-color-muted btn-active-color-primary body-bg h-30px w-30px position-absolute top-50 start-100 translate-middle rotate d-none\"\r\n [ngClass]=\"toggleButtonClass\" data-kt-toggle=\"true\" [attr.data-kt-toggle-state]=\"toggleState\"\r\n data-kt-toggle-target=\"body\" [attr.data-kt-toggle-name]=\"toggleAttr\">\r\n <lib-keenicon name=\"double-left\" class=\"fs-2 rotate-180\"></lib-keenicon>\r\n </div>\r\n <!--end::Sidebar toggle-->\r\n</ng-container>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthService } from '../../../../services/auth.service';\r\nimport { debounceTime, Subject, takeUntil } from 'rxjs';\r\nimport { GlobalStateService } from 'tango-app-ui-global'\r\nimport crypto from 'crypto-js';\r\nimport { Router } from '@angular/router';\r\n@Component({\r\n selector: \"lib-sidebar-menu\",\r\n templateUrl: \"./sidebar-menu.component.html\",\r\n styleUrls: [\"./sidebar-menu.component.scss\"],\r\n})\r\nexport class SidebarMenuComponent implements OnInit {\r\n usersList: any;\r\n authlocalStorageToken: string;\r\n oldDashboardRoutingUrl: any;\r\n clientData: any;\r\n headerFilters: any;\r\n showPlano: string;\r\n showEyetest: boolean = true;\r\n constructor(\r\n private authService: AuthService,\r\n public gs: GlobalStateService,private router:Router,\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.authlocalStorageToken = `${env.appVersion}-${env.USERDATA_KEY}`;\r\n this.oldDashboardRoutingUrl = env.oldDashboardRoutingUrl;\r\n }\r\n });\r\n }\r\n private readonly destroy$ = new Subject();\r\n previousClientId: any = null;\r\n ngOnInit(): void {\r\n this.getPlanoUsers();\r\n if (\"user-info\" in localStorage) {\r\n const userData: any = JSON.parse(\r\n localStorage.getItem(\"user-info\") || \"{}\"\r\n );\r\n this.usersList = userData;\r\n }\r\n this.gs?.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (data: any) => {\r\n this.headerFilters = data || this.headerFilters;\r\n \r\n const clientId = this.usersList?.clientId ?? this.headerFilters?.client;\r\n \r\n if (clientId && clientId !== this.previousClientId) {\r\n this.previousClientId = clientId; // Store last called clientId\r\n this.getClientData(clientId);\r\n }\r\n }\r\n });\r\n \r\n \r\n // this.gs?.dataRangeValue.pipe((takeUntil(this.destroy$)))?.subscribe({\r\n // next: (data: any) => {\r\n // if(data){\r\n // this.headerFilters = data;\r\n // if(this.usersList?.clientId || this.headerFilters?.client)\r\n // this.getClientData(this.usersList.clientId ? this.usersList.clientId: this.headerFilters.client)\r\n // }\r\n // else {\r\n // if(this.usersList?.clientId || this.headerFilters?.client)\r\n // this.getClientData(this.usersList.clientId ? this.usersList.clientId: this.headerFilters.client)\r\n // }\r\n // }\r\n // })\r\n\r\n }\r\n\r\n getPlanoUsers() {\r\n this.authService.getPlanoUsers().pipe(takeUntil(this.destroy$), debounceTime(100))?.subscribe((res: any) => {\r\n this.showPlano = res?.message || \"Unauthorized\"; \r\n });\r\n }\r\n \r\n oldDashborad() {\r\n let obj = { username: this.usersList?.email };//this.usersList?.email}; // Assuming this is required for authentication/authorization\r\n this.authService\r\n .getOldDashboardRedirect(obj)\r\n .pipe((takeUntil(this.destroy$)), debounceTime(100))?.subscribe((res: any) => {\r\n if (res && res.code === 200) {\r\n // Assuming res.data contains necessary authentication/authorization information\r\n var ciphertext = encodeURIComponent(\r\n crypto.AES.encrypt(\r\n JSON.stringify(res.data),\r\n \"secret key 123\"\r\n ).toString()\r\n );\r\n var queryParams = `?token=${ciphertext}`;\r\n var baseUrl = `${this.oldDashboardRoutingUrl}/auth/login`;\r\n var url = `${baseUrl}${queryParams}`;\r\n // // Opening the URL in a new tab/window\r\n // // Note: This might trigger popup blockers if not invoked by user action\r\n var newTab = window.open(url, \"_blank\");\r\n \r\n // // Handle popup blocked scenario\r\n // if (!newTab || newTab.closed || typeof newTab.closed === 'undefined') {\r\n // Redirect to the URL in the current window if popup is blocked\r\n // window.location.href = url;\r\n // }\r\n } else {\r\n // Handle error case\r\n console.error(\"Error: Unable to retrieve redirection data.\");\r\n // Optionally, display an error message to the user\r\n }\r\n });\r\n \r\n }\r\n getClientData(clientID: any) {\r\n if (!clientID) return;\r\n \r\n this.authService.getBrandDetails(clientID)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res?.code === 200) {\r\n this.clientData = res.data;\r\n localStorage.setItem(\"client-details\", JSON.stringify(this.clientData?.featureConfigs));\r\n }\r\n },\r\n error: (error) => {\r\n console.error(\"Error fetching client data\", error);\r\n }\r\n });\r\n }\r\n \r\n}\r\n","<!--begin::Menu wrapper-->\r\n<div id=\"kt_app_sidebar_menu_scroll\" class=\"scroll-y my-5 ms-2 me-0\" data-kt-scroll=\"true\" data-kt-scroll-activate=\"true\"\r\n data-kt-scroll-height=\"auto\" data-kt-scroll-dependencies=\"#kt_app_sidebar_logo, #kt_app_sidebar_footer\"\r\n data-kt-scroll-wrappers=\"#kt_app_sidebar_menu\" data-kt-scroll-offset=\"5px\" data-kt-scroll-save-state=\"true\">\r\n <!--begin::Menu-->\r\n <div class=\"menu menu-column menu-rounded menu-sub-indention fw-semibold fs-6\" id=\"#kt_app_sidebar_menu\"\r\n data-kt-menu=\"true\" data-kt-menu-expand=\"false\">\r\n <!-- Birds Eye -->\r\n <!-- <div *ngIf=\"!clientData?.featureConfigs?.isNewDashboard && (gs.userAccess | async)?.userType !== 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/birds_eye.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Analytics</span>\r\n </a>\r\n </div> -->\r\n\r\n <!-- Analyse -->\r\n <div *ngIf=\"clientData?.featureConfigs?.isNewDashboard || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here\">\r\n <span class=\"menu-link px-0\">\r\n <span style=\"width: 0px;\" class=\"menu-icon\">\r\n <img class=\"fs-2 ms-15\" src=\"./assets/tango/sidemenu-icons/tango_eye.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title ms-15 text-nowrap\">Tango Eye\r\n </span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion\" routerLinkActive=\"menu-active-bg\" >\r\n <div class=\"menu-sub menu-sub-accordion mx-2\" routerLinkActive=\"menu-active-bg\">\r\n <div *ngIf=\"clientData?.featureConfigs?.isNewTraffic && ((gs.userAccess | async)?.userType !== 'tango') || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/traffic\">\r\n <span class=\"menu-title ms-8\">Traffic\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\" *ngIf=\"clientData?.featureConfigs?.isNewZone && ((gs.userAccess | async)?.userType !== 'tango') || (gs.userAccess | async)?.userType === 'tango'\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/zones/v1\">\r\n <span class=\"menu-title ms-8\">Zones\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\" *ngIf=\"clientData?.featureConfigs?.isNewZoneV2 && ((gs.userAccess | async)?.userType !== 'tango') || (gs.userAccess | async)?.userType === 'tango'\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/zones/v2\">\r\n <span class=\"menu-title ms-8\">Zone V2\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"clientData?.featureConfigs?.isTrax || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/trax/dashboard\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/tango_trax.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title ms-3 text-nowrap\">Tango Trax\r\n </span>\r\n </a>\r\n </div> \r\n \r\n <!-- EYE TEST CO-Pilot -->\r\n <div *ngIf=\"showEyetest\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/eyetest\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"18\" viewBox=\"0 0 16 18\" fill=\"none\">\r\n <path d=\"M8.66665 1.5L2 10.5H7.99998L7.33332 16.5L14 7.5H7.99998L8.66665 1.5Z\" stroke=\"#667085\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title ms-3 text-nowrap\">Eye Test</span>\r\n </a>\r\n </div>\r\n\r\n <div class=\"menu-item\" *ngIf=\"showPlano === 'Authorized'\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/planogram/manage-planograms\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" class=\"fs-2\">\r\n <path\r\n d=\"M13.3336 6H11.8667L10.5336 7.33344H8.66671V6H4.66671V11.3334H3.33359C3.15676 11.3307 2.98116 11.3632 2.81699 11.4289C2.65283 11.4947 2.50339 11.5925 2.37738 11.7166C2.25136 11.8406 2.15129 11.9885 2.08298 12.1517C2.01467 12.3148 1.97949 12.4899 1.97949 12.6667C1.97949 12.8436 2.01467 13.0186 2.08298 13.1818C2.15129 13.3449 2.25136 13.4928 2.37738 13.6169C2.50339 13.741 2.65283 13.8387 2.81699 13.9045C2.98116 13.9703 3.15676 14.0027 3.33359 14H13.3336C13.5104 14 13.6799 13.9298 13.8049 13.8048C13.9299 13.6798 14.0001 13.5102 14.0001 13.3334V6.66656C14.0001 6.48978 13.9299 6.32023 13.8049 6.19523C13.6799 6.07023 13.5104 6 13.3336 6ZM4.66671 4V11.3334H3.33359C2.97999 11.3334 2.64088 11.4739 2.39082 11.7239C2.14076 11.9739 2.00023 12.313 2.00015 12.6666V5.33344C2.00015 4.97979 2.14064 4.64062 2.3907 4.39056C2.64077 4.14049 2.97994 4 3.33359 4H4.66671Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M4.66671 11.3334V6H8.66671V7.33344H10.5336L11.8667 6H13.3336C13.5104 6 13.6799 6.07023 13.8049 6.19523C13.9299 6.32023 14.0001 6.48978 14.0001 6.66656V13.3334C14.0001 13.5102 13.9299 13.6798 13.8049 13.8048C13.6799 13.9298 13.5104 14 13.3336 14H3.33359C3.15676 14.0027 2.98116 13.9703 2.81699 13.9045C2.65283 13.8387 2.50339 13.741 2.37738 13.6169C2.25136 13.4928 2.15129 13.3449 2.08298 13.1818C2.01467 13.0186 1.97949 12.8436 1.97949 12.6667C1.97949 12.4899 2.01467 12.3148 2.08298 12.1517C2.15129 11.9885 2.25136 11.8406 2.37738 11.7166C2.50339 11.5925 2.65283 11.4947 2.81699 11.4289C2.98116 11.3632 3.15676 11.3307 3.33359 11.3334M4.66671 11.3334H3.33359M4.66671 11.3334V4H3.33359C2.97994 4 2.64077 4.14049 2.3907 4.39056C2.14064 4.64062 2.00015 4.97979 2.00015 5.33344V12.6666C2.00023 12.313 2.14076 11.9739 2.39082 11.7239C2.64088 11.4739 2.97999 11.3334 3.33359 11.3334\"\r\n stroke=\"#98A2B3\" stroke-width=\"0.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M13.8067 3.12656L12.8732 2.19344C12.7486 2.07133 12.5811 2.00293 12.4067 2.00293C12.2322 2.00293 12.0647 2.07133 11.9401 2.19344L8.6665 5.46704V7.3336H10.5334L13.8067 4.06C13.9288 3.9354 13.9972 3.7679 13.9972 3.59344C13.9972 3.41898 13.9288 3.25116 13.8067 3.12656Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title ms-3 text-nowrap\">Planogram</span>\r\n </a>\r\n </div> \r\n<div *ngIf=\"clientData?.featureConfigs?.isAIManager || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/employee-metrics/aiManager\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n<g clip-path=\"url(#clip0_11702_17257)\">\r\n<path d=\"M3.33398 1.33398L3.46064 1.96065C3.55142 2.41065 3.75682 2.8296 4.05698 3.17695C4.35714 3.52429 4.74188 3.78826 5.17397 3.94332L5.33397 4.00065L5.17397 4.05798C4.74188 4.21304 4.35714 4.47701 4.05698 4.82435C3.75682 5.1717 3.55142 5.59065 3.46064 6.04065L3.33398 6.66732L3.20731 6.04065C3.11654 5.59065 2.91113 5.1717 2.61097 4.82435C2.31082 4.47701 1.92607 4.21304 1.49398 4.05798L1.33398 4.00065L1.49398 3.94332C1.92607 3.78826 2.31082 3.52429 2.61097 3.17695C2.91113 2.8296 3.11654 2.41065 3.20731 1.96065L3.33398 1.33398ZM5.33397 10.6673L5.48731 11.518C5.52712 11.7399 5.62255 11.9481 5.76467 12.1231C5.90679 12.2981 6.09096 12.4342 6.29997 12.5187L6.6673 12.6673L6.29997 12.816C6.09092 12.9003 5.90667 13.0363 5.76443 13.2112C5.6222 13.386 5.52662 13.5941 5.48664 13.816L5.33397 14.6673L5.18064 13.8167C5.14082 13.5948 5.0454 13.3866 4.90328 13.2116C4.76116 13.0366 4.57698 12.9005 4.36798 12.816L4.00064 12.6673L4.36798 12.5187C4.57702 12.4343 4.76128 12.2983 4.90351 12.1235C5.04575 11.9486 5.14132 11.7405 5.18131 11.5187L5.33397 10.6673ZM10.6673 2.00065L11.038 3.76998C11.2269 4.67204 11.6463 5.50975 12.2554 6.20143C12.8645 6.89311 13.6424 7.41515 14.5133 7.71665L15.3339 8.00065L14.5133 8.28465C13.6424 8.58615 12.8645 9.10819 12.2554 9.79987C11.6463 10.4916 11.2269 11.3293 11.038 12.2313L10.6673 14.0007L10.2966 12.2313C10.1077 11.3293 9.68827 10.4916 9.0792 9.79987C8.47013 9.10819 7.69221 8.58615 6.8213 8.28465L6.00064 8.00065L6.8213 7.71665C7.69221 7.41515 8.47013 6.89311 9.0792 6.20143C9.68827 5.50975 10.1077 4.67204 10.2966 3.76998L10.6673 2.00065Z\" stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</g>\r\n<defs>\r\n<clipPath id=\"clip0_11702_17257\">\r\n<rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n</clipPath>\r\n</defs>\r\n</svg>\r\n </span>\r\n <span class=\"menu-title ms-3 text-nowrap\">AI Manager\r\n </span>\r\n </a>\r\n </div> \r\n\r\n <div *ngIf=\"clientData?.featureConfigs?.isAIManagerAccessControl || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/employee-metrics/beeahLive\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n<g clip-path=\"url(#clip0_13388_25837)\">\r\n<path d=\"M10.9974 1.66406H13.664C13.8408 1.66406 14.0104 1.7343 14.1354 1.85932C14.2605 1.98435 14.3307 2.15392 14.3307 2.33073V4.9974M14.3307 10.9974V13.6641C14.3307 13.8409 14.2605 14.0104 14.1354 14.1355C14.0104 14.2605 13.8408 14.3307 13.664 14.3307H10.9974M4.99739 14.3307H2.33073C2.15392 14.3307 1.98435 14.2605 1.85932 14.1355C1.7343 14.0104 1.66406 13.8409 1.66406 13.6641V10.9974M1.66406 4.9974V2.33073C1.66406 2.15392 1.7343 1.98435 1.85932 1.85932C1.98435 1.7343 2.15392 1.66406 2.33073 1.66406H4.99739\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n<path d=\"M7.99999 12.6615C10.209 12.6615 12 10.5721 12 7.99479C12 5.41746 10.209 3.32812 7.99999 3.32812C5.79099 3.32812 4 5.41746 4 7.99479C4 10.5721 5.79099 12.6615 7.99999 12.6615Z\" stroke=\"#667085\" stroke-width=\"2\"/>\r\n<path d=\"M2 8H14M6.68999 10.0353C7.11232 10.3477 7.54898 10.5037 7.99998 10.5037C8.45065 10.5037 8.89931 10.3477 9.34598 10.0353\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"/>\r\n</g>\r\n<defs>\r\n<clipPath id=\"clip0_13388_25837\">\r\n<rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n</clipPath>\r\n</defs>\r\n</svg>\r\n </span>\r\n <span class=\"menu-title ms-3 text-nowrap\">AI Manager - Access Control\r\n </span>\r\n </a>\r\n </div> \r\n \r\n <!-- <div *ngIf=\"!clientData?.featureConfigs?.isNewDashboard || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here\">\r\n <span class=\"menu-link px-0\">\r\n <span style=\"width: 0px;\" class=\"menu-icon \">\r\n <img class=\"fs-2 ms-15\" src=\"./assets/tango/sidemenu-icons/tango_trax.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title ms-15\">Tango Trax\r\n </span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion\" routerLinkActive=\"menu-active-bg\" >\r\n <div class=\"menu-sub menu-sub-accordion mx-2\" routerLinkActive=\"menu-active-bg\">\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/trax/checklist\">\r\n <span class=\"menu-title ms-8\">Checklist\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div *ngIf=\"clientData?.featureConfigs?.isControlCenter && this.usersList?.userType !=='tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/controlcenter\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/ControlCenter.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title ms-3 text-nowrap\" >Control Center\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"clientData?.featureConfigs?.isNewDashboard || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/traffic/explore\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/Explore.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title ms-3\">Explore\r\n </span>\r\n </a>\r\n </div> \r\n <div *ngIf=\"clientData?.featureConfigs?.isNewDashboard && clientData?.featureConfigs?.isNewReports && ((gs.userAccess | async)?.userType !== 'tango') || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/analyse/reports\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/reports.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title ms-3\">Reports\r\n </span>\r\n </a>\r\n </div> \r\n \r\n <!-- Manage -->\r\n <div *ngIf=\"(gs.userAccess | async)?.userType !== 'lead'\" class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here\">\r\n <span class=\"menu-link px-0\">\r\n <span style=\"width: 0px;\" class=\"menu-icon \">\r\n <img class=\"fs-2 ms-15\" src=\"./assets/tango/sidemenu-icons/manage.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title ms-15\">Manage\r\n </span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion\" routerLinkActive=\"menu-active-bg\" >\r\n <div class=\"menu-sub menu-sub-accordion mx-2\" routerLinkActive=\"menu-active-bg\">\r\n <div class=\"menu-item\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/brands\">\r\n \r\n <span class=\"menu-title ms-8\">Brands\r\n </span>\r\n </a>\r\n </div>\r\n \r\n \r\n \r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/summary\">\r\n \r\n <span class=\"menu-title ms-8\">Summary\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/stores\">\r\n \r\n <span class=\"menu-title ms-8\">Stores\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/users/client\">\r\n \r\n <span class=\"menu-title ms-8\">Users\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/users/tango\">\r\n \r\n <span class=\"menu-title ms-8\">Tango Users\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/tickets\" >\r\n \r\n <span class=\"menu-title ms-8\">Tickets\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/reports\" >\r\n \r\n <span class=\"menu-title ms-8\">Reports\r\n </span>\r\n </a>\r\n </div>\r\n \r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/audit\" >\r\n \r\n <span class=\"menu-title ms-8\">Audit\r\n </span>\r\n </a>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/billing\">\r\n \r\n <span class=\"menu-title ms-8\">Billing\r\n </span>\r\n </a>\r\n </div> \r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/settings\" >\r\n \r\n <span class=\"menu-title ms-8\">Settings\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/user-analysis\" >\r\n \r\n <span class=\"menu-title ms-8\">User Analysis\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n \r\n </div>\r\n\r\n <!-- Workspace -->\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" [routerLink]=\"['/tickets/users']\" [queryParams]=\"{ type: 'installation' }\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/Workspace.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title ms-3\">Workspace\r\n </span>\r\n </a>\r\n </div>\r\n <!--end::Menu-->\r\n</div>\r\n</div>\r\n<!--end::Menu wrapper-->\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <!-- <div *ngIf=\"!clientData?.featureConfigs?.isNewDashboard || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here\">\r\n <span class=\"menu-link px-0\">\r\n <span style=\"width: 0px;\" class=\"menu-icon\">\r\n </span>\r\n <span class=\"menu-title \" data-link=\"/manage/traffic\">ANALYZE\r\n </span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n \r\n <div class=\"menu-sub menu-sub-accordion\" routerLinkActive=\"menu-active-bg\" >\r\n <div *ngIf=\"!clientData?.featureConfigs?.isNewDashboard || (gs.userAccess | async)?.userType === 'tango'\"\r\n class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here\">\r\n <span class=\"menu-link px-0\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M0.677249 15.8223H5.41799C6.09524 15.8223 6.09524 15.5214 6.09524 14.318V6.83461C6.09524 6.39794 5.79228 6.04449 5.41799 6.04449H0.677249C0.2709 6.04449 0 6.34534 0 6.79663V15.0701C0 15.5214 0.2709 15.8223 0.677249 15.8223Z\" fill=\"#475467\"/>\r\n <path d=\"M0.673874 4.44444H5.39099C5.79531 4.44444 6.06486 4.08889 6.06486 3.55555V0.888888C6.06486 0.355555 5.79531 0 5.39099 0H0.673874C0.269549 0 0 0.355555 0 0.888888V3.55555C0 4 0.269549 4.44444 0.673874 4.44444Z\" fill=\"#475467\"/>\r\n <path d=\"M2.27003 1.9131C2.27003 2.20178 2.09173 2.4358 1.87179 2.4358C1.65185 2.4358 1.47354 2.20178 1.47354 1.9131C1.47354 1.62443 1.65185 1.39041 1.87179 1.39041C2.09173 1.39041 2.27003 1.62443 2.27003 1.9131Z\" fill=\"#667085\"/>\r\n <path d=\"M3.46448 1.9131C3.46448 2.20178 3.28618 2.4358 3.06623 2.4358C2.84629 2.4358 2.66799 2.20178 2.66799 1.9131C2.66799 1.62443 2.84629 1.39041 3.06623 1.39041C3.28618 1.39041 3.46448 1.62443 3.46448 1.9131Z\" fill=\"#667085\"/>\r\n <path d=\"M4.66025 1.9131C4.66025 2.20178 4.48195 2.4358 4.262 2.4358C4.04206 2.4358 3.86376 2.20178 3.86376 1.9131C3.86376 1.62443 4.04206 1.39041 4.262 1.39041C4.48195 1.39041 4.66025 1.62443 4.66025 1.9131Z\" fill=\"#667085\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.61905 16V0H8.38095V16H7.61905Z\" fill=\"#667085\"/>\r\n <path d=\"M15.3227 0H10.582C10.1757 0 9.90476 0.300855 9.90476 0.752137V9.02564C9.90476 9.47692 10.1757 9.77778 10.582 9.77778H15.3227C15.7291 9.77778 16 9.47692 16 9.02564V0.752137C16 0.300855 15.7291 0 15.3227 0Z\" fill=\"#475467\"/>\r\n <path d=\"M9.93519 15.1111V12.4444C9.93519 11.9111 10.2047 11.5556 10.6091 11.5556H15.3261C15.7305 11.5556 16 11.9111 16 12.4444V15.1111C16 15.6444 15.7305 16 15.3261 16H10.6091C10.2047 16 9.93519 15.6444 9.93519 15.1111Z\" fill=\"#475467\"/>\r\n <path d=\"M12.0531 13.4336C12.0531 13.7223 11.8748 13.9563 11.6549 13.9563C11.4349 13.9563 11.2566 13.7223 11.2566 13.4336C11.2566 13.1449 11.4349 12.9109 11.6549 12.9109C11.8748 12.9109 12.0531 13.1449 12.0531 13.4336Z\" fill=\"#667085\"/>\r\n <path d=\"M13.2475 13.4336C13.2475 13.7223 13.0692 13.9563 12.8493 13.9563C12.6294 13.9563 12.4511 13.7223 12.4511 13.4336C12.4511 13.1449 12.6294 12.9109 12.8493 12.9109C13.0692 12.9109 13.2475 13.1449 13.2475 13.4336Z\" fill=\"#667085\"/>\r\n <path d=\"M14.4433 13.4336C14.4433 13.7223 14.265 13.9563 14.0451 13.9563C13.8251 13.9563 13.6468 13.7223 13.6468 13.4336C13.6468 13.1449 13.8251 12.9109 14.0451 12.9109C14.265 12.9109 14.4433 13.1449 14.4433 13.4336Z\" fill=\"#667085\"/>\r\n </svg>\r\n </span>\r\n <span class=\"menu-title\" data-link=\"\">Tango Eye\r\n </span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion mx-2\" routerLinkActive=\"menu-active-bg\">\r\n <div *ngIf=\"(gs.userAccess | async)?.analytics_tangoTraffic_isView\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/traffic\">\r\n <span class=\"menu-bullet\">\r\n </span>\r\n <span class=\"menu-title\">Traffic\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\" *ngIf=\"(gs.userAccess | async)?.analytics_tangoZone_isView && clientData?.featureConfigs?.isNewZone && ((gs.userAccess | async)?.userType !== 'tango') || (gs.userAccess | async)?.userType === 'tango'\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/zones/v1\">\r\n <span class=\"menu-bullet\">\r\n </span>\r\n <span class=\"menu-title\">Zones\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/zones/v2\">\r\n <span class=\"menu-bullet\">\r\n </span>\r\n <span class=\"menu-title\">Zone V2\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"this.usersList?.clientId ? this.usersList?.clientId === '11': this.headerFilters?.client === '11'\" class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here\">\r\n <span class=\"menu-link px-0\" routerLinkActive=\"active\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M9.84985 0.264419C9.5033 -0.0881395 8.97086 -0.0881395 8.62713 0.264419L2.76722 6.25478C2.5024 6.5231 2.40943 6.94117 2.52776 7.31557C4.9816 8.10493 6.91142 10.2546 7.60729 12.9815H12.8445C13.5912 12.9815 14.1968 12.3107 14.1968 11.4839V7.98637H15.0984C15.4702 7.98637 15.8027 7.73365 15.938 7.35301C16.0732 6.97238 15.983 6.53557 15.7098 6.25478L9.84985 0.264419ZM7.88619 6.48878C7.88619 6.21422 8.08904 5.98958 8.33696 5.98958H10.14C10.388 5.98958 10.5908 6.21422 10.5908 6.48878V8.48556C10.5908 8.76013 10.388 8.98476 10.14 8.98476H8.33696C8.08904 8.98476 7.88619 8.76013 7.88619 8.48556V6.48878Z\" fill=\"#667085\"/>\r\n <path d=\"M0 8.76165C0 8.34669 0.301447 8.01285 0.676143 8.01285C4.28506 8.01285 7.2122 11.2545 7.2122 15.2512C7.2122 15.6662 6.91075 16 6.53606 16C6.16136 16 5.85991 15.6662 5.85991 15.2512C5.85991 12.0813 3.53848 9.51044 0.676143 9.51044C0.301447 9.51044 0 9.1766 0 8.76165Z\" fill=\"#D0D5DD\"/>\r\n <path d=\"M1.539 15.7076C1.36993 15.8948 1.14062 16 0.901525 16C0.662426 16 0.43312 15.8948 0.264051 15.7076C0.0949818 15.5203 0 15.2664 0 15.0017C0 14.7368 0.0949818 14.4829 0.264051 14.2956C0.43312 14.1084 0.662426 14.0032 0.901525 14.0032C1.14062 14.0032 1.36993 14.1084 1.539 14.2956C1.70807 14.4829 1.80305 14.7368 1.80305 15.0017C1.80305 15.2664 1.70807 15.5203 1.539 15.7076Z\" fill=\"#D0D5DD\"/>\r\n <path d=\"M0.676143 12.5056C0.301447 12.5056 0 12.1717 0 11.7568C0 11.3418 0.301447 11.0081 0.676143 11.0081C2.79191 11.0081 4.50762 12.9081 4.50762 15.2512C4.50762 15.6662 4.20618 16 3.83148 16C3.45678 16 3.15534 15.6662 3.15534 15.2512C3.15534 13.7349 2.04533 12.5056 0.676143 12.5056Z\" fill=\"#D0D5DD\"/>\r\n </svg>\r\n </span>\r\n <span class=\"menu-title\" routerLink=\"/manage/controlcenter\">Control Center \r\n </span>\r\n \r\n </span>\r\n </div>\r\n \r\n <div *ngIf=\"!clientData?.featureConfigs?.isNewDashboard || (gs.userAccess | async)?.userType === 'tango'\"\r\n class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here\">\r\n <span class=\"menu-link px-0\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M14.3843 6.77809L13.3937 6.58122C13.1468 6.53122 12.8937 6.60935 12.7156 6.78747L12.2343 7.26872C11.8718 7.63122 11.2625 7.53122 11.0343 7.07498L10.7437 6.49685C10.5937 6.19685 10.2875 6.00622 9.94997 6.00622C9.47497 6.00622 9.13435 6.46248 9.27185 6.91873L9.45935 7.5406C9.6031 8.02185 9.24372 8.50623 8.7406 8.50623H8.66872C8.24998 8.50623 7.85935 8.71561 7.6281 9.06249L7.29373 9.56561C7.11873 9.83123 7.1281 10.1781 7.31873 10.4312L7.82185 11.1031C8.14373 11.5312 7.92498 12.15 7.4031 12.2812L6.87185 12.4156C6.63748 12.475 6.44686 12.6406 6.35623 12.8656L5.84373 14.1437C6.51873 14.3719 7.24373 14.5 7.99998 14.5C11.5906 14.5 14.5 11.5906 14.5 7.99998C14.5 7.58123 14.4593 7.17184 14.3843 6.77809ZM1.64375 6.63435C1.83124 6.63435 1.81249 6.68122 1.92499 6.60935L2.41874 6.47185C2.62812 6.41247 2.84999 6.49997 2.96562 6.68122L3.02812 6.77809C3.21562 7.07184 3.54061 7.24997 3.89061 7.24997C4.24061 7.24997 4.56561 7.07184 4.75311 6.77809L4.94374 6.48122C4.98749 6.41247 5.04998 6.3531 5.12186 6.3156L6.24998 5.68435C6.81561 5.36872 7.04685 4.67185 6.78123 4.08123L6.60935 3.69374C6.34061 3.09374 5.64998 2.80311 5.03124 3.03436L4.94999 3.06561C4.63749 3.18123 4.66874 3.08437 4.39999 2.88749L3.96874 2.90311C2.39999 3.68749 1.92187 4.98436 1.6 6.48748L1.64375 6.63435ZM16 7.99998C16 10.1217 15.1571 12.1566 13.6568 13.6568C12.1565 15.1571 10.1217 16 7.99998 16C5.87825 16 3.84343 15.1571 2.34314 13.6568C0.842852 12.1566 0 10.1217 0 7.99998C0 5.87825 0.842852 3.84342 2.34314 2.34314C3.84343 0.842851 5.87825 0 7.99998 0C10.1217 0 12.1565 0.842851 13.6568 2.34314C15.1571 3.84342 16 5.87825 16 7.99998ZM11.4843 5.12185C11.55 4.8531 11.3875 4.58123 11.1218 4.5156L10.1218 4.2656C9.8531 4.19998 9.58122 4.36248 9.5156 4.6281C9.44997 4.89373 9.61247 5.16872 9.8781 5.23435L10.8781 5.48435C11.1468 5.54997 11.4187 5.38747 11.4843 5.12185ZM8.60935 5.74685C8.67497 5.4781 8.51248 5.20622 8.24685 5.1406C7.98123 5.07498 7.70623 5.23747 7.6406 5.5031L7.3906 6.5031C7.32498 6.77184 7.48748 7.04373 7.7531 7.10935C8.01873 7.17497 8.29373 7.01247 8.35935 6.74685L8.60935 5.74685Z\"\r\n fill=\"#475467\" />\r\n <path\r\n d=\"M2.45522 6.05254C2.59366 6.24051 2.35423 6.2781 2.22966 6.2781C2.10509 6.2781 2.0041 6.17711 2.0041 6.05254C2.0041 5.92797 2.10509 5.67661 2.22966 5.67661C2.35423 5.67661 2.45522 5.92797 2.45522 6.05254Z\"\r\n fill=\"#475467\" />\r\n <path\r\n d=\"M4.20498 11.8559C4.62113 11.3337 5.57024 10.0682 5.57024 9.35736C5.57024 8.49526 4.87261 7.79579 4.01273 7.79579C3.15285 7.79579 2.45522 8.49526 2.45522 9.35736C2.45522 10.0682 3.40433 11.3337 3.82047 11.8559C3.92025 11.9803 4.10521 11.9803 4.20498 11.8559ZM4.01273 8.83684C4.15042 8.83684 4.28247 8.89168 4.37984 8.98929C4.4772 9.08691 4.5319 9.21931 4.5319 9.35736C4.5319 9.49541 4.4772 9.62781 4.37984 9.72542C4.28247 9.82304 4.15042 9.87788 4.01273 9.87788C3.87504 9.87788 3.74298 9.82304 3.64562 9.72542C3.54826 9.62781 3.49356 9.49541 3.49356 9.35736C3.49356 9.21931 3.54826 9.08691 3.64562 8.98929C3.74298 8.89168 3.87504 8.83684 4.01273 8.83684Z\"\r\n fill=\"#667085\" />\r\n <path\r\n d=\"M13.0419 10.2943C13.9436 9.11946 16 6.27207 16 4.6727C16 2.73295 14.4884 1.1592 12.6253 1.1592C10.7623 1.1592 9.25074 2.73295 9.25074 4.6727C9.25074 6.27207 11.3071 9.11946 12.2088 10.2943C12.425 10.5743 12.8257 10.5743 13.0419 10.2943ZM12.6253 3.50153C12.9237 3.50153 13.2098 3.62492 13.4207 3.84456C13.6317 4.06419 13.7502 4.36208 13.7502 4.6727C13.7502 4.98331 13.6317 5.2812 13.4207 5.50083C13.2098 5.72047 12.9237 5.84386 12.6253 5.84386C12.327 5.84386 12.0409 5.72047 11.8299 5.50083C11.619 5.2812 11.5005 4.98331 11.5005 4.6727C11.5005 4.36208 11.619 4.06419 11.8299 3.84456C12.0409 3.62492 12.327 3.50153 12.6253 3.50153Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title\" data-link=\"\">Tango Trax\r\n </span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion\" routerLinkActive=\"menu-active-bg\">\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/trax/checklist\">\r\n <span class=\"menu-bullet\">\r\n </span>\r\n <span class=\"menu-title\">Checklist\r\n </span>\r\n </a>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n</div>\r\n\r\n<div *ngIf=\"!clientData?.featureConfigs?.isNewDashboard || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here\">\r\n <span class=\"menu-link px-0\" routerLinkActive=\"active\" routerLink=\"/manage/analyse/reports\">\r\n <span style=\"width: 0px;\" class=\"menu-icon\">\r\n </span>\r\n <span class=\"menu-title\" data-link=\"/manage/traffic\">REPORTS\r\n </span>\r\n \r\n </span>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || (gs.userAccess | async)?.userType === 'client'\" class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here\">\r\n <span class=\"menu-link px-0\">\r\n <span style=\"width: 0px;\" class=\"menu-icon\">\r\n </span>\r\n <span class=\"menu-title\" data-link=\"/manage\">MANAGE\r\n </span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion\" routerLinkActive=\"menu-active-bg\" >\r\n <div *ngIf=\"(gs.userAccess | async)?.manage_brands_isView && (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/brands\">\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/brands.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Brands\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.manage_summary_isView\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/summary\">\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/overview.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Summary\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.stores_stores_isView\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/stores\">\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/stores.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Stores\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.tickets_infra_isView || (gs.userAccess | async)?.tickets_dataMismatch_isView || (gs.userAccess | async)?.tickets_employeeMat_isView || (gs.userAccess | async)?.tickets_installation_isView \" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/tickets\" >\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/tickets.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Tickets\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.manage_reports_isView && (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/reports\" >\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/reports.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Reports\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.users_users_isView\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/users/client\">\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/users.svg\" alt=\"\">\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.settings_paymentSubscriptions_isView || (gs.userAccess | async)?.settings_activityLog_isView || (gs.userAccess | async)?.settings_brandDetails_isView || (gs.userAccess | async)?.settings_configuration_isView || (gs.userAccess | async)?.settings_contactDirectory_isView || (gs.userAccess | async)?.settings_documents_isView\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/settings\" >\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/settings.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Settings\r\n </span>\r\n </a>\r\n </div>\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/users/tango\">\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/users.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Tango Users\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/manage/billing\">\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/billing.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Billing\r\n </span>\r\n </a>\r\n </div> \r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here\">\r\n <span class=\"menu-link px-0\" routerLinkActive=\"active\" [routerLink]=\"['/tickets/users']\" [queryParams]=\"{ type: 'installation' }\">\r\n <span style=\"width: 0px;\" class=\"menu-icon\">\r\n </span>\r\n <span class=\"menu-title\" data-link=\"/tickets\">MY WORKSPACE\r\n </span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion\" routerLinkActive=\"menu-active-bg\" >\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" routerLink=\"/tickets/stores\">\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/stores.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Stores\r\n </span>\r\n </a>\r\n </div>\r\n \r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" [routerLink]=\"['/tickets/users']\" [queryParams]=\"{ type: 'installation' }\" >\r\n <span class=\"menu-bullet\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/tickets.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Tickets\r\n </span>\r\n </a>\r\n </div>\r\n \r\n </div>\r\n </div> -->\r\n\r\n\r\n\r\n\r\n\r\n <!-- Tango Traffic -->\r\n <!-- <div *ngIf=\"(gs.userAccess | async)?.analytics_tangoTraffic_isView && clientData?.featureConfigs?.isNewTraffic && ((gs.userAccess | async)?.userType !== 'tango') || (gs.userAccess | async)?.userType === 'tango'\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/tango_traffic.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Tango Traffic</span>\r\n </a>\r\n </div> -->\r\n\r\n <!-- Tango Zone -->\r\n <!-- <div *ngIf=\"(gs.userAccess | async)?.analytics_tangoZone_isView\" class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/tango_zone.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\">Tango Zone</span>\r\n </a>\r\n </div> -->\r\n\r\n <!-- Tango Revop -->\r\n <!-- <div class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here show\">\r\n <span class=\"menu-link\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/tango_revop.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\" data-link=\"/crafted/account\">Tango Revop\r\n </span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion\" routerLinkActive=\"menu-active-bg\">\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Home\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Tagging\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Pending Action\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Customer Profile\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <!-- Control Center -->\r\n <!-- <div *ngIf=\"(gs.userAccess | async)?.analytics_controlCenter_isView\" class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here show\">\r\n <span class=\"menu-link\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/control_center.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\" data-link=\"/crafted/account\">Control Center\r\n </span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion\" routerLinkActive=\"menu-active-bg\">\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Live & Playback\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Screen Manager\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Store Explore\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <!-- Tango SOP -->\r\n <!-- <div *ngIf=\"(gs.userAccess | async)?.analytics_tangoSop_isView\" class=\"menu-item menu-accordion\" data-kt-menu-trigger=\"click\" routerLinkActive=\"here show\">\r\n <span class=\"menu-link\">\r\n <span class=\"menu-icon\">\r\n <img class=\"fs-2\" src=\"./assets/tango/sidemenu-icons/tango_sop.svg\" alt=\"\">\r\n </span>\r\n <span class=\"menu-title\" data-link=\"/crafted/account\">Tango SOP\r\n </span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion\" routerLinkActive=\"menu-active-bg\">\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Dashboard\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Create & Manage\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Flag\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Reports\r\n </span>\r\n </a>\r\n </div>\r\n <div class=\"menu-item\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\" (click)=\"oldDashborad()\">\r\n <span class=\"menu-bullet\">\r\n <span class=\"bullet bullet-dot\"></span>\r\n </span>\r\n <span class=\"menu-title\">Incidents\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n","import { Component, Input, NgZone, OnDestroy, OnInit } from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { AuthService } from '../../../../services/auth.service';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { GlobalStateService, LayoutService, LayoutType, PageInfoService } from 'tango-app-ui-global';\r\nimport { ToastService } from '../../../../services/toast.service';\r\n@Component({\r\n selector: \"lib-sidebar-footer\",\r\n templateUrl: \"./sidebar-footer.component.html\",\r\n styleUrls: [\"./sidebar-footer.component.scss\"],\r\n})\r\nexport class SidebarFooterComponent implements OnInit,OnDestroy {\r\n isSubMenuActive: boolean = false;\r\n userValue: any;\r\n hovered = false;\r\n private unsubscribe: Subscription[] = [];\r\n @Input() toggleButtonClass: string = '';\r\n @Input() toggleEnabled: boolean;\r\n @Input() toggleType: string = '';\r\n @Input() toggleState: string = '';\r\n currentLayoutType: LayoutType | null;\r\n @Input() userValuefooter: any='';\r\n toggleAttr: string;\r\n shouldShowMenuTop: boolean = true;\r\n private readonly destroy$ = new Subject();\r\n openshow: boolean =false;\r\n userProfileData: any;\r\n recaptchaSiteKey:any;\r\n constructor(private auth: AuthService, private router: Router,private layout: LayoutService,private pageInfo:PageInfoService, \r\n private ngZone: NgZone,private ts:ToastService,public gs:GlobalStateService) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.recaptchaSiteKey = env.recaptchaSiteKey\r\n }\r\n });\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n // Close the submenu whenever a navigation starts\r\n this.isSubMenuActive = false;\r\n }\r\n });\r\n }\r\n // isSubMenuActive: boolean = false;\r\n isArrowReversed: boolean = false;\r\n\r\n setArrowDirection(isMouseOver: boolean) {\r\n // console.log(isMouseOver)\r\n this.isArrowReversed = isMouseOver;\r\n }\r\n ngOnInit(): void {\r\n this.toggleAttr = `app-sidebar-${this.toggleType}`;\r\n const layoutSubscr = this.layout.currentLayoutTypeSubject\r\n .asObservable().pipe(takeUntil(this.destroy$))\r\n .subscribe((layout) => {\r\n this.currentLayoutType = layout;\r\n });\r\n this.unsubscribe.push(layoutSubscr);\r\n if ('user-info' in localStorage) {\r\n const userData: any = JSON.parse(\r\n localStorage.getItem('user-info') || \"{}\"\r\n );\r\n this.userValue = userData;\r\n }\r\n this.getProfile();\r\n }\r\n\r\n toggleMenu() {\r\n this.isSubMenuActive =!this.isSubMenuActive;\r\n }\r\n profileUrl() {\r\n this.isSubMenuActive = false;\r\n this.router.navigate(['/profile'])\r\n // setTimeout(() => {\r\n // this.closeMenu();\r\n // }, 10);\r\n}\r\ncloseMenu(){\r\n window.location.reload()\r\n}\r\n\r\nlogout() {\r\n this.auth.logout().pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code === 200) {\r\n this.cleanUpAndRedirect();\r\n } else {\r\n console.warn(\"Logout failed from server, forcing client logout.\");\r\n this.cleanUpAndRedirect();\r\n }\r\n },\r\n error: (err) => {\r\n console.error(\"Logout API error:\", err);\r\n // Still clear local data and redirect, but maybe also show a message\r\n this.cleanUpAndRedirect();\r\n this.ts.getErrorToast(\"Something went wrong while logging out. Please log in again.\");\r\n }\r\n });\r\n}\r\ncaptchaToken: string | null = null; \r\npublic cleanUpAndRedirect() {\r\n this.captchaToken = null;\r\n localStorage.removeItem(this.recaptchaSiteKey); \r\n sessionStorage.removeItem(this.recaptchaSiteKey);\r\n localStorage.clear();\r\n if ((window as any).grecaptcha) {\r\n try {\r\n (window as any).grecaptcha.reset();\r\n } catch (err) {\r\n console.warn('Captcha reset error:', err);\r\n }\r\n }\r\n this.pageInfo.setTitle('login');\r\n this.router.navigate([\"/auth/login\"]);\r\n}\r\n\r\n ngOnDestroy() {\r\n // this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n getProfile(){\r\n this.auth.getPersonalInfo().pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res:any) => {\r\n if (res && res.code == 200) {\r\n this.userProfileData = res.data;\r\n // this.twoFactorEnabled =\r\n // this.userProfileData?.twoFactorAuthentication?.isEnable || false;\r\n } \r\n },\r\n error: (err:any) => {\r\n console.log(err);\r\n },\r\n });\r\n } \r\n}\r\n","<div class=\"container-with-overflow\">\r\n <div id=\"kt_app_sidebar_menu_scroll\" class=\"\" data-kt-scroll=\"false\" data-kt-scroll-activate=\"false\"\r\n data-kt-scroll-height=\"auto\" data-kt-scroll-dependencies=\"#kt_app_sidebar_logo, #kt_app_sidebar_footer\"\r\n data-kt-scroll-wrappers=\"#kt_app_sidebar_menu\" data-kt-scroll-offset=\"5px\" data-kt-scroll-save-state=\"true\">\r\n <div class=\"menu menu-column menu-rounded menu-sub-indention fw-semibold fs-6\" id=\"kt_app_sidebar_menu\"\r\n data-kt-menu=\"true\" data-kt-menu-expand=\"false\">\r\n <div class=\"menu-item menu-accordion w-100 px-3\" id=\"#kt_app_sidebar_menu\" [ngClass]=\"{'active': isSubMenuActive}\"\r\n data-kt-menu-trigger=\"click\" (mouseover)=\"setArrowDirection(true)\"\r\n (mouseleave)=\"setArrowDirection(false)\" >\r\n <span class=\"menu-link without-sub\">\r\n <span class=\"menu-icon\">\r\n <img class=\"img-src\" *ngIf=\"userProfileData?.userProfile\" (error)=\"userProfileData.userProfile = null\" [src]=\"userProfileData?.userProfile ? userProfileData?.userProfile :'./assets/tango/Images/userProfile.svg'\" alt=\"Profile Image\">\r\n <img class=\"img-src\" *ngIf=\"!userProfileData?.userProfile\" src=\"assets/tango/Images/userProfile.svg\">\r\n </span>\r\n <span class=\"menu-title overflow-hidden ms-2\" data-link=\"/crafted/account\">{{ userValue.userName | titlecase}}<br>\r\n {{ userValue.email | titlecase}}</span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion w-100\" #accordion [class.show]=\"isSubMenuActive\" [ngClass]=\"{'menu-sub-top': isSubMenuActive}\"\r\n routerLinkActive=\"menu-active-bg\" >\r\n <div class=\"menu-item px-3 border-profile-first\">\r\n <a class=\"menu-link without-sub\" (click)=\"profileUrl()\" >\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M11.8574 3.83162C11.8574 5.94799 10.0668 7.66324 7.85742 7.66324C5.64805 7.66324 3.85742 5.94799 3.85742 3.83162C3.85742 1.71525 5.64805 0 7.85742 0C10.0668 0 11.8574 1.71525 11.8574 3.83162Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M6.36786 9.38452C2.85 9.38452 0 11.9226 0 15.0554C0 15.577 0.475 16.0001 1.06071 16.0001H14.9393C15.525 16.0001 16 15.577 16 15.0554C16 11.9226 13.15 9.38452 9.63214 9.38452H6.36786Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title overflow-hidden\">Profile</span>\r\n </a>\r\n </div>\r\n <!-- <div class=\"menu-item px-3\" style=\"border-radius: 0px;\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M14.2222 11.5556V8C14.2222 4.56356 11.4364 1.77778 8 1.77778C4.56356 1.77778 1.77778 4.56356 1.77778 8V11.5556H14.2222ZM16 11.5556H0V8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8V11.5556Z\"\r\n fill=\"#D0D5DD\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M1.77778 9.77759H2.66667C3.64851 9.77759 4.44444 10.5735 4.44444 11.5554V14.222C4.44444 15.2039 3.64851 15.9998 2.66667 15.9998H1.77778C0.795938 15.9998 0 15.2039 0 14.222V11.5554C0 10.5735 0.795938 9.77759 1.77778 9.77759ZM13.3333 9.77759H14.2222C15.2041 9.77759 16 10.5735 16 11.5554V14.222C16 15.2039 15.2041 15.9998 14.2222 15.9998H13.3333C12.3515 15.9998 11.5556 15.2039 11.5556 14.222V11.5554C11.5556 10.5735 12.3515 9.77759 13.3333 9.77759Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title overflow-hidden\">Support</span>\r\n </a>\r\n </div> -->\r\n <div class=\"menu-item px-3\" style=\"border-radius: 0px;\">\r\n <a class=\"menu-link without-sub\" (click)=\"logout()\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path\r\n d=\"M5 13H2.33333C1.97971 13 1.64057 12.8595 1.39052 12.6095C1.14048 12.3594 1 12.0203 1 11.6667V2.33333C1 1.97971 1.14048 1.64057 1.39052 1.39052C1.64057 1.14048 1.97971 1 2.33333 1H5\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M9.66667 10.3332L13 6.99984M13 6.99984L9.66667 3.6665M13 6.99984H5\" stroke=\"#D0D5DD\"\r\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title overflow-hidden\">Logout</span>\r\n </a>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { LayoutService } from 'tango-app-ui-global';\r\nimport { ILayout } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss'],\r\n})\r\nexport class SidebarComponent implements OnInit, OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n userValue:any\r\n // public props\r\n appSidebarDisplay: boolean;\r\n appSidebarDefaultFixedDesktop: boolean;\r\n appSidebarDefaultMinimizeDesktopEnabled: boolean;\r\n appSidebarDefaultMinimizeDesktopDefault: boolean;\r\n appSidebarDefaultMinimizeDesktopHoverable: boolean;\r\n appSidebarDefaultMinimizeMobileEnabled: boolean;\r\n appSidebarDefaultMinimizeMobileDefault: boolean;\r\n appSidebarDefaultMinimizeMobileHoverable: boolean;\r\n appSidebarDefaultCollapseDesktopEnabled: boolean;\r\n appSidebarDefaultCollapseDesktopDefault: boolean;\r\n appSidebarDefaultCollapseMobileEnabled: boolean;\r\n appSidebarDefaultCollapseMobileDefault: boolean;\r\n\r\n appSidebarDefaultPushHeader: boolean;\r\n appSidebarDefaultPushToolbar: boolean;\r\n appSidebarDefaultPushFooter: boolean;\r\n\r\n appSidebarDefaultStacked: boolean;\r\n\r\n // logo\r\n appSidebarDefaultMinimizeDefault: boolean;\r\n toggleButtonClass: string;\r\n toggleEnabled: boolean;\r\n toggleType: string;\r\n toggleState: string;\r\n\r\n constructor(private layout: LayoutService) {}\r\n\r\n ngOnInit(): void {\r\n const subscr = this.layout.layoutConfigSubject\r\n .asObservable()\r\n .subscribe((config: ILayout) => {\r\n this.updateProps(config);\r\n });\r\n this.unsubscribe.push(subscr);\r\n }\r\n\r\n updateProps(config: ILayout) {\r\n this.appSidebarDisplay = this.layout.getProp('app.sidebar.display', config) as boolean;\r\n if (!this.appSidebarDisplay) {\r\n return;\r\n }\r\n\r\n this.appSidebarDefaultFixedDesktop = this.layout.getProp(\r\n 'app.sidebar.default.fixed.desktop',\r\n config\r\n ) as boolean;\r\n\r\n this.appSidebarDefaultMinimizeDesktopEnabled = this.layout.getProp(\r\n 'app.sidebar.default.minimize.desktop.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultMinimizeDesktopEnabled) {\r\n this.appSidebarDefaultMinimizeDesktopDefault = this.layout.getProp(\r\n 'app.sidebar.default.minimize.desktop.default',\r\n config\r\n ) as boolean;\r\n // if (this.appSidebarDefaultMinimizeDesktopDefault) {\r\n document.body.setAttribute('data-kt-app-sidebar-minimize', 'on');\r\n // }\r\n\r\n this.appSidebarDefaultMinimizeDesktopHoverable = this.layout.getProp(\r\n 'app.sidebar.default.minimize.desktop.hoverable',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultMinimizeDesktopHoverable) {\r\n document.body.setAttribute('data-kt-app-sidebar-hoverable', 'true');\r\n }\r\n }\r\n\r\n this.appSidebarDefaultMinimizeMobileEnabled = this.layout.getProp(\r\n 'app.sidebar.default.minimize.mobile.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultMinimizeMobileEnabled) {\r\n this.appSidebarDefaultMinimizeMobileDefault = this.layout.getProp(\r\n 'app.sidebar.default.minimize.mobile.default',\r\n config\r\n ) as boolean;\r\n // if (this.appSidebarDefaultMinimizeMobileDefault) {\r\n document.body.setAttribute('data-kt-app-sidebar-minimize-mobile', 'on');\r\n // }\r\n\r\n this.appSidebarDefaultMinimizeMobileHoverable = this.layout.getProp(\r\n 'app.sidebar.default.minimize.mobile.hoverable',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultMinimizeMobileHoverable) {\r\n document.body.setAttribute(\r\n 'data-kt-app-sidebar-hoverable-mobile',\r\n 'true'\r\n );\r\n }\r\n }\r\n\r\n this.appSidebarDefaultCollapseDesktopEnabled = this.layout.getProp(\r\n 'app.sidebar.default.collapse.desktop.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultCollapseDesktopEnabled) {\r\n this.appSidebarDefaultCollapseDesktopDefault = this.layout.getProp(\r\n 'app.sidebar.default.collapse.desktop.default',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultCollapseDesktopDefault) {\r\n document.body.setAttribute('data-kt-app-sidebar-collapse', 'on');\r\n }\r\n }\r\n\r\n this.appSidebarDefaultCollapseMobileEnabled = this.layout.getProp(\r\n 'app.sidebar.default.collapse.mobile.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultCollapseMobileEnabled) {\r\n this.appSidebarDefaultCollapseMobileDefault = this.layout.getProp(\r\n 'app.sidebar.default.collapse.mobile.default',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultCollapseMobileDefault) {\r\n document.body.setAttribute('data-kt-app-sidebar-collapse-mobile', 'on');\r\n }\r\n }\r\n\r\n if (this.layout.getProp('app.sidebar.default.push')) {\r\n this.appSidebarDefaultPushHeader = this.layout.getProp(\r\n 'app.sidebar.default.push.header',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultPushHeader) {\r\n document.body.setAttribute('data-kt-app-sidebar-push-header', 'true');\r\n }\r\n\r\n this.appSidebarDefaultPushToolbar = this.layout.getProp(\r\n 'app.sidebar.default.push.toolbar',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultPushToolbar) {\r\n document.body.setAttribute('data-kt-app-sidebar-push-toolbar', 'true');\r\n }\r\n\r\n this.appSidebarDefaultPushFooter = this.layout.getProp(\r\n 'app.sidebar.default.push.footer',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultPushFooter) {\r\n document.body.setAttribute('data-kt-app-sidebar-push-footer', 'true');\r\n }\r\n }\r\n\r\n this.appSidebarDefaultStacked = this.layout.getProp(\r\n 'app.sidebar.default.stacked',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultStacked) {\r\n document.body.setAttribute('app-sidebar-stacked', 'true');\r\n }\r\n\r\n // Logo\r\n this.appSidebarDefaultMinimizeDefault = this.layout.getProp(\r\n 'app.sidebar.default.minimize.desktop.default',\r\n config\r\n ) as boolean;\r\n this.toggleButtonClass = this.appSidebarDefaultMinimizeDefault\r\n ? 'active'\r\n : '';\r\n this.toggleEnabled =\r\n this.appSidebarDefaultMinimizeDesktopEnabled ||\r\n this.appSidebarDefaultCollapseDesktopEnabled;\r\n if (this.appSidebarDefaultMinimizeDesktopEnabled) {\r\n this.toggleType = 'minimize';\r\n this.toggleState = 'active';\r\n }\r\n\r\n if (this.appSidebarDefaultCollapseDesktopEnabled) {\r\n this.toggleType = 'collapse';\r\n this.toggleState = '';\r\n }\r\n\r\n document.body.setAttribute('data-kt-app-sidebar-enabled', 'true');\r\n document.body.setAttribute(\r\n 'data-kt-app-sidebar-fixed',\r\n this.appSidebarDefaultFixedDesktop.toString()\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n}\r\n","<!--begin::Logo-->\r\n<lib-sidebar-logo class=\"app-sidebar-logo px-6\" id=\"kt_app_sidebar_logo\"\r\n [toggleButtonClass]=\"toggleButtonClass\" [toggleEnabled]=\"toggleEnabled\" [toggleType]=\"toggleType\"\r\n [toggleState]=\"toggleState\">\r\n</lib-sidebar-logo>\r\n<!--end::Logo-->\r\n\r\n<!--begin::sidebar menu-->\r\n<lib-sidebar-menu class=\"app-sidebar-menu overflow-hidden flex-column-fluid\">\r\n</lib-sidebar-menu>\r\n<!--end::sidebar menu-->\r\n\r\n<!--begin::Footer-->\r\n<lib-sidebar-footer class=\"app-sidebar-footer flex-column-auto pt-2\" id=\"kt_app_sidebar_footer\">\r\n</lib-sidebar-footer>\r\n<!--end::Footer-->\r\n","import { Component, OnInit, OnDestroy, HostBinding } from '@angular/core';\r\nimport { NavigationCancel, NavigationEnd, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n StickyComponent,\r\n ScrollTopComponent,\r\n MenuComponent,\r\n ToggleComponent,\r\n DrawerComponent,\r\n} from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-scroll-top',\r\n templateUrl: './scroll-top.component.html',\r\n})\r\nexport class LayoutScrollTopComponent implements OnInit, OnDestroy {\r\n @HostBinding('class') class = 'kt_scrolltop';\r\n @HostBinding('id') id = 'scrolltop';\r\n @HostBinding('attr.data-kt-scrolltop') dataKtScrolltop = 'true';\r\n\r\n private unsubscribe: Subscription[] = [];\r\n constructor(private router: Router) {}\r\n\r\n ngOnInit(): void {\r\n this.routingChanges();\r\n }\r\n\r\n routingChanges() {\r\n const routerSubscription = this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationEnd || event instanceof NavigationCancel) {\r\n this.pluginsReinitialization();\r\n this.updateHeaderSticky();\r\n setTimeout(() => {\r\n this.scrollTop();\r\n }, 0);\r\n }\r\n });\r\n this.unsubscribe.push(routerSubscription);\r\n }\r\n\r\n updateHeaderSticky() {\r\n const stickyHeader = document.body.querySelectorAll(\r\n `[data-kt-sticky-name=\"header\"]`\r\n );\r\n if (stickyHeader && stickyHeader.length > 0) {\r\n const sticky = StickyComponent.getInstance(\r\n stickyHeader[0] as HTMLElement\r\n );\r\n if (sticky) {\r\n sticky.update();\r\n }\r\n }\r\n }\r\n\r\n scrollTop() {\r\n ScrollTopComponent.goTop();\r\n }\r\n\r\n pluginsReinitialization() {\r\n setTimeout(() => {\r\n // ScrollTopComponent.reinitialization()\r\n MenuComponent.reinitialization();\r\n StickyComponent.reInitialization();\r\n setTimeout(() => {\r\n ToggleComponent.reinitialization();\r\n DrawerComponent.reinitialization();\r\n // ScrollComponent.reinitialization()\r\n }, 70);\r\n }, 140);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n}\r\n","<lib-keenicon name=\"arrow-up\" class=\"text-white fw-bold\"></lib-keenicon>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n OnDestroy,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { GlobalStateService, ILayout, LayoutType } from 'tango-app-ui-global';\r\nimport { LayoutInitService, LayoutService } from 'tango-app-ui-global';\r\nimport { AuthService } from '../../../services/auth.service';\r\nimport { ToastService } from '../../../services/toast.service';\r\n\r\n@Component({\r\n selector: 'lib-layout',\r\n templateUrl: './layout.component.html',\r\n styleUrls: ['./layout.component.scss'],\r\n})\r\nexport class LayoutComponent implements OnInit, OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n\r\n // Public variables\r\n // page\r\n pageContainerCSSClasses: string;\r\n // header\r\n appHeaderDefaultClass: string = '';\r\n appHeaderDisplay: boolean;\r\n appHeaderDefaultStickyEnabled: boolean;\r\n appHeaderDefaultStickyAttributes: { [attrName: string]: string } = {};\r\n appHeaderDefaultMinimizeEnabled: boolean;\r\n appHeaderDefaultMinimizeAttributes: { [attrName: string]: string } = {};\r\n // toolbar\r\n appToolbarDisplay: boolean;\r\n appToolbarLayout: 'classic' | 'accounting' | 'extended' | 'reports' | 'saas';\r\n appToolbarCSSClass: string = '';\r\n appToolbarSwapEnabled: boolean;\r\n appToolbarSwapAttributes: { [attrName: string]: string } = {};\r\n appToolbarStickyEnabled: boolean;\r\n appToolbarStickyAttributes: { [attrName: string]: string } = {};\r\n appToolbarMinimizeEnabled: boolean;\r\n appToolbarMinimizeAttributes: { [attrName: string]: string } = {};\r\n\r\n // content\r\n appContentContiner?: 'fixed' | 'fluid';\r\n appContentContainerClass: string;\r\n contentCSSClasses: string;\r\n contentContainerCSSClass: string;\r\n // sidebar\r\n appSidebarDefaultClass: string;\r\n appSidebarDefaultDrawerEnabled: boolean;\r\n appSidebarDefaultDrawerAttributes: { [attrName: string]: string } = {};\r\n appSidebarDisplay: boolean;\r\n appSidebarDefaultStickyEnabled: boolean;\r\n appSidebarDefaultStickyAttributes: { [attrName: string]: string } = {};\r\n @ViewChild('ktSidebar', { static: true }) ktSidebar: ElementRef;\r\n /// sidebar panel\r\n appSidebarPanelDisplay: boolean;\r\n // footer\r\n appFooterDisplay: boolean;\r\n appFooterCSSClass: string = '';\r\n appFooterContainer: string = '';\r\n appFooterContainerCSSClass: string = '';\r\n appFooterFixedDesktop: boolean;\r\n appFooterFixedMobile: boolean;\r\n\r\n // scrolltop\r\n scrolltopDisplay: boolean;\r\n\r\n @ViewChild('ktAside', { static: true }) ktAside: ElementRef;\r\n @ViewChild('ktHeaderMobile', { static: true }) ktHeaderMobile: ElementRef;\r\n @ViewChild('ktHeader', { static: true }) ktHeader: ElementRef;\r\n\r\n constructor(\r\n private initService: LayoutInitService,\r\n private layout: LayoutService,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private authService:AuthService,\r\n private toastService:ToastService,\r\n private gs:GlobalStateService\r\n ) {\r\n \r\n // define layout type and load layout\r\n this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationEnd) {\r\n const currentLayoutType = this.layout.currentLayoutTypeSubject.value;\r\n\r\n const nextLayoutType: LayoutType =\r\n this.activatedRoute?.firstChild?.snapshot.data.layout ||\r\n this.layout.getBaseLayoutTypeFromLocalStorage();\r\n\r\n if (currentLayoutType !== nextLayoutType || !currentLayoutType) {\r\n this.layout.currentLayoutTypeSubject.next(nextLayoutType);\r\n this.initService.reInitProps(nextLayoutType);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n const subscr = this.layout.layoutConfigSubject\r\n .asObservable()\r\n .subscribe((config) => {\r\n this.updateProps(config);\r\n });\r\n this.unsubscribe.push(subscr);\r\n }\r\n\r\n updateProps(config: ILayout) {\r\n this.scrolltopDisplay = this.layout.getProp(\r\n 'scrolltop.display',\r\n config\r\n ) as boolean;\r\n this.pageContainerCSSClasses =\r\n this.layout.getStringCSSClasses('pageContainer');\r\n this.appHeaderDefaultClass = this.layout.getProp(\r\n 'app.header.default.class',\r\n config\r\n ) as string;\r\n this.appHeaderDisplay = this.layout.getProp(\r\n 'app.header.display',\r\n config\r\n ) as boolean;\r\n this.appFooterDisplay = this.layout.getProp(\r\n 'app.footer.display',\r\n config\r\n ) as boolean;\r\n this.appSidebarDisplay = this.layout.getProp(\r\n 'app.sidebar.display',\r\n config\r\n ) as boolean;\r\n this.appSidebarPanelDisplay = this.layout.getProp(\r\n 'app.sidebar-panel.display',\r\n config\r\n ) as boolean;\r\n this.appToolbarDisplay = this.layout.getProp(\r\n 'app.toolbar.display',\r\n config\r\n ) as boolean;\r\n this.contentCSSClasses = this.layout.getStringCSSClasses('content');\r\n this.contentContainerCSSClass =\r\n this.layout.getStringCSSClasses('contentContainer');\r\n this.appContentContiner = this.layout.getProp(\r\n 'app.content.container',\r\n config\r\n ) as 'fixed' | 'fluid';\r\n this.appContentContainerClass = this.layout.getProp(\r\n 'app.content.containerClass',\r\n config\r\n ) as string;\r\n // footer\r\n if (this.appFooterDisplay) {\r\n this.updateFooter(config);\r\n }\r\n // sidebar\r\n if (this.appSidebarDisplay) {\r\n this.updateSidebar(config);\r\n }\r\n // header\r\n if (this.appHeaderDisplay) {\r\n this.updateHeader(config);\r\n }\r\n // toolbar\r\n if (this.appToolbarDisplay) {\r\n this.updateToolbar(config);\r\n }\r\n }\r\n\r\n updateSidebar(config: ILayout) {\r\n this.appSidebarDefaultClass = this.layout.getProp(\r\n 'app.sidebar.default.class',\r\n config\r\n ) as string;\r\n\r\n this.appSidebarDefaultDrawerEnabled = this.layout.getProp(\r\n 'app.sidebar.default.drawer.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultDrawerEnabled) {\r\n this.appSidebarDefaultDrawerAttributes = this.layout.getProp(\r\n 'app.sidebar.default.drawer.attributes',\r\n config\r\n ) as { [attrName: string]: string };\r\n }\r\n\r\n this.appSidebarDefaultStickyEnabled = this.layout.getProp(\r\n 'app.sidebar.default.sticky.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appSidebarDefaultStickyEnabled) {\r\n this.appSidebarDefaultStickyAttributes = this.layout.getProp(\r\n 'app.sidebar.default.sticky.attributes',\r\n config\r\n ) as { [attrName: string]: string };\r\n }\r\n\r\n setTimeout(() => {\r\n const sidebarElement = document.getElementById('kt_app_sidebar');\r\n // sidebar\r\n if (this.appSidebarDisplay && sidebarElement) {\r\n const sidebarAttributes = sidebarElement\r\n .getAttributeNames()\r\n .filter((t) => t.indexOf('data-') > -1);\r\n sidebarAttributes.forEach((attr) =>\r\n sidebarElement.removeAttribute(attr)\r\n );\r\n\r\n if (this.appSidebarDefaultDrawerEnabled) {\r\n for (const key in this.appSidebarDefaultDrawerAttributes) {\r\n if (this.appSidebarDefaultDrawerAttributes.hasOwnProperty(key)) {\r\n sidebarElement.setAttribute(\r\n key,\r\n this.appSidebarDefaultDrawerAttributes[key]\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (this.appSidebarDefaultStickyEnabled) {\r\n for (const key in this.appSidebarDefaultStickyAttributes) {\r\n if (this.appSidebarDefaultStickyAttributes.hasOwnProperty(key)) {\r\n sidebarElement.setAttribute(\r\n key,\r\n this.appSidebarDefaultStickyAttributes[key]\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }, 0);\r\n }\r\n\r\n updateHeader(config: ILayout) {\r\n this.appHeaderDefaultStickyEnabled = this.layout.getProp(\r\n 'app.header.default.sticky.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appHeaderDefaultStickyEnabled) {\r\n this.appHeaderDefaultStickyAttributes = this.layout.getProp(\r\n 'app.header.default.sticky.attributes',\r\n config\r\n ) as { [attrName: string]: string };\r\n }\r\n\r\n this.appHeaderDefaultMinimizeEnabled = this.layout.getProp(\r\n 'app.header.default.minimize.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appHeaderDefaultMinimizeEnabled) {\r\n this.appHeaderDefaultMinimizeAttributes = this.layout.getProp(\r\n 'app.header.default.minimize.attributes',\r\n config\r\n ) as { [attrName: string]: string };\r\n }\r\n\r\n setTimeout(() => {\r\n const headerElement = document.getElementById('kt_app_header');\r\n // header\r\n if (this.appHeaderDisplay && headerElement) {\r\n const headerAttributes = headerElement\r\n .getAttributeNames()\r\n .filter((t) => t.indexOf('data-') > -1);\r\n headerAttributes.forEach((attr) => headerElement.removeAttribute(attr));\r\n\r\n if (this.appHeaderDefaultStickyEnabled) {\r\n for (const key in this.appHeaderDefaultStickyAttributes) {\r\n if (this.appHeaderDefaultStickyAttributes.hasOwnProperty(key)) {\r\n headerElement.setAttribute(\r\n key,\r\n this.appHeaderDefaultStickyAttributes[key]\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (this.appHeaderDefaultMinimizeEnabled) {\r\n for (const key in this.appHeaderDefaultMinimizeAttributes) {\r\n if (this.appHeaderDefaultMinimizeAttributes.hasOwnProperty(key)) {\r\n headerElement.setAttribute(\r\n key,\r\n this.appHeaderDefaultMinimizeAttributes[key]\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }, 0);\r\n }\r\n\r\n updateFooter(config: ILayout) {\r\n this.appFooterCSSClass = this.layout.getProp('app.footer.class', config) as string;\r\n this.appFooterContainer = this.layout.getProp('app.footer.container', config) as string;\r\n this.appFooterContainerCSSClass = this.layout.getProp('app.footer.containerClass', config) as string;\r\n if (this.appFooterContainer === 'fixed') {\r\n this.appFooterContainerCSSClass += ' container-xxl';\r\n } else {\r\n if (this.appFooterContainer === 'fluid') {\r\n this.appFooterContainerCSSClass += ' container-fluid';\r\n }\r\n }\r\n\r\n this.appFooterFixedDesktop = this.layout.getProp('app.footer.fixed.desktop', config) as boolean;\r\n if (this.appFooterFixedDesktop) {\r\n document.body.setAttribute('data-kt-app-footer-fixed', 'true')\r\n }\r\n\r\n this.appFooterFixedMobile = this.layout.getProp('app.footer.fixed.mobile') as boolean;\r\n if (this.appFooterFixedMobile) {\r\n document.body.setAttribute('data-kt-app-footer-fixed-mobile', 'true')\r\n }\r\n }\r\n\r\n updateToolbar(config: ILayout) {\r\n this.appToolbarLayout = this.layout.getProp(\r\n 'app.toolbar.layout',\r\n config\r\n ) as 'classic' | 'accounting' | 'extended' | 'reports' | 'saas';\r\n this.appToolbarSwapEnabled = this.layout.getProp(\r\n 'app.toolbar.swap.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appToolbarSwapEnabled) {\r\n this.appToolbarSwapAttributes = this.layout.getProp(\r\n 'app.toolbar.swap.attributes',\r\n config\r\n ) as { [attrName: string]: string };\r\n }\r\n\r\n this.appToolbarStickyEnabled = this.layout.getProp(\r\n 'app.toolbar.sticky.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appToolbarStickyEnabled) {\r\n this.appToolbarStickyAttributes = this.layout.getProp(\r\n 'app.toolbar.sticky.attributes',\r\n config\r\n ) as { [attrName: string]: string };\r\n }\r\n\r\n this.appToolbarCSSClass =\r\n (this.layout.getProp('app.toolbar.class', config) as string) || '';\r\n this.appToolbarMinimizeEnabled = this.layout.getProp(\r\n 'app.toolbar.minimize.enabled',\r\n config\r\n ) as boolean;\r\n if (this.appToolbarMinimizeEnabled) {\r\n this.appToolbarMinimizeAttributes = this.layout.getProp(\r\n 'app.toolbar.minimize.attributes',\r\n config\r\n ) as { [attrName: string]: string };\r\n this.appToolbarCSSClass += ' app-toolbar-minimize';\r\n }\r\n\r\n setTimeout(() => {\r\n const toolbarElement = document.getElementById('kt_app_toolbar');\r\n // toolbar\r\n if (this.appToolbarDisplay && toolbarElement) {\r\n const toolbarAttributes = toolbarElement\r\n .getAttributeNames()\r\n .filter((t) => t.indexOf('data-') > -1);\r\n toolbarAttributes.forEach((attr) =>\r\n toolbarElement.removeAttribute(attr)\r\n );\r\n\r\n if (this.appToolbarSwapEnabled) {\r\n for (const key in this.appToolbarSwapAttributes) {\r\n if (this.appToolbarSwapAttributes.hasOwnProperty(key)) {\r\n toolbarElement.setAttribute(\r\n key,\r\n this.appToolbarSwapAttributes[key]\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (this.appToolbarStickyEnabled) {\r\n for (const key in this.appToolbarStickyAttributes) {\r\n if (this.appToolbarStickyAttributes.hasOwnProperty(key)) {\r\n toolbarElement.setAttribute(\r\n key,\r\n this.appToolbarStickyAttributes[key]\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (this.appToolbarMinimizeEnabled) {\r\n for (const key in this.appToolbarMinimizeAttributes) {\r\n if (this.appToolbarMinimizeAttributes.hasOwnProperty(key)) {\r\n toolbarElement.setAttribute(\r\n key,\r\n this.appToolbarMinimizeAttributes[key]\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n previousScroll = 0;\r\n // appHeaderDisplay = true; // Initially visible\r\n isToolbarFixed = false;\r\n @HostListener('window:scroll', [])\r\n onScroll(): void {\r\n const currentScroll = window.scrollY;\r\n\r\n if (currentScroll > this.previousScroll && currentScroll > 100) {\r\n // Hide header on scroll down\r\n this.appHeaderDisplay = false;\r\n this.isToolbarFixed = true; // Fix toolbar\r\n } else {\r\n // Show header on scroll up\r\n this.appHeaderDisplay = true;\r\n this.isToolbarFixed = currentScroll > 100; // Keep toolbar fixed if scrolled beyond 100px\r\n }\r\n\r\n this.previousScroll = currentScroll;\r\n }\r\n}\r\n","<!--begin::App-->\r\n<div class=\"d-flex flex-column flex-root app-root\" id=\"kt_app_root\">\r\n <!--begin::Page-->\r\n <div class=\"app-page flex-column flex-column-fluid\" id=\"kt_app_page\">\r\n <ng-container *ngIf=\"appHeaderDisplay\">\r\n <!--begin::Header-->\r\n <lib-header [ngClass]=\"appHeaderDefaultClass\" id=\"kt_app_header\" class=\"app-header\" data-kt-sticky=\"true\" data-kt-sticky-activate=\"{default: true, lg: true}\" data-kt-sticky-name=\"app-header-minimize\" data-kt-sticky-offset=\"{default: '200px', lg: '0'}\" data-kt-sticky-animation=\"false\">\r\n </lib-header>\r\n <!--end::Header-->\r\n </ng-container>\r\n\r\n <!--begin::Wrapper-->\r\n <div class=\"app-wrapper flex-column flex-row-fluid\" id=\"kt_app_wrapper\">\r\n\r\n <ng-container *ngIf=\"appSidebarDisplay\">\r\n <!--begin::sidebar-->\r\n <lib-sidebar #ktSidebar id=\"kt_app_sidebar\" class=\"app-sidebar flex-column\" [ngClass]=\"appSidebarDefaultClass\">\r\n </lib-sidebar>\r\n <!--end::sidebar-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"appSidebarPanelDisplay\">\r\n <!-- TODO: app sidebar panel -->\r\n </ng-container>\r\n <!--begin::Main-->\r\n <div class=\"app-main content flex-column flex-row-fluid\" id=\"kt_app_main\">\r\n <!--begin::Content wrapper-->\r\n <ng-container *ngIf=\"appToolbarDisplay\">\r\n <lib-toolbar [ngClass]=\"{'fixed-toolbar': isToolbarFixed}\" class=\"app-toolbar\" [ngClass]=\"appToolbarCSSClass\" id=\"kt_app_toolbar\"\r\n [appToolbarLayout]=\"appToolbarLayout\"></lib-toolbar>\r\n </ng-container>\r\n <div class=\"d-flex flex-column flex-column-fluid mt-10\">\r\n \r\n <lib-content id=\" kt_app_content\" class=\"app-content mt-15\" [ngClass]=\"contentCSSClasses\"\r\n [contentContainerCSSClass]=\"contentContainerCSSClass\" [appContentContiner]=\"appContentContiner\"\r\n [appContentContainerClass]=\"appContentContainerClass\">\r\n </lib-content>\r\n </div>\r\n <!--end::Content wrapper-->\r\n <ng-container *ngIf=\"appFooterDisplay\">\r\n <lib-footer class=\"app-footer\" [ngClass]=\"appFooterCSSClass\" id=\"kt_app_footer\"\r\n [appFooterContainerCSSClass]=\"appFooterContainerCSSClass\"></lib-footer>\r\n </ng-container>\r\n </div>\r\n <!--end:::Main-->\r\n </div>\r\n <!--end::Wrapper-->\r\n\r\n </div>\r\n <!--end::Page-->\r\n</div>\r\n<!--end::App-->\r\n\r\n<lib-scripts-init></lib-scripts-init>\r\n<ng-container>\r\n <lib-scroll-top id=\"kt_scrolltop\" class=\"scrolltop\" data-kt-scrolltop=\"true\"></lib-scroll-top>\r\n</ng-container>\r\n<!-- begin:: Drawers -->\r\n<!-- <lib-activity-drawer></lib-activity-drawer> -->\r\n<!-- <lib-messenger-drawer></lib-messenger-drawer> -->\r\n<!-- end:: Drawers -->\r\n\r\n<!-- end:: Engage -->\r\n<!-- <lib-engages></lib-engages> -->\r\n<!-- end:: Engage -->\r\n\r\n<!-- begin:: Modals -->\r\n<!-- <lib-main-modal></lib-main-modal> -->\r\n<!-- <lib-invite-users-modal></lib-invite-users-modal> -->\r\n<!-- <lib-upgrade-plan-modal></lib-upgrade-plan-modal> -->\r\n<!-- end:: Modals -->\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-accounting',\r\n templateUrl: './accounting.component.html',\r\n styleUrls: ['./accounting.component.scss']\r\n})\r\nexport class AccountingComponent implements OnInit {\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<!--begin::Input group-->\r\n<div class=\"d-flex align-items-center flex-shrink-0\">\r\n <!--begin::Label-->\r\n <span class=\"fs-7 text-gray-700 fw-bold pe-3 d-none d-md-block\">Actions:</span>\r\n <!--end::Label-->\r\n\r\n <!--begin::Actions-->\r\n <div class=\"d-flex flex-shrink-0\">\r\n <!--begin::Button-->\r\n <div data-bs-toggle=\"tooltip\" data-bs-placement=\"top\" data-bs-trigger=\"hover\" title=\"Add a team member\">\r\n <a href=\"#\" class=\"btn btn-sm btn-icon btn-active-color-success\">\r\n <lib-keenicon name=\"plus-square\" class=\"fs-2x\"></lib-keenicon>\r\n </a>\r\n </div>\r\n <!--end::Button-->\r\n\r\n <!--begin::Button-->\r\n <div data-bs-toggle=\"tooltip\" data-bs-placement=\"top\" data-bs-trigger=\"hover\" title=\"Create new account\">\r\n <a href=\"#\" class=\"btn btn-sm btn-icon btn-active-color-success\">\r\n <lib-keenicon name=\"gen037.svg\" class=\"fs-2x\"></lib-keenicon>\r\n </a>\r\n </div>\r\n <!--end::Button-->\r\n\r\n <!--begin::Button-->\r\n <div data-bs-toggle=\"tooltip\" data-bs-placement=\"top\" data-bs-trigger=\"hover\" title=\"Invite friends\">\r\n <a href=\"#\" class=\"btn btn-sm btn-icon btn-active-color-success\">\r\n <lib-keenicon name=\"dots-square\" class=\"fs-2x\"></lib-keenicon>\r\n </a>\r\n </div>\r\n <!--end::Button-->\r\n </div>\r\n <!--end::Actions-->\r\n</div>\r\n<!--end::Input group-->\r\n\r\n<!--begin::Input group-->\r\n<div class=\"d-flex align-items-center flex-shrink-0\">\r\n <!--begin::Desktop separartor-->\r\n <div class=\"bullet bg-secondary h-35px w-1px mx-5\"></div>\r\n <!--end::Desktop separartor-->\r\n\r\n <!--begin::Label-->\r\n <span class=\"fs-7 text-gray-700 fw-bold pe-4 ps-1 d-none d-md-block\">Progress:</span>\r\n <!--end::Label-->\r\n\r\n <div class=\"progress w-100px w-xl-150px w-xxl-300px h-25px bg-light-success\">\r\n <div class=\"progress-bar rounded bg-success fs-7 fw-bold\" role=\"progressbar\" style=\"width: 72%;\" aria-valuenow=\"72\"\r\n aria-valuemin=\"0\" aria-valuemax=\"100\">72%</div>\r\n </div>\r\n</div>\r\n<!--end::Input group-->\r\n<!--end::Toolbar start-->\r\n\r\n<!--begin::Toolbar end-->\r\n<div class=\"d-flex align-items-center\">\r\n <!--begin::Input group-->\r\n <div class=\"me-3\">\r\n <!--begin::Select-->\r\n <select class=\"form-select form-select-sm form-select-solid\" data-control=\"select2\" data-placeholder=\"Latest\"\r\n data-hide-search=\"true\">\r\n <option value=\"\"></option>\r\n <option value=\"1\" selected>Today 16 Feb</option>\r\n <option value=\"2\">In Progress</option>\r\n <option value=\"3\">Done</option>\r\n </select>\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Input group--->\r\n\r\n <!--begin::Input group--->\r\n <div class=\"m-0\">\r\n <!--begin::Select-->\r\n <select class=\"form-select form-select-sm form-select-solid w-md-125px\" data-control=\"select2\"\r\n data-placeholder=\"Filters\" data-hide-search=\"true\">\r\n <option value=\"\"></option>\r\n <option value=\"1\" selected>Filters</option>\r\n <option value=\"2\">In Progress</option>\r\n <option value=\"3\">Done</option>\r\n </select>\r\n <!--end::Content-->\r\n </div>\r\n <!--end::Input group--->\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-extended',\r\n templateUrl: './extended.component.html',\r\n styleUrls: ['./extended.component.scss'],\r\n})\r\nexport class ExtendedComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<!--begin::Label-->\r\n<span class=\"fs-7 fw-bold text-gray-700 pe-4 d-none d-md-block\">Team:</span>\r\n<!--end::Label-->\r\n\r\n<!--begin::Users-->\r\n<div class=\"symbol-group symbol-hover flex-shrink-0 me-2\">\r\n <!--begin::User-->\r\n <div class=\"symbol symbol-circle symbol-35px\">\r\n <div class=\"symbol-label fw-bold bg-warning text-inverse-warning\">A</div>\r\n </div>\r\n <!--end::User-->\r\n\r\n <!--begin::User-->\r\n <div class=\"symbol symbol-circle symbol-35px\">\r\n <img src=\"./assets/media/avatars/300-1.jpg\" alt=\"\" />\r\n </div>\r\n <!--end::User-->\r\n\r\n <!--begin::User-->\r\n <div class=\"symbol symbol-circle symbol-35px\">\r\n <img src=\"./assets/media/avatars/300-2.jpg\" alt=\"\" />\r\n </div>\r\n <!--end::User-->\r\n\r\n <!--begin::User-->\r\n <div class=\"symbol symbol-circle symbol-35px\">\r\n <div class=\"symbol-label fw-bold bg-primary text-inverse-primary\">S</div>\r\n </div>\r\n <!--end::User-->\r\n\r\n <!--begin::User-->\r\n <div class=\"symbol symbol-circle symbol-35px\">\r\n <img src=\"./assets/media/avatars/300-5.jpg\" alt=\"\" />\r\n </div>\r\n <!--end::User-->\r\n\r\n <!--begin::User-->\r\n <div class=\"symbol symbol-circle symbol-35px\">\r\n <div class=\"symbol-label fw-bold bg-danger text-inverse-danger\">P</div>\r\n </div>\r\n <!--end::User-->\r\n\r\n <!--begin::User-->\r\n <div class=\"symbol symbol-circle symbol-35px\">\r\n <img src=\"./assets/media/avatars/300-20.jpg\" alt=\"\" />\r\n </div>\r\n <!--end::User-->\r\n</div>\r\n<!--end::Users-->\r\n\r\n<!--begin::Button-->\r\n<div data-bs-toggle=\"tooltip\" data-bs-placement=\"top\" data-bs-trigger=\"hover\" title=\"Invite a team member\">\r\n <a href=\"#\" class=\"btn btn-sm btn-icon\">\r\n <lib-keenicon name=\"plus-square\" class=\"fs-2hx text-success\"></lib-keenicon>\r\n </a>\r\n</div>\r\n<!--end::Button-->\r\n<!--end::Toolbar start-->\r\n\r\n<!--begin::Toolbar end-->\r\n<div class=\"d-flex align-items-center overflow-auto\">\r\n <!--begin::Search-->\r\n <div class=\"position-relative my-1\">\r\n <lib-keenicon name=\"magnifier\" class=\"fs-3 text-gray500 position-absolute top-50 translate-middle ps-10\"></lib-keenicon>\r\n <input type=\"text\" class=\"form-control form-control-sm form-control-solid w-150px ps-10\" name=\"Search Team\" value=\"\"\r\n placeholder=\"Search Team\" />\r\n </div>\r\n <!--end::Search-->\r\n\r\n <!--begin::Separartor-->\r\n <div class=\"bullet bg-secondary h-35px w-1px mx-6\"></div>\r\n <!--end::Separartor-->\r\n\r\n <!--begin::Label-->\r\n <span class=\"fs-7 fw-bold text-gray-700 flex-shrink-0 pe-4 d-none d-md-block\">Sort By:</span>\r\n <!--end::Label-->\r\n\r\n <!--begin::Select-->\r\n <select class=\"form-select form-select-sm w-125px form-select-solid me-6\" data-control=\"select2\"\r\n data-placeholder=\"Latest\" data-hide-search=\"true\">\r\n <option value=\"\"></option>\r\n <option value=\"1\" selected>Latest</option>\r\n <option value=\"2\">In Progress</option>\r\n <option value=\"3\">Done</option>\r\n </select>\r\n <!--end::Select-->\r\n\r\n <!--begin::Actions-->\r\n <div class=\"d-flex align-items-center\">\r\n <button type=\"button\" class=\"btn btn-sm btn-icon btn-light-primary me-3\" data-bs-toggle=\"tooltip\"\r\n data-bs-placement=\"top\" title=\"Enable grid view\">\r\n <lib-keenicon name=\"element-11\" class=\"fs-3 text-primary\"></lib-keenicon>\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-sm btn-icon btn-light\" data-bs-toggle=\"tooltip\" data-bs-placement=\"top\"\r\n title=\"Enable row view\">\r\n <lib-keenicon name=\"row-horizontal\" class=\"fs-3 text-gray400\"></lib-keenicon>\r\n </button>\r\n </div>\r\n <!--end::Actions-->\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-reports',\r\n templateUrl: './reports.component.html',\r\n styleUrls: ['./reports.component.scss'],\r\n})\r\nexport class ReportsComponent implements OnInit {\r\n @Input() appPageTitleDisplay: boolean;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<!--begin::Wrapper-->\r\n<div class=\"d-flex align-items-center flex-shrink-0\">\r\n <!--begin::Label-->\r\n <span class=\"fs-7 fw-bold text-gray-700 flex-shrink-0 pe-4 d-none d-md-block\">Filter By:</span>\r\n <!--end::Label-->\r\n\r\n <div class=\"flex-shrink-0 \">\r\n <ul class=\"nav\">\r\n <li class=\"nav-item\">\r\n <a class=\"nav-link btn btn-sm btn-color-muted btn-active-color-primary btn-active-light active fw-semibold fs-7 px-4 me-1\"\r\n data-bs-toggle=\"tab\" href=\"#\">Today</a>\r\n </li>\r\n\r\n <li class=\"nav-item\">\r\n <a class=\"nav-link btn btn-sm btn-color-muted btn-active-color-primary btn-active-light fw-semibold fs-7 px-4 me-1\"\r\n data-bs-toggle=\"tab\" href=\"\">Week</a>\r\n </li>\r\n\r\n <li class=\"nav-item\">\r\n <a class=\"nav-link btn btn-sm btn-color-muted btn-active-color-primary btn-active-light fw-semibold fs-7 px-4\"\r\n data-bs-toggle=\"tab\" href=\"#\">Day</a>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>\r\n<!--end::Wrapper-->\r\n\r\n<!--begin::Separartor-->\r\n<div class=\"bullet bg-secondary h-35px w-1px mx-5\"></div>\r\n<!--end::Separartor-->\r\n\r\n<!--begin::Wrapper-->\r\n<div class=\"d-flex align-items-center\">\r\n <!--begin::Label-->\r\n <span class=\"fs-7 fw-bold text-gray-700 flex-shrink-0 pe-4 d-none d-md-block\">Sort By:</span>\r\n <!--end::Label-->\r\n\r\n <!--begin::Select-->\r\n <select class=\"form-select form-select-sm w-md-125px form-select-solid\" data-control=\"select2\"\r\n data-placeholder=\"Latest\" data-hide-search=\"true\">\r\n <option value=\"\"></option>\r\n <option value=\"1\" selected>Latest</option>\r\n <option value=\"2\">In Progress</option>\r\n <option value=\"3\">Done</option>\r\n </select>\r\n <!--end::Select-->\r\n\r\n <!--begin::Actions-->\r\n <div class=\"d-flex align-items-center ms-3\">\r\n <button type=\"button\" class=\"btn btn-sm btn-icon btn-light-primary me-3\" data-bs-toggle=\"tooltip\"\r\n data-bs-placement=\"top\" title=\"Enable grid view\">\r\n <lib-keenicon name=\"element-11\" class=\"fs-2 text-primary\"></lib-keenicon>\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-sm btn-icon btn-light\" data-bs-toggle=\"tooltip\" data-bs-placement=\"top\"\r\n title=\"Enable row view\">\r\n <lib-keenicon name=\"abstract-14\" class=\"fs-2 text-gray400\"></lib-keenicon>\r\n </button>\r\n </div>\r\n <!--end::Actions-->\r\n</div>\r\n<!--end::Wrapper-->\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-saas',\r\n templateUrl: './saas.component.html',\r\n styleUrls: ['./saas.component.scss'],\r\n})\r\nexport class SaasComponent implements OnInit {\r\n @Input() appPageTitleDisplay: boolean;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<!--begin::Action wrapper-->\r\n<div class=\"d-flex align-items-center\">\r\n <!--begin::Label-->\r\n <span class=\"fs-7 fw-bold text-gray-700 pe-4 text-nowrap d-none d-md-block\">Sort By:</span>\r\n <!--end::Label-->\r\n\r\n <!--begin::Select-->\r\n <select class=\"form-select form-select-sm form-select-solid w-100px w-xxl-125px\" data-control=\"select2\"\r\n data-placeholder=\"Latest\" data-hide-search=\"true\">\r\n <option value=\"\"></option>\r\n <option value=\"1\" selected>Latest</option>\r\n <option value=\"2\">In Progress</option>\r\n <option value=\"3\">Done</option>\r\n </select>\r\n <!--end::Select-->\r\n</div>\r\n<!--end::Action wrapper-->\r\n\r\n<!--begin::Action wrapper-->\r\n<div class=\"d-flex align-items-center\">\r\n <!--begin::Separartor-->\r\n <div class=\"bullet bg-secondary h-35px w-1px mx-5\"></div>\r\n <!--end::Separartor-->\r\n\r\n <!--begin::Label-->\r\n <span class=\"fs-7 text-gray-700 fw-bold\">Impact Level:</span>\r\n <!--end::Label-->\r\n\r\n <!--begin::NoUiSlider-->\r\n <div class=\"d-flex align-items-center ps-4\">\r\n <div id=\"kt_app_toolbar_slider\" class=\"noUi-target noUi-target-success w-75px w-xxl-150px noUi-sm\"></div>\r\n\r\n <span id=\"kt_app_toolbar_slider_value\"\r\n class=\"d-flex flex-center bg-light-success rounded-circle w-35px h-35px ms-4 fs-7 fw-bold text-success\"\r\n data-bs-toggle=\"tooltip\" data-bs-placement=\"top\" title=\"Set impact level\">\r\n </span>\r\n </div>\r\n <!--end::NoUiSlider-->\r\n\r\n <!--begin::Separartor-->\r\n <div class=\"bullet bg-secondary h-35px w-1px mx-5\"></div>\r\n <!--end::Separartor-->\r\n</div>\r\n<!--end::Action wrapper-->\r\n\r\n<!--begin::Action wrapper-->\r\n<div class=\"d-flex align-items-center\">\r\n <!--begin::Label-->\r\n <span class=\"fs-7 text-gray-700 fw-bold pe-3 d-none d-md-block\">Quick Tools:</span>\r\n <!--end::Label-->\r\n\r\n <!--begin::Actions-->\r\n <div class=\"d-flex\">\r\n <!--begin::Action-->\r\n <a href=\"#\" class=\"btn btn-sm btn-icon btn-icon-muted btn-active-icon-success\" data-bs-toggle=\"tooltip\"\r\n data-bs-trigger=\"hover\" data-bs-placement=\"top\" title=\"Add new page\">\r\n <lib-keenicon name=\"files\" class=\"fs-2x\"></lib-keenicon>\r\n </a>\r\n <!--end::Action-->\r\n\r\n <!--begin::Action-->\r\n <a href=\"#\" class=\"btn btn-sm btn-icon btn-icon-muted btn-active-icon-success\" data-bs-toggle=\"tooltip\"\r\n data-bs-trigger=\"hover\" data-bs-placement=\"top\" title=\"Add new category\">\r\n <lib-keenicon name=\"add-files\" class=\"fs-2x\"></lib-keenicon>\r\n </a>\r\n <!--end::Action-->\r\n\r\n <!--begin::Action-->\r\n <a href=\"#\" class=\"btn btn-sm btn-icon btn-icon-muted btn-active-icon-success\" data-bs-toggle=\"tooltip\"\r\n data-bs-trigger=\"hover\" data-bs-placement=\"top\" title=\"Add new section\">\r\n <lib-keenicon name=\"search-list\" class=\"fs-2x\"></lib-keenicon>\r\n </a>\r\n <!--end::Action-->\r\n </div>\r\n <!--end::Actions-->\r\n</div>\r\n<!--end::Action wrapper-->\r\n","import { Component, HostBinding, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport {\r\n DrawerComponent,\r\n MenuComponent,\r\n ScrollComponent,\r\n ScrollTopComponent,\r\n StickyComponent,\r\n ToggleComponent,\r\n} from 'tango-app-ui-global';\r\n\r\nconst BODY_CLASSES = ['bgi-size-cover', 'bgi-position-center', 'bgi-no-repeat'];\r\n\r\n@Component({\r\n selector: 'lib-errors',\r\n templateUrl: './errors.component.html',\r\n styleUrls: ['./errors.component.scss'],\r\n})\r\nexport class ErrorsComponent implements OnInit, OnDestroy {\r\n @HostBinding('class') class = 'd-flex flex-column flex-root';\r\n constructor(private router: Router) {}\r\n\r\n ngOnInit(): void {\r\n BODY_CLASSES.forEach((c) => document.body.classList.add(c));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n BODY_CLASSES.forEach((c) => document.body.classList.remove(c));\r\n }\r\n\r\n routeToDashboard() {\r\n this.router.navigate(['dashboard']);\r\n setTimeout(() => {\r\n ToggleComponent.bootstrap();\r\n ScrollTopComponent.bootstrap();\r\n DrawerComponent.bootstrap();\r\n StickyComponent.bootstrap();\r\n MenuComponent.bootstrap();\r\n ScrollComponent.bootstrap();\r\n }, 200);\r\n }\r\n}\r\n","<!--begin::Authentication - -->\r\n<div class=\"d-flex flex-column flex-center flex-column-fluid\">\r\n <!--begin::Content-->\r\n <div class=\"d-flex flex-column flex-center text-center p-10\">\r\n <!--begin::Wrapper-->\r\n <div class=\"card card-flush w-lg-650px py-5\">\r\n <div class=\"card-body py-15 py-lg-20\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\r\n <!--end::Content-->\r\n</div>\r\n<!--end::Authentication - -->\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n DrawerComponent,\r\n MenuComponent,\r\n ScrollComponent,\r\n ScrollTopComponent,\r\n StickyComponent,\r\n ToggleComponent,\r\n} from 'tango-app-ui-global';\r\nimport { ThemeModeService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-error404',\r\n templateUrl: './error404.component.html',\r\n styleUrls: ['./error404.component.scss'],\r\n})\r\nexport class Error404Component implements OnInit, OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n\r\n constructor(private router: Router, private modeService: ThemeModeService) {}\r\n\r\n ngOnInit(): void {\r\n // const subscr = this.modeService.mode.asObservable().subscribe((mode) => {\r\n // document.body.style.backgroundImage =\r\n // mode === 'dark'\r\n // ? 'url(./assets/media/auth/bg1-dark.jpg)'\r\n // : 'url(./assets/media/auth/bg1.jpg)';\r\n // });\r\n // this.unsubscribe.push(subscr);\r\n }\r\n\r\n routeToDashboard() {\r\n this.router.navigate(['/manage/brands']);\r\n // setTimeout(() => {\r\n // ToggleComponent.reinitialization();\r\n // ScrollTopComponent.reinitialization();\r\n // DrawerComponent.reinitialization();\r\n // StickyComponent.bootstrap();\r\n // MenuComponent.reinitialization();\r\n // ScrollComponent.reinitialization();\r\n // }, 200);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n document.body.style.backgroundImage = 'none';\r\n }\r\n}\r\n","<!--begin::Title-->\r\n<h1 class=\"fw-bolder fs-2hx text-gray-900 mb-4\">\r\n Oops!\r\n</h1>\r\n<!--end::Title-->\r\n\r\n<!--begin::Text-->\r\n<div class=\"fw-semibold fs-6 text-gray-500 mb-7\">\r\n We can't find that page.\r\n</div>\r\n<!--end::Text-->\r\n\r\n<!--begin::Illustration-->\r\n<div class=\"mb-3\">\r\n <img src=\"./assets/media/auth/404-error.png\" class=\"mw-100 mh-300px theme-light-show\" alt=\"\" />\r\n <!-- <img src=\"./assets/media/auth/404-error-dark.png\" class=\"mw-100 mh-300px theme-dark-show\" alt=\"\" /> -->\r\n</div>\r\n<!--end::Illustration-->\r\n\r\n<!--begin::Link-->\r\n<div class=\"mb-0\">\r\n <a (click)=\"routeToDashboard()\" class=\"btn btn-sm btn-primary\">Return Home</a>\r\n</div>\r\n<!--end::Link-->\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n DrawerComponent,\r\n MenuComponent,\r\n ScrollComponent,\r\n ScrollTopComponent,\r\n StickyComponent,\r\n ToggleComponent,\r\n} from 'tango-app-ui-global';\r\nimport { ThemeModeService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-error500',\r\n templateUrl: './error500.component.html',\r\n styleUrls: ['./error500.component.scss'],\r\n})\r\nexport class Error500Component implements OnInit, OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n\r\n constructor(private router: Router, private modeService: ThemeModeService) {}\r\n\r\n ngOnInit(): void {\r\n const subscr = this.modeService.mode.asObservable().subscribe((mode) => {\r\n document.body.style.backgroundImage =\r\n mode === 'dark'\r\n ? 'url(./assets/media/auth/bg7-dark.jpg)'\r\n : 'url(./assets/media/auth/bg7.jpg)';\r\n });\r\n this.unsubscribe.push(subscr);\r\n }\r\n\r\n routeToDashboard() {\r\n this.router.navigate(['dashboard']);\r\n setTimeout(() => {\r\n ToggleComponent.reinitialization();\r\n ScrollTopComponent.reinitialization();\r\n DrawerComponent.reinitialization();\r\n StickyComponent.bootstrap();\r\n MenuComponent.reinitialization();\r\n ScrollComponent.reinitialization();\r\n }, 200);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n document.body.style.backgroundImage = 'none';\r\n }\r\n}\r\n","<!--begin::Title-->\r\n<h1 class=\"fw-bolder fs-2qx text-gray-900 mb-4\">\r\n System Error\r\n</h1>\r\n<!--end::Title-->\r\n\r\n<!--begin::Text-->\r\n<div class=\"fw-semibold fs-6 text-gray-500 mb-7\">\r\n Something went wrong! Please try again later.\r\n</div>\r\n<!--end::Text-->\r\n\r\n<!--begin::Illustration-->\r\n<div class=\"mb-11\">\r\n <img src=\"./assets/media/auth/500-error.png\" class=\"mw-100 mh-300px theme-light-show\" alt=\"\" />\r\n <img src=\"./assets/media/auth/500-error-dark.png\" class=\"mw-100 mh-300px theme-dark-show\" alt=\"\" />\r\n</div>\r\n<!--end::Illustration-->\r\n\r\n<!--begin::Link-->\r\n<div class=\"mb-0\">\r\n <a (click)=\"routeToDashboard()\" class=\"btn btn-sm btn-primary\">Return Home</a>\r\n</div>\r\n<!--end::Link-->\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrl: './pagination.component.scss'\r\n})\r\nexport class PaginationComponent {\r\n @Input() collection: any[] = [];\r\n @Input() itemsPerPage: number;\r\n @Input() currentPage: number;\r\n @Input() totalItems: number;\r\n @Input() directionLinks: boolean = false;\r\n\r\n @Input() pageSize: number;\r\n @Input() paginationSizes: number[];\r\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n @Output() pageSizeChange: EventEmitter<number> = new EventEmitter<number>();\r\n instanceId = crypto.randomUUID()\r\n \r\n onPageChange(page: number) {\r\n this.pageChange.emit(page);\r\n }\r\n\r\n onPageSizeChange(pageSize:any) {\r\n this.itemsPerPage = pageSize;\r\n this.pageSizeChange.emit(this.pageSize);\r\n }\r\n\r\n // disableOption(size: number): boolean {\r\n // if (!this.paginationSizes.includes(size)) {\r\n // console.error('Size is not in paginationSizes.');\r\n // return true; // Disable the option to prevent invalid selection\r\n // }\r\n \r\n // // Calculate the maximum possible total items on the current page\r\n // const maxTotalOnPage = (this.currentPage) * size;\r\n // console.log('Current Page:', maxTotalOnPage);\r\n // // Disable the option if totalItems is less than or equal to the option size\r\n // const disable = this.totalItems <= maxTotalOnPage;\r\n // console.log('Disable:', disable);\r\n // return disable;\r\n // }\r\n \r\n \r\n}\r\n","<div class=\"container d-flex justify-content-center\">\r\n <div class=\"mt-4 text-center\">\r\n <span class=\"sub-title me-3\">Displaying</span>\r\n <select class=\"border-val\" [(ngModel)]=\"pageSize\" (ngModelChange)=\"onPageSizeChange($event)\" >\r\n <option value=\"{{ size }}\" *ngFor=\"let size of paginationSizes\" >{{ size }}</option>\r\n <!-- [disabled]=\"disableOption(size)\" -->\r\n </select>\r\n <span class=\"ms-3 sub-title\">out of {{ totalItems }} items</span>\r\n </div>\r\n \r\n <div class=\"text-center\">\r\n <ul>\r\n <li *ngFor=\"let item of collection | paginate: { id:instanceId, itemsPerPage: itemsPerPage, currentPage: currentPage, totalItems: totalItems }\">\r\n <!-- Your item template here -->\r\n </li>\r\n </ul>\r\n <pagination-controls \r\n (pageChange)=\"onPageChange($event); currentPage=$event;\" \r\n [id]=\"instanceId\"\r\n [directionLinks]=\"directionLinks\"\r\n [maxSize]=\"7\"\r\n [responsive]=\"true\">\r\n </pagination-controls>\r\n </div>\r\n </div>\r\n ","import { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, Renderer2,ChangeDetectorRef } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n \r\n@Component({\r\n selector: 'lib-filters',\r\n templateUrl: './filters.component.html',\r\n styleUrl: './filters.component.scss'\r\n})\r\nexport class FiltersComponent implements OnInit {\r\n @Input() dataObject: any[] = [];\r\n @Output() appliedFilters = new EventEmitter()\r\n Opendropdown: boolean = false;\r\n \r\n showdropdown: any;\r\n selectedValues: string[] = [];\r\n searchTerms: string[] = [];\r\n selectedValuesArray: any[] = [];\r\n searchValue:any;\r\n selectedItem:any;\r\n dropDown: boolean = false;\r\n dummyArray:any[] = [];\r\n noFilter:boolean = false;\r\n responseArray:any[] = []\r\n productModule: any;\r\n product: any;\r\n selectedProductCount: string;\r\n constructor(private elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n private router: Router,\r\n private cd:ChangeDetectorRef) {\r\n }\r\n \r\n @HostListener('document:click', ['$event'])\r\n onClick (event: MouseEvent) {\r\n const\r\n target = event.target as HTMLElement;\r\n if(!target.closest('.dropdown1')) {\r\n this.Opendropdown = false;\r\n }\r\n if(!target.closest('.dropdown-content')){\r\n this.dataObject.forEach((item: any, i: any) => {\r\n item.isOpen = false;\r\n }\r\n );\r\n }\r\n }\r\n \r\n ngOnInit() {\r\n this.dataObject.forEach((item:any)=>{\r\n let selectedList = item?.Issues.filter((data:any)=> data?.checked)\r\n this.selectedValuesArray.push(selectedList)\r\n })\r\n this.dummyArray = JSON.parse(JSON.stringify(this.dataObject))\r\n this.responseArray = JSON.parse(JSON.stringify(this.dataObject))\r\n }\r\n \r\n selectItem(event:any,index:any,subIndex:any){\r\n this.selectedValuesArray[index] = this.dataObject[index].Issues[subIndex];\r\n }\r\n\r\n openDropdown(event:MouseEvent,index:any){\r\n event.stopPropagation();\r\n this.dataObject.forEach((item: any, i: any) => {\r\n if (i !== index) {\r\n item.isOpen = false; // Close other dropdowns\r\n }\r\n });\r\n this.dataObject[index].isOpen = !this.dataObject[index].isOpen;\r\n }\r\n \r\n \r\n opendropdown(e:MouseEvent) {\r\n e.stopPropagation();\r\n this.Opendropdown = !this.Opendropdown;\r\n }\r\n \r\n Dropdown(value: any, index: number,event:MouseEvent) {\r\n event.stopPropagation();\r\n this.dataObject.forEach((item: any, i: any) => {\r\n if (i !== index) {\r\n item.isOpen = false; // Close other dropdowns\r\n }\r\n });\r\n this.dataObject[index].isOpen = !this.dataObject[index].isOpen;\r\n }\r\n \r\n toggleCheckbox(event: any, issue: any, index: number, subIndex: number) {\r\n if(!this.selectedValuesArray.length) {\r\n this.dataObject.forEach((item:any)=>{\r\n let selectedList = item?.Issues.filter((data:any)=> data?.checked)\r\n this.selectedValuesArray.push(selectedList)\r\n })\r\n }\r\n const currentIssues = this.dataObject[index].Issues;\r\n this.selectedValuesArray[index] = this.selectedValuesArray[index];\r\n const selectedValues = this.selectedValuesArray[index]; // Retrieve selected values array for the current dropdown index\r\n if (issue === 'Select All') {\r\n const checkedState = event.target.checked;\r\n this.dataObject[index].Issues.forEach((item: any) => {\r\n item.checked = checkedState;\r\n });\r\n\r\n if (checkedState) {\r\n this.selectedValuesArray[index] = currentIssues.slice(); // Copy all items\r\n } else {\r\n this.selectedValuesArray[index] = []; // Deselect all items\r\n }\r\n } else {\r\n this.dataObject[index].Issues[subIndex].checked = event.target.checked;\r\n let checkedData = this.dataObject[index].Issues[subIndex];\r\n \r\n if(this.dataObject[index].Issues[subIndex].checked){\r\n this.selectedValuesArray[index].push(checkedData)\r\n }\r\n else{\r\n this.selectedValuesArray[index] = this.selectedValuesArray[index].filter((el:any)=>\r\n el?.checked === true && el?.text != issue\r\n )\r\n } \r\n\r\n }\r\n\r\n const selectAllId = `selectall${index}`;\r\n const selectAllElement = document.getElementById(selectAllId) as HTMLInputElement;\r\n if (selectAllElement) {\r\n selectAllElement.checked = selectedValues.length === currentIssues.length;\r\n }\r\n \r\n // Update checkboxes based on selected values\r\n currentIssues.forEach((item: string) => {\r\n const isChecked = this.selectedValuesArray[index].includes(item);\r\n const checkboxId = `option${item}`;\r\n const checkboxElement = document.getElementById(checkboxId) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.checked = isChecked;\r\n }\r\n });\r\n \r\n }\r\n Reset() {\r\n this.selectedValuesArray.forEach((item:any) => {\r\n if(item?.length){item.forEach((data:any)=>{data.checked = false;})\r\n }\r\n })\r\n this.selectedValuesArray = [];\r\n this.Opendropdown = false;\r\n this.responseArray.forEach((item:any,index:any)=>{\r\n item.Issues = this.selectedValuesArray[index] ? this.selectedValuesArray[index] :[]\r\n })\r\n this.appliedFilters.emit(this.responseArray)\r\n }\r\n searchData(event:any,i:any){\r\n const searchTerm = event.target.value.trim(); // Trim whitespace\r\n const filteredIssues = this.dummyArray[i]?.Issues.filter((item:any) => {\r\n let findChecked = this.selectedValuesArray[i]?.find((issue:any) => issue.text == item.text );\r\n if(findChecked) {\r\n item.checked = findChecked?.checked ? findChecked?.checked : false;\r\n }\r\n else {\r\n item.checked = false;\r\n }\r\n return new RegExp(searchTerm,'i').test(item.text);\r\n });\r\n this.dataObject[i].Issues = filteredIssues;\r\n if(filteredIssues.length){\r\n this.noFilter = false;\r\n }else{\r\n this.noFilter = true;\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n Apply() {\r\n this.Opendropdown = false;\r\n this.responseArray.forEach((item:any,index:any)=>{\r\n item.Issues = this.selectedValuesArray[index] ? this.selectedValuesArray[index] :[]\r\n })\r\n this.appliedFilters.emit(this.responseArray)\r\n }\r\n}\r\n ","<div class=\"position-relative\">\r\n \r\n <button type=\"button\" (click)=\"opendropdown($event)\"\r\n class=\"btn btn-default bg-white mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n class=\"pl-3\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span> </button>\r\n <div class=\"card p-5 dropdown1 position-absolute z-1 end-0\" style=\"z-index: 1 !important;\" *ngIf=\"Opendropdown\">\r\n <div class=\"dropdown-title d-flex justify-content-between\">Filter Options\r\n <!-- <div class=\"text-end\"> -->\r\n <button class=\"btn btn-outline w-25 ms-3 btn-resize\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"Apply()\">Apply</button>\r\n <!-- </div> -->\r\n </div>\r\n <div class=\"w-100 border border-gray mt-3\"></div>\r\n <div class=\"py-3\" *ngFor=\"let item of dataObject; let i = index\">\r\n <div *ngIf=\"item.type !== 'single'\">\r\n <div class=\"dropdown form-select position-relative d-flex justify-content-between cursor-pointer\" (click)=\"Dropdown(item.Description,i,$event)\">\r\n <!-- <span class=\"\">{{ selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined ? selectedValuesArray[i]?.length + ' ' + item.Description.split(' ').pop() + ' Selected' : item.Description }}</span> -->\r\n <span>{{item.Description}}</span> <span *ngIf=\"selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined && selectedValuesArray[i]?.length !== 0\" class=\"badge badge-light-default\">{{selectedValuesArray[i]?.length}}</span>\r\n </div>\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute w-100\">\r\n <div class=\"form-check d-flex align-items-center py-3 pt-3 ps-0\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\" [checked]=\"selectedValuesArray[i]?.length === item.Issues.length\"\r\n (change)=\"toggleCheckbox($event,'Select All', i,0)\">\r\n <label class=\"form-check-label cursor-pointer px-2\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n \r\n <div class=\"border border-gray mt-3 \"></div>\r\n \r\n <div class=\"mt-3 d-flex align-items-center\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3 mt-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <input type=\"text\" [(ngModel)]=\"dataObject[i].selectedValue\" (input)=\"searchData($event,i)\" [id]=\"i\" class=\"form-control searchinput ps-14 py-2 me-2 mt-2\"\r\n placeholder=\"Search\" autocomplete=\"off\" />\r\n </div>\r\n \r\n <div *ngFor=\"let issue of item.Issues;let j=index\" class=\"form-check d-flex align-items-center py-3 pt-3 ps-0 mt-2 \">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"issue.text\" id=\"option{{issue.text}}\" [checked]=\"issue.checked\"\r\n (change)=\"toggleCheckbox($event,issue.text,i,j)\">\r\n <label class=\"form-check-label cursor-pointer px-2\" for=\"option{{issue.text}}\">\r\n {{ issue.text }}\r\n </label>\r\n </div>\r\n <div class=\"mt-5 d-flex justify-content-center\">\r\n <span class=\"form-check-label\" *ngIf=\"noFilter\"> No filters available</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.type === 'single'\" class=\"position-relative w-100\">\r\n <button type=\"button\" (click)=\"openDropdown($event,i)\"\r\n class=\"btn btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\"> {{selectedValuesArray[i]?.text ? selectedValuesArray[i]?.text : item.Description}}\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </button>\r\n <div *ngIf=\"item.isOpen\" class=\"card py-1 w-100 dropdown-single position-absolute z-1 top-50px end-0\">\r\n <ul *ngFor=\"let item of item.Issues; let j = index\" class=\"list-unstyled\">\r\n <li [ngClass]=\"selectedValuesArray[i]?.text === item.text ? 'active' : ''\" class=\"camera px-5 items fw-semibold cursor-pointer py-2\" (click)=\"selectItem($event,i,j)\">{{item.text}}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div role=\"group\" class=\"d-flex justify-content-between\">\r\n <button class=\"btn btn-outline w-100 me-2\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-100 ms-2\" (click)=\"Apply()\">Apply</button>\r\n </div> -->\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@NgModule({\r\n imports: [CommonModule, TranslateModule],\r\n exports: [TranslateModule],\r\n})\r\nexport class TranslationModule {}\r\n","// Localization is based on '@ngx-translate/core';\r\n// Please be familiar with official documentations first => https://github.com/ngx-translate/core\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nexport interface Locale {\r\n lang: string;\r\n data: any;\r\n}\r\n\r\nconst LOCALIZATION_LOCAL_STORAGE_KEY = 'language';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TranslationService {\r\n // Private properties\r\n private langIds: any = [];\r\n\r\n constructor(private translate: TranslateService) {\r\n // add new langIds to the list\r\n this.translate.addLangs(['en']);\r\n\r\n // this language will be used as a fallback when a translation isn't found in the current language\r\n this.translate.setDefaultLang('en');\r\n }\r\n\r\n loadTranslations(...args: Locale[]): void {\r\n const locales = [...args];\r\n\r\n locales.forEach((locale) => {\r\n // use setTranslation() with the third argument set to true\r\n // to append translations instead of replacing them\r\n this.translate.setTranslation(locale.lang, locale.data, true);\r\n this.langIds.push(locale.lang);\r\n });\r\n\r\n // add new languages to the list\r\n this.translate.addLangs(this.langIds);\r\n this.translate.use(this.getSelectedLanguage());\r\n }\r\n\r\n setLanguage(lang: string) {\r\n if (lang) {\r\n this.translate.use(this.translate.getDefaultLang());\r\n this.translate.use(lang);\r\n localStorage.setItem(LOCALIZATION_LOCAL_STORAGE_KEY, lang);\r\n }\r\n }\r\n\r\n /**\r\n * Returns selected language\r\n */\r\n getSelectedLanguage(): any {\r\n return (\r\n localStorage.getItem(LOCALIZATION_LOCAL_STORAGE_KEY) ||\r\n this.translate.getDefaultLang()\r\n );\r\n }\r\n}\r\n","// USA\r\nexport const locale = {\r\n lang: 'en',\r\n data: {\r\n TRANSLATOR: {\r\n SELECT: 'Select your language',\r\n },\r\n MENU: {\r\n NEW: 'new',\r\n ACTIONS: 'Actions',\r\n CREATE_POST: 'Create New Post',\r\n PAGES: 'Pages',\r\n FEATURES: 'Features',\r\n APPS: 'Apps',\r\n DASHBOARD: 'Dashboard',\r\n },\r\n AUTH: {\r\n GENERAL: {\r\n OR: 'Or',\r\n SUBMIT_BUTTON: 'Submit',\r\n NO_ACCOUNT: 'Don\\'t have an account?',\r\n SIGNUP_BUTTON: 'Sign Up',\r\n FORGOT_BUTTON: 'Forgot Password',\r\n BACK_BUTTON: 'Back',\r\n PRIVACY: 'Privacy',\r\n LEGAL: 'Legal',\r\n CONTACT: 'Contact',\r\n },\r\n LOGIN: {\r\n TITLE: 'Login Account',\r\n BUTTON: 'Sign In',\r\n },\r\n FORGOT: {\r\n TITLE: 'Forgotten Password?',\r\n DESC: 'Enter your email to reset your password',\r\n SUCCESS: 'Your account has been successfully reset.'\r\n },\r\n REGISTER: {\r\n TITLE: 'Sign Up',\r\n DESC: 'Enter your details to create your account',\r\n SUCCESS: 'Your account has been successfuly registered.'\r\n },\r\n INPUT: {\r\n EMAIL: 'Email',\r\n FULLNAME: 'Fullname',\r\n PASSWORD: 'Password',\r\n CONFIRM_PASSWORD: 'Confirm Password',\r\n USERNAME: 'Username'\r\n },\r\n VALIDATION: {\r\n INVALID: '{{name}} is not valid',\r\n REQUIRED: '{{name}} is required',\r\n MIN_LENGTH: '{{name}} minimum length is {{min}}',\r\n AGREEMENT_REQUIRED: 'Accepting terms & conditions are required',\r\n NOT_FOUND: 'The requested {{name}} is not found',\r\n INVALID_LOGIN: 'The login detail is incorrect',\r\n REQUIRED_FIELD: 'Required field',\r\n MIN_LENGTH_FIELD: 'Minimum field length:',\r\n MAX_LENGTH_FIELD: 'Maximum field length:',\r\n INVALID_FIELD: 'Field is not valid',\r\n }\r\n },\r\n ECOMMERCE: {\r\n COMMON: {\r\n SELECTED_RECORDS_COUNT: 'Selected records count: ',\r\n ALL: 'All',\r\n SUSPENDED: 'Suspended',\r\n ACTIVE: 'Active',\r\n FILTER: 'Filter',\r\n BY_STATUS: 'by Status',\r\n BY_TYPE: 'by Type',\r\n BUSINESS: 'Business',\r\n INDIVIDUAL: 'Individual',\r\n SEARCH: 'Search',\r\n IN_ALL_FIELDS: 'in all fields'\r\n },\r\n ECOMMERCE: 'eCommerce',\r\n CUSTOMERS: {\r\n CUSTOMERS: 'Customers',\r\n CUSTOMERS_LIST: 'Customers list',\r\n NEW_CUSTOMER: 'New Customer',\r\n DELETE_CUSTOMER_SIMPLE: {\r\n TITLE: 'Customer Delete',\r\n DESCRIPTION: 'Are you sure to permanently delete this customer?',\r\n WAIT_DESCRIPTION: 'Customer is deleting...',\r\n MESSAGE: 'Customer has been deleted'\r\n },\r\n DELETE_CUSTOMER_MULTY: {\r\n TITLE: 'Customers Delete',\r\n DESCRIPTION: 'Are you sure to permanently delete selected customers?',\r\n WAIT_DESCRIPTION: 'Customers are deleting...',\r\n MESSAGE: 'Selected customers have been deleted'\r\n },\r\n UPDATE_STATUS: {\r\n TITLE: 'Status has been updated for selected customers',\r\n MESSAGE: 'Selected customers status have successfully been updated'\r\n },\r\n EDIT: {\r\n UPDATE_MESSAGE: 'Customer has been updated',\r\n ADD_MESSAGE: 'Customer has been created'\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","// China\r\nexport const locale = {\r\n lang: 'zh',\r\n data: {\r\n TRANSLATOR: {\r\n SELECT: '选择你的语言',\r\n },\r\n MENU: {\r\n NEW: '新',\r\n ACTIONS: '行动',\r\n CREATE_POST: '创建新帖子',\r\n PAGES: 'Pages',\r\n FEATURES: '特征',\r\n APPS: '应用',\r\n DASHBOARD: '仪表板',\r\n },\r\n AUTH: {\r\n GENERAL: {\r\n OR: '要么',\r\n SUBMIT_BUTTON: '提交',\r\n NO_ACCOUNT: '没有账号?',\r\n SIGNUP_BUTTON: '注册',\r\n FORGOT_BUTTON: '忘记密码',\r\n BACK_BUTTON: '背部',\r\n PRIVACY: '隐私',\r\n LEGAL: '法律',\r\n CONTACT: '联系',\r\n },\r\n LOGIN: {\r\n TITLE: '创建帐号',\r\n BUTTON: '签到',\r\n },\r\n FORGOT: {\r\n TITLE: 'Forgotten Password?',\r\n DESC: 'Enter your email to reset your password',\r\n SUCCESS: 'Your account has been successfully reset.',\r\n },\r\n REGISTER: {\r\n TITLE: 'Sign Up',\r\n DESC: 'Enter your details to create your account',\r\n SUCCESS: 'Your account has been successfuly registered.',\r\n },\r\n INPUT: {\r\n EMAIL: 'Email',\r\n FULLNAME: 'Fullname',\r\n PASSWORD: 'Password',\r\n CONFIRM_PASSWORD: 'Confirm Password',\r\n USERNAME: '用戶名',\r\n },\r\n VALIDATION: {\r\n INVALID: '{{name}} is not valid',\r\n REQUIRED: '{{name}} is required',\r\n MIN_LENGTH: '{{name}} minimum length is {{min}}',\r\n AGREEMENT_REQUIRED: 'Accepting terms & conditions are required',\r\n NOT_FOUND: 'The requested {{name}} is not found',\r\n INVALID_LOGIN: 'The login detail is incorrect',\r\n REQUIRED_FIELD: 'Required field',\r\n MIN_LENGTH_FIELD: 'Minimum field length:',\r\n MAX_LENGTH_FIELD: 'Maximum field length:',\r\n INVALID_FIELD: 'Field is not valid',\r\n },\r\n },\r\n ECOMMERCE: {\r\n COMMON: {\r\n SELECTED_RECORDS_COUNT: 'Selected records count: ',\r\n ALL: 'All',\r\n SUSPENDED: 'Suspended',\r\n ACTIVE: 'Active',\r\n FILTER: 'Filter',\r\n BY_STATUS: 'by Status',\r\n BY_TYPE: 'by Type',\r\n BUSINESS: 'Business',\r\n INDIVIDUAL: 'Individual',\r\n SEARCH: 'Search',\r\n IN_ALL_FIELDS: 'in all fields',\r\n },\r\n ECOMMERCE: 'eCommerce',\r\n CUSTOMERS: {\r\n CUSTOMERS: '顾客',\r\n CUSTOMERS_LIST: '客户名单',\r\n NEW_CUSTOMER: 'New Customer',\r\n DELETE_CUSTOMER_SIMPLE: {\r\n TITLE: 'Customer Delete',\r\n DESCRIPTION: 'Are you sure to permanently delete this customer?',\r\n WAIT_DESCRIPTION: 'Customer is deleting...',\r\n MESSAGE: 'Customer has been deleted',\r\n },\r\n DELETE_CUSTOMER_MULTY: {\r\n TITLE: 'Customers Delete',\r\n DESCRIPTION: 'Are you sure to permanently delete selected customers?',\r\n WAIT_DESCRIPTION: 'Customers are deleting...',\r\n MESSAGE: 'Selected customers have been deleted',\r\n },\r\n UPDATE_STATUS: {\r\n TITLE: 'Status has been updated for selected customers',\r\n MESSAGE: 'Selected customers status have successfully been updated',\r\n },\r\n EDIT: {\r\n UPDATE_MESSAGE: 'Customer has been updated',\r\n ADD_MESSAGE: 'Customer has been created',\r\n },\r\n },\r\n },\r\n },\r\n};\r\n","// Germany\r\nexport const locale = {\r\n lang: 'de',\r\n data: {\r\n TRANSLATOR: {\r\n SELECT: 'Wähle deine Sprache',\r\n },\r\n MENU: {\r\n NEW: 'Neu',\r\n ACTIONS: 'Aktionen',\r\n CREATE_POST: 'Erstellen Sie einen neuen Beitrag',\r\n PAGES: 'Pages',\r\n FEATURES: 'Eigenschaften',\r\n APPS: 'Apps',\r\n DASHBOARD: 'Instrumententafel'\r\n },\r\n AUTH: {\r\n GENERAL: {\r\n OR: 'Oder',\r\n SUBMIT_BUTTON: 'einreichen',\r\n NO_ACCOUNT: 'Hast du kein Konto?',\r\n SIGNUP_BUTTON: 'Anmelden',\r\n FORGOT_BUTTON: 'Passwort vergessen',\r\n BACK_BUTTON: 'Zurück',\r\n PRIVACY: 'Privatsphäre',\r\n LEGAL: 'Legal',\r\n CONTACT: 'Kontakt',\r\n },\r\n LOGIN: {\r\n TITLE: 'Create Account',\r\n BUTTON: 'Sign In',\r\n },\r\n FORGOT: {\r\n TITLE: 'Forgotten Password?',\r\n DESC: 'Enter your email to reset your password',\r\n SUCCESS: 'Your account has been successfully reset.'\r\n },\r\n REGISTER: {\r\n TITLE: 'Sign Up',\r\n DESC: 'Enter your details to create your account',\r\n SUCCESS: 'Your account has been successfuly registered.'\r\n },\r\n INPUT: {\r\n EMAIL: 'Email',\r\n FULLNAME: 'Fullname',\r\n PASSWORD: 'Password',\r\n CONFIRM_PASSWORD: 'Confirm Password',\r\n USERNAME: 'Nutzername'\r\n },\r\n VALIDATION: {\r\n INVALID: '{{name}} is not valid',\r\n REQUIRED: '{{name}} is required',\r\n MIN_LENGTH: '{{name}} minimum length is {{min}}',\r\n AGREEMENT_REQUIRED: 'Accepting terms & conditions are required',\r\n NOT_FOUND: 'The requested {{name}} is not found',\r\n INVALID_LOGIN: 'The login detail is incorrect',\r\n REQUIRED_FIELD: 'Required field',\r\n MIN_LENGTH_FIELD: 'Minimum field length:',\r\n MAX_LENGTH_FIELD: 'Maximum field length:',\r\n INVALID_FIELD: 'Field is not valid',\r\n }\r\n },\r\n ECOMMERCE: {\r\n COMMON: {\r\n SELECTED_RECORDS_COUNT: 'Selected records count: ',\r\n ALL: 'All',\r\n SUSPENDED: 'Suspended',\r\n ACTIVE: 'Active',\r\n FILTER: 'Filter',\r\n BY_STATUS: 'by Status',\r\n BY_TYPE: 'by Type',\r\n BUSINESS: 'Business',\r\n INDIVIDUAL: 'Individual',\r\n SEARCH: 'Search',\r\n IN_ALL_FIELDS: 'in all fields'\r\n },\r\n ECOMMERCE: 'eCommerce',\r\n CUSTOMERS: {\r\n CUSTOMERS: 'Customers',\r\n CUSTOMERS_LIST: 'Customers list',\r\n NEW_CUSTOMER: 'New Customer',\r\n DELETE_CUSTOMER_SIMPLE: {\r\n TITLE: 'Customer Delete',\r\n DESCRIPTION: 'Are you sure to permanently delete this customer?',\r\n WAIT_DESCRIPTION: 'Customer is deleting...',\r\n MESSAGE: 'Customer has been deleted'\r\n },\r\n DELETE_CUSTOMER_MULTY: {\r\n TITLE: 'Customers Delete',\r\n DESCRIPTION: 'Are you sure to permanently delete selected customers?',\r\n WAIT_DESCRIPTION: 'Customers are deleting...',\r\n MESSAGE: 'Selected customers have been deleted'\r\n },\r\n UPDATE_STATUS: {\r\n TITLE: 'Status has been updated for selected customers',\r\n MESSAGE: 'Selected customers status have successfully been updated'\r\n },\r\n EDIT: {\r\n UPDATE_MESSAGE: 'Customer has been updated',\r\n ADD_MESSAGE: 'Customer has been created'\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","// Spain\r\nexport const locale = {\r\n lang: 'es',\r\n data: {\r\n TRANSLATOR: {\r\n SELECT: 'Elige tu idioma',\r\n },\r\n MENU: {\r\n NEW: 'nuevo',\r\n ACTIONS: 'Comportamiento',\r\n CREATE_POST: 'Crear nueva publicación',\r\n PAGES: 'Pages',\r\n FEATURES: 'Caracteristicas',\r\n APPS: 'Aplicaciones',\r\n DASHBOARD: 'Tablero'\r\n },\r\n AUTH: {\r\n GENERAL: {\r\n OR: 'O',\r\n SUBMIT_BUTTON: 'Enviar',\r\n NO_ACCOUNT: 'No tienes una cuenta?',\r\n SIGNUP_BUTTON: 'Regístrate',\r\n FORGOT_BUTTON: 'Se te olvidó tu contraseña',\r\n BACK_BUTTON: 'Espalda',\r\n PRIVACY: 'Intimidad',\r\n LEGAL: 'Legal',\r\n CONTACT: 'Contacto',\r\n },\r\n LOGIN: {\r\n TITLE: 'Crear una cuenta',\r\n BUTTON: 'Registrarse',\r\n },\r\n FORGOT: {\r\n TITLE: 'Contraseña olvidada?',\r\n DESC: 'Ingrese su correo electrónico para restablecer su contraseña',\r\n SUCCESS: 'Your account has been successfully reset.'\r\n },\r\n REGISTER: {\r\n TITLE: 'Sign Up',\r\n DESC: 'Enter your details to create your account',\r\n SUCCESS: 'Your account has been successfuly registered.'\r\n },\r\n INPUT: {\r\n EMAIL: 'Email',\r\n FULLNAME: 'Fullname',\r\n PASSWORD: 'Password',\r\n CONFIRM_PASSWORD: 'Confirm Password',\r\n USERNAME: 'Usuario'\r\n },\r\n VALIDATION: {\r\n INVALID: '{{name}} is not valid',\r\n REQUIRED: '{{name}} is required',\r\n MIN_LENGTH: '{{name}} minimum length is {{min}}',\r\n AGREEMENT_REQUIRED: 'Accepting terms & conditions are required',\r\n NOT_FOUND: 'The requested {{name}} is not found',\r\n INVALID_LOGIN: 'The login detail is incorrect',\r\n REQUIRED_FIELD: 'Required field',\r\n MIN_LENGTH_FIELD: 'Minimum field length:',\r\n MAX_LENGTH_FIELD: 'Maximum field length:',\r\n INVALID_FIELD: 'Field is not valid',\r\n }\r\n },\r\n ECOMMERCE: {\r\n COMMON: {\r\n SELECTED_RECORDS_COUNT: 'Selected records count: ',\r\n ALL: 'All',\r\n SUSPENDED: 'Suspended',\r\n ACTIVE: 'Active',\r\n FILTER: 'Filter',\r\n BY_STATUS: 'by Status',\r\n BY_TYPE: 'by Type',\r\n BUSINESS: 'Business',\r\n INDIVIDUAL: 'Individual',\r\n SEARCH: 'Search',\r\n IN_ALL_FIELDS: 'in all fields'\r\n },\r\n ECOMMERCE: 'eCommerce',\r\n CUSTOMERS: {\r\n CUSTOMERS: 'Customers',\r\n CUSTOMERS_LIST: 'Customers list',\r\n NEW_CUSTOMER: 'New Customer',\r\n DELETE_CUSTOMER_SIMPLE: {\r\n TITLE: 'Customer Delete',\r\n DESCRIPTION: 'Are you sure to permanently delete this customer?',\r\n WAIT_DESCRIPTION: 'Customer is deleting...',\r\n MESSAGE: 'Customer has been deleted'\r\n },\r\n DELETE_CUSTOMER_MULTY: {\r\n TITLE: 'Customers Delete',\r\n DESCRIPTION: 'Are you sure to permanently delete selected customers?',\r\n WAIT_DESCRIPTION: 'Customers are deleting...',\r\n MESSAGE: 'Selected customers have been deleted'\r\n },\r\n UPDATE_STATUS: {\r\n TITLE: 'Status has been updated for selected customers',\r\n MESSAGE: 'Selected customers status have successfully been updated'\r\n },\r\n EDIT: {\r\n UPDATE_MESSAGE: 'Customer has been updated',\r\n ADD_MESSAGE: 'Customer has been created'\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","// France\r\nexport const locale = {\r\n lang: 'fr',\r\n data: {\r\n TRANSLATOR: {\r\n SELECT: 'choisissez votre langue',\r\n },\r\n MENU: {\r\n NEW: 'Nouveau',\r\n ACTIONS: 'Actes',\r\n CREATE_POST: 'Créer un nouveau Post',\r\n PAGES: 'Pages',\r\n FEATURES: 'Fonctionnalités',\r\n APPS: 'Applications',\r\n DASHBOARD: 'Tableau de Bord',\r\n },\r\n AUTH: {\r\n GENERAL: {\r\n OR: 'Ou',\r\n SUBMIT_BUTTON: 'Soumettre',\r\n NO_ACCOUNT: 'Ne pas avoir de compte?',\r\n SIGNUP_BUTTON: 'Registre',\r\n FORGOT_BUTTON: 'Mot de passe oublié',\r\n BACK_BUTTON: 'Back',\r\n PRIVACY: 'Privacy',\r\n LEGAL: 'Legal',\r\n CONTACT: 'Contact',\r\n },\r\n LOGIN: {\r\n TITLE: 'Créer un compte',\r\n BUTTON: 'Sign In',\r\n },\r\n FORGOT: {\r\n TITLE: 'Forgotten Password?',\r\n DESC: 'Enter your email to reset your password',\r\n SUCCESS: 'Your account has been successfully reset.'\r\n },\r\n REGISTER: {\r\n TITLE: 'Sign Up',\r\n DESC: 'Enter your details to create your account',\r\n SUCCESS: 'Your account has been successfuly registered.'\r\n },\r\n INPUT: {\r\n EMAIL: 'Email',\r\n FULLNAME: 'Fullname',\r\n PASSWORD: 'Mot de passe',\r\n CONFIRM_PASSWORD: 'Confirm Password',\r\n USERNAME: 'Nom d\\'utilisateur'\r\n },\r\n VALIDATION: {\r\n INVALID: '{{name}} n\\'est pas valide',\r\n REQUIRED: '{{name}} est requis',\r\n MIN_LENGTH: '{{name}} minimum length is {{min}}',\r\n AGREEMENT_REQUIRED: 'Accepting terms & conditions are required',\r\n NOT_FOUND: 'The requested {{name}} is not found',\r\n INVALID_LOGIN: 'The login detail is incorrect',\r\n REQUIRED_FIELD: 'Required field',\r\n MIN_LENGTH_FIELD: 'Minimum field length:',\r\n MAX_LENGTH_FIELD: 'Maximum field length:',\r\n INVALID_FIELD: 'Field is not valid',\r\n }\r\n },\r\n ECOMMERCE: {\r\n COMMON: {\r\n SELECTED_RECORDS_COUNT: 'Nombre d\\'enregistrements sélectionnés: ',\r\n ALL: 'All',\r\n SUSPENDED: 'Suspended',\r\n ACTIVE: 'Active',\r\n FILTER: 'Filter',\r\n BY_STATUS: 'by Status',\r\n BY_TYPE: 'by Type',\r\n BUSINESS: 'Business',\r\n INDIVIDUAL: 'Individual',\r\n SEARCH: 'Search',\r\n IN_ALL_FIELDS: 'in all fields'\r\n },\r\n ECOMMERCE: 'éCommerce',\r\n CUSTOMERS: {\r\n CUSTOMERS: 'Les clients',\r\n CUSTOMERS_LIST: 'Liste des clients',\r\n NEW_CUSTOMER: 'Nouveau client',\r\n DELETE_CUSTOMER_SIMPLE: {\r\n TITLE: 'Suppression du client',\r\n DESCRIPTION: 'Êtes-vous sûr de supprimer définitivement ce client?',\r\n WAIT_DESCRIPTION: 'Le client est en train de supprimer ...',\r\n MESSAGE: 'Le client a été supprimé'\r\n },\r\n DELETE_CUSTOMER_MULTY: {\r\n TITLE: 'Supprimer les clients',\r\n DESCRIPTION: 'Êtes-vous sûr de supprimer définitivement les clients sélectionnés?',\r\n WAIT_DESCRIPTION: 'Les clients suppriment ...',\r\n MESSAGE: 'Les clients sélectionnés ont été supprimés'\r\n },\r\n UPDATE_STATUS: {\r\n TITLE: 'Le statut a été mis à jour pour les clients sélectionnés',\r\n MESSAGE: 'Le statut des clients sélectionnés a été mis à jour avec succès'\r\n },\r\n EDIT: {\r\n UPDATE_MESSAGE: 'Le client a été mis à jour',\r\n ADD_MESSAGE: 'Le client a été créé'\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","// Japan\r\nexport const locale = {\r\n lang: 'ja',\r\n data: {\r\n TRANSLATOR: {\r\n SELECT: 'あなたが使う言語を選んでください',\r\n },\r\n MENU: {\r\n NEW: '新しい',\r\n ACTIONS: '行動',\r\n CREATE_POST: '新しい投稿を作成',\r\n PAGES: 'Pages',\r\n FEATURES: '特徴',\r\n APPS: 'アプリ',\r\n DASHBOARD: 'ダッシュボード',\r\n },\r\n AUTH: {\r\n GENERAL: {\r\n OR: 'または',\r\n SUBMIT_BUTTON: '提出する',\r\n NO_ACCOUNT: 'アカウントを持っていない?',\r\n SIGNUP_BUTTON: 'サインアップ',\r\n FORGOT_BUTTON: 'パスワードをお忘れですか',\r\n BACK_BUTTON: 'バック',\r\n PRIVACY: 'プライバシー',\r\n LEGAL: '法的',\r\n CONTACT: '接触',\r\n },\r\n LOGIN: {\r\n TITLE: 'Create Account',\r\n BUTTON: 'Sign In',\r\n },\r\n FORGOT: {\r\n TITLE: 'Forgotten Password?',\r\n DESC: 'Enter your email to reset your password',\r\n SUCCESS: 'Your account has been successfully reset.',\r\n },\r\n REGISTER: {\r\n TITLE: 'Sign Up',\r\n DESC: 'Enter your details to create your account',\r\n SUCCESS: 'Your account has been successfuly registered.',\r\n },\r\n INPUT: {\r\n EMAIL: 'Email',\r\n FULLNAME: 'Fullname',\r\n PASSWORD: 'Password',\r\n CONFIRM_PASSWORD: 'Confirm Password',\r\n USERNAME: 'ユーザー名',\r\n },\r\n VALIDATION: {\r\n INVALID: '{{name}} is not valid',\r\n REQUIRED: '{{name}} is required',\r\n MIN_LENGTH: '{{name}} minimum length is {{min}}',\r\n AGREEMENT_REQUIRED: 'Accepting terms & conditions are required',\r\n NOT_FOUND: 'The requested {{name}} is not found',\r\n INVALID_LOGIN: 'The login detail is incorrect',\r\n REQUIRED_FIELD: 'Required field',\r\n MIN_LENGTH_FIELD: 'Minimum field length:',\r\n MAX_LENGTH_FIELD: 'Maximum field length:',\r\n INVALID_FIELD: 'Field is not valid',\r\n },\r\n },\r\n ECOMMERCE: {\r\n COMMON: {\r\n SELECTED_RECORDS_COUNT: 'Selected records count: ',\r\n ALL: 'All',\r\n SUSPENDED: 'Suspended',\r\n ACTIVE: 'Active',\r\n FILTER: 'Filter',\r\n BY_STATUS: 'by Status',\r\n BY_TYPE: 'by Type',\r\n BUSINESS: 'Business',\r\n INDIVIDUAL: 'Individual',\r\n SEARCH: 'Search',\r\n IN_ALL_FIELDS: 'in all fields',\r\n },\r\n ECOMMERCE: 'eCommerce',\r\n CUSTOMERS: {\r\n CUSTOMERS: 'Customers',\r\n CUSTOMERS_LIST: 'Customers list',\r\n NEW_CUSTOMER: 'New Customer',\r\n DELETE_CUSTOMER_SIMPLE: {\r\n TITLE: 'Customer Delete',\r\n DESCRIPTION: 'Are you sure to permanently delete this customer?',\r\n WAIT_DESCRIPTION: 'Customer is deleting...',\r\n MESSAGE: 'Customer has been deleted',\r\n },\r\n DELETE_CUSTOMER_MULTY: {\r\n TITLE: 'Customers Delete',\r\n DESCRIPTION: 'Are you sure to permanently delete selected customers?',\r\n WAIT_DESCRIPTION: 'Customers are deleting...',\r\n MESSAGE: 'Selected customers have been deleted',\r\n },\r\n UPDATE_STATUS: {\r\n TITLE: 'Status has been updated for selected customers',\r\n MESSAGE: 'Selected customers status have successfully been updated',\r\n },\r\n EDIT: {\r\n UPDATE_MESSAGE: 'Customer has been updated',\r\n ADD_MESSAGE: 'Customer has been created',\r\n },\r\n },\r\n },\r\n },\r\n};\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\nimport { map, take } from 'rxjs';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nexport const storesGuard: CanActivateFn = (route, state) => {\r\n const gs = inject(GlobalStateService)\r\n const router = inject(Router)\r\n \r\n return gs.userAccess.pipe(take(1), map((e)=>{\r\n // if(e && !e?.manage_stores_isView){\r\n // router.navigateByUrl('/manage')\r\n // return false\r\n // }\r\n return true;\r\n }))\r\n};\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\nimport { map, skip } from 'rxjs';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nexport const ticketsGuard: CanActivateFn = (route, state) => {\r\n const gs = inject(GlobalStateService)\r\n const router = inject(Router)\r\n \r\n return gs.userAccess.pipe( map((e)=>{ \r\n // if(e && !e?.manage_tickets_isView){\r\n // router.navigateByUrl('/manage')\r\n // return false\r\n // }\r\n return true;\r\n }))\r\n};","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\nimport { map, take } from 'rxjs';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nexport const leadGuard: CanActivateFn = (route, state) => {\r\n const gs = inject(GlobalStateService)\r\n const router = inject(Router)\r\n \r\n return gs.userAccess.pipe(take(1), map((e)=>{\r\n if(e && e?.userType === 'lead'){\r\n router.navigateByUrl('/explore')\r\n return false\r\n }\r\n return true;\r\n }))\r\n};\r\n","import { Routes } from '@angular/router';\r\nimport { storesGuard } from '../guards/stores.guard';\r\nimport { ticketsGuard } from '../guards/tickets.guard';\r\nimport { leadGuard } from '../guards/lead.guard';\r\n\r\n\r\nconst Routing: Routes = [\r\n {\r\n path: 'manage',\r\n loadChildren: () => import('./route-wraper-modules/manage-wrapper.module').then((m) => m.ManageWrapperModule),\r\n canActivate:[leadGuard]\r\n },\r\n {\r\n path: 'manage/stores/edge-app',\r\n loadChildren: () => import('./route-wraper-modules/edge-wrapper.module').then((m) => m.TangoEdgeAppWrapperModule),\r\n canActivate:[leadGuard, storesGuard]\r\n },\r\n {\r\n path: 'manage/stores',\r\n loadChildren: () => import('./route-wraper-modules/store-wrapper.module').then((m) => m.StoreWrapperModule),\r\n canActivate:[leadGuard, storesGuard]\r\n },\r\n {\r\n path: 'profile',\r\n loadChildren: () => import('./route-wraper-modules/profile-wrapper.module').then((m) => m.ProfileWrapperModule),\r\n },\r\n {\r\n path: 'tickets',\r\n loadChildren: () => import('./route-wraper-modules/ticket-wrapper.module').then((m) => m.TicketWrapperModule),\r\n canActivate:[leadGuard, ticketsGuard]\r\n },\r\n {\r\n path: 'explore',\r\n loadChildren: () => import('../modules/intro/intro.module').then((m) => m.IntroModule),\r\n },\r\n {\r\n path: 'notifications',\r\n loadChildren: () => import('../modules/notification/notification.module').then((m) => m.NotificationModule),\r\n },\r\n // {\r\n // path: 'analyse',\r\n // loadChildren: () => import('./route-wraper-modules/analyse-wrapper.module').then((m) => m.AnalyseWrapperModule),\r\n // // canActivate:[leadGuard]\r\n // },\r\n {\r\n path: 'eyetest',\r\n loadChildren: () => import('./route-wraper-modules/eyetest-wrapper.module').then((m) => m.EyetestWrapperModule),\r\n canActivate:[leadGuard]\r\n },\r\n {\r\n path: '',\r\n redirectTo: '/manage',\r\n pathMatch: 'full',\r\n },\r\n {\r\n path: '**',\r\n redirectTo: 'error/404',\r\n },\r\n];\r\n\r\nexport { Routing };\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgxPaginationModule } from 'ngx-pagination';\r\nimport { PaginationComponent } from './pagination/pagination.component';\r\nimport { FiltersComponent } from './filters/filters.component';\r\nimport { CustomSelectComponent } from './custom-select/custom-select.component';\r\nimport { CustomDateFormatPipe } from '../../pipes/customDate.pipe';\r\n\r\n\r\n@NgModule({\r\n declarations: [PaginationComponent, FiltersComponent,CustomSelectComponent,CustomDateFormatPipe],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxPaginationModule\r\n ],\r\n exports:[PaginationComponent,FiltersComponent,CustomSelectComponent,CustomDateFormatPipe]\r\n})\r\nexport class CommonSharedModule { }\r\n","import { ChangeDetectorRef, Component, HostBinding, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NotificationService } from '../../../../services/notification.service'\r\nimport { Subject, takeUntil } from \"rxjs\";\r\n\r\nexport type NotificationsTabsType =\r\n | 'kt_topbar_notifications_1'\r\n | 'kt_topbar_notifications_2'\r\n | 'kt_topbar_notifications_3';\r\n\r\n@Component({\r\n selector: 'lib-notifications-inner',\r\n templateUrl: './notifications-inner.component.html',\r\n styleUrl:'./notifications-inner.component.scss'\r\n})\r\nexport class NotificationsInnerComponent implements OnInit {\r\n @HostBinding('class') class =\r\n 'menu menu-sub menu-sub-dropdown menu-column w-450px w-lg-425px';\r\n @HostBinding('attr.data-kt-menu') dataKtMenu = 'true';\r\n\r\n activeTabId = 'alerts';\r\n private readonly destroy$ = new Subject();\r\n notification: any = [];\r\n loading:boolean = true;\r\n noData:boolean = false;\r\n\r\n constructor(private router:Router, private service:NotificationService,private cd :ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.notificationList()\r\n }\r\n\r\n setActiveTabId(tabId: any) {\r\n this.activeTabId = tabId;\r\n }\r\n\r\n notificationList() {\r\n this.notification = []; \r\n this.loading = true;\r\n let data = {\r\n limit: 5,\r\n offset: 1\r\n };\r\n this.service.notificationList(data)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.loading = false;\r\n this.noData = false;\r\n this.notification = res.data.result || [];\r\n } else {\r\n this.notification = []; \r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },\r\n error: (err) => {\r\n this.notification = []; \r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n });\r\n }\r\n\r\n handleNotification() {\r\n this.service.updateNotificationReceived(true);\r\n }\r\n\r\n viewAll(type:any){\r\n this.dataKtMenu = 'false';\r\n this.router.navigate(['/notifications/alerts'])\r\n }\r\n}\r\n\r\n\r\n","<div class=\"card topbar\" >\r\n <div class=\"card-header\">\r\n <h3 class=\"title-notify mt-10 mb-6\">\r\n Notifications\r\n </h3>\r\n </div>\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData && !loading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/noNotification.svg\" alt=\"\">\r\n <span class=\"notificationAlign mt-10\">No New Notification</span>\r\n <span class=\"noNotification mt-2\">Any new notification will be shown here.</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"alertscroll\" *ngIf=\"notification.length\">\r\n <div *ngFor=\"let item of notification\" class=\"mh-300px ng-star-inserted\" style=\"overflow: auto;\">\r\n <div class=\"d-flex flex-stack py-3 mx-4 ng-star-inserted\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px me-4\"><span class=\"symbol-label bg-light-primary\"><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"></span><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"\r\n version=\"1.1\" class=\"ng-star-inserted\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon points=\"0 0 24 0 24 24 0 24\"></polygon>\r\n <path\r\n d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\" opacity=\"0.3\"></path>\r\n <path\r\n d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\"></path>\r\n </g>\r\n </svg></span></span></div>\r\n <div class=\"mb-0 me-2\" style=\"text-align: left;\"><div class=\"alert-title\">{{ item._source.logType }}</div>\r\n <div class=\"alt-desc\">{{ item._source.logSubType }}</div>\r\n </div>\r\n </div><span class=\"badge badge-light fs-9\">{{ item._source.date|customDateFormat }}</span>\r\n\r\n \r\n </div>\r\n \r\n </div>\r\n <div class=\"text-center border-top\">\r\n <a (click)=\"viewAll('alerts')\" class=\"btn btn-color-gray-600 btn-active-color-primary mt-4\">\r\n View All\r\n </a>\r\n </div>\r\n \r\n </div>\r\n</div>\r\n\r\n<!-- <div class=\"d-flex flex-column bgi-no-repeat rounded-top\">\r\n <ul class=\"nav nav-line-tabs nav-line-tabs-2x nav-stretch border-0 fw-bold px-9\">\r\n <li class=\"nav-item w-50 text-center\">\r\n <a class=\"nav-link w-100 opacity-75 opacity-state-100 pb-4 cursor-pointer d-block text-center\"\r\n data-bs-toggle=\"tab\" [ngClass]=\"activeTabId === 'alerts' ? 'active' : ''\" (click)=\"setActiveTabId('alerts')\">\r\n Alerts\r\n </a>\r\n </li>\r\n\r\n\r\n <li class=\"nav-item w-50 text-center\">\r\n <a class=\"\r\n nav-link d-block text-center\r\n text-white w-100\r\n opacity-75 opacity-state-100\r\n pb-4\r\n cursor-pointer\r\n \" data-bs-toggle=\"tab\" [ngClass]=\"activeTabId === 'download' ? 'active' : ''\"\r\n (click)=\"setActiveTabId('download')\">\r\n Download\r\n </a>\r\n </li>\r\n </ul>\r\n</div> -->\r\n\r\n\r\n<!-- <div class=\"tab-content\">\r\n <div class=\"tab-pane fade\" id=\"alerts\" role=\"tabpanel\" [ngClass]=\"activeTabId === 'alerts' ? 'show active' : ''\">\r\n <div>\r\n <div class=\"mh-300px ng-star-inserted\" style=\"overflow: auto;\">\r\n <div class=\"d-flex flex-stack py-3 mx-4 ng-star-inserted\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px me-4\"><span class=\"symbol-label bg-light-primary\"><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"></span><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"\r\n version=\"1.1\" class=\"ng-star-inserted\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon points=\"0 0 24 0 24 24 0 24\"></polygon>\r\n <path\r\n d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\" opacity=\"0.3\"></path>\r\n <path\r\n d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\"></path>\r\n </g>\r\n </svg></span></span></div>\r\n <div class=\"mb-0 me-2\" style=\"text-align: left;\"><div class=\"alert-title\">User Added</div>\r\n <div class=\"alt-desc\">rock has been successfully onboarde...</div>\r\n </div>\r\n </div><span class=\"badge badge-light fs-9\">28 May</span>\r\n </div>\r\n <div class=\"d-flex flex-stack py-3 mx-4 ng-star-inserted\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px me-4\"><span class=\"symbol-label bg-light-primary\"><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"></span><span\r\n class=\"svg-icon svg-icon-2 svg-icon-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"\r\n version=\"1.1\" class=\"ng-star-inserted\">\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon points=\"0 0 24 0 24 24 0 24\"></polygon>\r\n <path\r\n d=\"M12,11 C9.790861,11 8,9.209139 8,7 C8,4.790861 9.790861,3 12,3 C14.209139,3 16,4.790861 16,7 C16,9.209139 14.209139,11 12,11 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\" opacity=\"0.3\"></path>\r\n <path\r\n d=\"M3.00065168,20.1992055 C3.38825852,15.4265159 7.26191235,13 11.9833413,13 C16.7712164,13 20.7048837,15.2931929 20.9979143,20.2 C21.0095879,20.3954741 20.9979143,21 20.2466999,21 C16.541124,21 11.0347247,21 3.72750223,21 C3.47671215,21 2.97953825,20.45918 3.00065168,20.1992055 Z\"\r\n fill=\"#009EF7\" fill-rule=\"nonzero\"></path>\r\n </g>\r\n </svg></span></span></div>\r\n <div class=\"mb-0 me-2\" style=\"text-align: left;\"><div class=\"alert-title\">User Added</div>\r\n <div class=\"alt-desc\">rock has been successfully onboarde...</div>\r\n </div>\r\n </div><span class=\"badge badge-light fs-9\">28 May</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n\r\n <div class=\"py-3 text-center border-top\">\r\n <a (click)=\"viewAll('alerts')\" class=\"btn btn-color-gray-600 btn-active-color-primary\">\r\n View All\r\n\r\n </a>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tab-pane fade\" id=\"download\" role=\"tabpanel\" [ngClass]=\"activeTabId === 'download' ? 'show active' : ''\">\r\n <div class=\"scroll-y mh-400px my-5 px-5\">\r\n <div class=\"d-flex flex-stack py-4\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"me-3\">\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <g clip-path=\"url(#clip0_9019_100928)\">\r\n <path\r\n d=\"M16.0007 18.6667V16M16.0007 13.3334H16.0073M22.6673 16C22.6673 19.6819 19.6826 22.6667 16.0007 22.6667C12.3188 22.6667 9.33398 19.6819 9.33398 16C9.33398 12.3181 12.3188 9.33337 16.0007 9.33337C19.6826 9.33337 22.6673 12.3181 22.6673 16Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_9019_100928\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(8 8)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <div class=\"mb-0 me-2\">\r\n\r\n <div class=\"title-desc\">Invited <span class=\"title-name\">Lana Steiner</span> to the team</div>\r\n </div>\r\n </div>\r\n\r\n <span class=\"fs-8\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\"\r\n fill=\"none\">\r\n <circle cx=\"5\" cy=\"5\" r=\"4\" fill=\"#12B76A\" />\r\n </svg></span>\r\n </div>\r\n </div>\r\n <div class=\"py-3 text-center border-top\">\r\n <a (click)=\"viewAll('download')\" class=\"btn btn-color-gray-600 btn-active-color-primary\">\r\n View All\r\n\r\n </a>\r\n </div>\r\n </div>\r\n</div> -->\r\n","import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport 'dayjs/locale/en';\r\nimport { AuthService } from '../../../../services/auth.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'lib-storesingle',\r\n templateUrl: './storesingle.component.html',\r\n styleUrl: './storesingle.component.scss'\r\n})\r\nexport class StoresingleComponent implements OnInit {\r\n dayjs = dayjs\r\n isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs(); \r\n return isValidDate ? 'invalid-date' : false;\r\n}\r\n selectedDateRange: any = {};\r\n storeList:any = []\r\n selectedClient:any\r\n selectedFilters: any = {\r\n client: null,\r\n clientName:null,\r\n clients: [],\r\n store: null,\r\n stores: [],\r\n date: null,\r\n\r\n };\r\n constructor(private auth:AuthService, private gs:GlobalStateService, private cd:ChangeDetectorRef,private router:Router){\r\n }\r\n ngOnInit(): void {\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.cd.detectChanges();\r\n if(headerFilters?.client){\r\n this.auth.getStores(headerFilters?.client).subscribe({\r\n next: (e) => {\r\n if (e) {\r\n this.storeList = e.data.result;\r\n const headerFilters: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(headerFilters?.date?.startDate,\"DD-MM-YYYY\").format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs(headerFilters?.date?.endDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\")\r\n };\r\n if (headerFilters?.store) {\r\n this.storeList.find((obj: any) => {\r\n if (obj.storeId === headerFilters.store) {\r\n this.selectedClient = obj;\r\n }\r\n });\r\n this.selectedFilters.store = headerFilters.store;\r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.clients = headerFilters.clients; \r\n this.selectedFilters.date = headerFilters.date;\r\n this.selectedDateRange = {\r\n startDate:this.dayjs( headerFilters.date.startDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs( headerFilters.date.endDate, \"YYYY-MM-DD\").format(\"DD-MM-YYYY\"),\r\n };\r\n \r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n } else {\r\n this.selectedClient = this.storeList[0];\r\n this.selectedFilters.store = this.selectedClient.storeId; \r\n this.selectedFilters.client = headerFilters.client;\r\n this.selectedFilters.clientName = headerFilters.clientName;\r\n this.selectedFilters.clients = headerFilters.clients; \r\n this.selectedDateRange = {\r\n startDate: this.dayjs().format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs().format(\"DD-MM-YYYY\"),\r\n };\r\n var datetime = {\r\n startDate: this.dayjs().format(\"YYYY-MM-DD\"),\r\n endDate: this.dayjs().format(\"YYYY-MM-DD\"),\r\n };\r\n this.selectedFilters.date = datetime;\r\n localStorage.setItem(\r\n \"header-filters\",\r\n JSON.stringify(this.selectedFilters)\r\n );\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n this.cd.detectChanges();\r\n }\r\n }\r\n },\r\n });\r\n }\r\n }\r\n onClientSelect(event:any){\r\n this.selectedClient = event\r\n this.selectedFilters.store = this.selectedClient.storeId;\r\n this.gs.dataRangeValue.next(this.selectedFilters);\r\n localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));\r\n }\r\n}\r\n","<div class=\"wrapper\" >\r\n<lib-select [items]=\"storeList\" [multi]=\"false\" [searchField]=\"'storeName'\" [disabled]=\"false\" [idField]=\"'storeId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div> ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { InlineSVGModule } from 'ng-inline-svg-2';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport {\r\n NgbDropdownModule,\r\n NgbProgressbarModule,\r\n NgbTooltipModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n// import { ExtrasModule } from '../partials/layout/extras/extras.module';\r\n// import {\r\n// DrawersModule,\r\n// DropdownMenusModule,\r\n// ModalsModule,\r\n// EngagesModule,\r\n// } from '../partials';\r\n// import { EngagesComponent } from '../partials/layout/engages/engages.component';\r\n// import { ThemeModeModule } from '../partials/layout/theme-mode-switcher/theme-mode.module';\r\nimport { KeeniconComponent } from './keenicon/keenicon.component';\r\nimport { TranslationModule } from '../../i18n';\r\nimport { LayoutComponent } from './layout/layout.component';\r\nimport { HeaderComponent } from './header/header.component';\r\nimport { ContentComponent } from './content/content.component';\r\nimport { FooterComponent } from './footer/footer.component';\r\nimport { ScriptsInitComponent } from './scripts-init/scripts-init.component';\r\nimport { ToolbarComponent } from './toolbar/toolbar.component';\r\nimport { PageTitleComponent } from './header/page-title/page-title.component';\r\nimport { HeaderMenuComponent } from './header/header-menu/header-menu.component';\r\nimport { SidebarComponent } from './sidebar/sidebar.component';\r\nimport { SidebarLogoComponent } from './sidebar/sidebar-logo/sidebar-logo.component';\r\nimport { SidebarMenuComponent } from './sidebar/sidebar-menu/sidebar-menu.component';\r\nimport { SidebarFooterComponent } from './sidebar/sidebar-footer/sidebar-footer.component';\r\nimport { NavbarComponent } from './header/navbar/navbar.component';\r\nimport { AccountingComponent } from './toolbar/accounting/accounting.component';\r\nimport { ClassicComponent } from './toolbar/classic/classic.component';\r\nimport { ExtendedComponent } from './toolbar/extended/extended.component';\r\nimport { ReportsComponent } from './toolbar/reports/reports.component';\r\nimport { SaasComponent } from './toolbar/saas/saas.component';\r\nimport { Routing } from '../../routes/routing';\r\nimport { LayoutScrollTopComponent } from './scroll-top/scroll-top.component';\r\nimport { CommonSharedModule } from '../common/common-shared.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgxDaterangepickerMd } from 'ngx-daterangepicker-material';\r\nimport { ClientSettingsComponent } from './toolbar/client-settings/client-settings.component';\r\nimport { DatepickerComponent } from './toolbar/datepicker/datepicker.component';\r\nimport { DateSingleSelectComponent } from './toolbar/date-single-select/date-single-select.component';\r\nimport { SingleStoreComponent } from './toolbar/single-store/single-store.component';\r\nimport { NotificationsInnerComponent } from './header/notifications-inner/notifications-inner.component';\r\nimport { CsmAssignConfirmationComponent } from './components/csm-assign-confirmation/csm-assign-confirmation.component';\r\nimport { TrafficHeaderComponent } from './toolbar/traffic-header/traffic-header/traffic-header.component';\r\nimport { TraxHeaderComponent } from './toolbar/trax-header/trax-header.component';\r\nimport { SingleStoredateComponent } from './toolbar/single-storedate/single-storedate.component';\r\nimport { StoresingleComponent } from './toolbar/storesingle/storesingle.component';\r\nimport { TraxWithoutdateComponent } from './toolbar/trax-withoutdate/trax-withoutdate.component';\r\nimport { TrafficNobComponent } from './toolbar/traffic-nob/traffic-nob.component';\r\nimport { MetricsHeaderComponent } from './toolbar/metrics-header/metrics-header.component';\r\nimport { SingleClientstoreDateComponent } from './toolbar/single-clientstore-date/single-clientstore-date.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: LayoutComponent,\r\n children: Routing,\r\n },\r\n];\r\n\r\n@NgModule({\r\n declarations: [\r\n LayoutComponent,\r\n HeaderComponent,\r\n ContentComponent,\r\n FooterComponent,\r\n ScriptsInitComponent,\r\n ToolbarComponent,\r\n PageTitleComponent,\r\n HeaderMenuComponent,\r\n // EngagesComponent,\r\n SidebarComponent,\r\n SidebarLogoComponent,\r\n SidebarMenuComponent,\r\n SidebarFooterComponent,\r\n NavbarComponent,\r\n AccountingComponent,\r\n ClassicComponent,\r\n ExtendedComponent,\r\n ReportsComponent,\r\n SaasComponent,\r\n KeeniconComponent,\r\n LayoutScrollTopComponent,\r\n ClientSettingsComponent,\r\n DatepickerComponent,\r\n DateSingleSelectComponent,\r\n SingleStoreComponent,\r\n NotificationsInnerComponent,\r\n CsmAssignConfirmationComponent,\r\n TrafficHeaderComponent,\r\n TraxHeaderComponent,\r\n SingleStoredateComponent,\r\n StoresingleComponent,\r\n TraxWithoutdateComponent,\r\n TrafficNobComponent,\r\n MetricsHeaderComponent,\r\n SingleClientstoreDateComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule.forChild(routes),\r\n TranslationModule,\r\n InlineSVGModule,\r\n NgbDropdownModule,\r\n NgbProgressbarModule,\r\n // ExtrasModule,\r\n // ModalsModule,\r\n // DrawersModule,\r\n // EngagesModule,\r\n // DropdownMenusModule,\r\n NgbTooltipModule,\r\n TranslateModule,\r\n // ThemeModeModule,\r\n CommonSharedModule,\r\n FormsModule,\r\n NgxDaterangepickerMd.forRoot()\r\n ],\r\n exports: [RouterModule],\r\n})\r\nexport class LayoutModule {}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { ThemeModeService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-error403',\r\n templateUrl: './error403.component.html',\r\n styleUrl: './error403.component.scss'\r\n})\r\nexport class Error403Component implements OnInit,OnDestroy {\r\n private unsubscribe: Subscription[] = [];\r\n\r\n constructor(private router: Router, private modeService: ThemeModeService) {}\r\n ngOnInit(): void {\r\n const subscr = this.modeService.mode.asObservable().subscribe((mode) => {\r\n document.body.style.backgroundImage =\r\n mode === 'dark'\r\n ? 'url(./assets/media/auth/bg1-dark.jpg)'\r\n : 'url(./assets/media/auth/bg1.jpg)';\r\n });\r\n this.unsubscribe.push(subscr);\r\n }\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n document.body.style.backgroundImage = 'none';\r\n }\r\n}\r\n","<!--begin::Title-->\r\n<h1 class=\"fw-bolder fs-2hx text-gray-900 mb-4\">\r\n !Forbidden\r\n </h1>\r\n <!--end::Title-->\r\n \r\n <!--begin::Text-->\r\n <div class=\"fw-semibold fs-6 text-gray-500 mb-7\">\r\n We can't find that page.\r\n </div>\r\n <!--end::Text-->\r\n \r\n <!--begin::Illustration-->\r\n <div class=\"mb-3\">\r\n <img src=\"./assets/media/auth/404-error.png\" class=\"mw-100 mh-300px theme-light-show\" alt=\"\" />\r\n <img src=\"./assets/media/auth/404-error-dark.png\" class=\"mw-100 mh-300px theme-dark-show\" alt=\"\" />\r\n </div>\r\n <!--end::Illustration-->\r\n \r\n <!--begin::Link-->\r\n <div class=\"mb-0\">\r\n <a routerLink=\"/manage/brands\" class=\"btn btn-sm btn-primary\">Return Home</a>\r\n </div>\r\n <!--end::Link-->\r\n ","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { AuthService } from '../../../services/auth.service';\r\nimport { ThemeModeService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-invalid-ip',\r\n templateUrl: './invalid-ip.component.html',\r\n styleUrl: './invalid-ip.component.scss'\r\n})\r\nexport class InvalidIpComponent implements OnInit, OnDestroy {\r\n\r\n private unsubscribe: Subscription[] = [];\r\n\r\n constructor(private router: Router, private modeService: ThemeModeService, private authService:AuthService) {}\r\n ngOnInit(): void {\r\n // const subscr = this.modeService.mode.asObservable().subscribe((mode) => {\r\n // document.body.style.backgroundImage =\r\n // mode === 'dark'\r\n // ? 'url(./assets/media/auth/bg1-dark.jpg)'\r\n // : 'url(./assets/media/auth/bg1.jpg)';\r\n // });\r\n // this.unsubscribe.push(subscr);\r\n this.getProfile()\r\n }\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n document.body.style.backgroundImage = 'none';\r\n }\r\n\r\n getProfile(){\r\n this.unsubscribe.push(\r\n this.authService.userProfileDet().subscribe((res)=>{\r\n if(res?.data?.result !== 'RESTRICTED-IP'){\r\n this.router.navigate(['/manage'])\r\n }\r\n }) \r\n )\r\n \r\n }\r\n\r\n}\r\n","\r\n \r\n <!--begin::Illustration-->\r\n <div class=\"mb-8\">\r\n <img src=\"./assets/media/auth/invalid-ip-error.png\" class=\"mw-100 mh-300px theme-light-show\" alt=\"\" />\r\n <img src=\"./assets/media/auth/invalid-ip-error.png\" class=\"mw-100 mh-300px theme-dark-show\" alt=\"\" />\r\n </div>\r\n <!--end::Illustration-->\r\n \r\n \r\n <!--begin::Text-->\r\n <div class=\"fw-semibold fs-6 text-gray-500 mb-7\">\r\n Your IP address is not whitelisted. Please connect to an authorized network or contact your administrator to whitelist your IP address.\r\n </div>\r\n <!--end::Text-->\r\n ","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { Error404Component } from './error404/error404.component';\r\nimport { Error500Component } from './error500/error500.component';\r\nimport { ErrorsComponent } from './errors.component';\r\nimport { Error403Component } from './error403/error403.component';\r\nimport { InvalidIpComponent } from './invalid-ip/invalid-ip.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: ErrorsComponent,\r\n children: [\r\n {\r\n path: '403',\r\n component: Error403Component,\r\n },\r\n {\r\n path: '404',\r\n component: Error404Component,\r\n },\r\n {\r\n path: '500',\r\n component: Error500Component,\r\n },\r\n {\r\n path: '403-ip',\r\n component: InvalidIpComponent,\r\n },\r\n { path: '', redirectTo: '404', pathMatch: 'full' },\r\n { path: '**', redirectTo: '404', pathMatch: 'full' },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class ErrorsRoutingModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ErrorsRoutingModule } from './errors-routing.module';\r\nimport { ErrorsComponent } from '../errors/errors.component';\r\nimport { Error500Component } from './error500/error500.component';\r\nimport { Error404Component } from './error404/error404.component';\r\nimport { Error403Component } from './error403/error403.component';\r\nimport { InvalidIpComponent } from './invalid-ip/invalid-ip.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ErrorsComponent,\r\n Error404Component,\r\n Error500Component,\r\n Error403Component,\r\n InvalidIpComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ErrorsRoutingModule\r\n ]\r\n})\r\nexport class ErrorsModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard {\r\n constructor(private authService: AuthService) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const currentUser = localStorage.getItem('isLoggedIn');\r\n if (currentUser === 'true') {\r\n // logged in so return true\r\n return true;\r\n }\r\n\r\n // not logged in so redirect to login page with the return url\r\n this.authService.logout();\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpErrorResponse\r\n} from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, catchError, switchMap, throwError, tap } from 'rxjs';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { Router } from '@angular/router';\r\n@Injectable()\r\nexport class HttpAuthInterceptor implements HttpInterceptor {\r\n\r\n authlocalStorageToken: string='';\r\n private isRefreshingToken: boolean = false;\r\n private tokenRefreshed: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n \r\n constructor(\r\n private gs:GlobalStateService,\r\n private authService: AuthService,private router:Router\r\n ) {\r\n this.gs.environment.subscribe((env)=>{\r\n if(env){\r\n this.authlocalStorageToken = `${env.appVersion}-${env.USERDATA_KEY}`;}\r\n })\r\n }\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const user: any = JSON.parse(localStorage.getItem(this.authlocalStorageToken) || '{}');\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: 'Bearer ' + user.authenticationToken\r\n }\r\n });\r\n return next.handle(request)\r\n .pipe(tap((response:any)=>{\r\n if(response?.body?.data?.result === 'RESTRICTED-IP'){\r\n this.router.navigateByUrl('/error/403-ip')\r\n }\r\n }))\r\n .pipe(\r\n catchError((error:any)=>{\r\n if (error instanceof HttpErrorResponse && error.status === 401) {\r\n // If the error is due to unauthorized access, try to refresh the token\r\n return this.handle401Error(request, next);\r\n } \r\n // else if (error instanceof HttpErrorResponse && error.status === 403) {\r\n // // If the error is due to unauthorized access, try to refresh the token\r\n // this.router.navigate(['/manage/brands'])\r\n // } \r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n private handle401Error(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (!this.isRefreshingToken) {\r\n this.isRefreshingToken = true;\r\n return this.authService.refreshToken().pipe(\r\n switchMap((res: any) => {\r\n if (res && res.code == 200 && res.data.result) {\r\n // Update local storage with the new token\r\n localStorage.setItem(this.authlocalStorageToken, JSON.stringify(res.data.result));\r\n \r\n // Clone the request with the new token\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${res.data.result.authenticationToken}`\r\n }\r\n });\r\n \r\n // Reset the flag for token refreshing\r\n this.isRefreshingToken = false;\r\n \r\n // Retry the original request with the new token\r\n return next.handle(request);\r\n } else {\r\n // Logout user if refresh token fails\r\n this.authService.logout();\r\n const keysToKeep = ['data-mismatch-draft'];\r\n const valuesToKeep:any = {};\r\n \r\n keysToKeep.forEach(key => {\r\n const value = localStorage.getItem(key);\r\n if (value !== null) {\r\n valuesToKeep[key] = value;\r\n }\r\n });\r\n \r\n localStorage.clear();\r\n \r\n Object.keys(valuesToKeep).forEach(key => {\r\n localStorage.setItem(key, valuesToKeep[key]);\r\n }); \r\n this.router.navigate(['/auth/login']);\r\n return throwError('Token Expired Please Login Again!');\r\n }\r\n }),\r\n catchError((error) => {\r\n // Logout user if refresh token fails\r\n this.authService.logout();\r\n const keysToKeep = ['data-mismatch-draft'];\r\n const valuesToKeep:any = {};\r\n\r\n keysToKeep.forEach(key => {\r\n const value = localStorage.getItem(key);\r\n if (value !== null) {\r\n valuesToKeep[key] = value;\r\n }\r\n });\r\n\r\n localStorage.clear();\r\n\r\n Object.keys(valuesToKeep).forEach(key => {\r\n localStorage.setItem(key, valuesToKeep[key]);\r\n }); \r\n \r\n this.router.navigate(['/auth/login']);\r\n return throwError(error);\r\n })\r\n );\r\n } else {\r\n // If already refreshing the token, queue the request and wait\r\n return this.tokenRefreshed.pipe(\r\n switchMap(() => {\r\n const tokens: any = JSON.parse(localStorage.getItem(this.authlocalStorageToken) || '{}');\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: 'Bearer ' + tokens.authenticationToken\r\n }\r\n });\r\n return next.handle(request);\r\n })\r\n );\r\n }\r\n }\r\n // intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // const tokenObjStr = this.authService.getCookie(this.authlocalStorageToken);\r\n // let token = '';\r\n\r\n // if (tokenObjStr) {\r\n // try {\r\n // const tokenObj = JSON.parse(tokenObjStr);\r\n // token = tokenObj?.authenticationToken || '';\r\n // } catch (e) {\r\n // console.error('Invalid auth token format in cookie', e);\r\n // }\r\n // }\r\n\r\n // if (token) {\r\n // request = request.clone({\r\n // setHeaders: {\r\n // Authorization: 'Bearer ' + token,\r\n // },\r\n // });\r\n // }\r\n\r\n // return next.handle(request).pipe(\r\n // tap((response: any) => {\r\n // if (response?.body?.data?.result === 'RESTRICTED-IP') {\r\n // this.router.navigateByUrl('/error/403-ip');\r\n // }\r\n // }),\r\n // catchError((error: any) => {\r\n // if (error instanceof HttpErrorResponse && error.status === 401) {\r\n // return this.handle401Error(request, next);\r\n // }\r\n // return throwError(error);\r\n // })\r\n // );\r\n // }\r\n\r\n // private handle401Error(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // if (!this.isRefreshingToken) {\r\n // this.isRefreshingToken = true;\r\n\r\n // return this.authService.refreshToken().pipe(\r\n // switchMap((res: any) => {\r\n // if (res && res.code === 200 && res.data?.result) {\r\n // this.authService.setCookie(this.authlocalStorageToken, JSON.stringify(res.data.result), 1);\r\n\r\n // const newToken = res.data.result.authenticationToken;\r\n // request = request.clone({\r\n // setHeaders: {\r\n // Authorization: 'Bearer ' + newToken,\r\n // },\r\n // });\r\n\r\n // this.isRefreshingToken = false;\r\n // return next.handle(request);\r\n // } else {\r\n // return this.forceLogout('Token Expired. Please login again.');\r\n // }\r\n // }),\r\n // catchError((err) => this.forceLogout(err))\r\n // );\r\n // } else {\r\n // // Optional: implement logic to queue and retry if multiple requests during refresh\r\n // return throwError('Token refresh already in progress');\r\n // }\r\n // }\r\n\r\n // private forceLogout(message: string): Observable<never> {\r\n // this.authService.logout();\r\n\r\n // const keysToKeep = ['data-mismatch-draft'];\r\n // const valuesToKeep: any = {};\r\n\r\n // keysToKeep.forEach((key) => {\r\n // const val = localStorage.getItem(key);\r\n // if (val) valuesToKeep[key] = val;\r\n // });\r\n\r\n // localStorage.clear();\r\n\r\n // // Object.entries(valuesToKeep).forEach(([k, v]) => {\r\n // // return localStorage.setItem(k, v);\r\n // // });\r\n\r\n // this.authService.deleteCookie(this.authlocalStorageToken);\r\n // this.router.navigate(['/auth/login']);\r\n // return throwError(() => message);\r\n // }\r\n}","/*\r\n * Public API Surface of tango-app-shared\r\n */\r\n\r\n// Components\r\nexport * from './lib/modules/layout/layout/layout.component';\r\nexport * from './lib/modules/layout/content/content.component';\r\nexport * from './lib/modules/layout/footer/footer.component';\r\nexport * from './lib/modules/layout/header/header.component';\r\nexport * from './lib/modules/layout/header/header-menu/header-menu.component';\r\nexport * from './lib/modules/layout/header/navbar/navbar.component';\r\nexport * from './lib/modules/layout/header/page-title/page-title.component';\r\nexport * from './lib/modules/layout/scripts-init/scripts-init.component';\r\nexport * from './lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component';\r\nexport * from './lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component';\r\nexport * from './lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component';\r\nexport * from './lib/modules/layout/sidebar/sidebar.component';\r\nexport * from './lib/modules/layout/toolbar/accounting/accounting.component';\r\nexport * from './lib/modules/layout/toolbar/classic/classic.component';\r\nexport * from './lib/modules/layout/toolbar/client-settings/client-settings.component';\r\nexport * from './lib/modules/layout/toolbar/extended/extended.component';\r\nexport * from './lib/modules/layout/toolbar/reports/reports.component';\r\nexport * from './lib/modules/layout/toolbar/saas/saas.component';\r\nexport * from './lib/modules/layout/toolbar/toolbar.component';\r\nexport * from './lib/modules/layout/scroll-top/scroll-top.component';\r\n\r\nexport * from './lib/modules/errors/errors.component';\r\nexport * from './lib/modules/errors/error404/error404.component';\r\nexport * from './lib/modules/errors/error500/error500.component';\r\nexport * from './lib/modules/common/pagination/pagination.component'\r\nexport * from './lib/modules/common/filters/filters.component'\r\nexport * from './lib/modules/common/custom-select/custom-select.component'\r\n\r\n// i18n\r\nexport * from './lib/i18n/translation.module';\r\nexport * from './lib/i18n/translation.service';\r\nexport * as enLang from './lib/i18n/vocabs/en';\r\nexport * as chLang from './lib/i18n/vocabs/ch';\r\nexport * as deLang from './lib/i18n/vocabs/de';\r\nexport * as esLang from './lib/i18n/vocabs/es';\r\nexport * as frLang from './lib/i18n/vocabs/fr';\r\nexport * as jpLang from './lib/i18n/vocabs/jp';\r\n\r\n// modules\r\nexport * from './lib/modules/layout/layout.module';\r\nexport * from './lib/modules/errors/errors.module';\r\nexport * from './lib/modules/common/common-shared.module'\r\n\r\n// guards\r\nexport * from './lib/guards/auth.guard';\r\n\r\n// interfaces\r\nexport * from './lib/interfaces/global-state';\r\n\r\n\r\n// services\r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/toast.service';\r\nexport * from './lib/services/notification.service';\r\n// pipe\r\nexport * from './lib/pipes/customDate.pipe'\r\n\r\n// interceptors\r\nexport * from './lib/interceptors/http-auth-interceptor';\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i1.NotificationService","i3.ToastService","i5.CustomDateFormatPipe","i3","i4.HeaderMenuComponent","i5.NavbarComponent","i6.KeeniconComponent","i3.AuthService","i4.ToastService","i5","filter","i2.AuthService","i4","i1.AuthService","i3.CustomSelectComponent","i5.CustomSelectComponent","i6","i5.PageTitleComponent","i6.ClassicComponent","i7.ClientSettingsComponent","i8.DatepickerComponent","i9.DateSingleSelectComponent","i10.SingleStoreComponent","i11.TrafficHeaderComponent","i12.TraxHeaderComponent","i13.SingleStoredateComponent","i14.TraxWithoutdateComponent","i15.TrafficNobComponent","i16.MetricsHeaderComponent","i17.SingleClientstoreDateComponent","i3.KeeniconComponent","crypto","i2.SidebarLogoComponent","i3.SidebarMenuComponent","i4.SidebarFooterComponent","i2.KeeniconComponent","i6.HeaderComponent","i7.ContentComponent","i8.FooterComponent","i9.ScriptsInitComponent","i10.ToolbarComponent","i11.SidebarComponent","i12.LayoutScrollTopComponent","locale","i2.NotificationService","i4.CustomDateFormatPipe","i4.CustomSelectComponent","routes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASa,WAAW,CAAA;AAYF,IAAA,MAAA;AAAsB,IAAA,EAAA;AAA8B,IAAA,IAAA;AAXxE,IAAA,YAAY;AACZ,IAAA,qBAAqB;AACrB,IAAA,UAAU;AACV,IAAA,WAAW;AACX,IAAA,aAAa;AACb,IAAA,eAAe;AACf,IAAA,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;AAC3C,IAAA,aAAa;AACb,IAAA,OAAO;AACP,IAAA,aAAa;AACb,IAAA,kBAAkB;AAClB,IAAA,WAAA,CAAoB,MAAa,EAAS,EAAqB,EAAS,IAAe,EAAA;QAAnE,IAAA,CAAA,MAAM,GAAN,MAAM;QAAgB,IAAA,CAAA,EAAE,GAAF,EAAE;QAA4B,IAAA,CAAA,IAAI,GAAJ,IAAI;QAC1E,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,KAAG;AACrC,YAAA,IAAG,GAAG,EAAC;AACN,gBAAA,IAAI,CAAC,YAAY,GAAI,GAAG,CAAC,YAAY;AACrC,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;AAChC,gBAAA,IAAI,CAAC,WAAW,GAAE,GAAG,CAAC,WAAW;AACjC,gBAAA,IAAI,CAAC,eAAe,GAAE,GAAG,CAAC,eAAe;AACzC,gBAAA,IAAI,CAAC,qBAAqB,GAAG,CAAA,EAAG,GAAG,CAAC,UAAU,CAAA,CAAA,EAAI,GAAG,CAAC,YAAY,CAAA,CAAE;AACpE,gBAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa;AACtC,gBAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa;AACtC,gBAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa;AACtC,gBAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,aAAa;AAChC,gBAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO;AAC1B,gBAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,eAAe;AAC7C,YAAA;AACF,QAAA,CAAC,CAAC;IAAC;AAEH,IAAA,WAAW,CAAC,GAAQ,EAAA;AACnB,QAAA,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;IACA,UAAU,GAAA;AACR,QAAA,MAAM,OAAO,GAAG;AACZ,YAAA,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC;SACrC;AAED,QAAA,OAAO,OAAO;IAChB;IAEE,MAAM,GAAA;;AAEJ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,OAAA,CAAS,CAAC;IACnD;IACA,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,YAAY,CAAA,YAAA,CAAc,EAAE,EAC1D;AACI,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAClC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC;AACA,IAAA,SAAS,CAAC,EAAM,EAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,qBAAA,EAAwB,EAAE,CAAA,CAAE,EAAE,EACvE;AACI,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAClC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC;AACA,IAAA,uBAAuB,CAAC,IAAQ,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,2BAAA,CAA6B,EAAC,IAAI,EAAE;AAC/E,YAAA,OAAO,EAAE,IAAI,CAAC,UAAU;AACzB,SAAA,CAAC;IACJ;IACA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,UAAA,CAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE;AAClE,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAa,KAAI;AACpB,YAAA,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChE,YAAA,OAAO,QAAQ;QACjB,CAAC,CAAC,EACF,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACL;IAEA,YAAY,GAAA;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG;AACvE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CACvD,EAAE,YAAY;AACf,QAAA,IAAI,MAAM,GAAQ;AAChB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,YAAY,EAAE,YAAY;SAC3B;QACD,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,cAAA,CAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;AAC1D,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACL;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,UAAA,CAAY,CAAC,CAAC,IAAI,CAC5D,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AAEA,IAAA,gBAAgB,CAAC,QAAe,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,4BAAA,EAA+B,QAAQ,CAAA,CAAE,CAAE;IACpF;AAEA,IAAA,gBAAgB,CAAC,QAAe,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,YAAY,CAAA,uCAAA,EAA0C,QAAQ,CAAA,CAAE,CAAE;IACjG;IAEA,qBAAqB,CAAC,QAAe,EAAE,IAAQ,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,YAAY,sCAAsC,QAAQ,CAAA,CAAE,EAAE,IAAI,CAAE;IACpG;AAEA,IAAA,eAAe,CAAC,KAAY,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,iBAAA,EAAoB,KAAK,CAAA,CAAE,CAAE;IACzE;AAEA,IAAA,iBAAiB,CAAC,QAAe,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,mBAAA,EAAsB,QAAQ,CAAA,CAAE,CAAE;IAC9E;AAEA,IAAA,WAAW,CAAC,IAAQ,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,mBAAA,CAAqB,EAAC,IAAI,CAAC;IACxE;AACA,IAAA,SAAS,CAAC,IAAQ,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,iBAAA,CAAmB,EAAC,IAAI,CAAC;IACtE;AACA,IAAA,eAAe,CAAC,IAAQ,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,gBAAA,CAAkB,EAAC,IAAI,CAAC;IACrE;AACA,IAAA,mBAAmB,CAAC,IAAQ,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,gBAAA,CAAkB,EAAC,IAAI,CAAC;IACrE;AAEA,IAAA,eAAe,CAAC,EAAO,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,YAAY,CAAA,gBAAA,EAAmB,EAAE,CAAA,CAAE,CAAC;IACnE;AAEA,IAAA,cAAc,CAAC,IAAQ,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,oBAAA,CAAsB,EAAC,IAAI,CAAC;IACzE;AAEA,IAAA,UAAU,CAAC,IAAQ,EAAA;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,iBAAA,CAAmB,EAAC,IAAI,CAAC;IACtE;IACA,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,aAAA,CAAe,CAAC;IACjE;AACA,IAAA,aAAa,CAAC,IAAQ,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,aAAA,CAAe,EAAC,IAAI,CAAC;IAClE;wGAlJW,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA;;4FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCHY,YAAY,CAAA;AAEvB,IAAA,WAAA,GAAA,EAAgB;AAIlB,IAAA,eAAe,CAAC,OAAW,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC;AACR,YAAA,QAAQ,EAAE,CAAA,kEAAA,CAAoE;YAC9E,IAAI,EAAE,CAAA,0DAAA,EAA6D,OAAO,CAAA,YAAA,CAAc;AACxF,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,WAAW,EAAE,qBAAqB;AAClC,YAAA,OAAO,EAAE,CAAC,KAAK,KAAI;gBACjB,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpD,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;YACxD,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,eAAe,CAAC,OAAc,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC;AACR,YAAA,QAAQ,EAAE,CAAA,wEAAA,CAA0E;YACpF,IAAI,EAAE,CAAA,0DAAA,EAA6D,OAAO,CAAA,YAAA,CAAc;AACxF,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,WAAW,EAAC,qBAAqB;AACjC,YAAA,OAAO,EAAE,CAAC,KAAK,KAAI;gBACjB,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpD,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;YACxD;AACD,SAAA,CAAC;IACJ;AAEA,IAAA,aAAa,CAAC,OAAc,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC;AACR,YAAA,QAAQ,EAAE,CAAA,gEAAA,CAAkE;YAC5E,IAAI,EAAE,CAAA,0DAAA,EAA6D,OAAO,CAAA,YAAA,CAAc;AACxF,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,WAAW,EAAC,mBAAmB;AAC/B,YAAA,OAAO,EAAE,CAAC,KAAK,KAAI;gBACjB,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpD,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;YACxD;AACD,SAAA,CAAC;IACJ;AACA,IAAA,eAAe,CAAC,OAAc,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC;AACR,YAAA,QAAQ,EAAE,CAAA,kEAAA,CAAoE;YAC9E,IAAI,EAAE,CAAA,0DAAA,EAA6D,OAAO,CAAA,YAAA,CAAc;AACxF,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,WAAW,EAAC,qBAAqB;AACjC,YAAA,OAAO,EAAE,CAAC,KAAK,KAAI;gBACjB,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpD,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;YACxD;AACD,SAAA,CAAC;IACJ;wGA3Ea,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCMY,mBAAmB,CAAA;AASV,IAAA,QAAA;AAAmC,IAAA,EAAA;IAR/C,WAAW,GAAmB,EAAE;IAE/B,qBAAqB,GAAW,EAAE;IAClC,uBAAuB,GAAY,IAAI;AAEhD,IAAA,MAAM;AACN,IAAA,YAAY;IAEZ,WAAA,CAAoB,QAAyB,EAAU,EAAoB,EAAA;QAAvD,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAA2B,IAAA,CAAA,EAAE,GAAF,EAAE;IAAqB;IAE9E,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE;QAE5D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG;AACzB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACzB,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;wGAzBW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,uKCVhC,i+BA2BA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FDjBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,i+BAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA;oHAOlB,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,uBAAuB,EAAA,CAAA;sBAA/B;;;MENU,mBAAmB,CAAA;AAaV,IAAA,IAAA;AAA0B,IAAA,EAAA;AAZ9C,IAAA,yBAAyB;AACzB,IAAA,YAAY;AACZ,IAAA,OAAO;AACC,IAAA,iBAAiB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC/D,IAAA,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AAEnD,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC1C,IAAA,UAAU,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC;AAEnC,IAAA,2BAA2B,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACzE,IAAA,qBAAqB,GAAG,IAAI,CAAC,2BAA2B,CAAC,YAAY,EAAE;IAEvE,WAAA,CAAoB,IAAgB,EAAU,EAAsB,EAAA;QAAhD,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,EAAE,GAAF,EAAE;QAC9C,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACpC,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,yBAAyB,GAAG,GAAG,CAAC,yBAAyB;AAC9D,gBAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO;AAC3B,YAAA;YACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAK,KAAG;AACxC,gBAAA,IAAG,CAAC,EAAC;oBACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7B,gBAAA;AACH,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IAEJ;IACA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;IACnC;AAEA,IAAA,gBAAgB,CAAC,IAAQ,EAAA;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,yBAAyB,2BAA2B,IAAI,CAAC,KAAK,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;IACtH;AACA,IAAA,kBAAkB,CAAC,GAAO,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,yBAAyB,wBAAwB,GAAG,CAAA,CAAE,EAAC,EAAE,CAAC;IACzF;AACA,IAAA,sBAAsB,CAAE,IAAQ,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAA,yBAAA,EAA4B,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC;IACrG;AACA,IAAA,0BAA0B,CAAC,KAAc,EAAA;AACvC,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9C;AACA,IAAA,YAAY,CAAC,GAAO,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,yBAAyB,iBAAiB,GAAG,CAAA,CAAE,EAAC,EAAE,CAAC;IACnF;AACA,IAAA,kBAAkB,CAAC,IAAS,EAAA;QAC1B,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,yBAAyB,CAAA,qBAAA,EAAwB,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EACzF,CAAC;IACN;AAEA,IAAA,aAAa,CAAC,IAAQ,EAAA;QACpB,OAAO,IAAI,CAAC;aACT,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,yBAAyB,CAAA,oBAAA,CAAsB,EAAE,IAAI,EAAE,EACzE,CAAC;IACN;AACA,IAAA,eAAe,CAAE,IAAQ,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,uBAAA,CAAyB,EAAE,IAAI,CAAC;IACvE;AAEA,IAAA,cAAc,CAAC,IAAQ,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,6BAA6B,IAAI,CAAA,CAAE,EAAC,EAAE,CAAC;IAC7E;wGA/DW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCDY,oBAAoB,CAAA;AAE/B,IAAA,SAAS,CAAC,KAAU,EAAE,GAAG,IAAW,EAAA;AAClC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC;YACtC,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC;AAC/D,YAAA,OAAO,aAAa;AACrB,QAAA;AACD,QAAA,OAAO,IAAI;IACb;wGATW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE;AACP,iBAAA;;;ACED,MAAM,eAAe,GAAG,UAAU,CAAC,QAAQ,EAAE;AAC3C,IAAA,KAAK,CAAC;AACJ,QAAA,OAAO,EAAE,CAAC;;KAEX,CAAC;AACF,IAAA,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC;AAC1B,QAAA,OAAO,EAAE;AACV,KAAA,CAAC;AACH,CAAA,CAAC;AAEF,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE;AACtC,IAAA,KAAK,CAAC;AACJ,QAAA,OAAO,EAAE,CAAC;;KAEX,CAAC;AACF,IAAA,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC;AAC3B,QAAA,OAAO,EAAE,CAAC;AACX,KAAA,CAAC;AACH,CAAA,CAAC;AAEF,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE;IAC/B;AACD,CAAA,CAAC;AAEF,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE;IACjC;AACD,CAAA,CAAC;MAWW,eAAe,CAAA;AAuBN,IAAA,OAAA;AAAoC,IAAA,MAAA;AAAsB,IAAA,KAAA;AAA2B,IAAA,EAAA;AAtBhG,IAAA,0BAA0B;AAC1B,IAAA,KAAK;AACG,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;IAEzC,SAAS,GAAW,cAAc;IAClC,QAAQ,GAAW,oHAAoH;AACvI,IAAA,SAAS;IACT,eAAe,GAAW,4BAA4B;IACtD,YAAY,GAAW,cAAc;IACrC,oBAAoB,GAAY,KAAK;IACrC,YAAY,GAAO,EAAE;IACrB,oBAAoB,GAAO,EAAE;IAC7B,WAAW,GAAU,QAAQ;IAC7B,OAAO,GAAW,IAAI;IACtB,MAAM,GAAW,KAAK;AACtB,IAAA,GAAG;IACH,gBAAgB,GAAW,IAAI;IAC/B,YAAY,GAAW,KAAK;AAEpB,IAAA,YAAY;IACpB,yBAAyB,GAAY,IAAI;AAEzC,IAAA,WAAA,CAAoB,OAA2B,EAAS,MAAa,EAAS,KAAkB,EAAS,EAAoB,EAAA;QAAzG,IAAA,CAAA,OAAO,GAAP,OAAO;QAA6B,IAAA,CAAA,MAAM,GAAN,MAAM;QAAgB,IAAA,CAAA,KAAK,GAAL,KAAK;QAAsB,IAAA,CAAA,EAAE,GAAF,EAAE;IAE3G;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC/G,IAAI,CAAC,oBAAoB,EAAE;AAC7B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,oBAAoB,EAAE;IAE7B;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,QAAA,IAAG,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC9B,QAAA;AACI,aAAA;AACH,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC7B,QAAA;QACD,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,yBAAyB,GAAG,CAAC,IAAI,CAAC,yBAAyB;IAClE;AACA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC1B;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,IAAI,GAAG;AACT,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE;SACT;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI;AAC/B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,oBAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC;oBAC9C,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;oBACnG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AAC9C,wBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;wBAClB,UAAU,CAAC,MAAK;AACd,4BAAA,IAAI,CAAC,MAAM,GAAG,KAAK;4BACnB,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAE,CAAC,GAAQ,KAAI;AACjG,4BAAA,CAAC,CAAC;;wBAEJ,CAAC,EAAE,IAAI,CAAC;AACV,oBAAA,CAAC,CAAC;AAEH,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACnB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YACpB;AACD,SAAA,CAAC;IACN;IAEC,sBAAsB,CAAC,IAAS,EAAC,UAAc,EAAA;QAC9C,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAI;AAC9F,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;gBAC1B,IAAG,UAAU,IAAI,UAAU,EAAE,cAAc,IAAI,EAAE,IAAI,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACrG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC;AACrD,gBAAA;AACD,gBAAA,IAAG,UAAU,IAAI,UAAU,EAAE,cAAc,IAAI,QAAQ,EAAE;oBACvD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK,EAAE,CAAC,CAAC;AAEvF,gBAAA;AACD,gBAAA,IAAG,UAAU,IAAI,UAAU,EAAE,cAAc,IAAI,eAAe,EAAE;AAC9D,oBAAA,IAAI,MAAM,GAAG;wBACX,EAAE,EAAC,UAAU,CAAC,EAAE;AAChB,wBAAA,IAAI,EAAC;qBACN;oBACD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAO,KAAI,EAAE,CAAC,CAAC;AAC7F,gBAAA;AACD,gBAAA,IAAG,UAAU,IAAI,UAAU,EAAE,cAAc,IAAI,YAAY,EAAE;AAC3D,oBAAA,IAAI,MAAM,GAAG;wBACX,QAAQ,EAAE,UAAU,EAAE,QAAQ;AAC9B,wBAAA,QAAQ,EAAE;AACN,4BAAA;gCACI,IAAI,EAAE,UAAU,CAAC,OAAO;gCACxB,WAAW,EAAE,UAAU,CAAC,IAAI;AAC5B,gCAAA,IAAI,EAAE,cAAc;AACpB,gCAAA,OAAO,EAAE;AACZ;AACJ;qBACF;oBACD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAO,KAAI,EAAE,CAAC,CAAC;AAClG,gBAAA;AACD,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;gBACvB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAG,UAAU,EAAE;AACb,wBAAA,IAAG,CAAC,IAAI,CAAC,gBAAgB,EAAC;AACxB,4BAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC7B,wBAAA;wBACD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE;AACrF,oBAAA;oBACD,IAAI,CAAC,gBAAgB,EAAE;gBACzB,CAAC,EAAC,IAAI,CAAC;AACR,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,CAAC,IAAS,EAAE,UAAe,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAI;AAC9F,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,gBAAA,IAAG,CAAC,UAAU,IAAI,UAAU,EAAE,cAAc,IAAI,YAAY;oBAC1D,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;gBACzC,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,gBAAgB,EAAE;gBACzB,CAAC,EAAC,IAAI,CAAC;gBACP,IAAG,UAAU,IAAI,UAAU,EAAE,cAAc,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE;oBAClH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC;AACrD,gBAAA;AACD,gBAAA,IAAG,UAAU,IAAI,UAAU,EAAE,cAAc,IAAI,QAAQ,EAAE;oBACvD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK,EAAE,CAAC,CAAC;AACvF,gBAAA;AACD,gBAAA,IAAG,UAAU,IAAI,UAAU,EAAE,cAAc,IAAI,eAAe,EAAE;AAC9D,oBAAA,IAAI,MAAM,GAAG;wBACX,EAAE,EAAC,UAAU,CAAC,EAAE;AAChB,wBAAA,IAAI,EAAC;qBACN;oBACD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK,EAAE,CAAC,CAAC;AACtF,gBAAA;AACD,gBAAA,IAAG,UAAU,IAAI,UAAU,EAAE,cAAc,IAAI,YAAY,EAAE;AAC3D,oBAAA,IAAI,MAAM,GAAG;wBACX,QAAQ,EAAE,UAAU,EAAE,QAAQ;AAC9B,wBAAA,QAAQ,EAAE;AACN,4BAAA;gCACI,IAAI,EAAE,UAAU,CAAC,OAAO;gCACxB,WAAW,EAAE,UAAU,CAAC,IAAI;AAC5B,gCAAA,IAAI,EAAE,cAAc;AACpB,gCAAA,OAAO,EAAE;AACZ;AACJ;qBACF;oBACD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAO,KAAI;AAC3F,wBAAA,IAAG,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AACzB,4BAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,iCAAiC,CAAC;AAC9D,wBAAA;AACH,oBAAA,CAAC,CAAC;AACH,gBAAA;AACD,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,YAAA;AACH,QAAA,CAAC,EAAC,CAAC,KAAS,KAAI;AACd,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACpB,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,IAAQ,EAAA;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,uBAAuB,CAAC;IACpD;IACA,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oCAAoC,CAAC;IACjE;AAGA,IAAA,OAAO,CAAE,KAAiB,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAG,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;IACH;wGAhNW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5C5B,+lVA4JA,EAAA,MAAA,EAAA,CAAA,8tGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,UAAA,EDtHc;YACV,MAAM;YACN;AAED,SAAA,EAAA,CAAA;;4FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EAGV;wBACV,MAAM;wBACN;AAED,qBAAA,EAAA,QAAA,EAAA,+lVAAA,EAAA,MAAA,EAAA,CAAA,8tGAAA,CAAA,EAAA;kKAGQ,0BAA0B,EAAA,CAAA;sBAAlC;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAyMD,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ME9O/B,iBAAiB,CAAA;AACnB,IAAA,IAAI;AACJ,IAAA,KAAK;IACL,IAAI,GAAW,SAAS;IAEjC,WAAW,GAAW,CAAC;AAEvB,IAAA,WAAA,GAAA;IACA;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;;AAE3B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/D,QAAA;IACH;AAEA,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,UAAU;IACnB;wGApBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,4KCR9B,0VAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDIa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,0VAAA,EAAA;wDAKf,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAeG,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,eAAe;;;MEbjB,eAAe,CAAA;AAsBN,IAAA,MAAA;AAA+B,IAAA,MAAA;IArB3C,WAAW,GAAmB,EAAE;;AAExC,IAAA,iBAAiB;AAEjB,IAAA,gBAAgB;AAChB,IAAA,4BAA4B;AAC5B,IAAA,2BAA2B;AAE3B,IAAA,yBAAyB;IACzB,uBAAuB,GAAW,EAAE;IACpC,8BAA8B,GAAW,EAAE;AAE3C,IAAA,uBAAuB;;AAGvB,IAAA,uCAAuC;AACvC,IAAA,iBAAiB;IACjB,uBAAuB,GAAW,EAAE;AACpC,IAAA,0BAA0B;AAC1B,IAAA,mBAAmB;IAEnB,WAAA,CAAoB,MAAqB,EAAU,MAAc,EAAA;QAA7C,IAAA,CAAA,MAAM,GAAN,MAAM;QAAyB,IAAA,CAAA,MAAM,GAAN,MAAM;QACvD,IAAI,CAAC,cAAc,EAAE;IACvB;AAEA,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACzC,oBAAoB,EACpB,MAAM,CACI;;AAEZ,QAAA,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAChE,8CAA8C,EAC9C,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC1C,qBAAqB,EACrB,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAChD,4BAA4B,EAC5B,MAAM,CACG;AACX,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACnD,iCAAiC,EACjC,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC5C,uBAAuB,EACvB,MAAM,CACI;;AAGZ,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACrD,kCAAkC,EAClC,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACrC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE,MAAM,CAAC;AAC/D,QAAA;AAED,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACpD,iCAAiC,EACjC,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,2BAA2B,EAAE;YACpC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,iCAAiC,EAAE,MAAM,CAAC;AACtE,QAAA;AAED,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAClD,2BAA2B,EAC3B,MAAM,CACc;AACtB,QAAA,IAAI,CAAC,uBAAuB;YAC1B,IAAI,CAAC,yBAAyB,KAAK;AACjC,kBAAE;kBACA,iBAAiB;AAEvB,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACvD,mCAAmC,EACnC,MAAM,CACG;QACX,IAAI,IAAI,CAAC,8BAA8B,EAAE;YACvC,IAAI,CAAC,uBAAuB,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,8BAA8B,EAAE;AAC1E,QAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAChD,4BAA4B,EAC5B,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,4BAA4B,EAAE,MAAM,CAAC;AACjE,QAAA;;;IAIH;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,aAAA,YAAY;AACZ,aAAA,SAAS,CAAC,CAAC,MAAe,KAAI;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,aAAA,YAAY;AACZ,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM;AACjC,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;IACrC;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAChE,YAAA,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,YAAY,gBAAgB,EAAE;gBACvE,aAAa,CAAC,gBAAgB,EAAE;AACjC,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC3C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;wGA7HW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,kDCZ5B,6uIA0FA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD9Ea,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,YAAY,EAAA,QAAA,EAAA,6uIAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA;;;MEAX,8BAA8B,CAAA;AAOrB,IAAA,WAAA;AALX,IAAA,QAAQ;AACR,IAAA,KAAK;AACL,IAAA,MAAM;AACN,IAAA,IAAI;AAEb,IAAA,WAAA,CAAoB,WAA0B,EAAA;QAA1B,IAAA,CAAA,WAAW,GAAX,WAAW;IAE/B;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAC,KAAK,EAAC,CAAC;IAChE;wGAbW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,qJCR3C,0nEA2CM,EAAA,MAAA,EAAA,CAAA,oQAAA,CAAA,EAAA,CAAA;;4FDnCO,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,0nEAAA,EAAA,MAAA,EAAA,CAAA,oQAAA,CAAA,EAAA;qFAM9B,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;AENH;MAMa,gBAAgB,CAAA;AAOP,IAAA,MAAA;AAAwB,IAAA,YAAA;AAAgC,IAAA,WAAA;AAAiC,IAAA,YAAA;IANpG,wBAAwB,GAAW,EAAE;AACrC,IAAA,kBAAkB;IAClB,wBAAwB,GAAW,EAAE;IAEtC,WAAW,GAAmB,EAAE;AAExC,IAAA,WAAA,CAAoB,MAAc,EAAU,YAAsB,EAAU,WAAuB,EAAU,YAAyB,EAAA;QAAlH,IAAA,CAAA,MAAM,GAAN,MAAM;QAAkB,IAAA,CAAA,YAAY,GAAZ,YAAY;QAAoB,IAAA,CAAA,WAAW,GAAX,WAAW;QAAsB,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAiB;IAE1I,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAChE,YAAA,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,YAAY,gBAAgB,EAAE;;AAExE,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC3C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;AAEA,IAAA,gBAAgB,CAAC,QAAe,EAAE,KAAa,EAAE,MAAc,EAAE,IAAY,EAAA;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACtE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;AAC7C,SAAA,CAAC;AAEF,QAAA,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAG,QAAQ;AAC9C,QAAA,QAAQ,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAK;AACxC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM;AAC1C,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;QAEtC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAW,KAAI;YACnC,IAAG,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAC;AAC5D,gBAAA,IAAI,IAAI,GAAG;oBACT,MAAM,EAAE,MAAM,CAAC;iBAChB;AAED,gBAAA,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;AACtE,oBAAA,IAAI,EAAC,CAAC,CAAC,KAAG;wBACR,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC9C,CAAC;AACD,oBAAA,KAAK,EAAC,CAAC,CAAC,KAAG;AACT,wBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,eAAe,CAAC;oBAClD;AACD,iBAAA,CAAC;AACH,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,gBAAgB,GAAA;QACd,IAAI,QAAQ,GAAO,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;AACpD,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC/B,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE;gBACpE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC;AAC9D,oBAAA,IAAI,EAAC,CAAC,GAAG,KAAG;AACV,wBAAA,IAAG,GAAG,CAAC,IAAI,CAAC,eAAe,EAAC;AAC1B,4BAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACtC,wBAAA;oBAEH;AACD,iBAAA,CAAC;AACH,YAAA;AAEF,QAAA;IAEH;AAEA,IAAA,YAAY,CAAC,QAAe,EAAA;QAC1B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACpD,YAAA,IAAI,EAAC,CAAC,CAAC,KAAG;AACR,gBAAA,IAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAC;oBACzB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAW,KAAI;AACtC,wBAAA,IAAG,OAAO,CAAC,aAAa,KAAK,KAAK,EAAC;4BACjC,MAAM,GAAG,GAAG,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC;AACtC,4BAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC;AAC9E,wBAAA;AACH,oBAAA,CAAC,CAAC;AACH,gBAAA;YACH;AACD,SAAA,CAAC;IACJ;wGAvFW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,qNCb7B,mjBAYA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDCa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,mjBAAA,EAAA;mJAKd,wBAAwB,EAAA,CAAA;sBAAhC;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,wBAAwB,EAAA,CAAA;sBAAhC;;;METU,eAAe,CAAA;IACjB,0BAA0B,GAAW,EAAE;IAEhD,cAAc,GAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;AAC5D,IAAA,WAAA,GAAA,EAAe;wGAJJ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,wHCP5B,+6CA6BA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDtBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,YAAY,EAAA,QAAA,EAAA,+6CAAA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA;wDAKb,0BAA0B,EAAA,CAAA;sBAAlC;;;MEWU,oBAAoB,CAAA;AAGrB,IAAA,MAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,YAAA;IALF,WAAW,GAAmB,EAAE;AACxC,IAAA,WAAA,CACU,MAAqB,EACrB,QAAyB,EACzB,MAAc,EACd,YAAmB,EAAA;QAHnB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,YAAY,GAAZ,YAAY;QAEpB,MAAM,YAAY,GAAG,MAAK;YACxB,UAAU,CAAC,MAAK;;;AAId,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;oBACrD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,aAAa,CAAC;AACnD,gBAAA,CAAC,CAAC;YACJ,CAAC,EAAE,EAAE,CAAC;AACR,QAAA,CAAC;AAED,QAAA,YAAY,EAAE;;QAEd,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CAACY,QAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,UAAU,CAAC;aACnD,SAAS,CAAC,YAAY,CAAC;IAC5B;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1C,aAAA,YAAY;aACZ,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,uBAAuB,EAAE;AAChC,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC;IACjD;IAEA,qBAAqB,GAAA;QACnB,UAAU,CAAC,MAAK;YACd,eAAe,CAAC,SAAS,EAAE;YAC3B,kBAAkB,CAAC,SAAS,EAAE;YAC9B,eAAe,CAAC,SAAS,EAAE;YAC3B,eAAe,CAAC,SAAS,EAAE;YAC3B,aAAa,CAAC,SAAS,EAAE;YACzB,eAAe,CAAC,SAAS,EAAE;QAC7B,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,uBAAuB,GAAA;QACrB,UAAU,CAAC,MAAK;YACd,eAAe,CAAC,gBAAgB,EAAE;YAClC,kBAAkB,CAAC,gBAAgB,EAAE;YACrC,eAAe,CAAC,gBAAgB,EAAE;YAClC,eAAe,CAAC,SAAS,EAAE;YAC3B,aAAa,CAAC,gBAAgB,EAAE;YAChC,eAAe,CAAC,gBAAgB,EAAE;QACpC,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;wGA5DW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wDCnBjC,EAAA,EAAA,CAAA;;4FDmBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,EAAA,EAAA;;;MENjB,kBAAkB,CAAA;AAWT,IAAA,QAAA;AAAmC,IAAA,EAAA;AAA8B,IAAA,MAAA;IAV7E,WAAW,GAAmB,EAAE;IAE/B,qBAAqB,GAAW,EAAE;AAClC,IAAA,sBAAsB;AACtB,IAAA,uBAAuB;AAEhC,IAAA,MAAM;AACN,IAAA,YAAY;AACZ,IAAA,GAAG;AAEH,IAAA,WAAA,CAAoB,QAAyB,EAAU,EAAoB,EAAU,MAAa,EAAA;QAA9E,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAA2B,IAAA,CAAA,EAAE,GAAF,EAAE;QAA4B,IAAA,CAAA,MAAM,GAAN,MAAM;IAAU;IAErG,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE;QAC5D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE;QACnD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG;AACzB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACzB,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACzB,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG;AACtB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;AAEA,IAAA,gBAAgB,CAAC,IAAQ,EAAA;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAQ,CAAC;AACjE,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;IACjC;wGAnCW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,wNCV/B,s8CAgCA,EAAA,MAAA,EAAA,CAAA,8IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FDtBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,s8CAAA,EAAA,MAAA,EAAA,CAAA,8IAAA,CAAA,EAAA;yIAOjB,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,sBAAsB,EAAA,CAAA;sBAA9B;gBACQ,uBAAuB,EAAA,CAAA;sBAA/B;;;AEGH,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AACjB,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;MAMT,gBAAgB,CAAA;AAgBjB,IAAA,MAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,EAAA;IAlBV,KAAK,GAAG,KAAK;IACL,WAAW,GAAmB,EAAE;AAExC,IAAA,UAAU,GAAQ,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAE1D,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACrC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,IAAA,CAAC;IACC,UAAU,GAAQ,EAAE;IACpB,QAAQ,GAAY,KAAK;AACzB,IAAA,WAAW;IACX,aAAa,GAAQ,EAAE;IACvB,aAAa,GAAQ,EAAE;AACvB,IAAA,WAAA,CACU,MAAqB,EACrB,aAAiC,EACjC,OAAoB,EACpB,EAAqB,EAAA;QAHrB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,EAAE,GAAF,EAAE;IACT;IAEH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;;IAEA,YAAY,GAAY,KAAK;AAE7B,IAAA,UAAU,GAAG;AACX,QAAA;AACE,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,WAAW,EAAE,0CAA0C;AACxD,SAAA;AACD,QAAA,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,0CAA0C,EAAE;AAC3E,QAAA,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,0CAA0C,EAAE;KAC3E;AAED,IAAA,YAAY;IACZ,cAAc,GAAa,EAAE;IAC7B,mBAAmB,GAAU,EAAE;IAC/B,iBAAiB,GAAQ,EAAE;AAC3B,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;KACX;IACD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;gBAEjB,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM;gBACtC,IAAI,gBAAgB,IAAI,YAAY,EAAE;AACpC,oBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;AACD,oBAAA,IAAG,aAAa,CAAC,OAAO,CAAC,MAAM,GAAE,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,EAAC;wBAClE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa;AAChD,wBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;AACpC,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7D,wBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC9D,MAAM,aAAa,GAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAClD,CAAC,IAAS,KAAK,IAAI,CAAC,QAAQ,CAC7B;AACD,wBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa;wBAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,aAAa,CAAC,MAAM;wBACnD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,aAAa,CAAC,KAAK;wBACjD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAE9C,IAAI,CAAC,iBAAiB,GAAG;AACvB,4BAAA,SAAS,EAAC,IAAI,CAAC,KAAK,CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACtF,4BAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;yBACpF;AAED,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAE7D,oBAAA;AAAK,yBAAA;wBACJ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa;AAC9C,wBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;AACpC,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7D,wBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAChE,MAAM,aAAa,GAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAClD,CAAC,IAAS,KAAK,IAAI,CAAC,QAAQ,CAC7B;AACD,wBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa;wBAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,aAAa,CAAC,MAAM;wBACnD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,aAAa,CAAC,KAAK;wBACjD,IAAI,CAAC,iBAAiB,GAAG;4BACvB,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;4BAC5C,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;yBAC3C;AACD,wBAAA,IAAI,QAAQ,GAAG;4BACb,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;4BAC5C,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;yBAC3C;AACD,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7D,oBAAA;AACF,gBAAA;AAAM,qBAAA;oBAEL,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa;AAC9C,oBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;AACpC,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7D,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAChE,MAAM,aAAa,GAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAClD,CAAC,IAAS,KAAK,IAAI,CAAC,QAAQ,CAC7B;AACD,oBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa;oBAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,aAAa,CAAC,CAAC,CAAC;oBAC/C,IAAI,CAAC,iBAAiB,GAAG;wBACvB,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;wBAC5C,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;qBAC3C;AACD,oBAAA,IAAI,QAAQ,GAAG;wBACb,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;wBAC5C,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;qBAC3C;AACD,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,oBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;oBACD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAC5D,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;YACH,CAAC;AACF,SAAA,CAAC;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,aAAA,YAAY;aACZ,SAAS,CAAC,MAAK;AAChB,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;gBACjB,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM;AACtC,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7D,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClE;AACC,SAAA,CAAC;IACN;AAEA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;YACxC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,CAAM,KAAI;AAC5C,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACrB,YAAA,CAAC,CAAC;AACH,QAAA;IACH;AAEA,IAAA,YAAY,CAAC,CAAa,EAAA;QACxB,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;AAEA,IAAA,QAAQ,CAAC,KAAU,EAAE,KAAa,EAAE,KAAiB,EAAA;QACnD,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,CAAM,KAAI;YAC5C,IAAI,CAAC,KAAK,KAAK,EAAE;AACf,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACpB,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM;;;;;;IAOhE;;;;;;;IAQA,UAAU,CAAC,KAAU,EAAE,CAAM,EAAA;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAS,KAChE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CACnH;QACD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,cAAc;QAC1C,IAAI,cAAc,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACtB,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACrB,QAAA;IACH;IACA,cAAc,CAAC,KAAa,EAAE,KAAa,EAAA;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM;AACnD,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE;QACvE,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEvD,IAAI,KAAK,KAAK,YAAY,EAAE;YAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACrD,CAAC,IAAS,KAAK,IAAI,CAAC,QAAQ,CAC7B;AACD,YAAA,IAAI,cAAc,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE;;AAElD,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE;AACrC,YAAA;AAAM,iBAAA;;gBAEL,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;AACrD,YAAA;AACD,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAClC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,MAAM,CACrD,CAAC,IAAS,KAAK,IAAI,KAAK,KAAK,CAC9B,CAAC;AACH,YAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,YAAA;AACF,QAAA;;AAGD,QAAA,MAAM,WAAW,GAAG,CAAA,SAAA,EAAY,KAAK,EAAE;QACvC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAC9C,WAAW,CACQ;AACrB,QAAA,IAAI,gBAAgB,EAAE;YACpB,gBAAgB,CAAC,OAAO;;AAEzB,QAAA;;AAGD,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,IAAY,KAAI;AACrC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChE,YAAA,MAAM,UAAU,GAAG,CAAA,MAAA,EAAS,IAAI,EAAE;YAClC,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,CAC7C,UAAU,CACS;AACrB,YAAA,IAAI,eAAe,EAAE;AACnB,gBAAA,eAAe,CAAC,OAAO,GAAG,SAAS;AACpC,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;IAEA,KAAK,GAAA;QAEH,IAAI,aAAa,GAAQ,EAAE;AAC3B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxD,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAClD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAEzC,YAAA,IAAI,cAAc,EAAE;AAClB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,UAAe,KAAI;AACnE,oBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,CAAC,SAAc,KAAK,SAAS,CAAC,QAAQ,KAAK,UAAU,CACtD;AACD,oBAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;oBACzB,OAAO,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;AAC5B,gBAAA,CAAC,CAAC;AACH,YAAA;AACF,QAAA;AAGD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,KAAU,KAAI;AACzD,YAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC;AAC3C,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI;AACxC,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,KAAU,KAAI;YACnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AAC1C,kBAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK;kBAC9B,EAAE;AACR,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM;QAC3D,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAC5D,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA,IAAA,MAAM,GAAQ;QACZ,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjF,QAAA,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;AACxD,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACjD,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC/C,SAAA;QACD,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1E,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAClD,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACjD,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;gBACrC,MAAM,WAAW,GACf,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACrE,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,YAAA,CAAC;AACF,QAAA;IACH;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QAEnB,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7C,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EACnC;gBACA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;gBAClD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC9C,gBAAA,IAAI,QAAQ,GAAG;AACb,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACxE,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACrE;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACrC,YAAA;AACD,YAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;AACF,QAAA;AAAO,aAAA;AACN,YAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAC/B,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;YACD,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YAC9G,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YAC1G,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;AAC1D,QAAA;;;;;;;;;;;;;;;;IAkBH;wGA1WW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,iHCzB7B,w3JAoE0D,EAAA,MAAA,EAAA,CAAA,y0KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD3C7C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,w3JAAA,EAAA,MAAA,EAAA,CAAA,y0KAAA,CAAA,EAAA;0KA8JvB,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MEzK/B,qBAAqB,CAAA;AAyBZ,IAAA,EAAA;AAA+B,IAAA,WAAA;AAtBnD,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;IACH;AAES,IAAA,KAAK;AACL,IAAA,WAAW;AACX,IAAA,KAAK;AACL,IAAA,OAAO;IACP,cAAc,GAAQ,EAAE;AACxB,IAAA,QAAQ;AACR,IAAA,KAAK;AAEJ,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;IAC5C,cAAc,GAAQ,EAAE;AACxB,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,UAAU;IAGV,WAAA,CAAoB,EAAqB,EAAU,WAAuB,EAAA;QAAtD,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,WAAW,GAAX,WAAW;IAAgB;IAC9E,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE;QACrC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG;AAC9C,YAAA,IAAG,CAAC,KAAK,IAAI,CAAC,UAAU,EAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAEhC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;YAC1C,IAAI,CAAC,eAAe,EAAE;AACvB,QAAA;AACD,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE;YAC5L,IAAI,CAAC,oBAAoB,EAAE;AAC5B,QAAA;IACH;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,oBAAoB,GAAA;QAClB,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,YAAiB,KAAI;AACjD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,YAAiB,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5H,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACvB,YAAA;AACH,QAAA,CAAC,CAAC;IAEJ;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;QACrB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACtD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA;AAAM,aAAA;YACL,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;AACnD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,KAChD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC1D;AACF,QAAA;QACD,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;IAEA,QAAQ,CAAC,KAAU,EAAE,IAAS,EAAA;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAE;AAChC,YAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3G,YAAA;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAW,KAAI;AAC1C,gBAAA,IAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC;AAC9C,oBAAA,OAAO,CAAC,UAAU,GAAG,KAAK;AAC3B,gBAAA;AACH,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAU,KAAI;AAC1D,YAAA,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,EAAE;YACjC,OAAO,YAAY,CAAC,UAAU;AAC9B,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;IAEvC;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAEvE,QAAA,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC/C,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACzB,QAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAU,KAAI;YAC1D,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK;AAC7C,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;IACvC;AAGA,IAAA,kBAAkB,CAAC,MAAa,EAAA;QAC9B,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA;IACH;IAEA,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,UAAU,CAAC;IAClE;wGA1IW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,4UCTlC,6gFAyCM,EAAA,MAAA,EAAA,CAAA,y9EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDhCO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6gFAAA,EAAA,MAAA,EAAA,CAAA,y9EAAA,CAAA,EAAA;6GAK/C,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAQjC,KAAK,EAAA,CAAA;sBAAb;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAES,QAAQ,EAAA,CAAA;sBAAjB;;;MElBU,uBAAuB,CAAA;AAed,IAAA,IAAA;AAA0B,IAAA,EAAA;AAA+B,IAAA,EAAA;IAb7E,UAAU,GAAO,EAAE;AACnB,IAAA,cAAc;AACd,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,QAAQ,EAAE,EAAE;KAEb;AACD,IAAA,WAAA,CAAoB,IAAgB,EAAU,EAAqB,EAAU,EAAoB,EAAA;QAA7E,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,EAAE,GAAF,EAAE;AAC7E,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAI,CAAC,EAAE;oBACL,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC/B,oBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;oBACD,IAAI,aAAa,CAAC,MAAM,EAAE;wBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAChC,4BAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;AACzC,gCAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AAC1B,4BAAA;AACH,wBAAA,CAAC,CAAC;wBACF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;wBAC1D,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,aAAa,CAAC,KAAK;wBACjD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACpD,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;wBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;wBAChE,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,aAAa,CAAC,KAAK;wBACjD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AAC9C,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,oBAAA;AACF,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;oBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;AAChE,oBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;oBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;YACD,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,KAAS,EAAA;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa;QACpC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;QAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;AAChE,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAE,EAAE;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAE,EAAE;AACjC,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;AAE5E,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;wGA/EW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAU,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,2DCTpC,sSAIA,EAAA,MAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDKa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,sSAAA,EAAA,MAAA,EAAA,CAAA,6BAAA,CAAA,EAAA;;;MESpB,mBAAmB,CAAA;AAoBpB,IAAA,MAAA;AACA,IAAA,EAAA;AACA,IAAA,OAAA;AACA,IAAA,EAAA;IAtBV,KAAK,GAAG,KAAK;IACL,WAAW,GAAmB,EAAE;AACxC,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACrC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,IAAA,CAAC;IACC,iBAAiB,GAAQ,EAAE;AAC3B,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAC,IAAI;AACf,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;KACX;AACD,IAAA,KAAK;AAGL,IAAA,WAAA,CACU,MAAqB,EACrB,EAAsB,EACtB,OAAoB,EACpB,EAAqB,EAAA;QAHrB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,EAAE,GAAF,EAAE;IACT;IAEH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;IAEA,QAAQ,GAAA;QACN,IAAI,WAAW,IAAI,YAAY,EAAE;AAC/B,YAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAC9B,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAC1C;AACD,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACtB,QAAA;QACD,IAAI,gBAAgB,IAAI,YAAY,EAAE;AACpC,YAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;YACD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;AACjD,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACpD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;YAC1D,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;YAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;YAE9C,IAAI,CAAC,iBAAiB,GAAG;AACvB,gBAAA,SAAS,EAAC,IAAI,CAAC,KAAK,CAAE,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACvF,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAE,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;aACrF;AAED,YAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;YACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAClD,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;AACjD,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACpD,IAAI,CAAC,iBAAiB,GAAG;AACvB,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAChE,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;aAC/D;;AAGD,YAAA,IAAI,QAAQ,GAAG;AACb,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAChE,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;aAC/D;;;;;AAKD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,YAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;YACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAClD,QAAA;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IAC/C;AACA,IAAA,WAAW,CAAC,MAAU,EAAA;AACpB,QAAA,IAAI,GAAG,GAAE;YACL,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAE;SAC9B;AACD,QAAA,IAAG,MAAM,EAAC;YACR,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACzC,gBAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,oBAAA,YAAY,CAAC,OAAO,CAClB,iBAAiB,EACjB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,IAAI,EAAE,CAAC,CAC7C;gBACH;AACD,aAAA,CAAC;AACH,QAAA;IACH;AACA,IAAA,MAAM,GAAQ;QACZ,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACnC,QAAA,SAAS,EAAE;YACT,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;AACjC,SAAA;QACD,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjF,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACjD,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC/C,SAAA;AACF,QAAA,YAAY,EAAE;YACb,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;YACjC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;AACjC,SAAA;AACC,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAClD,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACjD,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;gBACrC,MAAM,WAAW,GACf,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACrE,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,YAAA,CAAC;AACF,QAAA;IACH;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7C,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EACnC;gBACA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;gBAClD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC9C,gBAAA,IAAI,QAAQ,GAAG;AACb,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACxE,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACrE;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACrC,YAAA;AACF,QAAA;AAAM,aAAA;AACL,YAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AAC/C,QAAA;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;AACjD,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI;QACrD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,QAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;IACH;wGA9JW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,sDCdhC,6/CAaM,EAAA,MAAA,EAAA,CAAA,86HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDCO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,6/CAAA,EAAA,MAAA,EAAA,CAAA,86HAAA,CAAA,EAAA;;;MEAf,yBAAyB,CAAA;AAuB1B,IAAA,IAAA;AACA,IAAA,EAAA;AACA,IAAA,EAAA;IAxBV,KAAK,GAAG,KAAK;AACb,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACrC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,IAAA,CAAC;IACC,iBAAiB,GAAQ,EAAE;IAC3B,UAAU,GAAQ,EAAE;AACpB,IAAA,cAAc;AACd,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,QAAQ,EAAC;KACV;AACD,IAAA,UAAU;IACV,YAAY,GAAM,EAAE;AAEpB,IAAA,WAAA,CACU,IAAiB,EACjB,EAAsB,EACtB,EAAqB,EAAA;QAFrB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,EAAE,GAAF,EAAE;AAGV,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAI,CAAC,EAAE;oBACL,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC/B,oBAAA,MAAM,SAAS,GAAG;AAChB,wBAAA,GAAG,EAAE,KAAK;AACV,wBAAA,UAAU,EAAE,aAAa;AACzB,wBAAA,QAAQ,EAAE;qBACX;oBACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACnC,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3D,oBAAA,IAAI,CAAC,YAAY,GAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CACvC,CAAC,IAAS,KAAK,IAAI,CAAC,QAAQ,CAC7B;AACH,oBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;oBACD,IAAI,CAAC,iBAAiB,GAAG;AACvB,wBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACvF,wBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY;qBACpF;oBACD,IAAI,aAAa,CAAC,MAAM,EAAE;wBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAChC,4BAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;AACzC,gCAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AAC1B,4BAAA;AACH,wBAAA,CAAC,CAAC;wBACA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;AAC1D,wBAAA,IAAG,aAAa,CAAC,MAAM,KAAI,EAAE,EAAC;4BAC5B,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY;AACjD,wBAAA;AAAM,6BAAA;4BACL,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC;AACtD,wBAAA;wBACD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,aAAa,CAAC,KAAK;wBACjD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAE9C,IAAI,CAAC,iBAAiB,GAAG;AACvB,4BAAA,SAAS,EAAC,IAAI,CAAC,KAAK,CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACtF,4BAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;yBACpF;AAED,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AAC1B,oBAAA;AAAM,yBAAA,IAAG,aAAa,CAAC,MAAM,KAAI,EAAE,EAAC;wBACnC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY;wBAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;wBAC1D,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,iBAAiB,GAAG;AACvB,4BAAA,SAAS,EAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACrF,4BAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;yBACnF;AAED,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,oBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7D,wBAAA,IAAI,CAAC,YAAY,GAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CACvC,CAAC,IAAS,KAAK,IAAI,CAAC,QAAQ,CAC7B;wBACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACtC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY;wBAClD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;wBAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;wBAChE,IAAI,CAAC,iBAAiB,GAAG;AACvB,4BAAA,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAChE,4BAAA,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;yBAC/D;;AAGD,wBAAA,IAAI,QAAQ,GAAG;AACb,4BAAA,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAChE,4BAAA,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;yBAC/D;AACD,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,oBAAA;AACF,gBAAA;YACH,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,QAAQ,KAAU;AAClB,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC7B;AAGA,IAAA,MAAM,GAAQ;AACZ,QAAA,KAAK,EAAE;YACL,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,EAAE;AACb,SAAA;AACD,QAAA,SAAS,EAAE;YACT,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;AACjC,SAAA;QACD,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjF,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACjD,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC/C,SAAA;AACF,QAAA,YAAY,EAAE;YACb,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;YACjC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;AACjC,SAAA;AACC,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAClD,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACjD,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAC1B,IAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAC;AACvC,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;gBACvC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACvF,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,YAAA,CAAC;AACF,QAAA;IACC;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QAGnB,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7C,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EACnC;gBACA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;gBAClD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC9C,gBAAA,IAAI,QAAQ,GAAG;AACb,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACxE,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACrE;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,gBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;AACF,YAAA;AACF,QAAA;AAAK,aAAA;AACJ,YAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAC/B,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;YACD,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YAC/G,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YAC3G,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC;AACjD,QAAA;IAEH;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa;QACpC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ;QAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;AAChE,QAAA,IAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,KAAI,EAAE,EAAC;YACpC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY;AACjD,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC9D,QAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAE,EAAE;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAE,EAAE;AACjC,QAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;;;AAGD,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;QACxB,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC;wGAzNW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,8DCVtC,q3DAsBA,EAAA,MAAA,EAAA,CAAA,++HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDZa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,q3DAAA,EAAA,MAAA,EAAA,CAAA,++HAAA,CAAA,EAAA;;;MEMvB,oBAAoB,CAAA;AAqBX,IAAA,IAAA;AAA0B,IAAA,EAAA;AAA+B,IAAA,EAAA;AAA6B,IAAA,MAAA;AApBjG,IAAA,SAAS;IAClB,KAAK,GAAG,KAAK;AACb,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACrC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,IAAA,CAAC;IACC,iBAAiB,GAAQ,EAAE;IAC3B,SAAS,GAAO,EAAE;AAClB,IAAA,cAAc;AACd,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAC,IAAI;AACf,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;KAEX;AACD,IAAA,GAAG;AACH,IAAA,OAAO;AACP,IAAA,WAAA,CAAoB,IAAgB,EAAU,EAAqB,EAAU,EAAoB,EAAS,MAAa,EAAA;QAAnG,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,EAAE,GAAF,EAAE;QAA2B,IAAA,CAAA,MAAM,GAAN,MAAM;AAC9G,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;QAClC,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CACnC,6BAA6B,EAC7B,CAAA,eAAA,CAAiB,CAClB;QACD,MAAM,GAAG,GAAG,UAAU;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,GAAG,GAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IACxC;IACA,QAAQ,GAAA;AACN,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;QACD,IAAG,aAAa,EAAE,MAAM,EAAC;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;AACnD,gBAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,oBAAA,IAAI,CAAC,EAAE;wBAEL,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC9B,wBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;wBACD,IAAI,CAAC,iBAAiB,GAAG;AACvB,4BAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACvF,4BAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY;yBACpF;wBACD,IAAI,aAAa,EAAE,KAAK,EAAE;4BACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAC/B,gCAAA,IAAI,GAAG,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,EAAE;AACvC,oCAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AAC1B,gCAAA;AACH,4BAAA,CAAC,CAAC;4BACA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,aAAa,CAAC,KAAK;4BACjD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,aAAa,CAAC,MAAM;4BACnD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAI,aAAa,CAAC,UAAU;4BAC3D,IAAI,CAAC,eAAe,CAAC,OAAO,GAAI,aAAa,CAAC,OAAO;4BACrD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;4BAC9C,IAAI,CAAC,eAAe,CAAC,SAAS,GAAI,aAAa,CAAC,SAAS;4BACzD,IAAI,CAAC,iBAAiB,GAAG;AACvB,gCAAA,SAAS,EAAC,IAAI,CAAC,KAAK,CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACtF,gCAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;6BACpF;AAED,4BAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;4BACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,4BAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AAC1B,wBAAA;AAAM,6BAAA;4BACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACvC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,IAAI,CAAC,cAAc,CAAC,OAAO;4BACzD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,aAAa,CAAC,MAAM;4BACnD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAI,aAAa,CAAC,UAAU;4BAC3D,IAAI,CAAC,eAAe,CAAC,OAAO,GAAI,aAAa,CAAC,OAAO;4BACrD,IAAI,CAAC,eAAe,CAAC,SAAS,GAAI,aAAa,CAAC,SAAS;4BACzD,IAAI,CAAC,iBAAiB,GAAG;gCACvB,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;gCAC5C,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;6BAC3C;AACD,4BAAA,IAAI,QAAQ,GAAG;gCACb,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;gCAC5C,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;6BAC3C;AACD,4BAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,4BAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;4BACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,4BAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,wBAAA;AACF,oBAAA;gBACH,CAAC;AACF,aAAA,CAAC;AACH,QAAA;IACD;AACA,IAAA,cAAc,CAAC,KAAS,EAAA;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC7B;AAEA,IAAA,MAAM,GAAQ;AACZ,QAAA,KAAK,EAAE;YACL,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,EAAE;AACb,SAAA;QACD,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACjF,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjF,QAAA,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjH,QAAA,YAAY,EAAE;YACb,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;YACjC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;AACjC,SAAA;AACC,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAClD,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO;AAChD;KACF;AAED,IAAA,iBAAiB,CAAC,KAAS,EAAA;QACzB,IAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAC;AACvC,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;gBACvC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACvF,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,YAAA,CAAC;AACF,QAAA;IACD;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7C,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EACnC;gBACA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;gBAClD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC9C,gBAAA,IAAI,QAAQ,GAAG;AACb,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACxE,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACrE;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,gBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7E,YAAA;AACF,QAAA;AAAK,aAAA;AACJ,YAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAC/B,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;YACD,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YAC7G,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YACzG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;AAC/C,QAAA;IACH;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa;QACpC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO;QACxD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9E;IAEA,WAAW,GAAO,EAAE;AAEpB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1E,QAAA,IAAG,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,QAAA;IACH;wGA5Ka,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,iHCZjC,uiHAuCA,EAAA,MAAA,EAAA,CAAA,8gIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD3Ba,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,uiHAAA,EAAA,MAAA,EAAA,CAAA,8gIAAA,CAAA,EAAA;mKAKnB,SAAS,EAAA,CAAA;sBAAjB;;;MEGU,sBAAsB,CAAA;AA0CvB,IAAA,IAAA;AAA8B,IAAA,MAAA;AAC/B,IAAA,EAAA;AACC,IAAA,EAAA;IA3CV,KAAK,GAAG,KAAK;AACb,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACpC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,IAAA,CAAC;AAED,IAAA,iBAAiB,GAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAChE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAE;AACxC,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,OAAO,EAAE,EAAE;KACZ;IACD,YAAY,GAAY,KAAK;AAC7B,IAAA,YAAY,GAAkB,IAAI,CAAC;IACnC,kBAAkB,GAAW,EAAE;IAC/B,eAAe,GAAW,EAAE;IAC5B,SAAS,GAAU,EAAE;IACrB,iBAAiB,GAAU,EAAE;IAC7B,UAAU,GAAU,EAAE;IACtB,cAAc,GAAU,EAAE;IAC1B,cAAc,GAAU,EAAE;IAC1B,MAAM,GAAS,EAAE;IACjB,eAAe,GAAU,EAAE;IAC3B,UAAU,GAAO,EAAE;AACnB,IAAA,cAAc;IACd,aAAa,GAAQ,EAAE;IACvB,UAAU,GAAQ,EAAE;AACpB,IAAA,KAAK;AACL,IAAA,GAAG;IACH,iBAAiB,GAAU,EAAE;IAC7B,YAAY,GAAQ,EAAE;IACtB,iBAAiB,GAAW,EAAE;IAC9B,SAAS,GAAU,EAAE;AACrB,IAAA,WAAA,CACU,IAAiB,EAAa,MAAc,EAC7C,EAAsB,EACrB,EAAqB,EAAA;QAFrB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAA0B,IAAA,CAAA,MAAM,GAAN,MAAM;QACrC,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,EAAE,GAAF,EAAE;IACT;AAGH,IAAA,OAAO,CAAE,KAAiB,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;IACH;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;IACA,QAAQ,GAAA;;;;;;;;QASN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACnD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAW,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACjB,IAAI,CAAC,EAAE,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAI;AAC7C,YAAA,IAAI,CAAC,EAAE;AACL,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;oBAC/B,IAAI,CAAC,SAAS,EAAE;AACf,gBAAA;AAAK,qBAAA;oBACJ,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,oBAAA,IAAI,aAAa,EAAE;wBACnB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC/C,wBAAA,IAAI,CAAC,cAAc,GAAG,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAS,MAAM;AAC9D,4BAAA,GAAG,KAAK;4BACR,OAAO,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC,CAAC;AACJ,oBAAA;AACA,gBAAA;AACF,YAAA;AACH,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,YAAA,IAAI,aAAa,EAAE;gBACjB,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;gBACvD,IAAI,CAAC,cAAc,GAAG;oBACtB,gBAAgB,EAAG,mBAAmB,CAAC;iBACtC;AACA,YAAA;AACF,QAAA;;QAGD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,QAAA,IAAI,aAAa,EAAE;YACjB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;;YAG/C,IAAI,CAAC,eAAe,GAAG;gBACrB,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;AACjD,gBAAA,UAAU,EAAE,aAAa,CAAC,UAAU,IAAI,EAAE;AAC1C,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;AACpC,gBAAA,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI;AAClC,gBAAA,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,EAAE;AAC9B,gBAAA,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE;AAClC,gBAAA,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE;AAChC,gBAAA,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,EAAE;AACtC,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI;aACnC;;YAGD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC;YACzE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC1E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,KAAK,CAAC;YACpE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CAAC;;YAGrE,IAAI,aAAa,CAAC,IAAI,EAAE;gBAEtB,IAAI,CAAC,iBAAiB,GAAG;AACvB,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACtF,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACnF;AACF,YAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,iBAAiB,GAAG;AACvB,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1F,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACvF;AACF,YAAA;;;YAGP,IAAI,CAAC,mBAAmB,EAAE;AACrB,QAAA;AAAM,aAAA;;YAEL,IAAI,CAAC,YAAY,EAAE;;AAEpB,QAAA;IACH;AACQ,IAAA,oBAAoB,CAAC,KAAY,EAAA;AACvC,QAAA,OAAO;cACH,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;AACxB,gBAAA,GAAG,IAAI;AACP,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK;AAC3B,aAAA,CAAC;cACF,EAAE;IACR;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;IAE9E;AAEA;;AAEG;IACK,YAAY,GAAA;QAClB,IAAI,CAAC,eAAe,GAAG;AACrB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,OAAO,EAAE;SACV;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;IAC7B;IACF,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAI,CAAC,EAAE;oBACL,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC/B,oBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;oBACD,IAAI,aAAa,CAAC,MAAM,EAAE;wBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAChC,4BAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;AACzC,gCAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AAC1B,4BAAA;AACH,wBAAA,CAAC,CAAC;;;;;;;;;;;;;;;wBAeF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;wBAC1D,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;wBACtD,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;;wBAG1D,IAAI,CAAC,UAAU,EAAE;wBACjB,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE;;wBAEf,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;wBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;wBAClE,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;wBACtD,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;AAClD,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAEjD,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;wBAE9B,IAAI,CAAC,UAAU,EAAE;wBACjB,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE;;wBAEf,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA;AAGF,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;oBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;oBAErE,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,YAAY,EAAE;oBACnB,IAAI,CAAC,SAAS,EAAE;;oBAEhB,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;oBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAEjD,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;gBACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAE3C,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,WAAW,CAAC,MAAU,EAAA;AACpB,QAAA,IAAI,GAAG,GAAE;YACL,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAE;SAC9B;AACD,QAAA,IAAG,MAAM,EAAC;YACR,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACtC,gBAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,oBAAA,YAAY,CAAC,OAAO,CAClB,iBAAiB,EACjB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,IAAI,EAAE,CAAC,CAC7C;gBACH;AACD,aAAA,CAAC;AACH,QAAA;IACH;AACA,IAAA,cAAc,CAAC,KAAU,EAAA;;AAEvB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAE3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,EAAE;;AAIjC,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;;QAGrF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;QAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;QAGhE,OAAO,aAAa,CAAC,MAAM;QAC3B,OAAO,aAAa,CAAC,MAAM;QAC3B,OAAO,aAAa,CAAC,QAAQ;QAC7B,OAAO,aAAa,CAAC,OAAO;;QAI5B,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,SAAS,EAAE;;AAGhB,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;AAIxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAIA,IAAA,MAAM,GAAO;AACX,QAAA,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;QACzB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACrE,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACvE,QAAA,WAAW,EAAE;AACX,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3C,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,SAAA;QACD,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzE,QAAA,YAAY,EAAE;AACZ,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5C,SAAA;KACF;AAEC,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;AACtC,YAAA,IAAG,IAAI,CAAC,cAAc,EAAE,aAAa,KAAK,EAAE,EAAC;AACzC,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;oBACrC,MAAM,WAAW,GACf,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBACrE,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,gBAAA,CAAC;AACF,YAAA;AAAM,iBAAA;AACN,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;oBAC3C,MAAM,WAAW,GACf,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBACtE,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,gBAAA,CAAC;AACG,YAAA;AAEL,QAAA;IACH;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7C,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EACnC;gBACA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;gBAClD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC9C,gBAAA,IAAI,QAAQ,GAAG;AACb,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CACzD,YAAY,CACb;AACD,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACtE;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,gBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;AACD,gBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;AAEzB,YAAA;AACF,QAAA;IACH;AACA,IAAA,YAAY,CAAC,CAAY,EAAA;QACvB,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;IACA,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC;aACpB,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;aACjC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;;AAEhC,QAAA,IAAI,GAAG,GAAE;YACR,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YACxF,OAAO;AACP,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;SACT;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACnC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAY,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAO,KAAK,GAAG,CAAC,IAAI,CAAC;;AAEpH,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;oBAC3D,IAAI,EAAE,IAAI,CAAC,IAAI;;AAEf,oBAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK;AACtD,iBAAA,CAAC,CAAC;;AAGH,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;oBACjF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAG;wBACrD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;AACpG,wBAAA,OAAO,eAAe,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,GAAG,QAAQ;AACvF,oBAAA,CAAC,CAAC;AACH,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS;AACxC,gBAAA;gBAED,IAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1B,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAY,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9I,gBAAA;AACD,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;AAChH,gBAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChC,UAAU,CAAC,MAAI;wBACb,IAAI,CAAC,SAAS,EAAE;AAChB,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAC,IAAI,CAAC;AACR,gBAAA;gBAED,IAAG,CAAC,iBAAiB,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC9C,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC;YACjD,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC;IAEnE;IAEA,sBAAsB,GAAA;AACpB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC;aAClF,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAI,IAAI,CAAC;aAC5E,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AACtE,QAAA,OAAO,iBAAiB,CAAC,MAAM,KAAK;AAClC,cAAE;AACF,cAAE,iBAAiB,CAAC,MAAM,KAAK;AAC/B,kBAAE,iBAAiB,CAAC,CAAC;AACrB,kBAAE,CAAA,EAAG,iBAAiB,CAAC,MAAM,UAAU;IAC3C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC;aAClB,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;aACjC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,IAAI;QACR,IAAI,GAAG,IAAI,CAAC;aACT,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO;aACnC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;QAE/B,IAAG,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;AACjC,YAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AAC7C,QAAA;AACH,QAAA,MAAM,GAAG,GAAG,EAAE,OAAO,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,EAAC,EAAE,EAAE;QAC7H,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACjC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,SAAS,CAAC;AACxH,gBAAA,MAAM,cAAc,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,SAAc,MAAM;oBACpE,SAAS,EAAE,SAAS,CAAC,SAAS;AAC9B,oBAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK;;AAEpE,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,UAAU,GAAG,cAAc;AAChC,gBAAA,IAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;oBAC9B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACvH,gBAAA;AACI,qBAAA;AACH,oBAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACrC,gBAAA;;AAGD,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;AACvG,gBAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,UAAU,CAAC,MAAI;AACb,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAC,IAAI,CAAC;AACR,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;YAC9C,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,IAAgD,EAAA;AAC7D,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;;AAE9B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACzB,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YAExB,IAAI,IAAI,KAAK,SAAS,EAAE;;gBAEtB,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE;oBACtG,IAAI,CAAC,UAAU,EAAE;AAClB,gBAAA;AACF,YAAA;YAED,IAAI,IAAI,KAAK,OAAO,EAAE;;AAEpB,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC;qBACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;qBACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;;gBAGrC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE;oBACpG,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC1B,gBAAA;AACF,YAAA;YAED,IAAI,IAAI,KAAK,OAAO,EAAE;;gBAEpB,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE;oBAC9F,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA;AACF,YAAA;AACA,QAAA;IACH;IAGA,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YACjC,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IAC9B;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IACA,mBAAmB,GAAA;QACjB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AAC9K,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,WAAW;IACzC;IACA,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,EAAE;IAEd;IAGA,mBAAmB,GAAA;QAEjB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK;IACjG;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC;aACpB,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;aACjC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC;aACf,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO;aACnC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC;aAChB,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO;aAC7B,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC;AAEhC,QAAA,MAAM,IAAI,GAAG;YACX,OAAO;YACP,IAAI;AACJ,YAAA,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;SACvD;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACxC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;;oBAE3B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU;;AAEjC,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC5C,0BAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,OAAO;0BACjG,EAAE;;AAEN,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AAC1B,wBAAA,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC;8BAC5B,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;AACzC,8BAAE,IAAI,CAAC;AACX,oBAAA,CAAC,CAAC;;AAGF,oBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;AAC/B,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAC5C,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAC3E;AACF,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACvC,oBAAA;;AAGD,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;wBAC9D,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,OAAO,EAAE,KAAK,CAAC;AAChB,qBAAA,CAAC,CAAC;;;AAIH,oBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;AAG5E,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;AAAM,qBAAA;;oBAEL,IAAI,CAAC,gBAAgB,EAAE;AACxB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;gBAC5C,IAAI,CAAC,gBAAgB,EAAE;YACzB;AACD,SAAA,CAAC;IACJ;;IAGQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9E;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAEA,mBAAmB,GAAA;AACjB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AACxJ,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,SAAS;IACvC;IAEA,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IAC5F;;IAEF,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAG;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;AACvF,YAAA,IAAI,aAAa,IAAI,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AACpD,YAAA;AACH,QAAA,CAAC,CAAC;;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;;AAGxE,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;;AAM5E,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AACE,IAAA,wBAAwB,CAAC,KAAU,EAAA;AACjC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,MAAM,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,uBAAuB,EAAE;IAChC;AAEA,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;;AAG1D,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;YAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;AAC1F,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,YAAA;AACH,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,uBAAuB,GAAA;;AAErB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;aACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAY,KAAI;YAC9C,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAO,KAAK,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;AACxF,YAAA,IAAG,iBAAiB,IAAI,CAAC,CAAC,EAAE;gBAC1B,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC7D,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAE,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;;YAEjB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;AAE/C,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;AACnC,QAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;IAE3B;AAEA,IAAA,qBAAqB,CAAC,KAAU,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,oBAAoB,GAAA;;AAElB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;aAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAS,KAAI;YACxC,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC;AAC/F,YAAA,IAAG,cAAc,IAAI,CAAC,CAAC,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACxD,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;;YAE/B,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;AAC7C,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;;AAGxB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;AAI7E,QAAA;;AAGD,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAGA,KAAK,GAAA;QACH,UAAU,CAAC,MAAI;;AAEjB,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAE,EAAE;AAAC,YAAA,IAAI,CAAC,UAAU,GAAE,EAAE;AAAE,YAAA,IAAI,CAAC,MAAM,GAAE,EAAE;AAAE,YAAA,IAAI,CAAC,SAAS,GAAE,EAAE;;AAEzE,YAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAE,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAE,EAAE;;YAI9B,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,SAAS,EAAE;;;;;;;;;;;;;;AAkBd,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/E,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;AAIrB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;;AAKvB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B,CAAC,EAAC,GAAG,CAAC;IACN;IAKA,eAAe,GAAA;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;AAExD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,iBAAA,GAAG,CAAC,QAAQ,KAAK;AAChB,gBAAA,GAAG,QAAQ;gBACX,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AACjF,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,QAAQ,IACd,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACnD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,KAAK;AACvD,gBAAA,GAAG,QAAQ;gBACX,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAK,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AAC9F,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAGA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,iBAAA,GAAG,CAAC,KAAK,KAAK;AACb,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI;AACrF,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,KAAK,IACX,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACrD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK;AAClD,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAK,KAAK,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI;AAClG,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAGA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,iBAAA,GAAG,CAAC,KAAK,KAAK;AACb,gBAAA,GAAG,KAAK;;AAER,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI;AACjH,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACvE,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9C,gBAAA,GAAG,KAAK;;AAER,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI;AACjH,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;AAGA,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC5B,MAAM,aAAa,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CACzD,qBAAqB,CACtB;QACD,MAAM,cAAc,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAC1D,YAAY,CACb;QACD,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE;AACrB,QAAA;QACD,IAAG,CAAC,cAAc,EAAE;YAClB,IAAI,CAAC,cAAc,EAAE;AACtB,QAAA;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgFE,UAAU,GAAA;AACV,QAAA,IAAI,GAAG,GAAG;YACR,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;SAC1F;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;;AAEjB,gBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,OAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,OAAO,CAAC;;AAGzH,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;oBAC1D,OAAO,EAAE,IAAI,CAAC,OAAO;;;AAGrB,oBAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,KAAK;AAE5D,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;oBAC/E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAG;wBACrD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC;AACzG,wBAAA,OAAO,eAAe,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,GAAG,QAAQ;AACvF,oBAAA,CAAC,CAAC;AACH,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS;AACxC,gBAAA;;gBAID,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;;gBAI5C,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAC1B,IAAI,CAAC,eAAe,EAAE;AACvB,gBAAA;;AAGD,gBAAA,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AAC3E,gBAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChC,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,YAAY,EAAE;AACnB,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAE,IAAI,CAAC;AACT,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC;YACjD,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,sBAAsB,GAAA;AACpB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;cAC7C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;cACxF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;AAErF,QAAA,OAAO,iBAAiB,CAAC,MAAM,KAAK;AAClC,cAAE;AACF,cAAE,iBAAiB,CAAC,MAAM,KAAK;AAC/B,kBAAE,iBAAiB,CAAC,CAAC;AACrB,kBAAE,CAAA,EAAG,iBAAiB,CAAC,MAAM,YAAY;IAC7C;IAEA,eAAe,GAAA;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;AAEvD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,iBAAA,GAAG,CAAC,OAAO,KAAK;AACf,gBAAA,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI;AACtF,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACzE,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAgB,MAAM;AACjE,gBAAA,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI;AACpG,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAEA,sBAAsB,GAAA;QACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IACtG;AACA,IAAA,wBAAwB,CAAC,KAAU,EAAA;AACjC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QAC1E,IAAI,CAAC,uBAAuB,EAAE;IAEhC;IAEA,uBAAuB,GAAA;;AAErB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC;aAC5B,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;aACnC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAW,KAAI;YAC7C,IAAI,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAO,KAAK,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;AAC5F,YAAA,IAAG,gBAAgB,IAAI,CAAC,CAAC,EAAE;gBACzB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;AAC3D,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC7D,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAE,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAE,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;;YAEjB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB;AAEtD,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,EAAE;AAClC,QAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;IAE3B;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,KAAK,GAAA;;AAEH,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;AAGzB,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;AACrF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,IAAI;;QAGlC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB;QACrD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;QAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;;AAEvF,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;AAE5E,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;;AAKxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;wGA/oCW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,6HChBnC,okYAkQM,EAAA,MAAA,EAAA,CAAA,+oMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FDlPO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,okYAAA,EAAA,MAAA,EAAA,CAAA,+oMAAA,CAAA,EAAA;mKAoD9B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAy2B1C,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MEt5B/B,mBAAmB,CAAA;AAqCpB,IAAA,IAAA;AAA0B,IAAA,MAAA;AAC3B,IAAA,EAAA;AACC,IAAA,EAAA;IAtCV,KAAK,GAAG,KAAK;AACb,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACpC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,IAAA,CAAC;AAED,IAAA,iBAAiB,GAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAChE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAE;AACxC,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,QAAQ,EAAE,EAAE;KACb;IACD,YAAY,GAAY,KAAK;AAC7B,IAAA,YAAY,GAAkB,IAAI,CAAC;IACnC,kBAAkB,GAAW,EAAE;IAC/B,eAAe,GAAW,EAAE;IAC5B,SAAS,GAAU,EAAE;IACrB,iBAAiB,GAAU,EAAE;IAC7B,UAAU,GAAU,EAAE;IACtB,cAAc,GAAU,EAAE;IAC1B,cAAc,GAAU,EAAE;IAC1B,MAAM,GAAS,EAAE;IACjB,eAAe,GAAU,EAAE;IAC3B,UAAU,GAAO,EAAE;AACnB,IAAA,cAAc;IACd,aAAa,GAAQ,EAAE;IACvB,UAAU,GAAQ,EAAE;AACpB,IAAA,KAAK;AACL,IAAA,GAAG;AACH,IAAA,WAAA,CACU,IAAiB,EAAS,MAAc,EACzC,EAAsB,EACrB,EAAqB,EAAA;QAFrB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,MAAM,GAAN,MAAM;QACjC,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,EAAE,GAAF,EAAE;IACT;AAGH,IAAA,OAAO,CAAE,KAAiB,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;IACH;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;IACA,QAAQ,GAAA;;;;;;;;QASN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACnD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAW,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACjB,IAAI,CAAC,EAAE,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAI;AAC7C,YAAA,IAAI,CAAC,EAAE;AACL,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;oBAC/B,IAAI,CAAC,SAAS,EAAE;AACf,gBAAA;AAAK,qBAAA;oBACJ,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,oBAAA,IAAI,aAAa,EAAE;wBACnB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC/C,wBAAA,IAAI,CAAC,cAAc,GAAG,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAS,MAAM;AAC9D,4BAAA,GAAG,KAAK;4BACR,OAAO,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC,CAAC;AACJ,oBAAA;AACA,gBAAA;AACF,YAAA;AACH,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,YAAA,IAAI,aAAa,EAAE;gBACjB,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;gBACvD,IAAI,CAAC,cAAc,GAAG;oBACtB,aAAa,EAAG,mBAAmB,CAAC;iBACnC;AACA,YAAA;YACD,IAAI,CAAC,aAAa,EAAE;;;AAIrB,QAAA;;QAGD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,QAAA,IAAI,aAAa,EAAE;YACjB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;;YAG/C,IAAI,CAAC,eAAe,GAAG;gBACrB,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;AACjD,gBAAA,UAAU,EAAE,aAAa,CAAC,UAAU,IAAI,EAAE;AAC1C,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;AACpC,gBAAA,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI;AAClC,gBAAA,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,EAAE;AAC9B,gBAAA,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE;AAClC,gBAAA,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE;AAChC,gBAAA,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI;aACrC;;YAGD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC1E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,KAAK,CAAC;YACpE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CAAC;;YAGrE,IAAI,aAAa,CAAC,IAAI,EAAE;AACtB,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1D,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;gBACtD,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;gBACxD,IAAI,gBAAgB,IAAI,CAAC,EAAE;oBAC3B,IAAI,CAAC,iBAAiB,GAAG;wBACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACxG,wBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;qBACnF;AACF,gBAAA;AAAK,qBAAA;oBACJ,IAAI,CAAC,iBAAiB,GAAG;AACvB,wBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACtF,wBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;qBACnF;AACF,gBAAA;AACA,YAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,iBAAiB,GAAG;AACvB,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1F,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACvF;AACF,YAAA;;;YAIP,IAAI,CAAC,mBAAmB,EAAE;AACrB,QAAA;AAAM,aAAA;;YAEL,IAAI,CAAC,YAAY,EAAE;;AAEpB,QAAA;IACH;AACQ,IAAA,oBAAoB,CAAC,KAAY,EAAA;AACvC,QAAA,OAAO;cACH,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;AACxB,gBAAA,GAAG,IAAI;AACP,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK;AAC3B,aAAA,CAAC;cACF,EAAE;IACR;IACQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;IAE9E;AAEA;;AAEG;IACK,YAAY,GAAA;QAClB,IAAI,CAAC,eAAe,GAAG;AACrB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,QAAQ,EAAE;SACX;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IAC1B;IACF,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAI,CAAC,EAAE;oBACL,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC/B,oBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;oBACD,IAAI,aAAa,CAAC,MAAM,EAAE;wBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAChC,4BAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;AACzC,gCAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AAC1B,4BAAA;AACH,wBAAA,CAAC,CAAC;wBACF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;wBAC1D,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;wBACtD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;;wBAG1D,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE;;wBAEf,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;wBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;wBAClE,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;AACpD,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAEjD,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;wBAE9B,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE;;wBAEf,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA;AAGF,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;oBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;oBAErE,IAAI,CAAC,YAAY,EAAE;oBACnB,IAAI,CAAC,SAAS,EAAE;;oBAEhB,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;oBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAEjD,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;gBACD,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;YAC9C,CAAC;AAEF,SAAA,CAAC;IAEJ;AACA,IAAA,cAAc,CAAC,KAAU,EAAA;;AAEvB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAE3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;;AAGlC,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;;QAGrF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;QAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;QAGhE,OAAO,aAAa,CAAC,MAAM;QAC3B,OAAO,aAAa,CAAC,MAAM;QAC3B,OAAO,aAAa,CAAC,QAAQ;;QAG7B,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,SAAS,EAAE;;AAEhB,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;AAIxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;IAGA,aAAa,GAAA;AAEX,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,aAAa,KAAK,CAAC,EAAE;YAC5C,IAAI,CAAC,MAAM,GAAG;AACZ,gBAAA,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;gBACzB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACrE,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACvE,gBAAA,WAAW,EAAE;AACX,oBAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3C,oBAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,iBAAA;aACF;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,MAAM,GAAG;AACb,gBAAA,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;gBACvB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACrE,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACvE,gBAAA,WAAW,EAAE;AACX,oBAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3C,oBAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,iBAAA;gBACD,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzE,gBAAA,YAAY,EAAE;AACZ,oBAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,oBAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5C,iBAAA;aACH;AACF,QAAA;IAEH;IAEA,MAAM,GAAO,EAAE;;;;;;;;;;;;;;IAef,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;;AAErC,YAAA,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,cAAc,GAAG,KAAK;AAChE,QAAA,CAAC;IACH;AACE,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;AAEzC,YAAA,IAAG,IAAI,CAAC,cAAc,EAAE,aAAa,KAAK,CAAC,EAAC;AAC1C,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;oBACrC,MAAM,WAAW,GACf,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBACpE,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,gBAAA,CAAC;AACF,YAAA;AAAM,iBAAA;AACP,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;oBACrC,MAAM,WAAW,GACf,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBACrE,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,gBAAA,CAAC;AACF,YAAA;AACA,QAAA;IACH;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7C,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EACnC;gBACA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;gBAClD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC9C,gBAAA,IAAI,QAAQ,GAAG;AACb,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CACzD,YAAY,CACb;AACD,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACtE;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,gBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;gBACD,IAAI,CAAC,eAAe,EAAE;;gBAExB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAChD,YAAA;AACF,QAAA;IAEH;AACA,IAAA,WAAW,CAAC,MAAU,EAAA;AACpB,QAAA,IAAI,GAAG,GAAE;YACL,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAE;SAC9B;AACD,QAAA,IAAG,MAAM,EAAC;YACR,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACtC,gBAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,oBAAA,YAAY,CAAC,OAAO,CAClB,iBAAiB,EACjB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,IAAI,EAAE,CAAC,CAC7C;gBACH;AACD,aAAA,CAAC;AACH,QAAA;IACH;AACA,IAAA,YAAY,CAAC,CAAY,EAAA;QACvB,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;IACA,YAAY,GAAA;;AAEV,QAAA,IAAI,GAAG,GAAE;YACR,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;AACxF,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;SACT;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACnC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAY,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAO,KAAK,GAAG,CAAC,IAAI,CAAC;;AAEpH,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;oBAC3D,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,oBAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK;AACtD,iBAAA,CAAC,CAAC;;AAGH,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;oBACjF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAG;wBACrD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;AACpG,wBAAA,OAAO,eAAe,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,GAAG,QAAQ;AACvF,oBAAA,CAAC,CAAC;AACH,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS;AACxC,gBAAA;gBAED,IAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1B,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAY,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9I,gBAAA;AACD,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;AAChH,gBAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChC,UAAU,CAAC,MAAI;AACb,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAC,IAAI,CAAC;AACR,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC;YACjD,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC;IAEnE;IAEA,sBAAsB,GAAA;AACpB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC;aAClF,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAI,IAAI,CAAC;aAC5E,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AACtE,QAAA,OAAO,iBAAiB,CAAC,MAAM,KAAK;AAClC,cAAE;AACF,cAAE,iBAAiB,CAAC,MAAM,KAAK;AAC/B,kBAAE,iBAAiB,CAAC,CAAC;AACrB,kBAAE,CAAA,EAAG,iBAAiB,CAAC,MAAM,YAAY;IAC7C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC;aACf,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO;aACnC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AACjC,QAAA,MAAM,GAAG,GAAG,EAAE,IAAI,EAAC,QAAQ,EAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,EAAC,EAAE,EAAE;QACrH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACjC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,SAAS,CAAC;AACxH,gBAAA,MAAM,cAAc,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,SAAc,MAAM;oBACpE,SAAS,EAAE,SAAS,CAAC,SAAS;AAC9B,oBAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK;AACpE,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,UAAU,GAAG,cAAc;AAChC,gBAAA,IAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;oBAC9B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACvH,gBAAA;AACI,qBAAA;AACH,oBAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACrC,gBAAA;;AAGD,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;AACvG,gBAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,UAAU,CAAC,MAAI;AACb,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAC,IAAI,CAAC;AACR,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;YAC9C,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,IAAoC,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;;AAE9B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACzB,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YAExB,IAAI,IAAI,KAAK,OAAO,EAAE;;AAEpB,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC;qBACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;qBACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;;gBAGrC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE;oBACpG,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC1B,gBAAA;AACF,YAAA;YAED,IAAI,IAAI,KAAK,OAAO,EAAE;;gBAEpB,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE;oBAC9F,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA;AACF,YAAA;AACA,QAAA;IACH;IAGA,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YACjC,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IAC9B;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IACA,mBAAmB,GAAA;QACjB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AAC9K,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,WAAW;IACzC;IACA,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,EAAE;IAEd;IAGA,mBAAmB,GAAA;QAEjB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK;IACjG;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC;aACf,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO;aACnC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AAEjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC;aAChB,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO;aAC7B,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC;AAEhC,QAAA,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;QAExH,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAG,GAAG,IAAG,GAAG,CAAC,IAAI,KAAI,GAAG,EAAC;oBACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU;;AAEjC,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC5C,0BAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO;0BACnG,EAAE;AAEN,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;wBAC1B,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3C,4BAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,wBAAA;AACH,oBAAA,CAAC,CAAC;;AAIF,oBAAA,IAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;wBAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACjH,oBAAA;AACI,yBAAA;AACH,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM;AAClC,oBAAA;;AAED,oBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE;AACvE,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AAC1B,4BAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,wBAAA,CAAC,CAAC;;AAGL,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AACjF,4BAAA,GAAG,KAAK;AACR,4BAAA,OAAO,EAAE;AACV,yBAAA,CAAC,CAAC;AACJ,oBAAA;AAAM,yBAAA;;AAEL,wBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9D,4BAAA,GAAG,KAAK;4BACR,OAAO,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC,CAAC;AACJ,oBAAA;;AAED,oBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;;AAK5E,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,MAAM,GAAE,EAAE;AACf,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAC,EAAE;AAC9B,oBAAA,IAAI,CAAC,cAAc,GAAE,EAAE;AACvB,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9D,wBAAA,GAAG,KAAK;AACR,wBAAA,OAAO,EAAE;AACV,qBAAA,CAAC,CAAC;AACH,oBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7E,gBAAA;YACD,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,IAAI,CAAC,MAAM,GAAE,EAAE;AACf,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,cAAc,GAAE,EAAE;AACvB,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9D,oBAAA,GAAG,KAAK;AACR,oBAAA,OAAO,EAAE;AACV,iBAAA,CAAC,CAAC;AACH,gBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;YAC9C,CAAC;AACF,SAAA,CAAC;IACJ;IAGA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAEA,mBAAmB,GAAA;AACjB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AACxJ,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,SAAS;IACvC;IAEA,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IAC5F;;IAEF,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAG;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;AACvF,YAAA,IAAI,aAAa,IAAI,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AACpD,YAAA;AACH,QAAA,CAAC,CAAC;;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;;AAGxE,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;;AAM5E,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AACE,IAAA,wBAAwB,CAAC,KAAU,EAAA;AACjC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,MAAM,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,uBAAuB,EAAE;IAChC;AAEA,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;;AAG1D,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;YAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;AAC1F,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,YAAA;AACH,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,uBAAuB,GAAA;;AAErB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;aACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAY,KAAI;YAC9C,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAO,KAAK,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;AACxF,YAAA,IAAG,iBAAiB,IAAI,CAAC,CAAC,EAAE;gBAC1B,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC7D,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAE,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;;YAEjB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;AAE/C,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;AACnC,QAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;IAE3B;AAEA,IAAA,qBAAqB,CAAC,KAAU,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,oBAAoB,EAAE;;;;;;IAM7B;IAEA,oBAAoB,GAAA;;AAElB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;aAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAS,KAAI;YACxC,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC;AAC/F,YAAA,IAAG,cAAc,IAAI,CAAC,CAAC,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACxD,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;;YAE/B,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;AAC7C,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;;AAGxB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;AAI7E,QAAA;;AAGD,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAGA,KAAK,GAAA;QACH,UAAU,CAAC,MAAI;;AAEjB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAE,EAAE;AAAC,YAAA,IAAI,CAAC,UAAU,GAAE,EAAE;AAAE,YAAA,IAAI,CAAC,MAAM,GAAE,EAAE;;AAErD,YAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAE,EAAE;;YAI/B,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,SAAS,EAAE;;;;;;;;;;;;;;AAkBd,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/E,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;AAIrB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;;AAKvB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B,CAAC,EAAC,GAAG,CAAC;IACN;IAIA,KAAK,GAAA;;AAEH,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;AAGzB,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;AACrF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,IAAI;;QAElC,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;QAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;;AAIvF,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;;AAKxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;IAEA,eAAe,GAAA;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;AAExD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,iBAAA,GAAG,CAAC,QAAQ,KAAK;AAChB,gBAAA,GAAG,QAAQ;gBACX,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AACjF,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,QAAQ,IACd,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACnD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,KAAK;AACvD,gBAAA,GAAG,QAAQ;gBACX,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAK,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AAC9F,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAGA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,iBAAA,GAAG,CAAC,KAAK,KAAK;AACb,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI;AACrF,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,KAAK,IACX,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACrD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK;AAClD,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAK,KAAK,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI;AAClG,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAGA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,iBAAA,GAAG,CAAC,KAAK,KAAK;AACb,gBAAA,GAAG,KAAK;;AAER,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI;AACjH,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACvE,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9C,gBAAA,GAAG,KAAK;;AAER,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI;AACjH,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAIA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;AAGA,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC5B,MAAM,aAAa,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CACzD,qBAAqB,CACtB;QACD,MAAM,cAAc,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAC1D,YAAY,CACb;QACD,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE;AACrB,QAAA;QACD,IAAG,CAAC,cAAc,EAAE;YAClB,IAAI,CAAC,cAAc,EAAE;AACtB,QAAA;IAEH;wGAj8BW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,0HCjBhC,+vTA2MM,EAAA,MAAA,EAAA,CAAA,wrMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FD1LO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,+vTAAA,EAAA,MAAA,EAAA,CAAA,wrMAAA,CAAA,EAAA;mKA+C3B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAy4B1C,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MEv7B/B,wBAAwB,CAAA;AAsBf,IAAA,IAAA;AAA0B,IAAA,EAAA;AAA+B,IAAA,EAAA;AAA6B,IAAA,MAAA;AAAsB,IAAA,cAAA;IArBhI,KAAK,GAAG,KAAK;AACb,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACrC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,IAAA,CAAC;IACC,iBAAiB,GAAQ,EAAE;IAC3B,SAAS,GAAO,EAAE;AAClB,IAAA,cAAc;AACd,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAC,IAAI;AACf,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;KACX;AACD,IAAA,GAAG;AACH,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,aAAa;AACb,IAAA,QAAQ;IACR,WAAA,CAAoB,IAAgB,EAAU,EAAqB,EAAU,EAAoB,EAAS,MAAa,EAAS,cAA6B,EAAA;QAAzI,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,EAAE,GAAF,EAAE;QAA2B,IAAA,CAAA,MAAM,GAAN,MAAM;QAAgB,IAAA,CAAA,cAAc,GAAd,cAAc;IAC9I;IACF,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;AAClD,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;;YAGtB,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC,CAAC;QAEF,IAAI,WAAW,IAAI,YAAY,EAAE;AAC/B,YAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAC3E,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACtB,QAAA;IACH;IAEA,iBAAiB,GAAA;AACf,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM;AAC7C,QAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB;AAC5D,cAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,CAAC;cAC3D,IAAI;AACR,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ;AAE3C,QAAA,MAAM,aAAa,GAAQ,YAAY,CAAC,OAAO,CAAC,gBAAgB;AAC9D,cAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI;cACzD,EAAE;AAEN,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;;AAGlC,QAAA,MAAM,WAAW,GAAG,eAAe,IAAI,gBAAgB,IAAI,cAAc;AAEzE,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,WAAW;AACzC,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,WAAW,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE;QAC/D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,IAAI,EAAE;AAChE,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,aAAa,CAAC,KAAK,IAAI,EAAE;QAChF,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,IAAI,EAAE;QAC5D,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;QACxC,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;QACtD,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;QAC9D,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,IAAI,EAAE;QACxD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,IAAI,EAAE;;AAE5D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;AACvB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;AAE/B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG;AAC1B,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,OAAO,EAAE,IAAI;aACd;YAED,IAAI,CAAC,iBAAiB,GAAG;AACvB,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAC9D,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;aAC7D;AAEF,QAAA;aAAM,IAAI,aAAa,EAAE,IAAI,EAAE,SAAS,IAAI,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;YACzE,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;YAC9C,IAAI,CAAC,iBAAiB,GAAG;AACvB,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACpF,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;aACnF;AAEF,QAAA;AAAM,aAAA;;AAEL,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;AAClD,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;AACzC,gBAAA,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;aACxC;AAED,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa;YACzC,IAAI,CAAC,iBAAiB,GAAG;AACvB,gBAAA,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;AACzC,gBAAA,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;aACxC;AACF,QAAA;;AAGD,QAAA,IAAI,WAAW,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AACrF,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7E,QAAA;QAED,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;IACnD;AAGE,IAAA,cAAc,CAAC,KAAS,EAAA;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC7B;AAGA,IAAA,iBAAiB,CAAC,KAAS,EAAA;QACzB,IAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAC;AACvC,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;gBACvC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACvF,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,YAAA,CAAC;AACF,QAAA;IACD;AACA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7C,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EACnC;gBACA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO;gBAChD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC9C,gBAAA,IAAI,QAAQ,GAAG;AACb,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACtE,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACrE;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACrC,YAAA;AACF,QAAA;AAAM,aAAA;AACL,YAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AAC/C,QAAA;AAEH,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM;AAC7F,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,QAAQ;QACtC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QACpF,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI;AACrD,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,EAAE;QAEnE,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAC/C,QAAA,YAAY,CAAC,OAAO,CACpB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;AACH,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IAEvB;IACA,KAAK,GAAA;AACH,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa;QACpC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO;QACxD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9E;wGArKa,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,4DCZrC,wiDAgBwE,EAAA,MAAA,EAAA,CAAA,++HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDJ3D,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,wiDAAA,EAAA,MAAA,EAAA,CAAA,++HAAA,CAAA,EAAA;;;MESrB,wBAAwB,CAAA;AAqCzB,IAAA,IAAA;AAA0B,IAAA,MAAA;AAC3B,IAAA,EAAA;AACC,IAAA,EAAA;IAtCX,KAAK,GAAG,KAAK;AACZ,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACpC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,IAAA,CAAC;AAED,IAAA,iBAAiB,GAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAChE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAE;AACxC,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,QAAQ,EAAE,EAAE;KACb;IACD,YAAY,GAAY,KAAK;AAC7B,IAAA,YAAY,GAAkB,IAAI,CAAC;IACnC,kBAAkB,GAAW,EAAE;IAC/B,eAAe,GAAW,EAAE;IAC5B,SAAS,GAAU,EAAE;IACrB,iBAAiB,GAAU,EAAE;IAC7B,UAAU,GAAU,EAAE;IACtB,cAAc,GAAU,EAAE;IAC1B,cAAc,GAAU,EAAE;IAC1B,MAAM,GAAS,EAAE;IACjB,eAAe,GAAU,EAAE;IAC3B,UAAU,GAAO,EAAE;AACnB,IAAA,cAAc;IACd,aAAa,GAAQ,EAAE;IACvB,UAAU,GAAQ,EAAE;AACpB,IAAA,KAAK;AACL,IAAA,GAAG;AACH,IAAA,WAAA,CACU,IAAiB,EAAS,MAAc,EACzC,EAAsB,EACrB,EAAqB,EAAA;QAFrB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,MAAM,GAAN,MAAM;QACjC,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,EAAE,GAAF,EAAE;IACT;AAGH,IAAA,OAAO,CAAE,KAAiB,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;IACH;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;IACA,QAAQ,GAAA;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACnD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAW,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACjB,IAAI,CAAC,EAAE,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAI;AAC7C,YAAA,IAAI,CAAC,EAAE;AACL,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;oBAC/B,IAAI,CAAC,SAAS,EAAE;AACf,gBAAA;AAAK,qBAAA;oBACJ,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,oBAAA,IAAI,aAAa,EAAE;wBACnB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC/C,wBAAA,IAAI,CAAC,cAAc,GAAG,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAS,MAAM;AAC9D,4BAAA,GAAG,KAAK;4BACR,OAAO,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC,CAAC;AACJ,oBAAA;AACA,gBAAA;AACF,YAAA;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,QAAQ,EAAE;AAChB,QAAA;QAED,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,QAAA,IAAI,aAAa,EAAE;YACjB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;;YAG/C,IAAI,CAAC,eAAe,GAAG;gBACrB,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;AACjD,gBAAA,UAAU,EAAE,aAAa,CAAC,UAAU,IAAI,EAAE;AAC1C,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;AACpC,gBAAA,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI;AAClC,gBAAA,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,EAAE;AAC9B,gBAAA,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE;AAClC,gBAAA,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE;AAChC,gBAAA,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI;aACrC;;YAGD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC1E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,KAAK,CAAC;YACpE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CAAC;;;YAG3E,IAAI,CAAC,mBAAmB,EAAE;AACrB,QAAA;AAAM,aAAA;;YAEL,IAAI,CAAC,YAAY,EAAE;AACpB,QAAA;IACH;AACQ,IAAA,oBAAoB,CAAC,KAAY,EAAA;AACvC,QAAA,OAAO;cACH,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;AACxB,gBAAA,GAAG,IAAI;AACP,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK;AAC3B,aAAA,CAAC;cACF,EAAE;IACR;IACQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9E;IAEQ,YAAY,GAAA;QAClB,IAAI,CAAC,eAAe,GAAG;AACrB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,QAAQ,EAAE;SACX;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IAC1B;IACF,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAI,CAAC,EAAE;oBACL,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC/B,oBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;oBACD,IAAI,aAAa,CAAC,MAAM,EAAE;wBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAChC,4BAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;AACzC,gCAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AAC1B,4BAAA;AACH,wBAAA,CAAC,CAAC;wBAEF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;wBAC1D,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;wBACtD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;wBAE1D,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE;;wBAEf,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;wBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;wBAClE,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;AACpD,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;wBAE9B,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE;;wBAEf,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA;AAGF,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;oBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;oBAErE,IAAI,CAAC,YAAY,EAAE;oBACnB,IAAI,CAAC,SAAS,EAAE;;oBAEhB,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;oBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAEjD,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;YACD,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,cAAc,CAAC,KAAU,EAAA;;AAEvB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAE3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;;AAGlC,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;;QAGrF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;QAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;QAGhE,OAAO,aAAa,CAAC,MAAM;QAC3B,OAAO,aAAa,CAAC,MAAM;QAC3B,OAAO,aAAa,CAAC,QAAQ;;QAG7B,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,SAAS,EAAE;;AAGhB,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAQE,IAAA,YAAY,CAAC,CAAY,EAAA;QACvB,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;IACA,YAAY,GAAA;;AAEV,QAAA,IAAI,GAAG,GAAE;YACR,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;AACxF,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;SACT;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACnC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAY,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAO,KAAK,GAAG,CAAC,IAAI,CAAC;;AAEpH,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;oBAC3D,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,oBAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK;AACtD,iBAAA,CAAC,CAAC;;AAGH,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;oBACjF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAG;wBACrD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;AACpG,wBAAA,OAAO,eAAe,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,GAAG,QAAQ;AACvF,oBAAA,CAAC,CAAC;AACH,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS;AACxC,gBAAA;gBAED,IAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1B,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAY,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9I,gBAAA;AACD,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;AAChH,gBAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChC,UAAU,CAAC,MAAI;AACb,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAC,IAAI,CAAC;AACR,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC;YACjD,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC;IAEnE;IAEA,sBAAsB,GAAA;AACpB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC;aAClF,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAI,IAAI,CAAC;aAC5E,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AACtE,QAAA,OAAO,iBAAiB,CAAC,MAAM,KAAK;AAClC,cAAE;AACF,cAAE,iBAAiB,CAAC,MAAM,KAAK;AAC/B,kBAAE,iBAAiB,CAAC,CAAC;AACrB,kBAAE,CAAA,EAAG,iBAAiB,CAAC,MAAM,YAAY;IAC7C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC;aACf,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO;aACnC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AACjC,QAAA,MAAM,GAAG,GAAG,EAAE,IAAI,EAAC,QAAQ,EAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,EAAC,EAAE,EAAE;QACrH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACjC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,SAAS,CAAC;AACxH,gBAAA,MAAM,cAAc,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,SAAc,MAAM;oBACpE,SAAS,EAAE,SAAS,CAAC,SAAS;AAC9B,oBAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK;AACpE,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,UAAU,GAAG,cAAc;AAChC,gBAAA,IAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;oBAC9B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACvH,gBAAA;AACI,qBAAA;AACH,oBAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACrC,gBAAA;;AAGD,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;AACvG,gBAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,UAAU,CAAC,MAAI;AACb,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAC,IAAI,CAAC;AACR,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;YAC9C,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,IAAoC,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;;AAE9B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACzB,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YAExB,IAAI,IAAI,KAAK,OAAO,EAAE;;AAEpB,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC;qBACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;qBACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;;gBAGrC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE;oBACpG,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC1B,gBAAA;AACF,YAAA;YAED,IAAI,IAAI,KAAK,OAAO,EAAE;;gBAEpB,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE;oBAC9F,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA;AACF,YAAA;AACA,QAAA;IACH;IAGA,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YACjC,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IAC9B;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IACA,mBAAmB,GAAA;QACjB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AAC9K,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,WAAW;IACzC;IACA,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,EAAE;IAEd;IAGA,mBAAmB,GAAA;QAEjB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK;IACjG;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC;aACf,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO;aACnC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AAEjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC;aAChB,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO;aAC7B,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC;AAEhC,QAAA,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;QAExH,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAG,GAAG,IAAG,GAAG,CAAC,IAAI,KAAI,GAAG,EAAC;oBACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU;;AAEjC,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC5C,0BAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO;0BACnG,EAAE;AAEN,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;wBAC1B,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3C,4BAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,wBAAA;AACH,oBAAA,CAAC,CAAC;;AAIF,oBAAA,IAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;wBAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACjH,oBAAA;AACI,yBAAA;AACH,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM;AAClC,oBAAA;;AAED,oBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE;AACvE,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AAC1B,4BAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,wBAAA,CAAC,CAAC;;AAGL,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AACjF,4BAAA,GAAG,KAAK;AACR,4BAAA,OAAO,EAAE;AACV,yBAAA,CAAC,CAAC;AACJ,oBAAA;AAAM,yBAAA;;AAEL,wBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9D,4BAAA,GAAG,KAAK;4BACR,OAAO,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC,CAAC;AACJ,oBAAA;;AAED,oBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;;AAK5E,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,MAAM,GAAE,EAAE;AACf,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAC,EAAE;AAC9B,oBAAA,IAAI,CAAC,cAAc,GAAE,EAAE;AACvB,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9D,wBAAA,GAAG,KAAK;AACR,wBAAA,OAAO,EAAE;AACV,qBAAA,CAAC,CAAC;AACH,oBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7E,gBAAA;YACD,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,IAAI,CAAC,MAAM,GAAE,EAAE;AACf,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,cAAc,GAAE,EAAE;AACvB,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9D,oBAAA,GAAG,KAAK;AACR,oBAAA,OAAO,EAAE;AACV,iBAAA,CAAC,CAAC;AACH,gBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;YAC9C,CAAC;AACF,SAAA,CAAC;IACJ;IAGA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAEA,mBAAmB,GAAA;AACjB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AACxJ,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,SAAS;IACvC;IAEA,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IAC5F;;IAEF,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAG;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;AACvF,YAAA,IAAI,aAAa,IAAI,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AACpD,YAAA;AACH,QAAA,CAAC,CAAC;;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;;AAGxE,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;;AAM5E,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AACE,IAAA,wBAAwB,CAAC,KAAU,EAAA;AACjC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,MAAM,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,uBAAuB,EAAE;IAChC;AAEA,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;;AAG1D,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;YAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;AAC1F,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,YAAA;AACH,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,uBAAuB,GAAA;;AAErB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;aACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAY,KAAI;YAC9C,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAO,KAAK,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;AACxF,YAAA,IAAG,iBAAiB,IAAI,CAAC,CAAC,EAAE;gBAC1B,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC7D,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAE,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;;YAEjB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;AAE/C,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;AACnC,QAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;IAE3B;AAEA,IAAA,qBAAqB,CAAC,KAAU,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,oBAAoB,EAAE;;;;;;IAM7B;IAEA,oBAAoB,GAAA;;AAElB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;aAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAS,KAAI;YACxC,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC;AAC/F,YAAA,IAAG,cAAc,IAAI,CAAC,CAAC,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACxD,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;;YAE/B,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;AAC7C,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;;AAGxB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;AAI7E,QAAA;;AAGD,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAEA,KAAK,GAAA;QACH,UAAU,CAAC,MAAI;;AAEjB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAE,EAAE;AAAC,YAAA,IAAI,CAAC,UAAU,GAAE,EAAE;AAAE,YAAA,IAAI,CAAC,MAAM,GAAE,EAAE;;AAErD,YAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAE,EAAE;;YAI/B,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,SAAS,EAAE;;;;;;;;;;;;;;AAkBd,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/E,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;AAIrB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;;AAKvB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B,CAAC,EAAC,GAAG,CAAC;IACN;IAIA,KAAK,GAAA;;AAEH,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;AAGzB,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;AACrF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,IAAI;;QAElC,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;QAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;;AAIvF,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;;AAKxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;IAEA,eAAe,GAAA;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;AAExD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,iBAAA,GAAG,CAAC,QAAQ,KAAK;AAChB,gBAAA,GAAG,QAAQ;gBACX,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AACjF,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,QAAQ,IACd,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACnD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,KAAK;AACvD,gBAAA,GAAG,QAAQ;gBACX,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAK,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AAC9F,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAGA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,iBAAA,GAAG,CAAC,KAAK,KAAK;AACb,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI;AACrF,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,KAAK,IACX,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACrD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK;AAClD,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAK,KAAK,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI;AAClG,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAGA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,iBAAA,GAAG,CAAC,KAAK,KAAK;AACb,gBAAA,GAAG,KAAK;;AAER,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI;AACjH,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACvE,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9C,gBAAA,GAAG,KAAK;;AAER,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI;AACjH,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAIA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;AAGA,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC5B,MAAM,aAAa,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CACzD,qBAAqB,CACtB;QACD,MAAM,cAAc,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAC1D,YAAY,CACb;QACD,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE;AACrB,QAAA;QACD,IAAG,CAAC,cAAc,EAAE;YAClB,IAAI,CAAC,cAAc,EAAE;AACtB,QAAA;IAEH;wGA5xBW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,+HCjBrC,2tQA6LM,EAAA,MAAA,EAAA,CAAA,wrMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FD5KO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,2tQAAA,EAAA,MAAA,EAAA,CAAA,wrMAAA,CAAA,EAAA;mKA+ChC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAouB1C,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ME7wB/B,mBAAmB,CAAA;AAqCpB,IAAA,IAAA;AAA8B,IAAA,MAAA;AAC/B,IAAA,EAAA;AACC,IAAA,EAAA;IAtCX,KAAK,GAAG,KAAK;AACZ,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACpC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,IAAA,CAAC;AAED,IAAA,iBAAiB,GAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAChE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAE;AACxC,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,QAAQ,EAAE,EAAE;KACb;IACD,YAAY,GAAY,KAAK;AAC7B,IAAA,YAAY,GAAkB,IAAI,CAAC;IACnC,kBAAkB,GAAW,EAAE;IAC/B,eAAe,GAAW,EAAE;IAC5B,SAAS,GAAU,EAAE;IACrB,iBAAiB,GAAU,EAAE;IAC7B,UAAU,GAAU,EAAE;IACtB,cAAc,GAAU,EAAE;IAC1B,cAAc,GAAU,EAAE;IAC1B,MAAM,GAAS,EAAE;IACjB,eAAe,GAAU,EAAE;IAC3B,UAAU,GAAO,EAAE;AACnB,IAAA,cAAc;IACd,aAAa,GAAQ,EAAE;IACvB,UAAU,GAAQ,EAAE;AACpB,IAAA,KAAK;AACL,IAAA,GAAG;AACH,IAAA,WAAA,CACU,IAAiB,EAAa,MAAc,EAC7C,EAAsB,EACrB,EAAqB,EAAA;QAFrB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAA0B,IAAA,CAAA,MAAM,GAAN,MAAM;QACrC,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,EAAE,GAAF,EAAE;IACT;AAGH,IAAA,OAAO,CAAE,KAAiB,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;IACH;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;IACA,QAAQ,GAAA;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACnD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAW,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACjB,IAAI,CAAC,EAAE,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAI;AAC7C,YAAA,IAAI,CAAC,EAAE;AACL,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;oBAC/B,IAAI,CAAC,SAAS,EAAE;AACf,gBAAA;AAAK,qBAAA;oBACJ,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,oBAAA,IAAI,aAAa,EAAE;wBACnB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC/C,wBAAA,IAAI,CAAC,cAAc,GAAG,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAS,MAAM;AAC9D,4BAAA,GAAG,KAAK;4BACR,OAAO,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC,CAAC;AACJ,oBAAA;AACA,gBAAA;AACF,YAAA;AACH,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,QAAQ,EAAE;;;AAGhB,QAAA;;QAGD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,QAAA,IAAI,aAAa,EAAE;YACjB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;;YAG/C,IAAI,CAAC,eAAe,GAAG;gBACrB,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;AACjD,gBAAA,UAAU,EAAE,aAAa,CAAC,UAAU,IAAI,EAAE;AAC1C,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;AACpC,gBAAA,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI;AAClC,gBAAA,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,EAAE;AAC9B,gBAAA,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE;AAClC,gBAAA,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE;AAChC,gBAAA,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI;aACrC;;YAGD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC1E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,KAAK,CAAC;YACpE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CAAC;;YAGrE,IAAI,aAAa,CAAC,IAAI,EAAE;gBACtB,IAAI,CAAC,iBAAiB,GAAG;AACvB,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACtF,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACnF;AACF,YAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,iBAAiB,GAAG;AACvB,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1F,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACvF;AACF,YAAA;;;YAGP,IAAI,CAAC,mBAAmB,EAAE;AACrB,QAAA;AAAM,aAAA;;YAEL,IAAI,CAAC,YAAY,EAAE;;AAEpB,QAAA;IACH;AACQ,IAAA,oBAAoB,CAAC,KAAY,EAAA;AACvC,QAAA,OAAO;cACH,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;AACxB,gBAAA,GAAG,IAAI;AACP,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK;AAC3B,aAAA,CAAC;cACF,EAAE;IACR;IACQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;IAE9E;AAEA;;AAEG;IACK,YAAY,GAAA;QAClB,IAAI,CAAC,eAAe,GAAG;AACrB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,QAAQ,EAAE;SACX;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IAC1B;IACF,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAI,CAAC,EAAE;oBACL,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC/B,oBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;oBACD,IAAI,aAAa,CAAC,MAAM,EAAE;wBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAChC,4BAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;AACzC,gCAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AAC1B,4BAAA;AACH,wBAAA,CAAC,CAAC;wBAEF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;wBAC1D,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;wBACtD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;;wBAG1D,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE;;wBAEf,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;wBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;wBAClE,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;AACpD,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAEjD,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;wBAE9B,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE;;wBAEf,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA;AAGF,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;oBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;oBAErE,IAAI,CAAC,YAAY,EAAE;oBACnB,IAAI,CAAC,SAAS,EAAE;;oBAEhB,IAAI,CAAC,QAAQ,EAAE;AACV,oBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;oBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAEjD,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;YACD,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,cAAc,CAAC,KAAU,EAAA;;AAEvB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAE3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;;AAGlC,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;;QAGrF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;QAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;QAGhE,OAAO,aAAa,CAAC,MAAM;QAC3B,OAAO,aAAa,CAAC,MAAM;QAC3B,OAAO,aAAa,CAAC,QAAQ;;QAG7B,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,SAAS,EAAE;;AAGhB,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;AAIxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAIA,IAAA,MAAM,GAAO;AACX,QAAA,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;QACzB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACrE,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACvE,QAAA,WAAW,EAAE;AACX,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3C,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,SAAA;QACD,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzE,QAAA,YAAY,EAAE;AACZ,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5C,SAAA;KACF;AAEC,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;AAEzC,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;gBACrC,MAAM,WAAW,GACf,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACrE,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,YAAA,CAAC;AACF,QAAA;IACH;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7C,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EACnC;gBACA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;gBAClD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC9C,gBAAA,IAAI,QAAQ,GAAG;AACb,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CACzD,YAAY,CACb;AACD,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACtE;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,gBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;AACD,gBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;AAEzB,YAAA;AACF,QAAA;IACH;AACA,IAAA,YAAY,CAAC,CAAY,EAAA;QACvB,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;IACA,YAAY,GAAA;;AAEV,QAAA,IAAI,GAAG,GAAE;YACR,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;AACxF,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;SACT;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACnC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAY,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAO,KAAK,GAAG,CAAC,IAAI,CAAC;;AAEpH,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;oBAC3D,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,oBAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK;AACtD,iBAAA,CAAC,CAAC;;AAGH,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;oBACjF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAG;wBACrD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;AACpG,wBAAA,OAAO,eAAe,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,GAAG,QAAQ;AACvF,oBAAA,CAAC,CAAC;AACH,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS;AACxC,gBAAA;gBAED,IAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1B,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAY,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9I,gBAAA;AACD,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;AAChH,gBAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChC,UAAU,CAAC,MAAI;AACb,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAC,IAAI,CAAC;AACR,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC;YACjD,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC;IAEnE;IAEA,sBAAsB,GAAA;AACpB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC;aAClF,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAI,IAAI,CAAC;aAC5E,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AACtE,QAAA,OAAO,iBAAiB,CAAC,MAAM,KAAK;AAClC,cAAE;AACF,cAAE,iBAAiB,CAAC,MAAM,KAAK;AAC/B,kBAAE,iBAAiB,CAAC,CAAC;AACrB,kBAAE,CAAA,EAAG,iBAAiB,CAAC,MAAM,YAAY;IAC7C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC;aACf,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO;aACnC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AACjC,QAAA,MAAM,GAAG,GAAG,EAAE,IAAI,EAAC,QAAQ,EAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,EAAC,EAAE,EAAE;QACrH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACjC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,SAAS,CAAC;AACxH,gBAAA,MAAM,cAAc,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,SAAc,MAAM;oBACpE,SAAS,EAAE,SAAS,CAAC,SAAS;AAC9B,oBAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK;AACpE,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,UAAU,GAAG,cAAc;AAChC,gBAAA,IAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;oBAC9B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACvH,gBAAA;AACI,qBAAA;AACH,oBAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACrC,gBAAA;;AAGD,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;AACvG,gBAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,UAAU,CAAC,MAAI;AACb,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAC,IAAI,CAAC;AACR,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;YAC9C,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,IAAoC,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;;AAE9B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACzB,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YAExB,IAAI,IAAI,KAAK,OAAO,EAAE;;AAEpB,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC;qBACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;qBACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;;gBAGrC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE;oBACpG,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC1B,gBAAA;AACF,YAAA;YAED,IAAI,IAAI,KAAK,OAAO,EAAE;;gBAEpB,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE;oBAC9F,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA;AACF,YAAA;AACA,QAAA;IACH;IAGA,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YACjC,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IAC9B;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IACA,mBAAmB,GAAA;QACjB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AAC9K,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,WAAW;IACzC;IACA,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,EAAE;IAEd;IAGA,mBAAmB,GAAA;QAEjB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK;IACjG;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC;aACf,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO;aACnC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;AAEjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC;aAChB,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO;aAC7B,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC;AAEhC,QAAA,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;QAExH,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACxC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAG,GAAG,IAAG,GAAG,CAAC,IAAI,KAAI,GAAG,EAAC;oBACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU;;AAEjC,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC5C,0BAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO;0BACnG,EAAE;AAEN,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;wBAC1B,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3C,4BAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,wBAAA;AACH,oBAAA,CAAC,CAAC;;AAIF,oBAAA,IAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;wBAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACjH,oBAAA;AACI,yBAAA;AACH,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM;AAClC,oBAAA;;AAED,oBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE;AACvE,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AAC1B,4BAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,wBAAA,CAAC,CAAC;;AAGL,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AACjF,4BAAA,GAAG,KAAK;AACR,4BAAA,OAAO,EAAE;AACV,yBAAA,CAAC,CAAC;AACJ,oBAAA;AAAM,yBAAA;;AAEL,wBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9D,4BAAA,GAAG,KAAK;4BACR,OAAO,EAAE,KAAK,CAAC;AAChB,yBAAA,CAAC,CAAC;AACJ,oBAAA;;AAED,oBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;;AAK5E,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,MAAM,GAAE,EAAE;AACf,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAC,EAAE;AAC9B,oBAAA,IAAI,CAAC,cAAc,GAAE,EAAE;AACvB,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9D,wBAAA,GAAG,KAAK;AACR,wBAAA,OAAO,EAAE;AACV,qBAAA,CAAC,CAAC;AACH,oBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7E,gBAAA;YACH,CAAC;AACC,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,IAAI,CAAC,MAAM,GAAE,EAAE;AACf,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9D,oBAAA,GAAG,KAAK;AACR,oBAAA,OAAO,EAAE;AACV,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,cAAc,GAAE,EAAE;AACvB,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAC,EAAE;AAC9B,gBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;YAC9C,CAAC;AACF,SAAA,CAAC;IACJ;IAGA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAEA,mBAAmB,GAAA;AACjB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AACxJ,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,SAAS;IACvC;IAEA,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IAC5F;;IAEF,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAG;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;AACvF,YAAA,IAAI,aAAa,IAAI,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AACpD,YAAA;AACH,QAAA,CAAC,CAAC;;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;;AAGxE,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;;AAM5E,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AACE,IAAA,wBAAwB,CAAC,KAAU,EAAA;AACjC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,MAAM,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,uBAAuB,EAAE;IAChC;AAEA,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;;AAG1D,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;YAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;AAC1F,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,YAAA;AACH,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,uBAAuB,GAAA;;AAErB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;aACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAY,KAAI;YAC9C,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAO,KAAK,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;AACxF,YAAA,IAAG,iBAAiB,IAAI,CAAC,CAAC,EAAE;gBAC1B,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC7D,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAE,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;;YAEjB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;AAE/C,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;AACnC,QAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;IAE3B;AAEA,IAAA,qBAAqB,CAAC,KAAU,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,oBAAoB,EAAE;;;;;;IAM7B;IAEA,oBAAoB,GAAA;;AAElB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;aAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAS,KAAI;YACxC,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC;AAC/F,YAAA,IAAG,cAAc,IAAI,CAAC,CAAC,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACxD,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;;YAE/B,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;AAC7C,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;;AAGxB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;;AAI7E,QAAA;;AAGD,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAGA,KAAK,GAAA;QACH,UAAU,CAAC,MAAI;;AAEjB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAE,EAAE;AAAC,YAAA,IAAI,CAAC,UAAU,GAAE,EAAE;AAAE,YAAA,IAAI,CAAC,MAAM,GAAE,EAAE;;AAErD,YAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAE,EAAE;;YAI/B,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,SAAS,EAAE;;;;;;;;;;;;;;AAkBd,YAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/E,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;AAIrB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;;AAKvB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B,CAAC,EAAC,GAAG,CAAC;IACN;IAIA,KAAK,GAAA;;AAEH,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;AAGzB,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;AACrF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,IAAI;;QAElC,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;QAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;;AAIvF,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;;AAKxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;IAEA,eAAe,GAAA;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;AAExD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,iBAAA,GAAG,CAAC,QAAQ,KAAK;AAChB,gBAAA,GAAG,QAAQ;gBACX,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AACjF,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,QAAQ,IACd,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACnD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,KAAK;AACvD,gBAAA,GAAG,QAAQ;gBACX,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAK,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AAC9F,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAGA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,iBAAA,GAAG,CAAC,KAAK,KAAK;AACb,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI;AACrF,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,KAAK,IACX,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACrD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK;AAClD,gBAAA,GAAG,KAAK;gBACR,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAK,KAAK,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI;AAClG,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAGA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,iBAAA,GAAG,CAAC,KAAK,KAAK;AACb,gBAAA,GAAG,KAAK;;AAER,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI;AACjH,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACvE,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK;AAC9C,gBAAA,GAAG,KAAK;;AAER,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI;AACjH,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAIA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;AAGA,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC5B,MAAM,aAAa,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CACzD,qBAAqB,CACtB;QACD,MAAM,cAAc,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAC1D,YAAY,CACb;QACD,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE;AACrB,QAAA;QACD,IAAG,CAAC,cAAc,EAAE;YAClB,IAAI,CAAC,cAAc,EAAE;AACtB,QAAA;IAEH;wGAt2BW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,0HCjBhC,w5SAsMM,EAAA,MAAA,EAAA,CAAA,wrMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDrLO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,w5SAAA,EAAA,MAAA,EAAA,CAAA,wrMAAA,CAAA,EAAA;mKA+C3B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBA8yB1C,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MEx1B/B,sBAAsB,CAAA;AAgDvB,IAAA,IAAA;AACA,IAAA,MAAA;AACD,IAAA,EAAA;AACC,IAAA,EAAA;IAlDV,KAAK,GAAG,KAAK;AACb,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACpC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,IAAA,CAAC;AAED,IAAA,iBAAiB,GAAQ;QACvB,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACvC,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;KACrC;AACD,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,QAAQ,EAAE,EAAE;KACb;IACD,YAAY,GAAY,KAAK;AAC7B,IAAA,YAAY,GAAkB,IAAI,CAAC;IACnC,kBAAkB,GAAW,EAAE;IAC/B,eAAe,GAAW,EAAE;IAC5B,SAAS,GAAU,EAAE;IACrB,iBAAiB,GAAU,EAAE;IAC7B,UAAU,GAAU,EAAE;IACtB,cAAc,GAAU,EAAE;IAC1B,cAAc,GAAU,EAAE;IAC1B,aAAa,GAAU,EAAE;IACzB,MAAM,GAAU,EAAE;IAClB,KAAK,GAAU,EAAE;IACjB,eAAe,GAAW,EAAE;IAC5B,cAAc,GAAW,EAAE;IAC3B,UAAU,GAAQ,EAAE;AACpB,IAAA,cAAc;IACd,aAAa,GAAU,EAAE;IACzB,UAAU,GAAU,EAAE;AACtB,IAAA,KAAK;AACL,IAAA,GAAG;IACH,iBAAiB,GAAU,EAAE;IAC7B,YAAY,GAAU,EAAE;IACxB,iBAAiB,GAAW,EAAE;IAC9B,SAAS,GAAU,EAAE;AACrB,IAAA,WAAA,CACU,IAAiB,EACjB,MAAc,EACf,EAAsB,EACrB,EAAqB,EAAA;QAHrB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,MAAM,GAAN,MAAM;QACP,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,EAAE,GAAF,EAAE;IACT;AAGH,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;IACH;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;IACA,QAAQ,GAAA;;;;;;;;QASN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACnD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAW,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACjB,IAAI,CAAC,EAAE,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAI;AAC7C,YAAA,IAAI,CAAC,EAAE;AACL,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;oBAC7B,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA;AAAM,qBAAA;oBACL,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,oBAAA,IAAI,aAAa,EAAE;wBACjB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC/C,wBAAA,IAAI,CAAC,cAAc,GAAG,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,MAAM;AAC/D,4BAAA,GAAG,KAAK;4BACR,OAAO,EAAE,KAAK,CAAC,OAAO;AACvB,yBAAA,CAAC,CAAC;AACH,wBAAA,IAAI,CAAC,aAAa,GAAG,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAU,MAAM;AAChE,4BAAA,GAAG,KAAK;4BACR,OAAO,EAAE,KAAK,CAAC,OAAO;AACvB,yBAAA,CAAC,CAAC;AACJ,oBAAA;AACF,gBAAA;AACF,YAAA;AACH,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,YAAA,IAAI,aAAa,EAAE;gBACjB,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;gBACrD,IAAI,CAAC,cAAc,GAAG;oBACpB,gBAAgB,EAAE,mBAAmB,CAAC,gBAAgB;iBACvD;AACF,YAAA;AACF,QAAA;;QAGD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5D,QAAA,IAAI,aAAa,EAAE;YACjB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;;YAG/C,IAAI,CAAC,eAAe,GAAG;gBACrB,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;AACjD,gBAAA,UAAU,EAAE,aAAa,CAAC,UAAU,IAAI,EAAE;AAC1C,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;AACpC,gBAAA,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI;AAClC,gBAAA,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,EAAE;AAC9B,gBAAA,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE;AAClC,gBAAA,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE;AAChC,gBAAA,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,EAAE;AACtC,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;AACpC,gBAAA,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,EAAE;aACvC;;YAGD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC;YACzE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAChD,aAAa,CAAC,QAAQ,CACvB;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,KAAK,CAAC;YACpE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CAAC;YACrE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ,CAAC;;YAEtE,IAAI,aAAa,CAAC,IAAI,EAAE;gBACtB,IAAI,CAAC,iBAAiB,GAAG;AACvB,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CACnB,aAAa,CAAC,IAAI,CAAC,SAAS,EAC5B,YAAY,CACb,CAAC,MAAM,CAAC,YAAY,CAAC;AACtB,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAClE,YAAY,CACb;iBACF;AACF,YAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,iBAAiB,GAAG;AACvB,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CACnB,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAChC,YAAY,CACb,CAAC,MAAM,CAAC,YAAY,CAAC;AACtB,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CACjB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAC9B,YAAY,CACb,CAAC,MAAM,CAAC,YAAY,CAAC;iBACvB;AACF,YAAA;;;YAGD,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA;AAAM,aAAA;;YAEL,IAAI,CAAC,YAAY,EAAE;;AAEpB,QAAA;IACH;AACQ,IAAA,oBAAoB,CAAC,KAAY,EAAA;AACvC,QAAA,OAAO;cACH,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;AACxB,gBAAA,GAAG,IAAI;AACP,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI;AAC/B,aAAA,CAAC;cACF,EAAE;IACR;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,QAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;;IAEH;AAEA;;AAEG;IACK,YAAY,GAAA;QAClB,IAAI,CAAC,eAAe,GAAG;AACrB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,EAAE;SACb;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;IACzB;IACA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAI,CAAC,EAAE;oBACL,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC/B,oBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;oBACD,IAAI,aAAa,CAAC,MAAM,EAAE;wBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAChC,4BAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;AACzC,gCAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AAC1B,4BAAA;AACH,wBAAA,CAAC,CAAC;;;;;;;;;;;;;;;wBAgBF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;wBAC1D,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC;wBACrD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;wBACtD,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;wBACtD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;;wBAGjD,IAAI,CAAC,UAAU,EAAE;wBACjB,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE;;wBAEhB,IAAI,CAAC,QAAQ,EAAE;AAChB,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;wBAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;AAChE,wBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;wBAC7D,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK;wBAChD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;wBACtD,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ;AACtD,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAEjD,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;wBAEvB,IAAI,CAAC,UAAU,EAAE;wBACjB,IAAI,CAAC,YAAY,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE;;wBAEhB,IAAI,CAAC,QAAQ,EAAE;AAChB,oBAAA;AACF,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;oBAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;oBAEhE,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,YAAY,EAAE;oBACnB,IAAI,CAAC,SAAS,EAAE;;oBAEhB,IAAI,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,OAAO,EAAE;AACd,oBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;oBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAEjD,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;gBACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC/C,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,WAAW,CAAC,MAAW,EAAA;AACrB,QAAA,IAAI,GAAG,GAAG;YACR,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE;SAC/B;AACD,QAAA,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACtC,gBAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,oBAAA,YAAY,CAAC,OAAO,CAClB,iBAAiB,EACjB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,IAAI,EAAE,CAAC,CAC7C;gBACH,CAAC;AACF,aAAA,CAAC;AACH,QAAA;IACH;AACA,IAAA,cAAc,CAAC,KAAU,EAAA;;AAEvB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAE3B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,EAAE;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;;AAGlC,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;;QAGD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ;QAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;QAGhE,OAAO,aAAa,CAAC,MAAM;QAC3B,OAAO,aAAa,CAAC,MAAM;QAC3B,OAAO,aAAa,CAAC,QAAQ;QAC7B,OAAO,aAAa,CAAC,OAAO;QAC5B,OAAO,aAAa,CAAC,QAAQ;;QAG7B,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,SAAS,EAAE;;AAGhB,QAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;AACD,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;AAIxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA,IAAA,MAAM,GAAQ;AACZ,QAAA,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;QACzB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACrE,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACvE,QAAA,WAAW,EAAE;AACX,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3C,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,SAAA;QACD,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzE,QAAA,YAAY,EAAE;AACZ,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,YAAA,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5C,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;AACzC,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,aAAa,KAAK,EAAE,EAAE;AAC7C,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;oBACrC,MAAM,WAAW,GACf,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBACrE,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,gBAAA,CAAC;AACF,YAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;AACrC,oBAAA,MAAM,WAAW,GACf,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AAChB,wBAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBAClD,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC7C,gBAAA,CAAC;AACF,YAAA;AACF,QAAA;IACH;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7C,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EACnC;gBACA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;gBAClD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC9C,gBAAA,IAAI,QAAQ,GAAG;AACb,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CACzD,YAAY,CACb;AACD,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACtE;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,gBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;AACD,gBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;AAEzB,YAAA;AACF,QAAA;IACH;AACA,IAAA,YAAY,CAAC,CAAa,EAAA;QACxB,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;IACA,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC;aAClB,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;aACnC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;;AAEpC,QAAA,IAAI,GAAG,GAAG;AACR,YAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;AAC7B,kBAAE,IAAI,CAAC,eAAe,CAAC;AACvB,kBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YACvB,OAAO;AACP,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;SACV;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACnC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;sBACjC,MAAM,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,OAAO;qBAC3C,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,IAAI,CAAC;;AAE9B,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;oBAC3D,IAAI,EAAE,IAAI,CAAC,IAAI;;AAEf,oBAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK;AACtD,iBAAA,CAAC,CAAC;;AAGH,gBAAA,IACE,IAAI,CAAC,eAAe,CAAC,QAAQ;oBAC7B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAC5C;AACA,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;wBACvD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CACxD,CAAC,GAAQ,KAAK,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CACzC;AACD,wBAAA,OAAO;8BACH,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO;8BAC/C,QAAQ;AACd,oBAAA,CAAC,CAAC;AACH,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS;AACxC,gBAAA;gBAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAa,KAC3D,QAAQ,CAAC;AACN,yBAAA,WAAW;yBACX,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CACnD;AACF,gBAAA;AACD,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC;qBAC5B,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;qBACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;AACnC,gBAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChC,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,SAAS,EAAE;AAChB,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAE,IAAI,CAAC;AACT,gBAAA;gBAED,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC/C,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC;YACjD,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC;IACrE;IAEA,sBAAsB,GAAA;QACpB,MAAM,iBAAiB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAClD;cACC,IAAI,CAAC;iBACF,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;iBACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI;cAClC,IAAI,CAAC;iBACF,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;iBACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxC,QAAA,OAAO,iBAAiB,CAAC,MAAM,KAAK;AAClC,cAAE;AACF,cAAE,iBAAiB,CAAC,MAAM,KAAK;AAC/B,kBAAE,iBAAiB,CAAC,CAAC;AACrB,kBAAE,CAAA,EAAG,iBAAiB,CAAC,MAAM,SAAS;IAC1C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC;aAClB,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;aACnC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AACpC,QAAA,IAAI,IAAI;QACR,IAAI,GAAG,IAAI,CAAC;aACT,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;aACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;QAEnC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;AAClC,YAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AAC7C,QAAA;AACD,QAAA,MAAM,GAAG,GAAG;YACV,OAAO;YACP,IAAI;AACJ,YAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;AAC7B,kBAAE,IAAI,CAAC,eAAe,CAAC;AACvB,kBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;AACvB,YAAA,KAAK,EAAE,EAAE;SACV;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACjC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;sBACrC,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO;qBACrC,GAAG,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,SAAS,CAAC;AACvC,gBAAA,MAAM,cAAc,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,SAAc,MAAM;oBACpE,SAAS,EAAE,SAAS,CAAC,SAAS;AAC9B,oBAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK;;AAEpE,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,UAAU,GAAG,cAAc;AAChC,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;oBAC/B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAS,KACpD,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAC5D;AACF,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACrC,gBAAA;;AAGD,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC;qBACzB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;qBAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;AAClC,gBAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAE,IAAI,CAAC;AACT,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;YAC9C,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CACZ,IAAyD,EAAA;AAEzD,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;;AAE9B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACzB,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YAExB,IAAI,IAAI,KAAK,SAAS,EAAE;;AAEtB,gBAAA,IACE,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;AAC/D,oBAAA,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAC9B;oBACA,IAAI,CAAC,UAAU,EAAE;AAClB,gBAAA;AACF,YAAA;YAED,IAAI,IAAI,KAAK,OAAO,EAAE;;AAEpB,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC;qBACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;qBACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;;AAGnC,gBAAA,IACE,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;AACjC,qBAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAC3D;oBACA,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC1B,gBAAA;AACF,YAAA;YAED,IAAI,IAAI,KAAK,OAAO,EAAE;;AAEpB,gBAAA,IACE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;AACzD,oBAAA,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAC5B;oBACA,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA;AACF,YAAA;YAED,IAAI,IAAI,KAAK,MAAM,EAAE;;AAEnB,gBAAA,IACE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;AACvD,oBAAA,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAC3B;oBACA,IAAI,CAAC,OAAO,EAAE;AACf,gBAAA;AACF,YAAA;AACF,QAAA;IACH;IAEA,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YACjC,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IAC9B;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IACA,mBAAmB,GAAA;QACjB,MAAM,cAAc,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;AAC7D,cAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;AACjD,cAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;AACzD,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,WAAW;IACzC;IACA,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC;AACzB,cAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;cAClD,KAAK;IACX;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC;aAClB,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;aACnC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AACpC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC;aACf,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;aACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC;aAChB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;aAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;AAElC,QAAA,MAAM,IAAI,GAAG;YACX,OAAO;YACP,IAAI;AACJ,YAAA,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM;SAC7D;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACxC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;;oBAE3B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU;;AAEjC,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC5C,0BAAE,IAAI,CAAC,eAAe,CAAC;6BAClB,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO;6BACpC,GAAG,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,OAAO;0BACpC,EAAE;;oBAEN,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,wBAAA,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC;8BAC5B,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;AACzC,8BAAE,IAAI,CAAC;AACX,oBAAA,CAAC,CAAC;;AAGF,oBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;AAC/B,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAC7C,KAAK,CAAC;AACH,6BAAA,WAAW;6BACX,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAChD;AACF,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACvC,oBAAA;;AAGD,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;wBAChE,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;AACvB,qBAAA,CAAC,CAAC;;;AAIH,oBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;oBACD,IAAI,CAAC,OAAO,EAAE;;AAEd,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;AAAM,qBAAA;;oBAEL,IAAI,CAAC,gBAAgB,EAAE;AACxB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;gBAC5C,IAAI,CAAC,gBAAgB,EAAE;YACzB,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC;aAClB,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;aACnC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AAEpC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC;aACf,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;aACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;AAEnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC;aAChB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;aAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;AAElC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC;aAClB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;aAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AAEhC,QAAA,MAAM,IAAI,GAAG;YACX,OAAO;YACP,IAAI;AACJ,YAAA,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM;AAC5D,YAAA,OAAO,EAAE,OAAO;SACjB;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;;oBAE3B,IAAI,CAAC,KAAK,GAAG;wBACX,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE;AAC5D,wBAAA,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAS,MAAM;4BAC3C,GAAG,EAAE,IAAI,CAAC,GAAG;4BACb,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,OAAO,EAAE,KAAK;yBACf,CAAC,CAAC,IAAI,EAAE,CAAC;qBACX;;AAGD,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC5C,0BAAE,IAAI,CAAC,eAAe,CAAC;6BAClB,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,OAAO;6BAClC,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,GAAG;0BAC9B,EAAE;;;oBAIN,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;wBAC1B,IAAI,eAAe,CAAC,MAAM,EAAE;4BAC1B,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAClD,wBAAA;AAAM,6BAAA;4BACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS;AACtC,wBAAA;AACH,oBAAA,CAAC,CAAC;;AAGF,oBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9B,wBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAC1C,IAAI,CAAC;AACF,6BAAA,WAAW;6BACX,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAC/C;AACF,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACrC,oBAAA;;AAGD,oBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;wBAChE,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,qBAAA,CAAC,CAAC;;AAGH,oBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;;AAGD,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,cAAc,EAAE;AACtB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,gBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC;gBAC3C,IAAI,CAAC,cAAc,EAAE;YACvB,CAAC;AACF,SAAA,CAAC;IACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;AAClC,QAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;IACH;;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,QAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;IACH;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAEA,mBAAmB,GAAA;AACjB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;AAC1C,cAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;AAC7C,cAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AACxD,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,SAAS;IACvC;IAEA,kBAAkB,GAAA;AAChB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACzC,cAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO;AAC1C,cAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC;AACrD,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK;AAC/B,cAAE;AACF,cAAE,cAAc,CAAC,MAAM,KAAK;AAC5B,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACpB,kBAAE,CAAA,EAAG,cAAc,CAAC,MAAM,QAAQ;IACtC;IAEA,mBAAmB,GAAA;AACjB,QAAA,QACE,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;IAEvD;IACA,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC;aACT,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,SAAS;aACvC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC;IAClC;;IAGA,oBAAoB,GAAA;QAClB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CACzC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAC7C;AACD,YAAA,IAAI,aAAa,IAAI,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AACpD,YAAA;AACH,QAAA,CAAC,CAAC;;QAEF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;;AAG1E,QAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;;;;QAMD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,OAAO,EAAE;;AACrD,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;AAClC,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA,IAAA,mBAAmB,CAAC,aAAqB,EAAA;QACvC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;AAC7D,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AACzC,YAAA;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;AAC/D,QAAA,MAAM,cAAc,GAAG,WAAW,EAAE,OAAO,IAAI,KAAK;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACpC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CACxC;AAED,QAAA,IAAI,aAAa,KAAK,SAAS,IAAI,cAAc,EAAE;AACjD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAClC,gBAAA,GAAG,CAAC;AACJ,gBAAA,OAAO,EAAE,CAAC,CAAC,GAAG,KAAK,SAAS;AAC7B,aAAA,CAAC,CAAC;AACJ,QAAA;AACD,QAAA,IAAI,aAAa,KAAK,SAAS,IAAI,cAAc,EAAE;AACjD,YAAA,IAAI,WAAW,EAAE;AACf,gBAAA,WAAW,CAAC,OAAO,GAAG,KAAK;AAC5B,YAAA;AACF,QAAA;QACD,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACnE,QAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;AACD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA,IAAA,wBAAwB,CAAC,KAAU,EAAA;AACjC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAC5B,CAAC,QAAQ,MAAM,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAC7C;QACD,IAAI,CAAC,uBAAuB,EAAE;IAChC;AAEA,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;;AAG1D,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAC5C,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAC7C;AACD,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,YAAA;AACH,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEA,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAC/B,QAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;QAC1D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAClC,YAAA,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AAC1B,gBAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACvB,YAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACrB,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;AAClE,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC7B,YAAA;AACH,QAAA,CAAC,CAAC;;AAEF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;AAC3E,QAAA,MAAM,SAAS,GAAG,eAAe,GAAG,eAAe,CAAC,GAAG,GAAG,EAAE;AAC5D,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;IACrC;IAEA,uBAAuB,GAAA;;AAErB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO;aACrC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAa,KAAI;YAC/C,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAC9C,CAAC,GAAQ,KAAK,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CACxC;AACD,YAAA,IAAI,iBAAiB,IAAI,CAAC,CAAC,EAAE;gBAC3B,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC7D,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;;YAEjB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;AAC/C,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;AACnC,QAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;IAE3B;AAEA,IAAA,qBAAqB,CAAC,KAAU,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,oBAAoB,GAAA;;AAElB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO;aAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAU,KAAI;YACzC,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAC5C,CAAC,IAAS,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CACjD;AACD,YAAA,IAAI,cAAc,IAAI,CAAC,CAAC,EAAE;gBACxB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACxD,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;;YAEhC,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;AAC7C,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;;AAGxB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,YAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;;;AAIF,QAAA;;AAGD,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAEA,KAAK,GAAA;QACH,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;YAElC,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,SAAS,EAAE;AAEhB,YAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;AACD,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;AAExB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AAEvB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,eAAe,GAAA;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;AAExD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,iBAAA,GAAG,CAAC,CAAC,QAAQ,MAAM;AAClB,gBAAA,GAAG,QAAQ;AACX,gBAAA,OAAO,EACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;sBACvD,OAAO,IAAI,KAAK;AACvB,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,CAAC,QAAQ,KACf,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACnD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM;AACzD,gBAAA,GAAG,QAAQ;gBACX,OAAO,EACL,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAChC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CACrC,EAAE,OAAO,IAAI,KAAK;AACtB,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAEA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,iBAAA,GAAG,CAAC,CAAC,KAAK,MAAM;AACf,gBAAA,GAAG,KAAK;AACR,gBAAA,OAAO,EACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;sBAC3D,OAAO,IAAI,KAAK;AACvB,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,CAAC,KAAK,KACZ,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACrD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AACpD,gBAAA,GAAG,KAAK;gBACR,OAAO,EACL,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAC7B,CAAC,CAAM,KAAK,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAC5C,EAAE,OAAO,IAAI,KAAK;AACtB,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAEA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACxB,iBAAA,GAAG,CAAC,CAAC,KAAK,MAAM;AACf,gBAAA,GAAG,KAAK;;gBAER,OAAO,EACL,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAC9B,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CACxC,EAAE,OAAO;AACV,oBAAA,KAAK,CAAC,OAAO;oBACb,KAAK;AACR,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACzE,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AAChD,gBAAA,GAAG,KAAK;;gBAER,OAAO,EACL,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAC9B,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CACxC,EAAE,OAAO;AACV,oBAAA,KAAK,CAAC,OAAO;oBACb,KAAK;AACR,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAEA,WAAW,GAAA;QACT,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;AAEpD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AACvB,iBAAA,GAAG,CAAC,CAAC,IAAI,MAAM;AACd,gBAAA,GAAG,IAAI;;gBAEP,OAAO,EACL,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;AAC/D,sBAAE,OAAO;AACX,oBAAA,IAAI,CAAC,OAAO;oBACZ,KAAK;AACR,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrE,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AAC7C,gBAAA,GAAG,IAAI;;gBAEP,OAAO,EACL,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;AAC/D,sBAAE,OAAO;AACX,oBAAA,IAAI,CAAC,OAAO;oBACZ,KAAK;AACR,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;AAGA,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC5B,MAAM,aAAa,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CACzD,qBAAqB,CACtB;QACD,MAAM,cAAc,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,YAAY,CAAC;QAC1E,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE;AACrB,QAAA;QACD,IAAI,CAAC,cAAc,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;AACtB,QAAA;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+EA,UAAU,GAAA;AACR,QAAA,IAAI,GAAG,GAAG;AACR,YAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;AAC7B,kBAAE,IAAI,CAAC,eAAe,CAAC;AACvB,kBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;SACxB;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;;AAEjB,gBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE;sBACpC,MAAM,CAAC,CAAC,OAAY,KAAK,OAAO,CAAC,OAAO;qBACzC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,OAAO,CAAC;;AAGjC,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;oBAC1D,OAAO,EAAE,IAAI,CAAC,OAAO;;;AAGrB,oBAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,KAAK;AAC5D,iBAAA,CAAC,CAAC;AACH,gBAAA,IACE,IAAI,CAAC,eAAe,CAAC,OAAO;oBAC5B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAC3C;AACA,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;wBACvD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CACvD,CAAC,GAAQ,KAAK,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAC/C;AACD,wBAAA,OAAO;8BACH,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO;8BAC/C,QAAQ;AACd,oBAAA,CAAC,CAAC;AACH,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS;AACxC,gBAAA;;gBAGD,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;;gBAG5C,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAC1B,IAAI,CAAC,eAAe,EAAE;AACvB,gBAAA;;AAGD,gBAAA,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAC3C,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAC7B;AACD,gBAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChC,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,YAAY,EAAE;AACnB,wBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,EAAE,IAAI,CAAC;AACT,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC;YACjD,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,sBAAsB,GAAA;AACpB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;cAC7C,IAAI,CAAC;iBACF,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;iBACnC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;cACnC,IAAI,CAAC;iBACF,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;iBACnC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AAExC,QAAA,OAAO,iBAAiB,CAAC,MAAM,KAAK;AAClC,cAAE;AACF,cAAE,iBAAiB,CAAC,MAAM,KAAK;AAC/B,kBAAE,iBAAiB,CAAC,CAAC;AACrB,kBAAE,CAAA,EAAG,iBAAiB,CAAC,MAAM,YAAY;IAC7C;IAEA,eAAe,GAAA;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;AAEvD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,iBAAA,GAAG,CAAC,CAAC,OAAO,MAAM;AACjB,gBAAA,GAAG,OAAO;AACV,gBAAA,OAAO,EACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;sBAC5D,OAAO,IAAI,KAAK;AACvB,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,CAAC,OAAO,KACd,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACnD;AACJ,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAgB,MAAM;AACjE,gBAAA,GAAG,OAAO;gBACV,OAAO,EACL,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAChC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAC1C,EAAE,OAAO,IAAI,KAAK;AACtB,aAAA,CAAC,CAAC;AACJ,QAAA;IACH;IAEA,sBAAsB,GAAA;AACpB,QAAA,QACE,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;AACjC,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;IAE9D;AACA,IAAA,wBAAwB,CAAC,KAAU,EAAA;AACjC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QAC1E,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEA,uBAAuB,GAAA;;AAErB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC;aAC5B,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;aACnC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;YAC9C,IAAI,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAC7C,CAAC,GAAQ,KAAK,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAC7C;AACD,YAAA,IAAI,gBAAgB,IAAI,CAAC,CAAC,EAAE;gBAC1B,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;AAC3D,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC7D,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE;YAClC,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;;YAEjB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB;AACtD,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,EAAE;AAClC,QAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;IAE3B;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,KAAK,GAAA;;AAEH,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;AAGzB,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI;;QAGjC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB;QACrD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;QAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;AAC5C,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC;cACxC,aAAa,CAAC;AAChB,cAAE,IAAI,CAAC,MAAM;AACf,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC;cAC1C,aAAa,CAAC;AAChB,cAAE,IAAI,CAAC,KAAK;;;AAGd,QAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;;AAED,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;;;AAKxB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;wGAp/CW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,6HChBnC,q3cAsTM,EAAA,MAAA,EAAA,CAAA,+oMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FDtSO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,q3cAAA,EAAA,MAAA,EAAA,CAAA,+oMAAA,CAAA,EAAA;mKA2D9B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAqqC1C,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ME/tC/B,8BAA8B,CAAA;AAuB/B,IAAA,IAAA;AACA,IAAA,EAAA;AACA,IAAA,EAAA;IAxBZ,KAAK,GAAG,KAAK;AACX,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACrC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,IAAA,CAAC;IACC,iBAAiB,GAAQ,EAAE;IAC3B,UAAU,GAAQ,EAAE;AACpB,IAAA,cAAc;AACd,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,QAAQ,EAAC;KACV;AACD,IAAA,UAAU;IACV,YAAY,GAAM,EAAE;AAEpB,IAAA,WAAA,CACU,IAAiB,EACjB,EAAsB,EACtB,EAAqB,EAAA;QAFrB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,EAAE,GAAF,EAAE;AAGX,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AAC9B,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAI,CAAC,EAAE;oBACL,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC/B,oBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;oBACD,IAAI,aAAa,CAAC,MAAM,EAAE;wBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAChC,4BAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;AACzC,gCAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AAC1B,4BAAA;AACH,wBAAA,CAAC,CAAC;wBACF,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;wBAClD,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;wBAC1D,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,aAAa,CAAC,KAAK;wBACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;wBAC3C,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACpD,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;wBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;wBAChE,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;wBACpD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,aAAa,CAAC,KAAK;wBACjD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;wBAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC3C,wBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;wBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,oBAAA;AACF,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;oBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;oBAChE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC3C,oBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;oBACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;YACD,CAAC;AACF,SAAA,CAAC;IACJ;AACA,IAAA,QAAQ,KAAU;AAClB,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC/C;IACA,SAAS,GAAM,EAAE;AACnB,IAAA,SAAS,CAAC,MAAU,EAAA;AAClB,QAAA,IAAI,CAAC,SAAS,GAAE,EAAE;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;AACnC,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAI,CAAC,EAAE;oBAEL,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAgC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,IAAI,CAAC,aAAa,CAAC,OAAO;AACxD,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;;YAEL,CAAC;AACF,SAAA,CAAC;IACN;AACA,IAAA,aAAa;AACZ,IAAA,aAAa,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC5B;AACA,IAAA,MAAM,GAAQ;AACZ,QAAA,KAAK,EAAE;YACL,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,EAAE;AACb,SAAA;AACD,QAAA,SAAS,EAAE;YACT,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;AACjC,SAAA;QACD,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjF,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACjD,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC/C,SAAA;AACF,QAAA,YAAY,EAAE;YACb,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;YACjC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;AACjC,SAAA;AACC,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAClD,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACjD,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAC1B,IAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAC;AACvC,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAc,KAAI;gBACvC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACvF,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,YAAA,CAAC;AACF,QAAA;IACC;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QAGnB,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7C,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EACnC;gBACA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO;gBAChD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AAC9C,gBAAA,IAAI,QAAQ,GAAG;AACb,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACtE,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBACrE;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,gBAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;AACF,YAAA;AACF,QAAA;AAAK,aAAA;AACJ,YAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAC/B,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;YACD,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YAC7G,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YAC3G,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC;AACjD,QAAA;IAEH;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa;QACpC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ;QAC1D,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO;QACzD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;AAChE,QAAA,IAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,KAAI,EAAE,EAAC;YACpC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY;AACjD,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC9D,QAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAE,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAE,EAAE;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAE,EAAE;AACjC,QAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;;QAED,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;QAEjD,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC;wGA9NW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,mECX3C,g/DAyB+D,EAAA,MAAA,EAAA,CAAA,8gIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDdlD,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,g/DAAA,EAAA,MAAA,EAAA,CAAA,8gIAAA,CAAA,EAAA;;;MES5B,gBAAgB,CAAA;AAkDjB,IAAA,MAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACD,IAAA,EAAA;AACC,IAAA,IAAA;IArDF,WAAW,GAAmB,EAAE;;AAG/B,IAAA,iBAAiB;AACjB,IAAA,gBAAgB;;AAQzB,IAAA,iBAAiB;AACjB,IAAA,mBAAmB;IACnB,2BAA2B,GAAW,EAAE;AACxC,IAAA,sBAAsB;AACtB,IAAA,qBAAqB;AACrB,IAAA,mBAAmB;;IAGnB,qBAAqB,GAAW,EAAE;IAClC,oBAAoB,GAAW,EAAE;AACjC,IAAA,sBAAsB;AACtB,IAAA,uBAAuB;AACvB,IAAA,UAAU;AACV,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,UAAU;AACV,IAAA,sBAAsB;AACtB,IAAA,WAAW;AACX,IAAA,WAAW;AACX,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;KACX;AACD,IAAA,iBAAiB;AACjB,IAAA,cAAc;AACd,IAAA,SAAS;AACT,IAAA,qBAAqB;AACrB,IAAA,YAAY;AACZ,IAAA,gBAAgB;AAChB,IAAA,aAAa;AACb,IAAA,qBAAqB;IACrB,WAAA,CACU,MAAqB,EACrB,MAAc,EACd,KAAqB,EACtB,EAAsB,EACrB,IAAkB,EAAA;QAJlB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;QACN,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,IAAI,GAAJ,IAAI;IACX;IAEH,QAAQ,GAAA;QACN,IAAI,WAAW,IAAI,YAAY,EAAE;AAC/B,YAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAC9B,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAC1C;AACD,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACtB,QAAA;QACD,IAAI,gBAAgB,IAAI,YAAY,EAAE;AACpC,YAAA,MAAM,IAAI,GAAQ,IAAI,CAAC,KAAK,CAC1B,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;AACN,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM;AACtB,QAAA;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC/D,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,aAAA,YAAY;AACZ,aAAA,SAAS,CAAC,CAAC,MAAe,KAAI;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;AAEA,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC1C,qBAAqB,EACrB,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B;AACD,QAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC5C,uBAAuB,EACvB,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC5C,uBAAuB,EACvB,MAAM,CACc;AACtB,QAAA,IAAI,CAAC,2BAA2B;YAC9B,IAAI,CAAC,mBAAmB,KAAK;AAC3B,kBAAE;kBACA,iBAAiB;AACvB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,4BAA4B,EAC5B,MAAM,CACG;AACX,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,2BAA2B,IAAI,CAAA,CAAA,EAAI,cAAc,EAAE;AACzD,QAAA;AAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC/C,2BAA2B,EAC3B,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,2BAA2B,EAAE,MAAM,CAAC;AAChE,QAAA;AAED,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC9C,0BAA0B,EAC1B,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,kCAAkC,EAAE,MAAM,CAAC;AACvE,QAAA;;AAGD,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC9C,yBAAyB,EACzB,MAAM,CACG;AACX,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC7C,qBAAqB,EACrB,MAAM,CACG;AACX,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC/C,0BAA0B,EAC1B,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAChD,2BAA2B,EAC3B,MAAM,CACI;QAEZ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE,MAAM,CAAC;IACnE;AACiB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;IACzC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAE1B;AACA,IAAA,MAAM;AACN,IAAA,UAAU;IACV,aAAa,GAAA;QACX,IAAI,GAAG,GAAW,EAAE;QACpB,IAAI,gBAAgB,IAAI,YAAY,EAAE;AACpC,YAAA,MAAM,IAAI,GAAQ,IAAI,CAAC,KAAK,CAC1B,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;YACF,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAoB;AACtD,YAAA,IAAI,CAAC,OAAO,GAAI,IAAI,EAAE,KAAK;AAE3B,YAAA,IAAG,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,EAAC;gBAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;gBACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;AACpC,gBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAA;AACD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;YAClC,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CACnC,6BAA6B,EAC7B,CAAA,eAAA,CAAiB,CAClB;YACD,GAAG,GAAG,UAAU;;AAEjB,QAAA;AACH,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG;QACnB,IAAI,CAAC,UAAU,GAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,EAAE;YACpC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,GAAG,IAAI,sBAAsB;gBACzD,GAAG,IAAI,gBAAgB,IAAK,GAAG,KAAK,4BAA4B,IAAI,GAAG,KAAK,8BAA8B;AAC1G,gBAAA,GAAG,IAAI,gCAAgC;AACvC,gBAAA,GAAG,IAAI,iCAAiC,IAAI,GAAG,KAAK,sBAAsB,IAAI,GAAG,IAAI,iCAAiC,IAAK,GAAG,IAAI,oCAAoC,IAAI,GAAG,KAAK,oBAAoB,EAAG;gBACvM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,YAAA;AAAO,iBAAA,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE;gBAChC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,YAAA;AAAM,iBAAA,IACL,GAAG,IAAI,CAAA,oCAAA,EAAuC,IAAI,CAAC,OAAO,CAAA,CAAE,IAAK,GAAG,IAAI,CAAA,oCAAA,EAAuC,IAAI,CAAC,OAAO,CAAA,WAAA,CAAa;AACxI,gBAAA,GAAG,IAAI,CAAA,gCAAA,EAAmC,IAAI,CAAC,OAAO,CAAA,CAAE,IAAI,GAAG,IAAI,CAAA,oCAAA,EAAuC,IAAI,CAAC,OAAO,CAAA,kBAAA,CAAoB;AAC1I,gBAAA,GAAG,IAAI,CAAA,6BAAA,EAAgC,IAAI,CAAC,OAAO,CAAA,CAAE;AACrD,gBAAA,GAAG,IAAI,CAAA,+BAAA,EAAkC,IAAI,CAAC,OAAO,CAAA,CAAE;;AAEvD,gBAAA,GAAG,IAAI,CAAA,2BAAA,EAA8B,IAAI,CAAC,OAAO,EAAE,EACnD;gBACA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,YAAA;AAAK,iBAAA,IAAI,GAAG,IAAI,iBAAiB,IAAI,GAAG,IAAI,2BAA2B,EAAE;gBACxE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACtG,YAAA;AACI,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,KAAK,eAAe,EAAC;gBACjC,IAAG,GAAG,IAAI,CAAA,uCAAA,EAA0C,IAAI,CAAC,OAAO,CAAA,CAAE,IAAG,GAAG,IAAI,CAAA,8BAAA,CAAgC,EAAC;oBAC3G,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAChG,gBAAA;AACI,qBAAA;oBACL,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAChG,gBAAA;AACF,YAAA;AAAK,iBAAA,IAAI,GAAG,IAAI,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,KAAG,eAAe,IAAI,GAAG,CAAC,CAAC,CAAC,KAAG;AAC5D,mBAAA,GAAG,IAAI,gBAAgB,IAAI,GAAG,IAAI,qBAAqB,KAAK,GAAG,CAAC,CAAC,CAAC,KAAI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACpI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAClG,YAAA;iBAAM,IAAG,GAAG,IAAI,qBAAqB,EAAC;gBACrC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,CAAC;AAChG,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,GAAG,IAAI,yBAAyB,EAAE;gBACtF,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAClG,YAAA;AAAK,iBAAA,IAAG,GAAG,IAAI,qCAAqC,IAAI,GAAG,IAAI,oCAAoC,EAAC;gBACjG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,CAAC;AAClG,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,KAAK,kBAAkB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAC;gBAC5D,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAClG,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,KAAK,kBAAkB,EAAC;gBACpC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,CAAC;AAClG,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,EAAC;AACzB,gBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,aAAa,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,EAAE;oBAC7K,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,gBAAA;;;;AAII,qBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC;oBAChD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAClG,gBAAA;AACI,qBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;oBAC3G,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAChG,gBAAA;AAAQ,qBAAA;oBACT,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAC9F,gBAAA;AACF,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,EAAC;AAC9B,gBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,KAAK,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;oBAC5D,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,gBAAA;AAAK,qBAAA;AACJ,oBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE;wBACxD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAC9F,oBAAA;AACI,yBAAA;wBACH,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAChG,oBAAA;AACF,gBAAA;AACF,YAAA;AAAK,iBAAA;AACJ,gBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;oBACpB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,gBAAA;AACI,qBAAA;oBACL,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAC9F,gBAAA;AACF,YAAA;AACF,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,EAAG;gBACzB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,YAAA;AAAM,iBAAA,IACL,GAAG,IAAI,CAAA,oCAAA,EAAuC,IAAI,CAAC,OAAO,CAAA,CAAE,IAAK,GAAG,IAAI,CAAA,oCAAA,EAAuC,IAAI,CAAC,OAAO,CAAA,WAAA,CAAa;AACxI,gBAAA,GAAG,IAAI,CAAA,gCAAA,EAAmC,IAAI,CAAC,OAAO,CAAA,CAAE,IAAI,GAAG,IAAI,CAAA,oCAAA,EAAuC,IAAI,CAAC,OAAO,CAAA,kBAAA,CAAoB;AAC1I,gBAAA,GAAG,IAAI,CAAA,6BAAA,EAAgC,IAAI,CAAC,OAAO,CAAA,CAAE;AACrD,gBAAA,GAAG,IAAI,CAAA,+BAAA,EAAkC,IAAI,CAAC,OAAO,CAAA,CAAE;;AAEvD,gBAAA,GAAG,IAAI,CAAA,2BAAA,EAA8B,IAAI,CAAC,OAAO,EAAE,EACnD;gBACA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,KAAK,eAAe,EAAC;gBACnC,IAAG,GAAG,IAAI,CAAA,uCAAA,EAA0C,IAAI,CAAC,OAAO,CAAA,CAAE,IAAG,GAAG,IAAI,CAAA,8BAAA,CAAgC,EAAC;oBAC3G,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAChG,gBAAA;AACI,qBAAA;oBACL,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAChG,gBAAA;AACF,YAAA;iBAAM,IAAI,GAAG,IAAI,UAAU,IAAI,GAAG,IAAI,sBAAsB,IAAI,GAAG,IAAI,qBAAqB;AAC3F,gBAAA,GAAG,IAAI,gBAAgB,IAAK,GAAG,KAAK,4BAA4B,IAAI,GAAG,KAAK,8BAA8B,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU;AAClI,gBAAA,GAAG,IAAI,gCAAgC;gBACvC,GAAG,IAAI,iCAAiC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAG,eAAe,IAAI,GAAG,CAAC,CAAC,CAAC,KAAG,kBAAkB,IAAK,GAAG,IAAI,iCAAiC,IAAK,GAAG,IAAI;mBACxJ,GAAG,IAAI,qBAAqB,IAAI,GAAG,KAAK,uBAAuB,IAAI,GAAG,KAAI,uCAAuC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAG,eAAe,IAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC1K,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAClG,YAAA;iBAAK,IAAG,GAAG,IAAI,qBAAqB,EAAC;gBACpC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,CAAC;AAChG,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,GAAG,IAAI,yBAAyB,EAAC;gBACrF,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAClG,YAAA;AAAK,iBAAA,IAAG,GAAG,IAAI,qCAAqC,IAAI,GAAG,IAAI,oCAAoC,EAAC;gBAChG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACpG,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,KAAK,kBAAkB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAC;gBAC5D,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAClG,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,KAAK,kBAAkB,EAAC;gBACpC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,CAAC;AAClG,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,EAAC;AACzB,gBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,aAAa,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,EAAE;oBAC9K,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,gBAAA;;;;AAII,qBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC;oBAChD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAClG,gBAAA;AACI,qBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;oBAC3G,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAChG,gBAAA;AAAQ,qBAAA;oBACT,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAC9F,gBAAA;AACF,YAAA;AAAM,iBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,EAAC;AAC9B,gBAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,KAAK,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;oBAC5D,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAChG,gBAAA;AACF,YAAA;AAAK,iBAAA;AACJ,gBAAA,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;oBACrB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AAC7F,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC;AACjG,gBAAA;AACF,YAAA;AACF,QAAA;QACD,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;QAC1D,QACE,IAAI,CAAC,mBAAmB;AACxB,YAAA,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC;IAEhE;IAEA,eAAe,CACb,YAAqB,EACrB,WAAoB,EACpB,UAAmB,EACnB,WAAoB,EACpB,sBAA+B,EAC/B,iBAAyB,EACzB,cAAsB,EACtB,qBAA6B,EAC7B,YAAoB,EACpB,gBAAwB,EACxB,aAAqB,EACrB,qBAA6B,EAAA;AAE7B,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,sBAAsB,GAAG,sBAAsB;AACpD,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC1C,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,qBAAqB,GAAG,qBAAqB;AAClD,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AACxC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AACpC,QAAA,IAAI,CAAC,qBAAqB,GAAG,qBAAqB;IAClD;AAEA,IAAA,WAAW,CAAC,MAAU,EAAA;AACpB,QAAA,IAAI,GAAG,GAAE;YACL,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAE;SAC9B;AACD,QAAA,IAAG,MAAM,EAAC;YACR,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACtC,gBAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,oBAAA,YAAY,CAAC,OAAO,CAClB,iBAAiB,EACjB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,IAAI,EAAE,CAAC,CAC7C;gBACH;AACD,aAAA,CAAC;AACH,QAAA;IACH;wGA9Wa,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,6IChB7B,ogHA8DA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,wBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FD9Ca,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,ogHAAA,EAAA;4LAQd,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;;;MEXU,oBAAoB,CAAA;AAUX,IAAA,MAAA;IATZ,WAAW,GAAmB,EAAE;IAC/B,iBAAiB,GAAW,EAAE;AAC9B,IAAA,aAAa;IACb,UAAU,GAAW,EAAE;IACvB,WAAW,GAAW,EAAE;AACjC,IAAA,iBAAiB;AAEjB,IAAA,UAAU;AAEV,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAA,CAAA,MAAM,GAAN,MAAM;IAAkB;IAE5C,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,UAAU,EAAE;AAClD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,aAAA,YAAY;AACZ,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM;AACjC,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;IACrC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;wGAxBW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,kMCVjC,66CA0BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA9B,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+B,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDhBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,66CAAA,EAAA;kFAMnB,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;;;MEJU,oBAAoB,CAAA;AASrB,IAAA,WAAA;AACD,IAAA,EAAA;AAA+B,IAAA,MAAA;AATxC,IAAA,SAAS;AACT,IAAA,qBAAqB;AACrB,IAAA,sBAAsB;AACtB,IAAA,UAAU;AACV,IAAA,aAAa;AACb,IAAA,SAAS;IACT,WAAW,GAAY,IAAI;AAC3B,IAAA,WAAA,CACU,WAAwB,EACzB,EAAsB,EAAS,MAAa,EAAA;QAD3C,IAAA,CAAA,WAAW,GAAX,WAAW;QACZ,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,MAAM,GAAN,MAAM;QAE5C,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACnE,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,qBAAqB,GAAG,CAAA,EAAG,GAAG,CAAC,UAAU,CAAA,CAAA,EAAI,GAAG,CAAC,YAAY,CAAA,CAAE;AACpE,gBAAA,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC,sBAAsB;AACzD,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;AACiB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;IACzC,gBAAgB,GAAQ,IAAI;IAC5B,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,WAAW,IAAI,YAAY,EAAE;AAC/B,YAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAC9B,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAC1C;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AAC1B,QAAA;AACD,QAAA,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,YAAA,IAAI,EAAE,CAAC,IAAS,KAAI;gBAClB,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,IAAI,CAAC,aAAa;AAE/C,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM;AAEvE,gBAAA,IAAI,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,gBAAgB,EAAE;AAClD,oBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;AACjC,oBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC7B,gBAAA;YACH;AACD,SAAA,CAAC;;;;;;;;;;;;;;IAiBJ;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAQ,KAAI;YACzG,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,OAAO,IAAI,cAAc;AACjD,QAAA,CAAC,CAAC;IACJ;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC;aACF,uBAAuB,CAAC,GAAG;aAC3B,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAQ,KAAI;AAC3E,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;;gBAE3B,IAAI,UAAU,GAAG,kBAAkB,CACjCC,QAAM,CAAC,GAAG,CAAC,OAAO,CAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EACxB,gBAAgB,CACjB,CAAC,QAAQ,EAAE,CACb;AACD,gBAAA,IAAI,WAAW,GAAG,CAAA,OAAA,EAAU,UAAU,EAAE;AACxC,gBAAA,IAAI,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,sBAAsB,aAAa;AACzD,gBAAA,IAAI,GAAG,GAAG,CAAA,EAAG,OAAO,CAAA,EAAG,WAAW,EAAE;;;gBAGpC,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;;;;;;AAOxC,YAAA;AAAM,iBAAA;;AAEL,gBAAA,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC;;AAE7D,YAAA;AACH,QAAA,CAAC,CAAC;IAEN;AACA,IAAA,aAAa,CAAC,QAAa,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ;AACtC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE;AACrB,oBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI;AAC1B,oBAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AACxF,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC;YACpD;AACD,SAAA,CAAC;IACN;wGAlHW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlB,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wDCXjC,049CAmtBA,EAAA,MAAA,EAAA,CAAA,wyBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FDxsBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,049CAAA,EAAA,MAAA,EAAA,CAAA,wyBAAA,CAAA,EAAA;;;MEIjB,sBAAsB,CAAA;AAiBb,IAAA,IAAA;AAA2B,IAAA,MAAA;AAAuB,IAAA,MAAA;AAA8B,IAAA,QAAA;AAC1F,IAAA,MAAA;AAAuB,IAAA,EAAA;AAAuB,IAAA,EAAA;IAjBxD,eAAe,GAAY,KAAK;AAChC,IAAA,SAAS;IACT,OAAO,GAAG,KAAK;IACP,WAAW,GAAmB,EAAE;IAC/B,iBAAiB,GAAW,EAAE;AAC9B,IAAA,aAAa;IACb,UAAU,GAAW,EAAE;IACvB,WAAW,GAAW,EAAE;AACjC,IAAA,iBAAiB;IACR,eAAe,GAAM,EAAE;AAChC,IAAA,UAAU;IACV,iBAAiB,GAAY,IAAI;AAChB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;IACzC,QAAQ,GAAW,KAAK;AACxB,IAAA,eAAe;AACf,IAAA,gBAAgB;AAChB,IAAA,WAAA,CAAoB,IAAiB,EAAU,MAAc,EAAS,MAAqB,EAAS,QAAwB,EAClH,MAAc,EAAS,EAAe,EAAQ,EAAqB,EAAA;QADzD,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAuB,IAAA,CAAA,MAAM,GAAN,MAAM;QAAiB,IAAA,CAAA,MAAM,GAAN,MAAM;QAAwB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAClG,IAAA,CAAA,MAAM,GAAN,MAAM;QAAiB,IAAA,CAAA,EAAE,GAAF,EAAE;QAAqB,IAAA,CAAA,EAAE,GAAF,EAAE;QAC3D,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAChE,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB;AAC7C,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;YACnC,IAAI,KAAK,YAAY,eAAe,EAAE;;AAEpC,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC7B,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;;IAEA,eAAe,GAAY,KAAK;AAEhC,IAAA,iBAAiB,CAAC,WAAoB,EAAA;;AAEpC,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW;IACpC;IACA,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,UAAU,EAAE;AAClD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;aAC9B,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM;AACjC,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;QACnC,IAAI,WAAW,IAAI,YAAY,EAAE;AAC/B,YAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAC9B,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAC1C;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AAC1B,QAAA;QACD,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,eAAe,GAAE,CAAC,IAAI,CAAC,eAAe;IAC7C;IACA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC;;;;IAIpC;IACA,SAAS,GAAA;AACP,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;IAC1B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE;oBAC5B,IAAI,CAAC,kBAAkB,EAAE;AAC1B,gBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC;oBACjE,IAAI,CAAC,kBAAkB,EAAE;AAC1B,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC;;gBAEvC,IAAI,CAAC,kBAAkB,EAAE;AACzB,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,8DAA8D,CAAC;YACvF;AACD,SAAA,CAAC;IACJ;IACA,YAAY,GAAkB,IAAI;IAC3B,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACzB,QAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC9C,QAAA,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAChD,YAAY,CAAC,KAAK,EAAE;QACrB,IAAK,MAAc,CAAC,UAAU,EAAE;YAC7B,IAAI;AACD,gBAAA,MAAc,CAAC,UAAU,CAAC,KAAK,EAAE;AACnC,YAAA;AAAC,YAAA,OAAO,GAAG,EAAE;AACZ,gBAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC;AAC1C,YAAA;AACF,QAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;IACvC;IAEE,WAAW,GAAA;;AAEP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC5B;IAED,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,YAAA,IAAI,EAAE,CAAC,GAAO,KAAI;AAChB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI;;;AAGhC,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAO,KAAI;AACjB,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAClB,CAAC;AACF,SAAA,CAAC;IACH;wGA3HY,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAU,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,wOCXnC,2wKAqEM,EAAA,MAAA,EAAA,CAAA,ijBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FD1DO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,2wKAAA,EAAA,MAAA,EAAA,CAAA,ijBAAA,CAAA,EAAA;0OASrB,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;;;MEXU,gBAAgB,CAAA;AA8BP,IAAA,MAAA;IA7BZ,WAAW,GAAmB,EAAE;AACxC,IAAA,SAAS;;AAET,IAAA,iBAAiB;AACjB,IAAA,6BAA6B;AAC7B,IAAA,uCAAuC;AACvC,IAAA,uCAAuC;AACvC,IAAA,yCAAyC;AACzC,IAAA,sCAAsC;AACtC,IAAA,sCAAsC;AACtC,IAAA,wCAAwC;AACxC,IAAA,uCAAuC;AACvC,IAAA,uCAAuC;AACvC,IAAA,sCAAsC;AACtC,IAAA,sCAAsC;AAEtC,IAAA,2BAA2B;AAC3B,IAAA,4BAA4B;AAC5B,IAAA,2BAA2B;AAE3B,IAAA,wBAAwB;;AAGxB,IAAA,gCAAgC;AAChC,IAAA,iBAAiB;AACjB,IAAA,aAAa;AACb,IAAA,UAAU;AACV,IAAA,WAAW;AAEX,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAA,CAAA,MAAM,GAAN,MAAM;IAAkB;IAE5C,QAAQ,GAAA;AACN,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,aAAA,YAAY;AACZ,aAAA,SAAS,CAAC,CAAC,MAAe,KAAI;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;AAEA,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAY;AACtF,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B;AACD,QAAA;AAED,QAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACtD,mCAAmC,EACnC,MAAM,CACI;AAEZ,QAAA,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAChE,8CAA8C,EAC9C,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,uCAAuC,EAAE;AAChD,YAAA,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAChE,8CAA8C,EAC9C,MAAM,CACI;;YAEV,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,8BAA8B,EAAE,IAAI,CAAC;;AAGlE,YAAA,IAAI,CAAC,yCAAyC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAClE,gDAAgD,EAChD,MAAM,CACI;YACZ,IAAI,IAAI,CAAC,yCAAyC,EAAE;gBAClD,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,+BAA+B,EAAE,MAAM,CAAC;AACpE,YAAA;AACF,QAAA;AAED,QAAA,IAAI,CAAC,sCAAsC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC/D,6CAA6C,EAC7C,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,sCAAsC,EAAE;AAC/C,YAAA,IAAI,CAAC,sCAAsC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC/D,6CAA6C,EAC7C,MAAM,CACI;;YAEV,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,qCAAqC,EAAE,IAAI,CAAC;;AAGzE,YAAA,IAAI,CAAC,wCAAwC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACjE,+CAA+C,EAC/C,MAAM,CACI;YACZ,IAAI,IAAI,CAAC,wCAAwC,EAAE;gBACjD,QAAQ,CAAC,IAAI,CAAC,YAAY,CACxB,sCAAsC,EACtC,MAAM,CACP;AACF,YAAA;AACF,QAAA;AAED,QAAA,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAChE,8CAA8C,EAC9C,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,uCAAuC,EAAE;AAChD,YAAA,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAChE,8CAA8C,EAC9C,MAAM,CACI;YACZ,IAAI,IAAI,CAAC,uCAAuC,EAAE;gBAChD,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,8BAA8B,EAAE,IAAI,CAAC;AACjE,YAAA;AACF,QAAA;AAED,QAAA,IAAI,CAAC,sCAAsC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC/D,6CAA6C,EAC7C,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,sCAAsC,EAAE;AAC/C,YAAA,IAAI,CAAC,sCAAsC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC/D,6CAA6C,EAC7C,MAAM,CACI;YACZ,IAAI,IAAI,CAAC,sCAAsC,EAAE;gBAC/C,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,qCAAqC,EAAE,IAAI,CAAC;AACxE,YAAA;AACF,QAAA;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE;AACnD,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACpD,iCAAiC,EACjC,MAAM,CACI;YACZ,IAAI,IAAI,CAAC,2BAA2B,EAAE;gBACpC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,iCAAiC,EAAE,MAAM,CAAC;AACtE,YAAA;AAED,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACrD,kCAAkC,EAClC,MAAM,CACI;YACZ,IAAI,IAAI,CAAC,4BAA4B,EAAE;gBACrC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,kCAAkC,EAAE,MAAM,CAAC;AACvE,YAAA;AAED,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACpD,iCAAiC,EACjC,MAAM,CACI;YACZ,IAAI,IAAI,CAAC,2BAA2B,EAAE;gBACpC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,iCAAiC,EAAE,MAAM,CAAC;AACtE,YAAA;AACF,QAAA;AAED,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACjD,6BAA6B,EAC7B,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,MAAM,CAAC;AAC1D,QAAA;;AAGD,QAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACzD,8CAA8C,EAC9C,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC5B,cAAE;cACA,EAAE;AACN,QAAA,IAAI,CAAC,aAAa;AAChB,YAAA,IAAI,CAAC,uCAAuC;gBAC5C,IAAI,CAAC,uCAAuC;QAC9C,IAAI,IAAI,CAAC,uCAAuC,EAAE;AAChD,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,QAAQ;AAC5B,QAAA;QAED,IAAI,IAAI,CAAC,uCAAuC,EAAE;AAChD,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACtB,QAAA;QAED,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE,MAAM,CAAC;AACjE,QAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,CACxB,2BAA2B,EAC3B,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAC9C;IACH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;wGA/LW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,mDCV7B,goBAgBA,EAAA,MAAA,EAAA,CAAA,4DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuB,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDNa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,goBAAA,EAAA,MAAA,EAAA,CAAA,4DAAA,CAAA,EAAA;;;MESZ,wBAAwB,CAAA;AAMf,IAAA,MAAA;IALE,KAAK,GAAG,cAAc;IACzB,EAAE,GAAG,WAAW;IACI,eAAe,GAAG,MAAM;IAEvD,WAAW,GAAmB,EAAE;AACxC,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;IAAW;IAErC,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAChE,YAAA,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,YAAY,gBAAgB,EAAE;gBACvE,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,kBAAkB,EAAE;gBACzB,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,SAAS,EAAE;gBAClB,CAAC,EAAE,CAAC,CAAC;AACN,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC3C;IAEA,kBAAkB,GAAA;QAChB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CACjD,CAAA,8BAAA,CAAgC,CACjC;AACD,QAAA,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CACxC,YAAY,CAAC,CAAC,CAAgB,CAC/B;AACD,YAAA,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,MAAM,EAAE;AAChB,YAAA;AACF,QAAA;IACH;IAEA,SAAS,GAAA;QACP,kBAAkB,CAAC,KAAK,EAAE;IAC5B;IAEA,uBAAuB,GAAA;QACrB,UAAU,CAAC,MAAK;;YAEd,aAAa,CAAC,gBAAgB,EAAE;YAChC,eAAe,CAAC,gBAAgB,EAAE;YAClC,UAAU,CAAC,MAAK;gBACd,eAAe,CAAC,gBAAgB,EAAE;gBAClC,eAAe,CAAC,gBAAgB,EAAE;;YAEpC,CAAC,EAAE,EAAE,CAAC;QACR,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;wGA1DW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApC,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,0KCfrC,kFACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDca,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,kFAAA,EAAA;2EAIJ,KAAK,EAAA,CAAA;sBAA1B,WAAW;uBAAC,OAAO;gBACD,EAAE,EAAA,CAAA;sBAApB,WAAW;uBAAC,IAAI;gBACsB,eAAe,EAAA,CAAA;sBAArD,WAAW;uBAAC,wBAAwB;;;MEE1B,eAAe,CAAA;AAuDhB,IAAA,WAAA;AACA,IAAA,MAAA;AACA,IAAA,MAAA;AACA,IAAA,cAAA;AACA,IAAA,WAAA;AACA,IAAA,YAAA;AACA,IAAA,EAAA;IA5DF,WAAW,GAAmB,EAAE;;;AAIxC,IAAA,uBAAuB;;IAEvB,qBAAqB,GAAW,EAAE;AAClC,IAAA,gBAAgB;AAChB,IAAA,6BAA6B;IAC7B,gCAAgC,GAAmC,EAAE;AACrE,IAAA,+BAA+B;IAC/B,kCAAkC,GAAmC,EAAE;;AAEvE,IAAA,iBAAiB;AACjB,IAAA,gBAAgB;IAChB,kBAAkB,GAAW,EAAE;AAC/B,IAAA,qBAAqB;IACrB,wBAAwB,GAAmC,EAAE;AAC7D,IAAA,uBAAuB;IACvB,0BAA0B,GAAmC,EAAE;AAC/D,IAAA,yBAAyB;IACzB,4BAA4B,GAAmC,EAAE;;AAGjE,IAAA,kBAAkB;AAClB,IAAA,wBAAwB;AACxB,IAAA,iBAAiB;AACjB,IAAA,wBAAwB;;AAExB,IAAA,sBAAsB;AACtB,IAAA,8BAA8B;IAC9B,iCAAiC,GAAmC,EAAE;AACtE,IAAA,iBAAiB;AACjB,IAAA,8BAA8B;IAC9B,iCAAiC,GAAmC,EAAE;AAC5B,IAAA,SAAS;;AAEnD,IAAA,sBAAsB;;AAEtB,IAAA,gBAAgB;IAChB,iBAAiB,GAAW,EAAE;IAC9B,kBAAkB,GAAW,EAAE;IAC/B,0BAA0B,GAAW,EAAE;AACvC,IAAA,qBAAqB;AACrB,IAAA,oBAAoB;;AAGpB,IAAA,gBAAgB;AAEwB,IAAA,OAAO;AACA,IAAA,cAAc;AACpB,IAAA,QAAQ;AAEjD,IAAA,WAAA,CACU,WAA8B,EAC9B,MAAqB,EACrB,MAAc,EACd,cAA8B,EAC9B,WAAuB,EACvB,YAAyB,EACzB,EAAqB,EAAA;QANrB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,EAAE,GAAF,EAAE;;QAIV,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACrC,IAAI,KAAK,YAAY,aAAa,EAAE;gBAClC,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK;AAEpE,gBAAA,MAAM,cAAc,GAClB,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;AACrD,oBAAA,IAAI,CAAC,MAAM,CAAC,iCAAiC,EAAE;AAEjD,gBAAA,IAAI,iBAAiB,KAAK,cAAc,IAAI,CAAC,iBAAiB,EAAE;oBAC9D,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC;AACzD,oBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC;AAC7C,gBAAA;AACF,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,aAAA,YAAY;AACZ,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;AAEA,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACzC,mBAAmB,EACnB,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,uBAAuB;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC;AAClD,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC9C,0BAA0B,EAC1B,MAAM,CACG;AACX,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACzC,oBAAoB,EACpB,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACzC,oBAAoB,EACpB,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC1C,qBAAqB,EACrB,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC/C,2BAA2B,EAC3B,MAAM,CACI;AACZ,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC1C,qBAAqB,EACrB,MAAM,CACI;QACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC;AACnE,QAAA,IAAI,CAAC,wBAAwB;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;AACrD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC3C,uBAAuB,EACvB,MAAM,CACc;AACtB,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACjD,4BAA4B,EAC5B,MAAM,CACG;;QAEX,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC1B,QAAA;;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3B,QAAA;;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC1B,QAAA;;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3B,QAAA;IACH;AAEA,IAAA,aAAa,CAAC,MAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC/C,2BAA2B,EAC3B,MAAM,CACG;AAEX,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACvD,oCAAoC,EACpC,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACvC,YAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC1D,uCAAuC,EACvC,MAAM,CAC2B;AACpC,QAAA;AAED,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACvD,oCAAoC,EACpC,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACvC,YAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC1D,uCAAuC,EACvC,MAAM,CAC2B;AACpC,QAAA;QAED,UAAU,CAAC,MAAK;YACd,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;;AAEhE,YAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,cAAc,EAAE;gBAC5C,MAAM,iBAAiB,GAAG;AACvB,qBAAA,iBAAiB;AACjB,qBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,gBAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,KAC7B,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CACrC;gBAED,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACvC,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,iCAAiC,EAAE;wBACxD,IAAI,IAAI,CAAC,iCAAiC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC9D,4BAAA,cAAc,CAAC,YAAY,CACzB,GAAG,EACH,IAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,CAC5C;AACF,wBAAA;AACF,oBAAA;AACF,gBAAA;gBAED,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACvC,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,iCAAiC,EAAE;wBACxD,IAAI,IAAI,CAAC,iCAAiC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC9D,4BAAA,cAAc,CAAC,YAAY,CACzB,GAAG,EACH,IAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,CAC5C;AACF,wBAAA;AACF,oBAAA;AACF,gBAAA;AACF,YAAA;QACH,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,YAAY,CAAC,MAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACtD,mCAAmC,EACnC,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,6BAA6B,EAAE;AACtC,YAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACzD,sCAAsC,EACtC,MAAM,CAC2B;AACpC,QAAA;AAED,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACxD,qCAAqC,EACrC,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,+BAA+B,EAAE;AACxC,YAAA,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC3D,wCAAwC,EACxC,MAAM,CAC2B;AACpC,QAAA;QAED,UAAU,CAAC,MAAK;YACd,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC;;AAE9D,YAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,aAAa,EAAE;gBAC1C,MAAM,gBAAgB,GAAG;AACtB,qBAAA,iBAAiB;AACjB,qBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,gBAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAEvE,IAAI,IAAI,CAAC,6BAA6B,EAAE;AACtC,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,gCAAgC,EAAE;wBACvD,IAAI,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC7D,4BAAA,aAAa,CAAC,YAAY,CACxB,GAAG,EACH,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAC3C;AACF,wBAAA;AACF,oBAAA;AACF,gBAAA;gBAED,IAAI,IAAI,CAAC,+BAA+B,EAAE;AACxC,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,kCAAkC,EAAE;wBACzD,IAAI,IAAI,CAAC,kCAAkC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC/D,4BAAA,aAAa,CAAC,YAAY,CACxB,GAAG,EACH,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,CAC7C;AACF,wBAAA;AACF,oBAAA;AACF,gBAAA;AACF,YAAA;QACH,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,YAAY,CAAC,MAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAW;AAClF,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAW;AACvF,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,2BAA2B,EAAE,MAAM,CAAW;AACpG,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,OAAO,EAAE;AACvC,YAAA,IAAI,CAAC,0BAA0B,IAAI,gBAAgB;AACpD,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,0BAA0B,IAAI,kBAAkB;AACtD,YAAA;AACF,QAAA;AAED,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAY;QAC/F,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE,MAAM,CAAC;AAC/D,QAAA;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAY;QACrF,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,iCAAiC,EAAE,MAAM,CAAC;AACtE,QAAA;IACH;AAEA,IAAA,aAAa,CAAC,MAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACzC,oBAAoB,EACpB,MAAM,CACuD;AAC/D,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC9C,0BAA0B,EAC1B,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACjD,6BAA6B,EAC7B,MAAM,CAC2B;AACpC,QAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAChD,4BAA4B,EAC5B,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACnD,+BAA+B,EAC/B,MAAM,CAC2B;AACpC,QAAA;AAED,QAAA,IAAI,CAAC,kBAAkB;YACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAY,IAAI,EAAE;AACpE,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAClD,8BAA8B,EAC9B,MAAM,CACI;QACZ,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAClC,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACrD,iCAAiC,EACjC,MAAM,CAC2B;AACnC,YAAA,IAAI,CAAC,kBAAkB,IAAI,uBAAuB;AACnD,QAAA;QAED,UAAU,CAAC,MAAK;YACd,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;;AAEhE,YAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,cAAc,EAAE;gBAC5C,MAAM,iBAAiB,GAAG;AACvB,qBAAA,iBAAiB;AACjB,qBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,gBAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,KAC7B,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CACrC;gBAED,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,wBAAwB,EAAE;wBAC/C,IAAI,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACrD,4BAAA,cAAc,CAAC,YAAY,CACzB,GAAG,EACH,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CACnC;AACF,wBAAA;AACF,oBAAA;AACF,gBAAA;gBAED,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,0BAA0B,EAAE;wBACjD,IAAI,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACvD,4BAAA,cAAc,CAAC,YAAY,CACzB,GAAG,EACH,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CACrC;AACF,wBAAA;AACF,oBAAA;AACF,gBAAA;gBAED,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAClC,oBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,4BAA4B,EAAE;wBACnD,IAAI,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACzD,4BAAA,cAAc,CAAC,YAAY,CACzB,GAAG,EACH,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CACvC;AACF,wBAAA;AACF,oBAAA;AACF,gBAAA;AACF,YAAA;QACH,CAAC,EAAE,CAAC,CAAC;IACP;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD;IACA,cAAc,GAAG,CAAC;;IAElB,cAAc,GAAG,KAAK;IAEtB,QAAQ,GAAA;AACN,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO;QAEpC,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,IAAI,aAAa,GAAG,GAAG,EAAE;;AAE9D,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,QAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;YAC5B,IAAI,CAAC,cAAc,GAAG,aAAa,GAAG,GAAG,CAAC;AAC3C,QAAA;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;IACrC;wGAnZW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA5B,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,yhBCpB5B,+pGAuEA,EAAA,MAAA,EAAA,CAAA,2OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2B,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,EAAA,oBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;4FDnDa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,YAAY,EAAA,QAAA,EAAA,+pGAAA,EAAA,MAAA,EAAA,CAAA,2OAAA,CAAA,EAAA;oPAwCoB,SAAS,EAAA,CAAA;sBAAlD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAcA,OAAO,EAAA,CAAA;sBAA9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACS,cAAc,EAAA,CAAA;sBAA5D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACJ,QAAQ,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAiVvC,QAAQ,EAAA,CAAA;sBADP,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE;;;MEjZtB,mBAAmB,CAAA;AAC9B,IAAA,WAAA,GAAA,EAAgB;IAEhB,QAAQ,GAAA;IACR;wGAJW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,sDCPhC,iwGAoFA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5C,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD7Ea,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,iwGAAA,EAAA;;;MEIf,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,QAAQ,KAAU;wGAHP,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,oDCP9B,usHAoGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArC,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD7Fa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,usHAAA,EAAA;;;MEIb,gBAAgB,CAAA;AAClB,IAAA,mBAAmB;AAE5B,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,QAAQ,KAAU;wGALP,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,2GCP7B,69EA8DA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArC,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDvDa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,69EAAA,EAAA;wDAKd,mBAAmB,EAAA,CAAA;sBAA3B;;;MEDU,aAAa,CAAA;AACf,IAAA,mBAAmB;AAE5B,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,QAAQ,KAAU;wGALP,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,wGCP1B,ihGA6EA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArC,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDtEa,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,ihGAAA,EAAA;wDAKX,mBAAmB,EAAA,CAAA;sBAA3B;;;AEGH,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,CAAC;MAOlE,eAAe,CAAA;AAEN,IAAA,MAAA;IADE,KAAK,GAAG,8BAA8B;AAC5D,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;IAAW;IAErC,QAAQ,GAAA;AACN,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7D;IAEA,WAAW,GAAA;AACT,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChE;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;QACnC,UAAU,CAAC,MAAK;YACd,eAAe,CAAC,SAAS,EAAE;YAC3B,kBAAkB,CAAC,SAAS,EAAE;YAC9B,eAAe,CAAC,SAAS,EAAE;YAC3B,eAAe,CAAC,SAAS,EAAE;YAC3B,aAAa,CAAC,SAAS,EAAE;YACzB,eAAe,CAAC,SAAS,EAAE;QAC7B,CAAC,EAAE,GAAG,CAAC;IACT;wGAtBW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArC,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,mGClB5B,ogBAeA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDGa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,YAAY,EAAA,QAAA,EAAA,ogBAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;2EAKA,KAAK,EAAA,CAAA;sBAA1B,WAAW;uBAAC,OAAO;;;MEDT,iBAAiB,CAAA;AAGR,IAAA,MAAA;AAAwB,IAAA,WAAA;IAFpC,WAAW,GAAmB,EAAE;IAExC,WAAA,CAAoB,MAAc,EAAU,WAA6B,EAAA;QAArD,IAAA,CAAA,MAAM,GAAN,MAAM;QAAkB,IAAA,CAAA,WAAW,GAAX,WAAW;IAAqB;IAE5E,QAAQ,GAAA;;;;;;;;IAQR;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC;;;;;;;;;IAS1C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM;IAC9C;wGA9BW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,oDClB9B,gvBAwBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDNa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,gvBAAA,EAAA;;;MEIb,iBAAiB,CAAA;AAGR,IAAA,MAAA;AAAwB,IAAA,WAAA;IAFpC,WAAW,GAAmB,EAAE;IAExC,WAAA,CAAoB,MAAc,EAAU,WAA6B,EAAA;QAArD,IAAA,CAAA,MAAM,GAAN,MAAM;QAAkB,IAAA,CAAA,WAAW,GAAX,WAAW;IAAqB;IAE5E,QAAQ,GAAA;AACN,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACrE,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;AACjC,gBAAA,IAAI,KAAK;AACP,sBAAE;sBACA,kCAAkC;AAC1C,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;QACnC,UAAU,CAAC,MAAK;YACd,eAAe,CAAC,gBAAgB,EAAE;YAClC,kBAAkB,CAAC,gBAAgB,EAAE;YACrC,eAAe,CAAC,gBAAgB,EAAE;YAClC,eAAe,CAAC,SAAS,EAAE;YAC3B,aAAa,CAAC,gBAAgB,EAAE;YAChC,eAAe,CAAC,gBAAgB,EAAE;QACpC,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM;IAC9C;wGA9BW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,oDClB9B,owBAwBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDNa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,owBAAA,EAAA;;;MEPb,mBAAmB,CAAA;IACrB,UAAU,GAAU,EAAE;AACtB,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,UAAU;IACV,cAAc,GAAY,KAAK;AAE/B,IAAA,QAAQ;AACR,IAAA,eAAe;AACd,IAAA,UAAU,GAAyB,IAAI,YAAY,EAAU;AAC7D,IAAA,cAAc,GAAyB,IAAI,YAAY,EAAU;AAC3E,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE;AAEhC,IAAA,YAAY,CAAC,IAAY,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,gBAAgB,CAAC,QAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;QAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzC;wGApBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,qVCPhC,smCAyBE,EAAA,MAAA,EAAA,CAAA,k+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,6BAAA,EAAA,uBAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDlBW,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,smCAAA,EAAA,MAAA,EAAA,CAAA,k+CAAA,CAAA,EAAA;8BAKjB,UAAU,EAAA,CAAA;sBAAlB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,cAAc,EAAA,CAAA;sBAAvB;;;METU,gBAAgB,CAAA;AAkBP,IAAA,UAAA;AACV,IAAA,QAAA;AACA,IAAA,MAAA;AACF,IAAA,EAAA;IApBC,UAAU,GAAU,EAAE;AACrB,IAAA,cAAc,GAAG,IAAI,YAAY,EAAE;IAC7C,YAAY,GAAY,KAAK;AAE7B,IAAA,YAAY;IACZ,cAAc,GAAa,EAAE;IAC7B,WAAW,GAAa,EAAE;IAC1B,mBAAmB,GAAU,EAAE;AAC/B,IAAA,WAAW;AACX,IAAA,YAAY;IACZ,QAAQ,GAAY,KAAK;IACzB,UAAU,GAAS,EAAE;IACrB,QAAQ,GAAW,KAAK;IACxB,aAAa,GAAS,EAAE;AACxB,IAAA,aAAa;AACb,IAAA,OAAO;AACP,IAAA,oBAAoB;AACpB,IAAA,WAAA,CAAoB,UAAsB,EAChC,QAAmB,EACnB,MAAc,EAChB,EAAoB,EAAA;QAHR,IAAA,CAAA,UAAU,GAAV,UAAU;QACpB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,MAAM,GAAN,MAAM;QACR,IAAA,CAAA,EAAE,GAAF,EAAE;IACP;AAGH,IAAA,OAAO,CAAE,KAAiB,EAAA;AACxB,QAAA,MACE,MAAM,GAAG,KAAK,CAAC,MAAqB;AACtC,QAAA,IAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;AACD,QAAA,IAAG,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAC;YACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,CAAM,KAAI;AAC1C,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACrB,YAAA,CAAC,CACF;AACF,QAAA;IACH;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAQ,KAAG;AAClC,YAAA,IAAI,YAAY,GAAG,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAQ,KAAI,IAAI,EAAE,OAAO,CAAC;AAClE,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7C,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClE;AAEA,IAAA,UAAU,CAAC,KAAS,EAAC,KAAS,EAAC,QAAY,EAAA;AACzC,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC3E;IAEA,YAAY,CAAC,KAAgB,EAAC,KAAS,EAAA;QACrC,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,CAAM,KAAI;YAC5C,IAAI,CAAC,KAAK,KAAK,EAAE;AACf,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACrB,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM;IAChE;AAGA,IAAA,YAAY,CAAC,CAAY,EAAA;QACvB,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;AAEA,IAAA,QAAQ,CAAC,KAAU,EAAE,KAAa,EAAC,KAAgB,EAAA;QACjD,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,CAAM,KAAI;YAC5C,IAAI,CAAC,KAAK,KAAK,EAAE;AACf,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACrB,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM;IAChE;AAEA,IAAA,cAAc,CAAC,KAAU,EAAE,KAAU,EAAE,KAAa,EAAE,QAAgB,EAAA;AACpE,QAAA,IAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAQ,KAAG;AAClC,gBAAA,IAAI,YAAY,GAAG,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAQ,KAAI,IAAI,EAAE,OAAO,CAAC;AAClE,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7C,YAAA,CAAC,CAAC;AACH,QAAA;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM;AACnD,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;QACjE,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AAClD,gBAAA,IAAI,CAAC,OAAO,GAAG,YAAY;AAC7B,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,YAAY,EAAE;AAChB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;AACzD,YAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACtC,YAAA;AACF,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtE,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAEzD,YAAA,IAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAC;gBACjD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAClD,YAAA;AACG,iBAAA;AACF,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAM,KAC9E,EAAE,EAAE,OAAO,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,CAC5C;AACA,YAAA;AAEF,QAAA;AAED,QAAA,MAAM,WAAW,GAAG,CAAA,SAAA,EAAY,KAAK,EAAE;QACvC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAqB;AACjF,QAAA,IAAI,gBAAgB,EAAE;YACpB,gBAAgB,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;AAC1E,QAAA;;AAGD,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,IAAY,KAAI;AACrC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChE,YAAA,MAAM,UAAU,GAAG,CAAA,MAAA,EAAS,IAAI,EAAE;YAClC,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAqB;AAC/E,YAAA,IAAI,eAAe,EAAE;AACnB,gBAAA,eAAe,CAAC,OAAO,GAAG,SAAS;AACpC,YAAA;AACH,QAAA,CAAC,CAAC;IAEJ;IACA,KAAK,GAAA;QACH,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAQ,KAAI;YAC5C,IAAG,IAAI,EAAE,MAAM,EAAC;AAAC,gBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAQ,KAAG,EAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAA,CAAC,CAAC;AACjE,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAQ,EAAC,KAAS,KAAG;YAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAE,EAAE;AACtF,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;IAC7C;IACA,UAAU,CAAC,KAAS,EAAC,CAAK,EAAA;AACxB,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC7C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAQ,KAAI;YACpE,IAAI,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAS,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAE;AAC5F,YAAA,IAAG,WAAW,EAAE;AACd,gBAAA,IAAI,CAAC,OAAO,GAAG,WAAW,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,GAAG,KAAK;AACnE,YAAA;AACI,iBAAA;AACH,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACrB,YAAA;AACD,YAAA,OAAO,IAAI,MAAM,CAAC,UAAU,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACnD,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,cAAc;QAC1C,IAAG,cAAc,CAAC,MAAM,EAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACtB,QAAA;AAAI,aAAA;AACH,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACrB,QAAA;AACD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAQ,EAAC,KAAS,KAAG;YAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAE,EAAE;AACtF,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;IAC7C;wGA1KW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,sMCR7B,wvMA2EM,EAAA,MAAA,EAAA,CAAA,0hEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDnEO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,wvMAAA,EAAA,MAAA,EAAA,CAAA,0hEAAA,CAAA,EAAA;4JAKd,UAAU,EAAA,CAAA;sBAAlB;gBACS,cAAc,EAAA,CAAA;sBAAvB;gBAuBD,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MExB/B,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,OAAA,EAAA,CAHlB,YAAY,EAAE,eAAe,aAC7B,eAAe,CAAA,EAAA,CAAA;AAEd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,OAAA,EAAA,CAHlB,YAAY,EAAE,eAAe,EAC7B,eAAe,CAAA,EAAA,CAAA;;4FAEd,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;oBACxC,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;ACPD;AACA;AAUA,MAAM,8BAA8B,GAAG,UAAU;MAKpC,kBAAkB,CAAA;AAIT,IAAA,SAAA;;IAFZ,OAAO,GAAQ,EAAE;AAEzB,IAAA,WAAA,CAAoB,SAA2B,EAAA;QAA3B,IAAA,CAAA,SAAS,GAAT,SAAS;;QAE3B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;;AAG/B,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;IACrC;IAEA,gBAAgB,CAAC,GAAG,IAAc,EAAA;AAChC,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC;AAEzB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;;;AAGzB,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;YAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAChD;AAEA,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,YAAY,CAAC,OAAO,CAAC,8BAA8B,EAAE,IAAI,CAAC;AAC3D,QAAA;IACH;AAEA;;AAEG;IACH,mBAAmB,GAAA;AACjB,QAAA,QACE,YAAY,CAAC,OAAO,CAAC,8BAA8B,CAAC;AACpD,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;IAEnC;wGA3CW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACfD;AACO,MAAM6C,QAAM,GAAG;AACpB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACJ,QAAA,UAAU,EAAE;AACV,YAAA,MAAM,EAAE,sBAAsB;AAC/B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,WAAW,EAAE,iBAAiB;AAC9B,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,WAAW;AACvB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,aAAa,EAAE,QAAQ;AACvB,gBAAA,UAAU,EAAE,yBAAyB;AACrC,gBAAA,aAAa,EAAE,SAAS;AACxB,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,WAAW,EAAE,MAAM;AACnB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,OAAO,EAAE,SAAS;AACnB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,IAAI,EAAE,yCAAyC;AAC/C,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,2CAA2C;AACjD,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,gBAAgB,EAAE,kBAAkB;AACpC,gBAAA,QAAQ,EAAE;AACX,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,sBAAsB;AAChC,gBAAA,UAAU,EAAE,oCAAoC;AAChD,gBAAA,kBAAkB,EAAE,2CAA2C;AAC/D,gBAAA,SAAS,EAAE,qCAAqC;AAChD,gBAAA,aAAa,EAAE,+BAA+B;AAC9C,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,aAAa,EAAE,oBAAoB;AACpC;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE;AACN,gBAAA,sBAAsB,EAAE,0BAA0B;AAClD,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,aAAa,EAAE;AAChB,aAAA;AACD,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,WAAW,EAAE,mDAAmD;AAChE,oBAAA,gBAAgB,EAAE,yBAAyB;AAC3C,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,qBAAqB,EAAE;AACrB,oBAAA,KAAK,EAAE,kBAAkB;AACzB,oBAAA,WAAW,EAAE,wDAAwD;AACrE,oBAAA,gBAAgB,EAAE,2BAA2B;AAC7C,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,gDAAgD;AACvD,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,cAAc,EAAE,2BAA2B;AAC3C,oBAAA,WAAW,EAAE;AACd;AACF;AACF;AACF;CACF;;;;;;;ACxGD;AACO,MAAMA,QAAM,GAAG;AACpB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACJ,QAAA,UAAU,EAAE;AACV,YAAA,MAAM,EAAE,QAAQ;AACjB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,UAAU,EAAE,OAAO;AACnB,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,aAAa,EAAE,MAAM;AACrB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,IAAI,EAAE,yCAAyC;AAC/C,gBAAA,OAAO,EAAE,2CAA2C;AACrD,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,2CAA2C;AACjD,gBAAA,OAAO,EAAE,+CAA+C;AACzD,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,gBAAgB,EAAE,kBAAkB;AACpC,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,sBAAsB;AAChC,gBAAA,UAAU,EAAE,oCAAoC;AAChD,gBAAA,kBAAkB,EAAE,2CAA2C;AAC/D,gBAAA,SAAS,EAAE,qCAAqC;AAChD,gBAAA,aAAa,EAAE,+BAA+B;AAC9C,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,aAAa,EAAE,oBAAoB;AACpC,aAAA;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE;AACN,gBAAA,sBAAsB,EAAE,0BAA0B;AAClD,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,aAAa,EAAE,eAAe;AAC/B,aAAA;AACD,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,cAAc,EAAE,MAAM;AACtB,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,WAAW,EAAE,mDAAmD;AAChE,oBAAA,gBAAgB,EAAE,yBAAyB;AAC3C,oBAAA,OAAO,EAAE,2BAA2B;AACrC,iBAAA;AACD,gBAAA,qBAAqB,EAAE;AACrB,oBAAA,KAAK,EAAE,kBAAkB;AACzB,oBAAA,WAAW,EAAE,wDAAwD;AACrE,oBAAA,gBAAgB,EAAE,2BAA2B;AAC7C,oBAAA,OAAO,EAAE,sCAAsC;AAChD,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,gDAAgD;AACvD,oBAAA,OAAO,EAAE,0DAA0D;AACpE,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,cAAc,EAAE,2BAA2B;AAC3C,oBAAA,WAAW,EAAE,2BAA2B;AACzC,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;CACF;;;;;;;ACxGD;AACO,MAAMA,QAAM,GAAG;AACpB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACJ,QAAA,UAAU,EAAE;AACV,YAAA,MAAM,EAAE,qBAAqB;AAC9B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,WAAW,EAAE,mCAAmC;AAChD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE;AACZ,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,aAAa,EAAE,YAAY;AAC3B,gBAAA,UAAU,EAAE,qBAAqB;AACjC,gBAAA,aAAa,EAAE,UAAU;AACzB,gBAAA,aAAa,EAAE,oBAAoB;AACnC,gBAAA,WAAW,EAAE,QAAQ;AACrB,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,OAAO,EAAE,SAAS;AACnB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,IAAI,EAAE,yCAAyC;AAC/C,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,2CAA2C;AACjD,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,gBAAgB,EAAE,kBAAkB;AACpC,gBAAA,QAAQ,EAAE;AACX,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,sBAAsB;AAChC,gBAAA,UAAU,EAAE,oCAAoC;AAChD,gBAAA,kBAAkB,EAAE,2CAA2C;AAC/D,gBAAA,SAAS,EAAE,qCAAqC;AAChD,gBAAA,aAAa,EAAE,+BAA+B;AAC9C,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,aAAa,EAAE,oBAAoB;AACpC;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE;AACN,gBAAA,sBAAsB,EAAE,0BAA0B;AAClD,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,aAAa,EAAE;AAChB,aAAA;AACD,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,WAAW,EAAE,mDAAmD;AAChE,oBAAA,gBAAgB,EAAE,yBAAyB;AAC3C,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,qBAAqB,EAAE;AACrB,oBAAA,KAAK,EAAE,kBAAkB;AACzB,oBAAA,WAAW,EAAE,wDAAwD;AACrE,oBAAA,gBAAgB,EAAE,2BAA2B;AAC7C,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,gDAAgD;AACvD,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,cAAc,EAAE,2BAA2B;AAC3C,oBAAA,WAAW,EAAE;AACd;AACF;AACF;AACF;CACF;;;;;;;ACxGD;AACO,MAAMA,QAAM,GAAG;AACpB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACJ,QAAA,UAAU,EAAE;AACV,YAAA,MAAM,EAAE,iBAAiB;AAC1B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,SAAS,EAAE;AACZ,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,EAAE,GAAG;AACP,gBAAA,aAAa,EAAE,QAAQ;AACvB,gBAAA,UAAU,EAAE,uBAAuB;AACnC,gBAAA,aAAa,EAAE,YAAY;AAC3B,gBAAA,aAAa,EAAE,4BAA4B;AAC3C,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,OAAO,EAAE,UAAU;AACpB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,MAAM,EAAE,aAAa;AACtB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,sBAAsB;AAC7B,gBAAA,IAAI,EAAE,8DAA8D;AACpE,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,2CAA2C;AACjD,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,gBAAgB,EAAE,kBAAkB;AACpC,gBAAA,QAAQ,EAAE;AACX,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,sBAAsB;AAChC,gBAAA,UAAU,EAAE,oCAAoC;AAChD,gBAAA,kBAAkB,EAAE,2CAA2C;AAC/D,gBAAA,SAAS,EAAE,qCAAqC;AAChD,gBAAA,aAAa,EAAE,+BAA+B;AAC9C,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,aAAa,EAAE,oBAAoB;AACpC;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE;AACN,gBAAA,sBAAsB,EAAE,0BAA0B;AAClD,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,aAAa,EAAE;AAChB,aAAA;AACD,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,WAAW,EAAE,mDAAmD;AAChE,oBAAA,gBAAgB,EAAE,yBAAyB;AAC3C,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,qBAAqB,EAAE;AACrB,oBAAA,KAAK,EAAE,kBAAkB;AACzB,oBAAA,WAAW,EAAE,wDAAwD;AACrE,oBAAA,gBAAgB,EAAE,2BAA2B;AAC7C,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,gDAAgD;AACvD,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,cAAc,EAAE,2BAA2B;AAC3C,oBAAA,WAAW,EAAE;AACd;AACF;AACF;AACF;CACF;;;;;;;ACxGD;AACO,MAAMA,QAAM,GAAG;AACpB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACJ,QAAA,UAAU,EAAE;AACV,YAAA,MAAM,EAAE,yBAAyB;AAClC,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,WAAW,EAAE,uBAAuB;AACpC,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,SAAS,EAAE,iBAAiB;AAC7B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,aAAa,EAAE,WAAW;AAC1B,gBAAA,UAAU,EAAE,yBAAyB;AACrC,gBAAA,aAAa,EAAE,UAAU;AACzB,gBAAA,aAAa,EAAE,qBAAqB;AACpC,gBAAA,WAAW,EAAE,MAAM;AACnB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,OAAO,EAAE,SAAS;AACnB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,IAAI,EAAE,yCAAyC;AAC/C,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,2CAA2C;AACjD,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,cAAc;AACxB,gBAAA,gBAAgB,EAAE,kBAAkB;AACpC,gBAAA,QAAQ,EAAE;AACX,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,QAAQ,EAAE,qBAAqB;AAC/B,gBAAA,UAAU,EAAE,oCAAoC;AAChD,gBAAA,kBAAkB,EAAE,2CAA2C;AAC/D,gBAAA,SAAS,EAAE,qCAAqC;AAChD,gBAAA,aAAa,EAAE,+BAA+B;AAC9C,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,aAAa,EAAE,oBAAoB;AACpC;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE;AACN,gBAAA,sBAAsB,EAAE,0CAA0C;AAClE,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,aAAa,EAAE;AAChB,aAAA;AACD,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,cAAc,EAAE,mBAAmB;AACnC,gBAAA,YAAY,EAAE,gBAAgB;AAC9B,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,KAAK,EAAE,uBAAuB;AAC9B,oBAAA,WAAW,EAAE,sDAAsD;AACnE,oBAAA,gBAAgB,EAAE,yCAAyC;AAC3D,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,qBAAqB,EAAE;AACrB,oBAAA,KAAK,EAAE,uBAAuB;AAC9B,oBAAA,WAAW,EAAE,qEAAqE;AAClF,oBAAA,gBAAgB,EAAE,4BAA4B;AAC9C,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,0DAA0D;AACjE,oBAAA,OAAO,EAAE;AACV,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,cAAc,EAAE,4BAA4B;AAC5C,oBAAA,WAAW,EAAE;AACd;AACF;AACF;AACF;CACF;;;;;;;ACxGD;AACO,MAAM,MAAM,GAAG;AACpB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACJ,QAAA,UAAU,EAAE;AACV,YAAA,MAAM,EAAE,kBAAkB;AAC3B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,SAAS,EAAE,SAAS;AACrB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,EAAE,KAAK;AACT,gBAAA,aAAa,EAAE,MAAM;AACrB,gBAAA,UAAU,EAAE,eAAe;AAC3B,gBAAA,aAAa,EAAE,QAAQ;AACvB,gBAAA,aAAa,EAAE,cAAc;AAC7B,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,IAAI,EAAE,yCAAyC;AAC/C,gBAAA,OAAO,EAAE,2CAA2C;AACrD,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,2CAA2C;AACjD,gBAAA,OAAO,EAAE,+CAA+C;AACzD,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,gBAAgB,EAAE,kBAAkB;AACpC,gBAAA,QAAQ,EAAE,OAAO;AAClB,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,sBAAsB;AAChC,gBAAA,UAAU,EAAE,oCAAoC;AAChD,gBAAA,kBAAkB,EAAE,2CAA2C;AAC/D,gBAAA,SAAS,EAAE,qCAAqC;AAChD,gBAAA,aAAa,EAAE,+BAA+B;AAC9C,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,gBAAgB,EAAE,uBAAuB;AACzC,gBAAA,aAAa,EAAE,oBAAoB;AACpC,aAAA;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE;AACN,gBAAA,sBAAsB,EAAE,0BAA0B;AAClD,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,aAAa,EAAE,eAAe;AAC/B,aAAA;AACD,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,cAAc,EAAE,gBAAgB;AAChC,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,WAAW,EAAE,mDAAmD;AAChE,oBAAA,gBAAgB,EAAE,yBAAyB;AAC3C,oBAAA,OAAO,EAAE,2BAA2B;AACrC,iBAAA;AACD,gBAAA,qBAAqB,EAAE;AACrB,oBAAA,KAAK,EAAE,kBAAkB;AACzB,oBAAA,WAAW,EAAE,wDAAwD;AACrE,oBAAA,gBAAgB,EAAE,2BAA2B;AAC7C,oBAAA,OAAO,EAAE,sCAAsC;AAChD,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,gDAAgD;AACvD,oBAAA,OAAO,EAAE,0DAA0D;AACpE,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,cAAc,EAAE,2BAA2B;AAC3C,oBAAA,WAAW,EAAE,2BAA2B;AACzC,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;CACF;;;;;;;ACpGM,MAAM,WAAW,GAAkB,CAAC,KAAK,EAAE,KAAK,KAAI;AACzD,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAE9B,IAAA,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAG;;;;;AAKzC,QAAA,OAAO,IAAI;IACb,CAAC,CAAC,CAAC;AACL,CAAC;;ACXM,MAAM,YAAY,GAAkB,CAAC,KAAK,EAAE,KAAK,KAAI;AAC1D,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE9B,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAE,GAAG,CAAC,CAAC,CAAC,KAAG;;;;;AAKjC,QAAA,OAAO,IAAI;IACb,CAAC,CAAC,CAAC;AACL,CAAC;;ACXM,MAAM,SAAS,GAAkB,CAAC,KAAK,EAAE,KAAK,KAAI;AACvD,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAE9B,IAAA,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAG;AACzC,QAAA,IAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,MAAM,EAAC;AAC3B,YAAA,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;AAClC,YAAA,OAAO,KAAK;AACb,QAAA;AACD,QAAA,OAAO,IAAI;IACb,CAAC,CAAC,CAAC;AACL,CAAC;;ACTD,MAAM,OAAO,GAAW;AACtB,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,YAAY,EAAE,MAAM,OAAO,0DAA8C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC;QAC7G,WAAW,EAAC,CAAC,SAAS;AACvB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,YAAY,EAAE,MAAM,OAAO,wDAA4C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC;AACjH,QAAA,WAAW,EAAC,CAAC,SAAS,EAAE,WAAW;AACpC,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,YAAY,EAAE,MAAM,OAAO,yDAA6C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;AAC3G,QAAA,WAAW,EAAC,CAAC,SAAS,EAAE,WAAW;AACpC,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,YAAY,EAAE,MAAM,OAAO,2DAA+C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AAChH,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,YAAY,EAAE,MAAM,OAAO,0DAA8C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC;AAC7G,QAAA,WAAW,EAAC,CAAC,SAAS,EAAE,YAAY;AACrC,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,YAAY,EAAE,MAAM,OAAO,iDAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AACvF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,YAAY,EAAE,MAAM,OAAO,wDAA6C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;AAC5G,KAAA;;;;;;AAMD,IAAA;AACE,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,YAAY,EAAE,MAAM,OAAO,2DAA+C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;QAC/G,WAAW,EAAC,CAAC,SAAS;AACvB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,SAAS,EAAE,MAAM;AAClB,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,UAAU,EAAE,WAAW;AACxB,KAAA;CACF;;MCvCY,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAlB,kBAAkB,EAAA,YAAA,EAAA,CARd,mBAAmB,EAAE,gBAAgB,EAAC,qBAAqB,EAAC,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAE7F,YAAY;YACZ,WAAW;AACX,YAAA,mBAAmB,aAEZ,mBAAmB,EAAC,gBAAgB,EAAC,qBAAqB,EAAC,oBAAoB,CAAA,EAAA,CAAA;AAE7E,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAN3B,YAAY;YACZ,WAAW;YACX,mBAAmB,CAAA,EAAA,CAAA;;4FAIV,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,EAAC,qBAAqB,EAAC,oBAAoB,CAAC;AAChG,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX;AACD,qBAAA;oBACD,OAAO,EAAC,CAAC,mBAAmB,EAAC,gBAAgB,EAAC,qBAAqB,EAAC,oBAAoB;AACzF,iBAAA;;;MCHY,2BAA2B,CAAA;AAWlB,IAAA,MAAA;AAAuB,IAAA,OAAA;AAAoC,IAAA,EAAA;IAVzD,KAAK,GACzB,gEAAgE;IAChC,UAAU,GAAG,MAAM;IAErD,WAAW,GAAG,QAAQ;AACL,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;IACzC,YAAY,GAAQ,EAAE;IACtB,OAAO,GAAW,IAAI;IACtB,MAAM,GAAW,KAAK;AAEtB,IAAA,WAAA,CAAoB,MAAa,EAAU,OAA2B,EAAS,EAAqB,EAAA;QAAhF,IAAA,CAAA,MAAM,GAAN,MAAM;QAAiB,IAAA,CAAA,OAAO,GAAP,OAAO;QAA6B,IAAA,CAAA,EAAE,GAAF,EAAE;IAAsB;IAEvG,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC1B;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,IAAI,GAAG;AACT,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE;SACT;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI;AAC/B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;oBACnB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;AAC1C,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACnB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YACpB;AACD,SAAA,CAAC;IACN;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,IAAQ,EAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO;QACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC;IACjD;wGAzDW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7C,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA8C,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,wJCfxC,ssVAwMA,EAAA,MAAA,EAAA,CAAA,yhEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA0C,oBAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA;;4FDzLa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,ssVAAA,EAAA,MAAA,EAAA,CAAA,yhEAAA,CAAA,EAAA;0IAKb,KAAK,EAAA,CAAA;sBAA1B,WAAW;uBAAC,OAAO;gBAEc,UAAU,EAAA,CAAA;sBAA3C,WAAW;uBAAC,mBAAmB;;;MENrB,oBAAoB,CAAA;AAkBZ,IAAA,IAAA;AAA0B,IAAA,EAAA;AAA+B,IAAA,EAAA;AAA6B,IAAA,MAAA;IAjBzG,KAAK,GAAG,KAAK;AACb,IAAA,YAAY,GAAG,CAAC,CAAc,KAAI;QAChC,MAAM,WAAW,GAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACrC,OAAO,WAAW,GAAG,cAAc,GAAG,KAAK;AAC/C,IAAA,CAAC;IACC,iBAAiB,GAAQ,EAAE;IAC3B,SAAS,GAAO,EAAE;AAClB,IAAA,cAAc;AACd,IAAA,eAAe,GAAQ;AACrB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,UAAU,EAAC,IAAI;AACf,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,IAAI;KAEX;AACF,IAAA,WAAA,CAAoB,IAAgB,EAAU,EAAqB,EAAU,EAAoB,EAAS,MAAa,EAAA;QAAnG,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,EAAE,GAAF,EAAE;QAA2B,IAAA,CAAA,MAAM,GAAN,MAAM;IAChH;IACC,QAAQ,GAAA;AACN,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;AACD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;QACvB,IAAG,aAAa,EAAE,MAAM,EAAC;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;AACnD,gBAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,oBAAA,IAAI,CAAC,EAAE;wBACL,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC9B,wBAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CACnC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAC/C;wBACD,IAAI,CAAC,iBAAiB,GAAG;AACvB,4BAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,EAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACvF,4BAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY;yBACpF;wBACD,IAAI,aAAa,EAAE,KAAK,EAAE;4BACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAC/B,gCAAA,IAAI,GAAG,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,EAAE;AACvC,oCAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AAC1B,gCAAA;AACH,4BAAA,CAAC,CAAC;4BACA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,aAAa,CAAC,KAAK;4BACjD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,aAAa,CAAC,MAAM;4BACnD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAI,aAAa,CAAC,UAAU;4BAC3D,IAAI,CAAC,eAAe,CAAC,OAAO,GAAI,aAAa,CAAC,OAAO;4BACrD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;4BAC9C,IAAI,CAAC,iBAAiB,GAAG;AACvB,gCAAA,SAAS,EAAC,IAAI,CAAC,KAAK,CAAE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACtF,gCAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;6BACpF;AAED,4BAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;4BACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,4BAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AAC1B,wBAAA;AAAM,6BAAA;4BACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BACvC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAI,IAAI,CAAC,cAAc,CAAC,OAAO;4BACzD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAI,aAAa,CAAC,MAAM;4BACnD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAI,aAAa,CAAC,UAAU;4BAC3D,IAAI,CAAC,eAAe,CAAC,OAAO,GAAI,aAAa,CAAC,OAAO;4BACrD,IAAI,CAAC,iBAAiB,GAAG;gCACvB,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;gCAC5C,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;6BAC3C;AACD,4BAAA,IAAI,QAAQ,GAAG;gCACb,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;gCAC5C,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;6BAC3C;AACD,4BAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;AACpC,4BAAA,YAAY,CAAC,OAAO,CAClB,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CACrC;4BACD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,4BAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,wBAAA;AACF,oBAAA;gBACH,CAAC;AACF,aAAA,CAAC;AACH,QAAA;IACD;AACA,IAAA,cAAc,CAAC,KAAS,EAAA;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO;QACxD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9E;wGA3FW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,uDCZjC,oQAGO,EAAA,MAAA,EAAA,CAAA,6SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2C,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDSM,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,oQAAA,EAAA,MAAA,EAAA,CAAA,6SAAA,CAAA,EAAA;;;AEmD7B,MAAMC,QAAM,GAAW;AACrB,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,QAAQ,EAAE,OAAO;AAClB,KAAA;CACF;MA6DY,YAAY,CAAA;wGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAzDrB,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,oBAAoB;YACpB,gBAAgB;YAChB,kBAAkB;YAClB,mBAAmB;;YAEnB,gBAAgB;YAChB,oBAAoB;YACpB,oBAAoB;YACpB,sBAAsB;YACtB,eAAe;YACf,mBAAmB;YACnB,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;YAChB,aAAa;YACb,iBAAiB;YACjB,wBAAwB;YACxB,uBAAuB;YACvB,mBAAmB;YACnB,yBAAyB;YACzB,oBAAoB;YACpB,2BAA2B;YAC3B,8BAA8B;YAC9B,sBAAsB;YACtB,mBAAmB;YACnB,wBAAwB;YACxB,oBAAoB;YACpB,wBAAwB;YACxB,mBAAmB;YACnB,sBAAsB;YACtB,8BAA8B,CAAA,EAAA,OAAA,EAAA,CAG9B,YAAY,EAAAjD,EAAA,CAAA,YAAA,EAEZ,iBAAiB;YACjB,eAAe;YACf,iBAAiB;YACjB,oBAAoB;;;;;;YAMpB,gBAAgB;YAChB,eAAe;;YAEf,kBAAkB;AAClB,YAAA,WAAW,sCAGH,YAAY,CAAA,EAAA,CAAA;AAEX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YApBrB,YAAY;AACZ,YAAA,YAAY,CAAC,QAAQ,CAACiD,QAAM,CAAC;YAC7B,iBAAiB;YACjB,eAAe;YACf,iBAAiB;YACjB,oBAAoB;;;;;;YAMpB,gBAAgB;YAChB,eAAe;;YAEf,kBAAkB;YAClB,WAAW;AACX,YAAA,oBAAoB,CAAC,OAAO,EAAE,EAEtB,YAAY,CAAA,EAAA,CAAA;;4FAEX,YAAY,EAAA,UAAA,EAAA,CAAA;kBA3DxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,eAAe;wBACf,oBAAoB;wBACpB,gBAAgB;wBAChB,kBAAkB;wBAClB,mBAAmB;;wBAEnB,gBAAgB;wBAChB,oBAAoB;wBACpB,oBAAoB;wBACpB,sBAAsB;wBACtB,eAAe;wBACf,mBAAmB;wBACnB,gBAAgB;wBAChB,iBAAiB;wBACjB,gBAAgB;wBAChB,aAAa;wBACb,iBAAiB;wBACjB,wBAAwB;wBACxB,uBAAuB;wBACvB,mBAAmB;wBACnB,yBAAyB;wBACzB,oBAAoB;wBACpB,2BAA2B;wBAC3B,8BAA8B;wBAC9B,sBAAsB;wBACtB,mBAAmB;wBACnB,wBAAwB;wBACxB,oBAAoB;wBACpB,wBAAwB;wBACxB,mBAAmB;wBACnB,sBAAsB;wBACtB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACZ,wBAAA,YAAY,CAAC,QAAQ,CAACA,QAAM,CAAC;wBAC7B,iBAAiB;wBACjB,eAAe;wBACf,iBAAiB;wBACjB,oBAAoB;;;;;;wBAMpB,gBAAgB;wBAChB,eAAe;;wBAEf,kBAAkB;wBAClB,WAAW;wBACX,oBAAoB,CAAC,OAAO;AAC7B,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCnHY,iBAAiB,CAAA;AAGR,IAAA,MAAA;AAAwB,IAAA,WAAA;IAFpC,WAAW,GAAmB,EAAE;IAExC,WAAA,CAAoB,MAAc,EAAU,WAA6B,EAAA;QAArD,IAAA,CAAA,MAAM,GAAN,MAAM;QAAkB,IAAA,CAAA,WAAW,GAAX,WAAW;IAAqB;IAC5E,QAAQ,GAAA;AACN,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACrE,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;AACjC,gBAAA,IAAI,KAAK;AACP,sBAAE;sBACA,kCAAkC;AAC1C,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;IACA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM;IAC9C;wGAhBW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjD,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,oDCV9B,yxBAwBE,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDdW,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,yxBAAA,EAAA;;;MEKb,kBAAkB,CAAA;AAIT,IAAA,MAAA;AAAwB,IAAA,WAAA;AAAuC,IAAA,WAAA;IAF3E,WAAW,GAAmB,EAAE;AAExC,IAAA,WAAA,CAAoB,MAAc,EAAU,WAA6B,EAAU,WAAuB,EAAA;QAAtF,IAAA,CAAA,MAAM,GAAN,MAAM;QAAkB,IAAA,CAAA,WAAW,GAAX,WAAW;QAA4B,IAAA,CAAA,WAAW,GAAX,WAAW;IAAe;IAC7G,QAAQ,GAAA;;;;;;;;QAQN,IAAI,CAAC,UAAU,EAAE;IACnB;IACA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM;IAC9C;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CACrB,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,KAAG;AACjD,YAAA,IAAG,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,eAAe,EAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;AAClC,YAAA;QACH,CAAC,CAAC,CACD;IAEH;wGA7BW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,sDCX/B,umBAeE,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDJW,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,umBAAA,EAAA;;;AEC5B,MAAM,MAAM,GAAW;AACrB,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,SAAS,EAAE,iBAAiB;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,SAAS,EAAE,iBAAiB;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,SAAS,EAAE,iBAAiB;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,SAAS,EAAE,kBAAkB;AAC9B,aAAA;YACD,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;YAClD,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;AACrD,SAAA;AACF,KAAA;CACF;MAMY,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,wCAFpB,YAAY,CAAA,EAAA,CAAA;yGAEX,mBAAmB,EAAA,OAAA,EAAA,CAHpB,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC7B,YAAY,CAAA,EAAA,CAAA;;4FAEX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCdY,YAAY,CAAA;wGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAXrB,eAAe;YACf,iBAAiB;YACjB,iBAAiB;YACjB,iBAAiB;AACjB,YAAA,kBAAkB,aAGlB,YAAY;YACZ,mBAAmB,CAAA,EAAA,CAAA;AAGV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAJrB,YAAY;YACZ,mBAAmB,CAAA,EAAA,CAAA;;4FAGV,YAAY,EAAA,UAAA,EAAA,CAAA;kBAbxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,eAAe;wBACf,iBAAiB;wBACjB,iBAAiB;wBACjB,iBAAiB;wBACjB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ;AACD;AACF,iBAAA;;;MClBY,SAAS,CAAA;AACA,IAAA,WAAA;AAApB,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;IAAgB;IAE/C,WAAW,CAAC,KAA6B,EAAE,KAA0B,EAAA;QACnE,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;QACtD,IAAI,WAAW,KAAK,MAAM,EAAE;;AAE1B,YAAA,OAAO,IAAI;AACZ,QAAA;;AAGD,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACzB,QAAA,OAAO,KAAK;IACd;wGAbW,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAT,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cADI,MAAM,EAAA,CAAA;;4FACnB,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCSrB,mBAAmB,CAAA;AAOpB,IAAA,EAAA;AACA,IAAA,WAAA;AAAiC,IAAA,MAAA;IAN3C,qBAAqB,GAAS,EAAE;IACxB,iBAAiB,GAAY,KAAK;AAClC,IAAA,cAAc,GAA6B,IAAI,eAAe,CAAU,KAAK,CAAC;AAEtF,IAAA,WAAA,CACU,EAAqB,EACrB,WAAwB,EAAS,MAAa,EAAA;QAD9C,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,WAAW,GAAX,WAAW;QAAsB,IAAA,CAAA,MAAM,GAAN,MAAM;QAE/C,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,KAAG;AACnC,YAAA,IAAG,GAAG,EAAC;AACN,gBAAA,IAAI,CAAC,qBAAqB,GAAG,CAAA,EAAG,GAAG,CAAC,UAAU,CAAA,CAAA,EAAI,GAAG,CAAC,YAAY,CAAA,CAAE;AAAE,YAAA;AACxE,QAAA,CAAC,CAAC;IACL;IACA,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;AACpD,QAAA,MAAM,IAAI,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,IAAI,CAAC;AACtF,QAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;AACtB,YAAA,UAAU,EAAE;AACV,gBAAA,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC;AACjC;AACF,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO;AACzB,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,QAAY,KAAG;YACxB,IAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,eAAe,EAAC;AAClD,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC;AAC3C,YAAA;AACH,QAAA,CAAC,CAAC;AACD,aAAA,IAAI,CACH,UAAU,CAAC,CAAC,KAAS,KAAG;YACtB,IAAI,KAAK,YAAY,iBAAiB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;;gBAE9D,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC;AAC1C,YAAA;;;;;AAKD,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC,CACH;IACH;IAEQ,cAAc,CAAC,OAAyB,EAAE,IAAiB,EAAA;AACjE,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC3B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CACzC,SAAS,CAAC,CAAC,GAAQ,KAAI;AACrB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;;AAE7C,oBAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAGjF,oBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;AACtB,wBAAA,UAAU,EAAE;4BACV,aAAa,EAAE,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAA;AAC7D;AACF,qBAAA,CAAC;;AAGF,oBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;;AAG9B,oBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,gBAAA;AAAM,qBAAA;;AAEL,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACzB,oBAAA,MAAM,UAAU,GAAG,CAAC,qBAAqB,CAAC;oBAC1C,MAAM,YAAY,GAAO,EAAE;AAE3B,oBAAA,UAAU,CAAC,OAAO,CAAC,GAAG,IAAG;wBACvB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;wBACvC,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,4BAAA,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK;AAC1B,wBAAA;AACH,oBAAA,CAAC,CAAC;oBAEF,YAAY,CAAC,KAAK,EAAE;oBAEpB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;wBACtC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9C,oBAAA,CAAC,CAAC;oBACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;AACrC,oBAAA,OAAO,UAAU,CAAC,mCAAmC,CAAC;AACvD,gBAAA;AACH,YAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;;AAEnB,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACzB,gBAAA,MAAM,UAAU,GAAG,CAAC,qBAAqB,CAAC;gBAC1C,MAAM,YAAY,GAAO,EAAE;AAE3B,gBAAA,UAAU,CAAC,OAAO,CAAC,GAAG,IAAG;oBACvB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;oBACvC,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,wBAAA,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK;AAC1B,oBAAA;AACH,gBAAA,CAAC,CAAC;gBAEF,YAAY,CAAC,KAAK,EAAE;gBAEpB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;oBACtC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9C,gBAAA,CAAC,CAAC;gBAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;AACrC,gBAAA,OAAO,UAAU,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,CACH;AACF,QAAA;AAAM,aAAA;;YAEL,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7B,SAAS,CAAC,MAAK;AACb,gBAAA,MAAM,MAAM,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,IAAI,CAAC;AACxF,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;AACtB,oBAAA,UAAU,EAAE;AACV,wBAAA,aAAa,EAAE,SAAS,GAAG,MAAM,CAAC;AACnC;AACF,iBAAA,CAAC;AACF,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAC7B,CAAC,CAAC,CACH;AACF,QAAA;IACH;wGA3HW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAnB,mBAAmB,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACZD;;AAEG;AAEH;;ACJA;;AAEG;;;;"}