@naniteninja/dashboard-components-lib 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/auto-delegation/animations.mjs +20 -0
- package/esm2022/lib/components/auto-delegation/auto-delegation-modal.component.mjs +106 -0
- package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.mjs +6 -0
- package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.mjs +7 -0
- package/esm2022/lib/components/auto-delegation/interface/auto-delegation-data.interface.mjs +2 -0
- package/esm2022/lib/components/auto-delegation/interface/auto-delegation.event.interface.mjs +2 -0
- package/esm2022/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.mjs +2 -0
- package/esm2022/lib/components/auto-delegation/interface/preferences.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.mjs +37 -0
- package/esm2022/lib/components/calendar/agenda/agenda.component.mjs +120 -0
- package/esm2022/lib/components/calendar/agenda/agenda.module.mjs +23 -0
- package/esm2022/lib/components/calendar/agenda/enums/agenda-item-type.enum.mjs +6 -0
- package/esm2022/lib/components/calendar/agenda/interfaces/agenda.day.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.mjs +2 -0
- package/esm2022/lib/components/calendar/agenda/types/agenda-item.type.mjs +2 -0
- package/esm2022/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.mjs +40 -0
- package/esm2022/lib/components/calendar/components/event-form/event-form.component.mjs +275 -0
- package/esm2022/lib/components/calendar/components/event-form/event-form.module.mjs +89 -0
- package/esm2022/lib/components/calendar/components/event-info/event-info.component.mjs +40 -0
- package/esm2022/lib/components/calendar/enums/calendar.account.enum.mjs +6 -0
- package/esm2022/lib/components/calendar/enums/calendar.account.icons.enum.mjs +6 -0
- package/esm2022/lib/components/calendar/enums/event-type.enum.mjs +10 -0
- package/esm2022/lib/components/calendar/enums/recurring.edit.options.enum.mjs +7 -0
- package/esm2022/lib/components/calendar/enums/recurring.type.enum.mjs +8 -0
- package/esm2022/lib/components/calendar/interfaces/calendar.account.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/calendar.account.theme.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.form.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.form.output.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.time.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/recurring.event.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/recurring.exception.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/recurring.pattern.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/lookups/recurring.options.lookup.mjs +30 -0
- package/esm2022/lib/components/calendar/scheduler/enums/schedule-date-status.enum.mjs +7 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/mock-schedule.mjs +80 -0
- package/esm2022/lib/components/calendar/scheduler/scheduler.component.mjs +144 -0
- package/esm2022/lib/components/calendar/services/calendar-utils.service.mjs +211 -0
- package/esm2022/lib/components/chat/chat.component.mjs +308 -0
- package/esm2022/lib/components/chat/chat.component.module.mjs +85 -0
- package/esm2022/lib/components/chat/chat.service.mjs +63 -0
- package/esm2022/lib/components/chat/enums/sender-types.enum.mjs +6 -0
- package/esm2022/lib/components/chat/gif-selector/gif-selector.component.mjs +77 -0
- package/esm2022/lib/components/chat/gif-selector/gif-selector.service.mjs +41 -0
- package/esm2022/lib/components/chat/gif-selector/tenor-media-format.interface.mjs +2 -0
- package/esm2022/lib/components/chat/gif-selector/tenor-object.interface.mjs +2 -0
- package/esm2022/lib/components/chat/gif-selector/tenor-result.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/date-messages.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/message-attachment.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/message.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/send-options-message.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/type-send-message.enum.mjs +7 -0
- package/esm2022/lib/components/chat-suggestion/chat-suggestion.component.mjs +21 -0
- package/esm2022/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.mjs +2 -0
- package/esm2022/lib/components/circle-progress/circle-progress.component.mjs +143 -0
- package/esm2022/lib/components/circle-progress/circle-progress.module.mjs +18 -0
- package/esm2022/lib/components/circle-progress/enums/circle-variable.enum.mjs +6 -0
- package/esm2022/lib/components/circle-progress/interfaces/circle-progress-config.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/client-home.component.mjs +123 -0
- package/esm2022/lib/components/client-home/enums/client-home-component.enum.mjs +9 -0
- package/esm2022/lib/components/client-home/interfaces/chat-meta.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/interfaces/home-dashboard-inputs.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/lookup/client-home.config.mjs +30 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-default-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-pink-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-purple-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-teal-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-white-colors.config.mjs +10 -0
- package/esm2022/lib/components/client-home/lookup/progress-default-colors.config.mjs +10 -0
- package/esm2022/lib/components/client-home/lookup/progress-white-colors.config.mjs +10 -0
- package/esm2022/lib/components/client-home/pipes/chat-meta.pipe.mjs +60 -0
- package/esm2022/lib/components/client-home/pipes/get-color-by-matcher.pipe.mjs +33 -0
- package/esm2022/lib/components/client-match-overview/client-match-overview.component.mjs +300 -0
- package/esm2022/lib/components/client-match-overview/enums/conversation-flag.enum.mjs +6 -0
- package/esm2022/lib/components/client-match-overview/enums/counter-flag-base.enum.mjs +6 -0
- package/esm2022/lib/components/client-match-overview/enums/inner-circle-state.enum.mjs +8 -0
- package/esm2022/lib/components/client-match-overview/interfaces/client-match-overview.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/conversation-flag.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/progress-decision.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/progress-facts.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/lookups/computer-inner-state.lookup.mjs +81 -0
- package/esm2022/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.mjs +8 -0
- package/esm2022/lib/components/client-match-overview/progress-ticker/progress-gap.config.mjs +4 -0
- package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.config.mjs +3 -0
- package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.service.mjs +43 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.mjs +113 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.mjs +11 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.mjs +27 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.mjs +19 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.mjs +21 -0
- package/esm2022/lib/components/lib-client-dashboard/client-dashboard.component.mjs +173 -0
- package/esm2022/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.mjs +11 -0
- package/esm2022/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.mjs +7 -0
- package/esm2022/lib/components/lib-client-dashboard/interfaces/ads.interface.mjs +2 -0
- package/esm2022/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.mjs +2 -0
- package/esm2022/lib/components/lib-client-dashboard/lookups/client-dashboard.config.mjs +15 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.mjs +146 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.mjs +21 -0
- package/esm2022/lib/components/matcher-statuses/enums/matcher-statuses.enum.mjs +15 -0
- package/esm2022/lib/components/matcher-statuses/interfaces/status.interface.mjs +2 -0
- package/esm2022/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.mjs +54 -0
- package/esm2022/lib/components/matcher-statuses/matcher-statuses.component.mjs +58 -0
- package/esm2022/lib/components/matcher-statuses/pipes/is-status-included.pipe.mjs +19 -0
- package/esm2022/lib/components/profile-card/profile-card.component.mjs +35 -0
- package/esm2022/lib/components/profile-card/profile-card.module.mjs +19 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-circle.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/config.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/dataset.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/polygon-color.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/lookup/default-spider-config.mjs +67 -0
- package/esm2022/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.mjs +11 -0
- package/esm2022/lib/components/spider-chart/lookup/svg-config.lookup.mjs +277 -0
- package/esm2022/lib/components/spider-chart/spider-chart.component.mjs +235 -0
- package/esm2022/lib/enums/direction.enum.mjs +6 -0
- package/esm2022/lib/enums/form-field-type.mjs +30 -0
- package/esm2022/lib/enums/local-storage-keys.enum.mjs +5 -0
- package/esm2022/lib/enums/status-types.mjs +8 -0
- package/esm2022/lib/model/select-option-template.mjs +2 -0
- package/esm2022/lib/operations/operations.mjs +19 -0
- package/esm2022/lib/pipes/array-sort/array.sort.pipe.mjs +49 -0
- package/esm2022/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.mjs +17 -0
- package/esm2022/lib/pipes/date-localization/date-localization.pipe.mjs +31 -0
- package/esm2022/lib/pipes/fallback-translate/fallback-translate.pipe.mjs +28 -0
- package/esm2022/lib/pipes/get-display-value/get-display-value.pipe.mjs +59 -0
- package/esm2022/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.mjs +22 -0
- package/esm2022/lib/pipes/initials/initials.pipe.mjs +25 -0
- package/esm2022/lib/pipes/round/round.pipe.mjs +17 -0
- package/esm2022/lib/pipes/update-llm-preference/update-llm-preference.pipe.mjs +25 -0
- package/esm2022/lib/services/abstract-cache.service.mjs +10 -0
- package/esm2022/lib/shared/shared/alert-popup/alert-popup.component.mjs +38 -0
- package/esm2022/lib/shared/shared/message-modal/message-modal.component.mjs +95 -0
- package/esm2022/lib/shared/shared/status-icon/status-icon.component.mjs +14 -0
- package/esm2022/lib/shared/shared.module.mjs +23 -0
- package/esm2022/naniteninja-dashboard-components-lib.mjs +5 -0
- package/esm2022/public-api.mjs +123 -0
- package/fesm2022/naniteninja-dashboard-components-lib.mjs +202 -178
- package/fesm2022/naniteninja-dashboard-components-lib.mjs.map +1 -1
- package/index.d.ts +3 -1669
- package/lib/components/auto-delegation/animations.d.ts +1 -0
- package/lib/components/auto-delegation/auto-delegation-modal.component.d.ts +29 -0
- package/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.d.ts +4 -0
- package/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.d.ts +5 -0
- package/lib/components/auto-delegation/interface/auto-delegation-data.interface.d.ts +31 -0
- package/lib/components/auto-delegation/interface/auto-delegation.event.interface.d.ts +6 -0
- package/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.d.ts +8 -0
- package/lib/components/auto-delegation/interface/preferences.interface.d.ts +17 -0
- package/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.d.ts +12 -0
- package/lib/components/calendar/agenda/agenda.component.d.ts +27 -0
- package/lib/components/calendar/agenda/agenda.module.d.ts +12 -0
- package/lib/components/calendar/agenda/enums/agenda-item-type.enum.d.ts +4 -0
- package/lib/components/calendar/agenda/interfaces/agenda.day.interface.d.ts +7 -0
- package/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.d.ts +9 -0
- package/lib/components/calendar/agenda/types/agenda-item.type.d.ts +7 -0
- package/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.d.ts +19 -0
- package/lib/components/calendar/components/event-form/event-form.component.d.ts +67 -0
- package/lib/components/calendar/components/event-form/event-form.module.d.ts +20 -0
- package/lib/components/calendar/components/event-info/event-info.component.d.ts +24 -0
- package/lib/components/calendar/enums/calendar.account.enum.d.ts +4 -0
- package/lib/components/calendar/enums/calendar.account.icons.enum.d.ts +4 -0
- package/lib/components/calendar/enums/event-type.enum.d.ts +8 -0
- package/lib/components/calendar/enums/recurring.edit.options.enum.d.ts +5 -0
- package/lib/components/calendar/enums/recurring.type.enum.d.ts +6 -0
- package/lib/components/calendar/interfaces/calendar.account.interface.d.ts +14 -0
- package/lib/components/calendar/interfaces/calendar.account.theme.interface.d.ts +5 -0
- package/lib/components/calendar/interfaces/event.form.interface.d.ts +22 -0
- package/lib/components/calendar/interfaces/event.form.output.interface.d.ts +10 -0
- package/lib/components/calendar/interfaces/event.interface.d.ts +33 -0
- package/lib/components/calendar/interfaces/event.time.interface.d.ts +4 -0
- package/lib/components/calendar/interfaces/recurring.event.interface.d.ts +16 -0
- package/lib/components/calendar/interfaces/recurring.exception.interface.d.ts +14 -0
- package/lib/components/calendar/interfaces/recurring.pattern.interface.d.ts +16 -0
- package/lib/components/calendar/lookups/recurring.options.lookup.d.ts +2 -0
- package/lib/components/calendar/scheduler/enums/schedule-date-status.enum.d.ts +5 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.d.ts +10 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.d.ts +5 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.d.ts +26 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.d.ts +13 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.d.ts +6 -0
- package/lib/components/calendar/scheduler/mock-schedule.d.ts +9 -0
- package/lib/components/calendar/scheduler/scheduler.component.d.ts +36 -0
- package/lib/components/calendar/services/calendar-utils.service.d.ts +39 -0
- package/lib/components/chat/chat.component.d.ts +70 -0
- package/lib/components/chat/chat.component.module.d.ts +22 -0
- package/lib/components/chat/chat.service.d.ts +15 -0
- package/lib/components/chat/enums/sender-types.enum.d.ts +4 -0
- package/lib/components/chat/gif-selector/gif-selector.component.d.ts +25 -0
- package/lib/components/chat/gif-selector/gif-selector.service.d.ts +15 -0
- package/lib/components/chat/gif-selector/tenor-media-format.interface.d.ts +7 -0
- package/lib/components/chat/gif-selector/tenor-object.interface.d.ts +5 -0
- package/lib/components/chat/gif-selector/tenor-result.interface.d.ts +16 -0
- package/lib/components/chat/interfaces/date-messages.interface.d.ts +6 -0
- package/lib/components/chat/interfaces/message-attachment.interface.d.ts +6 -0
- package/lib/components/chat/interfaces/message.interface.d.ts +11 -0
- package/lib/components/chat/interfaces/send-options-message.interface.d.ts +5 -0
- package/lib/components/chat/interfaces/type-send-message.enum.d.ts +5 -0
- package/lib/components/chat-suggestion/chat-suggestion.component.d.ts +9 -0
- package/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.d.ts +4 -0
- package/lib/components/circle-progress/circle-progress.component.d.ts +31 -0
- package/lib/components/circle-progress/circle-progress.module.d.ts +8 -0
- package/lib/components/circle-progress/enums/circle-variable.enum.d.ts +4 -0
- package/lib/components/circle-progress/interfaces/circle-progress-config.interface.d.ts +29 -0
- package/lib/components/client-home/client-home.component.d.ts +44 -0
- package/lib/components/client-home/enums/client-home-component.enum.d.ts +7 -0
- package/lib/components/client-home/interfaces/chat-meta.interface.d.ts +7 -0
- package/lib/components/client-home/interfaces/home-dashboard-inputs.interface.d.ts +45 -0
- package/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.d.ts +5 -0
- package/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.d.ts +9 -0
- package/lib/components/client-home/lookup/client-home.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-default-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-pink-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-purple-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-teal-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-white-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/progress-default-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/progress-white-colors.config.d.ts +2 -0
- package/lib/components/client-home/pipes/chat-meta.pipe.d.ts +10 -0
- package/lib/components/client-home/pipes/get-color-by-matcher.pipe.d.ts +10 -0
- package/lib/components/client-match-overview/client-match-overview.component.d.ts +55 -0
- package/lib/components/client-match-overview/enums/conversation-flag.enum.d.ts +4 -0
- package/lib/components/client-match-overview/enums/counter-flag-base.enum.d.ts +4 -0
- package/lib/components/client-match-overview/enums/inner-circle-state.enum.d.ts +6 -0
- package/lib/components/client-match-overview/interfaces/client-match-overview.interface.d.ts +19 -0
- package/lib/components/client-match-overview/interfaces/conversation-flag.interface.d.ts +8 -0
- package/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.d.ts +7 -0
- package/lib/components/client-match-overview/interfaces/progress-decision.interface.d.ts +10 -0
- package/lib/components/client-match-overview/interfaces/progress-facts.interface.d.ts +11 -0
- package/lib/components/client-match-overview/lookups/computer-inner-state.lookup.d.ts +7 -0
- package/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.d.ts +5 -0
- package/lib/components/client-match-overview/progress-ticker/progress-gap.config.d.ts +2 -0
- package/lib/components/client-match-overview/progress-ticker/progress-ticker.config.d.ts +2 -0
- package/lib/components/client-match-overview/progress-ticker/progress-ticker.service.d.ts +11 -0
- package/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.d.ts +29 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.d.ts +2 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.d.ts +2 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.d.ts +2 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.d.ts +2 -0
- package/lib/components/lib-client-dashboard/client-dashboard.component.d.ts +75 -0
- package/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.d.ts +9 -0
- package/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.d.ts +5 -0
- package/lib/components/lib-client-dashboard/interfaces/ads.interface.d.ts +14 -0
- package/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.d.ts +29 -0
- package/lib/components/lib-client-dashboard/lookups/client-dashboard.config.d.ts +2 -0
- package/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.d.ts +48 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.d.ts +5 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.d.ts +5 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.d.ts +26 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.d.ts +8 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.d.ts +24 -0
- package/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.d.ts +9 -0
- package/lib/components/matcher-statuses/enums/matcher-statuses.enum.d.ts +13 -0
- package/lib/components/matcher-statuses/interfaces/status.interface.d.ts +6 -0
- package/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.d.ts +2 -0
- package/lib/components/matcher-statuses/matcher-statuses.component.d.ts +23 -0
- package/lib/components/matcher-statuses/pipes/is-status-included.pipe.d.ts +8 -0
- package/lib/components/profile-card/profile-card.component.d.ts +11 -0
- package/lib/components/profile-card/profile-card.module.d.ts +9 -0
- package/lib/components/spider-chart/interfaces/chart-data-circle.interface.d.ts +10 -0
- package/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.d.ts +11 -0
- package/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.d.ts +11 -0
- package/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.d.ts +10 -0
- package/lib/components/spider-chart/interfaces/config.interface.d.ts +19 -0
- package/lib/components/spider-chart/interfaces/dataset.interface.d.ts +7 -0
- package/lib/components/spider-chart/interfaces/polygon-color.interface.d.ts +4 -0
- package/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.d.ts +6 -0
- package/lib/components/spider-chart/lookup/default-spider-config.d.ts +2 -0
- package/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.d.ts +2 -0
- package/lib/components/spider-chart/lookup/svg-config.lookup.d.ts +8 -0
- package/lib/components/spider-chart/spider-chart.component.d.ts +52 -0
- package/lib/enums/direction.enum.d.ts +4 -0
- package/lib/enums/form-field-type.d.ts +28 -0
- package/lib/enums/local-storage-keys.enum.d.ts +3 -0
- package/lib/enums/status-types.d.ts +6 -0
- package/lib/model/select-option-template.d.ts +5 -0
- package/lib/operations/operations.d.ts +19 -0
- package/lib/pipes/array-sort/array.sort.pipe.d.ts +7 -0
- package/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.d.ts +7 -0
- package/lib/pipes/date-localization/date-localization.pipe.d.ts +8 -0
- package/lib/pipes/fallback-translate/fallback-translate.pipe.d.ts +11 -0
- package/lib/pipes/get-display-value/get-display-value.pipe.d.ts +13 -0
- package/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.d.ts +8 -0
- package/lib/pipes/initials/initials.pipe.d.ts +7 -0
- package/lib/pipes/round/round.pipe.d.ts +7 -0
- package/lib/pipes/update-llm-preference/update-llm-preference.pipe.d.ts +8 -0
- package/lib/services/abstract-cache.service.d.ts +9 -0
- package/lib/shared/shared/alert-popup/alert-popup.component.d.ts +14 -0
- package/lib/shared/shared/message-modal/message-modal.component.d.ts +29 -0
- package/lib/shared/shared/status-icon/status-icon.component.d.ts +7 -0
- package/lib/shared/shared.module.d.ts +13 -0
- package/naniteninja-dashboard-components-lib-1.0.4.tgz +0 -0
- package/package.json +29 -25
- package/public-api.d.ts +122 -0
- package/src/lib/shared-styles/common/theme.scss +3 -3
|
@@ -0,0 +1,308 @@
|
|
|
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
|
+
this.popupModalService.hide();
|
|
78
|
+
}
|
|
79
|
+
ngAfterViewInit() {
|
|
80
|
+
if (this.emojiPickerConfig?.style) {
|
|
81
|
+
if (this.emojiPickerRef?.nativeElement) {
|
|
82
|
+
const style = document.createElement('style');
|
|
83
|
+
style.textContent = this.emojiPickerConfig.style;
|
|
84
|
+
this.emojiPickerRef.nativeElement.shadowRoot.appendChild(style);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
this.scrollToBottom();
|
|
88
|
+
}
|
|
89
|
+
ngOnChanges(changes) {
|
|
90
|
+
if (!this.scrollableContainer)
|
|
91
|
+
return;
|
|
92
|
+
const container = this.scrollableContainer.nativeElement;
|
|
93
|
+
const scrollTop = container.scrollTop;
|
|
94
|
+
const scrollHeight = container.scrollHeight;
|
|
95
|
+
const clientHeight = container.clientHeight;
|
|
96
|
+
if (!(scrollTop < scrollHeight - clientHeight - this.scrollThreshold)) {
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
this.scrollToBottom();
|
|
99
|
+
}, 200);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
onScrollChats() {
|
|
103
|
+
this.getMessages.emit(true);
|
|
104
|
+
}
|
|
105
|
+
handleScrollNewMessage() {
|
|
106
|
+
setTimeout(() => {
|
|
107
|
+
if (!this.isAtStartChat)
|
|
108
|
+
this.scrollToBottom();
|
|
109
|
+
}, 200);
|
|
110
|
+
}
|
|
111
|
+
onScrollMessages(event) {
|
|
112
|
+
const container = this.scrollableContainer.nativeElement;
|
|
113
|
+
const scrollTop = container.scrollTop;
|
|
114
|
+
const scrollHeight = container.scrollHeight;
|
|
115
|
+
const clientHeight = container.clientHeight;
|
|
116
|
+
this.isAtStartChat = scrollTop < scrollHeight - clientHeight - this.scrollThreshold;
|
|
117
|
+
}
|
|
118
|
+
scrollToBottom() {
|
|
119
|
+
const container = this.scrollableContainer.nativeElement;
|
|
120
|
+
container.scrollTop = container.scrollHeight;
|
|
121
|
+
}
|
|
122
|
+
onEmojiclick(event) {
|
|
123
|
+
const emoji = event.detail.unicode;
|
|
124
|
+
if (this.chatInput.inputFieldRef) {
|
|
125
|
+
const textAreaElement = this.chatInput.inputFieldRef.nativeElement;
|
|
126
|
+
const start = textAreaElement.selectionStart ?? 0;
|
|
127
|
+
const end = textAreaElement.selectionEnd ?? 0;
|
|
128
|
+
const currentText = this.textControl.value || '';
|
|
129
|
+
const newText = currentText.slice(0, start) + emoji + currentText.slice(end);
|
|
130
|
+
this.textControl.setValue(newText);
|
|
131
|
+
// Reposiciona el cursor después del emoji
|
|
132
|
+
setTimeout(() => {
|
|
133
|
+
textAreaElement.focus(); // Asegura que el textarea recupere el foco
|
|
134
|
+
textAreaElement.setSelectionRange(start + emoji.length, start + emoji.length);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
handleEmojiPickerClick() {
|
|
139
|
+
if (this.default) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
this.emojiPickerOpened = true;
|
|
143
|
+
if (this.gifVisibility) {
|
|
144
|
+
this.gifVisibility = !this.gifVisibility;
|
|
145
|
+
}
|
|
146
|
+
this.emojiVisibility = !this.emojiVisibility;
|
|
147
|
+
if (this.gifVisibility || this.emojiVisibility) {
|
|
148
|
+
this.setupEmojiPickerClickListener();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
handleGifPickerClick() {
|
|
152
|
+
if (this.emojiVisibility) {
|
|
153
|
+
this.emojiVisibility = !this.emojiVisibility;
|
|
154
|
+
}
|
|
155
|
+
this.gifVisibility = !this.gifVisibility;
|
|
156
|
+
if (this.gifVisibility || this.emojiVisibility) {
|
|
157
|
+
this.setupEmojiPickerClickListener();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
onGifClick(url) {
|
|
161
|
+
if (this.default) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const newMessage = {
|
|
165
|
+
sender: SenderTypes.USER,
|
|
166
|
+
timestamp: new Date(),
|
|
167
|
+
message: '',
|
|
168
|
+
attachments: [
|
|
169
|
+
{
|
|
170
|
+
type: 'gif',
|
|
171
|
+
url,
|
|
172
|
+
},
|
|
173
|
+
],
|
|
174
|
+
};
|
|
175
|
+
this.pendingMessage = newMessage;
|
|
176
|
+
this.onSendMessageModal();
|
|
177
|
+
}
|
|
178
|
+
onSendMessageModal() {
|
|
179
|
+
const modalData = {
|
|
180
|
+
data: {
|
|
181
|
+
responseTime: this.responseTime,
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
this.popupModalService.setValues({ customClass: 'message-modal-container' });
|
|
185
|
+
this.popupModalService
|
|
186
|
+
.show(this.ModalComponent, modalData)
|
|
187
|
+
.afterClose.pipe(first())
|
|
188
|
+
.subscribe((data) => {
|
|
189
|
+
this.pendingMessage.sendOptions = {
|
|
190
|
+
type: data.type,
|
|
191
|
+
arrivalDate: data.arrivalDate,
|
|
192
|
+
};
|
|
193
|
+
this.longPressEnabled = data.longPressEnabled;
|
|
194
|
+
this.onSend();
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
onSendText() {
|
|
198
|
+
this.savePendingMessage();
|
|
199
|
+
this.onSendMessageModal();
|
|
200
|
+
}
|
|
201
|
+
savePendingMessage() {
|
|
202
|
+
const message = this.textControl.value.trim();
|
|
203
|
+
if (message.trim()) {
|
|
204
|
+
const newMessage = {
|
|
205
|
+
sender: SenderTypes.USER,
|
|
206
|
+
timestamp: new Date(),
|
|
207
|
+
message: message,
|
|
208
|
+
attachments: [],
|
|
209
|
+
};
|
|
210
|
+
this.pendingMessage = newMessage;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
onSend() {
|
|
214
|
+
this.gifVisibility = false;
|
|
215
|
+
this.emojiVisibility = false;
|
|
216
|
+
this.textControl.setValue('');
|
|
217
|
+
this.handleScrollNewMessage();
|
|
218
|
+
this.sendMessage.emit(this.pendingMessage);
|
|
219
|
+
}
|
|
220
|
+
onKeyDown(event) {
|
|
221
|
+
if (event.key === 'Enter') {
|
|
222
|
+
this.onSendText();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
onLongPress() {
|
|
226
|
+
this.savePendingMessage();
|
|
227
|
+
this.pendingMessage.sendOptions = {
|
|
228
|
+
type: SendMessageType.INMEDIATELY,
|
|
229
|
+
arrivalDate: new Date(),
|
|
230
|
+
};
|
|
231
|
+
this.onSend();
|
|
232
|
+
}
|
|
233
|
+
onBlurPickerSpace() {
|
|
234
|
+
this.gifVisibility = false;
|
|
235
|
+
this.emojiVisibility = false;
|
|
236
|
+
this.cdr.markForCheck();
|
|
237
|
+
this.removeEmojiPickerClickListener();
|
|
238
|
+
}
|
|
239
|
+
setupEmojiPickerClickListener() {
|
|
240
|
+
if (this.documentClickListener)
|
|
241
|
+
return;
|
|
242
|
+
this.documentClickListener = this.renderer.listen('document', 'click', (event) => {
|
|
243
|
+
if (!this.elementRef.nativeElement.contains(event.target)) {
|
|
244
|
+
this.onBlurPickerSpace();
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
removeEmojiPickerClickListener() {
|
|
249
|
+
if (this.documentClickListener) {
|
|
250
|
+
this.documentClickListener();
|
|
251
|
+
this.documentClickListener = null;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
255
|
+
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: [
|
|
256
|
+
{
|
|
257
|
+
provide: NG_VALUE_ACCESSOR,
|
|
258
|
+
useExisting: ChatComponent,
|
|
259
|
+
multi: true,
|
|
260
|
+
},
|
|
261
|
+
], 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\">\n <div class=\"chat-container\">\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">\u2193</div>\n <div\n class=\"dateMessages\"\n #scrollableContainer\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrollChats()\"\n (scroll)=\"onScrollMessages($event)\"\n >\n <div class=\"chat-item-container chat-item-container_init\">\n <div class=\"date-message\">\n <span>{{ prospectJoinDate ? (prospectJoinDate | date: 'MMM d, HH:mm') : '-' }}</span>\n </div>\n <div class=\"chat-item init-chat\">\n <div class=\"chat-item_text\">{{ 'CHAT.INITIAL_TEXT' | translate }}</div>\n </div>\n </div>\n <div\n *ngFor=\"let dateMessage of messages\"\n class=\"chat-item-container\"\n [class.chat-item-container_user]=\"dateMessage.message.sender === 'user'\"\n [class.chat-item-container_other]=\"dateMessage.message.sender === 'other'\"\n >\n <div class=\"date-message\" *ngIf=\"dateMessage.isFirstMessage && includeTime\">\n <span>{{ dateMessage.date | date: 'MMM d' }}</span>\n </div>\n <div class=\"chat-item\" [class.user-chat]=\"dateMessage.message.sender === 'user'\" [class.other-chat]=\"dateMessage.message.sender === 'other'\">\n @if (dateMessage.message.message !== '') {\n <div class=\"chat-item_text\">{{ dateMessage.message.message }}</div>\n } @else if (dateMessage.message.attachments[0].url !== '') {\n <img class=\"chat-item_image\" [src]=\"dateMessage.message.attachments[0].url\" alt=\"\" />\n }\n <div class=\"chat-item_timestamp\" *ngIf=\"includeTime\">\n {{ dateMessage.message.timestamp | date: 'shortTime' }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"bottom-gradient-fade\"></div>\n </div>\n <form autocomplete=\"off\" libFocusInvalidInput *ngIf=\"textControl\" class=\"message-sender\">\n <lib-input-field\n #chatInput\n [formControl]=\"textControl\"\n [value]=\"newTextMessage\"\n [label]=\"\"\n [textarea]=\"true\"\n placeholder=\"Send Message to Client Prospect\"\n (keyDown)=\"onKeyDown($event)\"\n [maxLength]=\"maxLength\"\n >\n </lib-input-field>\n <div class=\"chat-buttons\">\n <div class=\"send\" libLongPress [longPressEnabled]=\"longPressEnabled\" (shortPress)=\"onSendText()\" (longPress)=\"onLongPress()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 22\" fill=\"none\">\n <g filter=\"url(#filter0_d_748_3387)\">\n <path\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\"\n fill=\"url(#paint0_linear_748_3387)\"\n />\n </g>\n <defs>\n <filter id=\"filter0_d_748_3387\" x=\"0.85553\" y=\"0.000732422\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\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\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\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\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_3387\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_3387\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n <lib-popup customClass=\"message-modal-container\" [isOpen]=\"toggleMessageModal\" [modalComponent]=\"ModalComponent\" [modalComponentData]=\"{ modal: {} }\"> </lib-popup>\n <div\n [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\n [name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\n (click)=\"handleEmojiPickerClick()\"\n [src]=\"emojiPickerConfig?.pickerIcon\"\n class=\"emoji\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" overflow=\"auto\">\n <g>\n <mask id=\"path-1-outside-1_422_3414\" maskUnits=\"userSpaceOnUse\" x=\"-0.72551\" y=\"-0.713776\" fill=\"url(#paint0_linear_748_3387)\">\n <path\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\"\n />\n </mask>\n <path\n _ngcontent-ng-c433636891=\"\"\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\"\n fill=\"url(#paint0_linear_748_3387)\"\n ></path>\n <path\n _ngcontent-ng-c433636891=\"\"\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\"\n stroke=\"url(#paint0_linear_748_3387)\"\n fill=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.492535\"\n mask=\"url(#path-1-outside-1_422_3414)\"\n ></path>\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\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\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\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\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n @if (enableGifPicker) {\n <div class=\"gifs\" (click)=\"handleGifPickerClick()\"></div>\n <div class=\"gifs\" *ngIf=\"includeGifMessage\" (click)=\"handleGifPickerClick()\">\n <svg viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path\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\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\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\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\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\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\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\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n }\n </div>\n <div class=\"emoji-picker-space\" [ngStyle]=\"{ 'z-index': !(gifVisibility || emojiVisibility) ? -1 : 11 }\" (blur)=\"onBlurPickerSpace()\">\n @if (gifVisibility && enableGifPicker) {\n <lib-gif-selector (selectGif)=\"onGifClick($event)\"></lib-gif-selector>\n }\n @if (emojiPickerOpened) {\n <emoji-picker #emojiPicker [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\" emoji-version=\"15.0\" (emoji-click)=\"onEmojiclick($event)\"></emoji-picker>\n }\n </div>\n </form>\n</div>\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 }); }
|
|
262
|
+
}
|
|
263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatComponent, decorators: [{
|
|
264
|
+
type: Component,
|
|
265
|
+
args: [{ selector: 'lib-chat', providers: [
|
|
266
|
+
{
|
|
267
|
+
provide: NG_VALUE_ACCESSOR,
|
|
268
|
+
useExisting: ChatComponent,
|
|
269
|
+
multi: true,
|
|
270
|
+
},
|
|
271
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"chat-component\">\n <div class=\"chat-container\">\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">\u2193</div>\n <div\n class=\"dateMessages\"\n #scrollableContainer\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrollChats()\"\n (scroll)=\"onScrollMessages($event)\"\n >\n <div class=\"chat-item-container chat-item-container_init\">\n <div class=\"date-message\">\n <span>{{ prospectJoinDate ? (prospectJoinDate | date: 'MMM d, HH:mm') : '-' }}</span>\n </div>\n <div class=\"chat-item init-chat\">\n <div class=\"chat-item_text\">{{ 'CHAT.INITIAL_TEXT' | translate }}</div>\n </div>\n </div>\n <div\n *ngFor=\"let dateMessage of messages\"\n class=\"chat-item-container\"\n [class.chat-item-container_user]=\"dateMessage.message.sender === 'user'\"\n [class.chat-item-container_other]=\"dateMessage.message.sender === 'other'\"\n >\n <div class=\"date-message\" *ngIf=\"dateMessage.isFirstMessage && includeTime\">\n <span>{{ dateMessage.date | date: 'MMM d' }}</span>\n </div>\n <div class=\"chat-item\" [class.user-chat]=\"dateMessage.message.sender === 'user'\" [class.other-chat]=\"dateMessage.message.sender === 'other'\">\n @if (dateMessage.message.message !== '') {\n <div class=\"chat-item_text\">{{ dateMessage.message.message }}</div>\n } @else if (dateMessage.message.attachments[0].url !== '') {\n <img class=\"chat-item_image\" [src]=\"dateMessage.message.attachments[0].url\" alt=\"\" />\n }\n <div class=\"chat-item_timestamp\" *ngIf=\"includeTime\">\n {{ dateMessage.message.timestamp | date: 'shortTime' }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"bottom-gradient-fade\"></div>\n </div>\n <form autocomplete=\"off\" libFocusInvalidInput *ngIf=\"textControl\" class=\"message-sender\">\n <lib-input-field\n #chatInput\n [formControl]=\"textControl\"\n [value]=\"newTextMessage\"\n [label]=\"\"\n [textarea]=\"true\"\n placeholder=\"Send Message to Client Prospect\"\n (keyDown)=\"onKeyDown($event)\"\n [maxLength]=\"maxLength\"\n >\n </lib-input-field>\n <div class=\"chat-buttons\">\n <div class=\"send\" libLongPress [longPressEnabled]=\"longPressEnabled\" (shortPress)=\"onSendText()\" (longPress)=\"onLongPress()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 22\" fill=\"none\">\n <g filter=\"url(#filter0_d_748_3387)\">\n <path\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\"\n fill=\"url(#paint0_linear_748_3387)\"\n />\n </g>\n <defs>\n <filter id=\"filter0_d_748_3387\" x=\"0.85553\" y=\"0.000732422\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\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\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\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\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_3387\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_3387\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n <lib-popup customClass=\"message-modal-container\" [isOpen]=\"toggleMessageModal\" [modalComponent]=\"ModalComponent\" [modalComponentData]=\"{ modal: {} }\"> </lib-popup>\n <div\n [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\n [name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\n (click)=\"handleEmojiPickerClick()\"\n [src]=\"emojiPickerConfig?.pickerIcon\"\n class=\"emoji\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" overflow=\"auto\">\n <g>\n <mask id=\"path-1-outside-1_422_3414\" maskUnits=\"userSpaceOnUse\" x=\"-0.72551\" y=\"-0.713776\" fill=\"url(#paint0_linear_748_3387)\">\n <path\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\"\n />\n </mask>\n <path\n _ngcontent-ng-c433636891=\"\"\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\"\n fill=\"url(#paint0_linear_748_3387)\"\n ></path>\n <path\n _ngcontent-ng-c433636891=\"\"\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\"\n stroke=\"url(#paint0_linear_748_3387)\"\n fill=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.492535\"\n mask=\"url(#path-1-outside-1_422_3414)\"\n ></path>\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\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\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\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\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n @if (enableGifPicker) {\n <div class=\"gifs\" (click)=\"handleGifPickerClick()\"></div>\n <div class=\"gifs\" *ngIf=\"includeGifMessage\" (click)=\"handleGifPickerClick()\">\n <svg viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path\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\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\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\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\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\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\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\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n }\n </div>\n <div class=\"emoji-picker-space\" [ngStyle]=\"{ 'z-index': !(gifVisibility || emojiVisibility) ? -1 : 11 }\" (blur)=\"onBlurPickerSpace()\">\n @if (gifVisibility && enableGifPicker) {\n <lib-gif-selector (selectGif)=\"onGifClick($event)\"></lib-gif-selector>\n }\n @if (emojiPickerOpened) {\n <emoji-picker #emojiPicker [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\" emoji-version=\"15.0\" (emoji-click)=\"onEmojiclick($event)\"></emoji-picker>\n }\n </div>\n </form>\n</div>\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"] }]
|
|
272
|
+
}], propDecorators: { default: [{
|
|
273
|
+
type: Input
|
|
274
|
+
}], responseTime: [{
|
|
275
|
+
type: Input
|
|
276
|
+
}], inputValue: [{
|
|
277
|
+
type: Input
|
|
278
|
+
}], emojiPickerConfig: [{
|
|
279
|
+
type: Input
|
|
280
|
+
}], includeGifMessage: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], includeTime: [{
|
|
283
|
+
type: Input
|
|
284
|
+
}], dateMessages: [{
|
|
285
|
+
type: Input
|
|
286
|
+
}], maxLength: [{
|
|
287
|
+
type: Input
|
|
288
|
+
}], enableGifPicker: [{
|
|
289
|
+
type: Input
|
|
290
|
+
}], prospectJoinDate: [{
|
|
291
|
+
type: Input
|
|
292
|
+
}], sendMessage: [{
|
|
293
|
+
type: Output
|
|
294
|
+
}], getMessages: [{
|
|
295
|
+
type: Output
|
|
296
|
+
}], disabled: [{
|
|
297
|
+
type: Input
|
|
298
|
+
}], emojiPickerRef: [{
|
|
299
|
+
type: ViewChild,
|
|
300
|
+
args: ['emojiPicker']
|
|
301
|
+
}], scrollableContainer: [{
|
|
302
|
+
type: ViewChild,
|
|
303
|
+
args: ['scrollableContainer']
|
|
304
|
+
}], chatInput: [{
|
|
305
|
+
type: ViewChild,
|
|
306
|
+
args: ['chatInput']
|
|
307
|
+
}] } });
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY2hhdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY2hhdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDckcsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQWV0RSxNQUFNLE9BQU8sYUFBYTtJQWIxQjtRQWNXLFlBQU8sR0FBYSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBWSxhQUFhLENBQUM7UUFTL0MscURBQXFEO1FBQzVDLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUMzQyxvREFBb0Q7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QUFnQjtzQkFBeEIsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSztnQkFFb0IsY0FBYztzQkFBdkMsU0FBUzt1QkFBQyxhQUFhO2dCQUNVLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ1IsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgJ2Vtb2ppLXBpY2tlci1lbGVtZW50JztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbW9qaVBpY2tlckNvbmZpZyB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInO1xuaW1wb3J0IHsgTGliTWVzc2FnZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NoYXJlZC9tZXNzYWdlLW1vZGFsL21lc3NhZ2UtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0RmllbGRDb21wb25lbnQsIFBvcHVwTW9kYWxTZXJ2aWNlIH0gZnJvbSAnQG5hbml0ZW5pbmphL2lvbmljLWxpYic7XG5pbXBvcnQgeyBDaGF0U2VydmljZSB9IGZyb20gJy4vY2hhdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbmRlclR5cGVzIH0gZnJvbSAnLi9lbnVtcy9zZW5kZXItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBJRGF0ZU1lc3NhZ2VzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2RhdGUtbWVzc2FnZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElNZXNzYWdlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL21lc3NhZ2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlbmRNZXNzYWdlVHlwZSB9IGZyb20gJy4vaW50ZXJmYWNlcy90eXBlLXNlbmQtbWVzc2FnZS5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNoYXQnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBDaGF0Q29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGF0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGRlZmF1bHQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlc3BvbnNlVGltZT86IHN0cmluZyA9ICcwNWggMDRtIDM1cyc7XG4gIC8vIFByZS1maWxsZWQgaW5wdXQgdmFsdWVcbiAgQElucHV0KCkgc2V0IGlucHV0VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy50ZXh0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIC8vIENvbmZpZ3VyYXRpb24gb2YgZW1vamlQaWNrZXIuIE11c3QgYmUgYWRkZWRcbiAgQElucHV0KCkgZW1vamlQaWNrZXJDb25maWc6IEVtb2ppUGlja2VyQ29uZmlnO1xuICAvLyB3aGV0aGVyIGdpZnMgYXMgYSBtZXNzYWdlIHNob3VsZCBiZSBhbGxvd2VkIG9yIG5vdFxuICBASW5wdXQoKSBpbmNsdWRlR2lmTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XG4gIC8vIHdoZXRoZXIgdGltZXN0YW1wIHN0eWxlcyBzaG91bGQgYmUgYWxsb3dlZCBvciBub3RcbiAgQElucHV0KCkgaW5jbHVkZVRpbWU6IGJvb2xlYW4gPSB0cnVlO1xuICAvLyBpbnRlcmZhY2UgZm9yIG1lc3NhZ2VzIHRvIGdyb3VwbSB0aGVtIGluIGRhdGVzXG4gIEBJbnB1dCgpIHNldCBkYXRlTWVzc2FnZXModmFsdWU6IElNZXNzYWdlW10pIHtcbiAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5jaGF0U2VydmljZS50cmFuc2Zvcm1NZXNzYWdlcyh2YWx1ZSk7XG4gIH1cbiAgLy8gbWF4IGxlbmd0aCBmb3IgdGV4dGFyZWEgaW5wdXRcbiAgQElucHV0KCkgbWF4TGVuZ3RoOiBudW1iZXIgPSAxMDA7XG5cbiAgQElucHV0KCkgZW5hYmxlR2lmUGlja2VyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcHJvc3BlY3RKb2luRGF0ZTogRGF0ZTtcblxuICAvLyBzZW5kIG1lc3NhZ2UgZW1pdHRlclxuICBAT3V0cHV0KCkgc2VuZE1lc3NhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElNZXNzYWdlPigpO1xuICAvLyBzY3JvbGxlci11cCBldmVudCB0byBnZXQgb2xkZXIgbWVzc2FnZXNcbiAgQE91dHB1dCgpIGdldE1lc3NhZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnZW1vamlQaWNrZXInKSBlbW9qaVBpY2tlclJlZjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsYWJsZUNvbnRhaW5lcicpIHNjcm9sbGFibGVDb250YWluZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NoYXRJbnB1dCcpIGNoYXRJbnB1dDogSW5wdXRGaWVsZENvbXBvbmVudDtcblxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBwb3B1cE1vZGFsU2VydmljZSA9IGluamVjdChQb3B1cE1vZGFsU2VydmljZSk7XG4gIHByaXZhdGUgY2hhdFNlcnZpY2UgPSBpbmplY3QoQ2hhdFNlcnZpY2UpO1xuICBwcml2YXRlIHBlbmRpbmdNZXNzYWdlOiBJTWVzc2FnZSB8IG51bGw7XG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICBwdWJsaWMgc2Nyb2xsVGhyZXNob2xkID0gMjAwO1xuICBwdWJsaWMgbWVzc2FnZXM6IElEYXRlTWVzc2FnZXNbXSA9IFtdO1xuXG4gIHB1YmxpYyB0ZXh0Q29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nPiA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgcHVibGljIGJhc2U2NEltYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgZW1vamlWaXNpYmlsaXR5OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBnaWZWaXNpYmlsaXR5OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpc0F0U3RhcnRDaGF0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBlbW9qaVBpY2tlck9wZW5lZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBwb3M6IHN0cmluZyA9ICcnO1xuXG4gIHB1YmxpYyBsb25nUHJlc3NFbmFibGVkOiBib29sZWFuO1xuICBwdWJsaWMgdGhyb3R0bGUgPSAwO1xuICBwdWJsaWMgZGlzdGFuY2UgPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgTW9kYWxDb21wb25lbnQgPSBMaWJNZXNzYWdlTW9kYWxDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrTGlzdGVuZXI6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9zcGVjdEpvaW5EYXRlKSB7XG4gICAgICB0aGlzLnByb3NwZWN0Sm9pbkRhdGUgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuY2hhdFNlcnZpY2UuaXNMb25nUHJlc3NGb3JTZW5kSW1tZWRpYXRlbHkoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmxvbmdQcmVzc0VuYWJsZWQgPSByZXM7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudGV4dENvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlRW1vamlQaWNrZXJDbGlja0xpc3RlbmVyKCk7XG4gICAgdGhpcy5wb3B1cE1vZGFsU2VydmljZS5oaWRlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW1vamlQaWNrZXJDb25maWc/LnN0eWxlKSB7XG4gICAgICBpZiAodGhpcy5lbW9qaVBpY2tlclJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gdGhpcy5lbW9qaVBpY2tlckNvbmZpZy5zdHlsZTtcbiAgICAgICAgdGhpcy5lbW9qaVBpY2tlclJlZi5uYXRpdmVFbGVtZW50LnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2Nyb2xsYWJsZUNvbnRhaW5lcikgcmV0dXJuO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuc2Nyb2xsYWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyLnNjcm9sbEhlaWdodDtcbiAgICBjb25zdCBjbGllbnRIZWlnaHQgPSBjb250YWluZXIuY2xpZW50SGVpZ2h0O1xuXG4gICAgaWYgKCEoc2Nyb2xsVG9wIDwgc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0IC0gdGhpcy5zY3JvbGxUaHJlc2hvbGQpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TY3JvbGxDaGF0cygpOiB2b2lkIHtcbiAgICB0aGlzLmdldE1lc3NhZ2VzLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBoYW5kbGVTY3JvbGxOZXdNZXNzYWdlKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzQXRTdGFydENoYXQpIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgb25TY3JvbGxNZXNzYWdlcyhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnNjcm9sbGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IHNjcm9sbEhlaWdodCA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQ7XG4gICAgY29uc3QgY2xpZW50SGVpZ2h0ID0gY29udGFpbmVyLmNsaWVudEhlaWdodDtcblxuICAgIHRoaXMuaXNBdFN0YXJ0Q2hhdCA9IHNjcm9sbFRvcCA8IHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodCAtIHRoaXMuc2Nyb2xsVGhyZXNob2xkO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5zY3JvbGxhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgb25FbW9qaWNsaWNrKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVtb2ppID0gZXZlbnQuZGV0YWlsLnVuaWNvZGU7XG4gICAgaWYgKHRoaXMuY2hhdElucHV0LmlucHV0RmllbGRSZWYpIHtcbiAgICAgIGNvbnN0IHRleHRBcmVhRWxlbWVudCA9IHRoaXMuY2hhdElucHV0LmlucHV0RmllbGRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gdGV4dEFyZWFFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID8/IDA7XG4gICAgICBjb25zdCBlbmQgPSB0ZXh0QXJlYUVsZW1lbnQuc2VsZWN0aW9uRW5kID8/IDA7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRUZXh0ID0gdGhpcy50ZXh0Q29udHJvbC52YWx1ZSB8fCAnJztcbiAgICAgIGNvbnN0IG5ld1RleHQgPSBjdXJyZW50VGV4dC5zbGljZSgwLCBzdGFydCkgKyBlbW9qaSArIGN1cnJlbnRUZXh0LnNsaWNlKGVuZCk7XG5cbiAgICAgIHRoaXMudGV4dENvbnRyb2wuc2V0VmFsdWUobmV3VGV4dCk7XG5cbiAgICAgIC8vIFJlcG9zaWNpb25hIGVsIGN1cnNvciBkZXNwdcOpcyBkZWwgZW1vamlcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0ZXh0QXJlYUVsZW1lbnQuZm9jdXMoKTsgLy8gQXNlZ3VyYSBxdWUgZWwgdGV4dGFyZWEgcmVjdXBlcmUgZWwgZm9jb1xuICAgICAgICB0ZXh0QXJlYUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQgKyBlbW9qaS5sZW5ndGgsIHN0YXJ0ICsgZW1vamkubGVuZ3RoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVFbW9qaVBpY2tlckNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlZmF1bHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVtb2ppUGlja2VyT3BlbmVkID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLmdpZlZpc2liaWxpdHkpIHtcbiAgICAgIHRoaXMuZ2lmVmlzaWJpbGl0eSA9ICF0aGlzLmdpZlZpc2liaWxpdHk7XG4gICAgfVxuICAgIHRoaXMuZW1vamlWaXNpYmlsaXR5ID0gIXRoaXMuZW1vamlWaXNpYmlsaXR5O1xuXG4gICAgaWYgKHRoaXMuZ2lmVmlzaWJpbGl0eSB8fCB0aGlzLmVtb2ppVmlzaWJpbGl0eSkge1xuICAgICAgdGhpcy5zZXR1cEVtb2ppUGlja2VyQ2xpY2tMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVHaWZQaWNrZXJDbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbW9qaVZpc2liaWxpdHkpIHtcbiAgICAgIHRoaXMuZW1vamlWaXNpYmlsaXR5ID0gIXRoaXMuZW1vamlWaXNpYmlsaXR5O1xuICAgIH1cblxuICAgIHRoaXMuZ2lmVmlzaWJpbGl0eSA9ICF0aGlzLmdpZlZpc2liaWxpdHk7XG5cbiAgICBpZiAodGhpcy5naWZWaXNpYmlsaXR5IHx8IHRoaXMuZW1vamlWaXNpYmlsaXR5KSB7XG4gICAgICB0aGlzLnNldHVwRW1vamlQaWNrZXJDbGlja0xpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uR2lmQ2xpY2sodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kZWZhdWx0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld01lc3NhZ2U6IElNZXNzYWdlID0ge1xuICAgICAgc2VuZGVyOiBTZW5kZXJUeXBlcy5VU0VSLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICBhdHRhY2htZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2dpZicsXG4gICAgICAgICAgdXJsLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgdGhpcy5wZW5kaW5nTWVzc2FnZSA9IG5ld01lc3NhZ2U7XG4gICAgdGhpcy5vblNlbmRNZXNzYWdlTW9kYWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbmRNZXNzYWdlTW9kYWwoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kYWxEYXRhID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICByZXNwb25zZVRpbWU6IHRoaXMucmVzcG9uc2VUaW1lLFxuICAgICAgfSxcbiAgICB9O1xuICAgIFxuICAgIHRoaXMucG9wdXBNb2RhbFNlcnZpY2Uuc2V0VmFsdWVzKHsgY3VzdG9tQ2xhc3M6ICdtZXNzYWdlLW1vZGFsLWNvbnRhaW5lcicgfSk7XG5cbiAgICB0aGlzLnBvcHVwTW9kYWxTZXJ2aWNlXG4gICAgICAuc2hvdyh0aGlzLk1vZGFsQ29tcG9uZW50LCBtb2RhbERhdGEpXG4gICAgICAuYWZ0ZXJDbG9zZS5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMucGVuZGluZ01lc3NhZ2Uuc2VuZE9wdGlvbnMgPSB7XG4gICAgICAgICAgdHlwZTogZGF0YS50eXBlLFxuICAgICAgICAgIGFycml2YWxEYXRlOiBkYXRhLmFycml2YWxEYXRlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubG9uZ1ByZXNzRW5hYmxlZCA9IGRhdGEubG9uZ1ByZXNzRW5hYmxlZDtcblxuICAgICAgICB0aGlzLm9uU2VuZCgpO1xuICAgICAgfSk7XG4gICAgXG4gIH1cblxuICBwdWJsaWMgb25TZW5kVGV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVQZW5kaW5nTWVzc2FnZSgpO1xuICAgIHRoaXMub25TZW5kTWVzc2FnZU1vZGFsKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVBlbmRpbmdNZXNzYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRleHRDb250cm9sLnZhbHVlLnRyaW0oKTtcbiAgICBpZiAobWVzc2FnZS50cmltKCkpIHtcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2U6IElNZXNzYWdlID0ge1xuICAgICAgICBzZW5kZXI6IFNlbmRlclR5cGVzLlVTRVIsXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgYXR0YWNobWVudHM6IFtdLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5wZW5kaW5nTWVzc2FnZSA9IG5ld01lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU2VuZCgpOiB2b2lkIHtcbiAgICB0aGlzLmdpZlZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICB0aGlzLmVtb2ppVmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgIHRoaXMudGV4dENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuaGFuZGxlU2Nyb2xsTmV3TWVzc2FnZSgpO1xuICAgIHRoaXMuc2VuZE1lc3NhZ2UuZW1pdCh0aGlzLnBlbmRpbmdNZXNzYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLm9uU2VuZFRleHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uTG9uZ1ByZXNzKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVBlbmRpbmdNZXNzYWdlKCk7XG4gICAgdGhpcy5wZW5kaW5nTWVzc2FnZS5zZW5kT3B0aW9ucyA9IHtcbiAgICAgIHR5cGU6IFNlbmRNZXNzYWdlVHlwZS5JTk1FRElBVEVMWSxcbiAgICAgIGFycml2YWxEYXRlOiBuZXcgRGF0ZSgpLFxuICAgIH07XG4gICAgdGhpcy5vblNlbmQoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25CbHVyUGlja2VyU3BhY2UoKTogdm9pZCB7XG4gICAgdGhpcy5naWZWaXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgdGhpcy5lbW9qaVZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLnJlbW92ZUVtb2ppUGlja2VyQ2xpY2tMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEVtb2ppUGlja2VyQ2xpY2tMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHJldHVybjtcblxuICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgIHRoaXMub25CbHVyUGlja2VyU3BhY2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRW1vamlQaWNrZXJDbGlja0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjaGF0LWNvbXBvbmVudFwiPlxuICA8ZGl2IGNsYXNzPVwiY2hhdC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ28tYnV0dG9uXCIgKm5nSWY9XCJpc0F0U3RhcnRDaGF0XCIgKGNsaWNrKT1cInNjcm9sbFRvQm90dG9tKClcIj7ihpM8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRhdGVNZXNzYWdlc1wiXG4gICAgICAjc2Nyb2xsYWJsZUNvbnRhaW5lclxuICAgICAgaW5maW5pdGVTY3JvbGxcbiAgICAgIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cImRpc3RhbmNlXCJcbiAgICAgIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cInRocm90dGxlXCJcbiAgICAgIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIlxuICAgICAgKHNjcm9sbGVkVXApPVwib25TY3JvbGxDaGF0cygpXCJcbiAgICAgIChzY3JvbGwpPVwib25TY3JvbGxNZXNzYWdlcygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1pdGVtLWNvbnRhaW5lciBjaGF0LWl0ZW0tY29udGFpbmVyX2luaXRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtbWVzc2FnZVwiPlxuICAgICAgICAgIDxzcGFuPnt7IHByb3NwZWN0Sm9pbkRhdGUgPyAocHJvc3BlY3RKb2luRGF0ZSB8IGRhdGU6ICdNTU0gZCwgSEg6bW0nKSA6ICctJyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGF0LWl0ZW0gaW5pdC1jaGF0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXQtaXRlbV90ZXh0XCI+e3sgJ0NIQVQuSU5JVElBTF9URVhUJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF0ZU1lc3NhZ2Ugb2YgbWVzc2FnZXNcIlxuICAgICAgICBjbGFzcz1cImNoYXQtaXRlbS1jb250YWluZXJcIlxuICAgICAgICBbY2xhc3MuY2hhdC1pdGVtLWNvbnRhaW5lcl91c2VyXT1cImRhdGVNZXNzYWdlLm1lc3NhZ2Uuc2VuZGVyID09PSAndXNlcidcIlxuICAgICAgICBbY2xhc3MuY2hhdC1pdGVtLWNvbnRhaW5lcl9vdGhlcl09XCJkYXRlTWVzc2FnZS5tZXNzYWdlLnNlbmRlciA9PT0gJ290aGVyJ1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLW1lc3NhZ2VcIiAqbmdJZj1cImRhdGVNZXNzYWdlLmlzRmlyc3RNZXNzYWdlICYmIGluY2x1ZGVUaW1lXCI+XG4gICAgICAgICAgPHNwYW4+e3sgZGF0ZU1lc3NhZ2UuZGF0ZSB8IGRhdGU6ICdNTU0gZCcgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1pdGVtXCIgW2NsYXNzLnVzZXItY2hhdF09XCJkYXRlTWVzc2FnZS5tZXNzYWdlLnNlbmRlciA9PT0gJ3VzZXInXCIgW2NsYXNzLm90aGVyLWNoYXRdPVwiZGF0ZU1lc3NhZ2UubWVzc2FnZS5zZW5kZXIgPT09ICdvdGhlcidcIj5cbiAgICAgICAgICBAaWYgKGRhdGVNZXNzYWdlLm1lc3NhZ2UubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGF0LWl0ZW1fdGV4dFwiPnt7IGRhdGVNZXNzYWdlLm1lc3NhZ2UubWVzc2FnZSB9fTwvZGl2PlxuICAgICAgICAgIH0gQGVsc2UgaWYgKGRhdGVNZXNzYWdlLm1lc3NhZ2UuYXR0YWNobWVudHNbMF0udXJsICE9PSAnJykge1xuICAgICAgICAgICAgPGltZyBjbGFzcz1cImNoYXQtaXRlbV9pbWFnZVwiIFtzcmNdPVwiZGF0ZU1lc3NhZ2UubWVzc2FnZS5hdHRhY2htZW50c1swXS51cmxcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1pdGVtX3RpbWVzdGFtcFwiICpuZ0lmPVwiaW5jbHVkZVRpbWVcIj5cbiAgICAgICAgICAgIHt7IGRhdGVNZXNzYWdlLm1lc3NhZ2UudGltZXN0YW1wIHwgZGF0ZTogJ3Nob3J0VGltZScgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWdyYWRpZW50LWZhZGVcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGxpYkZvY3VzSW52YWxpZElucHV0ICpuZ0lmPVwidGV4dENvbnRyb2xcIiBjbGFzcz1cIm1lc3NhZ2Utc2VuZGVyXCI+XG4gICAgPGxpYi1pbnB1dC1maWVsZFxuICAgICAgI2NoYXRJbnB1dFxuICAgICAgW2Zvcm1Db250cm9sXT1cInRleHRDb250cm9sXCJcbiAgICAgIFt2YWx1ZV09XCJuZXdUZXh0TWVzc2FnZVwiXG4gICAgICBbbGFiZWxdPVwiXCJcbiAgICAgIFt0ZXh0YXJlYV09XCJ0cnVlXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VuZCBNZXNzYWdlIHRvIENsaWVudCBQcm9zcGVjdFwiXG4gICAgICAoa2V5RG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgPlxuICAgIDwvbGliLWlucHV0LWZpZWxkPlxuICAgIDxkaXYgY2xhc3M9XCJjaGF0LWJ1dHRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZW5kXCIgbGliTG9uZ1ByZXNzIFtsb25nUHJlc3NFbmFibGVkXT1cImxvbmdQcmVzc0VuYWJsZWRcIiAoc2hvcnRQcmVzcyk9XCJvblNlbmRUZXh0KClcIiAobG9uZ1ByZXNzKT1cIm9uTG9uZ1ByZXNzKClcIj5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMyAyMlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNzQ4XzMzODcpXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTE0LjYzMTEgMTcuMDU0NUwxOC4zMjI5IDUuODU5OTZDMTguNjkyIDQuNzc4NjcgMTcuNjQ2IDMuNjk3MzggMTYuNjAwMSA0LjA3OTAxTDUuNzcwOTIgNy44OTUzM0M0LjU0MDMzIDguMzQwNTYgNC41NDAzMyAxMC4xMjE1IDUuODMyNDQgMTAuNTAzMkw5LjQ2MjY2IDExLjUyMDhDMTAuMjYyNSAxMS43NzUzIDEwLjkzOTQgMTIuNDExMyAxMS4xMjM5IDEzLjIzODFMMTIuMTA4NCAxNi45OTA4QzEyLjQ3NzYgMTguMzI2NiAxNC4yMDA0IDE4LjMyNjYgMTQuNjMxMSAxNy4wNTQ1WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF83NDhfMzM4N1wiIHg9XCIwLjg1NTUzXCIgeT1cIjAuMDAwNzMyNDIyXCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgPGZlT2Zmc2V0IC8+XG4gICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIgLz5cbiAgICAgICAgICAgICAgPGZlQ29tcG9zaXRlIGluMj1cImhhcmRBbHBoYVwiIG9wZXJhdG9yPVwib3V0XCIgLz5cbiAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDAuMDk2MTUzOCAwIDAgMCAwIDAuNTkzMjY5IDAgMCAwIDEgMFwiIC8+XG4gICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzQ4XzMzODdcIiAvPlxuICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0OF8zMzg3XCIgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDBfbGluZWFyXzc0OF8zMzg3XCIgeDE9XCIxOC41MTM0XCIgeTE9XCIyLjgxMDk3XCIgeDI9XCIwLjE2Mjc3M1wiIHkyPVwiMzUuMzU1NlwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZFM0M3MlwiIC8+XG4gICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAuMzg0NjE1XCIgc3RvcC1jb2xvcj1cIiNGRkI1RTlcIiAvPlxuICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgICA8L2RlZnM+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGliLXBvcHVwIGN1c3RvbUNsYXNzPVwibWVzc2FnZS1tb2RhbC1jb250YWluZXJcIiBbaXNPcGVuXT1cInRvZ2dsZU1lc3NhZ2VNb2RhbFwiIFttb2RhbENvbXBvbmVudF09XCJNb2RhbENvbXBvbmVudFwiIFttb2RhbENvbXBvbmVudERhdGFdPVwieyBtb2RhbDoge30gfVwiPiA8L2xpYi1wb3B1cD5cbiAgICAgIDxkaXZcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZW1vamktcGlja2VyLXRyaWdnZXInOiB0cnVlLCBhY3RpdmU6IGVtb2ppVmlzaWJpbGl0eSB9XCJcbiAgICAgICAgW25hbWVdPVwiZW1vamlQaWNrZXJDb25maWc/LnBpY2tlckljb24gPyAnJyA6ICdib2R5LW91dGxpbmUnXCJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZUVtb2ppUGlja2VyQ2xpY2soKVwiXG4gICAgICAgIFtzcmNdPVwiZW1vamlQaWNrZXJDb25maWc/LnBpY2tlckljb25cIlxuICAgICAgICBjbGFzcz1cImVtb2ppXCJcbiAgICAgID5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgb3ZlcmZsb3c9XCJhdXRvXCI+XG4gICAgICAgICAgPGc+XG4gICAgICAgICAgICA8bWFzayBpZD1cInBhdGgtMS1vdXRzaWRlLTFfNDIyXzM0MTRcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCItMC43MjU1MVwiIHk9XCItMC43MTM3NzZcIiBmaWxsPVwidXJsKCNwYWludDBfbGluZWFyXzc0OF8zMzg3KVwiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNNS4xMzA1NyAwLjI4NjIyNEM3LjgxMjUzIDAuMjg2MjI0IDkuOTg2NjUgMi41MzM3MyA5Ljk4NjY1IDUuMzA2MjNDOS45ODY2NSA4LjA3ODIzIDcuODEyMDUgMTAuMzI1MiA1LjEzMDU3IDEwLjMyNTJDMi40NDg2MSAxMC4zMjU3IDAuMjc0NDkgOC4wNzgyMyAwLjI3NDQ5IDUuMzA2MjNDMC4yNzQ0OSAyLjUzMzczIDIuNDQ4NjEgMC4yODYyMjQgNS4xMzA1NyAwLjI4NjIyNFpNNS4xMzA1NyAxLjAzOTA4QzQuNTg0NzYgMS4wMzI5NiA0LjA0MzIgMS4xMzg4IDMuNTM3MjMgMS4zNTA0OUMzLjAzMTI2IDEuNTYyMTggMi41NzA5MiAxLjg3NTUgMi4xODI4NyAyLjI3MjMzQzEuNzk0ODIgMi42NjkxNSAxLjQ4Njc1IDMuMTQxNiAxLjI3NjUgMy42NjIzM0MxLjA2NjI1IDQuMTgzMDUgMC45NTc5OSA0Ljc0MTcyIDAuOTU3OTkgNS4zMDU5OEMwLjk1Nzk5IDUuODcwMjUgMS4wNjYyNSA2LjQyODkxIDEuMjc2NSA2Ljk0OTY0QzEuNDg2NzUgNy40NzAzNiAxLjc5NDgyIDcuOTQyODEgMi4xODI4NyA4LjMzOTY0QzIuNTcwOTIgOC43MzY0NiAzLjAzMTI2IDkuMDQ5NzkgMy41MzcyMyA5LjI2MTQ3QzQuMDQzMiA5LjQ3MzE2IDQuNTg0NzYgOS41NzkwMSA1LjEzMDU3IDkuNTcyODlDNi4yMTc1MiA5LjU2MDcgNy4yNTU5NCA5LjEwNTc5IDguMDIwMzkgOC4zMDY5MUM4Ljc4NDg1IDcuNTA4MDQgOS4yMTM2MiA2LjQyOTY5IDkuMjEzNjIgNS4zMDU5OEM5LjIxMzYyIDQuMTgyMjggOC43ODQ4NSAzLjEwMzkzIDguMDIwMzkgMi4zMDUwNUM3LjI1NTk0IDEuNTA2MTggNi4yMTc1MiAxLjA1MTI2IDUuMTMwNTcgMS4wMzkwOFpNMy40MTI4MyA2LjcwMzAyQzMuNjE3MTggNi45NzE5MyAzLjg3ODAzIDcuMTg5MjUgNC4xNzU2MyA3LjMzODU1QzQuNDczMjMgNy40ODc4NSA0Ljc5OTc4IDcuNTY1MjIgNS4xMzA1NyA3LjU2NDc5QzUuNDYxIDcuNTY1MiA1Ljc4NzIxIDcuNDg3OTggNi4wODQ1MyA3LjMzODk1QzYuMzgxODYgNy4xODk5MiA2LjY0MjUzIDYuOTcyOTggNi44NDY4NSA2LjcwNDUzQzYuODc2NSA2LjY2NTc0IDYuOTEzMjUgNi42MzMzNyA2Ljk1NSA2LjYwOTI2QzYuOTk2NzUgNi41ODUxNSA3LjA0MjY4IDYuNTY5NzggNy4wOTAxOCA2LjU2NDAzQzcuMTM3NjcgNi41NTgyNyA3LjE4NTggNi41NjIyNCA3LjIzMTgxIDYuNTc1NzFDNy4yNzc4MiA2LjU4OTE5IDcuMzIwODIgNi42MTE5IDcuMzU4MzQgNi42NDI1NEM3LjM5NTg2IDYuNjczMTkgNy40MjcxNyA2LjcxMTE4IDcuNDUwNDkgNi43NTQzNEM3LjQ3MzgxIDYuNzk3NSA3LjQ4ODY4IDYuODQ0OTggNy40OTQyNSA2Ljg5NDA4QzcuNDk5ODIgNi45NDMxOCA3LjQ5NTk4IDYuOTkyOTMgNy40ODI5NCA3LjA0MDVDNy40Njk5MSA3LjA4ODA2IDcuNDQ3OTUgNy4xMzI1MSA3LjQxODMgNy4xNzEzQzcuMTQ1ODIgNy41Mjg5NyA2Ljc5ODMzIDcuODE4IDYuNDAyMDIgOC4wMTY1OEM2LjAwNTcyIDguMjE1MTYgNS41NzA5NyA4LjMxODEgNS4xMzA1NyA4LjMxNzY0QzQuNjg5NTMgOC4zMTgwOCA0LjI1NDE2IDguMjE0ODQgMy44NTc0IDguMDE1NzJDMy40NjA2NCA3LjgxNjYgMy4xMTI4NyA3LjUyNjgxIDIuODQwNDIgNy4xNjgyOEMyLjgxMDgzIDcuMTI5NDMgMi43ODg5NCA3LjA4NDkzIDIuNzc1OTkgNy4wMzczM0MyLjc2MzA0IDYuOTg5NzMgMi43NTkyOSA2LjkzOTk2IDIuNzY0OTUgNi44OTA4NkMyLjc3MDYxIDYuODQxNzYgMi43ODU1NiA2Ljc5NDMgMi44MDg5NyA2Ljc1MTE3QzIuODMyMzcgNi43MDgwNSAyLjg2Mzc2IDYuNjcwMTEgMi45MDEzNSA2LjYzOTUzQzIuOTM4OTMgNi42MDg5NSAyLjk4MTk4IDYuNTg2MzIgMy4wMjgwMiA2LjU3MjkzQzMuMDc0MDcgNi41NTk1NSAzLjEyMjIxIDYuNTU1NjcgMy4xNjk3MSA2LjU2MTUyQzMuMjE3MjEgNi41NjczNyAzLjI2MzEyIDYuNTgyODMgMy4zMDQ4NCA2LjYwNzAyQzMuMzQ2NTUgNi42MzEyMiAzLjM4MzI1IDYuNjYzNjcgMy40MTI4MyA2LjcwMjUyVjYuNzAzMDJaTTMuNjc0MDQgMy42NzUwNkMzLjc1NTE1IDMuNjcyNjggMy44MzU4OSAzLjY4NzE1IDMuOTExNSAzLjcxNzZDMy45ODcxMSAzLjc0ODA1IDQuMDU2MDQgMy43OTM4NiA0LjExNDIyIDMuODUyMzNDNC4xNzI0MSAzLjkxMDggNC4yMTg2NiAzLjk4MDczIDQuMjUwMjQgNC4wNThDNC4yODE4MiA0LjEzNTI3IDQuMjk4MDkgNC4yMTgzIDQuMjk4MDkgNC4zMDIxOEM0LjI5ODA5IDQuMzg2MDYgNC4yODE4MiA0LjQ2OTA5IDQuMjUwMjQgNC41NDYzNkM0LjIxODY2IDQuNjIzNjMgNC4xNzI0MSA0LjY5MzU2IDQuMTE0MjIgNC43NTIwM0M0LjA1NjA0IDQuODEwNSAzLjk4NzExIDQuODU2MzEgMy45MTE1IDQuODg2NzZDMy44MzU4OSA0LjkxNzIxIDMuNzU1MTUgNC45MzE2OCAzLjY3NDA0IDQuOTI5MzFDMy41MTYxMiA0LjkyNDY5IDMuMzY2MTYgNC44NTY1OSAzLjI1NjA0IDQuNzM5NDhDMy4xNDU5MiA0LjYyMjM4IDMuMDg0MzEgNC40NjU1IDMuMDg0MzEgNC4zMDIxOEMzLjA4NDMxIDQuMTM4ODYgMy4xNDU5MiAzLjk4MTk4IDMuMjU2MDQgMy44NjQ4OEMzLjM2NjE2IDMuNzQ3NzcgMy41MTYxMiAzLjY3OTY4IDMuNjc0MDQgMy42NzUwNlpNNi41ODcxIDMuNjc1MDZDNi42NjgyMSAzLjY3MjY4IDYuNzQ4OTYgMy42ODcxNSA2LjgyNDU3IDMuNzE3NkM2LjkwMDE4IDMuNzQ4MDUgNi45NjkxMSAzLjc5Mzg2IDcuMDI3MjkgMy44NTIzM0M3LjA4NTQ3IDMuOTEwOCA3LjEzMTcyIDMuOTgwNzMgNy4xNjMzIDQuMDU4QzcuMTk0ODggNC4xMzUyNyA3LjIxMTE2IDQuMjE4MyA3LjIxMTE2IDQuMzAyMThDNy4yMTExNiA0LjM4NjA2IDcuMTk0ODggNC40NjkwOSA3LjE2MzMgNC41NDYzNkM3LjEzMTcyIDQuNjIzNjMgNy4wODU0NyA0LjY5MzU2IDcuMDI3MjkgNC43NTIwM0M2Ljk2OTExIDQuODEwNSA2LjkwMDE4IDQuODU2MzEgNi44MjQ1NyA0Ljg4Njc2QzYuNzQ4OTYgNC45MTcyMSA2LjY2ODIxIDQuOTMxNjggNi41ODcxIDQuOTI5MzFDNi40MjkxOCA0LjkyNDY5IDYuMjc5MjMgNC44NTY1OSA2LjE2OTExIDQuNzM5NDhDNi4wNTg5OCA0LjYyMjM4IDUuOTk3MzggNC40NjU1IDUuOTk3MzggNC4zMDIxOEM1Ljk5NzM4IDQuMTM4ODYgNi4wNTg5OCAzLjk4MTk4IDYuMTY5MTEgMy44NjQ4OEM2LjI3OTIzIDMuNzQ3NzcgNi40MjkxOCAzLjY3OTY4IDYuNTg3MSAzLjY3NTA2WlwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L21hc2s+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBfbmdjb250ZW50LW5nLWM0MzM2MzY4OTE9XCJcIlxuICAgICAgICAgICAgICBkPVwiTTUuMTMwNTcgMC4yODYyMjRDNy44MTI1MyAwLjI4NjIyNCA5Ljk4NjY1IDIuNTMzNzMgOS45ODY2NSA1LjMwNjIzQzkuOTg2NjUgOC4wNzgyMyA3LjgxMjA1IDEwLjMyNTIgNS4xMzA1NyAxMC4zMjUyQzIuNDQ4NjEgMTAuMzI1NyAwLjI3NDQ5IDguMDc4MjMgMC4yNzQ0OSA1LjMwNjIzQzAuMjc0NDkgMi41MzM3MyAyLjQ0ODYxIDAuMjg2MjI0IDUuMTMwNTcgMC4yODYyMjRaTTUuMTMwNTcgMS4wMzkwOEM0LjU4NDc2IDEuMDMyOTYgNC4wNDMyIDEuMTM4OCAzLjUzNzIzIDEuMzUwNDlDMy4wMzEyNiAxLjU2MjE4IDIuNTcwOTIgMS44NzU1IDIuMTgyODcgMi4yNzIzM0MxLjc5NDgyIDIuNjY5MTUgMS40ODY3NSAzLjE0MTYgMS4yNzY1IDMuNjYyMzNDMS4wNjYyNSA0LjE4MzA1IDAuOTU3OTkgNC43NDE3MiAwLjk1Nzk5IDUuMzA1OThDMC45NTc5OSA1Ljg3MDI1IDEuMDY2MjUgNi40Mjg5MSAxLjI3NjUgNi45NDk2NEMxLjQ4Njc1IDcuNDcwMzYgMS43OTQ4MiA3Ljk0MjgxIDIuMTgyODcgOC4zMzk2NEMyLjU3MDkyIDguNzM2NDYgMy4wMzEyNiA5LjA0OTc5IDMuNTM3MjMgOS4yNjE0N0M0LjA0MzIgOS40NzMxNiA0LjU4NDc2IDkuNTc5MDEgNS4xMzA1NyA5LjU3Mjg5QzYuMjE3NTIgOS41NjA3IDcuMjU1OTQgOS4xMDU3OSA4LjAyMDM5IDguMzA2OTFDOC43ODQ4NSA3LjUwODA0IDkuMjEzNjIgNi40Mjk2OSA5LjIxMzYyIDUuMzA1OThDOS4yMTM2MiA0LjE4MjI4IDguNzg0ODUgMy4xMDM5MyA4LjAyMDM5IDIuMzA1MDVDNy4yNTU5NCAxLjUwNjE4IDYuMjE3NTIgMS4wNTEyNiA1LjEzMDU3IDEuMDM5MDhaTTMuNDEyODMgNi43MDMwMkMzLjYxNzE4IDYuOTcxOTMgMy44NzgwMyA3LjE4OTI1IDQuMTc1NjMgNy4zMzg1NUM0LjQ3MzIzIDcuNDg3ODUgNC43OTk3OCA3LjU2NTIyIDUuMTMwNTcgNy41NjQ3OUM1LjQ2MSA3LjU2NTIgNS43ODcyMSA3LjQ4Nzk4IDYuMDg0NTMgNy4zMzg5NUM2LjM4MTg2IDcuMTg5OTIgNi42NDI1MyA2Ljk3Mjk4IDYuODQ2ODUgNi43MDQ1M0M2Ljg3NjUgNi42NjU3NCA2LjkxMzI1IDYuNjMzMzcgNi45NTUgNi42MDkyNkM2Ljk5Njc1IDYuNTg1MTUgNy4wNDI2OCA2LjU2OTc4IDcuMDkwMTggNi41NjQwM0M3LjEzNzY3IDYuNTU4MjcgNy4xODU4IDYuNTYyMjQgNy4yMzE4MSA2LjU3NTcxQzcuMjc3ODIgNi41ODkxOSA3LjMyMDgyIDYuNjExOSA3LjM1ODM0IDYuNjQyNTRDNy4zOTU4NiA2LjY3MzE5IDcuNDI3MTcgNi43MTExOCA3LjQ1MDQ5IDYuNzU0MzRDNy40NzM4MSA2Ljc5NzUgNy40ODg2OCA2Ljg0NDk4IDcuNDk0MjUgNi44OTQwOEM3LjQ5OTgyIDYuOTQzMTggNy40OTU5OCA2Ljk5MjkzIDcuNDgyOTQgNy4wNDA1QzcuNDY5OTEgNy4wODgwNiA3LjQ0Nzk1IDcuMTMyNTEgNy40MTgzIDcuMTcxM0M3LjE0NTgyIDcuNTI4OTcgNi43OTgzMyA3LjgxOCA2LjQwMjAyIDguMDE2NThDNi4wMDU3MiA4LjIxNTE2IDUuNTcwOTcgOC4zMTgxIDUuMTMwNTcgOC4zMTc2NEM0LjY4OTUzIDguMzE4MDggNC4yNTQxNiA4LjIxNDg0IDMuODU3NCA4LjAxNTcyQzMuNDYwNjQgNy44MTY2IDMuMTEyODcgNy41MjY4MSAyLjg0MDQyIDcuMTY4MjhDMi44MTA4MyA3LjEyOTQzIDIuNzg4OTQgNy4wODQ5MyAyLjc3NTk5IDcuMDM3MzNDMi43NjMwNCA2Ljk4OTczIDIuNzU5MjkgNi45Mzk5NiAyLjc2NDk1IDYuODkwODZDMi43NzA2MSA2Ljg0MTc2IDIuNzg1NTYgNi43OTQzIDIuODA4OTcgNi43NTExN0MyLjgzMjM3IDYuNzA4MDUgMi44NjM3NiA2LjY3MDExIDIuOTAxMzUgNi42Mzk1M0MyLjkzODkzIDYuNjA4OTUgMi45ODE5OCA2LjU4NjMyIDMuMDI4MDIgNi41NzI5M0MzLjA3NDA3IDYuNTU5NTUgMy4xMjIyMSA2LjU1NTY3IDMuMTY5NzEgNi41NjE1MkMzLjIxNzIxIDYuNTY3MzcgMy4yNjMxMiA2LjU4MjgzIDMuMzA0ODQgNi42MDcwMkMzLjM0NjU1IDYuNjMxMjIgMy4zODMyNSA2LjY2MzY3IDMuNDEyODMgNi43MDI1MlY2LjcwMzAyWk0zLjY3NDA0IDMuNjc1MDZDMy43NTUxNSAzLjY3MjY4IDMuODM1ODkgMy42ODcxNSAzLjkxMTUgMy43MTc2QzMuOTg3MTEgMy43NDgwNSA0LjA1NjA0IDMuNzkzODYgNC4xMTQyMiAzLjg1MjMzQzQuMTcyNDEgMy45MTA4IDQuMjE4NjYgMy45ODA3MyA0LjI1MDI0IDQuMDU4QzQuMjgxODIgNC4xMzUyNyA0LjI5ODA5IDQuMjE4MyA0LjI5ODA5IDQuMzAyMThDNC4yOTgwOSA0LjM4NjA2IDQuMjgxODIgNC40NjkwOSA0LjI1MDI0IDQuNTQ2MzZDNC4yMTg2NiA0LjYyMzYzIDQuMTcyNDEgNC42OTM1NiA0LjExNDIyIDQuNzUyMDNDNC4wNTYwNCA0LjgxMDUgMy45ODcxMSA0Ljg1NjMxIDMuOTExNSA0Ljg4Njc2QzMuODM1ODkgNC45MTcyMSAzLjc1NTE1IDQuOTMxNjggMy42NzQwNCA0LjkyOTMxQzMuNTE2MTIgNC45MjQ2OSAzLjM2NjE2IDQuODU2NTkgMy4yNTYwNCA0LjczOTQ4QzMuMTQ1OTIgNC42MjIzOCAzLjA4NDMxIDQuNDY1NSAzLjA4NDMxIDQuMzAyMThDMy4wODQzMSA0LjEzODg2IDMuMTQ1OTIgMy45ODE5OCAzLjI1NjA0IDMuODY0ODhDMy4zNjYxNiAzLjc0Nzc3IDMuNTE2MTIgMy42Nzk2OCAzLjY3NDA0IDMuNjc1MDZaTTYuNTg3MSAzLjY3NTA2QzYuNjY4MjEgMy42NzI2OCA2Ljc0ODk2IDMuNjg3MTUgNi44MjQ1NyAzLjcxNzZDNi45MDAxOCAzLjc0ODA1IDYuOTY5MTEgMy43OTM4NiA3LjAyNzI5IDMuODUyMzNDNy4wODU0NyAzLjkxMDggNy4xMzE3MiAzLjk4MDczIDcuMTYzMyA0LjA1OEM3LjE5NDg4IDQuMTM1MjcgNy4yMTExNiA0LjIxODMgNy4yMTExNiA0LjMwMjE4QzcuMjExMTYgNC4zODYwNiA3LjE5NDg4IDQuNDY5MDkgNy4xNjMzIDQuNTQ2MzZDNy4xMzE3MiA0LjYyMzYzIDcuMDg1NDcgNC42OTM1NiA3LjAyNzI5IDQuNzUyMDNDNi45NjkxMSA0LjgxMDUgNi45MDAxOCA0Ljg1NjMxIDYuODI0NTcgNC44ODY3NkM2Ljc0ODk2IDQuOTE3MjEgNi42NjgyMSA0LjkzMTY4IDYuNTg3MSA0LjkyOTMxQzYuNDI5MTggNC45MjQ2OSA2LjI3OTIzIDQuODU2NTkgNi4xNjkxMSA0LjczOTQ4QzYuMDU4OTggNC42MjIzOCA1Ljk5NzM4IDQuNDY1NSA1Ljk5NzM4IDQuMzAyMThDNS45OTczOCA0LjEzODg2IDYuMDU4OTggMy45ODE5OCA2LjE2OTExIDMuODY0ODhDNi4yNzkyMyAzLjc0Nzc3IDYuNDI5MTggMy42Nzk2OCA2LjU4NzEgMy42NzUwNlpcIlxuICAgICAgICAgICAgICBmaWxsPVwidXJsKCNwYWludDBfbGluZWFyXzc0OF8zMzg3KVwiXG4gICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgX25nY29udGVudC1uZy1jNDMzNjM2ODkxPVwiXCJcbiAgICAgICAgICAgICAgZD1cIk01LjEzMDU3IDAuMjg2MjI0QzcuODEyNTMgMC4yODYyMjQgOS45ODY2NSAyLjUzMzczIDkuOTg2NjUgNS4zMDYyM0M5Ljk4NjY1IDguMDc4MjMgNy44MTIwNSAxMC4zMjUyIDUuMTMwNTcgMTAuMzI1MkMyLjQ0ODYxIDEwLjMyNTcgMC4yNzQ0OSA4LjA3ODIzIDAuMjc0NDkgNS4zMDYyM0MwLjI3NDQ5IDIuNTMzNzMgMi40NDg2MSAwLjI4NjIyNCA1LjEzMDU3IDAuMjg2MjI0Wk01LjEzMDU3IDEuMDM5MDhDNC41ODQ3NiAxLjAzMjk2IDQuMDQzMiAxLjEzODggMy41MzcyMyAxLjM1MDQ5QzMuMDMxMjYgMS41NjIxOCAyLjU3MDkyIDEuODc1NSAyLjE4Mjg3IDIuMjcyMzNDMS43OTQ4MiAyLjY2OTE1IDEuNDg2NzUgMy4xNDE2IDEuMjc2NSAzLjY2MjMzQzEuMDY2MjUgNC4xODMwNSAwLjk1Nzk5IDQuNzQxNzIgMC45NTc5OSA1LjMwNTk4QzAuOTU3OTkgNS44NzAyNSAxLjA2NjI1IDYuNDI4OTEgMS4yNzY1IDYuOTQ5NjRDMS40ODY3NSA3LjQ3MDM2IDEuNzk0ODIgNy45NDI4MSAyLjE4Mjg3IDguMzM5NjRDMi41NzA5MiA4LjczNjQ2IDMuMDMxMjYgOS4wNDk3OSAzLjUzNzIzIDkuMjYxNDdDNC4wNDMyIDkuNDczMTYgNC41ODQ3NiA5LjU3OTAxIDUuMTMwNTcgOS41NzI4OUM2LjIxNzUyIDkuNTYwNyA3LjI1NTk0IDkuMTA1NzkgOC4wMjAzOSA4LjMwNjkxQzguNzg0ODUgNy41MDgwNCA5LjIxMzYyIDYuNDI5NjkgOS4yMTM2MiA1LjMwNTk4QzkuMjEzNjIgNC4xODIyOCA4Ljc4NDg1IDMuMTAzOTMgOC4wMjAzOSAyLjMwNTA1QzcuMjU1OTQgMS41MDYxOCA2LjIxNzUyIDEuMDUxMjYgNS4xMzA1NyAxLjAzOTA4Wk0zLjQxMjgzIDYuNzAzMDJDMy42MTcxOCA2Ljk3MTkzIDMuODc4MDMgNy4xODkyNSA0LjE3NTYzIDcuMzM4NTVDNC40NzMyMyA3LjQ4Nzg1IDQuNzk5NzggNy41NjUyMiA1LjEzMDU3IDcuNTY0NzlDNS40NjEgNy41NjUyIDUuNzg3MjEgNy40ODc5OCA2LjA4NDUzIDcuMzM4OTVDNi4zODE4NiA3LjE4OTkyIDYuNjQyNTMgNi45NzI5OCA2Ljg0Njg1IDYuNzA0NTNDNi44NzY1IDYuNjY1NzQgNi45MTMyNSA2LjYzMzM3IDYuOTU1IDYuNjA5MjZDNi45OTY3NSA2LjU4NTE1IDcuMDQyNjggNi41Njk3OCA3LjA5MDE4IDYuNTY0MDNDNy4xMzc2NyA2LjU1ODI3IDcuMTg1OCA2LjU2MjI0IDcuMjMxODEgNi41NzU3MUM3LjI3NzgyIDYuNTg5MTkgNy4zMjA4MiA2LjYxMTkgNy4zNTgzNCA2LjY0MjU0QzcuMzk1ODYgNi42NzMxOSA3LjQyNzE3IDYuNzExMTggNy40NTA0OSA2Ljc1NDM0QzcuNDczODEgNi43OTc1IDcuNDg4NjggNi44NDQ5OCA3LjQ5NDI1IDYuODk0MDhDNy40OTk4MiA2Ljk0MzE4IDcuNDk1OTggNi45OTI5MyA3LjQ4Mjk0IDcuMDQwNUM3LjQ2OTkxIDcuMDg4MDYgNy40NDc5NSA3LjEzMjUxIDcuNDE4MyA3LjE3MTNDNy4xNDU4MiA3LjUyODk3IDYuNzk4MzMgNy44MTggNi40MDIwMiA4LjAxNjU4QzYuMDA1NzIgOC4yMTUxNiA1LjU3MDk3IDguMzE4MSA1LjEzMDU3IDguMzE3NjRDNC42ODk1MyA4LjMxODA4IDQuMjU0MTYgOC4yMTQ4NCAzLjg1NzQgOC4wMTU3MkMzLjQ2MDY0IDcuODE2NiAzLjExMjg3IDcuNTI2ODEgMi44NDA0MiA3LjE2ODI4QzIuODEwODMgNy4xMjk0MyAyLjc4ODk0IDcuMDg0OTMgMi43NzU5OSA3LjAzNzMzQzIuNzYzMDQgNi45ODk3MyAyLjc1OTI5IDYuOTM5OTYgMi43NjQ5NSA2Ljg5MDg2QzIuNzcwNjEgNi44NDE3NiAyLjc4NTU2IDYuNzk0MyAyLjgwODk3IDYuNzUxMTdDMi44MzIzNyA2LjcwODA1IDIuODYzNzYgNi42NzAxMSAyLjkwMTM1IDYuNjM5NTNDMi45Mzg5MyA2LjYwODk1IDIuOTgxOTggNi41ODYzMiAzLjAyODAyIDYuNTcyOTNDMy4wNzQwNyA2LjU1OTU1IDMuMTIyMjEgNi41NTU2NyAzLjE2OTcxIDYuNTYxNTJDMy4yMTcyMSA2LjU2NzM3IDMuMjYzMTIgNi41ODI4MyAzLjMwNDg0IDYuNjA3MDJDMy4zNDY1NSA2LjYzMTIyIDMuMzgzMjUgNi42NjM2NyAzLjQxMjgzIDYuNzAyNTJWNi43MDMwMlpNMy42NzQwNCAzLjY3NTA2QzMuNzU1MTUgMy42NzI2OCAzLjgzNTg5IDMuNjg3MTUgMy45MTE1IDMuNzE3NkMzLjk4NzExIDMuNzQ4MDUgNC4wNTYwNCAzLjc5Mzg2IDQuMTE0MjIgMy44NTIzM0M0LjE3MjQxIDMuOTEwOCA0LjIxODY2IDMuOTgwNzMgNC4yNTAyNCA0LjA1OEM0LjI4MTgyIDQuMTM1MjcgNC4yOTgwOSA0LjIxODMgNC4yOTgwOSA0LjMwMjE4QzQuMjk4MDkgNC4zODYwNiA0LjI4MTgyIDQuNDY5MDkgNC4yNTAyNCA0LjU0NjM2QzQuMjE4NjYgNC42MjM2MyA0LjE3MjQxIDQuNjkzNTYgNC4xMTQyMiA0Ljc1MjAzQzQuMDU2MDQgNC44MTA1IDMuOTg3MTEgNC44NTYzMSAzLjkxMTUgNC44ODY3NkMzLjgzNTg5IDQuOTE3MjEgMy43NTUxNSA0LjkzMTY4IDMuNjc0MDQgNC45MjkzMUMzLjUxNjEyIDQuOTI0NjkgMy4zNjYxNiA0Ljg1NjU5IDMuMjU2MDQgNC43Mzk0OEMzLjE0NTkyIDQuNjIyMzggMy4wODQzMSA0LjQ2NTUgMy4wODQzMSA0LjMwMjE4QzMuMDg0MzEgNC4xMzg4NiAzLjE0NTkyIDMuOTgxOTggMy4yNTYwNCAzLjg2NDg4QzMuMzY2MTYgMy43NDc3NyAzLjUxNjEyIDMuNjc5NjggMy42NzQwNCAzLjY3NTA2Wk02LjU4NzEgMy42NzUwNkM2LjY2ODIxIDMuNjcyNjggNi43NDg5NiAzLjY4NzE1IDYuODI0NTcgMy43MTc2QzYuOTAwMTggMy43NDgwNSA2Ljk2OTExIDMuNzkzODYgNy4wMjcyOSAzLjg1MjMzQzcuMDg1NDcgMy45MTA4IDcuMTMxNzIgMy45ODA3MyA3LjE2MzMgNC4wNThDNy4xOTQ4OCA0LjEzNTI3IDcuMjExMTYgNC4yMTgzIDcuMjExMTYgNC4zMDIxOEM3LjIxMTE2IDQuMzg2MDYgNy4xOTQ4OCA0LjQ2OTA5IDcuMTYzMyA0LjU0NjM2QzcuMTMxNzIgNC42MjM2MyA3LjA4NTQ3IDQuNjkzNTYgNy4wMjcyOSA0Ljc1MjAzQzYuOTY5MTEgNC44MTA1IDYuOTAwMTggNC44NTYzMSA2LjgyNDU3IDQuODg2NzZDNi43NDg5NiA0LjkxNzIxIDYuNjY4MjEgNC45MzE2OCA2LjU4NzEgNC45MjkzMUM2LjQyOTE4IDQuOTI0NjkgNi4yNzkyMyA0Ljg1NjU5IDYuMTY5MTEgNC43Mzk0OEM2LjA1ODk4IDQuNjIyMzggNS45OTczOCA0LjQ2NTUgNS45OTczOCA0LjMwMjE4QzUuOTk3MzggNC4xMzg4NiA2LjA1ODk4IDMuOTgxOTggNi4xNjkxMSAzLjg2NDg4QzYuMjc5MjMgMy43NDc3NyA2LjQyOTE4IDMuNjc5NjggNi41ODcxIDMuNjc1MDZaXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwidXJsKCNwYWludDBfbGluZWFyXzc0OF8zMzg3KVwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMC40OTI1MzVcIlxuICAgICAgICAgICAgICBtYXNrPVwidXJsKCNwYXRoLTEtb3V0c2lkZS0xXzQyMl8zNDE0KVwiXG4gICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8ZGVmcyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzc0OF83Njg1XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMFwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cbiAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XG4gICAgICAgICAgICAgIDxmZU9mZnNldCAvPlxuICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMlwiIC8+XG4gICAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiIC8+XG4gICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAwLjA5NjE1MzggMCAwIDAgMCAwLjU5MzI2OSAwIDAgMCAxIDBcIiAvPlxuICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0OF83Njg1XCIgLz5cbiAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd183NDhfNzY4NVwiIHJlc3VsdD1cInNoYXBlXCIgLz5cbiAgICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwicGFpbnQwX2xpbmVhcl83NDhfNzY4NVwiIHgxPVwiMTQuMTUwOVwiIHkxPVwiMy40MzM3MlwiIHgyPVwiMC45OTI3OTlcIiB5Mj1cIjI2Ljc3MTVcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cbiAgICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRTNDNzJcIiAvPlxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjM4NDYxNVwiIHN0b3AtY29sb3I9XCIjRkZCNUU5XCIgLz5cbiAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDBfbGluZWFyXzc0OF8zMzg3XCIgeDE9XCIxOC41MTM0XCIgeTE9XCIyLjgxMDk3XCIgeDI9XCIwLjE2Mjc3M1wiIHkyPVwiMzUuMzU1NlwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZFM0M3MlwiIC8+XG4gICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAuMzg0NjE1XCIgc3RvcC1jb2xvcj1cIiNGRkI1RTlcIiAvPlxuICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgICA8L2RlZnM+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGVuYWJsZUdpZlBpY2tlcikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2lmc1wiIChjbGljayk9XCJoYW5kbGVHaWZQaWNrZXJDbGljaygpXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnaWZzXCIgKm5nSWY9XCJpbmNsdWRlR2lmTWVzc2FnZVwiIChjbGljayk9XCJoYW5kbGVHaWZQaWNrZXJDbGljaygpXCI+XG4gICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDExIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTcuMDU1IDEwLjk5OTVINC44OTlDMy4yNTM1IDEwLjk5OTUgMi40MzA1IDEwLjk5OTUgMS44NTkgMTAuNjAwNUMxLjY5Njk0IDEwLjQ4NzMgMS41NTE2NyAxMC4zNTE4IDEuNDI3NSAxMC4xOThDMSA5LjY2NTAxIDEgOC44OTgwMSAxIDcuMzYzMDFWNi4wOTA1MUMxIDQuNjA5MDEgMSAzLjg2ODAxIDEuMjM2NSAzLjI3NjUxQzEuNjE3IDIuMzI1MDEgMi40MjE1IDEuNTc1MDEgMy40NDE1IDEuMjIwMDFDNC4wNzUgMC45OTk1MTIgNC44NyAwLjk5OTUxMiA2LjQ1ODUgMC45OTk1MTJDNy4zNjY1IDAuOTk5NTEyIDcuODIgMC45OTk1MTIgOC4xODI1IDEuMTI1NTFDOC43NjU1IDEuMzI4NTEgOS4yMjUgMS43NTcwMSA5LjQ0MjUgMi4zMDA1MUM5LjU3NzUgMi42Mzg1MSA5LjU3NzUgMy4wNjIwMSA5LjU3NzUgMy45MDg1MVY0Ljk5OTUxXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIwLjc1XCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0xIDUuOTk5NTFDMSA1LjA3OTUxIDEuNzUzIDQuMzMzMDEgMi42ODIgNC4zMzMwMUMzLjAxOCA0LjMzMzAxIDMuNDE0IDQuMzkxMDEgMy43NDA1IDQuMzA0NTFDMy44ODI4MSA0LjI2NzM2IDQuMDEyNzggNC4xOTMyOCA0LjExNzI2IDQuMDg5NzZDNC4yMjE3NCAzLjk4NjI0IDQuMjk3MDMgMy44NTY5NyA0LjMzNTUgMy43MTUwMUM0LjQyMjUgMy4zOTE1MSA0LjM2NCAyLjk5OTAxIDQuMzY0IDIuNjY2MDFDNC4zNjQgMS43NDYwMSA1LjExNyAwLjk5OTUxMiA2LjA0NSAwLjk5OTUxMk02LjA0NiA4Ljk5OTUxSDcuMzA3NU00LjgzMyA2LjkyNDUxQzQuNzcgNi41MjQ1MSA0LjY5MjUgNi41MjQwMSA0LjAyOCA2LjQ5OTUxSDMuNTIzQzMuMjQ0NSA2LjQ5OTUxIDMuMDE4NSA2LjcyMzUxIDMuMDE4NSA2Ljk5OTUxVjguNDk5NTFDMy4wMTg1IDguNzc1NTEgMy4yNDQ1IDguOTk5NTEgMy41MjM1IDguOTk5NTFINC40MzE1QzQuNjI2NSA4Ljk5OTUxIDQuODMzIDguODQzMDEgNC44MzMgOC42NDk1MVY4LjA5OTUxQzQuODMzIDguMDQ0NTEgNC43NzY1IDcuOTQ3NTEgNC43MjEgNy45NDc1MUg0LjE1OU02LjA0NiA2LjQ5OTUxSDYuNjc2NU02LjY3NjUgNi40OTk1MUg3LjMwNzVNNi42NzY1IDYuNDk5NTFWOC45MzcwMU0xMC4yNTA1IDYuNDk5NTFIOC45ODlDOC43MTA1IDYuNDk5NTEgOC40ODQ1IDYuNzIzNTEgOC40ODQ1IDYuOTk5NTFWNy43NDk1MU04LjQ4NDUgNy43NDk1MVY4Ljk5OTUxTTguNDg0NSA3Ljc0OTUxSDkuNzQ2XCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIwLjc1XCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8ZGVmcyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfNzQ4Xzc2ODVcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIzMFwiIGhlaWdodD1cIjMwXCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XG4gICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XG4gICAgICAgICAgICAgICAgPGZlT2Zmc2V0IC8+XG4gICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjJcIiAvPlxuICAgICAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiIC8+XG4gICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDAuMDk2MTUzOCAwIDAgMCAwIDAuNTkzMjY5IDAgMCAwIDEgMFwiIC8+XG4gICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd183NDhfNzY4NVwiIC8+XG4gICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd183NDhfNzY4NVwiIHJlc3VsdD1cInNoYXBlXCIgLz5cbiAgICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInBhaW50MF9saW5lYXJfNzQ4Xzc2ODVcIiB4MT1cIjE0LjE1MDlcIiB5MT1cIjMuNDMzNzJcIiB4Mj1cIjAuOTkyNzk5XCIgeTI9XCIyNi43NzE1XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRTNDNzJcIiAvPlxuICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAuMzg0NjE1XCIgc3RvcC1jb2xvcj1cIiNGRkI1RTlcIiAvPlxuICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDBfbGluZWFyXzc0OF8zMzg3XCIgeDE9XCIxOC41MTM0XCIgeTE9XCIyLjgxMDk3XCIgeDI9XCIwLjE2Mjc3M1wiIHkyPVwiMzUuMzU1NlwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjRkUzQzcyXCIgLz5cbiAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjM4NDYxNVwiIHN0b3AtY29sb3I9XCIjRkZCNUU5XCIgLz5cbiAgICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImVtb2ppLXBpY2tlci1zcGFjZVwiIFtuZ1N0eWxlXT1cInsgJ3otaW5kZXgnOiAhKGdpZlZpc2liaWxpdHkgfHwgZW1vamlWaXNpYmlsaXR5KSA/IC0xIDogMTEgfVwiIChibHVyKT1cIm9uQmx1clBpY2tlclNwYWNlKClcIj5cbiAgICAgIEBpZiAoZ2lmVmlzaWJpbGl0eSAmJiBlbmFibGVHaWZQaWNrZXIpIHtcbiAgICAgICAgPGxpYi1naWYtc2VsZWN0b3IgKHNlbGVjdEdpZik9XCJvbkdpZkNsaWNrKCRldmVudClcIj48L2xpYi1naWYtc2VsZWN0b3I+XG4gICAgICB9XG4gICAgICBAaWYgKGVtb2ppUGlja2VyT3BlbmVkKSB7XG4gICAgICAgIDxlbW9qaS1waWNrZXIgI2Vtb2ppUGlja2VyIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogZW1vamlWaXNpYmlsaXR5ID8gJycgOiAnbm9uZScgfVwiIGVtb2ppLXZlcnNpb249XCIxNS4wXCIgKGVtb2ppLWNsaWNrKT1cIm9uRW1vamljbGljaygkZXZlbnQpXCI+PC9lbW9qaS1waWNrZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvZGl2PlxuIl19
|