@naniteninja/dashboard-components-lib 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. package/esm2022/lib/components/auto-delegation/animations.mjs +20 -0
  2. package/esm2022/lib/components/auto-delegation/auto-delegation-modal.component.mjs +106 -0
  3. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.mjs +6 -0
  4. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.mjs +7 -0
  5. package/esm2022/lib/components/auto-delegation/interface/auto-delegation-data.interface.mjs +2 -0
  6. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.event.interface.mjs +2 -0
  7. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.mjs +2 -0
  8. package/esm2022/lib/components/auto-delegation/interface/preferences.interface.mjs +2 -0
  9. package/esm2022/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.mjs +37 -0
  10. package/esm2022/lib/components/calendar/agenda/agenda.component.mjs +98 -0
  11. package/esm2022/lib/components/calendar/agenda/agenda.module.mjs +24 -0
  12. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.day.interface.mjs +2 -0
  13. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.mjs +2 -0
  14. package/esm2022/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.mjs +40 -0
  15. package/esm2022/lib/components/calendar/components/event-form/event-form.component.mjs +275 -0
  16. package/esm2022/lib/components/calendar/components/event-form/event-form.module.mjs +89 -0
  17. package/esm2022/lib/components/calendar/components/event-info/event-info.component.mjs +40 -0
  18. package/esm2022/lib/components/calendar/enums/calendar.account.enum.mjs +6 -0
  19. package/esm2022/lib/components/calendar/enums/calendar.account.icons.enum.mjs +6 -0
  20. package/esm2022/lib/components/calendar/enums/event-type.enum.mjs +10 -0
  21. package/esm2022/lib/components/calendar/enums/recurring.edit.options.enum.mjs +7 -0
  22. package/esm2022/lib/components/calendar/enums/recurring.type.enum.mjs +8 -0
  23. package/esm2022/lib/components/calendar/interfaces/calendar.account.interface.mjs +2 -0
  24. package/esm2022/lib/components/calendar/interfaces/calendar.account.theme.interface.mjs +2 -0
  25. package/esm2022/lib/components/calendar/interfaces/event.form.interface.mjs +2 -0
  26. package/esm2022/lib/components/calendar/interfaces/event.form.output.interface.mjs +2 -0
  27. package/esm2022/lib/components/calendar/interfaces/event.interface.mjs +2 -0
  28. package/esm2022/lib/components/calendar/interfaces/event.time.interface.mjs +2 -0
  29. package/esm2022/lib/components/calendar/interfaces/recurring.event.interface.mjs +2 -0
  30. package/esm2022/lib/components/calendar/interfaces/recurring.exception.interface.mjs +2 -0
  31. package/esm2022/lib/components/calendar/interfaces/recurring.pattern.interface.mjs +2 -0
  32. package/esm2022/lib/components/calendar/lookups/recurring.options.lookup.mjs +30 -0
  33. package/esm2022/lib/components/calendar/scheduler/enums/schedule-date-status.enum.mjs +7 -0
  34. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.mjs +2 -0
  35. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.mjs +2 -0
  36. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.mjs +2 -0
  37. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.mjs +2 -0
  38. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.mjs +2 -0
  39. package/esm2022/lib/components/calendar/scheduler/mock-schedule.mjs +80 -0
  40. package/esm2022/lib/components/calendar/scheduler/scheduler.component.mjs +144 -0
  41. package/esm2022/lib/components/calendar/services/calendar-utils.service.mjs +211 -0
  42. package/esm2022/lib/components/chat/chat.component.mjs +307 -0
  43. package/esm2022/lib/components/chat/chat.component.module.mjs +85 -0
  44. package/esm2022/lib/components/chat/chat.service.mjs +63 -0
  45. package/esm2022/lib/components/chat/enums/sender-types.enum.mjs +6 -0
  46. package/esm2022/lib/components/chat/gif-selector/gif-selector.component.mjs +77 -0
  47. package/esm2022/lib/components/chat/gif-selector/gif-selector.service.mjs +41 -0
  48. package/esm2022/lib/components/chat/gif-selector/tenor-media-format.interface.mjs +2 -0
  49. package/esm2022/lib/components/chat/gif-selector/tenor-object.interface.mjs +2 -0
  50. package/esm2022/lib/components/chat/gif-selector/tenor-result.interface.mjs +2 -0
  51. package/esm2022/lib/components/chat/interfaces/date-messages.interface.mjs +2 -0
  52. package/esm2022/lib/components/chat/interfaces/message-attachment.interface.mjs +2 -0
  53. package/esm2022/lib/components/chat/interfaces/message.interface.mjs +2 -0
  54. package/esm2022/lib/components/chat/interfaces/send-options-message.interface.mjs +2 -0
  55. package/esm2022/lib/components/chat/interfaces/type-send-message.enum.mjs +7 -0
  56. package/esm2022/lib/components/chat-suggestion/chat-suggestion.component.mjs +21 -0
  57. package/esm2022/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.mjs +2 -0
  58. package/esm2022/lib/components/circle-progress/circle-progress.component.mjs +143 -0
  59. package/esm2022/lib/components/circle-progress/circle-progress.module.mjs +18 -0
  60. package/esm2022/lib/components/circle-progress/enums/circle-variable.enum.mjs +6 -0
  61. package/esm2022/lib/components/circle-progress/interfaces/circle-progress-config.interface.mjs +2 -0
  62. package/esm2022/lib/components/client-home/client-home.component.mjs +123 -0
  63. package/esm2022/lib/components/client-home/enums/client-home-component.enum.mjs +9 -0
  64. package/esm2022/lib/components/client-home/interfaces/chat-meta.interface.mjs +2 -0
  65. package/esm2022/lib/components/client-home/interfaces/home-dashboard-inputs.interface.mjs +2 -0
  66. package/esm2022/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.mjs +2 -0
  67. package/esm2022/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.mjs +2 -0
  68. package/esm2022/lib/components/client-home/lookup/client-home.config.mjs +30 -0
  69. package/esm2022/lib/components/client-home/lookup/inner-progress-default-colors.config.mjs +6 -0
  70. package/esm2022/lib/components/client-home/lookup/inner-progress-pink-colors.config.mjs +6 -0
  71. package/esm2022/lib/components/client-home/lookup/inner-progress-purple-colors.config.mjs +6 -0
  72. package/esm2022/lib/components/client-home/lookup/inner-progress-teal-colors.config.mjs +6 -0
  73. package/esm2022/lib/components/client-home/lookup/inner-progress-white-colors.config.mjs +10 -0
  74. package/esm2022/lib/components/client-home/lookup/progress-default-colors.config.mjs +10 -0
  75. package/esm2022/lib/components/client-home/lookup/progress-white-colors.config.mjs +10 -0
  76. package/esm2022/lib/components/client-home/pipes/chat-meta.pipe.mjs +60 -0
  77. package/esm2022/lib/components/client-home/pipes/get-color-by-matcher.pipe.mjs +33 -0
  78. package/esm2022/lib/components/client-match-overview/client-match-overview.component.mjs +300 -0
  79. package/esm2022/lib/components/client-match-overview/enums/conversation-flag.enum.mjs +6 -0
  80. package/esm2022/lib/components/client-match-overview/enums/counter-flag-base.enum.mjs +6 -0
  81. package/esm2022/lib/components/client-match-overview/enums/inner-circle-state.enum.mjs +8 -0
  82. package/esm2022/lib/components/client-match-overview/interfaces/client-match-overview.interface.mjs +2 -0
  83. package/esm2022/lib/components/client-match-overview/interfaces/conversation-flag.interface.mjs +2 -0
  84. package/esm2022/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.mjs +2 -0
  85. package/esm2022/lib/components/client-match-overview/interfaces/progress-decision.interface.mjs +2 -0
  86. package/esm2022/lib/components/client-match-overview/interfaces/progress-facts.interface.mjs +2 -0
  87. package/esm2022/lib/components/client-match-overview/lookups/computer-inner-state.lookup.mjs +81 -0
  88. package/esm2022/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.mjs +8 -0
  89. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-gap.config.mjs +4 -0
  90. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.config.mjs +3 -0
  91. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.service.mjs +43 -0
  92. package/esm2022/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.mjs +113 -0
  93. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.mjs +11 -0
  94. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.mjs +27 -0
  95. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.mjs +19 -0
  96. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.mjs +21 -0
  97. package/esm2022/lib/components/lib-client-dashboard/client-dashboard.component.mjs +170 -0
  98. package/esm2022/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.mjs +11 -0
  99. package/esm2022/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.mjs +7 -0
  100. package/esm2022/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.mjs +2 -0
  101. package/esm2022/lib/components/lib-client-dashboard/lookups/client-dashboard.config.mjs +15 -0
  102. package/esm2022/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.mjs +146 -0
  103. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.mjs +2 -0
  104. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.mjs +2 -0
  105. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.mjs +2 -0
  106. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.mjs +2 -0
  107. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.mjs +2 -0
  108. package/esm2022/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.mjs +21 -0
  109. package/esm2022/lib/components/matcher-statuses/enums/matcher-statuses.enum.mjs +15 -0
  110. package/esm2022/lib/components/matcher-statuses/interfaces/status.interface.mjs +2 -0
  111. package/esm2022/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.mjs +54 -0
  112. package/esm2022/lib/components/matcher-statuses/matcher-statuses.component.mjs +58 -0
  113. package/esm2022/lib/components/matcher-statuses/pipes/is-status-included.pipe.mjs +19 -0
  114. package/esm2022/lib/components/profile-card/profile-card.component.mjs +35 -0
  115. package/esm2022/lib/components/profile-card/profile-card.module.mjs +19 -0
  116. package/esm2022/lib/components/spider-chart/interfaces/chart-data-circle.interface.mjs +2 -0
  117. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.mjs +2 -0
  118. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.mjs +2 -0
  119. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.mjs +2 -0
  120. package/esm2022/lib/components/spider-chart/interfaces/config.interface.mjs +2 -0
  121. package/esm2022/lib/components/spider-chart/interfaces/dataset.interface.mjs +2 -0
  122. package/esm2022/lib/components/spider-chart/interfaces/polygon-color.interface.mjs +2 -0
  123. package/esm2022/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.mjs +2 -0
  124. package/esm2022/lib/components/spider-chart/lookup/default-spider-config.lookup.mjs +18 -0
  125. package/esm2022/lib/components/spider-chart/lookup/default-spider-config.mjs +67 -0
  126. package/esm2022/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.mjs +11 -0
  127. package/esm2022/lib/components/spider-chart/lookup/svg-config.lookup.mjs +277 -0
  128. package/esm2022/lib/components/spider-chart/spider-chart.component.mjs +235 -0
  129. package/esm2022/lib/enums/direction.enum.mjs +6 -0
  130. package/esm2022/lib/enums/form-field-type.mjs +30 -0
  131. package/esm2022/lib/enums/local-storage-keys.enum.mjs +5 -0
  132. package/esm2022/lib/enums/status-types.mjs +8 -0
  133. package/esm2022/lib/model/select-option-template.mjs +2 -0
  134. package/esm2022/lib/operations/operations.mjs +19 -0
  135. package/esm2022/lib/pipes/array-sort/array.sort.pipe.mjs +49 -0
  136. package/esm2022/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.mjs +17 -0
  137. package/esm2022/lib/pipes/date-localization/date-localization.pipe.mjs +31 -0
  138. package/esm2022/lib/pipes/fallback-translate/fallback-translate.pipe.mjs +28 -0
  139. package/esm2022/lib/pipes/get-display-value/get-display-value.pipe.mjs +59 -0
  140. package/esm2022/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.mjs +22 -0
  141. package/esm2022/lib/pipes/initials/initials.pipe.mjs +25 -0
  142. package/esm2022/lib/pipes/round/round.pipe.mjs +17 -0
  143. package/esm2022/lib/pipes/update-llm-preference/update-llm-preference.pipe.mjs +25 -0
  144. package/esm2022/lib/services/abstract-cache.service.mjs +10 -0
  145. package/esm2022/lib/shared/shared/alert-popup/alert-popup.component.mjs +38 -0
  146. package/esm2022/lib/shared/shared/message-modal/message-modal.component.mjs +95 -0
  147. package/esm2022/lib/shared/shared/status-icon/status-icon.component.mjs +14 -0
  148. package/esm2022/lib/shared/shared.module.mjs +23 -0
  149. package/esm2022/naniteninja-dashboard-components-lib.mjs +5 -0
  150. package/esm2022/public-api.mjs +122 -0
  151. package/fesm2022/naniteninja-dashboard-components-lib.mjs +4334 -0
  152. package/fesm2022/naniteninja-dashboard-components-lib.mjs.map +1 -0
  153. package/index.d.ts +5 -0
  154. package/lib/components/auto-delegation/animations.d.ts +1 -0
  155. package/lib/components/auto-delegation/auto-delegation-modal.component.d.ts +29 -0
  156. package/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.d.ts +4 -0
  157. package/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.d.ts +5 -0
  158. package/lib/components/auto-delegation/interface/auto-delegation-data.interface.d.ts +31 -0
  159. package/lib/components/auto-delegation/interface/auto-delegation.event.interface.d.ts +6 -0
  160. package/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.d.ts +8 -0
  161. package/lib/components/auto-delegation/interface/preferences.interface.d.ts +17 -0
  162. package/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.d.ts +12 -0
  163. package/lib/components/calendar/agenda/agenda.component.d.ts +22 -0
  164. package/lib/components/calendar/agenda/agenda.module.d.ts +12 -0
  165. package/lib/components/calendar/agenda/interfaces/agenda.day.interface.d.ts +7 -0
  166. package/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.d.ts +9 -0
  167. package/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.d.ts +19 -0
  168. package/lib/components/calendar/components/event-form/event-form.component.d.ts +67 -0
  169. package/lib/components/calendar/components/event-form/event-form.module.d.ts +20 -0
  170. package/lib/components/calendar/components/event-info/event-info.component.d.ts +24 -0
  171. package/lib/components/calendar/enums/calendar.account.enum.d.ts +4 -0
  172. package/lib/components/calendar/enums/calendar.account.icons.enum.d.ts +4 -0
  173. package/lib/components/calendar/enums/event-type.enum.d.ts +8 -0
  174. package/lib/components/calendar/enums/recurring.edit.options.enum.d.ts +5 -0
  175. package/lib/components/calendar/enums/recurring.type.enum.d.ts +6 -0
  176. package/lib/components/calendar/interfaces/calendar.account.interface.d.ts +14 -0
  177. package/lib/components/calendar/interfaces/calendar.account.theme.interface.d.ts +5 -0
  178. package/lib/components/calendar/interfaces/event.form.interface.d.ts +22 -0
  179. package/lib/components/calendar/interfaces/event.form.output.interface.d.ts +10 -0
  180. package/lib/components/calendar/interfaces/event.interface.d.ts +33 -0
  181. package/lib/components/calendar/interfaces/event.time.interface.d.ts +4 -0
  182. package/lib/components/calendar/interfaces/recurring.event.interface.d.ts +16 -0
  183. package/lib/components/calendar/interfaces/recurring.exception.interface.d.ts +14 -0
  184. package/lib/components/calendar/interfaces/recurring.pattern.interface.d.ts +16 -0
  185. package/lib/components/calendar/lookups/recurring.options.lookup.d.ts +2 -0
  186. package/lib/components/calendar/scheduler/enums/schedule-date-status.enum.d.ts +5 -0
  187. package/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.d.ts +10 -0
  188. package/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.d.ts +5 -0
  189. package/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.d.ts +26 -0
  190. package/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.d.ts +13 -0
  191. package/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.d.ts +6 -0
  192. package/lib/components/calendar/scheduler/mock-schedule.d.ts +9 -0
  193. package/lib/components/calendar/scheduler/scheduler.component.d.ts +36 -0
  194. package/lib/components/calendar/services/calendar-utils.service.d.ts +39 -0
  195. package/lib/components/chat/chat.component.d.ts +70 -0
  196. package/lib/components/chat/chat.component.module.d.ts +22 -0
  197. package/lib/components/chat/chat.service.d.ts +15 -0
  198. package/lib/components/chat/enums/sender-types.enum.d.ts +4 -0
  199. package/lib/components/chat/gif-selector/gif-selector.component.d.ts +25 -0
  200. package/lib/components/chat/gif-selector/gif-selector.service.d.ts +15 -0
  201. package/lib/components/chat/gif-selector/tenor-media-format.interface.d.ts +7 -0
  202. package/lib/components/chat/gif-selector/tenor-object.interface.d.ts +5 -0
  203. package/lib/components/chat/gif-selector/tenor-result.interface.d.ts +16 -0
  204. package/lib/components/chat/interfaces/date-messages.interface.d.ts +6 -0
  205. package/lib/components/chat/interfaces/message-attachment.interface.d.ts +6 -0
  206. package/lib/components/chat/interfaces/message.interface.d.ts +11 -0
  207. package/lib/components/chat/interfaces/send-options-message.interface.d.ts +5 -0
  208. package/lib/components/chat/interfaces/type-send-message.enum.d.ts +5 -0
  209. package/lib/components/chat-suggestion/chat-suggestion.component.d.ts +9 -0
  210. package/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.d.ts +4 -0
  211. package/lib/components/circle-progress/circle-progress.component.d.ts +31 -0
  212. package/lib/components/circle-progress/circle-progress.module.d.ts +8 -0
  213. package/lib/components/circle-progress/enums/circle-variable.enum.d.ts +4 -0
  214. package/lib/components/circle-progress/interfaces/circle-progress-config.interface.d.ts +29 -0
  215. package/lib/components/client-home/client-home.component.d.ts +44 -0
  216. package/lib/components/client-home/enums/client-home-component.enum.d.ts +7 -0
  217. package/lib/components/client-home/interfaces/chat-meta.interface.d.ts +7 -0
  218. package/lib/components/client-home/interfaces/home-dashboard-inputs.interface.d.ts +45 -0
  219. package/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.d.ts +5 -0
  220. package/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.d.ts +9 -0
  221. package/lib/components/client-home/lookup/client-home.config.d.ts +2 -0
  222. package/lib/components/client-home/lookup/inner-progress-default-colors.config.d.ts +2 -0
  223. package/lib/components/client-home/lookup/inner-progress-pink-colors.config.d.ts +2 -0
  224. package/lib/components/client-home/lookup/inner-progress-purple-colors.config.d.ts +2 -0
  225. package/lib/components/client-home/lookup/inner-progress-teal-colors.config.d.ts +2 -0
  226. package/lib/components/client-home/lookup/inner-progress-white-colors.config.d.ts +2 -0
  227. package/lib/components/client-home/lookup/progress-default-colors.config.d.ts +2 -0
  228. package/lib/components/client-home/lookup/progress-white-colors.config.d.ts +2 -0
  229. package/lib/components/client-home/pipes/chat-meta.pipe.d.ts +10 -0
  230. package/lib/components/client-home/pipes/get-color-by-matcher.pipe.d.ts +10 -0
  231. package/lib/components/client-match-overview/client-match-overview.component.d.ts +55 -0
  232. package/lib/components/client-match-overview/enums/conversation-flag.enum.d.ts +4 -0
  233. package/lib/components/client-match-overview/enums/counter-flag-base.enum.d.ts +4 -0
  234. package/lib/components/client-match-overview/enums/inner-circle-state.enum.d.ts +6 -0
  235. package/lib/components/client-match-overview/interfaces/client-match-overview.interface.d.ts +19 -0
  236. package/lib/components/client-match-overview/interfaces/conversation-flag.interface.d.ts +8 -0
  237. package/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.d.ts +7 -0
  238. package/lib/components/client-match-overview/interfaces/progress-decision.interface.d.ts +10 -0
  239. package/lib/components/client-match-overview/interfaces/progress-facts.interface.d.ts +11 -0
  240. package/lib/components/client-match-overview/lookups/computer-inner-state.lookup.d.ts +7 -0
  241. package/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.d.ts +5 -0
  242. package/lib/components/client-match-overview/progress-ticker/progress-gap.config.d.ts +2 -0
  243. package/lib/components/client-match-overview/progress-ticker/progress-ticker.config.d.ts +2 -0
  244. package/lib/components/client-match-overview/progress-ticker/progress-ticker.service.d.ts +11 -0
  245. package/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.d.ts +29 -0
  246. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.d.ts +2 -0
  247. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.d.ts +2 -0
  248. package/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.d.ts +2 -0
  249. package/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.d.ts +2 -0
  250. package/lib/components/lib-client-dashboard/client-dashboard.component.d.ts +73 -0
  251. package/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.d.ts +9 -0
  252. package/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.d.ts +5 -0
  253. package/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.d.ts +29 -0
  254. package/lib/components/lib-client-dashboard/lookups/client-dashboard.config.d.ts +2 -0
  255. package/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.d.ts +48 -0
  256. package/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.d.ts +5 -0
  257. package/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.d.ts +5 -0
  258. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.d.ts +26 -0
  259. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.d.ts +8 -0
  260. package/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.d.ts +24 -0
  261. package/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.d.ts +9 -0
  262. package/lib/components/matcher-statuses/enums/matcher-statuses.enum.d.ts +13 -0
  263. package/lib/components/matcher-statuses/interfaces/status.interface.d.ts +6 -0
  264. package/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.d.ts +2 -0
  265. package/lib/components/matcher-statuses/matcher-statuses.component.d.ts +23 -0
  266. package/lib/components/matcher-statuses/pipes/is-status-included.pipe.d.ts +8 -0
  267. package/lib/components/profile-card/profile-card.component.d.ts +11 -0
  268. package/lib/components/profile-card/profile-card.module.d.ts +9 -0
  269. package/lib/components/spider-chart/interfaces/chart-data-circle.interface.d.ts +10 -0
  270. package/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.d.ts +11 -0
  271. package/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.d.ts +11 -0
  272. package/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.d.ts +10 -0
  273. package/lib/components/spider-chart/interfaces/config.interface.d.ts +19 -0
  274. package/lib/components/spider-chart/interfaces/dataset.interface.d.ts +7 -0
  275. package/lib/components/spider-chart/interfaces/polygon-color.interface.d.ts +4 -0
  276. package/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.d.ts +6 -0
  277. package/lib/components/spider-chart/lookup/default-spider-config.d.ts +2 -0
  278. package/lib/components/spider-chart/lookup/default-spider-config.lookup.d.ts +2 -0
  279. package/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.d.ts +2 -0
  280. package/lib/components/spider-chart/lookup/svg-config.lookup.d.ts +8 -0
  281. package/lib/components/spider-chart/spider-chart.component.d.ts +52 -0
  282. package/lib/enums/direction.enum.d.ts +4 -0
  283. package/lib/enums/form-field-type.d.ts +28 -0
  284. package/lib/enums/local-storage-keys.enum.d.ts +3 -0
  285. package/lib/enums/status-types.d.ts +6 -0
  286. package/lib/model/select-option-template.d.ts +5 -0
  287. package/lib/operations/operations.d.ts +19 -0
  288. package/lib/pipes/array-sort/array.sort.pipe.d.ts +7 -0
  289. package/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.d.ts +7 -0
  290. package/lib/pipes/date-localization/date-localization.pipe.d.ts +8 -0
  291. package/lib/pipes/fallback-translate/fallback-translate.pipe.d.ts +11 -0
  292. package/lib/pipes/get-display-value/get-display-value.pipe.d.ts +13 -0
  293. package/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.d.ts +8 -0
  294. package/lib/pipes/initials/initials.pipe.d.ts +7 -0
  295. package/lib/pipes/round/round.pipe.d.ts +7 -0
  296. package/lib/pipes/update-llm-preference/update-llm-preference.pipe.d.ts +8 -0
  297. package/lib/services/abstract-cache.service.d.ts +9 -0
  298. package/lib/shared/shared/alert-popup/alert-popup.component.d.ts +14 -0
  299. package/lib/shared/shared/message-modal/message-modal.component.d.ts +29 -0
  300. package/lib/shared/shared/status-icon/status-icon.component.d.ts +7 -0
  301. package/lib/shared/shared.module.d.ts +13 -0
  302. package/naniteninja-dashboard-components-lib-1.0.0.tgz +0 -0
  303. package/package.json +69 -0
  304. package/public-api.d.ts +121 -0
  305. package/src/assets/auto-delegation-modal/cross.svg +17 -0
  306. package/src/assets/auto-delegation-modal/menu.svg +3 -0
  307. package/src/assets/auto-delegation-modal/timer-center-dot.svg +25 -0
  308. package/src/assets/auto-delegation-modal/user-profile.svg +9 -0
  309. package/src/assets/circle-progress/circle-progress-1.svg +159 -0
  310. package/src/assets/circle-progress/circle-progress-2.svg +155 -0
  311. package/src/assets/circle-progress/circle-progress-3.svg +25 -0
  312. package/src/assets/circle-progress/circle-progress.svg +159 -0
  313. package/src/assets/client-match-overview/background-eclipse.svg +13 -0
  314. package/src/assets/fonts/calistoga/Calistoga-Regular.ttf +0 -0
  315. package/src/assets/fonts/gilroy/Gilroy-Black.ttf +0 -0
  316. package/src/assets/fonts/gilroy/Gilroy-BlackItalic.ttf +0 -0
  317. package/src/assets/fonts/gilroy/Gilroy-Bold.ttf +0 -0
  318. package/src/assets/fonts/gilroy/Gilroy-BoldItalic.ttf +0 -0
  319. package/src/assets/fonts/gilroy/Gilroy-ExtraBold.ttf +0 -0
  320. package/src/assets/fonts/gilroy/Gilroy-ExtraBoldItalic.ttf +0 -0
  321. package/src/assets/fonts/gilroy/Gilroy-Heavy.ttf +0 -0
  322. package/src/assets/fonts/gilroy/Gilroy-HeavyItalic.ttf +0 -0
  323. package/src/assets/fonts/gilroy/Gilroy-Light.ttf +0 -0
  324. package/src/assets/fonts/gilroy/Gilroy-LightItalic.ttf +0 -0
  325. package/src/assets/fonts/gilroy/Gilroy-Medium.ttf +0 -0
  326. package/src/assets/fonts/gilroy/Gilroy-MediumItalic.ttf +0 -0
  327. package/src/assets/fonts/gilroy/Gilroy-Regular.ttf +0 -0
  328. package/src/assets/fonts/gilroy/Gilroy-RegularItalic.ttf +0 -0
  329. package/src/assets/fonts/gilroy/Gilroy-SemiBold.ttf +0 -0
  330. package/src/assets/fonts/gilroy/Gilroy-SemiBoldItalic.ttf +0 -0
  331. package/src/assets/fonts/gilroy/Gilroy-Thin.ttf +0 -0
  332. package/src/assets/fonts/gilroy/Gilroy-ThinItalic.ttf +0 -0
  333. package/src/assets/fonts/gilroy/Gilroy-UltraLight.ttf +0 -0
  334. package/src/assets/fonts/gilroy/Gilroy-UltraLightItalic.ttf +0 -0
  335. package/src/assets/grid/icons/filter-button.svg +47 -0
  336. package/src/assets/grid/images/chips-background-shadow.svg +34 -0
  337. package/src/assets/icons/back-v2.svg +14 -0
  338. package/src/assets/icons/checkbox/checkbox-off.svg +72 -0
  339. package/src/assets/icons/checkbox/checkbox-on.svg +113 -0
  340. package/src/assets/icons/checkmark-button.svg +72 -0
  341. package/src/assets/icons/checkmark.svg +7 -0
  342. package/src/assets/icons/close-icon.svg +3 -0
  343. package/src/assets/icons/compose-matcher/notes.svg +4 -0
  344. package/src/assets/icons/compose-matcher/profile.svg +4 -0
  345. package/src/assets/icons/compose-matcher/suggest.svg +3 -0
  346. package/src/assets/icons/compose-matcher/visual.svg +3 -0
  347. package/src/assets/icons/default-profile.svg +23 -0
  348. package/src/assets/icons/defualt.svg +5 -0
  349. package/src/assets/icons/first-page.svg +7 -0
  350. package/src/assets/icons/incrementer/minus.svg +3 -0
  351. package/src/assets/icons/incrementer/plus.svg +3 -0
  352. package/src/assets/icons/info.svg +5 -0
  353. package/src/assets/icons/last-page.svg +7 -0
  354. package/src/assets/icons/minus.svg +3 -0
  355. package/src/assets/icons/next-page.svg +6 -0
  356. package/src/assets/icons/plus.svg +3 -0
  357. package/src/assets/icons/popup-defualt.svg +34 -0
  358. package/src/assets/icons/prev-page.svg +6 -0
  359. package/src/assets/icons/send-icon.svg +4 -0
  360. package/src/assets/icons/shake.svg +74 -0
  361. package/src/assets/icons/thumbs-up.svg +28 -0
  362. package/src/assets/nsfw/blazeface.bundle.js +2 -0
  363. package/src/assets/nsfw/model/group1-shard1of1 +0 -0
  364. package/src/assets/nsfw/model/model.json +4085 -0
  365. package/src/assets/nsfw/nsfwjs.bundle.js +2 -0
  366. package/src/assets/nsfw/tf.bundle.js +2 -0
  367. package/src/assets/scheduler/accept.svg +3 -0
  368. package/src/assets/scheduler/accept_active.svg +3 -0
  369. package/src/assets/scheduler/arrow.svg +13 -0
  370. package/src/assets/scheduler/cancel.svg +3 -0
  371. package/src/assets/scheduler/cancel_active.svg +3 -0
  372. package/src/assets/scheduler/heart.svg +18 -0
  373. package/src/assets/trait-visual/force-directed-graph.png +0 -0
  374. package/src/lib/shared-styles/common/_colors.scss +30 -0
  375. package/src/lib/shared-styles/common/animations.scss +48 -0
  376. package/src/lib/shared-styles/common/base-input-field.scss +132 -0
  377. package/src/lib/shared-styles/common/buttons.scss +152 -0
  378. package/src/lib/shared-styles/common/cards.scss +163 -0
  379. package/src/lib/shared-styles/common/client-dash.scss +5 -0
  380. package/src/lib/shared-styles/common/date-picker.scss +179 -0
  381. package/src/lib/shared-styles/common/draggable-scroll-and-marquee.scss +34 -0
  382. package/src/lib/shared-styles/common/feedback.scss +157 -0
  383. package/src/lib/shared-styles/common/fonts.scss +3 -0
  384. package/src/lib/shared-styles/common/information-card.scss +56 -0
  385. package/src/lib/shared-styles/common/input.scss +110 -0
  386. package/src/lib/shared-styles/common/lib-styles-utils.scss +157 -0
  387. package/src/lib/shared-styles/common/lists.scss +91 -0
  388. package/src/lib/shared-styles/common/login.scss +32 -0
  389. package/src/lib/shared-styles/common/maps.scss +10 -0
  390. package/src/lib/shared-styles/common/matcher-dash.scss +49 -0
  391. package/src/lib/shared-styles/common/modal_styles.scss +32 -0
  392. package/src/lib/shared-styles/common/notifications-list.scss +9 -0
  393. package/src/lib/shared-styles/common/overrides.scss +6 -0
  394. package/src/lib/shared-styles/common/pulse.scss +26 -0
  395. package/src/lib/shared-styles/common/swiper.scss +5 -0
  396. package/src/lib/shared-styles/common/tab-menu.scss +74 -0
  397. package/src/lib/shared-styles/common/theme.scss +55 -0
  398. package/src/lib/shared-styles/common/typography.scss +121 -0
  399. package/src/lib/shared-styles/common/user-menu.scss +129 -0
  400. package/src/lib/shared-styles/fonts/calistoga.font.scss +6 -0
  401. package/src/lib/shared-styles/fonts/gilroy.font.scss +160 -0
  402. package/src/lib/shared-styles/images/compress.png +0 -0
  403. package/src/lib/shared-styles/images/expand.png +0 -0
  404. package/src/lib/shared-styles/styles.scss +25 -0
