@rtsee/ngx 0.0.66 → 0.0.68

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.
@@ -1 +1 @@
1
- {"version":3,"file":"rtsee-ngx.mjs","sources":["../../../projects/ngx/src/lib/ngx.service.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.html","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.ts","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.html","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.ts","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.html","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.ts","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.html","../../../projects/ngx/src/lib/components/rtsee/rtsee-conference.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-conference.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.html","../../../projects/ngx/src/lib/services/default-images.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.html","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.ts","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.html","../../../projects/ngx/src/lib/services/time-format-helper.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.html","../../../projects/ngx/src/lib/directives/widget.directive.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.html","../../../projects/ngx/src/lib/services/message-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/models/MainMenuState.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.html","../../../projects/ngx/src/lib/services/events-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-header/presentation-header.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-header/presentation-header.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/story-thumbnail/story-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/story-thumbnail/story-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/slide/slide.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/slide/slide.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/story-player/story-player.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/story-player/story-player.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation/presentation.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation/presentation.component.html","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-nav/rtsee-nav.component.ts","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-nav/rtsee-nav.component.html","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.ts","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/services/auth.service.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-in/sign-in.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-in/sign-in.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/services/utils.service.ts","../../../projects/ngx/src/lib/components/rtsee-auth/validators/form-fields-validators.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-up/sign-up.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-up/sign-up.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/forgot-password/forgot-password.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/forgot-password/forgot-password.component.html","../../../projects/ngx/src/lib/components/enums/form.enum.ts","../../../projects/ngx/src/lib/components/constans/common.const.ts","../../../projects/ngx/src/lib/components/rtsee-auth/reset-password/reset-password.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/reset-password/reset-password.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/privacy-policy/privacy-policy.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/privacy-policy/privacy-policy.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/auth/auth.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/auth/auth.component.html","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.html","../../../projects/ngx/src/lib/directives/shave.directive.ts","../../../projects/ngx/src/lib/components/rtsee-auth/vendors/vendors.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/vendors/vendors.component.html","../../../projects/ngx/src/lib/ngx.module.ts","../../../projects/ngx/src/public-api.ts","../../../projects/ngx/src/rtsee-ngx.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxService {\n lol: string;\n constructor() {\n this.lol = 'lol';\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport { NgClass } from \"@angular/common\";\n\n@Component({\n selector: 'ngx-rtsee-controls',\n templateUrl: './rtsee-controls.component.html',\n styleUrls: ['./rtsee-controls.component.scss'],\n imports: [\n NgClass\n ],\n standalone: true\n})\nexport class RTSeeControlsComponent {\n @Input() rtsee!: RTSeeConference;\n @Input() fullScreenMode?: boolean;\n\n onPresentClicked() {\n return this.rtsee.isPresenter\n ? this.rtsee.stopScreenShare()\n : this.rtsee.startScreenShare();\n }\n}\n","<div class=\"rtsee-controls\" [ngClass]=\"{'rtsee-full-screen-controls' : fullScreenMode }\">\n <div class=\"rtsee-bottom-panel\">\n <div class=\"mic rtsee-buttons-container\">\n @if (rtsee.microphone) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"this.rtsee.disableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_none</span>\n </button>\n }\n @if (!rtsee.microphone) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\" (click)=\"this.rtsee.enableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_off</span>\n </button>\n }\n </div>\n\n <div class=\"video-camera rtsee-buttons-container\">\n @if (rtsee.camera) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.disableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam</span>\n </button>\n }\n @if (!rtsee.camera) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.enableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam_off</span>\n </button>\n }\n </div>\n <div class=\"present rtsee-buttons-container\"\n [ngClass]=\"{'rtsee-present-button-container': rtsee.isPresenter}\"\n >\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"onPresentClicked()\"\n >\n <span class=\"material-icons-outlined\">present_to_all</span>\n </button>\n </div>\n <div class=\"call-end rtsee-buttons-container\">\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.end()\"\n >\n <span class=\"material-icons-outlined\">call_end</span>\n </button>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport {NgClass, NgForOf} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\n\n@Component({\n selector: 'ngx-rtsee-settings',\n templateUrl: './rtsee-settings.component.html',\n styleUrls: ['./rtsee-settings.component.scss'],\n imports: [\n NgClass,\n FormsModule,\n NgForOf\n ],\n standalone: true\n})\nexport class RtseeSettingsComponent implements OnInit {\n availableAudioInputDevices: MediaDeviceInfo[];\n availableVideoInputDevices: MediaDeviceInfo[];\n availableAudioOutputDevices: MediaDeviceInfo[];\n\n audioOutputDeviceId?: string;\n videoInputDeviceId?: string;\n audioInputDeviceId?: string;\n\n @Input() rtSee!: RTSeeConference;\n @Input() fullScreenMode!: boolean;\n constructor() {\n this.availableAudioInputDevices = [];\n this.availableVideoInputDevices = [];\n this.availableAudioOutputDevices = [];\n }\n\n ngOnInit(): void {\n this.refreshSelectOptions();\n }\n\n refreshSelectOptions() {\n void this.rtSee.refreshMediaDevicesList();\n }\n\n audioInputChanged() {\n if (!this.audioInputDeviceId) { return; }\n this.rtSee.setAudioInputDevice(this.audioInputDeviceId);\n console.log(this.audioInputDeviceId);\n }\n\n audioOutputChanged() {\n if (!this.audioOutputDeviceId) { return; }\n this.rtSee.setAudioOutputDevice(this.audioOutputDeviceId);\n }\n\n videoInputChanged() {\n if (!this.videoInputDeviceId) { return; }\n this.rtSee.setVideoInputDevice(this.videoInputDeviceId);\n }\n}\n","<div class=\"rtsee-settings\" [ngClass]=\"{'rtsee-full-screen-settings' : fullScreenMode}\">\n <div class=\"rtsee-devices\">\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"audio-input\">Audio Input:</label>\n <select (click)=\"refreshSelectOptions()\"\n (ngModelChange)=\"audioInputChanged()\"\n [(ngModel)]=\"audioInputDeviceId\"\n class=\"rtsee-select\"\n id=\"audio-input\"\n >\n <option *ngFor=\"let device of rtSee.audioInputDevices\"\n [value]=\"device.deviceId\">\n {{device.label}}\n </option>\n </select>\n </div>\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"audio-output\">Audio Output:</label>\n <select (click)=\"refreshSelectOptions()\"\n (ngModelChange)=\"audioOutputChanged()\"\n [(ngModel)]=\"audioOutputDeviceId\"\n class=\"rtsee-select\"\n id=\"audio-output\"\n >\n <option *ngFor=\"let device of rtSee.audioOutputDevices\" [value]=\"device.deviceId\" >\n {{device.label}}\n </option>\n </select>\n </div>\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"video-input\">Video Input:</label>\n <select (click)=\"refreshSelectOptions()\"\n (ngModelChange)=\"videoInputChanged()\"\n [(ngModel)]=\"videoInputDeviceId\"\n class=\"rtsee-select\"\n id=\"video-input\"\n >\n <option *ngFor=\"let device of rtSee.videoInputDevices\" [value]=\"device.deviceId\">\n {{device.label}}\n </option>\n </select>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/conference';\nimport { interval } from 'rxjs';\n\n@Component({\n selector: 'ngx-rtsee-soundbar',\n templateUrl: './rtsee-soundbar.component.html',\n styleUrls: ['./rtsee-soundbar.component.scss'],\n standalone: true\n})\nexport class RtseeSoundbarComponent implements OnInit {\n intervalLength: number;\n noiceLevel: number;\n scaleOneLevel: number;\n scaleTwoLevel: number;\n scaleThreeLevel: number;\n\n @Input() peer!: RTSeePeerConnection;\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n ngOnInit(): void {\n this.startSoundMeterListening();\n }\n\n startSoundMeterListening() {\n const step = interval(1000 / 10);\n step.subscribe(() => {\n if (!this.peer.soundMeter || !this.peer.soundMeter.level) {\n this.noiceLevel = 0;\n } else {\n this.noiceLevel = this.peer.soundMeter?.level * 100 || 0;\n }\n\n this.setSoundMeterHeights();\n });\n }\n\n setSoundMeterHeights() {\n const ZERO_LEVEL = 25;\n const SCALE_STEP = 25;\n const SCALE_ONE_TOP = ZERO_LEVEL + SCALE_STEP;\n const SCALE_TWO_TOP = SCALE_ONE_TOP + SCALE_STEP;\n\n if (!this.peer || !this.peer.soundMeter || this.noiceLevel < ZERO_LEVEL) {\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n const scaleOneValue = ((this.noiceLevel - ZERO_LEVEL) / SCALE_STEP) * 100;\n const scaleTwoValue =\n ((this.noiceLevel - SCALE_ONE_TOP) / SCALE_STEP) * 100;\n const scaleThreeValue =\n ((this.noiceLevel - SCALE_TWO_TOP) / SCALE_STEP) * 100;\n\n this.scaleOneLevel = scaleOneValue > 0 ? scaleOneValue : 0;\n this.scaleTwoLevel = scaleTwoValue > 0 ? scaleTwoValue : 0;\n this.scaleThreeLevel = scaleThreeValue > 0 ? scaleTwoValue : 0;\n }\n}\n","<div class=\"rtsee-soundbar\">\n <div class=\"rtsee-soundbar-scale\">\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-one\"\n [style.height.%]=\"scaleOneLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-two\"\n [style.height.%]=\"scaleTwoLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-three\"\n [style.height.%]=\"scaleThreeLevel\"\n ></div>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/conference';\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {RtseeSoundbarComponent} from \"../rtsee-soundbar/rtsee-soundbar.component\";\n\n@Component({\n selector: 'ngx-rtsee-peer',\n templateUrl: './rtsee-peer.component.html',\n imports: [\n NgClass,\n NgIf,\n RtseeSoundbarComponent\n ],\n standalone: true\n})\nexport class RtseePeerComponent implements AfterViewInit {\n intervalLength: number;\n noiceLevel: number;\n\n @ViewChild('audioOutput') audioOutput?: ElementRef;\n @ViewChild('videoOutput') videoOutput?: ElementRef;\n @Input() peer!: RTSeePeerConnection;\n\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n }\n\n ngAfterViewInit(): void {\n if (!this.audioOutput) {\n return;\n }\n this.peer.setAudioOutputElement(\n this.audioOutput.nativeElement as HTMLAudioElement,\n );\n }\n}\n","<div class=\"rtsee-peer\" [ngClass]=\"{\n'rtsee-peer-video-disabled': !peer.remoteVideoStream || !peer.camera\n}\">\n <div class=\"rtsee-peer-content\">\n <div class=\"rtsee-peer-photo\" *ngIf=\"!peer.camera\">\n <div class=\"rtsee-peer-photo-wrapper\">\n <div *ngIf=\"peer.imageUrl\"\n [style.background-image]=\"'url(' + peer.imageUrl + ')'\"\n class=\"rtsee-peer-photo-image\"\n ></div>\n <img *ngIf=\"!peer.imageUrl\" [src]=\"\" alt=\"peer_photo\" class=\"rtsee-peer-photo-image\">\n </div>\n <div class=\"rtsee-peer-info\">\n <p class=\"rtsee-peer-name\" *ngIf=\"peer.name\">{{peer.name}}</p>\n </div>\n </div>\n <video #videoOutput\n class=\"rtsee-peer-video\"\n [autoplay]=\"true\"\n [srcObject]=\"peer.remoteVideoStream\"\n playsinline=\"true\"\n >\n </video>\n <div class=\"rtsee-peer-soundbar\">\n <ngx-rtsee-soundbar [peer]=\"peer\"></ngx-rtsee-soundbar>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {RtseeSettingsComponent} from \"../rtsee-settings/rtsee-settings.component\";\nimport {RtseePeerComponent} from \"../rtsee-peer/rtsee-peer.component\";\nimport {RTSeeControlsComponent} from \"./rtsee-controls/rtsee-controls.component\";\n\n@Component({\n selector: 'rtsee-conference',\n templateUrl: './rtsee-conference.component.html',\n imports: [\n NgClass,\n RtseeSettingsComponent,\n RtseePeerComponent,\n RTSeeControlsComponent\n ],\n standalone: true\n})\nexport class RTSeeConferenceComponent {\n settingsViewEnabled: boolean;\n\n @Input() rtSee!: RTSeeConference;\n constructor() {\n this.settingsViewEnabled = false;\n }\n\n toggleSettings() {\n this.settingsViewEnabled = !this.settingsViewEnabled;\n }\n\n toggleFullScreenMode() {\n this.rtSee.uiControls.toggle();\n }\n}\n","<div class=\"rtsee-conference-shell\" [ngClass]=\"{\n'rtsee-conference-shell-expanded': rtSee.uiControls.isExpanded,\n'rtsee-conference-shell-no-companions': !rtSee.rtcPeerConnections.connections?.length\n}\">\n @if (rtSee.localStream && rtSee.camera) {\n <div class=\"rtsee-local-peer\">\n <video class=\"rtsee-local-video\"\n [autoplay]=\"true\"\n [muted]=\"true\"\n [srcObject]=\"rtSee.localStream\"\n playsinline=\"true\"\n ></video>\n </div>\n }\n <div class=\"rtsee-window-controls\">\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleSettings()\"\n class=\"rtsee-window-controls-button rtsee-ripple-button\"\n >\n <span class=\"material-icons-outlined\">settings</span>\n </button>\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleFullScreenMode()\"\n class=\"rtsee-window-controls-button rtsee-ripple-button\"\n >\n <span class=\"material-icons-outlined\">open_in_full</span>\n </button>\n </div>\n @if (settingsViewEnabled) {\n <div class=\"rtsee-settings-container\">\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleSettings()\"\n class=\"rtsee-close-settings-button\"\n >\n <span class=\"material-icons-outlined\">close</span>\n </button>\n <ngx-rtsee-settings [rtSee]=\"rtSee\" [fullScreenMode]=\"rtSee.uiControls.isExpanded\"></ngx-rtsee-settings>\n </div>\n }\n @if (rtSee.screenSharePeer) {\n <div class=\"rtsee-screen-share\">\n <video [autoplay]=\"true\"\n [muted]=\"true\"\n [srcObject]=\"rtSee.screenSharePeer.remoteVideoStream\"\n playsinline=\"true\"\n class=\"rtsee-screen-share-video\"\n ></video>\n </div>\n }\n <div class=\"rtsee-peers\" [ngClass]=\"{\n 'rtsee-peers-alone': !rtSee.rtcPeerConnections.connections?.length,\n 'rtsee-peers-one': rtSee.rtcPeerConnections.connections?.length === 1,\n 'rtsee-peers-three-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 1\n && rtSee.rtcPeerConnections.connections.length < 4,\n 'rtsee-peers-six-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 3\n && rtSee.rtcPeerConnections.connections.length < 7,\n 'rtsee-peers-nine-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length >= 7\n }\">\n @for (peer of rtSee.rtcPeerConnections.connections; track peer.clientId) {\n <div class=\"rtsee-peer-wrapper\">\n <ngx-rtsee-peer [peer]=\"peer\"></ngx-rtsee-peer>\n </div>\n }\n </div>\n <div class=\"rtsee-peers-list\"></div>\n <div class=\"rtsee-controls-wrapper\">\n <ngx-rtsee-controls [rtsee]=\"rtSee\" [fullScreenMode]=\"rtSee.uiControls.isExpanded\"></ngx-rtsee-controls>\n </div>\n</div>\n\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-profile',\n templateUrl: './profile.component.html',\n standalone: true\n})\nexport class ProfileComponent {\n @Input() messenger!: RTSeeMessenger;\n\n call() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n\n videoCall() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n}\n","<div class=\"rtsee-messenger-profile\">\n <ul class=\"rtsee-messenger-profile-controls\">\n <li class=\"rtsee-messenger-profile-control\">\n <div class=\"rtsee-messenger-control-item\" (click)=\"call()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">call</span>\n </div>\n <span>Call</span>\n </div>\n </li>\n <li class=\"rtsee-messenger-profile-control\">\n <div class=\"rtsee-messenger-control-item\" (click)=\"videoCall()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">videocam</span>\n </div>\n <span>Video</span>\n </div>\n </li>\n </ul>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DefaultImagesService {\n PROFILE = 'https://werf-assets.s3.amazonaws.com/default-profile-logo.png';\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { DefaultImagesService } from '../../../services/default-images.service';\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {ProfileComponent} from \"../profile/profile.component\";\n\n@Component({\n selector: 'rtsee-messenger-header',\n templateUrl: './messenger-header.component.html',\n imports: [\n NgClass,\n NgIf,\n ProfileComponent\n ],\n standalone: true\n})\nexport class MessengerHeaderComponent {\n @Output() expandToggled = new EventEmitter();\n @Input() isExpanded?: boolean;\n @Input() messenger!: RTSeeMessenger;\n constructor(public defaultImagesService: DefaultImagesService) {\n this.isExpanded = false;\n this.expandToggled.emit(this.isExpanded);\n }\n\n toggleExpand() {\n this.isExpanded = !this.isExpanded;\n this.expandToggled.emit(this.isExpanded);\n }\n}\n","<div class=\"rtsee-messenger-header\"\n [ngClass]=\"{\n 'rtsee-messenger-header-chat-opened': messenger.openedChat,\n 'rtsee-chat-header-unread': messenger.openedChat && !messenger.unreadMessagesCount,\n 'rtsee-messenger-header-expanded': isExpanded\n }\"\n>\n <div class=\"rtsee-messenger-profile-image-container \">\n <div *ngIf=\"!messenger.openedChat\"\n [style.background-image]=\"'url(' + messenger.myPeer?.imageUrl || defaultImagesService.PROFILE + ')'\"\n class=\"rtsee-messenger-profile-image\">\n </div>\n </div>\n\n <button class=\"rtsee-messenger-close-chat\"\n *ngIf=\"messenger.openedChat\"\n (click)=\"messenger.closeChat()\"\n >\n <span class=\"material-icons-outlined\">arrow_back</span>\n <span class=\"unread-count\" *ngIf=\"messenger.unreadMessagesCount\">{{messenger.unreadMessagesCount}}</span>\n </button>\n\n <button class=\"rtsee-messenger-menu-toggle\"\n *ngIf=\"!messenger.openedChat && false\"\n (click)=\"messenger.openMainMenu(true)\"\n >\n <span class=\"material-icons-outlined rtsee-messenger-menu-toggle-icon\">menu</span>\n </button>\n <button class=\"rtsee-messenger-fold-toggle\"\n (click)=\"messenger.changeChatFoldState(!messenger.folded)\"\n >\n <span *ngIf=\"!messenger.folded\" class=\"material-icons-outlined rtsee-messenger-menu-toggle-icon\">expand_more</span>\n <span *ngIf=\"messenger.folded\" class=\"material-icons-outlined rtsee-messenger-menu-toggle-icon\">expand_less</span>\n </button>\n\n <div *ngIf=\"messenger.openedChat\"\n [ngClass]=\"{'rtsee-messenger-header-opened-chat-info-expanded': isExpanded}\"\n class=\"rtsee-messenger-header-opened-chat-info\">\n <div class=\"rtsee-messenger-profile-header-placeholder\">\n <p *ngIf=\"messenger.openedChat\"\n class=\"rtsee-messenger-header-chat-title\"\n >{{ messenger.openedChat.name }}</p>\n <div class=\"rtsee-messenger-profile-image-container\" (click)=\"toggleExpand()\">\n <div class=\"rtsee-messenger-profile-image\"\n [style.background-image]=\"'url(' + messenger.openedChat.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n </div>\n </div>\n <div class=\"rtsee-messenger-profile-data-container\">\n <rtsee-profile *ngIf=\"isExpanded\" [messenger]=\"messenger\"></rtsee-profile>\n </div>\n </div>\n\n <p *ngIf=\"!messenger.openedChat\"\n class=\"rtsee-messenger-header-title\"\n >Messaging</p>\n</div>\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'rtsee-preloader',\n templateUrl: './preloader.component.html',\n standalone: true\n})\nexport class PreloaderComponent implements OnInit {\n viewBox = '0 0 100 100';\n d = 'M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92';\n\n @ViewChild('canvas') canvas?: ElementRef<SVGElement>;\n @Input() diameter?: number;\n @Input() color?: string = '#000000';\n constructor() {\n if (this.diameter) {\n this.viewBox = `0 0 ${this.diameter} ${this.diameter}`;\n this.d = `M ${this.diameter / 2} ${this.diameter * 0.96} a ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 -${this.diameter * 0.92} ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 ${this.diameter * 0.92}`;\n }\n }\n\n ngOnInit(): void {\n //viewBox=\"0 0 100 100\"\n //d=\"M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92\"\n }\n}\n","<div class=\"rtsee-preloader\">\n <svg [style.max-width.px]=\"diameter\" #canvas [attr.viewBox]=\"viewBox\">\n <path [attr.d]=\"d\" [attr.stroke]=\"color\"/>\n </svg>\n</div>\n","import { Injectable } from '@angular/core';\n\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\ndayjs.extend(relativeTime);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimeFormatHelperService {\n toAgo(time: Date): string {\n /* eslint-disable */\n return dayjs(time).fromNow() as string;\n /* eslint-enable */\n }\n toDayOfWeek(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('ddd');\n /* eslint-enable */\n }\n toTime(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('HH:mm') as string;\n /* eslint-enable */\n }\n toDate(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('D MMMM') as string;\n /* eslint-enable */\n }\n toDateNumeral(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM');\n /* eslint-enable */\n }\n\n toDateNumeralWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM.YY');\n /* eslint-enable */\n }\n\n toDateWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('MMMM D, YYYY ') as string;\n /* eslint-enable */\n }\n\n formatDate(time: Date) {\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n const twoDays = dayMs * 2;\n\n if (!time) {\n return '';\n }\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return 'Today';\n }\n\n if (\n today.getTime() - time.getTime() < twoDays &&\n today.getTime() - time.getTime() > dayMs &&\n today.getDay() !== time.getDay()\n ) {\n return 'Yesterday';\n }\n\n if (today.getFullYear() === time.getFullYear()) {\n return this.toDate(time);\n }\n\n return this.toDateWithYear(time);\n }\n\n formatTimeOrDate(time: Date) {\n if (!time) {\n return '';\n }\n\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return this.toTime(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs &&\n today.getTime() - time.getTime() < dayMs * 7\n ) {\n return this.toDayOfWeek(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs * 7 &&\n today.getFullYear() === time.getFullYear()\n ) {\n return this.toDateNumeral(time);\n }\n\n return this.toDateNumeralWithYear(time);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessage } from '@rtsee/messenger';\nimport { IMessageThumbnail } from '@rtsee/common';\nimport { TimeFormatHelperService } from '../../../../../services/time-format-helper.service';\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {PreloaderComponent} from \"../../../../../common/components/preloader/preloader.component\";\n\n@Component({\n selector: 'rtsee-message-time-and-status',\n templateUrl: './message-time-and-status.component.html',\n imports: [\n NgIf,\n NgClass,\n PreloaderComponent\n ],\n standalone: true\n})\nexport class MessageTimeAndStatusComponent {\n @Input() message!: RTSeeMessage | IMessageThumbnail;\n @Input() hideStatus?: boolean;\n @Input() inChat?: boolean;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-messenger-message-time-and-status\">\n <span class=\"rtsee-messenger-message-status\" *ngIf=\"!hideStatus\" [ngClass]=\"{'showing-status-inside-chat': inChat }\">\n <span *ngIf=\"message.status === 'pending'\"><rtsee-preloader [diameter]=\"5\"></rtsee-preloader></span>\n <span *ngIf=\"message.status === 'sent'\" class=\"material-icons-outlined rtsee-message-sent-status\">check</span>\n <span *ngIf=\"message.status === 'delivered'\" class=\"material-icons-outlined rtsee-message-delivered-status\">check</span>\n <span *ngIf=\"message.status === 'seen'\" class=\"material-icons-outlined rtsee-message-seen-status\">done_all</span>\n </span>\n <span class=\"rtsee-messenger-message-time\">{{timeFormatService.formatTimeOrDate(message.createdAt)}}</span>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RTSeeChatTypes, IMessageThumbnail } from '@rtsee/common';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport {\n MessageTimeAndStatusComponent\n} from \"../message/components/message-time-and-status/message-time-and-status.component\";\nimport {NgClass, NgIf} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-chat-thumbnail',\n templateUrl: './chat-thumbnail.component.html',\n imports: [\n MessageTimeAndStatusComponent,\n NgClass,\n NgIf\n ],\n standalone: true\n})\nexport class ChatThumbnailComponent {\n @Input() chat!: IMessageThumbnail;\n @Input() messenger!: RTSeeMessenger;\n\n readonly RTSeeChatTypes = RTSeeChatTypes;\n\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-chat-thumbnail\" (click)=\"messenger.openChatById(chat.chatId)\">\n <div class=\"rtsee-chat-thumbnail-image\">\n <img [src]=\"chat.chatImageUrl\" alt=\"chat-img\">\n </div>\n <div class=\"rtsee-chat-thumbnail-left\">\n <div class=\"rtsee-chat-thumbnail-name\">\n <span>{{ chat.chatName }}</span>\n <div class=\"rtsee-chat-thumbnail-status\">\n <rtsee-message-time-and-status [message]=\"chat\"\n [hideStatus]=\"chat && !!(chat.unreadMessagesCount)\">\n </rtsee-message-time-and-status>\n </div>\n </div>\n <div class=\"rtsee-chat-thumbnail-last-message\"\n [ngClass]=\"{'rtsee-has-unread': chat.unreadMessagesCount}\"\n rtseeShave>\n <span class=\"rtsee-chat-thumbnail-last-message-sender\"\n *ngIf=\"chat.chatType !== RTSeeChatTypes.INDIVIDUAL && chat.senderName\"\n >{{chat.senderName}}</span>\n <span class=\"rtsee-chat-thumbnail-last-message-text\"\n *ngIf=\"chat.text\"\n >{{chat.text}}</span>\n <div class=\"rtsee-messenger-thumbnail-unread\" *ngIf=\"chat.unreadMessagesCount\">\n <span class=\"rtsee-messenger-thumbnail-unread-count\">{{chat.unreadMessagesCount}}</span>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\nimport {NgForOf} from \"@angular/common\";\nimport {ChatThumbnailComponent} from \"../chat-thumbnail/chat-thumbnail.component\";\n\n@Component({\n selector: 'rtsee-chats-list',\n templateUrl: './chats-list.component.html',\n imports: [\n NgForOf,\n ChatThumbnailComponent\n ],\n standalone: true\n})\nexport class ChatsListComponent implements OnInit {\n @Input() messenger!: RTSeeMessenger;\n @Input() chats!: RTSeeChat[];\n\n ngOnInit(): void {\n // console.log(this.chats);\n }\n}\n","<div class=\"rtsee-chats-list\">\n <div class=\"rtsee-chat-thumbnail-container\" *ngFor=\"let chat of chats; let last = last;\">\n <rtsee-chat-thumbnail [chat]=\"chat.thumbnail\" [messenger]=\"messenger\"></rtsee-chat-thumbnail>\n<!-- <div class=\"rtsee-chat-thumbnail-separator\" *ngIf=\"!last\"></div>-->\n </div>\n</div>\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[widgetHost]',\n standalone: true\n})\nexport class WidgetDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessage, RTSeeMessenger } from '@rtsee/messenger';\nimport { IRTSeeCall } from '@rtsee/core';\nimport { NgClass } from \"@angular/common\";\n\n@Component({\n selector: 'ngx-call-widget',\n templateUrl: './call-widget.component.html',\n styleUrls: ['./call-widget.component.scss'],\n imports: [\n NgClass\n ],\n standalone: true\n})\nexport class CallWidgetComponent implements OnInit {\n @Input() message!: RTSeeMessage<IRTSeeCall>;\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: RTSeeChat;\n\n ngOnInit(): void {}\n\n joinCall() {\n console.log('message data: ', this.message.data);\n if (!this.messenger || (!this.message.data?.roomId && !this.chat.conferenceRoom)) {\n console.log('No Room Id specified or no messenger!');\n return;\n }\n\n const roomId: string | null = this.message.data?.roomId || this.chat.conferenceRoom?.id || null;\n\n if (!roomId) {\n console.log('Room Id unavailable!');\n return;\n }\n\n void this.messenger.joinCall(roomId);\n }\n}\n","<div class=\"rtsee-call-widget\">\n <p> The call has started</p>\n <button class=\"rtsee-join-call-btn\"\n (click)=\"joinCall()\">\n Join Call\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CallWidgetComponent } from '../components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\n\nexport interface IMessageWidget {\n name: string;\n component: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageWidgetsService {\n widgetsMap: IMessageWidget[] = [\n { name: 'rtsee-call', component: CallWidgetComponent },\n ];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeChatMember,\n RTSeeMessage,\n RTSeeMessenger,\n} from '@rtsee/messenger';\nimport { MessageWidgetsService } from '../../../services/message-widgets.service';\nimport { WidgetDirective } from '../../../directives/widget.directive';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {MessageTimeAndStatusComponent} from \"./components/message-time-and-status/message-time-and-status.component\";\n\n@Component({\n selector: 'rtsee-message',\n templateUrl: './message.component.html',\n imports: [\n NgClass,\n MessageTimeAndStatusComponent,\n WidgetDirective\n ],\n standalone: true\n})\nexport class MessageComponent implements AfterViewInit {\n @Input() chat!: RTSeeChat;\n @Input() message!: RTSeeMessage;\n @Input() member!: RTSeeChatMember<any>;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: MessageWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService,\n ) {}\n\n ngAfterViewInit() {\n /* eslint-disable */\n if (this.message.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.message.widget,\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.message = this.message;\n componentRef.instance.messenger = this.messenger;\n componentRef.instance.chat = this.chat;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-messenger-message-container\" #rtsMessageContainer\n [ngClass]=\"{'rtsee-message-from-me': message.from.id === messenger.clientId}\"\n>\n <div class=\"rtsee-messenger-message\">\n @if (message.widget) {\n <ng-template widgetHost></ng-template>\n }\n @if (!message.widget) {\n <p class=\"rtsee-messenger-message-text\"\n >{{ message.text }}</p>\n }\n <div class=\"rtsee-messenger-message-info\" #rtsMessageInfo>\n <rtsee-message-time-and-status [message]=\"message\"\n [inChat]=\"true\"\n [hideStatus]=\"message.from.id !== messenger.clientId\"\n ></rtsee-message-time-and-status>\n </div>\n </div>\n <div class=\"message-tail\"></div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeMessenger,\n RTSeeMessage,\n RTSeeChatEvents,\n} from '@rtsee/messenger';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport {InfiniteScrollDirective} from \"ngx-infinite-scroll\";\nimport {NgClass, NgForOf} from \"@angular/common\";\nimport {MessageComponent} from \"../message/message.component\";\n\n@Component({\n selector: 'rtsee-messages-list',\n templateUrl: './messages-list.component.html',\n imports: [\n InfiniteScrollDirective,\n NgClass,\n NgForOf,\n MessageComponent\n ],\n standalone: true\n})\nexport class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit {\n bindScrollFunction: () => void;\n\n @Input() chat!: RTSeeChat;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild('scrollBlock') scrollContainer!: ElementRef<HTMLDivElement>;\n constructor(private timeFormatService: TimeFormatHelperService) {\n this.bindScrollFunction = this.scrollToBottom.bind(this) as () => void;\n }\n\n ngOnInit() {\n this.chat.on(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n }\n\n ngAfterViewInit() {\n this.scrollToBottom();\n }\n\n onMessageSent() {\n this.scrollToBottom();\n }\n\n ngOnDestroy() {\n this.chat.off(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n }\n\n onScrolledToTop() {\n if (this.chat.messagesLoadInProgress) {\n return;\n }\n this.chat.loadRemoteMessages('back');\n }\n\n onScroll() {\n // if (this.scrollContainer.nativeElement.scrollTop < 1) {\n // this.scrollContainer.nativeElement.scrollTop = 1;\n // }\n if (this.chat.messagesLoadInProgress) {\n return;\n }\n this.chat.loadRemoteMessages('front');\n }\n\n scrollToBottom() {\n if (!this.scrollContainer?.nativeElement?.scrollHeight) {\n return;\n }\n\n try {\n this.scrollContainer.nativeElement.scrollTop =\n this.scrollContainer.nativeElement.scrollHeight;\n } catch (err) {\n console.log('Failed to Scroll');\n }\n }\n\n formatDate(message: RTSeeMessage) {\n return this.timeFormatService.formatDate(message.createdAt);\n }\n}\n","<div class=\"rtsee-messenger-messages-list\"\n #scrollBlock\n infiniteScroll\n [infiniteScrollUpDistance]=\"2\"\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrolledToTop()\"\n (scroll)=\"onScroll()\"\n>\n @for (message of chat.messages; track message.id; let i = $index) {\n <div [ngClass]=\"{'rtsee-messenger-message-wrapper-consecutive': message.from === chat.messages[i+1]?.from}\"\n class=\"rtsee-messenger-message-wrapper\"\n >\n <rtsee-message [message]=\"message\" [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-message>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport {FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-chat-input',\n templateUrl: './chat-input.component.html',\n imports: [\n ReactiveFormsModule\n ],\n standalone: true\n})\nexport class ChatInputComponent {\n sendMessageForm: FormGroup = new FormGroup({\n /* eslint-disable */\n message: new FormControl('', Validators.required),\n /* eslint-enable */\n });\n\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: RTSeeChat;\n\n sendMessage() {\n const text = this.sendMessageForm.get('message')?.value as string;\n if (!text) {\n return;\n }\n this.chat.sendMessage(text);\n this.sendMessageForm.get('message')?.setValue('');\n }\n}\n","<div class=\"rtsee-chat-input\" xmlns=\"http://www.w3.org/1999/html\">\n <div class=\"rtsee-send-message\">\n <form [formGroup]=\"sendMessageForm\" class=\"rtsee-chat-input-form\">\n <textarea\n placeholder=\"Type message...\"\n type=\"text\"\n formControlName=\"message\"\n class=\"rtsee-chat-input-field\"\n autosize\n required\n (keyup.enter)=\"sendMessage()\"\n ></textarea>\n </form>\n </div>\n <button (click)=\"sendMessage()\"\n class=\"rtsee-send-message-button\"\n type=\"submit\">\n <span class=\"material-icons-outlined\">send</span>\n </button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\nimport {MessagesListComponent} from \"../messages-list/messages-list.component\";\nimport {ChatInputComponent} from \"../chat-input/chat-input.component\";\n\n@Component({\n selector: 'rtsee-chat',\n templateUrl: './chat.component.html',\n imports: [\n MessagesListComponent,\n ChatInputComponent\n ],\n standalone: true\n})\nexport class ChatComponent {\n @Input() chat!: RTSeeChat;\n @Input() messenger!: RTSeeMessenger;\n}\n","<div class=\"rtsee-chat\">\n <div class=\"rtsee-chat-body-container\">\n <rtsee-messages-list [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-messages-list>\n </div>\n <div class=\"rtsee-chat-footer-container\">\n <div class=\"rtsee-chat-footer-container-inner\">\n <rtsee-chat-input [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-chat-input>\n </div>\n </div>\n</div>\n","export enum MainMenuPanels {\n HOME = 'home',\n CONTACTS_SELECT = 'contacts-select',\n MANAGE_CHAT = 'manage-chat',\n}\n\nexport interface IMainMenuState {\n activePanel: MainMenuPanels;\n}\n\nexport const DEFAULT_MAIN_MENU_STATE = MainMenuPanels.HOME;\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\nimport {PreloaderComponent} from \"../../../../../common/components/preloader/preloader.component\";\nimport {NgForOf} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-search',\n templateUrl: './search.component.html',\n imports: [\n ReactiveFormsModule,\n PreloaderComponent,\n NgForOf\n ],\n standalone: true\n})\nexport class SearchComponent implements OnInit, OnDestroy {\n queryControl = new FormControl();\n queryCtrlSub?: Subscription;\n\n @Input() search!: RTSeeMessengerSearch;\n\n ngOnInit(): void {\n this.queryCtrlSub = this.queryControl.valueChanges\n .pipe(debounceTime(200))\n .subscribe((value: string) => this.search.onQueryChange(value));\n }\n\n ngOnDestroy() {\n if (this.queryCtrlSub) {\n this.queryCtrlSub.unsubscribe();\n }\n }\n}\n","<div class=\"rtsee-messenger-search\">\n <input type=\"text\"\n [formControl]=\"queryControl\"\n class=\"rtsee-messenger-search-input\"\n placeholder=\"Search\"/>\n</div>\n\n<div class=\"rtsee-messenger-search-results\">\n <rtsee-preloader [diameter]=\"50\"\n *ngIf=\"search.searchInProgress\"\n ></rtsee-preloader>\n <p>Chats</p>\n <div class=\"rtsee-messenger-search-results-chats\">\n <div *ngFor=\"let chat of search.results.chats\"\n class=\"rtsee-messenger-search-results-chat-wrapper\">\n <p>{{chat.name}}</p>\n </div>\n </div>\n <p>Messages</p>\n <div class=\"rtsee-messenger-search-results-messages\">\n <div *ngFor=\"let message of search.results.messages\" class=\"rtsee-messenger-search-results-message-wrapper\">\n <p>{{message.chatName || message.senderName }}</p>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { IMainMenuState, MainMenuPanels } from '../models/MainMenuState';\n\n@Component({\n selector: 'rtsee-manage-chat',\n templateUrl: './manage-chat.component.html',\n styleUrls: ['./manage-chat.component.scss'],\n standalone: true\n})\nexport class ManageChatComponent {\n @Input() messenger!: RTSeeMessenger;\n @Input() menuState!: IMainMenuState;\n\n onInviteContactsClicked() {\n this.menuState.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n}\n","<div class=\"rtsee-messenger-manage-chat\">\n <p>We are going to manage chat here</p>\n <button (click)=\"onInviteContactsClicked()\">Invite Contacts</button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { IMainMenuState } from '../models/MainMenuState';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\nimport { SearchComponent } from \"../search/search.component\";\n\n@Component({\n selector: 'rtsee-contacts-multiselect',\n templateUrl: './contacts-multiselect.component.html',\n styleUrls: ['./contacts-multiselect.component.scss'],\n imports: [\n SearchComponent\n ],\n standalone: true\n})\nexport class ContactsMultiselectComponent {\n @Input() menuState!: IMainMenuState;\n @Input() search!: RTSeeMessengerSearch;\n}\n","<div class=\"rtsee-messenger-contacts-multiselect\">\n <rtsee-search [search]=\"search\"></rtsee-search>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger, RTSeeMessengerSearch } from '@rtsee/messenger';\nimport {\n DEFAULT_MAIN_MENU_STATE,\n IMainMenuState,\n MainMenuPanels,\n} from './components/models/MainMenuState';\nimport {NgIf} from \"@angular/common\";\nimport {SearchComponent} from \"./components/search/search.component\";\nimport {ManageChatComponent} from \"./components/manage-chat/manage-chat.component\";\nimport {ContactsMultiselectComponent} from \"./components/contacts-multiselect/contacts-multiselect.component\";\n\n@Component({\n selector: 'rtsee-main-menu',\n templateUrl: './main-menu.component.html',\n imports: [\n NgIf,\n SearchComponent,\n ManageChatComponent,\n ContactsMultiselectComponent\n ],\n standalone: true\n})\nexport class MainMenuComponent {\n @Input() search!: RTSeeMessengerSearch;\n @Input() messenger!: RTSeeMessenger;\n\n readonly MainMenuPanels = MainMenuPanels;\n\n state: IMainMenuState = {\n activePanel: DEFAULT_MAIN_MENU_STATE,\n };\n\n onNewGroupClicked() {\n this.state.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n\n onNewChannelClicked() {\n this.state.activePanel = MainMenuPanels.MANAGE_CHAT;\n }\n}\n","<div class=\"rtsee-messenger-main-menu\">\n <div class=\"rtsee-messenger-main-menu-home\" *ngIf=\"state.activePanel === MainMenuPanels.HOME\">\n <ul class=\"rtsee-messenger-controls\">\n <li>\n <div class=\"rtsee-messenger-control-item\" (click)=\"onNewGroupClicked()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">people</span>\n </div>\n <span>New Group</span>\n </div>\n </li>\n <li>\n <div class=\"rtsee-messenger-control-item\" (click)=\"onNewChannelClicked()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">campaign</span>\n </div>\n <span>New Channel</span>\n </div>\n </li>\n </ul>\n <rtsee-search [search]=\"search\" ></rtsee-search>\n </div>\n\n <rtsee-manage-chat *ngIf=\"state.activePanel === MainMenuPanels.MANAGE_CHAT\"\n [messenger]=\"messenger\"\n [menuState]=\"state\"\n ></rtsee-manage-chat>\n <rtsee-contacts-multiselect [search]=\"search\"\n [menuState]=\"state\"\n *ngIf=\"state.activePanel === MainMenuPanels.CONTACTS_SELECT\"\n ></rtsee-contacts-multiselect>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport {MessengerHeaderComponent} from \"../messenger-header/messenger-header.component\";\nimport {InfiniteScrollDirective} from \"ngx-infinite-scroll\";\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {ChatsListComponent} from \"../chats-list/chats-list.component\";\nimport {ChatComponent} from \"../chat/chat.component\";\nimport {PreloaderComponent} from \"../../../common/components/preloader/preloader.component\";\nimport {MainMenuComponent} from \"../main-menu/main-menu.component\";\n\n@Component({\n selector: 'rtsee-messenger',\n templateUrl: './messenger.component.html',\n imports: [\n MessengerHeaderComponent,\n InfiniteScrollDirective,\n NgClass,\n ChatsListComponent,\n ChatComponent,\n PreloaderComponent,\n MainMenuComponent,\n NgIf\n ],\n standalone: true\n})\nexport class MessengerComponent {\n isHeaderExpanded: boolean;\n\n @Input() messenger!: RTSeeMessenger;\n constructor() {\n this.isHeaderExpanded = false;\n }\n\n onScroll() {\n this.messenger.loadChats();\n }\n\n // onGeneralScroll($event) {\n // // $event.stopPropagation();\n // }\n\n onHeaderExpandToggled(value: boolean) {\n this.isHeaderExpanded = value;\n }\n}\n","<div class=\"rtsee-messenger\" [ngClass]=\"{\n 'rtsee-messenger-main-menu-opened': messenger.mainMenuOpened,\n 'rtsee-messenger-header-expanded': isHeaderExpanded,\n 'rtsee-messenger-folded': messenger.folded\n}\">\n <div class=\"rtsee-messenger-header-container\">\n <rtsee-messenger-header [messenger]=\"messenger\"\n (expandToggled)=\"onHeaderExpandToggled($event)\"\n ></rtsee-messenger-header>\n </div>\n <div class=\"rtsee-messenger-body-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScroll()\"\n >\n <rtsee-chats-list *ngIf=\"!messenger.openedChat\" [chats]=\"messenger.chats\" [messenger]=\"messenger\"></rtsee-chats-list>\n <rtsee-chat *ngIf=\"messenger.openedChat\" [messenger]=\"messenger\" [chat]=\"messenger.openedChat\"></rtsee-chat>\n <rtsee-preloader [diameter]=\"50\" *ngIf=\"messenger.loadingChatsInProgress\" ></rtsee-preloader>\n </div>\n <div class=\"rtsee-messenger-main-menu-container\">\n <rtsee-main-menu\n *ngIf=\"messenger.mainMenuOpened\"\n [search]=\"messenger.search\"\n [messenger]=\"messenger\"></rtsee-main-menu>\n </div>\n <div class=\"rtsee-messenger-overlay\" (click)=\"messenger.openMainMenu(false)\"></div>\n</div>\n\n\n","import { Injectable } from '@angular/core';\nimport { IMessageWidget } from './message-widgets.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventsWidgetsService {\n widgetsMap: IMessageWidget[] = [];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { RTSeeDashboardEvent } from '@rtsee/events-dashboard';\nimport { WidgetDirective } from '../../../../directives/widget.directive';\nimport { EventsWidgetsService } from '../../../../services/events-widgets.service';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport {NgClass, NgIf} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-event-thumbnail',\n templateUrl: './event-thumbnail.component.html',\n imports: [\n WidgetDirective,\n NgIf,\n NgClass\n ],\n standalone: true\n})\nexport class EventThumbnailComponent implements OnInit, AfterViewInit {\n tooltip?: string;\n\n @Input() event!: RTSeeDashboardEvent;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: EventsWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService,\n private cd: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n if (this.event.data) {\n this.generateTooltip();\n }\n }\n\n generateTooltip() {\n /* eslint-disable */\n let tooltip = '';\n if (typeof this.event.data !== 'object') {\n return;\n }\n try {\n for (const key in this.event.data) {\n if (this.event.data.hasOwnProperty(key)) {\n if (tooltip) {\n tooltip += '&#013;';\n }\n tooltip += key + ' -> ' + this.event.data[key];\n }\n }\n this.tooltip = tooltip;\n } catch (e) {\n console.log('Failed to generate a tooltip');\n }\n /* eslint-enable */\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n /* eslint-disable */\n if (this.event.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.event.widget,\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.event = this.event;\n componentRef.instance.event = this.event;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-events-dashboard-event-thumbnail\">\n <ng-template *ngIf=\"event.widget\" widgetHost></ng-template>\n <div *ngIf=\"!event.widget\" class=\"rtsee-events-dashboard-default-event-thumbnail\"\n [ngClass]=\"{'rtsee-events-dashboard-default-event-thumbnail-with-data': event.data}\"\n >\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-name\">{{event.name}}</div>\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-info\">\n <div *ngIf=\"event.data\" class=\"rtsee-events-dashboard-default-event-thumbnail-details\"\n [title]=\"tooltip\"\n >\n <span class=\"rtsee-events-dashboard-default-event-thumbnail-details-icon material-icons-outlined\"\n >info</span>\n </div>\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-time\">\n <span>{{ timeFormatService.toAgo(event.createdAt) }}</span>\n </div>\n </div>\n\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { RTSeeDashboardClientSession } from '@rtsee/events-dashboard';\nimport { NgIf, SlicePipe } from \"@angular/common\";\nimport {EventThumbnailComponent} from \"../event-thumbnail/event-thumbnail.component\";\n\n@Component({\n selector: 'rtsee-rtsee-events-dashboard-session',\n templateUrl: './rtsee-events-dashboard-session.component.html',\n imports: [\n NgIf,\n\n EventThumbnailComponent,\n SlicePipe\n ],\n standalone: true\n})\nexport class RtseeEventsDashboardSessionComponent {\n @Input() session!: RTSeeDashboardClientSession;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-events-dashboard-session\">\n <div class=\"rtsee-events-dashboard-session-header\" *ngIf=\"session.info\">\n <p class=\"rtsee-events-dashboard-session-client-info\">{{session.info.clientThumbnail}}</p>\n <p class=\"rtsee-events-dashboard-session-os-info\">{{session.info.osThumbnail}}</p>\n <div class=\"rtsee-events-dashboard-session-device-info\" [title]=\"session.info.deviceThumbnail\">\n <span *ngIf=\"session.info.deviceType === 'smartphone' && !session.info.botName\"\n class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n >phone_iphone</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.deviceType === 'tablet' && !session.info.botName\"\n >tablet_mac</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.deviceType === 'desktop' && !session.info.botName\"\n >computer</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.botName\"\n >smart_toy</span>\n </div>\n </div>\n <ul *ngIf=\"session.events && session.events.length\"\n class=\"rtsee-events-dashboard-session-events-list\"\n >\n @for (event of session.events | slice:0:5; track event.id) {\n <li class=\"rtsee-events-dashboard-session-event\">\n <rtsee-event-thumbnail [event]=\"event\"></rtsee-event-thumbnail>\n </li>\n }\n </ul>\n <div class=\"rtsee-events-dashboard-session-footer\">\n <button *ngIf=\"session.events.length > 5\">{{session.events.length - 5}} more</button>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { DefaultImagesService } from '../../../../services/default-images.service';\nimport {\n RTSeeEventsDashboard,\n RTSeeDashboardClient,\n} from '@rtsee/events-dashboard';\nimport {\n RtseeEventsDashboardSessionComponent\n} from \"../rtsee-events-dashboard-session/rtsee-events-dashboard-session.component\";\nimport {NgForOf, NgIf} from \"@angular/common\";\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client-thumbnail',\n templateUrl: './rtsee-events-dashboard-client-thumbnail.component.html',\n imports: [\n RtseeEventsDashboardSessionComponent,\n NgIf,\n NgForOf\n ],\n standalone: true\n})\nexport class RtseeEventsDashboardClientThumbnailComponent implements OnInit {\n @Input() dashboard!: RTSeeEventsDashboard;\n @Input() client!: RTSeeDashboardClient;\n\n constructor(\n public timeFormatService: TimeFormatHelperService,\n public defaultImagesService: DefaultImagesService,\n ) {}\n\n ngOnInit(): void {\n console.log('client id', this.client.id);\n }\n\n openChat() {\n console.log('Open Chat Clicked! Client ID #', this.client.id);\n this.dashboard.openChat(this.client);\n }\n}\n","<div class=\"rtsee-dashboard-client-thumbnail\">\n <div class=\"rtsee-dashboard-client-header\">\n <div class=\"rtsee-dashboard-client-header-photo\">\n <div class=\"rtsee-dashboard-client-header-image\"\n [style.background-image]=\"'url(' + client.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n @if(client.isConnected) {\n <div class=\"rtsee-dashboard-client-live-indicator\"></div>\n }\n </div>\n <p class=\"rtsee-dashboard-client-name\">\n <span class=\"rtsee-dashboard-client-name-text\">{{ client.name || client.id }}</span>\n <button (click)=\"openChat()\" class=\"rtsee-dashboard-client-engage\">\n <span class=\"rtsee-dashboard-client-engage-icon material-icons-outlined\">chat_bubble</span>\n </button>\n </p>\n </div>\n <div class=\"rtsee-dashboard-sessions\">\n @for(session of client.sessions; track session.id) {\n <div class=\"rtsee-dashboard-sessions-container\">\n <rtsee-rtsee-events-dashboard-session [session]=\"session\"></rtsee-rtsee-events-dashboard-session>\n </div>\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeEventsDashboard } from '@rtsee/events-dashboard';\n\n\nimport {\n RtseeEventsDashboardClientThumbnailComponent\n} from \"./components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component\";\n\n@Component({\n selector: 'rtsee-events-dashboard',\n templateUrl: './rtsee-events-dashboard.component.html',\n imports: [\n RtseeEventsDashboardClientThumbnailComponent\n ],\n standalone: true\n})\nexport class RtseeEventsDashboardComponent {\n @Input() eventsDashboard!: RTSeeEventsDashboard;\n}\n","<div class=\"rtsee-events-dashboard\">\n <div class=\"rtsee-events-dashboard-client-thumbnails\">\n @for (client of eventsDashboard.clients; track client.id) {\n <div class=\"rtsee-events-dashboard-client-thumbnail-wrapper\">\n <ngx-rtsee-events-dashboard-client-thumbnail\n [client]=\"client\"\n [dashboard]=\"eventsDashboard\"\n ></ngx-rtsee-events-dashboard-client-thumbnail>\n </div>\n }\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {RTSeePresentation} from \"@rtsee/presentation\";\nimport {NgIf} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-presentation-header',\n templateUrl: './presentation-header.component.html',\n imports: [\n NgIf\n ],\n standalone: true\n})\nexport class PresentationHeaderComponent {\n @Input() public presentation!: RTSeePresentation;\n}\n","<div class=\"rtsee-presentation-header\">\n <div class=\"rtsee-presentation-room-block\">\n <div class=\"rtsee-presentation-active-room\" *ngIf=\"presentation.activeRoom\">\n <p>{{presentation.activeRoom.id}}</p>\n <button (click)=\"presentation.emitJoinRoomCallEvent()\">Join Video Call</button>\n </div>\n </div>\n <div class=\"rtsee-story-info\" *ngIf=\"presentation.activeStory\">\n <p>{{presentation.activeStory.name}}</p>\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\"\n (click)=\"presentation.disableActiveStory()\"\n >close</span>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {RTSeeStory} from \"@rtsee/presentation\";\nimport {NgIf, NgStyle} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-story-thumbnail',\n templateUrl: './story-thumbnail.component.html',\n styleUrls: ['./story-thumbnail.component.scss'],\n imports: [\n NgStyle,\n NgIf\n ],\n standalone: true\n})\nexport class StoryThumbnailComponent {\n @Input() story!: RTSeeStory;\n\n protected readonly Math = Math;\n}\n","<div class=\"rtsee-story-thumbnail\">\n <div class=\"rtsee-story-thumbnail-image-container\"\n [ngStyle]=\"{'background-image': 'url(' + story.imageUrl + ')'}\"\n >\n </div>\n <div class=\"rtsee-story-thumbnail-body-container\">\n <div class=\"rtsee-story-thumbnail-title-container\">\n <h4 class=\"rtsee-story-thumbnail-title\">{{story.name}}</h4>\n </div>\n <div class=\"rtsee-story-thumbnail-info-container\" *ngIf=\"story.averageReadTime\">\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\">schedule</span>\n <span class=\"rtsee-story-thumbnail-info-read-time\">{{ Math.ceil(story.averageReadTime / 60) }} хв</span>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport {RTSeeStory, RTSeeStorySlide} from \"@rtsee/presentation\";\nimport { NgStyle } from \"@angular/common\";\nimport {WidgetDirective} from \"../../../directives/widget.directive\";\n\n@Component({\n selector: 'rtsee-slide',\n templateUrl: './slide.component.html',\n imports: [\n NgStyle,\n WidgetDirective\n ],\n standalone: true\n})\nexport class SlideComponent {\n @Input() story!: RTSeeStory;\n @Input() slide!: RTSeeStorySlide;\n\n slideRewindClicked(forward: boolean) {\n if (forward) {\n this.story.nextSlide();\n } else {\n this.story.previousSlide();\n }\n }\n}\n","<div class=\"rtsee-presentation-slide\">\n @if (slide.widget) {\n <ng-template widgetHost></ng-template>\n }\n <div class=\"rtsee-presentation-slide-default\">\n @if (slide.imageUrl) {\n <div class=\"rtsee-presentation-slide-image-container\"\n [ngStyle]=\"{'background-image': 'url(' + slide.imageUrl + ')'}\"\n >\n </div>\n }\n <div class=\"rtsee-presentation-slide-text\">\n <p>{{slide.text}}</p>\n </div>\n <div class=\"rtsee-presentation-slide-controls\">\n @if (story.activeSlideNumber !== 1) {\n <button class=\"slide-navigation-btn navigation-prev\"\n (click)=\"slideRewindClicked(false)\"\n >\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\">arrow_back_ios</span>\n </button>\n }\n @if (story.activeSlideNumber !== this.story.totalSlides) {\n <button class=\"slide-navigation-btn navigation-next\"\n (click)=\"slideRewindClicked(true)\"\n >\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\"\n >arrow_forward_ios</span>\n </button>\n }\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {RTSeeStory} from \"@rtsee/presentation\";\nimport {NgClass, NgForOf} from \"@angular/common\";\nimport {SlideComponent} from \"../slide/slide.component\";\n\n@Component({\n selector: 'rtsee-story-player',\n templateUrl: './story-player.component.html',\n imports: [\n NgForOf,\n NgClass,\n SlideComponent\n ],\n standalone: true\n})\nexport class StoryPlayerComponent implements OnInit {\n @Input() story!: RTSeeStory;\n\n ngOnInit() {\n console.log('Story Player: Story = ', this.story);\n }\n}\n","<div class=\"rtsee-story-player\">\n <div class=\"rtsee-story-player-slider\">\n <div class=\"story-player-slide-container\"\n *ngFor=\"let slide of story.slides\"\n [ngClass]=\"{'story-player-slide-active': slide.isActive}\"\n >\n <rtsee-slide [slide]=\"slide\" [story]=\"story\"></rtsee-slide>\n </div>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport { RTSeePresentation } from \"@rtsee/presentation\";\nimport {PresentationHeaderComponent} from \"../presentation-header/presentation-header.component\";\nimport {StoryThumbnailComponent} from \"../story-thumbnail/story-thumbnail.component\";\nimport {StoryPlayerComponent} from \"../story-player/story-player.component\";\n\n@Component({\n selector: 'rtsee-presentation',\n templateUrl: './presentation.component.html',\n imports: [\n PresentationHeaderComponent,\n StoryThumbnailComponent,\n StoryPlayerComponent\n ],\n standalone: true\n})\nexport class PresentationComponent {\n @Input() presentation!: RTSeePresentation;\n\n constructor() {}\n\n\n\n}\n","<div class=\"rtsee-presentation\">\n <div class=\"rtsee-presentation-header-block\">\n <rtsee-presentation-header [presentation]=\"presentation\"\n ></rtsee-presentation-header>\n </div>\n @if (!presentation.activeStory) {\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of presentation.stories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.setActiveStory(story)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n @if (presentation.activeStory) {\n <div class=\"rtsee-presentation-story-viewer-container\">\n <rtsee-story-player [story]=\"presentation.activeStory\"\n ></rtsee-story-player>\n </div>\n }\n</div>\n","import {Component, Input} from '@angular/core';\nimport {INavigationConfig, IRouteConfig} from \"@rtsee/factory\";\nimport {RouterLink, RouterLinkActive} from \"@angular/router\";\nimport {NgClass} from \"@angular/common\";\nimport {Avatar} from \"primeng/avatar\";\nimport {Image} from \"primeng/image\";\nimport {Divider} from \"primeng/divider\";\nimport {RTSee} from \"@rtsee/factory\";\n\n\n@Component({\n selector: 'rtsee-nav',\n templateUrl: './rtsee-nav.component.html',\n imports: [\n RouterLink,\n RouterLinkActive,\n NgClass,\n Avatar,\n Image,\n Divider\n ],\n standalone: true\n})\nexport class RtseeNavComponent {\n @Input() public config!: INavigationConfig<IRouteConfig>;\n @Input() rtsee!: RTSee;\n}\n","<div class=\"rtsee-nav\">\n @if (config.siteLogo) {\n <div class=\"rtsee-site-logo\">\n <p-image [src]=\"config.siteLogo.src\" class=\"rtsee-site-logo-image\"></p-image>\n <p-divider class=\"rtsee-site-logo-divider\" />\n </div>\n }\n <div class=\"rtsee-nav-bar\">\n @for (route of config.routes; track route.name) {\n <a [routerLink]=\"route.link\"\n routerLinkActive=\"rtsee-nav-item-active\"\n [ngClass]=\"{'rtsee-nav-item-hidden': !route.isEnabled || !route.iconClassName}\"\n [routerLinkActiveOptions]=\"{ exact: route.exactActiveLinkMatcher || false }\"\n class=\"rtsee-nav-item\"\n >\n <span [ngClass]=\"route.iconClassName\"\n class=\"rtsee-nav-item-icon\" >\n </span>\n </a>\n }\n <p-avatar [image]=\"rtsee.socketConnection?.myPeer?.imageUrl\"\n class=\"rtsee-nav-item rtsee-nav-image rtsee-nav-profile\"\n ></p-avatar>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {RTSee, INavigationConfig, IRouteConfig} from \"@rtsee/factory\";\nimport {NgClass} from \"@angular/common\";\nimport {RTSeeConferenceComponent} from \"../rtsee/rtsee-conference.component\";\nimport {MessengerComponent} from \"../rtsee-messenger/messenger/messenger.component\";\nimport {RtseeEventsDashboardComponent} from \"../rtsee-events-dashboard/rtsee-events-dashboard.component\";\nimport {PresentationComponent} from \"../rtsee-presentation/presentation/presentation.component\";\nimport {RtseeNavComponent} from \"./rtsee-nav/rtsee-nav.component\";\n\n\n@Component({\n selector: 'rtsee-container',\n templateUrl: './rtsee-container.component.html',\n imports: [\n NgClass,\n RTSeeConferenceComponent,\n MessengerComponent,\n RtseeEventsDashboardComponent,\n PresentationComponent,\n RtseeNavComponent\n ],\n standalone: true\n})\nexport class RTSeeContainerComponent {\n @Input() rtsee!: RTSee;\n @Input() public navigationConfig!: INavigationConfig<IRouteConfig>;\n\n isSidenavExpanded: boolean = true;\n isSidenavExpandededed: boolean = true;\n\n onSidenavToggleClicked() {\n this.isSidenavExpanded = !this.isSidenavExpanded;\n }\n}\n","<div class=\"rtsee-shell\"\n [ngClass]=\"{\n 'rtsee-shell-conference-mode': rtsee.conference && rtsee.conference.isInActiveCall,\n 'rtsee-shell-messenger-active': rtsee.messenger && rtsee.activeTab === 'messenger',\n 'rtsee-shell-dashboard-active': rtsee.eventsDashboard && rtsee.activeTab === 'events-dashboard',\n 'rtsee-shell-presentation-active': rtsee.presentation && rtsee.activeTab === 'presentation',\n 'rtsee-shell-side-nav-expanded': isSidenavExpanded\n }\"\n>\n <div class=\"rtsee-nav-block\">\n <rtsee-nav [config]=\"navigationConfig\" [rtsee]=\"rtsee\"></rtsee-nav>\n </div>\n\n <div class=\"rtsee-shell-panel\">\n @if (rtsee.conference && rtsee.conference.isInActiveCall) {\n <div class=\"rtsee-conference-container\">\n <rtsee-conference [rtSee]=\"rtsee.conference\"\n ></rtsee-conference>\n </div>\n }\n\n @if (rtsee.messenger) {\n <div class=\"rtsee-messenger-container\">\n <rtsee-messenger [messenger]=\"rtsee.messenger\"\n ></rtsee-messenger>\n </div>\n }\n\n @if (rtsee.eventsDashboard && rtsee.eventsDashboard.isReady) {\n <div class=\"rtsee-events-dashboard-container\">\n <rtsee-events-dashboard [eventsDashboard]=\"rtsee.eventsDashboard\"\n ></rtsee-events-dashboard>\n </div>\n }\n\n @if (rtsee.presentation && rtsee.presentation.isActive) {\n <div class=\"rtsee-presentation-container\">\n <rtsee-presentation [presentation]=\"rtsee.presentation\"></rtsee-presentation>\n </div>\n }\n </div>\n\n <div class=\"rtsee-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport {HttpClient} from \"@angular/common/http\";\nimport {\n RTSeeAuth,\n IRtseeSignInRequestOptions,\n IRTSeeSignInResponse,\n IRtseeSignUpRequestOptions,\n IRTSeeSignUpResponse,\n AuthEndpointsKeys,\n RTSeeAuthConfiguration\n} from \"@rtsee/auth\";\n\nexport interface IRtseeForgotPasswordRequestOptions {\n email: string;\n}\n\nexport interface IRtseeResetPasswordRequestOptions {\n password: string;\n passwordConfirm: string;\n token: string;\n}\n\nexport interface IRTSeeForgotPasswordResponse {\n success: boolean;\n message: string;\n}\n\nexport interface IRTSeeResetPasswordResponse {\n success: boolean;\n message: string;\n}\nimport { Observable, tap } from \"rxjs\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RTSeeAuthService {\n rtseeAuth!: RTSeeAuth<any>;\n authConfiguration!: RTSeeAuthConfiguration;\n\n constructor(\n private http: HttpClient,\n ) {}\n\n init(auth: RTSeeAuth<any>) {\n this.rtseeAuth = auth;\n this.authConfiguration = this.rtseeAuth.authConfiguration;\n }\n\n signIn(credentials: IRtseeSignInRequestOptions): Observable<IRTSeeSignInResponse> {\n return this.http\n .post<IRTSeeSignInResponse>(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.SIGN_IN), credentials)\n .pipe(tap((res) => this.rtseeAuth.authenticate(res)))\n }\n\n signUp(credentials: IRtseeSignUpRequestOptions): Observable<IRTSeeSignUpResponse> {\n return this.http\n .post<IRTSeeSignUpResponse>(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.SIGN_UP), credentials)\n }\n\n forgotPassword(credentials: IRtseeForgotPasswordRequestOptions): Observable<IRTSeeForgotPasswordResponse> {\n return this.http\n .post<IRTSeeForgotPasswordResponse>(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.FORGOT_PASSWORD), credentials)\n }\n\n resetPassword(credentials: IRtseeResetPasswordRequestOptions): Observable<IRTSeeResetPasswordResponse> {\n return this.http\n .post<IRTSeeResetPasswordResponse>(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.RESET_PASSWORD), credentials)\n }\n}\n","import { Component } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport { FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { SignInForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { NgOptimizedImage } from '@angular/common';\nimport { RTSeeAuthService } from '../services/auth.service';\nimport { AuthEndpointsKeys, RTSeeAuthConfiguration } from '@rtsee/auth';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Checkbox } from 'primeng/checkbox';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\nimport {ServerSideError} from \"../../../common/interfaces\";\n\n@Component({\n selector: 'rtsee-sign-in',\n templateUrl: './sign-in.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n Password,\n FloatLabel,\n Checkbox,\n Message,\n ProgressSpinner\n ],\n standalone: true\n})\nexport class SignInComponent {\n public readonly signInForm: FormGroup<TypedReactiveForm<SignInForm>> = this.formBuilder.group<TypedReactiveForm<SignInForm>>({\n username: this.formBuilder.nonNullable.control({\n value: '',\n disabled: false\n },\n {\n validators: [ Validators.required, Validators.email ]\n }),\n password: this.formBuilder.nonNullable.control({\n value: '',\n disabled: false\n }, { validators: [ Validators.required ]}),\n remember: this.formBuilder.nonNullable.control(false),\n });\n public readonly authConfiguration: RTSeeAuthConfiguration;\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n public loadInProgress: boolean = false;\n public serverSideError: string = '';\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n public authService: RTSeeAuthService\n ) {\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get usernameField(): FormControl<string> {\n return this.signInForm.get('username') as FormControl<string>;\n }\n\n get passwordField(): FormControl<string> {\n return this.signInForm.get('password') as FormControl<string>;\n }\n\n get rememberField(): FormControl<boolean> {\n return this.signInForm.get('remember') as FormControl<boolean>;\n }\n\n public login(): void {\n if (this.signInForm.valid) {\n this.disableFormFields();\n this.authService.signIn(this.signInForm.getRawValue())\n .subscribe({\n next: (() => {\n void this.router.navigate(this.authService.rtseeAuth.authConfiguration.defaultPostLoginRoute);\n this.enableFormFields();\n }),\n error: ((error: ServerSideError) => {\n console.log(error);\n this.showServerSideErrorForXSeconds(error.error.message);\n this.enableFormFields();\n }),\n complete: (() => {\n this.enableFormFields();\n })\n });\n } else {\n this.signInForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n private showServerSideErrorForXSeconds(message: string, x: number = 3): void {\n this.serverSideError = message;\n\n setTimeout(() => {\n this.serverSideError = '';\n }, x * 1000); // we can do pop-up message instead\n }\n\n private disableFormFields(): void {\n this.loadInProgress = true;\n this.usernameField.disable();\n this.passwordField.disable();\n this.rememberField.disable();\n }\n\n private enableFormFields(): void {\n this.loadInProgress = false;\n this.usernameField.enable(); // fuck me, but [disabled]=\"loadInProgress\" on the field no longer works :(\n this.passwordField.enable();\n this.rememberField.enable();\n }\n}\n","<div class=\"auth-container rtsee-form-container\" >\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Sign In to Your Account</h2>\n <p class=\"auth-title-description\">To access your content, please sign in to your account</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"signInForm\" (ngSubmit)=\"login()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup >\n <p-floatlabel variant=\"on\">\n <input id=\"user-email\"\n pInputText\n [formControl]=\"usernameField\"\n />\n <label for=\"user-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!usernameField.valid && usernameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is invalid</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"user-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n />\n <label for=\"user-password\">Password</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (!passwordField.valid && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n @if (serverSideError) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{serverSideError}}</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-checkbox inputId=\"remember\" [binary]=\"true\" [formControl]=\"rememberField\" />\n <label for=\"remember\" class=\"ml-2\"> Remember me </label>\n </div>\n <div class=\"rtsee-form-field-container\">\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.FORGOT_PASSWORD)\"\n class=\"auth-deep-blue-sm-medium\"\n >Forgot password?</a>\n </div>\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Sign In\"\n [disabled]=\"loadInProgress\"\n />\n @if (loadInProgress) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n <p class=\"rtsee-form-label\">\n <span>Don't have an account?</span>\n <span>&nbsp;</span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_UP)\"\n class=\"auth-deep-blue-sm-medium\"\n >Create one!</a>\n </p>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilsService {\n\n constructor() {\n }\n\n public static getKeysAsValueObject<T extends object>(obj: T): Record<string, string> { // object was {}\n if (obj) {\n return Object.keys(obj).reduce<Record<string, string>>((result, value) => {\n result[value] = value;\n return result;\n }, {});\n }\n return {};\n }\n}\n","import {AbstractControl, ValidationErrors} from '@angular/forms';\n\nexport class ConfirmPasswordValidator {\n /**\n * Check matching password with confirm password\n * @param control AbstractControl\n */\n static MatchFields(control: AbstractControl): ValidationErrors | null {\n const passwordField: AbstractControl | null = control.get('password');\n const passwordConfirmationField: AbstractControl | null = control.get('passwordConfirmation');\n\n if (!passwordField || ! passwordConfirmationField) {\n throw new Error('MatchFieldsValidator unable to find password controls!');\n }\n\n const password: string = passwordField.getRawValue() as string;\n const passwordConfirmation: string = passwordConfirmationField.getRawValue() as string;\n\n if (password !== passwordConfirmation) {\n return {\n confirmPassword: true\n };\n }\n\n return null;\n }\n}\n","import { Component } from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport { SignUpForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { UtilsService } from '../services/utils.service';\nimport {ConfirmPasswordValidator} from \"../validators/form-fields-validators\";\nimport { Router, RouterLink } from '@angular/router';\nimport {NgOptimizedImage} from \"@angular/common\";\nimport {RTSeeAuthService} from \"../services/auth.service\";\nimport {IRtseeSignUpRequestOptions, IRTSeeSignUpResponse} from \"@rtsee/auth\";\nimport {RTSeeAuthConfiguration, AuthEndpointsKeys} from \"@rtsee/auth\";\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Checkbox } from 'primeng/checkbox';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-sign-up',\n templateUrl: './sign-up.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n Password,\n FloatLabel,\n Checkbox,\n Message,\n ProgressSpinner\n ],\n standalone: true\n})\nexport class SignUpComponent {\n public readonly signUpForm: FormGroup<TypedReactiveForm<SignUpForm>>;\n public readonly signUpFormKeys: Record<keyof SignUpForm, string>;\n public readonly authConfiguration: RTSeeAuthConfiguration;\n public loadInProgress: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n private authService: RTSeeAuthService\n ) {\n this.signUpForm = this.formBuilder.group<TypedReactiveForm<SignUpForm>>({\n email: this.formBuilder.control('', { validators: [Validators.required, Validators.email] }),\n password: this.formBuilder.control('', { validators: [Validators.required, Validators.minLength(6)] }),\n passwordConfirmation: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6)\n ]\n }),\n terms: this.formBuilder.control(false, { nonNullable: true,\n validators: [Validators.requiredTrue]\n }),\n }, { validators: [ ConfirmPasswordValidator.MatchFields ] });\n this.signUpFormKeys = UtilsService.getKeysAsValueObject(this.signUpForm.getRawValue());\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get emailField(): FormControl<string> {\n return this.signUpForm.get('email') as FormControl<string>;\n }\n\n get passwordField(): FormControl<string> {\n return this.signUpForm.get('password') as FormControl<string>;\n }\n\n get passwordConfirmationField(): FormControl<string> {\n return this.signUpForm.get('passwordConfirmation') as FormControl<string>;\n }\n\n get termsField(): FormControl<boolean> {\n return this.signUpForm.get('terms') as FormControl<boolean>;\n }\n\n public signUp(): void {\n this.signUpForm.markAllAsTouched();\n\n if (this.signUpForm.valid) {\n this.loadInProgress = true;\n this.errorMessage = '';\n this.successMessage = '';\n const formValues: SignUpForm = this.signUpForm.getRawValue();\n\n this.authService.signUp({\n email: formValues.email!,\n password: formValues.password!,\n terms: formValues.terms!\n } as IRtseeSignUpRequestOptions).subscribe({\n next: (response: IRTSeeSignUpResponse) => {\n this.loadInProgress = false;\n this.successMessage = 'Registration successful! You can now sign in.';\n void this.router.navigate(this.authConfiguration.getRoutePathSplit(this.AuthEndpointsKeys.SIGN_IN));\n console.log('User registered successfully', response);\n },\n error: (error) => {\n this.loadInProgress = false;\n this.errorMessage = error.error?.message || 'Error during registration. Please try again.';\n console.error('Error during registration', error);\n }\n });\n }\n }\n\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Personal Account Registration</h2>\n <p class=\"auth-title-description\">Create your personal account to view stories</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"signUpForm\" (ngSubmit)=\"signUp()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"sign-up-email\"\n pInputText\n [formControl]=\"emailField\"\n [class.p-invalid]=\"emailField.invalid && emailField.touched\"\n />\n <label for=\"sign-up-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (emailField.hasError('required') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is required</p-message>\n }\n @if (emailField.hasError('email') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Please enter a valid email address</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"sign-up-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n [styleClass]=\"(passwordField.invalid && passwordField.touched) || (signUpForm.hasError('confirmPassword') && passwordField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"sign-up-password\">Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (passwordField.hasError('required') && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n @if (passwordField.hasError('minlength') && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password must be at least 6 characters long</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"confirm-password\"\n [formControl]=\"passwordConfirmationField\"\n [feedback]=\"false\"\n [styleClass]=\"(passwordConfirmationField.invalid && passwordConfirmationField.touched) || (signUpForm.hasError('confirmPassword') && passwordConfirmationField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"confirm-password\">Confirm Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (passwordConfirmationField.hasError('required') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation is required</p-message>\n }\n @if (passwordConfirmationField.hasError('minlength') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation must be at least 6 characters long</p-message>\n }\n @if (signUpForm.hasError('confirmPassword') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Passwords do not match</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n <div class=\"rtsee-form-field-container\">\n <p-checkbox inputId=\"terms\" [binary]=\"true\" [formControl]=\"termsField\" />\n <label for=\"terms\" class=\"ml-2\">I agree to the&nbsp;<a href=\"#\" [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.PRIVACY_POLICY)\" class=\"auth-deep-blue-sm-medium\">terms of use</a></label>\n @if (termsField.hasError('required') && termsField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >You must accept the terms and conditions</p-message>\n }\n </div>\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Sign Up\"\n [disabled]=\"loadInProgress\"\n />\n @if (loadInProgress) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Already have an account?</span>\n <span>&nbsp;</span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN)\"\n class=\"auth-deep-blue-sm-medium\"\n >Sign In</a>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport { UtilsService } from '../services/utils.service';\nimport { ForgotPasswordForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { Router, RouterLink } from '@angular/router';\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from \"@rtsee/auth\";\nimport { RTSeeAuthService, IRtseeForgotPasswordRequestOptions, IRTSeeForgotPasswordResponse } from \"../services/auth.service\";\nimport { NgOptimizedImage } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-forgot-password',\n templateUrl: './forgot-password.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n FloatLabel,\n Message,\n ProgressSpinner\n ],\n standalone: true\n})\nexport class ForgotPasswordComponent {\n public isLoading: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n public readonly emailForm: FormGroup<TypedReactiveForm<ForgotPasswordForm>>;\n public readonly forgotPasswordFormKeys: Record<keyof ForgotPasswordForm, string>;\n authConfiguration: RTSeeAuthConfiguration;\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n private authService: RTSeeAuthService\n ) {\n this.emailForm= this.formBuilder.group<TypedReactiveForm<ForgotPasswordForm>>({\n email: this.formBuilder.nonNullable.control('', { validators: [Validators.required, Validators.email] }),\n });\n this.forgotPasswordFormKeys = UtilsService.getKeysAsValueObject(this.emailForm.getRawValue());\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get emailField(): FormControl<string> {\n return this.emailForm.get('email') as FormControl<string>;\n }\n\n public submitEmail(): void {\n this.emailForm.markAllAsTouched();\n\n if (this.emailForm.valid) {\n this.isLoading = true;\n this.errorMessage = '';\n this.successMessage = '';\n const email = this.emailForm.getRawValue().email;\n\n this.authService.forgotPassword({ email } as IRtseeForgotPasswordRequestOptions).subscribe({\n next: (response: IRTSeeForgotPasswordResponse) => {\n this.isLoading = false;\n this.successMessage = response.message || 'Password reset email sent successfully!';\n console.log('Password reset email sent successfully', response);\n void this.router.navigate(this.authConfiguration.getRoutePathSplit(this.AuthEndpointsKeys.SIGN_IN));\n },\n error: (error) => {\n this.isLoading = false;\n this.errorMessage = error.error?.message || 'Error sending password reset email. Please try again.';\n console.error('Error sending password reset email', error);\n }\n });\n }\n }\n\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Password Recovery</h2>\n <p class=\"auth-title-description\">Enter your email address to receive password reset instructions</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"emailForm\" (ngSubmit)=\"submitEmail()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"forgot-password-email\"\n pInputText\n [formControl]=\"emailField\"\n [class.p-invalid]=\"emailField.invalid && emailField.touched\"\n />\n <label for=\"forgot-password-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (emailField.hasError('required') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is required</p-message>\n }\n @if (emailField.hasError('email') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Please enter a valid email address</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Send\"\n [disabled]=\"isLoading\"\n />\n @if (isLoading) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Remember your password?</span>\n <span>&nbsp;</span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN)\"\n class=\"auth-deep-blue-sm-medium\"\n >Sign In</a>\n </p>\n</div>\n","export enum FormErrorKey {\n required = 'required',\n email = 'email',\n minLength = 'minlength',\n maxLength = 'maxlength',\n requiredLength = 'requiredLength',\n passwordsMismatch = 'passwordsMismatch'\n}\n","export const COMMON_CONSTANTS = {\n minPasswordLength: 8,\n requestItemLimit: 20,\n customTimeFormat: 'HH:mm',\n customDateFormat: 'dd/MM/YYYY',\n customDateFormatDaysJs: 'DD/MM/YYYY',\n customDateTimeFormat: 'dd/MM/YYYY HH:mm',\n};\n","import { Component, OnInit } from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, ValidatorFn, Validators, ValidationErrors} from '@angular/forms';\nimport { ResetPasswordForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { UtilsService } from '../services/utils.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FormErrorKey } from '../../enums/form.enum';\nimport { COMMON_CONSTANTS } from '../../constans/common.const';\nimport { RTSeeAuthService, IRtseeResetPasswordRequestOptions, IRTSeeResetPasswordResponse } from \"../services/auth.service\";\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from \"@rtsee/auth\";\nimport { NgOptimizedImage } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-reset-password',\n templateUrl: './reset-password.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n ButtonModule,\n InputGroup,\n Password,\n FloatLabel,\n Message,\n ProgressSpinner\n ],\n standalone: true\n})\nexport class ResetPasswordComponent implements OnInit {\n public isLoading: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n public resetPasswordForm: FormGroup<TypedReactiveForm<ResetPasswordForm>>;\n public passwordFormKeys: Record<keyof ResetPasswordForm, string>;\n public hidePassword: Record<keyof ResetPasswordForm, boolean> = {\n password: true,\n passwordConfirm: true\n };\n private token!: string;\n authConfiguration: RTSeeAuthConfiguration;\n\n constructor(\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private readonly router: Router,\n private authService: RTSeeAuthService\n ) {\n this.resetPasswordForm = this.formBuilder.group({\n password: this.formBuilder.control('', {validators: [Validators.required, Validators.minLength(COMMON_CONSTANTS.minPasswordLength)], nonNullable: true}),\n passwordConfirm: this.formBuilder.control('', {validators: [Validators.required, Validators.minLength(COMMON_CONSTANTS.minPasswordLength)], nonNullable: true}),\n }, {validators: [this.passwordMatchValidator()]});\n this.passwordFormKeys = UtilsService.getKeysAsValueObject(this.resetPasswordForm.value);\n this.authConfiguration = this.authService.authConfiguration;\n }\n\n get passwordField(): FormControl<string> {\n return this.resetPasswordForm.get('password') as FormControl<string>;\n }\n\n get passwordConfirmField(): FormControl<string> {\n return this.resetPasswordForm.get('passwordConfirm') as FormControl<string>;\n }\n\n public ngOnInit(): void {\n this.token = this.route.snapshot.params['token'];\n }\n\n public resetPassword(): void {\n this.resetPasswordForm.markAllAsTouched();\n\n if (this.resetPasswordForm.valid) {\n this.isLoading = true;\n this.errorMessage = '';\n this.successMessage = '';\n const formValues = this.resetPasswordForm.getRawValue();\n\n this.authService.resetPassword({\n password: formValues.password,\n passwordConfirm: formValues.passwordConfirm,\n token: this.token\n } as IRtseeResetPasswordRequestOptions).subscribe({\n next: (response: IRTSeeResetPasswordResponse) => {\n this.isLoading = false;\n this.successMessage = response.message || 'Password reset successfully!';\n console.log('Password reset successfully', response);\n void this.router.navigate(this.authConfiguration.getRoutePathSplit(this.AuthEndpointsKeys.SIGN_IN));\n },\n error: (error) => {\n this.isLoading = false;\n this.errorMessage = error.error?.message || 'Error resetting password. Please try again.';\n console.error('Error resetting password', error);\n }\n });\n }\n }\n\n private passwordMatchValidator(): ValidatorFn {\n // @ts-ignore\n return (form: FormGroup<TypedReactiveForm<ResetPasswordForm>>): ValidationErrors | null => {\n const password = form.value.password;\n const passwordConfirm = form.value.passwordConfirm;\n if (password !== passwordConfirm) {\n if (form.controls.password.valid) {\n form.controls.password.setErrors({[FormErrorKey.passwordsMismatch]: true});\n }\n if (form.controls.passwordConfirm.valid) {\n form.controls.passwordConfirm.setErrors({[FormErrorKey.passwordsMismatch]: true});\n }\n return {[FormErrorKey.passwordsMismatch]: true};\n }\n if (form.controls.password.hasError(FormErrorKey.passwordsMismatch)) {\n form.controls.password.setErrors(null);\n }\n if (form.controls.passwordConfirm.hasError(FormErrorKey.passwordsMismatch)) {\n form.controls.passwordConfirm.setErrors(null);\n }\n return null;\n }\n }\n\n protected readonly FormErrorKey = FormErrorKey;\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Password Reset</h2>\n <p class=\"auth-title-description\">Please enter a new password for your account.</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"new-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n [class]=\"(passwordField.invalid && passwordField.touched) || (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"new-password\">New Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!passwordField.valid && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"confirm-password\"\n [formControl]=\"passwordConfirmField\"\n [feedback]=\"false\"\n [class]=\"(passwordConfirmField.invalid && passwordConfirmField.touched) || (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordConfirmField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"confirm-password\">Confirm Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!passwordConfirmField.valid && passwordConfirmField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation is required</p-message>\n }\n @if (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordConfirmField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Passwords do not match</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Reset Password\"\n [disabled]=\"isLoading\"\n />\n @if (isLoading) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Remember your password?</span>\n <span>&nbsp;</span>\n <a href=\"#\" class=\"auth-deep-blue-sm-medium\">Sign In</a>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'rtsee-privacy-policy',\n templateUrl: './privacy-policy.component.html',\n styleUrls: ['./privacy-policy.component.scss'],\n imports: [\n ButtonModule,\n MessageModule\n ],\n standalone: true\n})\nexport class PrivacyPolicyComponent {\n\n}\n\n","<div class=\"privacy-policy-container\">\n <div class=\"policy-card\">\n <div class=\"header-section\">\n <div class=\"header-content\">\n <div class=\"flex justify-content-center align-items-center\">\n <h1>Terms of Use & Privacy Policy</h1>\n </div>\n </div>\n </div>\n\n <div class=\"content-section\">\n <p-message severity=\"info\" [closable]=\"false\" class=\"info-banner\">\n <ng-template pTemplate>\n <div class=\"p-message-content\">\n <p class=\"last-updated\"><strong>Last Updated:</strong> December 2024</p>\n <p>By using our services, you agree to the terms and conditions outlined in this document. Please read this Privacy Policy and Terms of Use carefully before using our platform.</p>\n </div>\n </ng-template>\n </p-message>\n\n <h2>1. Acceptance of Terms</h2>\n <p>By accessing and using this service, you accept and agree to be bound by the terms and provision of this agreement. If you do not agree to abide by the above, please do not use this service.</p>\n\n <h2>2. Privacy Policy</h2>\n\n <h3>2.1 Information We Collect</h3>\n <p>We collect information you provide directly to us, such as when you create an account, use our services, or contact us for support. This may include:</p>\n <ul>\n <li><strong>Personal Information:</strong> Name, email address, phone number, and other contact details</li>\n <li><strong>Account Information:</strong> Username, password, and profile information</li>\n <li><strong>Usage Data:</strong> Information about how you use our services, including pages visited, time spent, and features used</li>\n <li><strong>Device Information:</strong> IP address, browser type, operating system, and device identifiers</li>\n <li><strong>Cookies and Tracking:</strong> We use cookies and similar technologies to enhance your experience</li>\n </ul>\n\n <h3>2.2 How We Use Your Information</h3>\n <p>We use the information we collect to:</p>\n <ul>\n <li>Provide, maintain, and improve our services</li>\n <li>Process transactions and send related information</li>\n <li>Send technical notices, updates, security alerts, and support messages</li>\n <li>Respond to your comments, questions, and requests</li>\n <li>Monitor and analyze trends, usage, and activities</li>\n <li>Personalize and improve your experience</li>\n <li>Detect, investigate, and prevent fraudulent transactions and other illegal activities</li>\n </ul>\n\n <h3>2.3 Information Sharing and Disclosure</h3>\n <p>We do not sell, trade, or otherwise transfer your personal information to third parties without your consent, except in the following circumstances:</p>\n <ul>\n <li><strong>Service Providers:</strong> We may share information with trusted third-party service providers who assist us in operating our platform</li>\n <li><strong>Legal Requirements:</strong> We may disclose information when required by law or to protect our rights and safety</li>\n <li><strong>Business Transfers:</strong> In connection with any merger, sale of assets, or acquisition of all or a portion of our business</li>\n <li><strong>Consent:</strong> We may share information with your explicit consent</li>\n </ul>\n\n <h3>2.4 Data Security</h3>\n <p>We implement appropriate technical and organizational security measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the internet or electronic storage is 100% secure.</p>\n\n <h3>2.5 Data Retention</h3>\n <p>We retain your personal information for as long as necessary to provide our services and fulfill the purposes outlined in this privacy policy, unless a longer retention period is required or permitted by law.</p>\n\n <h3>2.6 Your Rights</h3>\n <p>Depending on your location, you may have certain rights regarding your personal information, including:</p>\n <ul>\n <li>The right to access and receive a copy of your personal information</li>\n <li>The right to rectify or update your personal information</li>\n <li>The right to erase your personal information</li>\n <li>The right to restrict or object to the processing of your personal information</li>\n <li>The right to data portability</li>\n <li>The right to withdraw consent at any time</li>\n </ul>\n\n <h2>3. Terms of Service</h2>\n\n <h3>3.1 User Accounts</h3>\n <p>To access certain features of our service, you may be required to create an account. You are responsible for:</p>\n <ul>\n <li>Maintaining the confidentiality of your account credentials</li>\n <li>All activities that occur under your account</li>\n <li>Notifying us immediately of any unauthorized use of your account</li>\n <li>Providing accurate and up-to-date information</li>\n </ul>\n\n <h3>3.2 Acceptable Use</h3>\n <p>You agree not to use our service for any unlawful purpose or any purpose prohibited under this clause. You may not use our service in any manner that could damage, disable, overburden, or impair our servers or networks.</p>\n\n <h3>3.3 Prohibited Activities</h3>\n <p>The following activities are prohibited:</p>\n <ul>\n <li>Violating any applicable laws or regulations</li>\n <li>Transmitting or procuring the sending of any unsolicited or unauthorized advertising</li>\n <li>Attempting to gain unauthorized access to any portion of our service</li>\n <li>Interfering with or disrupting the service or servers connected to the service</li>\n <li>Using any automated system to access the service for any purpose</li>\n <li>Impersonating any person or entity or misrepresenting your affiliation with a person or entity</li>\n </ul>\n\n <h3>3.4 Intellectual Property</h3>\n <p>The service and its original content, features, and functionality are and will remain the exclusive property of our company and its licensors. The service is protected by copyright, trademark, and other laws.</p>\n\n <h3>3.5 Termination</h3>\n <p>We may terminate or suspend your account and bar access to the service immediately, without prior notice or liability, under our sole discretion, for any reason whatsoever, including without limitation if you breach the Terms.</p>\n\n <h3>3.6 Disclaimer</h3>\n <p>The information on this service is provided on an \"as is\" basis. To the fullest extent permitted by law, this company excludes all representations, warranties, conditions and terms relating to our service and the use of this service.</p>\n\n <h3>3.7 Limitation of Liability</h3>\n <p>In no event shall our company, nor its directors, employees, partners, agents, suppliers, or affiliates, be liable for any indirect, incidental, special, consequential, or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from your use of the service.</p>\n\n <h2>4. Cookies and Tracking Technologies</h2>\n <p>We use cookies and similar tracking technologies to track activity on our service and hold certain information. Cookies are files with a small amount of data which may include an anonymous unique identifier. You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent.</p>\n\n <h2>5. Third-Party Services</h2>\n <p>Our service may contain links to third-party websites or services that are not owned or controlled by us. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party websites or services.</p>\n\n <h2>6. Children's Privacy</h2>\n <p>Our service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us.</p>\n\n <h2>7. International Data Transfers</h2>\n <p>Your information may be transferred to and processed in countries other than your own. We ensure that such transfers comply with applicable data protection laws and implement appropriate safeguards to protect your personal information.</p>\n\n <h2>8. Changes to This Policy</h2>\n <p>We reserve the right to update or change our Privacy Policy and Terms of Use at any time. We will notify you of any changes by posting the new Privacy Policy and Terms of Use on this page and updating the \"Last Updated\" date.</p>\n\n <div class=\"contact-section\">\n <h2>9. Contact Information</h2>\n <p>If you have any questions about this Privacy Policy and Terms of Use, please contact us:</p>\n <ul>\n <li><strong>Email:</strong> [Your Email Address]</li>\n <li><strong>Address:</strong> [Your Company Address]</li>\n <li><strong>Phone:</strong> [Your Contact Number]</li>\n </ul>\n </div>\n\n <div class=\"footer-section\">\n <p>This document was last updated on December 2024</p>\n </div>\n </div>\n </div>\n</div>\n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {SignInComponent} from \"../sign-in/sign-in.component\";\nimport {SignUpComponent} from \"../sign-up/sign-up.component\";\nimport {ForgotPasswordComponent} from \"../forgot-password/forgot-password.component\";\nimport {ResetPasswordComponent} from \"../reset-password/reset-password.component\";\nimport {PrivacyPolicyComponent} from \"../privacy-policy/privacy-policy.component\";\nimport {NgIf} from \"@angular/common\";\nimport {RTSeeAuthService} from \"../services/auth.service\";\nimport {RTSeeAuth} from \"@rtsee/auth\";\nimport {AuthEndpointsKeys, DEFAULT_ROUTE_NAMES} from \"@rtsee/auth\";\n\n@Component({\n selector: 'rtsee-auth',\n templateUrl: './auth.component.html',\n imports: [\n SignInComponent,\n SignUpComponent,\n ForgotPasswordComponent,\n ResetPasswordComponent,\n PrivacyPolicyComponent,\n NgIf\n ],\n standalone: true\n})\nexport class RTSeeAuthComponent implements OnInit {\n @Input() auth!: RTSeeAuth<any>;\n\n activeComponent: 'reset-password' | 'sign-up' | 'sign-in' | 'forgot-password' | 'privacy-policy' = 'sign-in' ;\n\n constructor(public authService: RTSeeAuthService) {\n console.log('constructor', window.location.pathname);\n\n if (window.location.pathname.includes(DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.SIGN_IN])) {\n this.activeComponent = 'sign-in';\n } else if (window.location.pathname.includes(DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.SIGN_UP])) {\n this.activeComponent = 'sign-up';\n } else if (window.location.pathname.includes(DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.FORGOT_PASSWORD])) {\n this.activeComponent = 'forgot-password';\n } else if (\n window.location.pathname\n .includes(DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.RESET_PASSWORD].split('/')[0])\n ) {\n this.activeComponent = 'reset-password';\n } else if (window.location.pathname.includes(DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.PRIVACY_POLICY])) {\n this.activeComponent = 'privacy-policy';\n }\n }\n\n ngOnInit() {\n this.authService.init(this.auth);\n }\n}\n","<div class=\"rtsee-auth\">\n @if (authService.rtseeAuth) {\n @if (activeComponent === 'sign-in') {\n <rtsee-sign-in></rtsee-sign-in>\n }\n @if (activeComponent === 'sign-up') {\n <rtsee-sign-up></rtsee-sign-up>\n }\n @if (activeComponent === 'forgot-password') {\n <rtsee-forgot-password></rtsee-forgot-password>\n }\n @if (activeComponent === 'reset-password') {\n <rtsee-reset-password *ngIf=\"activeComponent === 'reset-password'\"></rtsee-reset-password>\n }\n @if (activeComponent === 'privacy-policy') {\n <rtsee-privacy-policy></rtsee-privacy-policy>\n }\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-peers-list',\n templateUrl: './rtsee-peers-list.component.html',\n styleUrls: ['./rtsee-peers-list.component.scss'],\n standalone: true\n})\nexport class RtseePeersListComponent {}\n","<p>rtsee-peers-list works!</p>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client',\n templateUrl: './rtsee-events-dashboard-client.component.html',\n standalone: true\n})\nexport class RtseeEventsDashboardClientComponent {}\n","<p>rtsee-events-dashboard-client works!</p>\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\nimport shave from 'shave';\n\n@Directive({\n selector: '[rtseeShave]',\n standalone: true\n})\nexport class ShaveDirective implements AfterViewInit {\n constructor(private elem: ElementRef<HTMLDivElement>) {}\n\n ngAfterViewInit() {\n const height = this.elem.nativeElement?.offsetHeight;\n shave(this.elem.nativeElement as unknown as NodeList, height);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rtsee-vendors',\n templateUrl: './vendors.component.html',\n standalone: true\n})\nexport class VendorsComponent {\n\n}\n","<p>vendors works!</p>\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { RTSeeControlsComponent } from './components/rtsee/rtsee-controls/rtsee-controls.component';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { RtseePeerComponent } from './components/rtsee-peer/rtsee-peer.component';\nimport { RtseeSoundbarComponent } from './components/rtsee-soundbar/rtsee-soundbar.component';\nimport { RtseePeersListComponent } from './components/rtsee-peers-list/rtsee-peers-list.component';\nimport { RtseeSettingsComponent } from './components/rtsee-settings/rtsee-settings.component';\nimport { MessengerComponent } from './components/rtsee-messenger/messenger/messenger.component';\nimport { ChatComponent } from './components/rtsee-messenger/chat/chat.component';\nimport { MessageComponent } from './components/rtsee-messenger/message/message.component';\nimport { ChatsListComponent } from './components/rtsee-messenger/chats-list/chats-list.component';\nimport { MessagesListComponent } from './components/rtsee-messenger/messages-list/messages-list.component';\nimport { ChatThumbnailComponent } from './components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component';\nimport { ChatInputComponent } from './components/rtsee-messenger/chat-input/chat-input.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MessengerHeaderComponent } from './components/rtsee-messenger/messenger-header/messenger-header.component';\nimport { RtseeEventsDashboardComponent } from './components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nimport { RtseeEventsDashboardClientComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component';\nimport { RtseeEventsDashboardClientThumbnailComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component';\nimport { WidgetDirective } from './directives/widget.directive';\nimport { CallWidgetComponent } from './components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\nimport { AutosizeModule } from 'ngx-autosize';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { MainMenuComponent } from './components/rtsee-messenger/main-menu/main-menu.component';\nimport { MessageTimeAndStatusComponent } from './components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component';\nimport { PreloaderComponent } from './common/components/preloader/preloader.component';\nimport { SearchComponent } from './components/rtsee-messenger/main-menu/components/search/search.component';\nimport { ManageChatComponent } from './components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component';\nimport { ContactsMultiselectComponent } from './components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component';\nimport { ShaveDirective } from './directives/shave.directive';\nimport { ProfileComponent } from './components/rtsee-messenger/profile/profile.component';\nimport { EventThumbnailComponent } from './components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component';\nimport { RtseeEventsDashboardSessionComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component';\nimport { RTSeeContainerComponent } from './components/rtsee-container/rtsee-container.component';\nimport { RTSeeConferenceComponent } from './components/rtsee/rtsee-conference.component';\nimport { PresentationComponent } from './components/rtsee-presentation/presentation/presentation.component';\nimport { StoryPlayerComponent } from './components/rtsee-presentation/story-player/story-player.component';\nimport { SlideComponent } from './components/rtsee-presentation/slide/slide.component';\nimport { StoryThumbnailComponent } from './components/rtsee-presentation/story-thumbnail/story-thumbnail.component';\nimport { SignUpComponent } from \"./components/rtsee-auth/sign-up/sign-up.component\";\nimport { SignInComponent } from \"./components/rtsee-auth/sign-in/sign-in.component\";\nimport { ForgotPasswordComponent } from \"./components/rtsee-auth/forgot-password/forgot-password.component\";\nimport { VendorsComponent } from \"./components/rtsee-auth/vendors/vendors.component\";\nimport { RTSeeAuthComponent } from './components/rtsee-auth/auth/auth.component';\nimport { RouterLink, RouterLinkActive } from \"@angular/router\";\nimport { ResetPasswordComponent } from './components/rtsee-auth/reset-password/reset-password.component';\nimport { PresentationHeaderComponent } from './components/rtsee-presentation/presentation-header/presentation-header.component';\nimport { NgxCaptchaModule } from \"ngx-captcha\";\nimport { provideAnimationsAsync } from \"@angular/platform-browser/animations/async\";\nimport { providePrimeNG } from \"primeng/config\";\nimport Aura from '@primeuix/themes/aura';\n\n@NgModule({\n providers: [\n provideAnimationsAsync(),\n providePrimeNG({\n theme: {\n preset: Aura\n }\n })\n ],\n declarations: [],\n imports: [\n RTSeeAuthComponent,\n VendorsComponent,\n ForgotPasswordComponent,\n SignInComponent,\n SignUpComponent,\n RtseeEventsDashboardSessionComponent,\n EventThumbnailComponent,\n ShaveDirective,\n ContactsMultiselectComponent,\n ManageChatComponent,\n CallWidgetComponent,\n WidgetDirective,\n RtseeEventsDashboardClientComponent,\n ResetPasswordComponent,\n RtseeEventsDashboardClientThumbnailComponent,\n RtseePeersListComponent,\n ChatComponent,\n MessageComponent,\n MessagesListComponent,\n ChatThumbnailComponent,\n ChatInputComponent,\n RtseeEventsDashboardComponent,\n MessengerComponent,\n RTSeeControlsComponent,\n RTSeeContainerComponent,\n RTSeeConferenceComponent,\n RtseePeerComponent,\n RtseeSoundbarComponent,\n RtseeSettingsComponent,\n MessengerHeaderComponent,\n ChatsListComponent,\n ProfileComponent,\n MainMenuComponent,\n MessageTimeAndStatusComponent,\n PreloaderComponent,\n SearchComponent,\n PresentationComponent,\n StoryPlayerComponent,\n SlideComponent,\n StoryThumbnailComponent,\n PresentationHeaderComponent,\n CommonModule,\n ReactiveFormsModule,\n AutosizeModule,\n InfiniteScrollModule,\n FormsModule,\n NgOptimizedImage,\n RouterLink,\n RouterLinkActive,\n NgxCaptchaModule\n ],\n exports: [\n RTSeeConferenceComponent,\n MessengerComponent,\n RtseeEventsDashboardComponent,\n RTSeeContainerComponent,\n PresentationComponent,\n RTSeeAuthComponent\n ],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA,\n ]\n})\nexport class RTSeeModule {}\n","/*\n * Public API Surface of ngx\n */\n\nexport * from './lib/ngx.service';\nexport * from './lib/components/rtsee/rtsee-controls/rtsee-controls.component';\nexport * from './lib/components/rtsee-settings/rtsee-settings.component';\nexport * from './lib/components/rtsee/rtsee-conference.component';\nexport * from './lib/components/rtsee-peer/rtsee-peer.component';\nexport * from './lib/components/rtsee-messenger/profile/profile.component';\nexport * from './lib/components/rtsee-messenger/messenger/messenger.component';\nexport * from './lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nexport * from './lib/components/rtsee-container/rtsee-container.component';\nexport * from './lib/components/rtsee-presentation/presentation/presentation.component';\nexport * from './lib/components/rtsee-auth/auth/auth.component';\nexport * from './lib/ngx.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DefaultImagesService","i1.TimeFormatHelperService","i1.MessageWidgetsService","i2.TimeFormatHelperService","i1.EventsWidgetsService","i2.DefaultImagesService","i1","i3.RTSeeAuthService","i2","i1.RTSeeAuthService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAKa,UAAU,CAAA;AAErB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK;IAClB;8GAJW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCSY,sBAAsB,CAAA;IAIjC,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC;AAChB,cAAE,IAAI,CAAC,KAAK,CAAC,eAAe;AAC5B,cAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;IACnC;8GARW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbnC,88DA0DA,EAAA,MAAA,EAAA,CAAA,g8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjDI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAGrB;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,88DAAA,EAAA,MAAA,EAAA,CAAA,g8BAAA,CAAA,EAAA;8BAGP,KAAK,EAAA,CAAA;sBAAb;gBACQ,cAAc,EAAA,CAAA;sBAAtB;;;MECU,sBAAsB,CAAA;AAWjC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,0BAA0B,GAAG,EAAE;AACpC,QAAA,IAAI,CAAC,0BAA0B,GAAG,EAAE;AACpC,QAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE;IACvC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,oBAAoB,GAAA;AAClB,QAAA,KAAK,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE;IAC3C;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAAE;QAAQ;QACxC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACvD,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACtC;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAAE;QAAQ;QACzC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC3D;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAAE;QAAQ;QACxC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACzD;8GAvCW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,4IChBnC,+vDA4CA,EAAA,MAAA,EAAA,CAAA,kZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlCI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,WAAW,0vBACX,OAAO,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAGrB;wBACP,OAAO;wBACP,WAAW;wBACX;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,+vDAAA,EAAA,MAAA,EAAA,CAAA,kZAAA,CAAA,EAAA;wDAWP,KAAK,EAAA,CAAA;sBAAb;gBACQ,cAAc,EAAA,CAAA;sBAAtB;;;MEhBU,sBAAsB,CAAA;AAQjC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC;IAC1B;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,wBAAwB,EAAE;IACjC;IAEA,wBAAwB,GAAA;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAK;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACxD,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;YACrB;iBAAO;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,GAAG,IAAI,CAAC;YAC1D;YAEA,IAAI,CAAC,oBAAoB,EAAE;AAC7B,QAAA,CAAC,CAAC;IACJ;IAEA,oBAAoB,GAAA;QAClB,MAAM,UAAU,GAAG,EAAE;QACrB,MAAM,UAAU,GAAG,EAAE;AACrB,QAAA,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU;AAC7C,QAAA,MAAM,aAAa,GAAG,aAAa,GAAG,UAAU;AAEhD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,EAAE;AACvE,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC;QAC1B;AAEA,QAAA,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,UAAU,IAAI,GAAG;AACzE,QAAA,MAAM,aAAa,GACjB,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,aAAa,IAAI,UAAU,IAAI,GAAG;AACxD,QAAA,MAAM,eAAe,GACnB,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,aAAa,IAAI,UAAU,IAAI,GAAG;AAExD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC;AAC1D,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC;AAC1D,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC;IAChE;8GAtDW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,wGCVnC,ytBAmBA,EAAA,MAAA,EAAA,CAAA,4iCAAA,CAAA,EAAA,CAAA,CAAA;;2FDTa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,IAAI,EAAA,QAAA,EAAA,ytBAAA,EAAA,MAAA,EAAA,CAAA,4iCAAA,CAAA,EAAA;wDAST,IAAI,EAAA,CAAA;sBAAZ;;;MEIU,kBAAkB,CAAA;AAQ7B,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;IACrB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;QACF;QACA,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAC7B,IAAI,CAAC,WAAW,CAAC,aAAiC,CACnD;IACH;8GApBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,6SCrB/B,4hCA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,IAAI,6FACJ,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIb,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EAEjB;wBACP,OAAO;wBACP,IAAI;wBACJ;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,4hCAAA,EAAA;wDAMU,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa;gBACE,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa;gBACf,IAAI,EAAA,CAAA;sBAAZ;;;METU,wBAAwB,CAAA;AAInC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;IAClC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,mBAAmB;IACtD;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;IAChC;8GAdW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBrC,ggGA4EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjEI,OAAO,oFACP,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIb,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAXpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EAEnB;wBACP,OAAO;wBACP,sBAAsB;wBACtB,kBAAkB;wBAClB;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,ggGAAA,EAAA;wDAKP,KAAK,EAAA,CAAA;sBAAb;;;MEbU,gBAAgB,CAAA;IAG3B,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC9B;QACF;AACA,QAAA,KAAK,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IACpE;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC9B;QACF;AACA,QAAA,KAAK,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IACpE;8GAfW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,6GCR7B,iuBAoBA,EAAA,CAAA,CAAA;;2FDZa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAEb,IAAI,EAAA,QAAA,EAAA,iuBAAA,EAAA;8BAGT,SAAS,EAAA,CAAA;sBAAjB;;;MEJU,oBAAoB,CAAA;AAHjC,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,OAAO,GAAG,+DAA+D;AAC1E,IAAA;8GAFY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCYY,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAmB,oBAA0C,EAAA;QAA1C,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;AAH7B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;AAI1C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1C;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU;QAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1C;8GAZW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,6LChBrC,m+EAyDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/CI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,IAAI,6FACJ,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EAEzB;wBACP,OAAO;wBACP,IAAI;wBACJ;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,m+EAAA,EAAA;sFAGN,aAAa,EAAA,CAAA;sBAAtB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MEZU,kBAAkB,CAAA;AAO7B,IAAA,WAAA,GAAA;QANA,IAAA,CAAA,OAAO,GAAG,aAAa;QACvB,IAAA,CAAA,CAAC,GAAG,8CAA8C;QAIzC,IAAA,CAAA,KAAK,GAAY,SAAS;AAEjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,IAAA,EAAO,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,CAAA,CAAE;YACtD,IAAI,CAAC,CAAC,GAAG,CAAA,EAAA,EAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,GAAA,EACrD,IAAI,CAAC,QAAQ,GAAG,IAClB,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,UAAA,EAAa,IAAI,CAAC,QAAQ,GAAG,IAAI,IACvD,IAAI,CAAC,QAAQ,GAAG,IAClB,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,SAAA,EAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,CAAE;QAC5D;IACF;IAEA,QAAQ,GAAA;;;IAGR;8GArBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,+NCP/B,uLAKA,EAAA,CAAA,CAAA;;2FDEa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAEf,IAAI,EAAA,QAAA,EAAA,uLAAA,EAAA;wDAMG,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ;gBACV,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AETH,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;MAKb,uBAAuB,CAAA;AAClC,IAAA,KAAK,CAAC,IAAU,EAAA;;AAEd,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAY;;IAExC;AACA,IAAA,WAAW,CAAC,IAAU,EAAA;;QAEpB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;IAElC;AACA,IAAA,MAAM,CAAC,IAAU,EAAA;;QAEf,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAW;;IAE9C;AACA,IAAA,MAAM,CAAC,IAAU,EAAA;;QAEf,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAW;;IAE/C;AACA,IAAA,aAAa,CAAC,IAAU,EAAA;;QAEtB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;;IAEpC;AAEA,IAAA,qBAAqB,CAAC,IAAU,EAAA;;QAE9B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;;IAEvC;AAEA,IAAA,cAAc,CAAC,IAAU,EAAA;;QAEvB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,CAAW;;IAEtD;AAEA,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;QACxB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACjC,QAAA,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC;QAEzB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE;QACX;QAEA,IACE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK;YACxC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,EAChC;AACA,YAAA,OAAO,OAAO;QAChB;QAEA,IACE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO;YAC1C,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK;YACxC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,EAChC;AACA,YAAA,OAAO,WAAW;QACpB;QAEA,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AAC9C,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1B;AAEA,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;IAClC;AAEA,IAAA,gBAAgB,CAAC,IAAU,EAAA;QACzB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;QACxB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QAEjC,IACE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK;YACxC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,EAChC;AACA,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1B;QAEA,IACE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK;AACxC,YAAA,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC,EAC5C;AACA,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B;AAEA,QAAA,IACE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC;YAC5C,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAC1C;AACA,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QACjC;AAEA,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;IACzC;8GApGW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCSY,6BAA6B,CAAA;AAIxC,IAAA,WAAA,CAAmB,iBAA0C,EAAA;QAA1C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAA4B;8GAJrD,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,qKCjB1C,iyBASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,OAAO,oFACP,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIT,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAVzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAAA,OAAA,EAEhC;wBACP,IAAI;wBACJ,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,iyBAAA,EAAA;yFAGP,OAAO,EAAA,CAAA;sBAAf;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MEDU,sBAAsB,CAAA;AAMjC,IAAA,WAAA,CAAmB,iBAA0C,EAAA;QAA1C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAF3B,IAAA,CAAA,cAAc,GAAG,cAAc;IAEwB;8GANrD,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,kICnBnC,gxCA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfI,6BAA6B,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,OAAO,oFACP,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIK,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EAEvB;wBACP,6BAA6B;wBAC7B,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,gxCAAA,EAAA;yFAGP,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MEPU,kBAAkB,CAAA;IAI7B,QAAQ,GAAA;;IAER;8GANW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd/B,+UAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGI,OAAO,mHACP,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIb,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EAEnB;wBACP,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,+UAAA,EAAA;8BAGP,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;MEVU,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAmB,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAAqB;8GAD7C,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCSY,mBAAmB,CAAA;AAK9B,IAAA,QAAQ,KAAU;IAElB,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAChF,YAAA,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;YACpD;QACF;AAEA,QAAA,MAAM,MAAM,GAAkB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,IAAI;QAE/F,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;YACnC;QACF;QAEA,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IACtC;8GAtBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,iJCdhC,qLAOA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAGlB;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,qLAAA,EAAA;8BAGP,OAAO,EAAA,CAAA;sBAAf;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MENU,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,UAAU,GAAqB;AAC7B,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE;SACvD;AAWF,IAAA;AATC,IAAA,wBAAwB,CAAC,IAAY,EAAA;;AAEnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI;QACb;QACA,OAAO,OAAO,CAAC,SAAS;;IAE1B;8GAbW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCoBY,gBAAgB,CAAA;AAM3B,IAAA,WAAA,CACU,cAAqC,EACrC,wBAAkD,EACnD,iBAA0C,EAAA;QAFzC,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACzB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IACvB;IAEH,eAAe,GAAA;;AAEb,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CACzD,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB;YACD,IAAI,CAAC,MAAM,EAAE;gBACX;YACF;AACA,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB;YACzD,gBAAgB,CAAC,KAAK,EAAE;YACxB,MAAM,eAAe,GACnB,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,MAAM,CAAC;YAC/D,MAAM,YAAY,GAChB,gBAAgB,CAAC,eAAe,CAAC,eAAe,CAAC;YACnD,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;YAC5C,YAAY,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YAChD,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACtC,YAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAChD;;IAEF;8GAjCW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKhB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnC5B,+wBAoBA,4CDII,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,6BAA6B,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAEhB;wBACP,OAAO;wBACP,6BAA6B;wBAC7B;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,+wBAAA,EAAA;iKAGP,IAAI,EAAA,CAAA;sBAAZ;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAC8C,UAAU,EAAA,CAAA;sBAAxD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MEJlC,qBAAqB,CAAA;AAMhC,IAAA,WAAA,CAAoB,iBAA0C,EAAA;QAA1C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACnC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAe;IACxE;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACtE;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACvE;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACpC;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;IACtC;IAEA,QAAQ,GAAA;;;;AAIN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACpC;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;IACvC;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE;YACtD;QACF;AAEA,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS;AAC1C,gBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY;QACnD;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACjC;IACF;AAEA,IAAA,UAAU,CAAC,OAAqB,EAAA;QAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;IAC7D;8GA1DW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,iPC/BlC,wqBAkBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMI,uBAAuB,EAAA,QAAA,EAAA,6DAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,OAAO,oFAEP,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EAEtB;wBACP,uBAAuB;wBACvB,OAAO;wBACP,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,wqBAAA,EAAA;yFAKP,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACyB,eAAe,EAAA,CAAA;sBAAxC,SAAS;uBAAC,aAAa;;;MExBb,kBAAkB,CAAA;AAR/B,IAAA,WAAA,GAAA;QASE,IAAA,CAAA,eAAe,GAAc,IAAI,SAAS,CAAC;;YAEzC,OAAO,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;;AAElD,SAAA,CAAC;AAaH,IAAA;IARC,WAAW,GAAA;AACT,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAe;QACjE,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;IACnD;8GAjBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ/B,kpBAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIV,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EAEnB;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,kpBAAA,EAAA;8BASP,SAAS,EAAA,CAAA;sBAAjB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MENU,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd1B,2YAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDI,qBAAqB,+FACrB,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIT,aAAa,EAAA,UAAA,EAAA,CAAA;kBATzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,OAAA,EAEb;wBACP,qBAAqB;wBACrB;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,2YAAA,EAAA;8BAGP,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;AEhBH,IAAY,cAIX;AAJD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EAJW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;AAUnB,MAAM,uBAAuB,GAAG,cAAc,CAAC,IAAI;;MCQ7C,eAAe,CAAA;AAV5B,IAAA,WAAA,GAAA;AAWE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,WAAW,EAAE;AAgBjC,IAAA;IAXC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACnC,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACtB,aAAA,SAAS,CAAC,CAAC,KAAa,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnE;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QACjC;IACF;8GAhBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,sGClB5B,y3BAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDbI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,kBAAkB,2FAClB,OAAO,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIE,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EAEf;wBACP,mBAAmB;wBACnB,kBAAkB;wBAClB;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,y3BAAA,EAAA;8BAMP,MAAM,EAAA,CAAA;sBAAd;;;MEZU,mBAAmB,CAAA;IAI9B,uBAAuB,GAAA;QACrB,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,cAAc,CAAC,eAAe;IAC7D;8GANW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,yICVhC,4KAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDMa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,IAAI,EAAA,QAAA,EAAA,4KAAA,EAAA;8BAGT,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MEEU,4BAA4B,CAAA;8GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdzC,qHAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOI,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBATxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAAA,OAAA,EAG7B;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,qHAAA,EAAA;8BAGP,SAAS,EAAA,CAAA;sBAAjB;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MEOU,iBAAiB,CAAA;AAX9B,IAAA,WAAA,GAAA;QAeW,IAAA,CAAA,cAAc,GAAG,cAAc;AAExC,QAAA,IAAA,CAAA,KAAK,GAAmB;AACtB,YAAA,WAAW,EAAE,uBAAuB;SACrC;AASF,IAAA;IAPC,iBAAiB,GAAA;QACf,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,eAAe;IACzD;IAEA,mBAAmB,GAAA;QACjB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW;IACrD;8GAhBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB9B,uyCAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBI,IAAI,6FACJ,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,mBAAmB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,4BAA4B,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAInB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAElB;wBACP,IAAI;wBACJ,eAAe;wBACf,mBAAmB;wBACnB;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,uyCAAA,EAAA;8BAGP,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MEAU,kBAAkB,CAAA;AAI7B,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;IAC/B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;IAC5B;;;;AAMA,IAAA,qBAAqB,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;IAC/B;8GAlBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,+GCzB/B,20CA+BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBI,wBAAwB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,uBAAuB,EAAA,QAAA,EAAA,6DAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,kBAAkB,6FAClB,aAAa,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,iBAAiB,6FACjB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIK,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAElB;wBACP,wBAAwB;wBACxB,uBAAuB;wBACvB,OAAO;wBACP,kBAAkB;wBAClB,aAAa;wBACb,kBAAkB;wBAClB,iBAAiB;wBACjB;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,20CAAA,EAAA;wDAKP,SAAS,EAAA,CAAA;sBAAjB;;;MEtBU,oBAAoB,CAAA;AAHjC,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,UAAU,GAAqB,EAAE;AAWlC,IAAA;AATC,IAAA,wBAAwB,CAAC,IAAY,EAAA;;AAEnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI;QACb;QACA,OAAO,OAAO,CAAC,SAAS;;IAE1B;8GAXW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCqBY,uBAAuB,CAAA;AAKlC,IAAA,WAAA,CACU,cAAoC,EACpC,wBAAkD,EACnD,iBAA0C,EACzC,EAAqB,EAAA;QAHrB,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACzB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAChB,IAAA,CAAA,EAAE,GAAF,EAAE;IACT;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACnB,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;IAEA,eAAe,GAAA;;QAEb,IAAI,OAAO,GAAG,EAAE;QAChB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YACvC;QACF;AACA,QAAA,IAAI;YACF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBACjC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACvC,IAAI,OAAO,EAAE;wBACX,OAAO,IAAI,QAAQ;oBACrB;AACA,oBAAA,OAAO,IAAI,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBAChD;YACF;AACA,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACxB;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QAC7C;;IAEF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;AAEvB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACrB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CACzD,IAAI,CAAC,KAAK,CAAC,MAAM,CAClB;YACD,IAAI,CAAC,MAAM,EAAE;gBACX;YACF;AACA,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB;YACzD,gBAAgB,CAAC,KAAK,EAAE;YACxB,MAAM,eAAe,GACnB,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,MAAM,CAAC;YAC/D,MAAM,YAAY,GAChB,gBAAgB,CAAC,eAAe,CAAC,eAAe,CAAC;YACnD,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;YACxC,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACxC,YAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAChD;;IAEF;8GA7DW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIvB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9B5B,o7BAoBA,4CDAI,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EAExB;wBACP,eAAe;wBACf,IAAI;wBACJ;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,o7BAAA,EAAA;gMAKP,KAAK,EAAA,CAAA;sBAAb;gBAC8C,UAAU,EAAA,CAAA;sBAAxD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MEblC,oCAAoC,CAAA;AAE/C,IAAA,WAAA,CAAmB,iBAA0C,EAAA;QAA1C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAA4B;8GAFrD,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,gICjBjD,mtDAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtBI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEJ,uBAAuB,gFACvB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIA,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAXhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sCAAsC,EAAA,OAAA,EAEvC;wBACP,IAAI;wBAEJ,uBAAuB;wBACvB;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,mtDAAA,EAAA;yFAGP,OAAO,EAAA,CAAA;sBAAf;;;MEIU,4CAA4C,CAAA;IAIvD,WAAA,CACS,iBAA0C,EAC1C,oBAA0C,EAAA;QAD1C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;IAC1B;IAEH,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1C;IAEA,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IACtC;8GAhBW,4CAA4C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5C,4CAA4C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBzD,smCAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTI,oCAAoC,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAM3B,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAVxD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6CAA6C,EAAA,OAAA,EAE9C;wBACP,oCAAoC;wBACpC,IAAI;wBACJ;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,smCAAA,EAAA;yHAGP,SAAS,EAAA,CAAA;sBAAjB;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MERU,6BAA6B,CAAA;8GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB1C,8cAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAI,4CAA4C,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAInC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBARzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EAEzB;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,8cAAA,EAAA;8BAGP,eAAe,EAAA,CAAA;sBAAvB;;;MELU,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZxC,qnBAcA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIK,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAE5B;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,qnBAAA,EAAA;8BAGA,YAAY,EAAA,CAAA;sBAA3B;;;MECU,uBAAuB,CAAA;AAVpC,IAAA,WAAA,GAAA;QAaqB,IAAA,CAAA,IAAI,GAAG,IAAI;AAC/B,IAAA;8GAJY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdpC,stBAeA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNI,OAAO,2EACP,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIK,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EAGxB;wBACP,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,stBAAA,EAAA;8BAGP,KAAK,EAAA,CAAA;sBAAb;;;MEDU,cAAc,CAAA;AAIzB,IAAA,kBAAkB,CAAC,OAAgB,EAAA;QACjC,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;QACxB;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;QAC5B;IACF;8GAVW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd3B,krCAiCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxBI,OAAO,2EACP,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EAEd;wBACP,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,krCAAA,EAAA;8BAGP,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;MEDU,oBAAoB,CAAA;IAG/B,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC;IACnD;8GALW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,0GCfjC,qWAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDI,OAAO,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,oFACP,cAAc,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIL,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAErB;wBACP,OAAO;wBACP,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,qWAAA,EAAA;8BAGP,KAAK,EAAA,CAAA;sBAAb;;;MEAU,qBAAqB,CAAA;AAGhC,IAAA,WAAA,GAAA,EAAe;8GAHJ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,wHChBlC,q1BAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfI,2BAA2B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,uBAAuB,qFACvB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAErB;wBACP,2BAA2B;wBAC3B,uBAAuB;wBACvB;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,q1BAAA,EAAA;wDAGP,YAAY,EAAA,CAAA;sBAApB;;;MEMU,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB9B,o8BAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXI,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,KAAK,6VACL,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EAEZ;wBACP,UAAU;wBACV,gBAAgB;wBAChB,OAAO;wBACP,MAAM;wBACN,KAAK;wBACL;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,o8BAAA,EAAA;8BAGA,MAAM,EAAA,CAAA;sBAArB;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;MEFU,uBAAuB,CAAA;AAbpC,IAAA,WAAA,GAAA;QAiBE,IAAA,CAAA,iBAAiB,GAAY,IAAI;QACjC,IAAA,CAAA,qBAAqB,GAAY,IAAI;AAKtC,IAAA;IAHC,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB;IAClD;8GATW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBpC,wnDA8CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhCI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,wBAAwB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,6BAA6B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,qBAAqB,yFACrB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIR,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAbnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAElB;wBACP,OAAO;wBACP,wBAAwB;wBACxB,kBAAkB;wBAClB,6BAA6B;wBAC7B,qBAAqB;wBACrB;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,wnDAAA,EAAA;8BAGP,KAAK,EAAA,CAAA;sBAAb;gBACe,gBAAgB,EAAA,CAAA;sBAA/B;;;MEWU,gBAAgB,CAAA;AAI3B,IAAA,WAAA,CACU,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;IACX;AAEH,IAAA,IAAI,CAAC,IAAoB,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB;IAC3D;AAEA,IAAA,MAAM,CAAC,WAAuC,EAAA;QAC5C,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAuB,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,WAAW;AACvH,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD;AAEA,IAAA,MAAM,CAAC,WAAuC,EAAA;QAC5C,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAuB,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC7H;AAEA,IAAA,cAAc,CAAC,WAA+C,EAAA;QAC5D,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAA+B,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;IAC7I;AAEA,IAAA,aAAa,CAAC,WAA8C,EAAA;QAC1D,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAA8B,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC;IAC3I;8GAhCW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCAY,eAAe,CAAA;AAoB1B,IAAA,WAAA,CACmB,WAAwB,EACxB,MAAc,EACxB,WAA6B,EAAA;QAFnB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;AAtBJ,QAAA,IAAA,CAAA,UAAU,GAA6C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAgC;YAC3H,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;AAC7C,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE;aACX,EACD;gBACE,UAAU,EAAE,CAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK;aACpD,CAAC;YACF,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;AAC7C,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE;aACX,EAAE,EAAE,UAAU,EAAE,CAAE,UAAU,CAAC,QAAQ,CAAE,EAAC,CAAC;YAC1C,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;AACtD,SAAA,CAAC;QAEiB,IAAA,CAAA,iBAAiB,GAAG,iBAAiB;QACjD,IAAA,CAAA,cAAc,GAAY,KAAK;QAC/B,IAAA,CAAA,eAAe,GAAW,EAAE;QAOjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB;IACvE;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAwB;IAC/D;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAwB;IAC/D;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAyB;IAChE;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACzB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAClD,iBAAA,SAAS,CAAC;gBACT,IAAI,GAAG,MAAK;AACV,oBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;oBAC7F,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,CAAC,CAAC;AACF,gBAAA,KAAK,GAAG,CAAC,KAAsB,KAAI;AACjC,oBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;oBAClB,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;oBACxD,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,CAAC,CAAC;gBACF,QAAQ,GAAG,MAAK;oBACd,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,CAAC;AACF,aAAA,CAAC;QACN;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAClC;IACF;AAEQ,IAAA,8BAA8B,CAAC,OAAe,EAAE,CAAA,GAAY,CAAC,EAAA;AACnE,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO;QAE9B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AAC3B,QAAA,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACf;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;IAC9B;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;IAC7B;8GAnFW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnC5B,qjGAoFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/DI,gBAAgB,2PAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,UAAU,2GACV,QAAQ,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,eAAe,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAEhB;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,UAAU;wBACV,YAAY;wBACZ,UAAU;wBACV,SAAS;wBACT,QAAQ;wBACR,UAAU;wBACV,QAAQ;wBACR,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,qjGAAA,EAAA;;;ME5BL,YAAY,CAAA;AAEvB,IAAA,WAAA,GAAA;IACA;IAEO,OAAO,oBAAoB,CAAmB,GAAM,EAAA;QACzD,IAAI,GAAG,EAAE;AACP,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAyB,CAAC,MAAM,EAAE,KAAK,KAAI;AACvE,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK;AACrB,gBAAA,OAAO,MAAM;YACf,CAAC,EAAE,EAAE,CAAC;QACR;AACA,QAAA,OAAO,EAAE;IACX;8GAbW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCFY,wBAAwB,CAAA;AACnC;;;AAGG;IACH,OAAO,WAAW,CAAC,OAAwB,EAAA;QACzC,MAAM,aAAa,GAA2B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACrE,MAAM,yBAAyB,GAA2B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;AAE7F,QAAA,IAAI,CAAC,aAAa,IAAI,CAAE,yBAAyB,EAAE;AACjD,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;QAC3E;AAEA,QAAA,MAAM,QAAQ,GAAW,aAAa,CAAC,WAAW,EAAY;AAC9D,QAAA,MAAM,oBAAoB,GAAW,yBAAyB,CAAC,WAAW,EAAY;AAEtF,QAAA,IAAI,QAAQ,KAAK,oBAAoB,EAAE;YACrC,OAAO;AACL,gBAAA,eAAe,EAAE;aAClB;QACH;AAEA,QAAA,OAAO,IAAI;IACb;AACD;;MCWY,eAAe,CAAA;AAQ1B,IAAA,WAAA,CACmB,WAAwB,EACxB,MAAc,EACvB,WAA6B,EAAA;QAFpB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;QAPd,IAAA,CAAA,cAAc,GAAY,KAAK;QAC/B,IAAA,CAAA,cAAc,GAAW,EAAE;QAC3B,IAAA,CAAA,YAAY,GAAW,EAAE;QAqEb,IAAA,CAAA,iBAAiB,GAAG,iBAAiB;QA9DtD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAgC;YACtE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5F,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtG,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACjD,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC;AACvB;aACF,CAAC;AACF,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI;AACxD,gBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,YAAY;aACrC,CAAC;SACH,EAAE,EAAE,UAAU,EAAE,CAAE,wBAAwB,CAAC,WAAW,CAAE,EAAE,CAAC;AAC5D,QAAA,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACtF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB;IACvE;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAwB;IAC5D;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAwB;IAC/D;AAEA,IAAA,IAAI,yBAAyB,GAAA;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,sBAAsB,CAAwB;IAC3E;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAyB;IAC7D;IAEO,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;AAElC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;YACxB,MAAM,UAAU,GAAe,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAE5D,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACtB,KAAK,EAAE,UAAU,CAAC,KAAM;gBACxB,QAAQ,EAAE,UAAU,CAAC,QAAS;gBAC9B,KAAK,EAAE,UAAU,CAAC;aACW,CAAC,CAAC,SAAS,CAAC;AACzC,gBAAA,IAAI,EAAE,CAAC,QAA8B,KAAI;AACvC,oBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,oBAAA,IAAI,CAAC,cAAc,GAAG,+CAA+C;AACrE,oBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACnG,oBAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,QAAQ,CAAC;gBACvD,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;oBAC3B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,8CAA8C;AAC1F,oBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC;gBACnD;AACD,aAAA,CAAC;QACJ;IACF;8GAzEW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrC5B,g+LA+IA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxHI,gBAAgB,2PAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,UAAU,2GACV,QAAQ,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,eAAe,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAEhB;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,UAAU;wBACV,YAAY;wBACZ,UAAU;wBACV,SAAS;wBACT,QAAQ;wBACR,UAAU;wBACV,QAAQ;wBACR,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,g+LAAA,EAAA;;;MEJL,uBAAuB,CAAA;AAQlC,IAAA,WAAA,CACmB,WAAwB,EACxB,MAAc,EACvB,WAA6B,EAAA;QAFpB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;QAVd,IAAA,CAAA,SAAS,GAAY,KAAK;QAC1B,IAAA,CAAA,cAAc,GAAW,EAAE;QAC3B,IAAA,CAAA,YAAY,GAAW,EAAE;QA8Cb,IAAA,CAAA,iBAAiB,GAAG,iBAAiB;QApCtD,IAAI,CAAC,SAAS,GAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAwC;YAC5E,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;AACzG,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC7F,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB;IACvE;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAwB;IAC3D;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;AAEjC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK;YAEhD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,KAAK,EAAwC,CAAC,CAAC,SAAS,CAAC;AACzF,gBAAA,IAAI,EAAE,CAAC,QAAsC,KAAI;AAC/C,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;oBACtB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,OAAO,IAAI,yCAAyC;AACnF,oBAAA,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,QAAQ,CAAC;AAC/D,oBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBACrG,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;oBACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,uDAAuD;AACnG,oBAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC;gBAC5D;AACD,aAAA,CAAC;QACJ;IACF;8GA/CW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,iFC/BpC,gjFA0EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvDI,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,mBAAmB,g+BACnB,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,UAAU,8GACV,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,OAAO,yPACP,eAAe,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAhBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EAExB;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,UAAU;wBACV,YAAY;wBACZ,UAAU;wBACV,SAAS;wBACT,UAAU;wBACV,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,gjFAAA,EAAA;;;AE7BlB,IAAY,YAOX;AAPD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,YAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,YAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACzC,CAAC,EAPW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;ACAjB,MAAM,gBAAgB,GAAG;AAC9B,IAAA,iBAAiB,EAAE,CAAC;AACpB,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,gBAAgB,EAAE,OAAO;AACzB,IAAA,gBAAgB,EAAE,YAAY;AAC9B,IAAA,sBAAsB,EAAE,YAAY;AACpC,IAAA,oBAAoB,EAAE,kBAAkB;CACzC;;MCyBY,sBAAsB,CAAA;AAajC,IAAA,WAAA,CACU,WAAwB,EACxB,KAAqB,EACZ,MAAc,EACvB,WAA6B,EAAA;QAH7B,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,KAAK,GAAL,KAAK;QACI,IAAA,CAAA,MAAM,GAAN,MAAM;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;QAhBd,IAAA,CAAA,SAAS,GAAY,KAAK;QAC1B,IAAA,CAAA,cAAc,GAAW,EAAE;QAC3B,IAAA,CAAA,YAAY,GAAW,EAAE;AAGzB,QAAA,IAAA,CAAA,YAAY,GAA6C;AAC9D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,eAAe,EAAE;SAClB;QAmFkB,IAAA,CAAA,YAAY,GAAG,YAAY;QAC3B,IAAA,CAAA,iBAAiB,GAAG,iBAAiB;QA1EtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC9C,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAC,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;AACxJ,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAC,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;SAChK,EAAE,EAAC,UAAU,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAC,CAAC;AACjD,QAAA,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACvF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB;IAC7D;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAwB;IACtE;AAEA,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAwB;IAC7E;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IAClD;IAEO,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;AAEzC,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;AAEvD,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;gBAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,eAAe,EAAE,UAAU,CAAC,eAAe;gBAC3C,KAAK,EAAE,IAAI,CAAC;aACwB,CAAC,CAAC,SAAS,CAAC;AAChD,gBAAA,IAAI,EAAE,CAAC,QAAqC,KAAI;AAC9C,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;oBACtB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,OAAO,IAAI,8BAA8B;AACxE,oBAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,QAAQ,CAAC;AACpD,oBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBACrG,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;oBACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,6CAA6C;AACzF,oBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC;gBAClD;AACD,aAAA,CAAC;QACJ;IACF;IAEQ,sBAAsB,GAAA;;QAE5B,OAAO,CAAC,IAAqD,KAA6B;AACxF,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;AACpC,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe;AAClD,YAAA,IAAI,QAAQ,KAAK,eAAe,EAAE;gBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE;AAChC,oBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAC,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI,EAAC,CAAC;gBAC5E;gBACA,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE;AACvC,oBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,EAAC,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI,EAAC,CAAC;gBACnF;gBACA,OAAO,EAAC,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI,EAAC;YACjD;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE;gBACnE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;YACxC;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE;gBAC1E,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;YAC/C;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC;IACH;8GA1FW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,gFChCnC,mgHA0FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrEI,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,UAAU,8GACV,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,OAAO,yPACP,eAAe,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAflC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EAEvB;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,YAAY;wBACZ,UAAU;wBACV,QAAQ;wBACR,UAAU;wBACV,OAAO;wBACP;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,mgHAAA,EAAA;;;MEhBL,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdnC,s/TA8IA,EAAA,MAAA,EAAA,CAAA,qxKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrII,YAAY,uIACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIJ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EAGvB;wBACP,YAAY;wBACZ;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,s/TAAA,EAAA,MAAA,EAAA,CAAA,qxKAAA,CAAA,EAAA;;;MEYL,kBAAkB,CAAA;AAK7B,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAA,CAAA,WAAW,GAAX,WAAW;QAF9B,IAAA,CAAA,eAAe,GAAoF,SAAS;QAG1G,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAEpD,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE;AACrF,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS;QAClC;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE;AAC5F,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS;QAClC;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,EAAE;AACpG,YAAA,IAAI,CAAC,eAAe,GAAG,iBAAiB;QAC1C;AAAO,aAAA,IACL,MAAM,CAAC,QAAQ,CAAC;AACf,aAAA,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAC9E;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,gBAAgB;QACzC;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,EAAE;AACnG,YAAA,IAAI,CAAC,eAAe,GAAG,gBAAgB;QACzC;IACF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;8GA1BW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxB/B,0nBAmBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJI,eAAe,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,sBAAsB,iEACtB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIK,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,OAAA,EAEb;wBACP,eAAe;wBACf,eAAe;wBACf,uBAAuB;wBACvB,sBAAsB;wBACtB,sBAAsB;wBACtB;AACD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,0nBAAA,EAAA;kFAGP,IAAI,EAAA,CAAA;sBAAZ;;;MEjBU,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,gFCRpC,kCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,IAAI,EAAA,QAAA,EAAA,kCAAA,EAAA;;;MECP,mCAAmC,CAAA;8GAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,6FCPhD,+CACA,EAAA,CAAA,CAAA;;2FDMa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,cAEjC,IAAI,EAAA,QAAA,EAAA,+CAAA,EAAA;;;MEEP,cAAc,CAAA;AACzB,IAAA,WAAA,CAAoB,IAAgC,EAAA;QAAhC,IAAA,CAAA,IAAI,GAAJ,IAAI;IAA+B;IAEvD,eAAe,GAAA;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY;QACpD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAoC,EAAE,MAAM,CAAC;IAC/D;8GANW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCCY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,yECP7B,yBACA,EAAA,CAAA,CAAA;;2FDMa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAEb,IAAI,EAAA,QAAA,EAAA,yBAAA,EAAA;;;MEyHP,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YA/DpB,kBAAkB;YAClB,gBAAgB;YAChB,uBAAuB;YACvB,eAAe;YACf,eAAe;YACf,oCAAoC;YACpC,uBAAuB;YACvB,cAAc;YACd,4BAA4B;YAC5B,mBAAmB;YACnB,mBAAmB;YACnB,eAAe;YACf,mCAAmC;YACnC,sBAAsB;YACtB,4CAA4C;YAC5C,uBAAuB;YACvB,aAAa;YACb,gBAAgB;YAChB,qBAAqB;YACrB,sBAAsB;YACtB,kBAAkB;YAClB,6BAA6B;YAC7B,kBAAkB;YAClB,sBAAsB;YACtB,uBAAuB;YACvB,wBAAwB;YACxB,kBAAkB;YAClB,sBAAsB;YACtB,sBAAsB;YACtB,wBAAwB;YACxB,kBAAkB;YAClB,gBAAgB;YAChB,iBAAiB;YACjB,6BAA6B;YAC7B,kBAAkB;YAClB,eAAe;YACf,qBAAqB;YACrB,oBAAoB;YACpB,cAAc;YACd,uBAAuB;YACvB,2BAA2B;YAC3B,YAAY;YACZ,mBAAmB;YACnB,cAAc;YACd,oBAAoB;YACpB,WAAW;YACX,gBAAgB;YAChB,UAAU;YACV,gBAAgB;AAChB,YAAA,gBAAgB,aAGhB,wBAAwB;YACxB,kBAAkB;YAClB,6BAA6B;YAC7B,uBAAuB;YACvB,qBAAqB;YACrB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAMT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAAA,SAAA,EAzEX;AACT,YAAA,sBAAsB,EAAE;AACxB,YAAA,cAAc,CAAC;AACb,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE;AACT;aACF;AACF,SAAA,EAAA,OAAA,EAAA,CAGC,kBAAkB;YAElB,uBAAuB;YACvB,eAAe;YACf,eAAe;YAIf,4BAA4B;YAK5B,sBAAsB;YAGtB,aAAa;YAIb,kBAAkB;YAElB,kBAAkB;YAElB,uBAAuB;YACvB,wBAAwB;YAGxB,sBAAsB;YAItB,iBAAiB;YAGjB,eAAe;YAMf,YAAY;YACZ,mBAAmB;YACnB,cAAc;YACd,oBAAoB;YACpB,WAAW;YAIX,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAcP,WAAW,EAAA,UAAA,EAAA,CAAA;kBA1EvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA,sBAAsB,EAAE;AACxB,wBAAA,cAAc,CAAC;AACb,4BAAA,KAAK,EAAE;AACL,gCAAA,MAAM,EAAE;AACT;yBACF;AACF,qBAAA;AACD,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,gBAAgB;wBAChB,uBAAuB;wBACvB,eAAe;wBACf,eAAe;wBACf,oCAAoC;wBACpC,uBAAuB;wBACvB,cAAc;wBACd,4BAA4B;wBAC5B,mBAAmB;wBACnB,mBAAmB;wBACnB,eAAe;wBACf,mCAAmC;wBACnC,sBAAsB;wBACtB,4CAA4C;wBAC5C,uBAAuB;wBACvB,aAAa;wBACb,gBAAgB;wBAChB,qBAAqB;wBACrB,sBAAsB;wBACtB,kBAAkB;wBAClB,6BAA6B;wBAC7B,kBAAkB;wBAClB,sBAAsB;wBACtB,uBAAuB;wBACvB,wBAAwB;wBACxB,kBAAkB;wBAClB,sBAAsB;wBACtB,sBAAsB;wBACtB,wBAAwB;wBACxB,kBAAkB;wBAClB,gBAAgB;wBAChB,iBAAiB;wBACjB,6BAA6B;wBAC7B,kBAAkB;wBAClB,eAAe;wBACf,qBAAqB;wBACrB,oBAAoB;wBACpB,cAAc;wBACd,uBAAuB;wBACvB,2BAA2B;wBAC3B,YAAY;wBACZ,mBAAmB;wBACnB,cAAc;wBACd,oBAAoB;wBACpB,WAAW;wBACX,gBAAgB;wBAChB,UAAU;wBACV,gBAAgB;wBAChB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,kBAAkB;wBAClB,6BAA6B;wBAC7B,uBAAuB;wBACvB,qBAAqB;wBACrB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,sBAAsB;AACvB;AACF,iBAAA;;;AC7HD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"rtsee-ngx.mjs","sources":["../../../projects/ngx/src/lib/ngx.service.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.html","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.ts","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.html","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.ts","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.html","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.ts","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.html","../../../projects/ngx/src/lib/components/rtsee/rtsee-conference.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-conference.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.html","../../../projects/ngx/src/lib/services/default-images.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.html","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.ts","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.html","../../../projects/ngx/src/lib/services/time-format-helper.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.html","../../../projects/ngx/src/lib/directives/widget.directive.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.html","../../../projects/ngx/src/lib/services/message-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/models/MainMenuState.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.html","../../../projects/ngx/src/lib/services/events-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-header/presentation-header.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-header/presentation-header.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/story-thumbnail/story-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/story-thumbnail/story-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/slide/slide.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/slide/slide.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/story-player/story-player.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/story-player/story-player.component.html","../../../projects/ngx/src/lib/common/components/cropper/cropper.component.ts","../../../projects/ngx/src/lib/common/components/cropper/cropper.component.html","../../../projects/ngx/src/lib/common/components/uploader/uploader.component.ts","../../../projects/ngx/src/lib/common/components/uploader/uploader.component.html","../../../projects/ngx/src/lib/common/components/image-uploader/image-uploader.component.ts","../../../projects/ngx/src/lib/common/components/image-uploader/image-uploader.component.html","../../../projects/ngx/src/lib/common/components/autocomplete/autocomplete.component.ts","../../../projects/ngx/src/lib/common/components/autocomplete/autocomplete.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slides/manage-slides.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slides/manage-slides.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slide/manage-slide.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slide/manage-slide.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-story.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-story.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-stories/manage-stories.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-stories/manage-stories.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-category/manage-category.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-category/manage-category.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-categories/manage-categories.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-categories/manage-categories.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-label/manage-label.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-label/manage-label.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-labels/manage-labels.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-labels/manage-labels.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/presentations-dashboard/presentations-dashboard.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/presentations-dashboard/presentations-dashboard.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation/presentation.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation/presentation.component.html","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-nav/rtsee-nav.component.ts","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-nav/rtsee-nav.component.html","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.ts","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/services/auth.service.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-in/sign-in.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-in/sign-in.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/services/utils.service.ts","../../../projects/ngx/src/lib/components/rtsee-auth/validators/form-fields-validators.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-up/sign-up.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-up/sign-up.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/forgot-password/forgot-password.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/forgot-password/forgot-password.component.html","../../../projects/ngx/src/lib/components/enums/form.enum.ts","../../../projects/ngx/src/lib/components/constans/common.const.ts","../../../projects/ngx/src/lib/components/rtsee-auth/reset-password/reset-password.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/reset-password/reset-password.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/privacy-policy/privacy-policy.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/privacy-policy/privacy-policy.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/auth/auth.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/auth/auth.component.html","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.html","../../../projects/ngx/src/lib/directives/shave.directive.ts","../../../projects/ngx/src/lib/components/rtsee-auth/vendors/vendors.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/vendors/vendors.component.html","../../../projects/ngx/src/lib/ngx.module.ts","../../../projects/ngx/src/public-api.ts","../../../projects/ngx/src/rtsee-ngx.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxService {\n lol: string;\n constructor() {\n this.lol = 'lol';\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport { NgClass } from \"@angular/common\";\n\n@Component({\n selector: 'ngx-rtsee-controls',\n templateUrl: './rtsee-controls.component.html',\n styleUrls: ['./rtsee-controls.component.scss'],\n imports: [\n NgClass\n ],\n standalone: true\n})\nexport class RTSeeControlsComponent {\n @Input() rtsee!: RTSeeConference;\n @Input() fullScreenMode?: boolean;\n\n onPresentClicked() {\n return this.rtsee.isPresenter\n ? this.rtsee.stopScreenShare()\n : this.rtsee.startScreenShare();\n }\n}\n","<div class=\"rtsee-controls\" [ngClass]=\"{'rtsee-full-screen-controls' : fullScreenMode }\">\n <div class=\"rtsee-bottom-panel\">\n <div class=\"mic rtsee-buttons-container\">\n @if (rtsee.microphone) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"this.rtsee.disableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_none</span>\n </button>\n }\n @if (!rtsee.microphone) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\" (click)=\"this.rtsee.enableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_off</span>\n </button>\n }\n </div>\n\n <div class=\"video-camera rtsee-buttons-container\">\n @if (rtsee.camera) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.disableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam</span>\n </button>\n }\n @if (!rtsee.camera) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.enableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam_off</span>\n </button>\n }\n </div>\n <div class=\"present rtsee-buttons-container\"\n [ngClass]=\"{'rtsee-present-button-container': rtsee.isPresenter}\"\n >\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"onPresentClicked()\"\n >\n <span class=\"material-icons-outlined\">present_to_all</span>\n </button>\n </div>\n <div class=\"call-end rtsee-buttons-container\">\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.end()\"\n >\n <span class=\"material-icons-outlined\">call_end</span>\n </button>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport {NgClass, NgForOf} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\n\n@Component({\n selector: 'ngx-rtsee-settings',\n templateUrl: './rtsee-settings.component.html',\n styleUrls: ['./rtsee-settings.component.scss'],\n imports: [\n NgClass,\n FormsModule,\n NgForOf\n ],\n standalone: true\n})\nexport class RtseeSettingsComponent implements OnInit {\n availableAudioInputDevices: MediaDeviceInfo[];\n availableVideoInputDevices: MediaDeviceInfo[];\n availableAudioOutputDevices: MediaDeviceInfo[];\n\n audioOutputDeviceId?: string;\n videoInputDeviceId?: string;\n audioInputDeviceId?: string;\n\n @Input() rtSee!: RTSeeConference;\n @Input() fullScreenMode!: boolean;\n constructor() {\n this.availableAudioInputDevices = [];\n this.availableVideoInputDevices = [];\n this.availableAudioOutputDevices = [];\n }\n\n ngOnInit(): void {\n this.refreshSelectOptions();\n }\n\n refreshSelectOptions() {\n void this.rtSee.refreshMediaDevicesList();\n }\n\n audioInputChanged() {\n if (!this.audioInputDeviceId) { return; }\n this.rtSee.setAudioInputDevice(this.audioInputDeviceId);\n console.log(this.audioInputDeviceId);\n }\n\n audioOutputChanged() {\n if (!this.audioOutputDeviceId) { return; }\n this.rtSee.setAudioOutputDevice(this.audioOutputDeviceId);\n }\n\n videoInputChanged() {\n if (!this.videoInputDeviceId) { return; }\n this.rtSee.setVideoInputDevice(this.videoInputDeviceId);\n }\n}\n","<div class=\"rtsee-settings\" [ngClass]=\"{'rtsee-full-screen-settings' : fullScreenMode}\">\n <div class=\"rtsee-devices\">\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"audio-input\">Audio Input:</label>\n <select (click)=\"refreshSelectOptions()\"\n (ngModelChange)=\"audioInputChanged()\"\n [(ngModel)]=\"audioInputDeviceId\"\n class=\"rtsee-select\"\n id=\"audio-input\"\n >\n <option *ngFor=\"let device of rtSee.audioInputDevices\"\n [value]=\"device.deviceId\">\n {{device.label}}\n </option>\n </select>\n </div>\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"audio-output\">Audio Output:</label>\n <select (click)=\"refreshSelectOptions()\"\n (ngModelChange)=\"audioOutputChanged()\"\n [(ngModel)]=\"audioOutputDeviceId\"\n class=\"rtsee-select\"\n id=\"audio-output\"\n >\n <option *ngFor=\"let device of rtSee.audioOutputDevices\" [value]=\"device.deviceId\" >\n {{device.label}}\n </option>\n </select>\n </div>\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"video-input\">Video Input:</label>\n <select (click)=\"refreshSelectOptions()\"\n (ngModelChange)=\"videoInputChanged()\"\n [(ngModel)]=\"videoInputDeviceId\"\n class=\"rtsee-select\"\n id=\"video-input\"\n >\n <option *ngFor=\"let device of rtSee.videoInputDevices\" [value]=\"device.deviceId\">\n {{device.label}}\n </option>\n </select>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/conference';\nimport { interval } from 'rxjs';\n\n@Component({\n selector: 'ngx-rtsee-soundbar',\n templateUrl: './rtsee-soundbar.component.html',\n styleUrls: ['./rtsee-soundbar.component.scss'],\n standalone: true\n})\nexport class RtseeSoundbarComponent implements OnInit {\n intervalLength: number;\n noiceLevel: number;\n scaleOneLevel: number;\n scaleTwoLevel: number;\n scaleThreeLevel: number;\n\n @Input() peer!: RTSeePeerConnection;\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n ngOnInit(): void {\n this.startSoundMeterListening();\n }\n\n startSoundMeterListening() {\n const step = interval(1000 / 10);\n step.subscribe(() => {\n if (!this.peer.soundMeter || !this.peer.soundMeter.level) {\n this.noiceLevel = 0;\n } else {\n this.noiceLevel = this.peer.soundMeter?.level * 100 || 0;\n }\n\n this.setSoundMeterHeights();\n });\n }\n\n setSoundMeterHeights() {\n const ZERO_LEVEL = 25;\n const SCALE_STEP = 25;\n const SCALE_ONE_TOP = ZERO_LEVEL + SCALE_STEP;\n const SCALE_TWO_TOP = SCALE_ONE_TOP + SCALE_STEP;\n\n if (!this.peer || !this.peer.soundMeter || this.noiceLevel < ZERO_LEVEL) {\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n const scaleOneValue = ((this.noiceLevel - ZERO_LEVEL) / SCALE_STEP) * 100;\n const scaleTwoValue =\n ((this.noiceLevel - SCALE_ONE_TOP) / SCALE_STEP) * 100;\n const scaleThreeValue =\n ((this.noiceLevel - SCALE_TWO_TOP) / SCALE_STEP) * 100;\n\n this.scaleOneLevel = scaleOneValue > 0 ? scaleOneValue : 0;\n this.scaleTwoLevel = scaleTwoValue > 0 ? scaleTwoValue : 0;\n this.scaleThreeLevel = scaleThreeValue > 0 ? scaleTwoValue : 0;\n }\n}\n","<div class=\"rtsee-soundbar\">\n <div class=\"rtsee-soundbar-scale\">\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-one\"\n [style.height.%]=\"scaleOneLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-two\"\n [style.height.%]=\"scaleTwoLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-three\"\n [style.height.%]=\"scaleThreeLevel\"\n ></div>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/conference';\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {RtseeSoundbarComponent} from \"../rtsee-soundbar/rtsee-soundbar.component\";\n\n@Component({\n selector: 'ngx-rtsee-peer',\n templateUrl: './rtsee-peer.component.html',\n imports: [\n NgClass,\n NgIf,\n RtseeSoundbarComponent\n ],\n standalone: true\n})\nexport class RtseePeerComponent implements AfterViewInit {\n intervalLength: number;\n noiceLevel: number;\n\n @ViewChild('audioOutput') audioOutput?: ElementRef;\n @ViewChild('videoOutput') videoOutput?: ElementRef;\n @Input() peer!: RTSeePeerConnection;\n\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n }\n\n ngAfterViewInit(): void {\n if (!this.audioOutput) {\n return;\n }\n this.peer.setAudioOutputElement(\n this.audioOutput.nativeElement as HTMLAudioElement,\n );\n }\n}\n","<div class=\"rtsee-peer\" [ngClass]=\"{\n'rtsee-peer-video-disabled': !peer.remoteVideoStream || !peer.camera\n}\">\n <div class=\"rtsee-peer-content\">\n <div class=\"rtsee-peer-photo\" *ngIf=\"!peer.camera\">\n <div class=\"rtsee-peer-photo-wrapper\">\n <div *ngIf=\"peer.imageUrl\"\n [style.background-image]=\"'url(' + peer.imageUrl + ')'\"\n class=\"rtsee-peer-photo-image\"\n ></div>\n <img *ngIf=\"!peer.imageUrl\" [src]=\"\" alt=\"peer_photo\" class=\"rtsee-peer-photo-image\">\n </div>\n <div class=\"rtsee-peer-info\">\n <p class=\"rtsee-peer-name\" *ngIf=\"peer.name\">{{peer.name}}</p>\n </div>\n </div>\n <video #videoOutput\n class=\"rtsee-peer-video\"\n [autoplay]=\"true\"\n [srcObject]=\"peer.remoteVideoStream\"\n playsinline=\"true\"\n >\n </video>\n <div class=\"rtsee-peer-soundbar\">\n <ngx-rtsee-soundbar [peer]=\"peer\"></ngx-rtsee-soundbar>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {RtseeSettingsComponent} from \"../rtsee-settings/rtsee-settings.component\";\nimport {RtseePeerComponent} from \"../rtsee-peer/rtsee-peer.component\";\nimport {RTSeeControlsComponent} from \"./rtsee-controls/rtsee-controls.component\";\n\n@Component({\n selector: 'rtsee-conference',\n templateUrl: './rtsee-conference.component.html',\n imports: [\n NgClass,\n RtseeSettingsComponent,\n RtseePeerComponent,\n RTSeeControlsComponent\n ],\n standalone: true\n})\nexport class RTSeeConferenceComponent {\n settingsViewEnabled: boolean;\n\n @Input() rtSee!: RTSeeConference;\n constructor() {\n this.settingsViewEnabled = false;\n }\n\n toggleSettings() {\n this.settingsViewEnabled = !this.settingsViewEnabled;\n }\n\n toggleFullScreenMode() {\n this.rtSee.uiControls.toggle();\n }\n}\n","<div class=\"rtsee-conference-shell\" [ngClass]=\"{\n'rtsee-conference-shell-expanded': rtSee.uiControls.isExpanded,\n'rtsee-conference-shell-no-companions': !rtSee.rtcPeerConnections.connections?.length\n}\">\n @if (rtSee.localStream && rtSee.camera) {\n <div class=\"rtsee-local-peer\">\n <video class=\"rtsee-local-video\"\n [autoplay]=\"true\"\n [muted]=\"true\"\n [srcObject]=\"rtSee.localStream\"\n playsinline=\"true\"\n ></video>\n </div>\n }\n <div class=\"rtsee-window-controls\">\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleSettings()\"\n class=\"rtsee-window-controls-button rtsee-ripple-button\"\n >\n <span class=\"material-icons-outlined\">settings</span>\n </button>\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleFullScreenMode()\"\n class=\"rtsee-window-controls-button rtsee-ripple-button\"\n >\n <span class=\"material-icons-outlined\">open_in_full</span>\n </button>\n </div>\n @if (settingsViewEnabled) {\n <div class=\"rtsee-settings-container\">\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleSettings()\"\n class=\"rtsee-close-settings-button\"\n >\n <span class=\"material-icons-outlined\">close</span>\n </button>\n <ngx-rtsee-settings [rtSee]=\"rtSee\" [fullScreenMode]=\"rtSee.uiControls.isExpanded\"></ngx-rtsee-settings>\n </div>\n }\n @if (rtSee.screenSharePeer) {\n <div class=\"rtsee-screen-share\">\n <video [autoplay]=\"true\"\n [muted]=\"true\"\n [srcObject]=\"rtSee.screenSharePeer.remoteVideoStream\"\n playsinline=\"true\"\n class=\"rtsee-screen-share-video\"\n ></video>\n </div>\n }\n <div class=\"rtsee-peers\" [ngClass]=\"{\n 'rtsee-peers-alone': !rtSee.rtcPeerConnections.connections?.length,\n 'rtsee-peers-one': rtSee.rtcPeerConnections.connections?.length === 1,\n 'rtsee-peers-three-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 1\n && rtSee.rtcPeerConnections.connections.length < 4,\n 'rtsee-peers-six-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 3\n && rtSee.rtcPeerConnections.connections.length < 7,\n 'rtsee-peers-nine-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length >= 7\n }\">\n @for (peer of rtSee.rtcPeerConnections.connections; track peer.clientId) {\n <div class=\"rtsee-peer-wrapper\">\n <ngx-rtsee-peer [peer]=\"peer\"></ngx-rtsee-peer>\n </div>\n }\n </div>\n <div class=\"rtsee-peers-list\"></div>\n <div class=\"rtsee-controls-wrapper\">\n <ngx-rtsee-controls [rtsee]=\"rtSee\" [fullScreenMode]=\"rtSee.uiControls.isExpanded\"></ngx-rtsee-controls>\n </div>\n</div>\n\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-profile',\n templateUrl: './profile.component.html',\n standalone: true\n})\nexport class ProfileComponent {\n @Input() messenger!: RTSeeMessenger;\n\n call() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n\n videoCall() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n}\n","<div class=\"rtsee-messenger-profile\">\n <ul class=\"rtsee-messenger-profile-controls\">\n <li class=\"rtsee-messenger-profile-control\">\n <div class=\"rtsee-messenger-control-item\" (click)=\"call()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">call</span>\n </div>\n <span>Call</span>\n </div>\n </li>\n <li class=\"rtsee-messenger-profile-control\">\n <div class=\"rtsee-messenger-control-item\" (click)=\"videoCall()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">videocam</span>\n </div>\n <span>Video</span>\n </div>\n </li>\n </ul>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DefaultImagesService {\n PROFILE = 'https://werf-assets.s3.amazonaws.com/default-profile-logo.png';\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { DefaultImagesService } from '../../../services/default-images.service';\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {ProfileComponent} from \"../profile/profile.component\";\n\n@Component({\n selector: 'rtsee-messenger-header',\n templateUrl: './messenger-header.component.html',\n imports: [\n NgClass,\n NgIf,\n ProfileComponent\n ],\n standalone: true\n})\nexport class MessengerHeaderComponent {\n @Output() expandToggled = new EventEmitter();\n @Input() isExpanded?: boolean;\n @Input() messenger!: RTSeeMessenger;\n constructor(public defaultImagesService: DefaultImagesService) {\n this.isExpanded = false;\n this.expandToggled.emit(this.isExpanded);\n }\n\n toggleExpand() {\n this.isExpanded = !this.isExpanded;\n this.expandToggled.emit(this.isExpanded);\n }\n}\n","<div class=\"rtsee-messenger-header\"\n [ngClass]=\"{\n 'rtsee-messenger-header-chat-opened': messenger.openedChat,\n 'rtsee-chat-header-unread': messenger.openedChat && !messenger.unreadMessagesCount,\n 'rtsee-messenger-header-expanded': isExpanded\n }\"\n>\n <div class=\"rtsee-messenger-profile-image-container \">\n <div *ngIf=\"!messenger.openedChat\"\n [style.background-image]=\"'url(' + messenger.myPeer?.imageUrl || defaultImagesService.PROFILE + ')'\"\n class=\"rtsee-messenger-profile-image\">\n </div>\n </div>\n\n <button class=\"rtsee-messenger-close-chat\"\n *ngIf=\"messenger.openedChat\"\n (click)=\"messenger.closeChat()\"\n >\n <span class=\"material-icons-outlined\">arrow_back</span>\n <span class=\"unread-count\" *ngIf=\"messenger.unreadMessagesCount\">{{messenger.unreadMessagesCount}}</span>\n </button>\n\n <button class=\"rtsee-messenger-menu-toggle\"\n *ngIf=\"!messenger.openedChat && false\"\n (click)=\"messenger.openMainMenu(true)\"\n >\n <span class=\"material-icons-outlined rtsee-messenger-menu-toggle-icon\">menu</span>\n </button>\n <button class=\"rtsee-messenger-fold-toggle\"\n (click)=\"messenger.changeChatFoldState(!messenger.folded)\"\n >\n <span *ngIf=\"!messenger.folded\" class=\"material-icons-outlined rtsee-messenger-menu-toggle-icon\">expand_more</span>\n <span *ngIf=\"messenger.folded\" class=\"material-icons-outlined rtsee-messenger-menu-toggle-icon\">expand_less</span>\n </button>\n\n <div *ngIf=\"messenger.openedChat\"\n [ngClass]=\"{'rtsee-messenger-header-opened-chat-info-expanded': isExpanded}\"\n class=\"rtsee-messenger-header-opened-chat-info\">\n <div class=\"rtsee-messenger-profile-header-placeholder\">\n <p *ngIf=\"messenger.openedChat\"\n class=\"rtsee-messenger-header-chat-title\"\n >{{ messenger.openedChat.name }}</p>\n <div class=\"rtsee-messenger-profile-image-container\" (click)=\"toggleExpand()\">\n <div class=\"rtsee-messenger-profile-image\"\n [style.background-image]=\"'url(' + messenger.openedChat.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n </div>\n </div>\n <div class=\"rtsee-messenger-profile-data-container\">\n <rtsee-profile *ngIf=\"isExpanded\" [messenger]=\"messenger\"></rtsee-profile>\n </div>\n </div>\n\n <p *ngIf=\"!messenger.openedChat\"\n class=\"rtsee-messenger-header-title\"\n >Messaging</p>\n</div>\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'rtsee-preloader',\n templateUrl: './preloader.component.html',\n standalone: true\n})\nexport class PreloaderComponent implements OnInit {\n viewBox = '0 0 100 100';\n d = 'M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92';\n\n @ViewChild('canvas') canvas?: ElementRef<SVGElement>;\n @Input() diameter?: number;\n @Input() color?: string = '#000000';\n constructor() {\n if (this.diameter) {\n this.viewBox = `0 0 ${this.diameter} ${this.diameter}`;\n this.d = `M ${this.diameter / 2} ${this.diameter * 0.96} a ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 -${this.diameter * 0.92} ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 ${this.diameter * 0.92}`;\n }\n }\n\n ngOnInit(): void {\n //viewBox=\"0 0 100 100\"\n //d=\"M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92\"\n }\n}\n","<div class=\"rtsee-preloader\">\n <svg [style.max-width.px]=\"diameter\" #canvas [attr.viewBox]=\"viewBox\">\n <path [attr.d]=\"d\" [attr.stroke]=\"color\"/>\n </svg>\n</div>\n","import { Injectable } from '@angular/core';\n\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\ndayjs.extend(relativeTime);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimeFormatHelperService {\n toAgo(time: Date): string {\n /* eslint-disable */\n return dayjs(time).fromNow() as string;\n /* eslint-enable */\n }\n toDayOfWeek(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('ddd');\n /* eslint-enable */\n }\n toTime(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('HH:mm') as string;\n /* eslint-enable */\n }\n toDate(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('D MMMM') as string;\n /* eslint-enable */\n }\n toDateNumeral(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM');\n /* eslint-enable */\n }\n\n toDateNumeralWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM.YY');\n /* eslint-enable */\n }\n\n toDateWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('MMMM D, YYYY ') as string;\n /* eslint-enable */\n }\n\n formatDate(time: Date) {\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n const twoDays = dayMs * 2;\n\n if (!time) {\n return '';\n }\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return 'Today';\n }\n\n if (\n today.getTime() - time.getTime() < twoDays &&\n today.getTime() - time.getTime() > dayMs &&\n today.getDay() !== time.getDay()\n ) {\n return 'Yesterday';\n }\n\n if (today.getFullYear() === time.getFullYear()) {\n return this.toDate(time);\n }\n\n return this.toDateWithYear(time);\n }\n\n formatTimeOrDate(time: Date) {\n if (!time) {\n return '';\n }\n\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return this.toTime(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs &&\n today.getTime() - time.getTime() < dayMs * 7\n ) {\n return this.toDayOfWeek(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs * 7 &&\n today.getFullYear() === time.getFullYear()\n ) {\n return this.toDateNumeral(time);\n }\n\n return this.toDateNumeralWithYear(time);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessage } from '@rtsee/messenger';\nimport { IMessageThumbnail } from '@rtsee/common';\nimport { TimeFormatHelperService } from '../../../../../services/time-format-helper.service';\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {PreloaderComponent} from \"../../../../../common/components/preloader/preloader.component\";\n\n@Component({\n selector: 'rtsee-message-time-and-status',\n templateUrl: './message-time-and-status.component.html',\n imports: [\n NgIf,\n NgClass,\n PreloaderComponent\n ],\n standalone: true\n})\nexport class MessageTimeAndStatusComponent {\n @Input() message!: RTSeeMessage | IMessageThumbnail;\n @Input() hideStatus?: boolean;\n @Input() inChat?: boolean;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-messenger-message-time-and-status\">\n <span class=\"rtsee-messenger-message-status\" *ngIf=\"!hideStatus\" [ngClass]=\"{'showing-status-inside-chat': inChat }\">\n <span *ngIf=\"message.status === 'pending'\"><rtsee-preloader [diameter]=\"5\"></rtsee-preloader></span>\n <span *ngIf=\"message.status === 'sent'\" class=\"material-icons-outlined rtsee-message-sent-status\">check</span>\n <span *ngIf=\"message.status === 'delivered'\" class=\"material-icons-outlined rtsee-message-delivered-status\">check</span>\n <span *ngIf=\"message.status === 'seen'\" class=\"material-icons-outlined rtsee-message-seen-status\">done_all</span>\n </span>\n <span class=\"rtsee-messenger-message-time\">{{timeFormatService.formatTimeOrDate(message.createdAt)}}</span>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RTSeeChatTypes, IMessageThumbnail } from '@rtsee/common';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport {\n MessageTimeAndStatusComponent\n} from \"../message/components/message-time-and-status/message-time-and-status.component\";\nimport {NgClass, NgIf} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-chat-thumbnail',\n templateUrl: './chat-thumbnail.component.html',\n imports: [\n MessageTimeAndStatusComponent,\n NgClass,\n NgIf\n ],\n standalone: true\n})\nexport class ChatThumbnailComponent {\n @Input() chat!: IMessageThumbnail;\n @Input() messenger!: RTSeeMessenger;\n\n readonly RTSeeChatTypes = RTSeeChatTypes;\n\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-chat-thumbnail\" (click)=\"messenger.openChatById(chat.chatId)\">\n <div class=\"rtsee-chat-thumbnail-image\">\n <img [src]=\"chat.chatImageUrl\" alt=\"chat-img\">\n </div>\n <div class=\"rtsee-chat-thumbnail-left\">\n <div class=\"rtsee-chat-thumbnail-name\">\n <span>{{ chat.chatName }}</span>\n <div class=\"rtsee-chat-thumbnail-status\">\n <rtsee-message-time-and-status [message]=\"chat\"\n [hideStatus]=\"chat && !!(chat.unreadMessagesCount)\">\n </rtsee-message-time-and-status>\n </div>\n </div>\n <div class=\"rtsee-chat-thumbnail-last-message\"\n [ngClass]=\"{'rtsee-has-unread': chat.unreadMessagesCount}\"\n rtseeShave>\n <span class=\"rtsee-chat-thumbnail-last-message-sender\"\n *ngIf=\"chat.chatType !== RTSeeChatTypes.INDIVIDUAL && chat.senderName\"\n >{{chat.senderName}}</span>\n <span class=\"rtsee-chat-thumbnail-last-message-text\"\n *ngIf=\"chat.text\"\n >{{chat.text}}</span>\n <div class=\"rtsee-messenger-thumbnail-unread\" *ngIf=\"chat.unreadMessagesCount\">\n <span class=\"rtsee-messenger-thumbnail-unread-count\">{{chat.unreadMessagesCount}}</span>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\nimport {NgForOf} from \"@angular/common\";\nimport {ChatThumbnailComponent} from \"../chat-thumbnail/chat-thumbnail.component\";\n\n@Component({\n selector: 'rtsee-chats-list',\n templateUrl: './chats-list.component.html',\n imports: [\n NgForOf,\n ChatThumbnailComponent\n ],\n standalone: true\n})\nexport class ChatsListComponent implements OnInit {\n @Input() messenger!: RTSeeMessenger;\n @Input() chats!: RTSeeChat[];\n\n ngOnInit(): void {\n // console.log(this.chats);\n }\n}\n","<div class=\"rtsee-chats-list\">\n <div class=\"rtsee-chat-thumbnail-container\" *ngFor=\"let chat of chats; let last = last;\">\n <rtsee-chat-thumbnail [chat]=\"chat.thumbnail\" [messenger]=\"messenger\"></rtsee-chat-thumbnail>\n<!-- <div class=\"rtsee-chat-thumbnail-separator\" *ngIf=\"!last\"></div>-->\n </div>\n</div>\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[widgetHost]',\n standalone: true\n})\nexport class WidgetDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessage, RTSeeMessenger } from '@rtsee/messenger';\nimport { IRTSeeCall } from '@rtsee/core';\nimport { NgClass } from \"@angular/common\";\n\n@Component({\n selector: 'ngx-call-widget',\n templateUrl: './call-widget.component.html',\n styleUrls: ['./call-widget.component.scss'],\n imports: [\n NgClass\n ],\n standalone: true\n})\nexport class CallWidgetComponent implements OnInit {\n @Input() message!: RTSeeMessage<IRTSeeCall>;\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: RTSeeChat;\n\n ngOnInit(): void {}\n\n joinCall() {\n console.log('message data: ', this.message.data);\n if (!this.messenger || (!this.message.data?.roomId && !this.chat.conferenceRoom)) {\n console.log('No Room Id specified or no messenger!');\n return;\n }\n\n const roomId: string | null = this.message.data?.roomId || this.chat.conferenceRoom?.id || null;\n\n if (!roomId) {\n console.log('Room Id unavailable!');\n return;\n }\n\n void this.messenger.joinCall(roomId);\n }\n}\n","<div class=\"rtsee-call-widget\">\n <p> The call has started</p>\n <button class=\"rtsee-join-call-btn\"\n (click)=\"joinCall()\">\n Join Call\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CallWidgetComponent } from '../components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\n\nexport interface IMessageWidget {\n name: string;\n component: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageWidgetsService {\n widgetsMap: IMessageWidget[] = [\n { name: 'rtsee-call', component: CallWidgetComponent },\n ];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeChatMember,\n RTSeeMessage,\n RTSeeMessenger,\n} from '@rtsee/messenger';\nimport { MessageWidgetsService } from '../../../services/message-widgets.service';\nimport { WidgetDirective } from '../../../directives/widget.directive';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {MessageTimeAndStatusComponent} from \"./components/message-time-and-status/message-time-and-status.component\";\n\n@Component({\n selector: 'rtsee-message',\n templateUrl: './message.component.html',\n imports: [\n NgClass,\n MessageTimeAndStatusComponent,\n WidgetDirective\n ],\n standalone: true\n})\nexport class MessageComponent implements AfterViewInit {\n @Input() chat!: RTSeeChat;\n @Input() message!: RTSeeMessage;\n @Input() member!: RTSeeChatMember<any>;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: MessageWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService,\n ) {}\n\n ngAfterViewInit() {\n /* eslint-disable */\n if (this.message.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.message.widget,\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.message = this.message;\n componentRef.instance.messenger = this.messenger;\n componentRef.instance.chat = this.chat;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-messenger-message-container\" #rtsMessageContainer\n [ngClass]=\"{'rtsee-message-from-me': message.from.id === messenger.clientId}\"\n>\n <div class=\"rtsee-messenger-message\">\n @if (message.widget) {\n <ng-template widgetHost></ng-template>\n }\n @if (!message.widget) {\n <p class=\"rtsee-messenger-message-text\"\n >{{ message.text }}</p>\n }\n <div class=\"rtsee-messenger-message-info\" #rtsMessageInfo>\n <rtsee-message-time-and-status [message]=\"message\"\n [inChat]=\"true\"\n [hideStatus]=\"message.from.id !== messenger.clientId\"\n ></rtsee-message-time-and-status>\n </div>\n </div>\n <div class=\"message-tail\"></div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeMessenger,\n RTSeeMessage,\n RTSeeChatEvents,\n} from '@rtsee/messenger';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport {InfiniteScrollDirective} from \"ngx-infinite-scroll\";\nimport {NgClass, NgForOf} from \"@angular/common\";\nimport {MessageComponent} from \"../message/message.component\";\n\n@Component({\n selector: 'rtsee-messages-list',\n templateUrl: './messages-list.component.html',\n imports: [\n InfiniteScrollDirective,\n NgClass,\n NgForOf,\n MessageComponent\n ],\n standalone: true\n})\nexport class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit {\n bindScrollFunction: () => void;\n\n @Input() chat!: RTSeeChat;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild('scrollBlock') scrollContainer!: ElementRef<HTMLDivElement>;\n constructor(private timeFormatService: TimeFormatHelperService) {\n this.bindScrollFunction = this.scrollToBottom.bind(this) as () => void;\n }\n\n ngOnInit() {\n this.chat.on(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n }\n\n ngAfterViewInit() {\n this.scrollToBottom();\n }\n\n onMessageSent() {\n this.scrollToBottom();\n }\n\n ngOnDestroy() {\n this.chat.off(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n }\n\n onScrolledToTop() {\n if (this.chat.messagesLoadInProgress) {\n return;\n }\n this.chat.loadRemoteMessages('back');\n }\n\n onScroll() {\n // if (this.scrollContainer.nativeElement.scrollTop < 1) {\n // this.scrollContainer.nativeElement.scrollTop = 1;\n // }\n if (this.chat.messagesLoadInProgress) {\n return;\n }\n this.chat.loadRemoteMessages('front');\n }\n\n scrollToBottom() {\n if (!this.scrollContainer?.nativeElement?.scrollHeight) {\n return;\n }\n\n try {\n this.scrollContainer.nativeElement.scrollTop =\n this.scrollContainer.nativeElement.scrollHeight;\n } catch (err) {\n console.log('Failed to Scroll');\n }\n }\n\n formatDate(message: RTSeeMessage) {\n return this.timeFormatService.formatDate(message.createdAt);\n }\n}\n","<div class=\"rtsee-messenger-messages-list\"\n #scrollBlock\n infiniteScroll\n [infiniteScrollUpDistance]=\"2\"\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrolledToTop()\"\n (scroll)=\"onScroll()\"\n>\n @for (message of chat.messages; track message.id; let i = $index) {\n <div [ngClass]=\"{'rtsee-messenger-message-wrapper-consecutive': message.from === chat.messages[i+1]?.from}\"\n class=\"rtsee-messenger-message-wrapper\"\n >\n <rtsee-message [message]=\"message\" [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-message>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport {FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-chat-input',\n templateUrl: './chat-input.component.html',\n imports: [\n ReactiveFormsModule\n ],\n standalone: true\n})\nexport class ChatInputComponent {\n sendMessageForm: FormGroup = new FormGroup({\n /* eslint-disable */\n message: new FormControl('', Validators.required),\n /* eslint-enable */\n });\n\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: RTSeeChat;\n\n sendMessage() {\n const text = this.sendMessageForm.get('message')?.value as string;\n if (!text) {\n return;\n }\n this.chat.sendMessage(text);\n this.sendMessageForm.get('message')?.setValue('');\n }\n}\n","<div class=\"rtsee-chat-input\" xmlns=\"http://www.w3.org/1999/html\">\n <div class=\"rtsee-send-message\">\n <form [formGroup]=\"sendMessageForm\" class=\"rtsee-chat-input-form\">\n <textarea\n placeholder=\"Type message...\"\n type=\"text\"\n formControlName=\"message\"\n class=\"rtsee-chat-input-field\"\n autosize\n required\n (keyup.enter)=\"sendMessage()\"\n ></textarea>\n </form>\n </div>\n <button (click)=\"sendMessage()\"\n class=\"rtsee-send-message-button\"\n type=\"submit\">\n <span class=\"material-icons-outlined\">send</span>\n </button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\nimport {MessagesListComponent} from \"../messages-list/messages-list.component\";\nimport {ChatInputComponent} from \"../chat-input/chat-input.component\";\n\n@Component({\n selector: 'rtsee-chat',\n templateUrl: './chat.component.html',\n imports: [\n MessagesListComponent,\n ChatInputComponent\n ],\n standalone: true\n})\nexport class ChatComponent {\n @Input() chat!: RTSeeChat;\n @Input() messenger!: RTSeeMessenger;\n}\n","<div class=\"rtsee-chat\">\n <div class=\"rtsee-chat-body-container\">\n <rtsee-messages-list [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-messages-list>\n </div>\n <div class=\"rtsee-chat-footer-container\">\n <div class=\"rtsee-chat-footer-container-inner\">\n <rtsee-chat-input [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-chat-input>\n </div>\n </div>\n</div>\n","export enum MainMenuPanels {\n HOME = 'home',\n CONTACTS_SELECT = 'contacts-select',\n MANAGE_CHAT = 'manage-chat',\n}\n\nexport interface IMainMenuState {\n activePanel: MainMenuPanels;\n}\n\nexport const DEFAULT_MAIN_MENU_STATE = MainMenuPanels.HOME;\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\nimport {PreloaderComponent} from \"../../../../../common/components/preloader/preloader.component\";\nimport {NgForOf} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-search',\n templateUrl: './search.component.html',\n imports: [\n ReactiveFormsModule,\n PreloaderComponent,\n NgForOf\n ],\n standalone: true\n})\nexport class SearchComponent implements OnInit, OnDestroy {\n queryControl = new FormControl();\n queryCtrlSub?: Subscription;\n\n @Input() search!: RTSeeMessengerSearch;\n\n ngOnInit(): void {\n this.queryCtrlSub = this.queryControl.valueChanges\n .pipe(debounceTime(200))\n .subscribe((value: string) => this.search.onQueryChange(value));\n }\n\n ngOnDestroy() {\n if (this.queryCtrlSub) {\n this.queryCtrlSub.unsubscribe();\n }\n }\n}\n","<div class=\"rtsee-messenger-search\">\n <input type=\"text\"\n [formControl]=\"queryControl\"\n class=\"rtsee-messenger-search-input\"\n placeholder=\"Search\"/>\n</div>\n\n<div class=\"rtsee-messenger-search-results\">\n <rtsee-preloader [diameter]=\"50\"\n *ngIf=\"search.searchInProgress\"\n ></rtsee-preloader>\n <p>Chats</p>\n <div class=\"rtsee-messenger-search-results-chats\">\n <div *ngFor=\"let chat of search.results.chats\"\n class=\"rtsee-messenger-search-results-chat-wrapper\">\n <p>{{chat.name}}</p>\n </div>\n </div>\n <p>Messages</p>\n <div class=\"rtsee-messenger-search-results-messages\">\n <div *ngFor=\"let message of search.results.messages\" class=\"rtsee-messenger-search-results-message-wrapper\">\n <p>{{message.chatName || message.senderName }}</p>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { IMainMenuState, MainMenuPanels } from '../models/MainMenuState';\n\n@Component({\n selector: 'rtsee-manage-chat',\n templateUrl: './manage-chat.component.html',\n styleUrls: ['./manage-chat.component.scss'],\n standalone: true\n})\nexport class ManageChatComponent {\n @Input() messenger!: RTSeeMessenger;\n @Input() menuState!: IMainMenuState;\n\n onInviteContactsClicked() {\n this.menuState.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n}\n","<div class=\"rtsee-messenger-manage-chat\">\n <p>We are going to manage chat here</p>\n <button (click)=\"onInviteContactsClicked()\">Invite Contacts</button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { IMainMenuState } from '../models/MainMenuState';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\nimport { SearchComponent } from \"../search/search.component\";\n\n@Component({\n selector: 'rtsee-contacts-multiselect',\n templateUrl: './contacts-multiselect.component.html',\n styleUrls: ['./contacts-multiselect.component.scss'],\n imports: [\n SearchComponent\n ],\n standalone: true\n})\nexport class ContactsMultiselectComponent {\n @Input() menuState!: IMainMenuState;\n @Input() search!: RTSeeMessengerSearch;\n}\n","<div class=\"rtsee-messenger-contacts-multiselect\">\n <rtsee-search [search]=\"search\"></rtsee-search>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger, RTSeeMessengerSearch } from '@rtsee/messenger';\nimport {\n DEFAULT_MAIN_MENU_STATE,\n IMainMenuState,\n MainMenuPanels,\n} from './components/models/MainMenuState';\nimport {NgIf} from \"@angular/common\";\nimport {SearchComponent} from \"./components/search/search.component\";\nimport {ManageChatComponent} from \"./components/manage-chat/manage-chat.component\";\nimport {ContactsMultiselectComponent} from \"./components/contacts-multiselect/contacts-multiselect.component\";\n\n@Component({\n selector: 'rtsee-main-menu',\n templateUrl: './main-menu.component.html',\n imports: [\n NgIf,\n SearchComponent,\n ManageChatComponent,\n ContactsMultiselectComponent\n ],\n standalone: true\n})\nexport class MainMenuComponent {\n @Input() search!: RTSeeMessengerSearch;\n @Input() messenger!: RTSeeMessenger;\n\n readonly MainMenuPanels = MainMenuPanels;\n\n state: IMainMenuState = {\n activePanel: DEFAULT_MAIN_MENU_STATE,\n };\n\n onNewGroupClicked() {\n this.state.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n\n onNewChannelClicked() {\n this.state.activePanel = MainMenuPanels.MANAGE_CHAT;\n }\n}\n","<div class=\"rtsee-messenger-main-menu\">\n <div class=\"rtsee-messenger-main-menu-home\" *ngIf=\"state.activePanel === MainMenuPanels.HOME\">\n <ul class=\"rtsee-messenger-controls\">\n <li>\n <div class=\"rtsee-messenger-control-item\" (click)=\"onNewGroupClicked()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">people</span>\n </div>\n <span>New Group</span>\n </div>\n </li>\n <li>\n <div class=\"rtsee-messenger-control-item\" (click)=\"onNewChannelClicked()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">campaign</span>\n </div>\n <span>New Channel</span>\n </div>\n </li>\n </ul>\n <rtsee-search [search]=\"search\" ></rtsee-search>\n </div>\n\n <rtsee-manage-chat *ngIf=\"state.activePanel === MainMenuPanels.MANAGE_CHAT\"\n [messenger]=\"messenger\"\n [menuState]=\"state\"\n ></rtsee-manage-chat>\n <rtsee-contacts-multiselect [search]=\"search\"\n [menuState]=\"state\"\n *ngIf=\"state.activePanel === MainMenuPanels.CONTACTS_SELECT\"\n ></rtsee-contacts-multiselect>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport {MessengerHeaderComponent} from \"../messenger-header/messenger-header.component\";\nimport {InfiniteScrollDirective} from \"ngx-infinite-scroll\";\nimport {NgClass, NgIf} from \"@angular/common\";\nimport {ChatsListComponent} from \"../chats-list/chats-list.component\";\nimport {ChatComponent} from \"../chat/chat.component\";\nimport {PreloaderComponent} from \"../../../common/components/preloader/preloader.component\";\nimport {MainMenuComponent} from \"../main-menu/main-menu.component\";\n\n@Component({\n selector: 'rtsee-messenger',\n templateUrl: './messenger.component.html',\n imports: [\n MessengerHeaderComponent,\n InfiniteScrollDirective,\n NgClass,\n ChatsListComponent,\n ChatComponent,\n PreloaderComponent,\n MainMenuComponent,\n NgIf\n ],\n standalone: true\n})\nexport class MessengerComponent {\n isHeaderExpanded: boolean;\n\n @Input() messenger!: RTSeeMessenger;\n constructor() {\n this.isHeaderExpanded = false;\n }\n\n onScroll() {\n this.messenger.loadChats();\n }\n\n // onGeneralScroll($event) {\n // // $event.stopPropagation();\n // }\n\n onHeaderExpandToggled(value: boolean) {\n this.isHeaderExpanded = value;\n }\n}\n","<div class=\"rtsee-messenger\" [ngClass]=\"{\n 'rtsee-messenger-main-menu-opened': messenger.mainMenuOpened,\n 'rtsee-messenger-header-expanded': isHeaderExpanded,\n 'rtsee-messenger-folded': messenger.folded\n}\">\n <div class=\"rtsee-messenger-header-container\">\n <rtsee-messenger-header [messenger]=\"messenger\"\n (expandToggled)=\"onHeaderExpandToggled($event)\"\n ></rtsee-messenger-header>\n </div>\n <div class=\"rtsee-messenger-body-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScroll()\"\n >\n <rtsee-chats-list *ngIf=\"!messenger.openedChat\" [chats]=\"messenger.chats\" [messenger]=\"messenger\"></rtsee-chats-list>\n <rtsee-chat *ngIf=\"messenger.openedChat\" [messenger]=\"messenger\" [chat]=\"messenger.openedChat\"></rtsee-chat>\n <rtsee-preloader [diameter]=\"50\" *ngIf=\"messenger.loadingChatsInProgress\" ></rtsee-preloader>\n </div>\n <div class=\"rtsee-messenger-main-menu-container\">\n <rtsee-main-menu\n *ngIf=\"messenger.mainMenuOpened\"\n [search]=\"messenger.search\"\n [messenger]=\"messenger\"></rtsee-main-menu>\n </div>\n <div class=\"rtsee-messenger-overlay\" (click)=\"messenger.openMainMenu(false)\"></div>\n</div>\n\n\n","import { Injectable } from '@angular/core';\nimport { IMessageWidget } from './message-widgets.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventsWidgetsService {\n widgetsMap: IMessageWidget[] = [];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { RTSeeDashboardEvent } from '@rtsee/events-dashboard';\nimport { WidgetDirective } from '../../../../directives/widget.directive';\nimport { EventsWidgetsService } from '../../../../services/events-widgets.service';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport {NgClass, NgIf} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-event-thumbnail',\n templateUrl: './event-thumbnail.component.html',\n imports: [\n WidgetDirective,\n NgIf,\n NgClass\n ],\n standalone: true\n})\nexport class EventThumbnailComponent implements OnInit, AfterViewInit {\n tooltip?: string;\n\n @Input() event!: RTSeeDashboardEvent;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: EventsWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService,\n private cd: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n if (this.event.data) {\n this.generateTooltip();\n }\n }\n\n generateTooltip() {\n /* eslint-disable */\n let tooltip = '';\n if (typeof this.event.data !== 'object') {\n return;\n }\n try {\n for (const key in this.event.data) {\n if (this.event.data.hasOwnProperty(key)) {\n if (tooltip) {\n tooltip += '&#013;';\n }\n tooltip += key + ' -> ' + this.event.data[key];\n }\n }\n this.tooltip = tooltip;\n } catch (e) {\n console.log('Failed to generate a tooltip');\n }\n /* eslint-enable */\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n /* eslint-disable */\n if (this.event.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.event.widget,\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.event = this.event;\n componentRef.instance.event = this.event;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-events-dashboard-event-thumbnail\">\n <ng-template *ngIf=\"event.widget\" widgetHost></ng-template>\n <div *ngIf=\"!event.widget\" class=\"rtsee-events-dashboard-default-event-thumbnail\"\n [ngClass]=\"{'rtsee-events-dashboard-default-event-thumbnail-with-data': event.data}\"\n >\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-name\">{{event.name}}</div>\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-info\">\n <div *ngIf=\"event.data\" class=\"rtsee-events-dashboard-default-event-thumbnail-details\"\n [title]=\"tooltip\"\n >\n <span class=\"rtsee-events-dashboard-default-event-thumbnail-details-icon material-icons-outlined\"\n >info</span>\n </div>\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-time\">\n <span>{{ timeFormatService.toAgo(event.createdAt) }}</span>\n </div>\n </div>\n\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { RTSeeDashboardClientSession } from '@rtsee/events-dashboard';\nimport { NgIf, SlicePipe } from \"@angular/common\";\nimport {EventThumbnailComponent} from \"../event-thumbnail/event-thumbnail.component\";\n\n@Component({\n selector: 'rtsee-rtsee-events-dashboard-session',\n templateUrl: './rtsee-events-dashboard-session.component.html',\n imports: [\n NgIf,\n\n EventThumbnailComponent,\n SlicePipe\n ],\n standalone: true\n})\nexport class RtseeEventsDashboardSessionComponent {\n @Input() session!: RTSeeDashboardClientSession;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-events-dashboard-session\">\n <div class=\"rtsee-events-dashboard-session-header\" *ngIf=\"session.info\">\n <p class=\"rtsee-events-dashboard-session-client-info\">{{session.info.clientThumbnail}}</p>\n <p class=\"rtsee-events-dashboard-session-os-info\">{{session.info.osThumbnail}}</p>\n <div class=\"rtsee-events-dashboard-session-device-info\" [title]=\"session.info.deviceThumbnail\">\n <span *ngIf=\"session.info.deviceType === 'smartphone' && !session.info.botName\"\n class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n >phone_iphone</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.deviceType === 'tablet' && !session.info.botName\"\n >tablet_mac</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.deviceType === 'desktop' && !session.info.botName\"\n >computer</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.botName\"\n >smart_toy</span>\n </div>\n </div>\n <ul *ngIf=\"session.events && session.events.length\"\n class=\"rtsee-events-dashboard-session-events-list\"\n >\n @for (event of session.events | slice:0:5; track event.id) {\n <li class=\"rtsee-events-dashboard-session-event\">\n <rtsee-event-thumbnail [event]=\"event\"></rtsee-event-thumbnail>\n </li>\n }\n </ul>\n <div class=\"rtsee-events-dashboard-session-footer\">\n <button *ngIf=\"session.events.length > 5\">{{session.events.length - 5}} more</button>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { DefaultImagesService } from '../../../../services/default-images.service';\nimport {\n RTSeeEventsDashboard,\n RTSeeDashboardClient,\n} from '@rtsee/events-dashboard';\nimport {\n RtseeEventsDashboardSessionComponent\n} from \"../rtsee-events-dashboard-session/rtsee-events-dashboard-session.component\";\nimport {NgForOf, NgIf} from \"@angular/common\";\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client-thumbnail',\n templateUrl: './rtsee-events-dashboard-client-thumbnail.component.html',\n imports: [\n RtseeEventsDashboardSessionComponent,\n NgIf,\n NgForOf\n ],\n standalone: true\n})\nexport class RtseeEventsDashboardClientThumbnailComponent implements OnInit {\n @Input() dashboard!: RTSeeEventsDashboard;\n @Input() client!: RTSeeDashboardClient;\n\n constructor(\n public timeFormatService: TimeFormatHelperService,\n public defaultImagesService: DefaultImagesService,\n ) {}\n\n ngOnInit(): void {\n console.log('client id', this.client.id);\n }\n\n openChat() {\n console.log('Open Chat Clicked! Client ID #', this.client.id);\n this.dashboard.openChat(this.client);\n }\n}\n","<div class=\"rtsee-dashboard-client-thumbnail\">\n <div class=\"rtsee-dashboard-client-header\">\n <div class=\"rtsee-dashboard-client-header-photo\">\n <div class=\"rtsee-dashboard-client-header-image\"\n [style.background-image]=\"'url(' + client.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n @if(client.isConnected) {\n <div class=\"rtsee-dashboard-client-live-indicator\"></div>\n }\n </div>\n <p class=\"rtsee-dashboard-client-name\">\n <span class=\"rtsee-dashboard-client-name-text\">{{ client.name || client.id }}</span>\n <button (click)=\"openChat()\" class=\"rtsee-dashboard-client-engage\">\n <span class=\"rtsee-dashboard-client-engage-icon material-icons-outlined\">chat_bubble</span>\n </button>\n </p>\n </div>\n <div class=\"rtsee-dashboard-sessions\">\n @for(session of client.sessions; track session.id) {\n <div class=\"rtsee-dashboard-sessions-container\">\n <rtsee-rtsee-events-dashboard-session [session]=\"session\"></rtsee-rtsee-events-dashboard-session>\n </div>\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeEventsDashboard } from '@rtsee/events-dashboard';\n\n\nimport {\n RtseeEventsDashboardClientThumbnailComponent\n} from \"./components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component\";\n\n@Component({\n selector: 'rtsee-events-dashboard',\n templateUrl: './rtsee-events-dashboard.component.html',\n imports: [\n RtseeEventsDashboardClientThumbnailComponent\n ],\n standalone: true\n})\nexport class RtseeEventsDashboardComponent {\n @Input() eventsDashboard!: RTSeeEventsDashboard;\n}\n","<div class=\"rtsee-events-dashboard\">\n <div class=\"rtsee-events-dashboard-client-thumbnails\">\n @for (client of eventsDashboard.clients; track client.id) {\n <div class=\"rtsee-events-dashboard-client-thumbnail-wrapper\">\n <ngx-rtsee-events-dashboard-client-thumbnail\n [client]=\"client\"\n [dashboard]=\"eventsDashboard\"\n ></ngx-rtsee-events-dashboard-client-thumbnail>\n </div>\n }\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {RTSeePresentation} from \"@rtsee/presentation\";\nimport {Button} from \"primeng/button\";\nimport {NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-presentation-header',\n templateUrl: './presentation-header.component.html',\n imports: [\n Button,\n NgClass\n ],\n standalone: true\n})\nexport class PresentationHeaderComponent {\n @Input() public presentation!: RTSeePresentation;\n}\n","<div class=\"rtsee-presentation-header\"\n [ngClass]=\"{\n 'rtsee-presentation-header-convertable': presentation.activeStory,\n 'rtsee-presentation-header-visible': presentation.activeStory?.headerVisible\n }\"\n>\n <div class=\"rtsee-presentation-room-block\">\n @if (presentation.activeRoom) {\n <div class=\"rtsee-presentation-active-room\">\n <p>{{presentation.activeRoom.id}}</p>\n <button (click)=\"presentation.emitJoinRoomCallEvent()\">Join Video Call</button>\n </div>\n }\n </div>\n @if (presentation.activeStory) {\n <div class=\"rtsee-story-info\">\n <p>{{presentation.activeStory.name}}</p>\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\"\n (click)=\"presentation.disableActiveStory()\"\n >close</span>\n </div>\n }\n @if (presentation.dashboard && !presentation.activeStory && !presentation.isDashboardOpen) {\n <p-button [label]=\"'Dashboard'\"\n (click)=\"presentation.toggleDashboardState()\"\n ></p-button>\n }\n</div>\n","import {Component, Input} from '@angular/core';\nimport {RTSeeStory} from \"@rtsee/presentation\";\nimport {NgIf, NgStyle} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-story-thumbnail',\n templateUrl: './story-thumbnail.component.html',\n imports: [\n NgStyle\n ],\n standalone: true\n})\nexport class StoryThumbnailComponent {\n @Input() story!: RTSeeStory;\n\n protected readonly Math = Math;\n}\n","<div class=\"rtsee-story-thumbnail\">\n <div class=\"rtsee-story-thumbnail-image-container\"\n [ngStyle]=\"{'background-image': 'url(' + story.imageUrl + ')'}\"\n >\n </div>\n <div class=\"rtsee-story-thumbnail-body-container\">\n <div class=\"rtsee-story-thumbnail-title-container\">\n <h4 class=\"rtsee-story-thumbnail-title\">{{story.name}}</h4>\n </div>\n @if (story.averageReadTime) {\n <div class=\"rtsee-story-thumbnail-info-container\">\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\">schedule</span>\n <span class=\"rtsee-story-thumbnail-info-read-time\">{{ Math.ceil(story.averageReadTime / 60) }} хв</span>\n </div>\n }\n </div>\n</div>\n","import {AfterViewInit, Component, ElementRef, HostListener, Input, ViewChild} from '@angular/core';\nimport { RTSeeStory, RTSeeStorySlide } from \"@rtsee/presentation\";\nimport {NgClass, NgStyle} from \"@angular/common\";\nimport { WidgetDirective } from \"../../../directives/widget.directive\";\nimport { Button } from \"primeng/button\";\n\n@Component({\n selector: 'rtsee-slide',\n templateUrl: './slide.component.html',\n imports: [\n NgStyle,\n WidgetDirective,\n Button,\n NgClass\n ],\n standalone: true\n})\nexport class SlideComponent implements AfterViewInit {\n hideRewindControls: boolean = true;\n lastScrollPosition: number = 0;\n scrollingDown: boolean = false;\n\n @Input() story!: RTSeeStory;\n @Input() slide!: RTSeeStorySlide;\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n\n slideRewindClicked(forward: boolean) {\n if (forward) {\n this.story.nextSlide();\n } else {\n this.story.previousSlide();\n }\n }\n\n ngAfterViewInit() {\n const parentSlideEl: HTMLElement | null = this.elementRef.nativeElement\n .closest('.story-player-slide-container');\n if (!parentSlideEl) { return; }\n\n this.story.onNewSlideRendered(this.slide.slideNumber, parentSlideEl);\n this.scrollingDown = !this.story.headerVisible\n\n setTimeout(() => {\n this.hideRewindControls = false;\n }, 500);\n }\n\n onScroll(target: EventTarget | null): void {\n if (target && target instanceof HTMLElement) {\n this.handleScroll(target.scrollTop);\n }\n }\n\n private handleScroll(position: number) {\n const BUFFER: number = 50;\n\n if (position > this.lastScrollPosition + BUFFER) {\n if (!this.scrollingDown) {\n this.scrollingDown = true;\n console.log('started scrolling down');\n this.story.toggleHeader(false);\n }\n\n this.lastScrollPosition = position;\n } else if (position + BUFFER < this.lastScrollPosition) {\n if (this.scrollingDown) {\n this.scrollingDown = false;\n console.log('scrolled up');\n this.story.toggleHeader(true);\n }\n\n this.lastScrollPosition = position;\n }\n }\n}\n","<div class=\"rtsee-presentation-slide\" (scroll)=\"onScroll($event.target)\">\n @if (slide.widget) {\n <ng-template widgetHost></ng-template>\n }\n <div class=\"rtsee-presentation-slide-default\">\n @if (slide.imageUrl) {\n <div class=\"rtsee-presentation-slide-image-container\"\n [ngStyle]=\"{'background-image': 'url(' + slide.imageUrl + ')'}\"\n >\n </div>\n }\n <div class=\"rtsee-presentation-slide-text\">\n <p>{{slide.text}}</p>\n </div>\n <div class=\"rtsee-presentation-slide-controls\"\n [ngClass]=\"{'rtsee-presentation-slide-controls-hidden': hideRewindControls}\"\n >\n @if (story.activeSlideNumber !== 1) {\n <p-button class=\"slide-navigation-btn navigation-prev\"\n label=\"Previous Page\"\n icon=\"pi pi-arrow-left\"\n [severity]=\"'secondary'\"\n [iconPos]=\"'left'\"\n\n (click)=\"slideRewindClicked(false)\"\n >\n </p-button>\n }\n @if (story.activeSlideNumber !== this.story.totalSlides) {\n <p-button class=\"slide-navigation-btn navigation-next\"\n label=\"Next Page\"\n icon=\"pi pi-arrow-right\"\n [iconPos]=\"'right'\"\n (click)=\"slideRewindClicked(true)\"\n >\n </p-button>\n }\n </div>\n </div>\n</div>\n","import {AfterViewInit, Component, ElementRef, Input, OnInit, ViewChild} from '@angular/core';\nimport {RTSeeStory} from \"@rtsee/presentation\";\nimport {NgClass} from \"@angular/common\";\nimport {SlideComponent} from \"../slide/slide.component\";\nimport Swiper from \"swiper\";\nimport { EffectCards, Manipulation } from \"swiper/modules\";\n\n@Component({\n selector: 'rtsee-story-player',\n templateUrl: './story-player.component.html',\n imports: [\n NgClass,\n SlideComponent\n ],\n standalone: true\n})\nexport class StoryPlayerComponent implements OnInit, AfterViewInit {\n @Input() story!: RTSeeStory;\n @ViewChild('swiperContainer') swiperEl!: ElementRef<HTMLElement>;\n constructor() {\n Swiper.use([EffectCards, Manipulation])\n }\n\n ngOnInit() {\n console.log('Story Player: Story = ', this.story);\n }\n\n ngAfterViewInit() {\n const swiper = new Swiper(this.swiperEl.nativeElement, {\n effect: 'cards',\n grabCursor: true\n });\n\n this.story.initSwiper(swiper);\n }\n}\n","<div class=\"rtsee-story-player\">\n <div class=\"rtsee-story-player-slider swiper\" #swiperContainer>\n <div class=\"rtsee-story-player-slider-inner swiper-wrapper\">\n @for (slide of story.slides; track slide.id) {\n <div class=\"story-player-slide-container swiper-slide\"\n [ngClass]=\"{'story-player-slide-active': slide.isActive}\"\n >\n <rtsee-slide [slide]=\"slide\" [story]=\"story\"></rtsee-slide>\n </div>\n }\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ImageCroppedEvent, ImageCropperComponent } from \"ngx-image-cropper\";\nimport { NgClass } from \"@angular/common\";\nimport { RadioButton } from \"primeng/radiobutton\";\nimport { PreloaderComponent } from \"../preloader/preloader.component\";\nimport { RTSeeImageCropper } from '@rtsee/utilities-ui'\n\n@Component({\n selector: 'rtsee-cropper',\n imports: [\n ImageCropperComponent,\n NgClass,\n RadioButton,\n PreloaderComponent\n ],\n templateUrl: './cropper.component.html',\n standalone: true\n})\nexport class RTSeeCropperComponent {\n loadInProgress: boolean = true;\n\n @Input() cropper!: RTSeeImageCropper;\n @Output() nextClicked = new EventEmitter();\n\n @ViewChild(ImageCropperComponent) imageCropper!: ImageCropperComponent;\n constructor() { }\n\n ngOnInit() {\n }\n\n onCropperReady() {\n this.loadInProgress = false;\n this.cropper.setCropperElem(this.imageCropper);\n }\n\n onImageCropped(event: ImageCroppedEvent) {\n if (!event.blob) {\n console.log('ImageCropped no Blob after Cropped event');\n return;\n }\n this.cropper.onCropped(event.blob);\n }\n\n\n\n // selectValue(event) {\n // this.cropper.setAspectRatio(event.value);\n // }\n}\n\n\n","<div class=\"rtsee-image-cropper-container\"\n [ngClass]=\"{'rtsee-image-cropper-loading': loadInProgress}\"\n>\n @if (cropper.activeImage) {\n <div class=\"rtsee-image-cropper-container-inner\">\n <image-cropper style=\"visibility: hidden\"\n [imageFile]=\"cropper.activeImage.file\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"cropper.aspectRatio\"\n [resizeToWidth]=\"cropper.resizeToWidth\"\n [autoCrop]=\"false\"\n (imageCropped)=\"onImageCropped($event)\"\n (cropperReady)=\"onCropperReady()\"\n [imageQuality]=\"70\"\n format='jpeg'\n ></image-cropper>\n </div>\n }\n @if (cropper.aspectRatioConfigurable) {\n <div class=\"rtsee-select-aspect-ratio-container\">\n <span class=\"radio-btn title-text\">Aspect Ratio:</span>\n\n <p-radio-button name=\"pizza\" value=\"Cheese\" inputId=\"ingredient1\" />\n <label for=\"ingredient1\" class=\"ml-2\">Cheese</label>\n </div>\n }\n\n @if (!loadInProgress) {\n <div class=\"image-cropper-actions\">\n <button (click)=\"cropper.onNextButtonClicked()\">\n Next\n </button>\n </div>\n }\n\n <rtsee-preloader [diameter]=\"5\"></rtsee-preloader>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeFileUploader } from \"@rtsee/factory/dist/utilities-ui/src\";\n\n@Component({\n selector: 'rtsee-uploader',\n imports: [],\n templateUrl: './uploader.component.html'\n})\nexport class RTSeeUploaderComponent implements OnInit {\n @Input() uploader!: RTSeeFileUploader;\n\n ngOnInit(): void {\n this.uploader.show();\n }\n\n}\n","<div id=\"rtsee-drag-drop-area\"></div>\n\n","import {Component, Input, OnInit, ViewChild} from '@angular/core';\nimport { RTSeeCropperComponent } from \"../cropper/cropper.component\";\nimport { RTSeeUploaderComponent } from \"../uploader/uploader.component\";\nimport { RTSeeImageUploader } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: 'rtsee-image-uploader',\n imports: [\n RTSeeUploaderComponent,\n RTSeeCropperComponent\n ],\n templateUrl: './image-uploader.component.html'\n})\nexport class RTSeeImageUploaderComponent implements OnInit {\n @ViewChild(RTSeeCropperComponent) cropperComponent!: RTSeeCropperComponent;\n @Input() imageUploader!: RTSeeImageUploader\n\n ngOnInit(): void {\n this.attachEventHandlers();\n }\n\n attachEventHandlers() {\n this.imageUploader.on('completed', this.onImagesUploaded.bind(this));\n }\n\n onNextButtonClicked() {\n this.imageUploader.onNextClicked();\n }\n\n onImagesUploaded(response: any): void {\n console.log(response);\n }\n}\n","<div class=\"rtsee-image-uploader\">\n @if (!imageUploader.awaitsUploadOrCrop) {\n <div class=\"rtsee-image-uploader-image\"\n (click)=\"imageUploader.init()\"\n >\n @if (imageUploader.uploadedPhotoPreview) {\n <img [src]=\"imageUploader.uploadedPhotoPreview\"\n class=\"rtsee-image-uploader-preview-image\"\n alt=\"uploaded_photo\"\n >\n }\n @if (!imageUploader.uploadedPhotoPreview) {\n <div class=\"rtsee-preloader-image-placeholder\"></div>\n }\n </div>\n }\n\n @if (imageUploader.awaitsUploadOrCrop) {\n <rtsee-uploader [uploader]=\"imageUploader.uploader\"\n [hidden]=\"imageUploader.cropper?.activeImage\"\n ></rtsee-uploader>\n\n @if (imageUploader.cropper?.activeImage) {\n <rtsee-cropper [cropper]=\"imageUploader.cropper\"\n (nextClicked)=\"onNextButtonClicked()\"\n ></rtsee-cropper>\n }\n }\n</div>\n","import {Component, Input} from '@angular/core';\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport {FloatLabel} from \"primeng/floatlabel\";\nimport {InputGroup} from \"primeng/inputgroup\";\nimport {RTSeeFormAutocomplete} from \"@rtsee/utilities-ui\";\nimport {FormsModule} from \"@angular/forms\";\n\n@Component({\n selector: 'rtsee-autocomplete',\n imports: [\n AutoCompleteModule,\n FloatLabel,\n InputGroup,\n FormsModule\n ],\n templateUrl: './autocomplete.component.html'\n})\nexport class AutocompleteComponent {\n @Input() config!: RTSeeFormAutocomplete;\n}\n","<div class=\"rtsee-autocomplete rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-autoComplete [(ngModel)]=\"config.selectedSuggestions\"\n [inputId]=\"config.inputId\"\n [multiple]=\"config.allowMultipleSelections\"\n [fluid]=\"config.fluid\"\n [suggestions]=\"config.visibleSuggestions\"\n [optionLabel]=\"config.suggestionLabel\"\n (completeMethod)=\"config.onQueryChanged($event)\"\n ></p-autoComplete>\n <label [for]=\"config.inputId\">{{config.inputName}}</label>\n </p-floatlabel>\n </p-inputgroup>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {OrderList} from \"primeng/orderlist\";\nimport { RTSeeManageStorySlides } from \"@rtsee/presentation\";\nimport {Button} from \"primeng/button\";\nimport {NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-manage-slides',\n imports: [\n OrderList,\n Button,\n NgClass\n ],\n templateUrl: './manage-slides.component.html'\n})\nexport class ManageSlidesComponent {\n @Input() manageSlides!: RTSeeManageStorySlides;\n}\n","<div class=\"rtsee-presentation-manage-slides\">\n <div class=\"rtsee-presentation-manage-slides-header\">\n <p-button (click)=\"manageSlides.selectNewSlide()\"\n label=\"Create A New Slide\"\n ></p-button>\n </div>\n <div class=\"rtsee-presentation-manage-slides-list rtsee-ordered-list\">\n <p-orderList [value]=\"manageSlides.slides\"\n dataKey=\"id\"\n [dragdrop]=\"true\"\n [responsive]=\"true\"\n scrollHeight=\"40rem\"\n controlsPosition=\"right\"\n (onReorder)=\"manageSlides.onReorder($event)\"\n >\n <ng-template let-option let-selected=\"selected\" #item>\n <div class=\"rtsee-presentation-manage-slides-list-item rtsee-ordered-list-item\">\n <img\n [src]=\"option.imageUrl\"\n [alt]=\"'slide_image'\"\n [style.width]=\"'60px'\"\n class=\"rtsee-presentation-manage-slides-list-item-image rtsee-ordered-list-item-image\"\n />\n <div class=\"rtsee-presentation-manage-slides-list-item-info rtsee-ordered-list-item-info\">\n <span [ngClass]=\"{\n 'text-sm': true,\n 'text-surface-500': !selected,\n 'dark:text-surface-400': !selected,\n 'text-inherit': selected,\n }\"\n class=\"rtsee-ordered-list-item-info-label\"\n >{{ option.slideNumber }}</span>\n <div class=\"rtsee-ordered-list-item-info-buttons\">\n <p-button label=\"Edit\"\n class=\"rtsee-ordered-list-item-info-button\"\n (click)=\"manageSlides.selectSlide(option.slideNumber)\"\n ></p-button>\n <p-button label=\"Delete\"\n severity=\"warn\"\n class=\"rtsee-ordered-list-item-info-button\"\n ></p-button>\n </div>\n </div>\n </div>\n </ng-template>\n </p-orderList>\n </div>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport { RTSeeManageStorySlide } from \"@rtsee/presentation\";\nimport {RTSeeImageUploaderComponent} from \"../../../../../common/components/image-uploader/image-uploader.component\";\nimport {FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from \"@angular/forms\";\nimport {TypedReactiveForm} from \"../../../../rtsee-auth/types/auth-form.type\";\nimport {FloatLabel} from \"primeng/floatlabel\";\nimport {InputGroup} from \"primeng/inputgroup\";\nimport {Message} from \"primeng/message\";\nimport {Textarea} from \"primeng/textarea\";\nimport {Button} from \"primeng/button\";\n\nexport type RTSeeSlideForm = {\n text: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-slide',\n imports: [\n RTSeeImageUploaderComponent,\n FormsModule,\n ReactiveFormsModule,\n FloatLabel,\n InputGroup,\n Message,\n Textarea,\n Button\n ],\n templateUrl: './manage-slide.component.html'\n})\nexport class ManageSlideComponent implements OnInit {\n slideForm: FormGroup;\n\n\n @Input() manageSlide!: RTSeeManageStorySlide;\n constructor(\n private readonly formBuilder: FormBuilder\n ) {\n this.slideForm = this.formBuilder.group<TypedReactiveForm<RTSeeSlideForm>>({\n text: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131000)\n ]\n })\n });\n }\n\n ngOnInit() {\n this.textField.setValue(this.manageSlide.slide.text);\n }\n\n get textField(): FormControl<string> {\n return this.slideForm.get('text') as FormControl<string>;\n }\n\n submit() {\n if (this.slideForm.valid) {\n void this.manageSlide.save({\n text: this.textField.value,\n });\n } else {\n this.slideForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n}\n","<div class=\"rtsee-presentation-manage-story-slide\">\n <div class=\"rtsee-manage-story-slide-info rtsee-form-container\">\n <div class=\"rtsee-manage-story-image\">\n <rtsee-image-uploader [imageUploader]=\"manageSlide.imageUploader\"\n ></rtsee-image-uploader>\n </div>\n\n <form class=\"rtsee-story-form rtsee-form\"\n [formGroup]=\"slideForm\"\n (ngSubmit)=\"submit()\"\n >\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"textField\"\n id=\"rtsee-story-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"textField.invalid && textField.touched\"\n ></textarea>\n <label for=\"rtsee-story-description-field\">Text</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (textField.hasError('required') && textField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageSlide.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageSlide.cancel()\"\n [disabled]=\"manageSlide.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport { RTSeeManageStory } from \"@rtsee/presentation\";\nimport { FloatLabel } from \"primeng/floatlabel\";\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators\n} from \"@angular/forms\";\nimport { InputGroup } from \"primeng/inputgroup\";\nimport { InputText } from \"primeng/inputtext\";\nimport { Message } from \"primeng/message\";\nimport { TypedReactiveForm } from \"../../../rtsee-auth/types/auth-form.type\";\nimport { Textarea } from \"primeng/textarea\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { RTSeeImageUploaderComponent } from \"../../../../common/components/image-uploader/image-uploader.component\";\nimport { Button } from \"primeng/button\";\nimport { AutocompleteComponent } from \"../../../../common/components/autocomplete/autocomplete.component\";\nimport { ManageSlidesComponent } from \"./manage-slides/manage-slides.component\";\nimport { ManageSlideComponent } from \"./manage-slide/manage-slide.component\";\nimport { Divider } from \"primeng/divider\";\n\nexport type RTSeeStoryForm = {\n name: string | null;\n description: string | null;\n averageReadTime: number | null;\n};\n\n@Component({\n selector: 'rtsee-manage-story',\n imports: [\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n ReactiveFormsModule,\n Textarea,\n InputNumber,\n RTSeeImageUploaderComponent,\n Button,\n AutocompleteComponent,\n ManageSlidesComponent,\n ManageSlideComponent,\n Divider\n ],\n templateUrl: './manage-story.component.html'\n})\nexport class ManageStoryComponent implements OnInit {\n storyForm: FormGroup;\n\n @Input() manageStory!: RTSeeManageStory;\n constructor(\n private readonly formBuilder: FormBuilder\n ) {\n this.storyForm = this.formBuilder.group<TypedReactiveForm<RTSeeStoryForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131)\n ]\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244)\n ]\n }),\n averageReadTime: this.formBuilder.control(0)\n });\n }\n\n submit() {\n if (this.storyForm.valid) {\n void this.manageStory.save({\n name: this.nameField.value,\n description: this.descriptionField.value,\n averageReadTime: this.averageReadTimeField.value,\n });\n } else {\n this.storyForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n ngOnInit() {\n this.nameField.setValue(this.manageStory.story.name);\n this.descriptionField.setValue(this.manageStory.story.description || '');\n this.averageReadTimeField.setValue(this.manageStory.story.averageReadTime || 0);\n }\n\n get nameField(): FormControl<string> {\n return this.storyForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.storyForm.get('description') as FormControl<string>;\n }\n\n get averageReadTimeField(): FormControl<number> {\n return this.storyForm.get('averageReadTime') as FormControl<number>;\n }\n\n private disableFormFields(): void {\n this.nameField.disable();\n this.descriptionField.disable();\n this.averageReadTimeField.disable();\n }\n\n private enableFormFields(): void {\n this.nameField.disable();\n this.descriptionField.disable();\n this.averageReadTimeField.disable();\n }\n}\n","<div class=\"rtsee-manage-story\">\n @if (!manageStory.manageSlides.selectedSlide) {\n <div class=\"rtsee-manage-story-info rtsee-form-container\">\n <div class=\"rtsee-manage-story-image\">\n <rtsee-image-uploader [imageUploader]=\"manageStory.imageUploader\"\n ></rtsee-image-uploader>\n </div>\n <form class=\"rtsee-story-form rtsee-form\"\n [formGroup]=\"storyForm\"\n (ngSubmit)=\"submit()\"\n >\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"sign-up-email\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <rtsee-autocomplete [config]=\"manageStory.categoriesMultiselect\"></rtsee-autocomplete>\n <rtsee-autocomplete [config]=\"manageStory.labelsMultiselect\"></rtsee-autocomplete>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-input-number [formControl]=\"averageReadTimeField\"\n id=\"rtsee-story-average-read-time\"\n mode=\"decimal\"\n [min]=\"2\"\n [max]=\"100\"\n />\n <label for=\"rtsee-story-average-read-time\">Average Read Time</label>\n </p-floatlabel>\n </p-inputgroup>\n </div>\n <p-divider />\n <div class=\"rtsee-story-slides-wrapper\">\n <rtsee-manage-slides [manageSlides]=\"manageStory.manageSlides\"></rtsee-manage-slides>\n </div>\n <p-divider />\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageStory.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageStory.cancel()\"\n [disabled]=\"manageStory.saveInProgress\"\n />\n </form>\n </div>\n }\n @if (manageStory.manageSlides.selectedSlide) {\n <div class=\"rtsee-manage-story-slide-wrapper\">\n <rtsee-manage-slide [manageSlide]=\"manageStory.manageSlides.selectedSlide\"\n ></rtsee-manage-slide>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeManageStories } from \"@rtsee/presentation\";\nimport {ManageStoryComponent} from \"../manage-story/manage-story.component\";\nimport {Button} from \"primeng/button\";\nimport {OrderList} from \"primeng/orderlist\";\nimport {NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-manage-stories',\n imports: [\n ManageStoryComponent,\n Button,\n OrderList,\n NgClass\n ],\n templateUrl: './manage-stories.component.html'\n})\nexport class ManageStoriesComponent {\n @Input() manageStories!: RTSeeManageStories;\n}\n","<div class=\"rtsee-manage-stories\">\n <div class=\"rtsee-manage-stories-header\">\n @if (!manageStories.selectedStory) {\n <p-button (click)=\"manageStories.selectNewStory()\"\n label=\"Create A New Story\"\n ></p-button>\n }\n </div>\n @if (manageStories.selectedStory) {\n <div class=\"rtsee-manage-story-container\">\n <rtsee-manage-story [manageStory]=\"manageStories.selectedStory\"\n ></rtsee-manage-story>\n </div>\n }\n @if (!manageStories.selectedStory) {\n <div class=\"rtsee-manage-stories-list rtsee-ordered-list\">\n <p-orderList [value]=\"manageStories.stories\"\n dataKey=\"id\"\n [dragdrop]=\"true\"\n [responsive]=\"true\"\n [scrollHeight]=\"'40rem'\"\n class=\"rtsee-ordered-list-inner\"\n (onReorder)=\"manageStories.onReorder()\"\n >\n <ng-template let-option let-selected=\"selected\" #item>\n <div class=\"rtsee-presentation-manage-stories-list-item rtsee-ordered-list-item\">\n <img\n [src]=\"option.imageUrl\"\n [alt]=\"'slide_image'\"\n [style.width]=\"'60px'\"\n class=\"rtsee-presentation-manage-stories-list-item-image rtsee-ordered-list-item-image\"\n />\n <div class=\"rtsee-presentation-manage-stories-list-item-info rtsee-ordered-list-item-info\">\n <span [ngClass]=\"{\n 'text-sm': true,\n 'text-surface-500': !selected,\n 'dark:text-surface-400': !selected,\n 'text-inherit': selected,\n }\"\n >{{ option.name }}</span>\n <div class=\"rtsee-ordered-list-item-info-buttons\">\n <p-button label=\"Edit\"\n class=\"rtsee-ordered-list-item-info-button\"\n (click)=\"manageStories.selectStory(option.id)\"\n ></p-button>\n <p-button label=\"Delete\"\n [severity]=\"'warn'\"\n class=\"rtsee-ordered-list-item-info-button\"\n (click)=\"manageStories.selectStory(option.id)\"\n ></p-button>\n </div>\n </div>\n </div>\n </ng-template>\n </p-orderList>\n </div>\n }\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {Button} from \"primeng/button\";\nimport {FloatLabel} from \"primeng/floatlabel\";\nimport {FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from \"@angular/forms\";\nimport {InputGroup} from \"primeng/inputgroup\";\nimport {InputText} from \"primeng/inputtext\";\nimport {Message} from \"primeng/message\";\nimport {Textarea} from \"primeng/textarea\";\nimport {TypedReactiveForm} from \"../../../rtsee-auth/types/auth-form.type\";\nimport {RTSeeManageStoryCategory} from \"@rtsee/factory/dist/presentation/src\";\n\nexport type RTSeeCategoryForm = {\n name: string | null;\n description: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-category',\n imports: [\n Button,\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n Textarea,\n ReactiveFormsModule\n ],\n templateUrl: './manage-category.component.html'\n})\nexport class ManageCategoryComponent implements OnInit {\n categoryForm: FormGroup;\n\n @Input() manageCategory!: RTSeeManageStoryCategory;\n\n constructor(private formBuilder: FormBuilder) {\n this.categoryForm = this.formBuilder.group<TypedReactiveForm<RTSeeCategoryForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131)\n ]\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244)\n ]\n })\n });\n }\n\n ngOnInit() {\n this.nameField.setValue(this.manageCategory.category.name);\n this.descriptionField.setValue(this.manageCategory.category.description || '');\n }\n\n submit() {\n if (this.categoryForm.valid) {\n void this.manageCategory.save({\n name: this.nameField.value,\n description: this.descriptionField.value\n });\n } else {\n this.categoryForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n get nameField(): FormControl<string> {\n return this.categoryForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.categoryForm.get('description') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-story-category\">\n <div class=\"rtsee-manage-category-info rtsee-form-container\">\n <form class=\"rtsee-story-form rtsee-form\"\n [formGroup]=\"categoryForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"sign-up-email\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageCategory.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageCategory.cancel()\"\n [disabled]=\"manageCategory.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import {AfterViewInit, Component, Input } from '@angular/core';\nimport {RTSeeManageStoryCategories} from \"@rtsee/presentation\";\nimport {Button} from \"primeng/button\";\nimport {ManageCategoryComponent} from \"../manage-category/manage-category.component\";\n\n@Component({\n selector: 'rtsee-manage-categories',\n imports: [\n Button,\n ManageCategoryComponent\n ],\n templateUrl: './manage-categories.component.html'\n})\nexport class ManageCategoriesComponent implements AfterViewInit {\n @Input() manageCategories!: RTSeeManageStoryCategories;\n\n ngAfterViewInit(): void {\n console.log('ngAfterViewInit Cats');\n }\n}\n","<div class=\"rtsee-manage-stories-categories\">\n <div class=\"rtsee-manage-stories-categories-header\">\n @if (!manageCategories.selectedCategory) {\n <p-button (click)=\"manageCategories.selectNewCategory()\"\n label=\"Create A New Category\"\n ></p-button>\n }\n </div>\n <div class=\"rtsee-manage-stories-categories-body\">\n @if (manageCategories.selectedCategory) {\n <rtsee-manage-category [manageCategory]=\"manageCategories.selectedCategory\"\n ></rtsee-manage-category>\n }\n @if (!manageCategories.selectedCategory) {\n @for (category of manageCategories.categories; track category.id) {\n <p (click)=\"manageCategories.selectCategory(category.id)\">{{category.name}}</p>\n }\n }\n </div>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport { RTSeeManageStoryLabel } from \"@rtsee/presentation\";\nimport {Button} from \"primeng/button\";\nimport {FloatLabel} from \"primeng/floatlabel\";\nimport {FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from \"@angular/forms\";\nimport {InputGroup} from \"primeng/inputgroup\";\nimport {InputText} from \"primeng/inputtext\";\nimport {Message} from \"primeng/message\";\nimport {Textarea} from \"primeng/textarea\";\nimport {TypedReactiveForm} from \"../../../rtsee-auth/types/auth-form.type\";\nimport {ColorPicker} from \"primeng/colorpicker\";\n\nexport type RTSeeLabelForm = {\n name: string | null;\n description: string | null;\n symbol: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-label',\n imports: [\n Button,\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n Textarea,\n ReactiveFormsModule,\n ColorPicker\n ],\n templateUrl: './manage-label.component.html'\n})\nexport class ManageLabelComponent implements OnInit {\n labelForm: FormGroup;\n\n @Input() manageLabel!: RTSeeManageStoryLabel;\n constructor(private formBuilder: FormBuilder) {\n this.labelForm = this.formBuilder.group<TypedReactiveForm<RTSeeLabelForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131)\n ]\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244)\n ]\n }),\n symbol: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244)\n ]\n })\n });\n }\n\n ngOnInit() {\n this.nameField.setValue(this.manageLabel.label.name);\n this.descriptionField.setValue(this.manageLabel.label.description || '');\n this.descriptionField.setValue(this.manageLabel.label.description || '');\n }\n\n submit() {\n if (this.labelForm.valid) {\n void this.manageLabel.save({\n name: this.nameField.value,\n description: this.descriptionField.value,\n color: '',\n symbol: this.symbolField.value,\n });\n } else {\n this.labelForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n get nameField(): FormControl<string> {\n return this.labelForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.labelForm.get('description') as FormControl<string>;\n }\n\n get symbolField(): FormControl<string> {\n return this.labelForm.get('symbol') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-story-label\">\n <div class=\"rtsee-manage-story-label-info rtsee-form-container\">\n <form class=\"rtsee-story-label-form rtsee-form\"\n [formGroup]=\"labelForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-story-label-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-label-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-label-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-symbol-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"symbolField\"\n [class.p-invalid]=\"symbolField.invalid && symbolField.touched\"\n />\n <label for=\"rtsee-story-label-symbol-field\">Symbol</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (symbolField.hasError('required') && symbolField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Symbol is required, pick a smile, dummy</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-colorPicker [(ngModel)]=\"manageLabel.label.color\"/>\n </div>\n\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageLabel.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageLabel.cancel()\"\n [disabled]=\"manageLabel.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Button } from \"primeng/button\";\nimport { RTSeeManageStoryLabels } from \"@rtsee/presentation\";\nimport {ManageLabelComponent} from \"../manage-label/manage-label.component\";\n\n@Component({\n selector: 'rtsee-manage-labels',\n imports: [\n Button,\n ManageLabelComponent\n ],\n templateUrl: './manage-labels.component.html'\n})\nexport class ManageLabelsComponent {\n @Input() manageLabels!: RTSeeManageStoryLabels;\n}\n","<div class=\"rtsee-manage-stories-labels\">\n <div class=\"rtsee-manage-stories-labels-header\">\n @if (!manageLabels.selectedLabel) {\n <p-button (click)=\"manageLabels.selectNewLabel()\"\n label=\"Create A New Label\"\n ></p-button>\n }\n </div>\n <div class=\"rtsee-manage-stories-labels-body\">\n @if (manageLabels.selectedLabel) {\n <rtsee-manage-label [manageLabel]=\"manageLabels.selectedLabel\"\n ></rtsee-manage-label>\n }\n @if (!manageLabels.selectedLabel) {\n @for (label of manageLabels.labels; track label.id) {\n <p (click)=\"manageLabels.selectLabel(label.id)\">{{label.name}}</p>\n }\n }\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {ManageStoriesComponent} from \"../manage-stories/manage-stories.component\";\nimport {Tab, TabList, TabPanel, TabPanels, Tabs} from \"primeng/tabs\";\nimport {RTSeePresentationDashboard} from \"@rtsee/presentation\";\nimport {ManageCategoriesComponent} from \"../manage-categories/manage-categories.component\";\nimport {Button} from \"primeng/button\";\nimport {Chip} from \"primeng/chip\";\nimport {ManageLabelsComponent} from \"../manage-labels/manage-labels.component\";\n\n@Component({\n selector: 'rtsee-presentations-dashboard',\n imports: [\n ManageStoriesComponent,\n Tabs,\n TabList,\n Tab,\n TabPanels,\n TabPanel,\n ManageCategoriesComponent,\n Button,\n Chip,\n ManageLabelsComponent\n ],\n templateUrl: './presentations-dashboard.component.html'\n})\nexport class PresentationsDashboardComponent {\n @Input() dashboard!: RTSeePresentationDashboard;\n\n}\n","<div class=\"rtsee-presentations-dashboard\">\n <div class=\"rtsee-presentations-dashboard-header\">\n <p-chip label=\"Presentation Dashboard\" />\n <p-button label=\"Close\"\n (click)=\"dashboard.onCloseDashboardClicked()\"\n class=\"rtsee-presentations-dashboard-close-btn\"\n ></p-button>\n </div>\n\n <div class=\"manage-stories-container\">\n <p-tabs lazy value=\"stories\">\n <p-tablist>\n <p-tab value=\"stories\">Stories</p-tab>\n <p-tab value=\"categories\">Categories</p-tab>\n <p-tab value=\"labels\">Labels</p-tab>\n </p-tablist>\n <p-tabpanels>\n <p-tabpanel value=\"stories\">\n <ng-template #content>\n <rtsee-manage-stories [manageStories]=\"dashboard.manageStories\"></rtsee-manage-stories>\n </ng-template>\n </p-tabpanel>\n <p-tabpanel value=\"categories\">\n <ng-template #content>\n <rtsee-manage-categories [manageCategories]=\"dashboard.manageCategories\"></rtsee-manage-categories>\n </ng-template>\n </p-tabpanel>\n <p-tabpanel value=\"labels\">\n <ng-template #content>\n <rtsee-manage-labels [manageLabels]=\"dashboard.manageLabels\"></rtsee-manage-labels>\n </ng-template>\n </p-tabpanel>\n </p-tabpanels>\n </p-tabs>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeePresentation } from \"@rtsee/presentation\";\nimport { PresentationHeaderComponent } from \"../presentation-header/presentation-header.component\";\nimport { StoryThumbnailComponent } from \"../story-thumbnail/story-thumbnail.component\";\nimport { StoryPlayerComponent } from \"../story-player/story-player.component\";\nimport { PreloaderComponent } from \"../../../common/components/preloader/preloader.component\";\nimport {PresentationsDashboardComponent} from \"../manage/presentations-dashboard/presentations-dashboard.component\";\n\n@Component({\n selector: 'rtsee-presentation',\n templateUrl: './presentation.component.html',\n imports: [\n PresentationHeaderComponent,\n StoryThumbnailComponent,\n StoryPlayerComponent,\n PreloaderComponent,\n PreloaderComponent,\n PresentationsDashboardComponent\n ],\n standalone: true\n})\nexport class PresentationComponent {\n @Input() presentation!: RTSeePresentation;\n constructor() {}\n}\n","<div class=\"rtsee-presentation\">\n <div class=\"rtsee-presentation-header-block\">\n <rtsee-presentation-header [presentation]=\"presentation\"\n ></rtsee-presentation-header>\n </div>\n\n\n @if(presentation.isDashboardOpen && presentation.dashboard) {\n <rtsee-presentations-dashboard [dashboard]=\"presentation.dashboard\"\n ></rtsee-presentations-dashboard>\n }\n\n\n @if (!presentation.isDashboardOpen && !presentation.activeStory) {\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of presentation.stories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.setActiveStory(story)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n\n <div class=\"rtsee-presentation-categories-list\">\n @if (presentation.categoriesLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n @for (category of presentation.categories; track category.id) {\n <p>{{category.name}}</p>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of category.stories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.setActiveStory(story)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n }\n @if (presentation.activeStory) {\n <div class=\"rtsee-presentation-story-viewer-container\">\n <rtsee-story-player [story]=\"presentation.activeStory\"\n ></rtsee-story-player>\n </div>\n }\n</div>\n","import {Component, Input} from '@angular/core';\nimport {INavigationConfig, IRouteConfig} from \"@rtsee/factory\";\nimport {RouterLink, RouterLinkActive} from \"@angular/router\";\nimport {NgClass} from \"@angular/common\";\nimport {Avatar} from \"primeng/avatar\";\nimport {Image} from \"primeng/image\";\nimport {Divider} from \"primeng/divider\";\nimport {RTSee} from \"@rtsee/factory\";\nimport {Tooltip} from \"primeng/tooltip\";\n\n\n@Component({\n selector: 'rtsee-nav',\n templateUrl: './rtsee-nav.component.html',\n imports: [\n RouterLink,\n RouterLinkActive,\n NgClass,\n Avatar,\n Image,\n Divider,\n Tooltip\n ],\n standalone: true\n})\nexport class RtseeNavComponent {\n @Input() public config!: INavigationConfig<IRouteConfig>;\n @Input() rtsee!: RTSee;\n}\n","<div class=\"rtsee-nav\">\n @if (config.siteLogo) {\n <div class=\"rtsee-site-logo\">\n <p-image [src]=\"config.siteLogo.src\" class=\"rtsee-site-logo-image\"></p-image>\n <p-divider class=\"rtsee-site-logo-divider\" />\n </div>\n }\n <div class=\"rtsee-nav-bar\">\n @for (route of config.routes; track route.name) {\n <a [routerLink]=\"route.link\"\n routerLinkActive=\"rtsee-nav-item-active\"\n [ngClass]=\"{'rtsee-nav-item-hidden': !route.isEnabled || !route.iconClassName}\"\n [routerLinkActiveOptions]=\"{ exact: route.exactActiveLinkMatcher || false }\"\n class=\"rtsee-nav-item\"\n [pTooltip]=\"route.name\"\n >\n <span [ngClass]=\"route.iconClassName\"\n class=\"rtsee-nav-item-icon\" >\n </span>\n </a>\n }\n <p-avatar [image]=\"rtsee.socketConnection?.myPeer?.imageUrl\"\n class=\"rtsee-nav-item rtsee-nav-image rtsee-nav-profile\"\n ></p-avatar>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {RTSee, INavigationConfig, IRouteConfig} from \"@rtsee/factory\";\nimport {NgClass} from \"@angular/common\";\nimport {RTSeeConferenceComponent} from \"../rtsee/rtsee-conference.component\";\nimport {MessengerComponent} from \"../rtsee-messenger/messenger/messenger.component\";\nimport {RtseeEventsDashboardComponent} from \"../rtsee-events-dashboard/rtsee-events-dashboard.component\";\nimport {PresentationComponent} from \"../rtsee-presentation/presentation/presentation.component\";\nimport {RtseeNavComponent} from \"./rtsee-nav/rtsee-nav.component\";\n\n\n@Component({\n selector: 'rtsee-container',\n templateUrl: './rtsee-container.component.html',\n imports: [\n NgClass,\n RTSeeConferenceComponent,\n MessengerComponent,\n RtseeEventsDashboardComponent,\n PresentationComponent,\n RtseeNavComponent\n ],\n standalone: true\n})\nexport class RTSeeContainerComponent {\n @Input() rtsee!: RTSee;\n @Input() public navigationConfig!: INavigationConfig<IRouteConfig>;\n\n isSidenavExpanded: boolean = true;\n isSidenavExpandededed: boolean = true;\n\n onSidenavToggleClicked() {\n this.isSidenavExpanded = !this.isSidenavExpanded;\n }\n}\n","<div class=\"rtsee-shell\"\n [ngClass]=\"{\n 'rtsee-shell-conference-mode': rtsee.conference && rtsee.conference.isInActiveCall,\n 'rtsee-shell-messenger-active': rtsee.messenger && rtsee.activeTab === 'messenger',\n 'rtsee-shell-dashboard-active': rtsee.eventsDashboard && rtsee.activeTab === 'events-dashboard',\n 'rtsee-shell-presentation-active': rtsee.presentation && rtsee.activeTab === 'presentation',\n 'rtsee-shell-side-nav-expanded': isSidenavExpanded\n }\"\n>\n <div class=\"rtsee-nav-block\">\n <rtsee-nav [config]=\"navigationConfig\" [rtsee]=\"rtsee\"></rtsee-nav>\n </div>\n\n <div class=\"rtsee-shell-panel\">\n @if (rtsee.conference && rtsee.conference.isInActiveCall) {\n <div class=\"rtsee-conference-container\">\n <rtsee-conference [rtSee]=\"rtsee.conference\"\n ></rtsee-conference>\n </div>\n }\n\n @if (rtsee.messenger) {\n <div class=\"rtsee-messenger-container\">\n <rtsee-messenger [messenger]=\"rtsee.messenger\"\n ></rtsee-messenger>\n </div>\n }\n\n @if (rtsee.eventsDashboard && rtsee.eventsDashboard.isReady) {\n <div class=\"rtsee-events-dashboard-container\">\n <rtsee-events-dashboard [eventsDashboard]=\"rtsee.eventsDashboard\"\n ></rtsee-events-dashboard>\n </div>\n }\n\n @if (rtsee.presentation && rtsee.presentation.isActive) {\n <div class=\"rtsee-presentation-container\">\n <rtsee-presentation [presentation]=\"rtsee.presentation\"></rtsee-presentation>\n </div>\n }\n </div>\n\n <div class=\"rtsee-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport {HttpClient} from \"@angular/common/http\";\nimport {\n RTSeeAuth,\n IRtseeSignInRequestOptions,\n IRTSeeSignInResponse,\n IRtseeSignUpRequestOptions,\n IRTSeeSignUpResponse,\n AuthEndpointsKeys,\n RTSeeAuthConfiguration\n} from \"@rtsee/auth\";\n\nexport interface IRtseeForgotPasswordRequestOptions {\n email: string;\n}\n\nexport interface IRtseeResetPasswordRequestOptions {\n password: string;\n passwordConfirm: string;\n token: string;\n}\n\nexport interface IRTSeeForgotPasswordResponse {\n success: boolean;\n message: string;\n}\n\nexport interface IRTSeeResetPasswordResponse {\n success: boolean;\n message: string;\n}\nimport { Observable, tap } from \"rxjs\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RTSeeAuthService {\n rtseeAuth!: RTSeeAuth<any>;\n authConfiguration!: RTSeeAuthConfiguration;\n\n constructor(\n private http: HttpClient,\n ) {}\n\n init(auth: RTSeeAuth<any>) {\n this.rtseeAuth = auth;\n this.authConfiguration = this.rtseeAuth.authConfiguration;\n }\n\n signIn(credentials: IRtseeSignInRequestOptions): Observable<IRTSeeSignInResponse> {\n return this.http\n .post<IRTSeeSignInResponse>(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.SIGN_IN), credentials)\n .pipe(tap((res) => this.rtseeAuth.authenticate(res)))\n }\n\n signUp(credentials: IRtseeSignUpRequestOptions): Observable<IRTSeeSignUpResponse> {\n return this.http\n .post<IRTSeeSignUpResponse>(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.SIGN_UP), credentials)\n }\n\n forgotPassword(credentials: IRtseeForgotPasswordRequestOptions): Observable<IRTSeeForgotPasswordResponse> {\n return this.http\n .post<IRTSeeForgotPasswordResponse>(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.FORGOT_PASSWORD), credentials)\n }\n\n resetPassword(credentials: IRtseeResetPasswordRequestOptions): Observable<IRTSeeResetPasswordResponse> {\n return this.http\n .post<IRTSeeResetPasswordResponse>(this.authConfiguration.getEndpointPathByEndpointName(AuthEndpointsKeys.RESET_PASSWORD), credentials)\n }\n}\n","import { Component } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport { FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { SignInForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { NgOptimizedImage } from '@angular/common';\nimport { RTSeeAuthService } from '../services/auth.service';\nimport { AuthEndpointsKeys, RTSeeAuthConfiguration } from '@rtsee/auth';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Checkbox } from 'primeng/checkbox';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\nimport {ServerSideError} from \"../../../common/interfaces\";\n\n@Component({\n selector: 'rtsee-sign-in',\n templateUrl: './sign-in.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n Password,\n FloatLabel,\n Checkbox,\n Message,\n ProgressSpinner\n ],\n standalone: true\n})\nexport class SignInComponent {\n public readonly signInForm: FormGroup<TypedReactiveForm<SignInForm>> = this.formBuilder.group<TypedReactiveForm<SignInForm>>({\n username: this.formBuilder.nonNullable.control({\n value: '',\n disabled: false\n },\n {\n validators: [ Validators.required, Validators.email ]\n }),\n password: this.formBuilder.nonNullable.control({\n value: '',\n disabled: false\n }, { validators: [ Validators.required ]}),\n remember: this.formBuilder.nonNullable.control(false),\n });\n public readonly authConfiguration: RTSeeAuthConfiguration;\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n public loadInProgress: boolean = false;\n public serverSideError: string = '';\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n public authService: RTSeeAuthService\n ) {\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get usernameField(): FormControl<string> {\n return this.signInForm.get('username') as FormControl<string>;\n }\n\n get passwordField(): FormControl<string> {\n return this.signInForm.get('password') as FormControl<string>;\n }\n\n get rememberField(): FormControl<boolean> {\n return this.signInForm.get('remember') as FormControl<boolean>;\n }\n\n public login(): void {\n if (this.signInForm.valid) {\n this.disableFormFields();\n this.authService.signIn(this.signInForm.getRawValue())\n .subscribe({\n next: (() => {\n void this.router.navigate(this.authService.rtseeAuth.authConfiguration.defaultPostLoginRoute);\n this.enableFormFields();\n }),\n error: ((error: ServerSideError) => {\n console.log(error);\n this.showServerSideErrorForXSeconds(error.error.message);\n this.enableFormFields();\n }),\n complete: (() => {\n this.enableFormFields();\n })\n });\n } else {\n this.signInForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n private showServerSideErrorForXSeconds(message: string, x: number = 3): void {\n this.serverSideError = message;\n\n setTimeout(() => {\n this.serverSideError = '';\n }, x * 1000); // we can do pop-up message instead\n }\n\n private disableFormFields(): void {\n this.loadInProgress = true;\n this.usernameField.disable();\n this.passwordField.disable();\n this.rememberField.disable();\n }\n\n private enableFormFields(): void {\n this.loadInProgress = false;\n this.usernameField.enable(); // fuck me, but [disabled]=\"loadInProgress\" on the field no longer works :(\n this.passwordField.enable();\n this.rememberField.enable();\n }\n}\n","<div class=\"auth-container rtsee-form-container\" >\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Sign In to Your Account</h2>\n <p class=\"auth-title-description\">To access your content, please sign in to your account</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"signInForm\" (ngSubmit)=\"login()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup >\n <p-floatlabel variant=\"on\">\n <input id=\"user-email\"\n pInputText\n [formControl]=\"usernameField\"\n />\n <label for=\"user-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!usernameField.valid && usernameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is invalid</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"user-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n />\n <label for=\"user-password\">Password</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (!passwordField.valid && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n @if (serverSideError) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{serverSideError}}</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-checkbox inputId=\"remember\" [binary]=\"true\" [formControl]=\"rememberField\" />\n <label for=\"remember\" class=\"ml-2\"> Remember me </label>\n </div>\n <div class=\"rtsee-form-field-container\">\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.FORGOT_PASSWORD)\"\n class=\"auth-deep-blue-sm-medium\"\n >Forgot password?</a>\n </div>\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Sign In\"\n [disabled]=\"loadInProgress\"\n />\n @if (loadInProgress) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n <p class=\"rtsee-form-label\">\n <span>Don't have an account?</span>\n <span>&nbsp;</span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_UP)\"\n class=\"auth-deep-blue-sm-medium\"\n >Create one!</a>\n </p>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilsService {\n\n constructor() {\n }\n\n public static getKeysAsValueObject<T extends object>(obj: T): Record<string, string> { // object was {}\n if (obj) {\n return Object.keys(obj).reduce<Record<string, string>>((result, value) => {\n result[value] = value;\n return result;\n }, {});\n }\n return {};\n }\n}\n","import {AbstractControl, ValidationErrors} from '@angular/forms';\n\nexport class ConfirmPasswordValidator {\n /**\n * Check matching password with confirm password\n * @param control AbstractControl\n */\n static MatchFields(control: AbstractControl): ValidationErrors | null {\n const passwordField: AbstractControl | null = control.get('password');\n const passwordConfirmationField: AbstractControl | null = control.get('passwordConfirmation');\n\n if (!passwordField || ! passwordConfirmationField) {\n throw new Error('MatchFieldsValidator unable to find password controls!');\n }\n\n const password: string = passwordField.getRawValue() as string;\n const passwordConfirmation: string = passwordConfirmationField.getRawValue() as string;\n\n if (password !== passwordConfirmation) {\n return {\n confirmPassword: true\n };\n }\n\n return null;\n }\n}\n","import { Component } from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport { SignUpForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { UtilsService } from '../services/utils.service';\nimport {ConfirmPasswordValidator} from \"../validators/form-fields-validators\";\nimport { Router, RouterLink } from '@angular/router';\nimport {NgOptimizedImage} from \"@angular/common\";\nimport {RTSeeAuthService} from \"../services/auth.service\";\nimport {IRtseeSignUpRequestOptions, IRTSeeSignUpResponse} from \"@rtsee/auth\";\nimport {RTSeeAuthConfiguration, AuthEndpointsKeys} from \"@rtsee/auth\";\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Checkbox } from 'primeng/checkbox';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-sign-up',\n templateUrl: './sign-up.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n Password,\n FloatLabel,\n Checkbox,\n Message,\n ProgressSpinner\n ],\n standalone: true\n})\nexport class SignUpComponent {\n public readonly signUpForm: FormGroup<TypedReactiveForm<SignUpForm>>;\n public readonly signUpFormKeys: Record<keyof SignUpForm, string>;\n public readonly authConfiguration: RTSeeAuthConfiguration;\n public loadInProgress: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n private authService: RTSeeAuthService\n ) {\n this.signUpForm = this.formBuilder.group<TypedReactiveForm<SignUpForm>>({\n email: this.formBuilder.control('', { validators: [Validators.required, Validators.email] }),\n password: this.formBuilder.control('', { validators: [Validators.required, Validators.minLength(6)] }),\n passwordConfirmation: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6)\n ]\n }),\n terms: this.formBuilder.control(false, { nonNullable: true,\n validators: [Validators.requiredTrue]\n }),\n }, { validators: [ ConfirmPasswordValidator.MatchFields ] });\n this.signUpFormKeys = UtilsService.getKeysAsValueObject(this.signUpForm.getRawValue());\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get emailField(): FormControl<string> {\n return this.signUpForm.get('email') as FormControl<string>;\n }\n\n get passwordField(): FormControl<string> {\n return this.signUpForm.get('password') as FormControl<string>;\n }\n\n get passwordConfirmationField(): FormControl<string> {\n return this.signUpForm.get('passwordConfirmation') as FormControl<string>;\n }\n\n get termsField(): FormControl<boolean> {\n return this.signUpForm.get('terms') as FormControl<boolean>;\n }\n\n public signUp(): void {\n this.signUpForm.markAllAsTouched();\n\n if (this.signUpForm.valid) {\n this.loadInProgress = true;\n this.errorMessage = '';\n this.successMessage = '';\n const formValues: SignUpForm = this.signUpForm.getRawValue();\n\n this.authService.signUp({\n email: formValues.email!,\n password: formValues.password!,\n terms: formValues.terms!\n } as IRtseeSignUpRequestOptions).subscribe({\n next: (response: IRTSeeSignUpResponse) => {\n this.loadInProgress = false;\n this.successMessage = 'Registration successful! You can now sign in.';\n void this.router.navigate(this.authConfiguration.getRoutePathSplit(this.AuthEndpointsKeys.SIGN_IN));\n console.log('User registered successfully', response);\n },\n error: (error) => {\n this.loadInProgress = false;\n this.errorMessage = error.error?.message || 'Error during registration. Please try again.';\n console.error('Error during registration', error);\n }\n });\n }\n }\n\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Personal Account Registration</h2>\n <p class=\"auth-title-description\">Create your personal account to view stories</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"signUpForm\" (ngSubmit)=\"signUp()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"sign-up-email\"\n pInputText\n [formControl]=\"emailField\"\n [class.p-invalid]=\"emailField.invalid && emailField.touched\"\n />\n <label for=\"sign-up-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (emailField.hasError('required') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is required</p-message>\n }\n @if (emailField.hasError('email') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Please enter a valid email address</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"sign-up-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n [styleClass]=\"(passwordField.invalid && passwordField.touched) || (signUpForm.hasError('confirmPassword') && passwordField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"sign-up-password\">Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (passwordField.hasError('required') && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n @if (passwordField.hasError('minlength') && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password must be at least 6 characters long</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"confirm-password\"\n [formControl]=\"passwordConfirmationField\"\n [feedback]=\"false\"\n [styleClass]=\"(passwordConfirmationField.invalid && passwordConfirmationField.touched) || (signUpForm.hasError('confirmPassword') && passwordConfirmationField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"confirm-password\">Confirm Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (passwordConfirmationField.hasError('required') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation is required</p-message>\n }\n @if (passwordConfirmationField.hasError('minlength') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation must be at least 6 characters long</p-message>\n }\n @if (signUpForm.hasError('confirmPassword') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Passwords do not match</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n <div class=\"rtsee-form-field-container\">\n <p-checkbox inputId=\"terms\" [binary]=\"true\" [formControl]=\"termsField\" />\n <label for=\"terms\" class=\"ml-2\">I agree to the&nbsp;<a href=\"#\" [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.PRIVACY_POLICY)\" class=\"auth-deep-blue-sm-medium\">terms of use</a></label>\n @if (termsField.hasError('required') && termsField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >You must accept the terms and conditions</p-message>\n }\n </div>\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Sign Up\"\n [disabled]=\"loadInProgress\"\n />\n @if (loadInProgress) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Already have an account?</span>\n <span>&nbsp;</span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN)\"\n class=\"auth-deep-blue-sm-medium\"\n >Sign In</a>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport { UtilsService } from '../services/utils.service';\nimport { ForgotPasswordForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { Router, RouterLink } from '@angular/router';\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from \"@rtsee/auth\";\nimport { RTSeeAuthService, IRtseeForgotPasswordRequestOptions, IRTSeeForgotPasswordResponse } from \"../services/auth.service\";\nimport { NgOptimizedImage } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-forgot-password',\n templateUrl: './forgot-password.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n FloatLabel,\n Message,\n ProgressSpinner\n ],\n standalone: true\n})\nexport class ForgotPasswordComponent {\n public isLoading: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n public readonly emailForm: FormGroup<TypedReactiveForm<ForgotPasswordForm>>;\n public readonly forgotPasswordFormKeys: Record<keyof ForgotPasswordForm, string>;\n authConfiguration: RTSeeAuthConfiguration;\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n private authService: RTSeeAuthService\n ) {\n this.emailForm= this.formBuilder.group<TypedReactiveForm<ForgotPasswordForm>>({\n email: this.formBuilder.nonNullable.control('', { validators: [Validators.required, Validators.email] }),\n });\n this.forgotPasswordFormKeys = UtilsService.getKeysAsValueObject(this.emailForm.getRawValue());\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get emailField(): FormControl<string> {\n return this.emailForm.get('email') as FormControl<string>;\n }\n\n public submitEmail(): void {\n this.emailForm.markAllAsTouched();\n\n if (this.emailForm.valid) {\n this.isLoading = true;\n this.errorMessage = '';\n this.successMessage = '';\n const email = this.emailForm.getRawValue().email;\n\n this.authService.forgotPassword({ email } as IRtseeForgotPasswordRequestOptions).subscribe({\n next: (response: IRTSeeForgotPasswordResponse) => {\n this.isLoading = false;\n this.successMessage = response.message || 'Password reset email sent successfully!';\n console.log('Password reset email sent successfully', response);\n void this.router.navigate(this.authConfiguration.getRoutePathSplit(this.AuthEndpointsKeys.SIGN_IN));\n },\n error: (error) => {\n this.isLoading = false;\n this.errorMessage = error.error?.message || 'Error sending password reset email. Please try again.';\n console.error('Error sending password reset email', error);\n }\n });\n }\n }\n\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Password Recovery</h2>\n <p class=\"auth-title-description\">Enter your email address to receive password reset instructions</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"emailForm\" (ngSubmit)=\"submitEmail()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"forgot-password-email\"\n pInputText\n [formControl]=\"emailField\"\n [class.p-invalid]=\"emailField.invalid && emailField.touched\"\n />\n <label for=\"forgot-password-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (emailField.hasError('required') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is required</p-message>\n }\n @if (emailField.hasError('email') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Please enter a valid email address</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Send\"\n [disabled]=\"isLoading\"\n />\n @if (isLoading) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Remember your password?</span>\n <span>&nbsp;</span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN)\"\n class=\"auth-deep-blue-sm-medium\"\n >Sign In</a>\n </p>\n</div>\n","export enum FormErrorKey {\n required = 'required',\n email = 'email',\n minLength = 'minlength',\n maxLength = 'maxlength',\n requiredLength = 'requiredLength',\n passwordsMismatch = 'passwordsMismatch'\n}\n","export const COMMON_CONSTANTS = {\n minPasswordLength: 8,\n requestItemLimit: 20,\n customTimeFormat: 'HH:mm',\n customDateFormat: 'dd/MM/YYYY',\n customDateFormatDaysJs: 'DD/MM/YYYY',\n customDateTimeFormat: 'dd/MM/YYYY HH:mm',\n};\n","import { Component, OnInit } from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, ValidatorFn, Validators, ValidationErrors} from '@angular/forms';\nimport { ResetPasswordForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { UtilsService } from '../services/utils.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FormErrorKey } from '../../enums/form.enum';\nimport { COMMON_CONSTANTS } from '../../constans/common.const';\nimport { RTSeeAuthService, IRtseeResetPasswordRequestOptions, IRTSeeResetPasswordResponse } from \"../services/auth.service\";\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from \"@rtsee/auth\";\nimport { NgOptimizedImage } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-reset-password',\n templateUrl: './reset-password.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n ButtonModule,\n InputGroup,\n Password,\n FloatLabel,\n Message,\n ProgressSpinner\n ],\n standalone: true\n})\nexport class ResetPasswordComponent implements OnInit {\n public isLoading: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n public resetPasswordForm: FormGroup<TypedReactiveForm<ResetPasswordForm>>;\n public passwordFormKeys: Record<keyof ResetPasswordForm, string>;\n public hidePassword: Record<keyof ResetPasswordForm, boolean> = {\n password: true,\n passwordConfirm: true\n };\n private token!: string;\n authConfiguration: RTSeeAuthConfiguration;\n\n constructor(\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private readonly router: Router,\n private authService: RTSeeAuthService\n ) {\n this.resetPasswordForm = this.formBuilder.group({\n password: this.formBuilder.control('', {validators: [Validators.required, Validators.minLength(COMMON_CONSTANTS.minPasswordLength)], nonNullable: true}),\n passwordConfirm: this.formBuilder.control('', {validators: [Validators.required, Validators.minLength(COMMON_CONSTANTS.minPasswordLength)], nonNullable: true}),\n }, {validators: [this.passwordMatchValidator()]});\n this.passwordFormKeys = UtilsService.getKeysAsValueObject(this.resetPasswordForm.value);\n this.authConfiguration = this.authService.authConfiguration;\n }\n\n get passwordField(): FormControl<string> {\n return this.resetPasswordForm.get('password') as FormControl<string>;\n }\n\n get passwordConfirmField(): FormControl<string> {\n return this.resetPasswordForm.get('passwordConfirm') as FormControl<string>;\n }\n\n public ngOnInit(): void {\n this.token = this.route.snapshot.params['token'];\n }\n\n public resetPassword(): void {\n this.resetPasswordForm.markAllAsTouched();\n\n if (this.resetPasswordForm.valid) {\n this.isLoading = true;\n this.errorMessage = '';\n this.successMessage = '';\n const formValues = this.resetPasswordForm.getRawValue();\n\n this.authService.resetPassword({\n password: formValues.password,\n passwordConfirm: formValues.passwordConfirm,\n token: this.token\n } as IRtseeResetPasswordRequestOptions).subscribe({\n next: (response: IRTSeeResetPasswordResponse) => {\n this.isLoading = false;\n this.successMessage = response.message || 'Password reset successfully!';\n console.log('Password reset successfully', response);\n void this.router.navigate(this.authConfiguration.getRoutePathSplit(this.AuthEndpointsKeys.SIGN_IN));\n },\n error: (error) => {\n this.isLoading = false;\n this.errorMessage = error.error?.message || 'Error resetting password. Please try again.';\n console.error('Error resetting password', error);\n }\n });\n }\n }\n\n private passwordMatchValidator(): ValidatorFn {\n // @ts-ignore\n return (form: FormGroup<TypedReactiveForm<ResetPasswordForm>>): ValidationErrors | null => {\n const password = form.value.password;\n const passwordConfirm = form.value.passwordConfirm;\n if (password !== passwordConfirm) {\n if (form.controls.password.valid) {\n form.controls.password.setErrors({[FormErrorKey.passwordsMismatch]: true});\n }\n if (form.controls.passwordConfirm.valid) {\n form.controls.passwordConfirm.setErrors({[FormErrorKey.passwordsMismatch]: true});\n }\n return {[FormErrorKey.passwordsMismatch]: true};\n }\n if (form.controls.password.hasError(FormErrorKey.passwordsMismatch)) {\n form.controls.password.setErrors(null);\n }\n if (form.controls.passwordConfirm.hasError(FormErrorKey.passwordsMismatch)) {\n form.controls.passwordConfirm.setErrors(null);\n }\n return null;\n }\n }\n\n protected readonly FormErrorKey = FormErrorKey;\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Password Reset</h2>\n <p class=\"auth-title-description\">Please enter a new password for your account.</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"new-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n [class]=\"(passwordField.invalid && passwordField.touched) || (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"new-password\">New Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!passwordField.valid && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"confirm-password\"\n [formControl]=\"passwordConfirmField\"\n [feedback]=\"false\"\n [class]=\"(passwordConfirmField.invalid && passwordConfirmField.touched) || (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordConfirmField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"confirm-password\">Confirm Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!passwordConfirmField.valid && passwordConfirmField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation is required</p-message>\n }\n @if (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordConfirmField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Passwords do not match</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Reset Password\"\n [disabled]=\"isLoading\"\n />\n @if (isLoading) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Remember your password?</span>\n <span>&nbsp;</span>\n <a href=\"#\" class=\"auth-deep-blue-sm-medium\">Sign In</a>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'rtsee-privacy-policy',\n templateUrl: './privacy-policy.component.html',\n styleUrls: ['./privacy-policy.component.scss'],\n imports: [\n ButtonModule,\n MessageModule\n ],\n standalone: true\n})\nexport class PrivacyPolicyComponent {\n\n}\n\n","<div class=\"privacy-policy-container\">\n <div class=\"policy-card\">\n <div class=\"header-section\">\n <div class=\"header-content\">\n <div class=\"flex justify-content-center align-items-center\">\n <h1>Terms of Use & Privacy Policy</h1>\n </div>\n </div>\n </div>\n\n <div class=\"content-section\">\n <p-message severity=\"info\" [closable]=\"false\" class=\"info-banner\">\n <ng-template pTemplate>\n <div class=\"p-message-content\">\n <p class=\"last-updated\"><strong>Last Updated:</strong> December 2024</p>\n <p>By using our services, you agree to the terms and conditions outlined in this document. Please read this Privacy Policy and Terms of Use carefully before using our platform.</p>\n </div>\n </ng-template>\n </p-message>\n\n <h2>1. Acceptance of Terms</h2>\n <p>By accessing and using this service, you accept and agree to be bound by the terms and provision of this agreement. If you do not agree to abide by the above, please do not use this service.</p>\n\n <h2>2. Privacy Policy</h2>\n\n <h3>2.1 Information We Collect</h3>\n <p>We collect information you provide directly to us, such as when you create an account, use our services, or contact us for support. This may include:</p>\n <ul>\n <li><strong>Personal Information:</strong> Name, email address, phone number, and other contact details</li>\n <li><strong>Account Information:</strong> Username, password, and profile information</li>\n <li><strong>Usage Data:</strong> Information about how you use our services, including pages visited, time spent, and features used</li>\n <li><strong>Device Information:</strong> IP address, browser type, operating system, and device identifiers</li>\n <li><strong>Cookies and Tracking:</strong> We use cookies and similar technologies to enhance your experience</li>\n </ul>\n\n <h3>2.2 How We Use Your Information</h3>\n <p>We use the information we collect to:</p>\n <ul>\n <li>Provide, maintain, and improve our services</li>\n <li>Process transactions and send related information</li>\n <li>Send technical notices, updates, security alerts, and support messages</li>\n <li>Respond to your comments, questions, and requests</li>\n <li>Monitor and analyze trends, usage, and activities</li>\n <li>Personalize and improve your experience</li>\n <li>Detect, investigate, and prevent fraudulent transactions and other illegal activities</li>\n </ul>\n\n <h3>2.3 Information Sharing and Disclosure</h3>\n <p>We do not sell, trade, or otherwise transfer your personal information to third parties without your consent, except in the following circumstances:</p>\n <ul>\n <li><strong>Service Providers:</strong> We may share information with trusted third-party service providers who assist us in operating our platform</li>\n <li><strong>Legal Requirements:</strong> We may disclose information when required by law or to protect our rights and safety</li>\n <li><strong>Business Transfers:</strong> In connection with any merger, sale of assets, or acquisition of all or a portion of our business</li>\n <li><strong>Consent:</strong> We may share information with your explicit consent</li>\n </ul>\n\n <h3>2.4 Data Security</h3>\n <p>We implement appropriate technical and organizational security measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the internet or electronic storage is 100% secure.</p>\n\n <h3>2.5 Data Retention</h3>\n <p>We retain your personal information for as long as necessary to provide our services and fulfill the purposes outlined in this privacy policy, unless a longer retention period is required or permitted by law.</p>\n\n <h3>2.6 Your Rights</h3>\n <p>Depending on your location, you may have certain rights regarding your personal information, including:</p>\n <ul>\n <li>The right to access and receive a copy of your personal information</li>\n <li>The right to rectify or update your personal information</li>\n <li>The right to erase your personal information</li>\n <li>The right to restrict or object to the processing of your personal information</li>\n <li>The right to data portability</li>\n <li>The right to withdraw consent at any time</li>\n </ul>\n\n <h2>3. Terms of Service</h2>\n\n <h3>3.1 User Accounts</h3>\n <p>To access certain features of our service, you may be required to create an account. You are responsible for:</p>\n <ul>\n <li>Maintaining the confidentiality of your account credentials</li>\n <li>All activities that occur under your account</li>\n <li>Notifying us immediately of any unauthorized use of your account</li>\n <li>Providing accurate and up-to-date information</li>\n </ul>\n\n <h3>3.2 Acceptable Use</h3>\n <p>You agree not to use our service for any unlawful purpose or any purpose prohibited under this clause. You may not use our service in any manner that could damage, disable, overburden, or impair our servers or networks.</p>\n\n <h3>3.3 Prohibited Activities</h3>\n <p>The following activities are prohibited:</p>\n <ul>\n <li>Violating any applicable laws or regulations</li>\n <li>Transmitting or procuring the sending of any unsolicited or unauthorized advertising</li>\n <li>Attempting to gain unauthorized access to any portion of our service</li>\n <li>Interfering with or disrupting the service or servers connected to the service</li>\n <li>Using any automated system to access the service for any purpose</li>\n <li>Impersonating any person or entity or misrepresenting your affiliation with a person or entity</li>\n </ul>\n\n <h3>3.4 Intellectual Property</h3>\n <p>The service and its original content, features, and functionality are and will remain the exclusive property of our company and its licensors. The service is protected by copyright, trademark, and other laws.</p>\n\n <h3>3.5 Termination</h3>\n <p>We may terminate or suspend your account and bar access to the service immediately, without prior notice or liability, under our sole discretion, for any reason whatsoever, including without limitation if you breach the Terms.</p>\n\n <h3>3.6 Disclaimer</h3>\n <p>The information on this service is provided on an \"as is\" basis. To the fullest extent permitted by law, this company excludes all representations, warranties, conditions and terms relating to our service and the use of this service.</p>\n\n <h3>3.7 Limitation of Liability</h3>\n <p>In no event shall our company, nor its directors, employees, partners, agents, suppliers, or affiliates, be liable for any indirect, incidental, special, consequential, or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from your use of the service.</p>\n\n <h2>4. Cookies and Tracking Technologies</h2>\n <p>We use cookies and similar tracking technologies to track activity on our service and hold certain information. Cookies are files with a small amount of data which may include an anonymous unique identifier. You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent.</p>\n\n <h2>5. Third-Party Services</h2>\n <p>Our service may contain links to third-party websites or services that are not owned or controlled by us. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party websites or services.</p>\n\n <h2>6. Children's Privacy</h2>\n <p>Our service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us.</p>\n\n <h2>7. International Data Transfers</h2>\n <p>Your information may be transferred to and processed in countries other than your own. We ensure that such transfers comply with applicable data protection laws and implement appropriate safeguards to protect your personal information.</p>\n\n <h2>8. Changes to This Policy</h2>\n <p>We reserve the right to update or change our Privacy Policy and Terms of Use at any time. We will notify you of any changes by posting the new Privacy Policy and Terms of Use on this page and updating the \"Last Updated\" date.</p>\n\n <div class=\"contact-section\">\n <h2>9. Contact Information</h2>\n <p>If you have any questions about this Privacy Policy and Terms of Use, please contact us:</p>\n <ul>\n <li><strong>Email:</strong> [Your Email Address]</li>\n <li><strong>Address:</strong> [Your Company Address]</li>\n <li><strong>Phone:</strong> [Your Contact Number]</li>\n </ul>\n </div>\n\n <div class=\"footer-section\">\n <p>This document was last updated on December 2024</p>\n </div>\n </div>\n </div>\n</div>\n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {SignInComponent} from \"../sign-in/sign-in.component\";\nimport {SignUpComponent} from \"../sign-up/sign-up.component\";\nimport {ForgotPasswordComponent} from \"../forgot-password/forgot-password.component\";\nimport {ResetPasswordComponent} from \"../reset-password/reset-password.component\";\nimport {PrivacyPolicyComponent} from \"../privacy-policy/privacy-policy.component\";\nimport {NgIf} from \"@angular/common\";\nimport {RTSeeAuthService} from \"../services/auth.service\";\nimport {RTSeeAuth} from \"@rtsee/auth\";\nimport {AuthEndpointsKeys, DEFAULT_ROUTE_NAMES} from \"@rtsee/auth\";\n\n@Component({\n selector: 'rtsee-auth',\n templateUrl: './auth.component.html',\n imports: [\n SignInComponent,\n SignUpComponent,\n ForgotPasswordComponent,\n ResetPasswordComponent,\n PrivacyPolicyComponent,\n NgIf\n ],\n standalone: true\n})\nexport class RTSeeAuthComponent implements OnInit {\n @Input() auth!: RTSeeAuth<any>;\n\n activeComponent: 'reset-password' | 'sign-up' | 'sign-in' | 'forgot-password' | 'privacy-policy' = 'sign-in' ;\n\n constructor(public authService: RTSeeAuthService) {\n console.log('constructor', window.location.pathname);\n\n if (window.location.pathname.includes(DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.SIGN_IN])) {\n this.activeComponent = 'sign-in';\n } else if (window.location.pathname.includes(DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.SIGN_UP])) {\n this.activeComponent = 'sign-up';\n } else if (window.location.pathname.includes(DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.FORGOT_PASSWORD])) {\n this.activeComponent = 'forgot-password';\n } else if (\n window.location.pathname\n .includes(DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.RESET_PASSWORD].split('/')[0])\n ) {\n this.activeComponent = 'reset-password';\n } else if (window.location.pathname.includes(DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.PRIVACY_POLICY])) {\n this.activeComponent = 'privacy-policy';\n }\n }\n\n ngOnInit() {\n this.authService.init(this.auth);\n }\n}\n","<div class=\"rtsee-auth\">\n @if (authService.rtseeAuth) {\n @if (activeComponent === 'sign-in') {\n <rtsee-sign-in></rtsee-sign-in>\n }\n @if (activeComponent === 'sign-up') {\n <rtsee-sign-up></rtsee-sign-up>\n }\n @if (activeComponent === 'forgot-password') {\n <rtsee-forgot-password></rtsee-forgot-password>\n }\n @if (activeComponent === 'reset-password') {\n <rtsee-reset-password *ngIf=\"activeComponent === 'reset-password'\"></rtsee-reset-password>\n }\n @if (activeComponent === 'privacy-policy') {\n <rtsee-privacy-policy></rtsee-privacy-policy>\n }\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-peers-list',\n templateUrl: './rtsee-peers-list.component.html',\n styleUrls: ['./rtsee-peers-list.component.scss'],\n standalone: true\n})\nexport class RtseePeersListComponent {}\n","<p>rtsee-peers-list works!</p>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client',\n templateUrl: './rtsee-events-dashboard-client.component.html',\n standalone: true\n})\nexport class RtseeEventsDashboardClientComponent {}\n","<p>rtsee-events-dashboard-client works!</p>\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\nimport shave from 'shave';\n\n@Directive({\n selector: '[rtseeShave]',\n standalone: true\n})\nexport class ShaveDirective implements AfterViewInit {\n constructor(private elem: ElementRef<HTMLDivElement>) {}\n\n ngAfterViewInit() {\n const height = this.elem.nativeElement?.offsetHeight;\n shave(this.elem.nativeElement as unknown as NodeList, height);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rtsee-vendors',\n templateUrl: './vendors.component.html',\n standalone: true\n})\nexport class VendorsComponent {\n\n}\n","<p>vendors works!</p>\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { RTSeeControlsComponent } from './components/rtsee/rtsee-controls/rtsee-controls.component';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { RtseePeerComponent } from './components/rtsee-peer/rtsee-peer.component';\nimport { RtseeSoundbarComponent } from './components/rtsee-soundbar/rtsee-soundbar.component';\nimport { RtseePeersListComponent } from './components/rtsee-peers-list/rtsee-peers-list.component';\nimport { RtseeSettingsComponent } from './components/rtsee-settings/rtsee-settings.component';\nimport { MessengerComponent } from './components/rtsee-messenger/messenger/messenger.component';\nimport { ChatComponent } from './components/rtsee-messenger/chat/chat.component';\nimport { MessageComponent } from './components/rtsee-messenger/message/message.component';\nimport { ChatsListComponent } from './components/rtsee-messenger/chats-list/chats-list.component';\nimport { MessagesListComponent } from './components/rtsee-messenger/messages-list/messages-list.component';\nimport { ChatThumbnailComponent } from './components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component';\nimport { ChatInputComponent } from './components/rtsee-messenger/chat-input/chat-input.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MessengerHeaderComponent } from './components/rtsee-messenger/messenger-header/messenger-header.component';\nimport { RtseeEventsDashboardComponent } from './components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nimport { RtseeEventsDashboardClientComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component';\nimport { RtseeEventsDashboardClientThumbnailComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component';\nimport { WidgetDirective } from './directives/widget.directive';\nimport { CallWidgetComponent } from './components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\nimport { AutosizeModule } from 'ngx-autosize';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { MainMenuComponent } from './components/rtsee-messenger/main-menu/main-menu.component';\nimport { MessageTimeAndStatusComponent } from './components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component';\nimport { PreloaderComponent } from './common/components/preloader/preloader.component';\nimport { SearchComponent } from './components/rtsee-messenger/main-menu/components/search/search.component';\nimport { ManageChatComponent } from './components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component';\nimport { ContactsMultiselectComponent } from './components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component';\nimport { ShaveDirective } from './directives/shave.directive';\nimport { ProfileComponent } from './components/rtsee-messenger/profile/profile.component';\nimport { EventThumbnailComponent } from './components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component';\nimport { RtseeEventsDashboardSessionComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component';\nimport { RTSeeContainerComponent } from './components/rtsee-container/rtsee-container.component';\nimport { RTSeeConferenceComponent } from './components/rtsee/rtsee-conference.component';\nimport { PresentationComponent } from './components/rtsee-presentation/presentation/presentation.component';\nimport { StoryPlayerComponent } from './components/rtsee-presentation/story-player/story-player.component';\nimport { SlideComponent } from './components/rtsee-presentation/slide/slide.component';\nimport { StoryThumbnailComponent } from './components/rtsee-presentation/story-thumbnail/story-thumbnail.component';\nimport { SignUpComponent } from \"./components/rtsee-auth/sign-up/sign-up.component\";\nimport { SignInComponent } from \"./components/rtsee-auth/sign-in/sign-in.component\";\nimport { ForgotPasswordComponent } from \"./components/rtsee-auth/forgot-password/forgot-password.component\";\nimport { VendorsComponent } from \"./components/rtsee-auth/vendors/vendors.component\";\nimport { RTSeeAuthComponent } from './components/rtsee-auth/auth/auth.component';\nimport { RouterLink, RouterLinkActive } from \"@angular/router\";\nimport { ResetPasswordComponent } from './components/rtsee-auth/reset-password/reset-password.component';\nimport { PresentationHeaderComponent } from './components/rtsee-presentation/presentation-header/presentation-header.component';\nimport { NgxCaptchaModule } from \"ngx-captcha\";\nimport { provideAnimationsAsync } from \"@angular/platform-browser/animations/async\";\nimport { providePrimeNG } from \"primeng/config\";\nimport Aura from '@primeuix/themes/aura';\n\n@NgModule({\n providers: [\n provideAnimationsAsync(),\n providePrimeNG({\n theme: {\n preset: Aura\n }\n })\n ],\n declarations: [],\n imports: [\n RTSeeAuthComponent,\n VendorsComponent,\n ForgotPasswordComponent,\n SignInComponent,\n SignUpComponent,\n RtseeEventsDashboardSessionComponent,\n EventThumbnailComponent,\n ShaveDirective,\n ContactsMultiselectComponent,\n ManageChatComponent,\n CallWidgetComponent,\n WidgetDirective,\n RtseeEventsDashboardClientComponent,\n ResetPasswordComponent,\n RtseeEventsDashboardClientThumbnailComponent,\n RtseePeersListComponent,\n ChatComponent,\n MessageComponent,\n MessagesListComponent,\n ChatThumbnailComponent,\n ChatInputComponent,\n RtseeEventsDashboardComponent,\n MessengerComponent,\n RTSeeControlsComponent,\n RTSeeContainerComponent,\n RTSeeConferenceComponent,\n RtseePeerComponent,\n RtseeSoundbarComponent,\n RtseeSettingsComponent,\n MessengerHeaderComponent,\n ChatsListComponent,\n ProfileComponent,\n MainMenuComponent,\n MessageTimeAndStatusComponent,\n PreloaderComponent,\n SearchComponent,\n PresentationComponent,\n StoryPlayerComponent,\n SlideComponent,\n StoryThumbnailComponent,\n PresentationHeaderComponent,\n CommonModule,\n ReactiveFormsModule,\n AutosizeModule,\n InfiniteScrollModule,\n FormsModule,\n NgOptimizedImage,\n RouterLink,\n RouterLinkActive,\n NgxCaptchaModule\n ],\n exports: [\n RTSeeConferenceComponent,\n MessengerComponent,\n RtseeEventsDashboardComponent,\n RTSeeContainerComponent,\n PresentationComponent,\n RTSeeAuthComponent\n ],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA,\n ]\n})\nexport class RTSeeModule {}\n","/*\n * Public API Surface of ngx\n */\n\nexport * from './lib/ngx.service';\nexport * from './lib/components/rtsee/rtsee-controls/rtsee-controls.component';\nexport * from './lib/components/rtsee-settings/rtsee-settings.component';\nexport * from './lib/components/rtsee/rtsee-conference.component';\nexport * from './lib/components/rtsee-peer/rtsee-peer.component';\nexport * from './lib/components/rtsee-messenger/profile/profile.component';\nexport * from './lib/components/rtsee-messenger/messenger/messenger.component';\nexport * from './lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nexport * from './lib/components/rtsee-container/rtsee-container.component';\nexport * from './lib/components/rtsee-presentation/presentation/presentation.component';\nexport * from './lib/components/rtsee-auth/auth/auth.component';\nexport * from './lib/ngx.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DefaultImagesService","i1.TimeFormatHelperService","i1.MessageWidgetsService","i2.TimeFormatHelperService","i1.EventsWidgetsService","i2.DefaultImagesService","i2","i1","i3.RTSeeAuthService","i1.RTSeeAuthService"],"mappings":"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"}