@@ -0,0 +1,307 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, Renderer2, ViewChild, } from '@angular/core';
2
+ import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import 'emoji-picker-element';
4
+ import { first } from 'rxjs';
5
+ import { LibMessageModalComponent } from '../../shared/shared/message-modal/message-modal.component';
6
+ import { PopupModalService } from '@naniteninja/ionic-lib';
7
+ import { ChatService } from './chat.service';
8
+ import { SenderTypes } from './enums/sender-types.enum';
9
+ import { SendMessageType } from './interfaces/type-send-message.enum';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "@naniteninja/ionic-lib";
13
+ import * as i3 from "@angular/forms";
14
+ import * as i4 from "./gif-selector/gif-selector.component";
15
+ import * as i5 from "ngx-infinite-scroll";
16
+ import * as i6 from "@ngx-translate/core";
17
+ export class ChatComponent {
18
+ constructor() {
19
+ this.default = false;
20
+ this.responseTime = '05h 04m 35s';
21
+ // whether gifs as a message should be allowed or not
22
+ this.includeGifMessage = true;
23
+ // whether timestamp styles should be allowed or not
24
+ this.includeTime = true;
25
+ // max length for textarea input
26
+ this.maxLength = 100;
27
+ this.enableGifPicker = false;
28
+ // send message emitter
29
+ this.sendMessage = new EventEmitter();
30
+ // scroller-up event to get older messages
31
+ this.getMessages = new EventEmitter();
32
+ this.disabled = false;
33
+ this.cdr = inject(ChangeDetectorRef);
34
+ this.elementRef = inject(ElementRef);
35
+ this.popupModalService = inject(PopupModalService);
36
+ this.chatService = inject(ChatService);
37
+ this.renderer = inject(Renderer2);
38
+ this.scrollThreshold = 200;
39
+ this.messages = [];
40
+ this.textControl = new FormControl('');
41
+ this.base64Image = null;
42
+ this.emojiVisibility = false;
43
+ this.gifVisibility = false;
44
+ this.isAtStartChat = false;
45
+ this.emojiPickerOpened = false;
46
+ this.pos = '';
47
+ this.throttle = 0;
48
+ this.distance = 0;
49
+ this.ModalComponent = LibMessageModalComponent;
50
+ this.documentClickListener = null;
51
+ }
52
+ // Pre-filled input value
53
+ set inputValue(value) {
54
+ if (value) {
55
+ this.textControl.setValue(value);
56
+ }
57
+ }
58
+ // interface for messages to groupm them in dates
59
+ set dateMessages(value) {
60
+ this.messages = this.chatService.transformMessages(value);
61
+ }
62
+ ngOnInit() {
63
+ if (!this.prospectJoinDate) {
64
+ this.prospectJoinDate = null;
65
+ }
66
+ this.chatService.isLongPressForSendImmediately().subscribe({
67
+ next: (res) => {
68
+ this.longPressEnabled = res;
69
+ },
70
+ });
71
+ if (this.disabled) {
72
+ this.textControl.disable();
73
+ }
74
+ }
75
+ ngOnDestroy() {
76
+ this.removeEmojiPickerClickListener();
77
+ }
78
+ ngAfterViewInit() {
79
+ if (this.emojiPickerConfig?.style) {
80
+ if (this.emojiPickerRef?.nativeElement) {
81
+ const style = document.createElement('style');
82
+ style.textContent = this.emojiPickerConfig.style;
83
+ this.emojiPickerRef.nativeElement.shadowRoot.appendChild(style);
84
+ }
85
+ }
86
+ this.scrollToBottom();
87
+ }
88
+ ngOnChanges(changes) {
89
+ if (!this.scrollableContainer)
90
+ return;
91
+ const container = this.scrollableContainer.nativeElement;
92
+ const scrollTop = container.scrollTop;
93
+ const scrollHeight = container.scrollHeight;
94
+ const clientHeight = container.clientHeight;
95
+ if (!(scrollTop < scrollHeight - clientHeight - this.scrollThreshold)) {
96
+ setTimeout(() => {
97
+ this.scrollToBottom();
98
+ }, 200);
99
+ }
100
+ }
101
+ onScrollChats() {
102
+ this.getMessages.emit(true);
103
+ }
104
+ handleScrollNewMessage() {
105
+ setTimeout(() => {
106
+ if (!this.isAtStartChat)
107
+ this.scrollToBottom();
108
+ }, 200);
109
+ }
110
+ onScrollMessages(event) {
111
+ const container = this.scrollableContainer.nativeElement;
112
+ const scrollTop = container.scrollTop;
113
+ const scrollHeight = container.scrollHeight;
114
+ const clientHeight = container.clientHeight;
115
+ this.isAtStartChat = scrollTop < scrollHeight - clientHeight - this.scrollThreshold;
116
+ }
117
+ scrollToBottom() {
118
+ const container = this.scrollableContainer.nativeElement;
119
+ container.scrollTop = container.scrollHeight;
120
+ }
121
+ onEmojiclick(event) {
122
+ const emoji = event.detail.unicode;
123
+ if (this.chatInput.inputFieldRef) {
124
+ const textAreaElement = this.chatInput.inputFieldRef.nativeElement;
125
+ const start = textAreaElement.selectionStart ?? 0;
126
+ const end = textAreaElement.selectionEnd ?? 0;
127
+ const currentText = this.textControl.value || '';
128
+ const newText = currentText.slice(0, start) + emoji + currentText.slice(end);
129
+ this.textControl.setValue(newText);
130
+ // Reposiciona el cursor después del emoji
131
+ setTimeout(() => {
132
+ textAreaElement.focus(); // Asegura que el textarea recupere el foco
133
+ textAreaElement.setSelectionRange(start + emoji.length, start + emoji.length);
134
+ });
135
+ }
136
+ }
137
+ handleEmojiPickerClick() {
138
+ if (this.default) {
139
+ return;
140
+ }
141
+ this.emojiPickerOpened = true;
142
+ if (this.gifVisibility) {
143
+ this.gifVisibility = !this.gifVisibility;
144
+ }
145
+ this.emojiVisibility = !this.emojiVisibility;
146
+ if (this.gifVisibility || this.emojiVisibility) {
147
+ this.setupEmojiPickerClickListener();
148
+ }
149
+ }
150
+ handleGifPickerClick() {
151
+ if (this.emojiVisibility) {
152
+ this.emojiVisibility = !this.emojiVisibility;
153
+ }
154
+ this.gifVisibility = !this.gifVisibility;
155
+ if (this.gifVisibility || this.emojiVisibility) {
156
+ this.setupEmojiPickerClickListener();
157
+ }
158
+ }
159
+ onGifClick(url) {
160
+ if (this.default) {
161
+ return;
162
+ }
163
+ const newMessage = {
164
+ sender: SenderTypes.USER,
165
+ timestamp: new Date(),
166
+ message: '',
167
+ attachments: [
168
+ {
169
+ type: 'gif',
170
+ url,
171
+ },
172
+ ],
173
+ };
174
+ this.pendingMessage = newMessage;
175
+ this.onSendMessageModal();
176
+ }
177
+ onSendMessageModal() {
178
+ const modalData = {
179
+ data: {
180
+ responseTime: this.responseTime,
181
+ },
182
+ };
183
+ this.popupModalService
184
+ .show(this.ModalComponent, modalData)
185
+ .afterClose.pipe(first())
186
+ .subscribe((data) => {
187
+ this.pendingMessage.sendOptions = {
188
+ type: data.type,
189
+ arrivalDate: data.arrivalDate,
190
+ };
191
+ this.longPressEnabled = data.longPressEnabled;
192
+ this.onSend();
193
+ });
194
+ this.popupModalService.setValues({ customClass: 'message-modal-container' });
195
+ }
196
+ onSendText() {
197
+ this.savePendingMessage();
198
+ this.onSendMessageModal();
199
+ }
200
+ savePendingMessage() {
201
+ const message = this.textControl.value.trim();
202
+ if (message.trim()) {
203
+ const newMessage = {
204
+ sender: SenderTypes.USER,
205
+ timestamp: new Date(),
206
+ message: message,
207
+ attachments: [],
208
+ };
209
+ this.pendingMessage = newMessage;
210
+ }
211
+ }
212
+ onSend() {
213
+ this.gifVisibility = false;
214
+ this.emojiVisibility = false;
215
+ this.textControl.setValue('');
216
+ this.handleScrollNewMessage();
217
+ this.sendMessage.emit(this.pendingMessage);
218
+ }
219
+ onKeyDown(event) {
220
+ if (event.key === 'Enter') {
221
+ this.onSendText();
222
+ }
223
+ }
224
+ onLongPress() {
225
+ this.savePendingMessage();
226
+ this.pendingMessage.sendOptions = {
227
+ type: SendMessageType.INMEDIATELY,
228
+ arrivalDate: new Date(),
229
+ };
230
+ this.onSend();
231
+ }
232
+ onBlurPickerSpace() {
233
+ this.gifVisibility = false;
234
+ this.emojiVisibility = false;
235
+ this.cdr.markForCheck();
236
+ this.removeEmojiPickerClickListener();
237
+ }
238
+ setupEmojiPickerClickListener() {
239
+ if (this.documentClickListener)
240
+ return;
241
+ this.documentClickListener = this.renderer.listen('document', 'click', (event) => {
242
+ if (!this.elementRef.nativeElement.contains(event.target)) {
243
+ this.onBlurPickerSpace();
244
+ }
245
+ });
246
+ }
247
+ removeEmojiPickerClickListener() {
248
+ if (this.documentClickListener) {
249
+ this.documentClickListener();
250
+ this.documentClickListener = null;
251
+ }
252
+ }
253
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
254
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ChatComponent, selector: "lib-chat", inputs: { default: "default", responseTime: "responseTime", inputValue: "inputValue", emojiPickerConfig: "emojiPickerConfig", includeGifMessage: "includeGifMessage", includeTime: "includeTime", dateMessages: "dateMessages", maxLength: "maxLength", enableGifPicker: "enableGifPicker", prospectJoinDate: "prospectJoinDate", disabled: "disabled" }, outputs: { sendMessage: "sendMessage", getMessages: "getMessages" }, providers: [
255
+ {
256
+ provide: NG_VALUE_ACCESSOR,
257
+ useExisting: ChatComponent,
258
+ multi: true,
259
+ },
260
+ ], viewQueries: [{ propertyName: "emojiPickerRef", first: true, predicate: ["emojiPicker"], descendants: true }, { propertyName: "scrollableContainer", first: true, predicate: ["scrollableContainer"], descendants: true }, { propertyName: "chatInput", first: true, predicate: ["chatInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chat-component\">\r\n <div class=\"chat-container\">\r\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">\u2193</div>\r\n <div\r\n class=\"dateMessages\"\r\n #scrollableContainer\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"distance\"\r\n [infiniteScrollThrottle]=\"throttle\"\r\n [scrollWindow]=\"false\"\r\n (scrolledUp)=\"onScrollChats()\"\r\n (scroll)=\"onScrollMessages($event)\"\r\n >\r\n <div class=\"chat-item-container chat-item-container_init\">\r\n <div class=\"date-message\">\r\n <span>{{ prospectJoinDate ? (prospectJoinDate | date: 'MMM d, HH:mm') : '-' }}</span>\r\n </div>\r\n <div class=\"chat-item init-chat\">\r\n <div class=\"chat-item_text\">{{ 'CHAT.INITIAL_TEXT' | translate }}</div>\r\n </div>\r\n </div>\r\n <div\r\n *ngFor=\"let dateMessage of messages\"\r\n class=\"chat-item-container\"\r\n [class.chat-item-container_user]=\"dateMessage.message.sender === 'user'\"\r\n [class.chat-item-container_other]=\"dateMessage.message.sender === 'other'\"\r\n >\r\n <div class=\"date-message\" *ngIf=\"dateMessage.isFirstMessage && includeTime\">\r\n <span>{{ dateMessage.date | date: 'MMM d' }}</span>\r\n </div>\r\n <div class=\"chat-item\" [class.user-chat]=\"dateMessage.message.sender === 'user'\" [class.other-chat]=\"dateMessage.message.sender === 'other'\">\r\n @if (dateMessage.message.message !== '') {\r\n <div class=\"chat-item_text\">{{ dateMessage.message.message }}</div>\r\n } @else if (dateMessage.message.attachments[0].url !== '') {\r\n <img class=\"chat-item_image\" [src]=\"dateMessage.message.attachments[0].url\" alt=\"\" />\r\n }\r\n <div class=\"chat-item_timestamp\" *ngIf=\"includeTime\">\r\n {{ dateMessage.message.timestamp | date: 'shortTime' }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bottom-gradient-fade\"></div>\r\n </div>\r\n <form autocomplete=\"off\" libFocusInvalidInput *ngIf=\"textControl\" class=\"message-sender\">\r\n <lib-input-field\r\n #chatInput\r\n [formControl]=\"textControl\"\r\n [value]=\"newTextMessage\"\r\n [label]=\"\"\r\n [textarea]=\"true\"\r\n placeholder=\"Send Message to Client Prospect\"\r\n (keyDown)=\"onKeyDown($event)\"\r\n [maxLength]=\"maxLength\"\r\n >\r\n </lib-input-field>\r\n <div class=\"chat-buttons\">\r\n <div class=\"send\" libLongPress [longPressEnabled]=\"longPressEnabled\" (shortPress)=\"onSendText()\" (longPress)=\"onLongPress()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 22\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_748_3387)\">\r\n <path\r\n d=\"M14.6311 17.0545L18.3229 5.85996C18.692 4.77867 17.646 3.69738 16.6001 4.07901L5.77092 7.89533C4.54033 8.34056 4.54033 10.1215 5.83244 10.5032L9.46266 11.5208C10.2625 11.7753 10.9394 12.4113 11.1239 13.2381L12.1084 16.9908C12.4776 18.3266 14.2004 18.3266 14.6311 17.0545Z\"\r\n fill=\"url(#paint0_linear_748_3387)\"\r\n />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_748_3387\" x=\"0.85553\" y=\"0.000732422\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_3387\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_3387\" result=\"shape\" />\r\n </filter>\r\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#FE3C72\" />\r\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n </div>\r\n <lib-popup customClass=\"message-modal-container\" [isOpen]=\"toggleMessageModal\" [modalComponent]=\"ModalComponent\" [modalComponentData]=\"{ modal: {} }\"> </lib-popup>\r\n <div\r\n [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\r\n [name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\r\n (click)=\"handleEmojiPickerClick()\"\r\n [src]=\"emojiPickerConfig?.pickerIcon\"\r\n class=\"emoji\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" overflow=\"auto\">\r\n <g>\r\n <mask id=\"path-1-outside-1_422_3414\" maskUnits=\"userSpaceOnUse\" x=\"-0.72551\" y=\"-0.713776\" fill=\"url(#paint0_linear_748_3387)\">\r\n <path\r\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\r\n />\r\n </mask>\r\n <path\r\n _ngcontent-ng-c433636891=\"\"\r\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\r\n fill=\"url(#paint0_linear_748_3387)\"\r\n ></path>\r\n <path\r\n _ngcontent-ng-c433636891=\"\"\r\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\r\n stroke=\"url(#paint0_linear_748_3387)\"\r\n fill=\"url(#paint0_linear_748_3387)\"\r\n stroke-width=\"0.492535\"\r\n mask=\"url(#path-1-outside-1_422_3414)\"\r\n ></path>\r\n </g>\r\n <defs xmlns=\"http://www.w3.org/2000/svg\">\r\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\r\n </filter>\r\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#FE3C72\" />\r\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#FE3C72\" />\r\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n </div>\r\n @if (enableGifPicker) {\r\n <div class=\"gifs\" (click)=\"handleGifPickerClick()\"></div>\r\n <div class=\"gifs\" *ngIf=\"includeGifMessage\" (click)=\"handleGifPickerClick()\">\r\n <svg viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g>\r\n <path\r\n d=\"M7.055 10.9995H4.899C3.2535 10.9995 2.4305 10.9995 1.859 10.6005C1.69694 10.4873 1.55167 10.3518 1.4275 10.198C1 9.66501 1 8.89801 1 7.36301V6.09051C1 4.60901 1 3.86801 1.2365 3.27651C1.617 2.32501 2.4215 1.57501 3.4415 1.22001C4.075 0.999512 4.87 0.999512 6.4585 0.999512C7.3665 0.999512 7.82 0.999512 8.1825 1.12551C8.7655 1.32851 9.225 1.75701 9.4425 2.30051C9.5775 2.63851 9.5775 3.06201 9.5775 3.90851V4.99951\"\r\n stroke=\"url(#paint0_linear_748_3387)\"\r\n stroke-width=\"0.75\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M1 5.99951C1 5.07951 1.753 4.33301 2.682 4.33301C3.018 4.33301 3.414 4.39101 3.7405 4.30451C3.88281 4.26736 4.01278 4.19328 4.11726 4.08976C4.22174 3.98624 4.29703 3.85697 4.3355 3.71501C4.4225 3.39151 4.364 2.99901 4.364 2.66601C4.364 1.74601 5.117 0.999512 6.045 0.999512M6.046 8.99951H7.3075M4.833 6.92451C4.77 6.52451 4.6925 6.52401 4.028 6.49951H3.523C3.2445 6.49951 3.0185 6.72351 3.0185 6.99951V8.49951C3.0185 8.77551 3.2445 8.99951 3.5235 8.99951H4.4315C4.6265 8.99951 4.833 8.84301 4.833 8.64951V8.09951C4.833 8.04451 4.7765 7.94751 4.721 7.94751H4.159M6.046 6.49951H6.6765M6.6765 6.49951H7.3075M6.6765 6.49951V8.93701M10.2505 6.49951H8.989C8.7105 6.49951 8.4845 6.72351 8.4845 6.99951V7.74951M8.4845 7.74951V8.99951M8.4845 7.74951H9.746\"\r\n stroke=\"url(#paint0_linear_748_3387)\"\r\n stroke-width=\"0.75\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs xmlns=\"http://www.w3.org/2000/svg\">\r\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\r\n </filter>\r\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#FE3C72\" />\r\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#FE3C72\" />\r\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"emoji-picker-space\" [ngStyle]=\"{ 'z-index': !(gifVisibility || emojiVisibility) ? -1 : 11 }\" (blur)=\"onBlurPickerSpace()\">\r\n @if (gifVisibility && enableGifPicker) {\r\n <lib-gif-selector (selectGif)=\"onGifClick($event)\"></lib-gif-selector>\r\n }\r\n @if (emojiPickerOpened) {\r\n <emoji-picker #emojiPicker [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\" emoji-version=\"15.0\" (emoji-click)=\"onEmojiclick($event)\"></emoji-picker>\r\n }\r\n </div>\r\n </form>\r\n</div>\r\n", styles: [":host{--height-chat-conversation: 11em;--max-width-container: 27em;--color-background-dark: #1d1b21;--color-chat-other: #453945;--color-chat-user: #403b45;--color-chat-init: #fe3c72;--color-text-white: white;--color-text-gray: rgb(123, 123, 123);--color-background-emoji: #29252d;--color-gradient-start: #746b8381;--color-gradient-end: rgba(0, 0, 0, 0);font-size:clamp(0px,3.2dvw,15px);display:flex;flex-direction:column;width:100%;max-width:var(--max-width-container)}:host .chat-component{display:flex;flex-direction:column;position:relative}:host .chat-component .bottom-gradient-fade{position:absolute;bottom:0;left:0;width:100%;height:40px;background:linear-gradient(180deg,transparent,#27242c);z-index:1;pointer-events:none}:host .chat-component .chat-container{position:relative}:host .chat-component .chat-container .go-button{color:#fff;font-size:1em;position:absolute;bottom:.2em;right:.7em;background-color:var(--color-background-dark);border-radius:50%;width:2em;height:2em;display:flex;justify-content:center;align-items:center;z-index:10}:host .chat-component .chat-container .go-button:hover{cursor:pointer}:host .chat-component .chat-container .dateMessages{display:flex;flex-direction:column;gap:1em;padding-bottom:8px;padding-top:1.6em;height:var(--height-chat-conversation);width:var(--max-width-container);overflow-y:scroll}:host .chat-component .chat-container .dateMessages .chat-item-container{display:flex;flex-direction:column;gap:1em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message{width:100%;display:flex;justify-content:center;align-items:center;font-size:.861em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message span{background-color:#000;color:var(--color-text-white);border-radius:1em;padding:.5em}:host .chat-component .chat-container .dateMessages .chat-item-container_user{align-items:flex-end}:host .chat-component .chat-container .dateMessages .chat-item-container_other{align-items:flex-start}:host .chat-component .chat-container .dateMessages .chat-item-container_init{align-items:center}:host .chat-component .chat-container .dateMessages .chat-item{max-width:80%;min-height:3.5em;padding:1em;border-radius:1.076em;position:relative;box-shadow:0 4px 4px #00000040}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_text{font-size:.861em;color:var(--color-text-white);word-break:break-word;overflow-wrap:break-word;hyphens:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_image{width:7em;height:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_timestamp{margin-top:.2em;font-size:.8em;color:var(--color-text-gray);text-align:end}:host .chat-component .chat-container .dateMessages .chat-item:before{content:\"\";position:absolute;inset:0;border-radius:1.076em;padding:.05em;background:linear-gradient(180deg,var(--color-gradient-start),var(--color-gradient-end) 50%);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}:host .chat-component .chat-container .dateMessages .other-chat{background-color:var(--color-chat-other);border-bottom-left-radius:0}:host .chat-component .chat-container .dateMessages .user-chat{background-color:var(--color-chat-user);border-bottom-right-radius:0}:host .chat-component .chat-container .dateMessages .init-chat{min-height:2em;padding:.7em;background-color:var(--color-chat-init)}:host .chat-component .chat-container .dateMessages .init-chat .chat-item_text{font-size:.761em;color:#000}:host .chat-component .chat-container .dateMessages .other-chat:before{border-bottom-left-radius:0!important}:host .chat-component .chat-container .dateMessages .user-chat:before{border-bottom-right-radius:0!important}:host .message-sender{position:relative}:host .message-sender lib-input-field{--input-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--input-padding: calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*3.5) calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*1.6) ;--placeholder-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--textarea-height: calc(clamp(0px, 3.2dvw, 15px)*7) }:host .message-sender .chat-buttons .send,:host .message-sender .chat-buttons .emoji,:host .message-sender .chat-buttons .attach,:host .message-sender .chat-buttons .gifs{position:absolute;right:.6em;width:1.7em;height:1.7em;border-radius:50%;z-index:10}:host .message-sender .chat-buttons .send:hover,:host .message-sender .chat-buttons .emoji:hover,:host .message-sender .chat-buttons .attach:hover,:host .message-sender .chat-buttons .gifs:hover{cursor:pointer}:host .message-sender .chat-buttons .send{top:.9em}:host .message-sender .chat-buttons .send svg{width:1.7em;height:1.9em}:host .message-sender .chat-buttons .emoji{top:3.1em}:host .message-sender .chat-buttons .emoji svg{overflow:visible;width:2.33em;height:1.848em}:host .message-sender .chat-buttons .emoji svg mask{width:.733em;height:1.466em}:host .message-sender .chat-buttons .attach{top:5em;background-color:#87ceeb}:host .message-sender .chat-buttons .gifs{top:5em}:host .message-sender .chat-buttons .gifs svg{width:1.166em;height:1.2984em;margin-left:.25em}:host .message-sender .emoji-picker-space{position:absolute;top:-12em;height:12em;width:100%}:host .message-sender .emoji-picker-space emoji-picker{--background: var(--color-background-emoji);height:100%;width:100%;--input-font-size: .8em;--input-font-color: var(--color-text-white)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.GifSelectorComponent, selector: "lib-gif-selector", outputs: ["selectGif"] }, { kind: "component", type: i2.LibModalComponent, selector: "lib-popup", inputs: ["isOpen", "icon", "title", "message", "extendedMessage", "cancelButton", "confirmButton", "checkboxText", "progBarCurrentStep", "progBarTotalSteps", "customClass", "backdropDismiss", "modalComponent", "modalComponentData"], outputs: ["modalConfirm", "modalDismiss", "afterCloseEvent"] }, { kind: "directive", type: i5.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
261
+ }
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatComponent, decorators: [{
263
+ type: Component,
264
+ args: [{ selector: 'lib-chat', providers: [
265
+ {
266
+ provide: NG_VALUE_ACCESSOR,
267
+ useExisting: ChatComponent,
268
+ multi: true,
269
+ },
270
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"chat-component\">\r\n <div class=\"chat-container\">\r\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">\u2193</div>\r\n <div\r\n class=\"dateMessages\"\r\n #scrollableContainer\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"distance\"\r\n [infiniteScrollThrottle]=\"throttle\"\r\n [scrollWindow]=\"false\"\r\n (scrolledUp)=\"onScrollChats()\"\r\n (scroll)=\"onScrollMessages($event)\"\r\n >\r\n <div class=\"chat-item-container chat-item-container_init\">\r\n <div class=\"date-message\">\r\n <span>{{ prospectJoinDate ? (prospectJoinDate | date: 'MMM d, HH:mm') : '-' }}</span>\r\n </div>\r\n <div class=\"chat-item init-chat\">\r\n <div class=\"chat-item_text\">{{ 'CHAT.INITIAL_TEXT' | translate }}</div>\r\n </div>\r\n </div>\r\n <div\r\n *ngFor=\"let dateMessage of messages\"\r\n class=\"chat-item-container\"\r\n [class.chat-item-container_user]=\"dateMessage.message.sender === 'user'\"\r\n [class.chat-item-container_other]=\"dateMessage.message.sender === 'other'\"\r\n >\r\n <div class=\"date-message\" *ngIf=\"dateMessage.isFirstMessage && includeTime\">\r\n <span>{{ dateMessage.date | date: 'MMM d' }}</span>\r\n </div>\r\n <div class=\"chat-item\" [class.user-chat]=\"dateMessage.message.sender === 'user'\" [class.other-chat]=\"dateMessage.message.sender === 'other'\">\r\n @if (dateMessage.message.message !== '') {\r\n <div class=\"chat-item_text\">{{ dateMessage.message.message }}</div>\r\n } @else if (dateMessage.message.attachments[0].url !== '') {\r\n <img class=\"chat-item_image\" [src]=\"dateMessage.message.attachments[0].url\" alt=\"\" />\r\n }\r\n <div class=\"chat-item_timestamp\" *ngIf=\"includeTime\">\r\n {{ dateMessage.message.timestamp | date: 'shortTime' }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bottom-gradient-fade\"></div>\r\n </div>\r\n <form autocomplete=\"off\" libFocusInvalidInput *ngIf=\"textControl\" class=\"message-sender\">\r\n <lib-input-field\r\n #chatInput\r\n [formControl]=\"textControl\"\r\n [value]=\"newTextMessage\"\r\n [label]=\"\"\r\n [textarea]=\"true\"\r\n placeholder=\"Send Message to Client Prospect\"\r\n (keyDown)=\"onKeyDown($event)\"\r\n [maxLength]=\"maxLength\"\r\n >\r\n </lib-input-field>\r\n <div class=\"chat-buttons\">\r\n <div class=\"send\" libLongPress [longPressEnabled]=\"longPressEnabled\" (shortPress)=\"onSendText()\" (longPress)=\"onLongPress()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 22\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_748_3387)\">\r\n <path\r\n d=\"M14.6311 17.0545L18.3229 5.85996C18.692 4.77867 17.646 3.69738 16.6001 4.07901L5.77092 7.89533C4.54033 8.34056 4.54033 10.1215 5.83244 10.5032L9.46266 11.5208C10.2625 11.7753 10.9394 12.4113 11.1239 13.2381L12.1084 16.9908C12.4776 18.3266 14.2004 18.3266 14.6311 17.0545Z\"\r\n fill=\"url(#paint0_linear_748_3387)\"\r\n />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_748_3387\" x=\"0.85553\" y=\"0.000732422\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_3387\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_3387\" result=\"shape\" />\r\n </filter>\r\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#FE3C72\" />\r\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n </div>\r\n <lib-popup customClass=\"message-modal-container\" [isOpen]=\"toggleMessageModal\" [modalComponent]=\"ModalComponent\" [modalComponentData]=\"{ modal: {} }\"> </lib-popup>\r\n <div\r\n [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\r\n [name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\r\n (click)=\"handleEmojiPickerClick()\"\r\n [src]=\"emojiPickerConfig?.pickerIcon\"\r\n class=\"emoji\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" overflow=\"auto\">\r\n <g>\r\n <mask id=\"path-1-outside-1_422_3414\" maskUnits=\"userSpaceOnUse\" x=\"-0.72551\" y=\"-0.713776\" fill=\"url(#paint0_linear_748_3387)\">\r\n <path\r\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\r\n />\r\n </mask>\r\n <path\r\n _ngcontent-ng-c433636891=\"\"\r\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\r\n fill=\"url(#paint0_linear_748_3387)\"\r\n ></path>\r\n <path\r\n _ngcontent-ng-c433636891=\"\"\r\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\r\n stroke=\"url(#paint0_linear_748_3387)\"\r\n fill=\"url(#paint0_linear_748_3387)\"\r\n stroke-width=\"0.492535\"\r\n mask=\"url(#path-1-outside-1_422_3414)\"\r\n ></path>\r\n </g>\r\n <defs xmlns=\"http://www.w3.org/2000/svg\">\r\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\r\n </filter>\r\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#FE3C72\" />\r\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#FE3C72\" />\r\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n </div>\r\n @if (enableGifPicker) {\r\n <div class=\"gifs\" (click)=\"handleGifPickerClick()\"></div>\r\n <div class=\"gifs\" *ngIf=\"includeGifMessage\" (click)=\"handleGifPickerClick()\">\r\n <svg viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g>\r\n <path\r\n d=\"M7.055 10.9995H4.899C3.2535 10.9995 2.4305 10.9995 1.859 10.6005C1.69694 10.4873 1.55167 10.3518 1.4275 10.198C1 9.66501 1 8.89801 1 7.36301V6.09051C1 4.60901 1 3.86801 1.2365 3.27651C1.617 2.32501 2.4215 1.57501 3.4415 1.22001C4.075 0.999512 4.87 0.999512 6.4585 0.999512C7.3665 0.999512 7.82 0.999512 8.1825 1.12551C8.7655 1.32851 9.225 1.75701 9.4425 2.30051C9.5775 2.63851 9.5775 3.06201 9.5775 3.90851V4.99951\"\r\n stroke=\"url(#paint0_linear_748_3387)\"\r\n stroke-width=\"0.75\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M1 5.99951C1 5.07951 1.753 4.33301 2.682 4.33301C3.018 4.33301 3.414 4.39101 3.7405 4.30451C3.88281 4.26736 4.01278 4.19328 4.11726 4.08976C4.22174 3.98624 4.29703 3.85697 4.3355 3.71501C4.4225 3.39151 4.364 2.99901 4.364 2.66601C4.364 1.74601 5.117 0.999512 6.045 0.999512M6.046 8.99951H7.3075M4.833 6.92451C4.77 6.52451 4.6925 6.52401 4.028 6.49951H3.523C3.2445 6.49951 3.0185 6.72351 3.0185 6.99951V8.49951C3.0185 8.77551 3.2445 8.99951 3.5235 8.99951H4.4315C4.6265 8.99951 4.833 8.84301 4.833 8.64951V8.09951C4.833 8.04451 4.7765 7.94751 4.721 7.94751H4.159M6.046 6.49951H6.6765M6.6765 6.49951H7.3075M6.6765 6.49951V8.93701M10.2505 6.49951H8.989C8.7105 6.49951 8.4845 6.72351 8.4845 6.99951V7.74951M8.4845 7.74951V8.99951M8.4845 7.74951H9.746\"\r\n stroke=\"url(#paint0_linear_748_3387)\"\r\n stroke-width=\"0.75\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs xmlns=\"http://www.w3.org/2000/svg\">\r\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\r\n </filter>\r\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#FE3C72\" />\r\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#FE3C72\" />\r\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"emoji-picker-space\" [ngStyle]=\"{ 'z-index': !(gifVisibility || emojiVisibility) ? -1 : 11 }\" (blur)=\"onBlurPickerSpace()\">\r\n @if (gifVisibility && enableGifPicker) {\r\n <lib-gif-selector (selectGif)=\"onGifClick($event)\"></lib-gif-selector>\r\n }\r\n @if (emojiPickerOpened) {\r\n <emoji-picker #emojiPicker [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\" emoji-version=\"15.0\" (emoji-click)=\"onEmojiclick($event)\"></emoji-picker>\r\n }\r\n </div>\r\n </form>\r\n</div>\r\n", styles: [":host{--height-chat-conversation: 11em;--max-width-container: 27em;--color-background-dark: #1d1b21;--color-chat-other: #453945;--color-chat-user: #403b45;--color-chat-init: #fe3c72;--color-text-white: white;--color-text-gray: rgb(123, 123, 123);--color-background-emoji: #29252d;--color-gradient-start: #746b8381;--color-gradient-end: rgba(0, 0, 0, 0);font-size:clamp(0px,3.2dvw,15px);display:flex;flex-direction:column;width:100%;max-width:var(--max-width-container)}:host .chat-component{display:flex;flex-direction:column;position:relative}:host .chat-component .bottom-gradient-fade{position:absolute;bottom:0;left:0;width:100%;height:40px;background:linear-gradient(180deg,transparent,#27242c);z-index:1;pointer-events:none}:host .chat-component .chat-container{position:relative}:host .chat-component .chat-container .go-button{color:#fff;font-size:1em;position:absolute;bottom:.2em;right:.7em;background-color:var(--color-background-dark);border-radius:50%;width:2em;height:2em;display:flex;justify-content:center;align-items:center;z-index:10}:host .chat-component .chat-container .go-button:hover{cursor:pointer}:host .chat-component .chat-container .dateMessages{display:flex;flex-direction:column;gap:1em;padding-bottom:8px;padding-top:1.6em;height:var(--height-chat-conversation);width:var(--max-width-container);overflow-y:scroll}:host .chat-component .chat-container .dateMessages .chat-item-container{display:flex;flex-direction:column;gap:1em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message{width:100%;display:flex;justify-content:center;align-items:center;font-size:.861em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message span{background-color:#000;color:var(--color-text-white);border-radius:1em;padding:.5em}:host .chat-component .chat-container .dateMessages .chat-item-container_user{align-items:flex-end}:host .chat-component .chat-container .dateMessages .chat-item-container_other{align-items:flex-start}:host .chat-component .chat-container .dateMessages .chat-item-container_init{align-items:center}:host .chat-component .chat-container .dateMessages .chat-item{max-width:80%;min-height:3.5em;padding:1em;border-radius:1.076em;position:relative;box-shadow:0 4px 4px #00000040}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_text{font-size:.861em;color:var(--color-text-white);word-break:break-word;overflow-wrap:break-word;hyphens:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_image{width:7em;height:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_timestamp{margin-top:.2em;font-size:.8em;color:var(--color-text-gray);text-align:end}:host .chat-component .chat-container .dateMessages .chat-item:before{content:\"\";position:absolute;inset:0;border-radius:1.076em;padding:.05em;background:linear-gradient(180deg,var(--color-gradient-start),var(--color-gradient-end) 50%);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}:host .chat-component .chat-container .dateMessages .other-chat{background-color:var(--color-chat-other);border-bottom-left-radius:0}:host .chat-component .chat-container .dateMessages .user-chat{background-color:var(--color-chat-user);border-bottom-right-radius:0}:host .chat-component .chat-container .dateMessages .init-chat{min-height:2em;padding:.7em;background-color:var(--color-chat-init)}:host .chat-component .chat-container .dateMessages .init-chat .chat-item_text{font-size:.761em;color:#000}:host .chat-component .chat-container .dateMessages .other-chat:before{border-bottom-left-radius:0!important}:host .chat-component .chat-container .dateMessages .user-chat:before{border-bottom-right-radius:0!important}:host .message-sender{position:relative}:host .message-sender lib-input-field{--input-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--input-padding: calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*3.5) calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*1.6) ;--placeholder-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--textarea-height: calc(clamp(0px, 3.2dvw, 15px)*7) }:host .message-sender .chat-buttons .send,:host .message-sender .chat-buttons .emoji,:host .message-sender .chat-buttons .attach,:host .message-sender .chat-buttons .gifs{position:absolute;right:.6em;width:1.7em;height:1.7em;border-radius:50%;z-index:10}:host .message-sender .chat-buttons .send:hover,:host .message-sender .chat-buttons .emoji:hover,:host .message-sender .chat-buttons .attach:hover,:host .message-sender .chat-buttons .gifs:hover{cursor:pointer}:host .message-sender .chat-buttons .send{top:.9em}:host .message-sender .chat-buttons .send svg{width:1.7em;height:1.9em}:host .message-sender .chat-buttons .emoji{top:3.1em}:host .message-sender .chat-buttons .emoji svg{overflow:visible;width:2.33em;height:1.848em}:host .message-sender .chat-buttons .emoji svg mask{width:.733em;height:1.466em}:host .message-sender .chat-buttons .attach{top:5em;background-color:#87ceeb}:host .message-sender .chat-buttons .gifs{top:5em}:host .message-sender .chat-buttons .gifs svg{width:1.166em;height:1.2984em;margin-left:.25em}:host .message-sender .emoji-picker-space{position:absolute;top:-12em;height:12em;width:100%}:host .message-sender .emoji-picker-space emoji-picker{--background: var(--color-background-emoji);height:100%;width:100%;--input-font-size: .8em;--input-font-color: var(--color-text-white)}\n"] }]
271
+ }], propDecorators: { default: [{
272
+ type: Input
273
+ }], responseTime: [{
274
+ type: Input
275
+ }], inputValue: [{
276
+ type: Input
277
+ }], emojiPickerConfig: [{
278
+ type: Input
279
+ }], includeGifMessage: [{
280
+ type: Input
281
+ }], includeTime: [{
282
+ type: Input
283
+ }], dateMessages: [{
284
+ type: Input
285
+ }], maxLength: [{
286
+ type: Input
287
+ }], enableGifPicker: [{
288
+ type: Input
289
+ }], prospectJoinDate: [{
290
+ type: Input
291
+ }], sendMessage: [{
292
+ type: Output
293
+ }], getMessages: [{
294
+ type: Output
295
+ }], disabled: [{
296
+ type: Input
297
+ }], emojiPickerRef: [{
298
+ type: ViewChild,
299
+ args: ['emojiPicker']
300
+ }], scrollableContainer: [{
301
+ type: ViewChild,
302
+ args: ['scrollableContainer']
303
+ }], chatInput: [{
304
+ type: ViewChild,
305
+ args: ['chatInput']
306
+ }] } });
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY2hhdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY2hhdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDckcsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQWV0RSxNQUFNLE9BQU8sYUFBYTtJQWIxQjtRQWNXLFlBQU8sR0FBYSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBWSxhQUFhLENBQUM7UUFTL0MscURBQXFEO1FBQzVDLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUMzQyxvREFBb0Q7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RUcsV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxRQUFRO3NCQUFoQixLQUFLO2dCQUVvQixjQUFjO3NCQUF2QyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ1UsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFDUixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCAnZW1vamktcGlja2VyLWVsZW1lbnQnO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbW9qaVBpY2tlckNvbmZpZyB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInO1xyXG5pbXBvcnQgeyBMaWJNZXNzYWdlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkL21lc3NhZ2UtbW9kYWwvbWVzc2FnZS1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dEZpZWxkQ29tcG9uZW50LCBQb3B1cE1vZGFsU2VydmljZSB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInO1xyXG5pbXBvcnQgeyBDaGF0U2VydmljZSB9IGZyb20gJy4vY2hhdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VuZGVyVHlwZXMgfSBmcm9tICcuL2VudW1zL3NlbmRlci10eXBlcy5lbnVtJztcclxuaW1wb3J0IHsgSURhdGVNZXNzYWdlcyB9IGZyb20gJy4vaW50ZXJmYWNlcy9kYXRlLW1lc3NhZ2VzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IElNZXNzYWdlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL21lc3NhZ2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU2VuZE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3R5cGUtc2VuZC1tZXNzYWdlLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY2hhdCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ2hhdENvbXBvbmVudCxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBkZWZhdWx0PzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlVGltZT86IHN0cmluZyA9ICcwNWggMDRtIDM1cyc7XHJcbiAgLy8gUHJlLWZpbGxlZCBpbnB1dCB2YWx1ZVxyXG4gIEBJbnB1dCgpIHNldCBpbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnRleHRDb250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gQ29uZmlndXJhdGlvbiBvZiBlbW9qaVBpY2tlci4gTXVzdCBiZSBhZGRlZFxyXG4gIEBJbnB1dCgpIGVtb2ppUGlja2VyQ29uZmlnOiBFbW9qaVBpY2tlckNvbmZpZztcclxuICAvLyB3aGV0aGVyIGdpZnMgYXMgYSBtZXNzYWdlIHNob3VsZCBiZSBhbGxvd2VkIG9yIG5vdFxyXG4gIEBJbnB1dCgpIGluY2x1ZGVHaWZNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcclxuICAvLyB3aGV0aGVyIHRpbWVzdGFtcCBzdHlsZXMgc2hvdWxkIGJlIGFsbG93ZWQgb3Igbm90XHJcbiAgQElucHV0KCkgaW5jbHVkZVRpbWU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8vIGludGVyZmFjZSBmb3IgbWVzc2FnZXMgdG8gZ3JvdXBtIHRoZW0gaW4gZGF0ZXNcclxuICBASW5wdXQoKSBzZXQgZGF0ZU1lc3NhZ2VzKHZhbHVlOiBJTWVzc2FnZVtdKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5jaGF0U2VydmljZS50cmFuc2Zvcm1NZXNzYWdlcyh2YWx1ZSk7XHJcbiAgfVxyXG4gIC8vIG1heCBsZW5ndGggZm9yIHRleHRhcmVhIGlucHV0XHJcbiAgQElucHV0KCkgbWF4TGVuZ3RoOiBudW1iZXIgPSAxMDA7XHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZUdpZlBpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBwcm9zcGVjdEpvaW5EYXRlOiBEYXRlO1xyXG5cclxuICAvLyBzZW5kIG1lc3NhZ2UgZW1pdHRlclxyXG4gIEBPdXRwdXQoKSBzZW5kTWVzc2FnZSA9IG5ldyBFdmVudEVtaXR0ZXI8SU1lc3NhZ2U+KCk7XHJcbiAgLy8gc2Nyb2xsZXItdXAgZXZlbnQgdG8gZ2V0IG9sZGVyIG1lc3NhZ2VzXHJcbiAgQE91dHB1dCgpIGdldE1lc3NhZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCdlbW9qaVBpY2tlcicpIGVtb2ppUGlja2VyUmVmOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbGFibGVDb250YWluZXInKSBzY3JvbGxhYmxlQ29udGFpbmVyOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NoYXRJbnB1dCcpIGNoYXRJbnB1dDogSW5wdXRGaWVsZENvbXBvbmVudDtcclxuXHJcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuICBwcml2YXRlIHBvcHVwTW9kYWxTZXJ2aWNlID0gaW5qZWN0KFBvcHVwTW9kYWxTZXJ2aWNlKTtcclxuICBwcml2YXRlIGNoYXRTZXJ2aWNlID0gaW5qZWN0KENoYXRTZXJ2aWNlKTtcclxuICBwcml2YXRlIHBlbmRpbmdNZXNzYWdlOiBJTWVzc2FnZSB8IG51bGw7XHJcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xyXG5cclxuICBwdWJsaWMgc2Nyb2xsVGhyZXNob2xkID0gMjAwO1xyXG4gIHB1YmxpYyBtZXNzYWdlczogSURhdGVNZXNzYWdlc1tdID0gW107XHJcblxyXG4gIHB1YmxpYyB0ZXh0Q29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nPiA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcblxyXG4gIHB1YmxpYyBiYXNlNjRJbWFnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHB1YmxpYyBlbW9qaVZpc2liaWxpdHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZ2lmVmlzaWJpbGl0eTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc0F0U3RhcnRDaGF0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGVtb2ppUGlja2VyT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBwb3M6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwdWJsaWMgbG9uZ1ByZXNzRW5hYmxlZDogYm9vbGVhbjtcclxuICBwdWJsaWMgdGhyb3R0bGUgPSAwO1xyXG4gIHB1YmxpYyBkaXN0YW5jZSA9IDA7XHJcbiAgcHVibGljIHJlYWRvbmx5IE1vZGFsQ29tcG9uZW50ID0gTGliTWVzc2FnZU1vZGFsQ29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnByb3NwZWN0Sm9pbkRhdGUpIHtcclxuICAgICAgdGhpcy5wcm9zcGVjdEpvaW5EYXRlID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYXRTZXJ2aWNlLmlzTG9uZ1ByZXNzRm9yU2VuZEltbWVkaWF0ZWx5KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMubG9uZ1ByZXNzRW5hYmxlZCA9IHJlcztcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudGV4dENvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUVtb2ppUGlja2VyQ2xpY2tMaXN0ZW5lcigpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZW1vamlQaWNrZXJDb25maWc/LnN0eWxlKSB7XHJcbiAgICAgIGlmICh0aGlzLmVtb2ppUGlja2VyUmVmPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gdGhpcy5lbW9qaVBpY2tlckNvbmZpZy5zdHlsZTtcclxuICAgICAgICB0aGlzLmVtb2ppUGlja2VyUmVmLm5hdGl2ZUVsZW1lbnQuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzdHlsZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2Nyb2xsYWJsZUNvbnRhaW5lcikgcmV0dXJuO1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5zY3JvbGxhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBzY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xyXG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyLnNjcm9sbEhlaWdodDtcclxuICAgIGNvbnN0IGNsaWVudEhlaWdodCA9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XHJcblxyXG4gICAgaWYgKCEoc2Nyb2xsVG9wIDwgc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0IC0gdGhpcy5zY3JvbGxUaHJlc2hvbGQpKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgICAgfSwgMjAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNjcm9sbENoYXRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRNZXNzYWdlcy5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU2Nyb2xsTmV3TWVzc2FnZSgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuaXNBdFN0YXJ0Q2hhdCkgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsTWVzc2FnZXMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnNjcm9sbGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgY29uc3QgY2xpZW50SGVpZ2h0ID0gY29udGFpbmVyLmNsaWVudEhlaWdodDtcclxuXHJcbiAgICB0aGlzLmlzQXRTdGFydENoYXQgPSBzY3JvbGxUb3AgPCBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgLSB0aGlzLnNjcm9sbFRocmVzaG9sZDtcclxuICB9XHJcblxyXG4gIHNjcm9sbFRvQm90dG9tKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5zY3JvbGxhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbEhlaWdodDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkVtb2ppY2xpY2soZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBlbW9qaSA9IGV2ZW50LmRldGFpbC51bmljb2RlO1xyXG4gICAgaWYgKHRoaXMuY2hhdElucHV0LmlucHV0RmllbGRSZWYpIHtcclxuICAgICAgY29uc3QgdGV4dEFyZWFFbGVtZW50ID0gdGhpcy5jaGF0SW5wdXQuaW5wdXRGaWVsZFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBjb25zdCBzdGFydCA9IHRleHRBcmVhRWxlbWVudC5zZWxlY3Rpb25TdGFydCA/PyAwO1xyXG4gICAgICBjb25zdCBlbmQgPSB0ZXh0QXJlYUVsZW1lbnQuc2VsZWN0aW9uRW5kID8/IDA7XHJcblxyXG4gICAgICBjb25zdCBjdXJyZW50VGV4dCA9IHRoaXMudGV4dENvbnRyb2wudmFsdWUgfHwgJyc7XHJcbiAgICAgIGNvbnN0IG5ld1RleHQgPSBjdXJyZW50VGV4dC5zbGljZSgwLCBzdGFydCkgKyBlbW9qaSArIGN1cnJlbnRUZXh0LnNsaWNlKGVuZCk7XHJcblxyXG4gICAgICB0aGlzLnRleHRDb250cm9sLnNldFZhbHVlKG5ld1RleHQpO1xyXG5cclxuICAgICAgLy8gUmVwb3NpY2lvbmEgZWwgY3Vyc29yIGRlc3B1w6lzIGRlbCBlbW9qaVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0ZXh0QXJlYUVsZW1lbnQuZm9jdXMoKTsgLy8gQXNlZ3VyYSBxdWUgZWwgdGV4dGFyZWEgcmVjdXBlcmUgZWwgZm9jb1xyXG4gICAgICAgIHRleHRBcmVhRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCArIGVtb2ppLmxlbmd0aCwgc3RhcnQgKyBlbW9qaS5sZW5ndGgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVFbW9qaVBpY2tlckNsaWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGVmYXVsdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbW9qaVBpY2tlck9wZW5lZCA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuZ2lmVmlzaWJpbGl0eSkge1xyXG4gICAgICB0aGlzLmdpZlZpc2liaWxpdHkgPSAhdGhpcy5naWZWaXNpYmlsaXR5O1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbW9qaVZpc2liaWxpdHkgPSAhdGhpcy5lbW9qaVZpc2liaWxpdHk7XHJcblxyXG4gICAgaWYgKHRoaXMuZ2lmVmlzaWJpbGl0eSB8fCB0aGlzLmVtb2ppVmlzaWJpbGl0eSkge1xyXG4gICAgICB0aGlzLnNldHVwRW1vamlQaWNrZXJDbGlja0xpc3RlbmVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlR2lmUGlja2VyQ2xpY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbW9qaVZpc2liaWxpdHkpIHtcclxuICAgICAgdGhpcy5lbW9qaVZpc2liaWxpdHkgPSAhdGhpcy5lbW9qaVZpc2liaWxpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5naWZWaXNpYmlsaXR5ID0gIXRoaXMuZ2lmVmlzaWJpbGl0eTtcclxuXHJcbiAgICBpZiAodGhpcy5naWZWaXNpYmlsaXR5IHx8IHRoaXMuZW1vamlWaXNpYmlsaXR5KSB7XHJcbiAgICAgIHRoaXMuc2V0dXBFbW9qaVBpY2tlckNsaWNrTGlzdGVuZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkdpZkNsaWNrKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IG5ld01lc3NhZ2U6IElNZXNzYWdlID0ge1xyXG4gICAgICBzZW5kZXI6IFNlbmRlclR5cGVzLlVTRVIsXHJcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcclxuICAgICAgbWVzc2FnZTogJycsXHJcbiAgICAgIGF0dGFjaG1lbnRzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogJ2dpZicsXHJcbiAgICAgICAgICB1cmwsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5wZW5kaW5nTWVzc2FnZSA9IG5ld01lc3NhZ2U7XHJcbiAgICB0aGlzLm9uU2VuZE1lc3NhZ2VNb2RhbCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2VuZE1lc3NhZ2VNb2RhbCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG1vZGFsRGF0YSA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHJlc3BvbnNlVGltZTogdGhpcy5yZXNwb25zZVRpbWUsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wb3B1cE1vZGFsU2VydmljZVxyXG4gICAgICAuc2hvdyh0aGlzLk1vZGFsQ29tcG9uZW50LCBtb2RhbERhdGEpXHJcbiAgICAgIC5hZnRlckNsb3NlLnBpcGUoZmlyc3QoKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMucGVuZGluZ01lc3NhZ2Uuc2VuZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICB0eXBlOiBkYXRhLnR5cGUsXHJcbiAgICAgICAgICBhcnJpdmFsRGF0ZTogZGF0YS5hcnJpdmFsRGF0ZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmxvbmdQcmVzc0VuYWJsZWQgPSBkYXRhLmxvbmdQcmVzc0VuYWJsZWQ7XHJcblxyXG4gICAgICAgIHRoaXMub25TZW5kKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5wb3B1cE1vZGFsU2VydmljZS5zZXRWYWx1ZXMoeyBjdXN0b21DbGFzczogJ21lc3NhZ2UtbW9kYWwtY29udGFpbmVyJyB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNlbmRUZXh0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zYXZlUGVuZGluZ01lc3NhZ2UoKTtcclxuICAgIHRoaXMub25TZW5kTWVzc2FnZU1vZGFsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZVBlbmRpbmdNZXNzYWdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudGV4dENvbnRyb2wudmFsdWUudHJpbSgpO1xyXG4gICAgaWYgKG1lc3NhZ2UudHJpbSgpKSB7XHJcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2U6IElNZXNzYWdlID0ge1xyXG4gICAgICAgIHNlbmRlcjogU2VuZGVyVHlwZXMuVVNFUixcclxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICBhdHRhY2htZW50czogW10sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnBlbmRpbmdNZXNzYWdlID0gbmV3TWVzc2FnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNlbmQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdpZlZpc2liaWxpdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuZW1vamlWaXNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnRleHRDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuaGFuZGxlU2Nyb2xsTmV3TWVzc2FnZSgpO1xyXG4gICAgdGhpcy5zZW5kTWVzc2FnZS5lbWl0KHRoaXMucGVuZGluZ01lc3NhZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLm9uU2VuZFRleHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Mb25nUHJlc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNhdmVQZW5kaW5nTWVzc2FnZSgpO1xyXG4gICAgdGhpcy5wZW5kaW5nTWVzc2FnZS5zZW5kT3B0aW9ucyA9IHtcclxuICAgICAgdHlwZTogU2VuZE1lc3NhZ2VUeXBlLklOTUVESUFURUxZLFxyXG4gICAgICBhcnJpdmFsRGF0ZTogbmV3IERhdGUoKSxcclxuICAgIH07XHJcbiAgICB0aGlzLm9uU2VuZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkJsdXJQaWNrZXJTcGFjZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2lmVmlzaWJpbGl0eSA9IGZhbHNlO1xyXG4gICAgdGhpcy5lbW9qaVZpc2liaWxpdHkgPSBmYWxzZTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZW1vdmVFbW9qaVBpY2tlckNsaWNrTGlzdGVuZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBFbW9qaVBpY2tlckNsaWNrTGlzdGVuZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogRXZlbnQpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgICAgdGhpcy5vbkJsdXJQaWNrZXJTcGFjZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRW1vamlQaWNrZXJDbGlja0xpc3RlbmVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNoYXQtY29tcG9uZW50XCI+XHJcbiAgPGRpdiBjbGFzcz1cImNoYXQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZ28tYnV0dG9uXCIgKm5nSWY9XCJpc0F0U3RhcnRDaGF0XCIgKGNsaWNrKT1cInNjcm9sbFRvQm90dG9tKClcIj7ihpM8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkYXRlTWVzc2FnZXNcIlxyXG4gICAgICAjc2Nyb2xsYWJsZUNvbnRhaW5lclxyXG4gICAgICBpbmZpbml0ZVNjcm9sbFxyXG4gICAgICBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCJkaXN0YW5jZVwiXHJcbiAgICAgIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cInRocm90dGxlXCJcclxuICAgICAgW3Njcm9sbFdpbmRvd109XCJmYWxzZVwiXHJcbiAgICAgIChzY3JvbGxlZFVwKT1cIm9uU2Nyb2xsQ2hhdHMoKVwiXHJcbiAgICAgIChzY3JvbGwpPVwib25TY3JvbGxNZXNzYWdlcygkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImNoYXQtaXRlbS1jb250YWluZXIgY2hhdC1pdGVtLWNvbnRhaW5lcl9pbml0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtbWVzc2FnZVwiPlxyXG4gICAgICAgICAgPHNwYW4+e3sgcHJvc3BlY3RKb2luRGF0ZSA/IChwcm9zcGVjdEpvaW5EYXRlIHwgZGF0ZTogJ01NTSBkLCBISDptbScpIDogJy0nIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGF0LWl0ZW0gaW5pdC1jaGF0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1pdGVtX3RleHRcIj57eyAnQ0hBVC5JTklUSUFMX1RFWFQnIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRhdGVNZXNzYWdlIG9mIG1lc3NhZ2VzXCJcclxuICAgICAgICBjbGFzcz1cImNoYXQtaXRlbS1jb250YWluZXJcIlxyXG4gICAgICAgIFtjbGFzcy5jaGF0LWl0ZW0tY29udGFpbmVyX3VzZXJdPVwiZGF0ZU1lc3NhZ2UubWVzc2FnZS5zZW5kZXIgPT09ICd1c2VyJ1wiXHJcbiAgICAgICAgW2NsYXNzLmNoYXQtaXRlbS1jb250YWluZXJfb3RoZXJdPVwiZGF0ZU1lc3NhZ2UubWVzc2FnZS5zZW5kZXIgPT09ICdvdGhlcidcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtbWVzc2FnZVwiICpuZ0lmPVwiZGF0ZU1lc3NhZ2UuaXNGaXJzdE1lc3NhZ2UgJiYgaW5jbHVkZVRpbWVcIj5cclxuICAgICAgICAgIDxzcGFuPnt7IGRhdGVNZXNzYWdlLmRhdGUgfCBkYXRlOiAnTU1NIGQnIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGF0LWl0ZW1cIiBbY2xhc3MudXNlci1jaGF0XT1cImRhdGVNZXNzYWdlLm1lc3NhZ2Uuc2VuZGVyID09PSAndXNlcidcIiBbY2xhc3Mub3RoZXItY2hhdF09XCJkYXRlTWVzc2FnZS5tZXNzYWdlLnNlbmRlciA9PT0gJ290aGVyJ1wiPlxyXG4gICAgICAgICAgQGlmIChkYXRlTWVzc2FnZS5tZXNzYWdlLm1lc3NhZ2UgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGF0LWl0ZW1fdGV4dFwiPnt7IGRhdGVNZXNzYWdlLm1lc3NhZ2UubWVzc2FnZSB9fTwvZGl2PlxyXG4gICAgICAgICAgfSBAZWxzZSBpZiAoZGF0ZU1lc3NhZ2UubWVzc2FnZS5hdHRhY2htZW50c1swXS51cmwgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJjaGF0LWl0ZW1faW1hZ2VcIiBbc3JjXT1cImRhdGVNZXNzYWdlLm1lc3NhZ2UuYXR0YWNobWVudHNbMF0udXJsXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGF0LWl0ZW1fdGltZXN0YW1wXCIgKm5nSWY9XCJpbmNsdWRlVGltZVwiPlxyXG4gICAgICAgICAgICB7eyBkYXRlTWVzc2FnZS5tZXNzYWdlLnRpbWVzdGFtcCB8IGRhdGU6ICdzaG9ydFRpbWUnIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJib3R0b20tZ3JhZGllbnQtZmFkZVwiPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGxpYkZvY3VzSW52YWxpZElucHV0ICpuZ0lmPVwidGV4dENvbnRyb2xcIiBjbGFzcz1cIm1lc3NhZ2Utc2VuZGVyXCI+XHJcbiAgICA8bGliLWlucHV0LWZpZWxkXHJcbiAgICAgICNjaGF0SW5wdXRcclxuICAgICAgW2Zvcm1Db250cm9sXT1cInRleHRDb250cm9sXCJcclxuICAgICAgW3ZhbHVlXT1cIm5ld1RleHRNZXNzYWdlXCJcclxuICAgICAgW2xhYmVsXT1cIlwiXHJcbiAgICAgIFt0ZXh0YXJlYV09XCJ0cnVlXCJcclxuICAgICAgcGxhY2Vob2xkZXI9XCJTZW5kIE1lc3NhZ2UgdG8gQ2xpZW50IFByb3NwZWN0XCJcclxuICAgICAgKGtleURvd24pPVwib25LZXlEb3duKCRldmVudClcIlxyXG4gICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXHJcbiAgICA+XHJcbiAgICA8L2xpYi1pbnB1dC1maWVsZD5cclxuICAgIDxkaXYgY2xhc3M9XCJjaGF0LWJ1dHRvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlbmRcIiBsaWJMb25nUHJlc3MgW2xvbmdQcmVzc0VuYWJsZWRdPVwibG9uZ1ByZXNzRW5hYmxlZFwiIChzaG9ydFByZXNzKT1cIm9uU2VuZFRleHQoKVwiIChsb25nUHJlc3MpPVwib25Mb25nUHJlc3MoKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjMgMjJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNzQ4XzMzODcpXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xNC42MzExIDE3LjA1NDVMMTguMzIyOSA1Ljg1OTk2QzE4LjY5MiA0Ljc3ODY3IDE3LjY0NiAzLjY5NzM4IDE2LjYwMDEgNC4wNzkwMUw1Ljc3MDkyIDcuODk1MzNDNC41NDAzMyA4LjM0MDU2IDQuNTQwMzMgMTAuMTIxNSA1LjgzMjQ0IDEwLjUwMzJMOS40NjI2NiAxMS41MjA4QzEwLjI2MjUgMTEuNzc1MyAxMC45Mzk0IDEyLjQxMTMgMTEuMTIzOSAxMy4yMzgxTDEyLjEwODQgMTYuOTkwOEMxMi40Nzc2IDE4LjMyNjYgMTQuMjAwNCAxOC4zMjY2IDE0LjYzMTEgMTcuMDU0NVpcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZz5cclxuICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzc0OF8zMzg3XCIgeD1cIjAuODU1NTNcIiB5PVwiMC4wMDA3MzI0MjJcIiBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxyXG4gICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cclxuICAgICAgICAgICAgICA8ZmVPZmZzZXQgLz5cclxuICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMlwiIC8+XHJcbiAgICAgICAgICAgICAgPGZlQ29tcG9zaXRlIGluMj1cImhhcmRBbHBoYVwiIG9wZXJhdG9yPVwib3V0XCIgLz5cclxuICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMC4wOTYxNTM4IDAgMCAwIDAgMC41OTMyNjkgMCAwIDAgMSAwXCIgLz5cclxuICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0OF8zMzg3XCIgLz5cclxuICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0OF8zMzg3XCIgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwicGFpbnQwX2xpbmVhcl83NDhfMzM4N1wiIHgxPVwiMTguNTEzNFwiIHkxPVwiMi44MTA5N1wiIHgyPVwiMC4xNjI3NzNcIiB5Mj1cIjM1LjM1NTZcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cclxuICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZFM0M3MlwiIC8+XHJcbiAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMC4zODQ2MTVcIiBzdG9wLWNvbG9yPVwiI0ZGQjVFOVwiIC8+XHJcbiAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bGliLXBvcHVwIGN1c3RvbUNsYXNzPVwibWVzc2FnZS1tb2RhbC1jb250YWluZXJcIiBbaXNPcGVuXT1cInRvZ2dsZU1lc3NhZ2VNb2RhbFwiIFttb2RhbENvbXBvbmVudF09XCJNb2RhbENvbXBvbmVudFwiIFttb2RhbENvbXBvbmVudERhdGFdPVwieyBtb2RhbDoge30gfVwiPiA8L2xpYi1wb3B1cD5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Vtb2ppLXBpY2tlci10cmlnZ2VyJzogdHJ1ZSwgYWN0aXZlOiBlbW9qaVZpc2liaWxpdHkgfVwiXHJcbiAgICAgICAgW25hbWVdPVwiZW1vamlQaWNrZXJDb25maWc/LnBpY2tlckljb24gPyAnJyA6ICdib2R5LW91dGxpbmUnXCJcclxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlRW1vamlQaWNrZXJDbGljaygpXCJcclxuICAgICAgICBbc3JjXT1cImVtb2ppUGlja2VyQ29uZmlnPy5waWNrZXJJY29uXCJcclxuICAgICAgICBjbGFzcz1cImVtb2ppXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIG92ZXJmbG93PVwiYXV0b1wiPlxyXG4gICAgICAgICAgPGc+XHJcbiAgICAgICAgICAgIDxtYXNrIGlkPVwicGF0aC0xLW91dHNpZGUtMV80MjJfMzQxNFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIi0wLjcyNTUxXCIgeT1cIi0wLjcxMzc3NlwiIGZpbGw9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNNS4xMzA1NyAwLjI4NjIyNEM3LjgxMjUzIDAuMjg2MjI0IDkuOTg2NjUgMi41MzM3MyA5Ljk4NjY1IDUuMzA2MjNDOS45ODY2NSA4LjA3ODIzIDcuODEyMDUgMTAuMzI1MiA1LjEzMDU3IDEwLjMyNTJDMi40NDg2MSAxMC4zMjU3IDAuMjc0NDkgOC4wNzgyMyAwLjI3NDQ5IDUuMzA2MjNDMC4yNzQ0OSAyLjUzMzczIDIuNDQ4NjEgMC4yODYyMjQgNS4xMzA1NyAwLjI4NjIyNFpNNS4xMzA1NyAxLjAzOTA4QzQuNTg0NzYgMS4wMzI5NiA0LjA0MzIgMS4xMzg4IDMuNTM3MjMgMS4zNTA0OUMzLjAzMTI2IDEuNTYyMTggMi41NzA5MiAxLjg3NTUgMi4xODI4NyAyLjI3MjMzQzEuNzk0ODIgMi42NjkxNSAxLjQ4Njc1IDMuMTQxNiAxLjI3NjUgMy42NjIzM0MxLjA2NjI1IDQuMTgzMDUgMC45NTc5OSA0Ljc0MTcyIDAuOTU3OTkgNS4zMDU5OEMwLjk1Nzk5IDUuODcwMjUgMS4wNjYyNSA2LjQyODkxIDEuMjc2NSA2Ljk0OTY0QzEuNDg2NzUgNy40NzAzNiAxLjc5NDgyIDcuOTQyODEgMi4xODI4NyA4LjMzOTY0QzIuNTcwOTIgOC43MzY0NiAzLjAzMTI2IDkuMDQ5NzkgMy41MzcyMyA5LjI2MTQ3QzQuMDQzMiA5LjQ3MzE2IDQuNTg0NzYgOS41NzkwMSA1LjEzMDU3IDkuNTcyODlDNi4yMTc1MiA5LjU2MDcgNy4yNTU5NCA5LjEwNTc5IDguMDIwMzkgOC4zMDY5MUM4Ljc4NDg1IDcuNTA4MDQgOS4yMTM2MiA2LjQyOTY5IDkuMjEzNjIgNS4zMDU5OEM5LjIxMzYyIDQuMTgyMjggOC43ODQ4NSAzLjEwMzkzIDguMDIwMzkgMi4zMDUwNUM3LjI1NTk0IDEuNTA2MTggNi4yMTc1MiAxLjA1MTI2IDUuMTMwNTcgMS4wMzkwOFpNMy40MTI4MyA2LjcwMzAyQzMuNjE3MTggNi45NzE5MyAzLjg3ODAzIDcuMTg5MjUgNC4xNzU2MyA3LjMzODU1QzQuNDczMjMgNy40ODc4NSA0Ljc5OTc4IDcuNTY1MjIgNS4xMzA1NyA3LjU2NDc5QzUuNDYxIDcuNTY1MiA1Ljc4NzIxIDcuNDg3OTggNi4wODQ1MyA3LjMzODk1QzYuMzgxODYgNy4xODk5MiA2LjY0MjUzIDYuOTcyOTggNi44NDY4NSA2LjcwNDUzQzYuODc2NSA2LjY2NTc0IDYuOTEzMjUgNi42MzMzNyA2Ljk1NSA2LjYwOTI2QzYuOTk2NzUgNi41ODUxNSA3LjA0MjY4IDYuNTY5NzggNy4wOTAxOCA2LjU2NDAzQzcuMTM3NjcgNi41NTgyNyA3LjE4NTggNi41NjIyNCA3LjIzMTgxIDYuNTc1NzFDNy4yNzc4MiA2LjU4OTE5IDcuMzIwODIgNi42MTE5IDcuMzU4MzQgNi42NDI1NEM3LjM5NTg2IDYuNjczMTkgNy40MjcxNyA2LjcxMTE4IDcuNDUwNDkgNi43NTQzNEM3LjQ3MzgxIDYuNzk3NSA3LjQ4ODY4IDYuODQ0OTggNy40OTQyNSA2Ljg5NDA4QzcuNDk5ODIgNi45NDMxOCA3LjQ5NTk4IDYuOTkyOTMgNy40ODI5NCA3LjA0MDVDNy40Njk5MSA3LjA4ODA2IDcuNDQ3OTUgNy4xMzI1MSA3LjQxODMgNy4xNzEzQzcuMTQ1ODIgNy41Mjg5NyA2Ljc5ODMzIDcuODE4IDYuNDAyMDIgOC4wMTY1OEM2LjAwNTcyIDguMjE1MTYgNS41NzA5NyA4LjMxODEgNS4xMzA1NyA4LjMxNzY0QzQuNjg5NTMgOC4zMTgwOCA0LjI1NDE2IDguMjE0ODQgMy44NTc0IDguMDE1NzJDMy40NjA2NCA3LjgxNjYgMy4xMTI4NyA3LjUyNjgxIDIuODQwNDIgNy4xNjgyOEMyLjgxMDgzIDcuMTI5NDMgMi43ODg5NCA3LjA4NDkzIDIuNzc1OTkgNy4wMzczM0MyLjc2MzA0IDYuOTg5NzMgMi43NTkyOSA2LjkzOTk2IDIuNzY0OTUgNi44OTA4NkMyLjc3MDYxIDYuODQxNzYgMi43ODU1NiA2Ljc5NDMgMi44MDg5NyA2Ljc1MTE3QzIuODMyMzcgNi43MDgwNSAyLjg2Mzc2IDYuNjcwMTEgMi45MDEzNSA2LjYzOTUzQzIuOTM4OTMgNi42MDg5NSAyLjk4MTk4IDYuNTg2MzIgMy4wMjgwMiA2LjU3MjkzQzMuMDc0MDcgNi41NTk1NSAzLjEyMjIxIDYuNTU1NjcgMy4xNjk3MSA2LjU2MTUyQzMuMjE3MjEgNi41NjczNyAzLjI2MzEyIDYuNTgyODMgMy4zMDQ4NCA2LjYwNzAyQzMuMzQ2NTUgNi42MzEyMiAzLjM4MzI1IDYuNjYzNjcgMy40MTI4MyA2LjcwMjUyVjYuNzAzMDJaTTMuNjc0MDQgMy42NzUwNkMzLjc1NTE1IDMuNjcyNjggMy44MzU4OSAzLjY4NzE1IDMuOTExNSAzLjcxNzZDMy45ODcxMSAzLjc0ODA1IDQuMDU2MDQgMy43OTM4NiA0LjExNDIyIDMuODUyMzNDNC4xNzI0MSAzLjkxMDggNC4yMTg2NiAzLjk4MDczIDQuMjUwMjQgNC4wNThDNC4yODE4MiA0LjEzNTI3IDQuMjk4MDkgNC4yMTgzIDQuMjk4MDkgNC4zMDIxOEM0LjI5ODA5IDQuMzg2MDYgNC4yODE4MiA0LjQ2OTA5IDQuMjUwMjQgNC41NDYzNkM0LjIxODY2IDQuNjIzNjMgNC4xNzI0MSA0LjY5MzU2IDQuMTE0MjIgNC43NTIwM0M0LjA1NjA0IDQuODEwNSAzLjk4NzExIDQuODU2MzEgMy45MTE1IDQuODg2NzZDMy44MzU4OSA0LjkxNzIxIDMuNzU1MTUgNC45MzE2OCAzLjY3NDA0IDQuOTI5MzFDMy41MTYxMiA0LjkyNDY5IDMuMzY2MTYgNC44NTY1OSAzLjI1NjA0IDQuNzM5NDhDMy4xNDU5MiA0LjYyMjM4IDMuMDg0MzEgNC40NjU1IDMuMDg0MzEgNC4zMDIxOEMzLjA4NDMxIDQuMTM4ODYgMy4xNDU5MiAzLjk4MTk4IDMuMjU2MDQgMy44NjQ4OEMzLjM2NjE2IDMuNzQ3NzcgMy41MTYxMiAzLjY3OTY4IDMuNjc0MDQgMy42NzUwNlpNNi41ODcxIDMuNjc1MDZDNi42NjgyMSAzLjY3MjY4IDYuNzQ4OTYgMy42ODcxNSA2LjgyNDU3IDMuNzE3NkM2LjkwMDE4IDMuNzQ4MDUgNi45NjkxMSAzLjc5Mzg2IDcuMDI3MjkgMy44NTIzM0M3LjA4NTQ3IDMuOTEwOCA3LjEzMTcyIDMuOTgwNzMgNy4xNjMzIDQuMDU4QzcuMTk0ODggNC4xMzUyNyA3LjIxMTE2IDQuMjE4MyA3LjIxMTE2IDQuMzAyMThDNy4yMTExNiA0LjM4NjA2IDcuMTk0ODggNC40NjkwOSA3LjE2MzMgNC41NDYzNkM3LjEzMTcyIDQuNjIzNjMgNy4wODU0NyA0LjY5MzU2IDcuMDI3MjkgNC43NTIwM0M2Ljk2OTExIDQuODEwNSA2LjkwMDE4IDQuODU2MzEgNi44MjQ1NyA0Ljg4Njc2QzYuNzQ4OTYgNC45MTcyMSA2LjY2ODIxIDQuOTMxNjggNi41ODcxIDQuOTI5MzFDNi40MjkxOCA0LjkyNDY5IDYuMjc5MjMgNC44NTY1OSA2LjE2OTExIDQuNzM5NDhDNi4wNTg5OCA0LjYyMjM4IDUuOTk3MzggNC40NjU1IDUuOTk3MzggNC4zMDIxOEM1Ljk5NzM4IDQuMTM4ODYgNi4wNTg5OCAzLjk4MTk4IDYuMTY5MTEgMy44NjQ4OEM2LjI3OTIzIDMuNzQ3NzcgNi40MjkxOCAzLjY3OTY4IDYuNTg3MSAzLjY3NTA2WlwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIF9uZ2NvbnRlbnQtbmctYzQzMzYzNjg5MT1cIlwiXHJcbiAgICAgICAgICAgICAgZD1cIk01LjEzMDU3IDAuMjg2MjI0QzcuODEyNTMgMC4yODYyMjQgOS45ODY2NSAyLjUzMzczIDkuOTg2NjUgNS4zMDYyM0M5Ljk4NjY1IDguMDc4MjMgNy44MTIwNSAxMC4zMjUyIDUuMTMwNTcgMTAuMzI1MkMyLjQ0ODYxIDEwLjMyNTcgMC4yNzQ0OSA4LjA3ODIzIDAuMjc0NDkgNS4zMDYyM0MwLjI3NDQ5IDIuNTMzNzMgMi40NDg2MSAwLjI4NjIyNCA1LjEzMDU3IDAuMjg2MjI0Wk01LjEzMDU3IDEuMDM5MDhDNC41ODQ3NiAxLjAzMjk2IDQuMDQzMiAxLjEzODggMy41MzcyMyAxLjM1MDQ5QzMuMDMxMjYgMS41NjIxOCAyLjU3MDkyIDEuODc1NSAyLjE4Mjg3IDIuMjcyMzNDMS43OTQ4MiAyLjY2OTE1IDEuNDg2NzUgMy4xNDE2IDEuMjc2NSAzLjY2MjMzQzEuMDY2MjUgNC4xODMwNSAwLjk1Nzk5IDQuNzQxNzIgMC45NTc5OSA1LjMwNTk4QzAuOTU3OTkgNS44NzAyNSAxLjA2NjI1IDYuNDI4OTEgMS4yNzY1IDYuOTQ5NjRDMS40ODY3NSA3LjQ3MDM2IDEuNzk0ODIgNy45NDI4MSAyLjE4Mjg3IDguMzM5NjRDMi41NzA5MiA4LjczNjQ2IDMuMDMxMjYgOS4wNDk3OSAzLjUzNzIzIDkuMjYxNDdDNC4wNDMyIDkuNDczMTYgNC41ODQ3NiA5LjU3OTAxIDUuMTMwNTcgOS41NzI4OUM2LjIxNzUyIDkuNTYwNyA3LjI1NTk0IDkuMTA1NzkgOC4wMjAzOSA4LjMwNjkxQzguNzg0ODUgNy41MDgwNCA5LjIxMzYyIDYuNDI5NjkgOS4yMTM2MiA1LjMwNTk4QzkuMjEzNjIgNC4xODIyOCA4Ljc4NDg1IDMuMTAzOTMgOC4wMjAzOSAyLjMwNTA1QzcuMjU1OTQgMS41MDYxOCA2LjIxNzUyIDEuMDUxMjYgNS4xMzA1NyAxLjAzOTA4Wk0zLjQxMjgzIDYuNzAzMDJDMy42MTcxOCA2Ljk3MTkzIDMuODc4MDMgNy4xODkyNSA0LjE3NTYzIDcuMzM4NTVDNC40NzMyMyA3LjQ4Nzg1IDQuNzk5NzggNy41NjUyMiA1LjEzMDU3IDcuNTY0NzlDNS40NjEgNy41NjUyIDUuNzg3MjEgNy40ODc5OCA2LjA4NDUzIDcuMzM4OTVDNi4zODE4NiA3LjE4OTkyIDYuNjQyNTMgNi45NzI5OCA2Ljg0Njg1IDYuNzA0NTNDNi44NzY1IDYuNjY1NzQgNi45MTMyNSA2LjYzMzM3IDYuOTU1IDYuNjA5MjZDNi45OTY3NSA2LjU4NTE1IDcuMDQyNjggNi41Njk3OCA3LjA5MDE4IDYuNTY0MDNDNy4xMzc2NyA2LjU1ODI3IDcuMTg1OCA2LjU2MjI0IDcuMjMxODEgNi41NzU3MUM3LjI3NzgyIDYuNTg5MTkgNy4zMjA4MiA2LjYxMTkgNy4zNTgzNCA2LjY0MjU0QzcuMzk1ODYgNi42NzMxOSA3LjQyNzE3IDYuNzExMTggNy40NTA0OSA2Ljc1NDM0QzcuNDczODEgNi43OTc1IDcuNDg4NjggNi44NDQ5OCA3LjQ5NDI1IDYuODk0MDhDNy40OTk4MiA2Ljk0MzE4IDcuNDk1OTggNi45OTI5MyA3LjQ4Mjk0IDcuMDQwNUM3LjQ2OTkxIDcuMDg4MDYgNy40NDc5NSA3LjEzMjUxIDcuNDE4MyA3LjE3MTNDNy4xNDU4MiA3LjUyODk3IDYuNzk4MzMgNy44MTggNi40MDIwMiA4LjAxNjU4QzYuMDA1NzIgOC4yMTUxNiA1LjU3MDk3IDguMzE4MSA1LjEzMDU3IDguMzE3NjRDNC42ODk1MyA4LjMxODA4IDQuMjU0MTYgOC4yMTQ4NCAzLjg1NzQgOC4wMTU3MkMzLjQ2MDY0IDcuODE2NiAzLjExMjg3IDcuNTI2ODEgMi44NDA0MiA3LjE2ODI4QzIuODEwODMgNy4xMjk0MyAyLjc4ODk0IDcuMDg0OTMgMi43NzU5OSA3LjAzNzMzQzIuNzYzMDQgNi45ODk3MyAyLjc1OTI5IDYuOTM5OTYgMi43NjQ5NSA2Ljg5MDg2QzIuNzcwNjEgNi44NDE3NiAyLjc4NTU2IDYuNzk0MyAyLjgwODk3IDYuNzUxMTdDMi44MzIzNyA2LjcwODA1IDIuODYzNzYgNi42NzAxMSAyLjkwMTM1IDYuNjM5NTNDMi45Mzg5MyA2LjYwODk1IDIuOTgxOTggNi41ODYzMiAzLjAyODAyIDYuNTcyOTNDMy4wNzQwNyA2LjU1OTU1IDMuMTIyMjEgNi41NTU2NyAzLjE2OTcxIDYuNTYxNTJDMy4yMTcyMSA2LjU2NzM3IDMuMjYzMTIgNi41ODI4MyAzLjMwNDg0IDYuNjA3MDJDMy4zNDY1NSA2LjYzMTIyIDMuMzgzMjUgNi42NjM2NyAzLjQxMjgzIDYuNzAyNTJWNi43MDMwMlpNMy42NzQwNCAzLjY3NTA2QzMuNzU1MTUgMy42NzI2OCAzLjgzNTg5IDMuNjg3MTUgMy45MTE1IDMuNzE3NkMzLjk4NzExIDMuNzQ4MDUgNC4wNTYwNCAzLjc5Mzg2IDQuMTE0MjIgMy44NTIzM0M0LjE3MjQxIDMuOTEwOCA0LjIxODY2IDMuOTgwNzMgNC4yNTAyNCA0LjA1OEM0LjI4MTgyIDQuMTM1MjcgNC4yOTgwOSA0LjIxODMgNC4yOTgwOSA0LjMwMjE4QzQuMjk4MDkgNC4zODYwNiA0LjI4MTgyIDQuNDY5MDkgNC4yNTAyNCA0LjU0NjM2QzQuMjE4NjYgNC42MjM2MyA0LjE3MjQxIDQuNjkzNTYgNC4xMTQyMiA0Ljc1MjAzQzQuMDU2MDQgNC44MTA1IDMuOTg3MTEgNC44NTYzMSAzLjkxMTUgNC44ODY3NkMzLjgzNTg5IDQuOTE3MjEgMy43NTUxNSA0LjkzMTY4IDMuNjc0MDQgNC45MjkzMUMzLjUxNjEyIDQuOTI0NjkgMy4zNjYxNiA0Ljg1NjU5IDMuMjU2MDQgNC43Mzk0OEMzLjE0NTkyIDQuNjIyMzggMy4wODQzMSA0LjQ2NTUgMy4wODQzMSA0LjMwMjE4QzMuMDg0MzEgNC4xMzg4NiAzLjE0NTkyIDMuOTgxOTggMy4yNTYwNCAzLjg2NDg4QzMuMzY2MTYgMy43NDc3NyAzLjUxNjEyIDMuNjc5NjggMy42NzQwNCAzLjY3NTA2Wk02LjU4NzEgMy42NzUwNkM2LjY2ODIxIDMuNjcyNjggNi43NDg5NiAzLjY4NzE1IDYuODI0NTcgMy43MTc2QzYuOTAwMTggMy43NDgwNSA2Ljk2OTExIDMuNzkzODYgNy4wMjcyOSAzLjg1MjMzQzcuMDg1NDcgMy45MTA4IDcuMTMxNzIgMy45ODA3MyA3LjE2MzMgNC4wNThDNy4xOTQ4OCA0LjEzNTI3IDcuMjExMTYgNC4yMTgzIDcuMjExMTYgNC4zMDIxOEM3LjIxMTE2IDQuMzg2MDYgNy4xOTQ4OCA0LjQ2OTA5IDcuMTYzMyA0LjU0NjM2QzcuMTMxNzIgNC42MjM2MyA3LjA4NTQ3IDQuNjkzNTYgNy4wMjcyOSA0Ljc1MjAzQzYuOTY5MTEgNC44MTA1IDYuOTAwMTggNC44NTYzMSA2LjgyNDU3IDQuODg2NzZDNi43NDg5NiA0LjkxNzIxIDYuNjY4MjEgNC45MzE2OCA2LjU4NzEgNC45MjkzMUM2LjQyOTE4IDQuOTI0NjkgNi4yNzkyMyA0Ljg1NjU5IDYuMTY5MTEgNC43Mzk0OEM2LjA1ODk4IDQuNjIyMzggNS45OTczOCA0LjQ2NTUgNS45OTczOCA0LjMwMjE4QzUuOTk3MzggNC4xMzg4NiA2LjA1ODk4IDMuOTgxOTggNi4xNjkxMSAzLjg2NDg4QzYuMjc5MjMgMy43NDc3NyA2LjQyOTE4IDMuNjc5NjggNi41ODcxIDMuNjc1MDZaXCJcclxuICAgICAgICAgICAgICBmaWxsPVwidXJsKCNwYWludDBfbGluZWFyXzc0OF8zMzg3KVwiXHJcbiAgICAgICAgICAgID48L3BhdGg+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgX25nY29udGVudC1uZy1jNDMzNjM2ODkxPVwiXCJcclxuICAgICAgICAgICAgICBkPVwiTTUuMTMwNTcgMC4yODYyMjRDNy44MTI1MyAwLjI4NjIyNCA5Ljk4NjY1IDIuNTMzNzMgOS45ODY2NSA1LjMwNjIzQzkuOTg2NjUgOC4wNzgyMyA3LjgxMjA1IDEwLjMyNTIgNS4xMzA1NyAxMC4zMjUyQzIuNDQ4NjEgMTAuMzI1NyAwLjI3NDQ5IDguMDc4MjMgMC4yNzQ0OSA1LjMwNjIzQzAuMjc0NDkgMi41MzM3MyAyLjQ0ODYxIDAuMjg2MjI0IDUuMTMwNTcgMC4yODYyMjRaTTUuMTMwNTcgMS4wMzkwOEM0LjU4NDc2IDEuMDMyOTYgNC4wNDMyIDEuMTM4OCAzLjUzNzIzIDEuMzUwNDlDMy4wMzEyNiAxLjU2MjE4IDIuNTcwOTIgMS44NzU1IDIuMTgyODcgMi4yNzIzM0MxLjc5NDgyIDIuNjY5MTUgMS40ODY3NSAzLjE0MTYgMS4yNzY1IDMuNjYyMzNDMS4wNjYyNSA0LjE4MzA1IDAuOTU3OTkgNC43NDE3MiAwLjk1Nzk5IDUuMzA1OThDMC45NTc5OSA1Ljg3MDI1IDEuMDY2MjUgNi40Mjg5MSAxLjI3NjUgNi45NDk2NEMxLjQ4Njc1IDcuNDcwMzYgMS43OTQ4MiA3Ljk0MjgxIDIuMTgyODcgOC4zMzk2NEMyLjU3MDkyIDguNzM2NDYgMy4wMzEyNiA5LjA0OTc5IDMuNTM3MjMgOS4yNjE0N0M0LjA0MzIgOS40NzMxNiA0LjU4NDc2IDkuNTc5MDEgNS4xMzA1NyA5LjU3Mjg5QzYuMjE3NTIgOS41NjA3IDcuMjU1OTQgOS4xMDU3OSA4LjAyMDM5IDguMzA2OTFDOC43ODQ4NSA3LjUwODA0IDkuMjEzNjIgNi40Mjk2OSA5LjIxMzYyIDUuMzA1OThDOS4yMTM2MiA0LjE4MjI4IDguNzg0ODUgMy4xMDM5MyA4LjAyMDM5IDIuMzA1MDVDNy4yNTU5NCAxLjUwNjE4IDYuMjE3NTIgMS4wNTEyNiA1LjEzMDU3IDEuMDM5MDhaTTMuNDEyODMgNi43MDMwMkMzLjYxNzE4IDYuOTcxOTMgMy44NzgwMyA3LjE4OTI1IDQuMTc1NjMgNy4zMzg1NUM0LjQ3MzIzIDcuNDg3ODUgNC43OTk3OCA3LjU2NTIyIDUuMTMwNTcgNy41NjQ3OUM1LjQ2MSA3LjU2NTIgNS43ODcyMSA3LjQ4Nzk4IDYuMDg0NTMgNy4zMzg5NUM2LjM4MTg2IDcuMTg5OTIgNi42NDI1MyA2Ljk3Mjk4IDYuODQ2ODUgNi43MDQ1M0M2Ljg3NjUgNi42NjU3NCA2LjkxMzI1IDYuNjMzMzcgNi45NTUgNi42MDkyNkM2Ljk5Njc1IDYuNTg1MTUgNy4wNDI2OCA2LjU2OTc4IDcuMDkwMTggNi41NjQwM0M3LjEzNzY3IDYuNTU4MjcgNy4xODU4IDYuNTYyMjQgNy4yMzE4MSA2LjU3NTcxQzcuMjc3ODIgNi41ODkxOSA3LjMyMDgyIDYuNjExOSA3LjM1ODM0IDYuNjQyNTRDNy4zOTU4NiA2LjY3MzE5IDcuNDI3MTcgNi43MTExOCA3LjQ1MDQ5IDYuNzU0MzRDNy40NzM4MSA2Ljc5NzUgNy40ODg2OCA2Ljg0NDk4IDcuNDk0MjUgNi44OTQwOEM3LjQ5OTgyIDYuOTQzMTggNy40OTU5OCA2Ljk5MjkzIDcuNDgyOTQgNy4wNDA1QzcuNDY5OTEgNy4wODgwNiA3LjQ0Nzk1IDcuMTMyNTEgNy40MTgzIDcuMTcxM0M3LjE0NTgyIDcuNTI4OTcgNi43OTgzMyA3LjgxOCA2LjQwMjAyIDguMDE2NThDNi4wMDU3MiA4LjIxNTE2IDUuNTcwOTcgOC4zMTgxIDUuMTMwNTcgOC4zMTc2NEM0LjY4OTUzIDguMzE4MDggNC4yNTQxNiA4LjIxNDg0IDMuODU3NCA4LjAxNTcyQzMuNDYwNjQgNy44MTY2IDMuMTEyODcgNy41MjY4MSAyLjg0MDQyIDcuMTY4MjhDMi44MTA4MyA3LjEyOTQzIDIuNzg4OTQgNy4wODQ5MyAyLjc3NTk5IDcuMDM3MzNDMi43NjMwNCA2Ljk4OTczIDIuNzU5MjkgNi45Mzk5NiAyLjc2NDk1IDYuODkwODZDMi43NzA2MSA2Ljg0MTc2IDIuNzg1NTYgNi43OTQzIDIuODA4OTcgNi43NTExN0MyLjgzMjM3IDYuNzA4MDUgMi44NjM3NiA2LjY3MDExIDIuOTAxMzUgNi42Mzk1M0MyLjkzODkzIDYuNjA4OTUgMi45ODE5OCA2LjU4NjMyIDMuMDI4MDIgNi41NzI5M0MzLjA3NDA3IDYuNTU5NTUgMy4xMjIyMSA2LjU1NTY3IDMuMTY5NzEgNi41NjE1MkMzLjIxNzIxIDYuNTY3MzcgMy4yNjMxMiA2LjU4MjgzIDMuMzA0ODQgNi42MDcwMkMzLjM0NjU1IDYuNjMxMjIgMy4zODMyNSA2LjY2MzY3IDMuNDEyODMgNi43MDI1MlY2LjcwMzAyWk0zLjY3NDA0IDMuNjc1MDZDMy43NTUxNSAzLjY3MjY4IDMuODM1ODkgMy42ODcxNSAzLjkxMTUgMy43MTc2QzMuOTg3MTEgMy43NDgwNSA0LjA1NjA0IDMuNzkzODYgNC4xMTQyMiAzLjg1MjMzQzQuMTcyNDEgMy45MTA4IDQuMjE4NjYgMy45ODA3MyA0LjI1MDI0IDQuMDU4QzQuMjgxODIgNC4xMzUyNyA0LjI5ODA5IDQuMjE4MyA0LjI5ODA5IDQuMzAyMThDNC4yOTgwOSA0LjM4NjA2IDQuMjgxODIgNC40NjkwOSA0LjI1MDI0IDQuNTQ2MzZDNC4yMTg2NiA0LjYyMzYzIDQuMTcyNDEgNC42OTM1NiA0LjExNDIyIDQuNzUyMDNDNC4wNTYwNCA0LjgxMDUgMy45ODcxMSA0Ljg1NjMxIDMuOTExNSA0Ljg4Njc2QzMuODM1ODkgNC45MTcyMSAzLjc1NTE1IDQuOTMxNjggMy42NzQwNCA0LjkyOTMxQzMuNTE2MTIgNC45MjQ2OSAzLjM2NjE2IDQuODU2NTkgMy4yNTYwNCA0LjczOTQ4QzMuMTQ1OTIgNC42MjIzOCAzLjA4NDMxIDQuNDY1NSAzLjA4NDMxIDQuMzAyMThDMy4wODQzMSA0LjEzODg2IDMuMTQ1OTIgMy45ODE5OCAzLjI1NjA0IDMuODY0ODhDMy4zNjYxNiAzLjc0Nzc3IDMuNTE2MTIgMy42Nzk2OCAzLjY3NDA0IDMuNjc1MDZaTTYuNTg3MSAzLjY3NTA2QzYuNjY4MjEgMy42NzI2OCA2Ljc0ODk2IDMuNjg3MTUgNi44MjQ1NyAzLjcxNzZDNi45MDAxOCAzLjc0ODA1IDYuOTY5MTEgMy43OTM4NiA3LjAyNzI5IDMuODUyMzNDNy4wODU0NyAzLjkxMDggNy4xMzE3MiAzLjk4MDczIDcuMTYzMyA0LjA1OEM3LjE5NDg4IDQuMTM1MjcgNy4yMTExNiA0LjIxODMgNy4yMTExNiA0LjMwMjE4QzcuMjExMTYgNC4zODYwNiA3LjE5NDg4IDQuNDY5MDkgNy4xNjMzIDQuNTQ2MzZDNy4xMzE3MiA0LjYyMzYzIDcuMDg1NDcgNC42OTM1NiA3LjAyNzI5IDQuNzUyMDNDNi45NjkxMSA0LjgxMDUgNi45MDAxOCA0Ljg1NjMxIDYuODI0NTcgNC44ODY3NkM2Ljc0ODk2IDQuOTE3MjEgNi42NjgyMSA0LjkzMTY4IDYuNTg3MSA0LjkyOTMxQzYuNDI5MTggNC45MjQ2OSA2LjI3OTIzIDQuODU2NTkgNi4xNjkxMSA0LjczOTQ4QzYuMDU4OTggNC42MjIzOCA1Ljk5NzM4IDQuNDY1NSA1Ljk5NzM4IDQuMzAyMThDNS45OTczOCA0LjEzODg2IDYuMDU4OTggMy45ODE5OCA2LjE2OTExIDMuODY0ODhDNi4yNzkyMyAzLjc0Nzc3IDYuNDI5MTggMy42Nzk2OCA2LjU4NzEgMy42NzUwNlpcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cInVybCgjcGFpbnQwX2xpbmVhcl83NDhfMzM4NylcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCJcclxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIwLjQ5MjUzNVwiXHJcbiAgICAgICAgICAgICAgbWFzaz1cInVybCgjcGF0aC0xLW91dHNpZGUtMV80MjJfMzQxNClcIlxyXG4gICAgICAgICAgICA+PC9wYXRoPlxyXG4gICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgPGRlZnMgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzc0OF83Njg1XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMFwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgIDxmZU9mZnNldCAvPlxyXG4gICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIgLz5cclxuICAgICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPVwiaGFyZEFscGhhXCIgb3BlcmF0b3I9XCJvdXRcIiAvPlxyXG4gICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAwLjA5NjE1MzggMCAwIDAgMCAwLjU5MzI2OSAwIDAgMCAxIDBcIiAvPlxyXG4gICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzQ4Xzc2ODVcIiAvPlxyXG4gICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzQ4Xzc2ODVcIiByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDBfbGluZWFyXzc0OF83Njg1XCIgeDE9XCIxNC4xNTA5XCIgeTE9XCIzLjQzMzcyXCIgeDI9XCIwLjk5Mjc5OVwiIHkyPVwiMjYuNzcxNVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxyXG4gICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjRkUzQzcyXCIgLz5cclxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjM4NDYxNVwiIHN0b3AtY29sb3I9XCIjRkZCNUU5XCIgLz5cclxuICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cclxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwicGFpbnQwX2xpbmVhcl83NDhfMzM4N1wiIHgxPVwiMTguNTEzNFwiIHkxPVwiMi44MTA5N1wiIHgyPVwiMC4xNjI3NzNcIiB5Mj1cIjM1LjM1NTZcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cclxuICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZFM0M3MlwiIC8+XHJcbiAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMC4zODQ2MTVcIiBzdG9wLWNvbG9yPVwiI0ZGQjVFOVwiIC8+XHJcbiAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBAaWYgKGVuYWJsZUdpZlBpY2tlcikge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnaWZzXCIgKGNsaWNrKT1cImhhbmRsZUdpZlBpY2tlckNsaWNrKClcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2lmc1wiICpuZ0lmPVwiaW5jbHVkZUdpZk1lc3NhZ2VcIiAoY2xpY2spPVwiaGFuZGxlR2lmUGlja2VyQ2xpY2soKVwiPlxyXG4gICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDExIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxnPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTcuMDU1IDEwLjk5OTVINC44OTlDMy4yNTM1IDEwLjk5OTUgMi40MzA1IDEwLjk5OTUgMS44NTkgMTAuNjAwNUMxLjY5Njk0IDEwLjQ4NzMgMS41NTE2NyAxMC4zNTE4IDEuNDI3NSAxMC4xOThDMSA5LjY2NTAxIDEgOC44OTgwMSAxIDcuMzYzMDFWNi4wOTA1MUMxIDQuNjA5MDEgMSAzLjg2ODAxIDEuMjM2NSAzLjI3NjUxQzEuNjE3IDIuMzI1MDEgMi40MjE1IDEuNTc1MDEgMy40NDE1IDEuMjIwMDFDNC4wNzUgMC45OTk1MTIgNC44NyAwLjk5OTUxMiA2LjQ1ODUgMC45OTk1MTJDNy4zNjY1IDAuOTk5NTEyIDcuODIgMC45OTk1MTIgOC4xODI1IDEuMTI1NTFDOC43NjU1IDEuMzI4NTEgOS4yMjUgMS43NTcwMSA5LjQ0MjUgMi4zMDA1MUM5LjU3NzUgMi42Mzg1MSA5LjU3NzUgMy4wNjIwMSA5LjU3NzUgMy45MDg1MVY0Ljk5OTUxXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZT1cInVybCgjcGFpbnQwX2xpbmVhcl83NDhfMzM4NylcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMC43NVwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTEgNS45OTk1MUMxIDUuMDc5NTEgMS43NTMgNC4zMzMwMSAyLjY4MiA0LjMzMzAxQzMuMDE4IDQuMzMzMDEgMy40MTQgNC4zOTEwMSAzLjc0MDUgNC4zMDQ1MUMzLjg4MjgxIDQuMjY3MzYgNC4wMTI3OCA0LjE5MzI4IDQuMTE3MjYgNC4wODk3NkM0LjIyMTc0IDMuOTg2MjQgNC4yOTcwMyAzLjg1Njk3IDQuMzM1NSAzLjcxNTAxQzQuNDIyNSAzLjM5MTUxIDQuMzY0IDIuOTk5MDEgNC4zNjQgMi42NjYwMUM0LjM2NCAxLjc0NjAxIDUuMTE3IDAuOTk5NTEyIDYuMDQ1IDAuOTk5NTEyTTYuMDQ2IDguOTk5NTFINy4zMDc1TTQuODMzIDYuOTI0NTFDNC43NyA2LjUyNDUxIDQuNjkyNSA2LjUyNDAxIDQuMDI4IDYuNDk5NTFIMy41MjNDMy4yNDQ1IDYuNDk5NTEgMy4wMTg1IDYuNzIzNTEgMy4wMTg1IDYuOTk5NTFWOC40OTk1MUMzLjAxODUgOC43NzU1MSAzLjI0NDUgOC45OTk1MSAzLjUyMzUgOC45OTk1MUg0LjQzMTVDNC42MjY1IDguOTk5NTEgNC44MzMgOC44NDMwMSA0LjgzMyA4LjY0OTUxVjguMDk5NTFDNC44MzMgOC4wNDQ1MSA0Ljc3NjUgNy45NDc1MSA0LjcyMSA3Ljk0NzUxSDQuMTU5TTYuMDQ2IDYuNDk5NTFINi42NzY1TTYuNjc2NSA2LjQ5OTUxSDcuMzA3NU02LjY3NjUgNi40OTk1MVY4LjkzNzAxTTEwLjI1MDUgNi40OTk1MUg4Ljk4OUM4LjcxMDUgNi40OTk1MSA4LjQ4NDUgNi43MjM1MSA4LjQ4NDUgNi45OTk1MVY3Ljc0OTUxTTguNDg0NSA3Ljc0OTUxVjguOTk5NTFNOC40ODQ1IDcuNzQ5NTFIOS43NDZcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwidXJsKCNwYWludDBfbGluZWFyXzc0OF8zMzg3KVwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIwLjc1XCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgPGRlZnMgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfNzQ4Xzc2ODVcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIzMFwiIGhlaWdodD1cIjMwXCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgPGZlT2Zmc2V0IC8+XHJcbiAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPVwiaGFyZEFscGhhXCIgb3BlcmF0b3I9XCJvdXRcIiAvPlxyXG4gICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDAuMDk2MTUzOCAwIDAgMCAwIDAuNTkzMjY5IDAgMCAwIDEgMFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0OF83Njg1XCIgLz5cclxuICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzQ4Xzc2ODVcIiByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwicGFpbnQwX2xpbmVhcl83NDhfNzY4NVwiIHgxPVwiMTQuMTUwOVwiIHkxPVwiMy40MzM3MlwiIHgyPVwiMC45OTI3OTlcIiB5Mj1cIjI2Ljc3MTVcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cclxuICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjRkUzQzcyXCIgLz5cclxuICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAuMzg0NjE1XCIgc3RvcC1jb2xvcj1cIiNGRkI1RTlcIiAvPlxyXG4gICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwicGFpbnQwX2xpbmVhcl83NDhfMzM4N1wiIHgxPVwiMTguNTEzNFwiIHkxPVwiMi44MTA5N1wiIHgyPVwiMC4xNjI3NzNcIiB5Mj1cIjM1LjM1NTZcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cclxuICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjRkUzQzcyXCIgLz5cclxuICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAuMzg0NjE1XCIgc3RvcC1jb2xvcj1cIiNGRkI1RTlcIiAvPlxyXG4gICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XHJcbiAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJlbW9qaS1waWNrZXItc3BhY2VcIiBbbmdTdHlsZV09XCJ7ICd6LWluZGV4JzogIShnaWZWaXNpYmlsaXR5IHx8IGVtb2ppVmlzaWJpbGl0eSkgPyAtMSA6IDExIH1cIiAoYmx1cik9XCJvbkJsdXJQaWNrZXJTcGFjZSgpXCI+XHJcbiAgICAgIEBpZiAoZ2lmVmlzaWJpbGl0eSAmJiBlbmFibGVHaWZQaWNrZXIpIHtcclxuICAgICAgICA8bGliLWdpZi1zZWxlY3RvciAoc2VsZWN0R2lmKT1cIm9uR2lmQ2xpY2soJGV2ZW50KVwiPjwvbGliLWdpZi1zZWxlY3Rvcj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKGVtb2ppUGlja2VyT3BlbmVkKSB7XHJcbiAgICAgICAgPGVtb2ppLXBpY2tlciAjZW1vamlQaWNrZXIgW25nU3R5bGVdPVwieyBkaXNwbGF5OiBlbW9qaVZpc2liaWxpdHkgPyAnJyA6ICdub25lJyB9XCIgZW1vamktdmVyc2lvbj1cIjE1LjBcIiAoZW1vamktY2xpY2spPVwib25FbW9qaWNsaWNrKCRldmVudClcIj48L2Vtb2ppLXBpY2tlcj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9mb3JtPlxyXG48L2Rpdj5cclxuIl19