{"version":3,"file":"ngx-webrtc-lib.mjs","sources":["../../../projects/ngx-webrtc-lib/src/lib/components/abstract-dialog.component.ts","../../../projects/ngx-webrtc-lib/src/lib/components/controls/controls.component.ts","../../../projects/ngx-webrtc-lib/src/lib/components/controls/controls.component.html","../../../projects/ngx-webrtc-lib/src/lib/components/user-state/user-state.component.ts","../../../projects/ngx-webrtc-lib/src/lib/components/user-state/user-state.component.html","../../../projects/ngx-webrtc-lib/src/lib/components/local-stream-view/local-stream-view.component.ts","../../../projects/ngx-webrtc-lib/src/lib/components/local-stream-view/local-stream-view.component.html","../../../projects/ngx-webrtc-lib/src/lib/components/remote-stream-view/remote-stream-view.component.ts","../../../projects/ngx-webrtc-lib/src/lib/components/remote-stream-view/remote-stream-view.component.html","../../../projects/ngx-webrtc-lib/src/lib/components/spinner/spinner.component.ts","../../../projects/ngx-webrtc-lib/src/lib/components/spinner/spinner.component.html","../../../projects/ngx-webrtc-lib/src/lib/components/timer/timer.component.ts","../../../projects/ngx-webrtc-lib/src/lib/components/timer/timer.component.html","../../../projects/ngx-webrtc-lib/src/lib/animations/fade.animation.ts","../../../projects/ngx-webrtc-lib/src/lib/components/video-call/video-call.component.ts","../../../projects/ngx-webrtc-lib/src/lib/components/video-call/video-call.component.html","../../../projects/ngx-webrtc-lib/src/lib/directives/toggle.directive.ts","../../../projects/ngx-webrtc-lib/src/lib/services/dialog.service.ts","../../../projects/ngx-webrtc-lib/src/lib/models/stream-state.model.ts","../../../projects/ngx-webrtc-lib/src/lib/services/web-rtc.service.ts","../../../projects/ngx-webrtc-lib/src/lib/webrtc.component.ts","../../../projects/ngx-webrtc-lib/src/lib/webrtc.component.html","../../../projects/ngx-webrtc-lib/src/lib/services/video-call-dialog.service.ts","../../../projects/ngx-webrtc-lib/src/lib/webrtc-lib.module.ts","../../../projects/ngx-webrtc-lib/src/lib/webrtc-lib.provider.ts","../../../projects/ngx-webrtc-lib/src/public-api.ts","../../../projects/ngx-webrtc-lib/src/ngx-webrtc-lib.ts"],"sourcesContent":["import { ChangeDetectorRef } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport abstract class DialogComponent {\n  afterClosed = new Subject<any>();\n  shown = true;\n\n  constructor(protected cdr: ChangeDetectorRef) {}\n\n  closeDialog(data?: any): void {\n    this.onAfterClosed(data);\n  }\n\n  private onAfterClosed(data?: any): void {\n    this.shown = false;\n    this.cdr.markForCheck();\n    this.afterClosed.next(data);\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'ngx-controls',\n  templateUrl: './controls.component.html',\n  styleUrls: ['./controls.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ControlsComponent {\n  @Input() cameraEnabled = true;\n  @Input() microphoneEnabled = true;\n  @Input() fullScreenEnabled = false;\n  @Input() smallScreenEnabled = false;\n  @Input() displaySmallScreen = false;\n  @Output() toggleCamera = new EventEmitter<boolean>();\n  @Output() toggleMicrophone = new EventEmitter<boolean>();\n  @Output() toggleFullScreen = new EventEmitter<boolean>();\n  @Output() toggleSmallScreen = new EventEmitter<boolean>();\n  @Output() endCall = new EventEmitter<void>();\n\n  onToggleCamera(): void {\n    this.toggleCamera.emit(this.cameraEnabled);\n  }\n\n  onToggleMicrophone(): void {\n    this.toggleMicrophone.emit(this.microphoneEnabled);\n  }\n\n  onToggleFullScreen(): void {\n    this.toggleFullScreen.emit(this.fullScreenEnabled);\n  }\n\n  onToggleSmallScreen(): void {\n    this.toggleSmallScreen.emit(this.smallScreenEnabled);\n  }\n\n  onEndCall(): void {\n    this.endCall.emit();\n  }\n}\n","<div class=\"controls\" [class.controls--small]=\"smallScreenEnabled\">\n  <div class=\"controls__item\">\n    <button (click)=\"onToggleCamera()\" class=\"controls__button\" [class.controls__button--active]=\"cameraEnabled\">\n      <div class=\"controls__icon-wrapper\">\n        <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <g id=\"video-camera\" class=\"controls__icon\" [class.controls__icon--shown]=\"cameraEnabled\">\n            <g id=\"Group\">\n              <g id=\"Group_2\">\n                <path id=\"Vector\"\n                  d=\"M63.4134 16.2294C63.0454 15.9814 62.5787 15.928 62.1707 16.096L50.6668 20.6986V20C50.6668 16.3226 47.6748 13.3334 44.0001 13.3334H6.66663C2.992 13.3334 0 16.3226 0 20V44C0 47.6774 2.992 50.6666 6.66663 50.6666H44C47.6746 50.6666 50.6666 47.6772 50.6666 44V43.3014L62.1706 47.904C62.5812 48.072 63.048 48.0186 63.4132 47.7706C63.7786 47.5226 63.9999 47.1093 63.9999 46.6666V17.3334C64 16.8906 63.7786 16.4774 63.4134 16.2294Z\"\n                  fill=\"white\" />\n              </g>\n            </g>\n          </g>\n          <g id=\"no-camera\" class=\"controls__icon\" [class.controls__icon--shown]=\"!cameraEnabled\">\n            <g id=\"Group\">\n              <g id=\"Group_2\">\n                <path id=\"Vector\"\n                  d=\"M44.0002 13.3325H6.66735C2.99276 13.3325 0.000793457 16.3218 0.000793457 19.999V43.9988C0.000793457 47.6761 2.99276 50.6654 6.66735 50.6654H7.67797L44.9176 13.4257C44.6162 13.3832 44.315 13.3325 44.0002 13.3325Z\"\n                  fill=\"white\" />\n              </g>\n            </g>\n            <g id=\"Group_3\">\n              <g id=\"Group_4\">\n                <path id=\"Vector_2\"\n                  d=\"M63.4134 16.2285C63.0454 15.9805 62.5788 15.9271 62.1708 16.0951L50.6669 20.6977V19.9991C50.6669 18.6417 50.2535 17.3831 49.5549 16.3297L63.608 2.2766C64.128 1.75661 64.128 0.911242 63.608 0.391247C63.088 -0.128748 62.2426 -0.128748 61.7226 0.391247L0.389996 61.724C-0.129999 62.244 -0.129999 63.0894 0.389996 63.6094C0.651369 63.868 0.992615 63.9988 1.33399 63.9988C1.67536 63.9988 2.01661 63.8681 2.27798 63.6094L15.2192 50.6655H44.0003C47.6749 50.6655 50.6669 47.6762 50.6669 43.9989V43.3003L62.1708 47.9029C62.5814 48.0709 63.0481 48.0175 63.4134 47.7695C63.7788 47.5215 64 47.1082 64 46.6655V17.3325C64 16.8898 63.7788 16.4765 63.4134 16.2285Z\"\n                  fill=\"white\" />\n              </g>\n            </g>\n          </g>\n        </svg>\n      </div>\n      <p>Camera</p>\n    </button>\n  </div>\n  <div class=\"controls__item\">\n    <button (click)=\"onToggleMicrophone()\" class=\"controls__button\" [class.controls__button--active]=\"microphoneEnabled\">\n      <div class=\"controls__icon-wrapper\">\n        <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <g id=\"microphone\" class=\"controls__icon\" [class.controls__icon--shown]=\"microphoneEnabled\">\n            <g id=\"Vector\">\n              <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n                d=\"M44.3474 12.1407L44.3468 17.2309V33.8672C44.3468 40.6024 38.9004 46.0823 32.206 46.0823C27.8366 46.0787 23.8059 43.7286 21.6503 39.9279L20.4131 36.8161C20.1824 35.875 20.0659 34.9098 20.0659 33.941V12.1407C20.0659 5.43551 25.5014 0 32.2066 0C38.9118 0 44.3474 5.43551 44.3474 12.1407Z\"\n                fill=\"white\" />\n              <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n                d=\"M15.0971 33.7512C15.0947 36.1345 15.5932 38.4912 16.5596 40.6697L18.1223 43.4553C22.3699 49.6259 30.1387 52.3143 37.292 50.089C44.4453 47.8638 49.318 41.2426 49.3156 33.7518C49.3156 32.9026 50.0039 32.2143 50.8532 32.2143C51.7018 32.2143 52.3907 32.9026 52.3907 33.7518C52.4051 44.4499 44.0585 53.2951 33.3778 53.9017V60.9246H39.8098C40.6584 60.9246 41.3473 61.6135 41.3473 62.4622C41.3473 63.3114 40.6584 63.9997 39.8098 63.9997H24.6029C23.7537 63.9997 23.0654 63.3114 23.0654 62.4622C23.0654 61.6135 23.7537 60.9246 24.6029 60.9246H30.3033V53.847C25.6228 53.4212 21.2413 51.3623 17.926 48.0313C17.1926 47.298 16.5163 46.51 15.9031 45.6739L14.2418 42.9874C12.7757 40.1297 12.0148 36.9633 12.022 33.7512C12.022 32.902 12.7103 32.2137 13.5595 32.2137C14.4088 32.2137 15.0971 32.902 15.0971 33.7512Z\"\n                fill=\"white\" />\n            </g>\n          </g>\n          <g id=\"no-microphone\" class=\"controls__icon\" [class.controls__icon--shown]=\"!microphoneEnabled\">\n            <path id=\"Vector\"\n              d=\"M52.9733 4.25592L44.3474 12.8813V12.1407C44.3474 5.43551 38.9118 0 32.2066 0C25.5014 0 20.0659 5.43551 20.0659 12.1407V33.941C20.0659 34.9098 20.1824 35.875 20.4131 36.8161L16.5596 40.6697C15.5932 38.4912 15.0947 36.1345 15.0971 33.7512C15.0971 32.902 14.4088 32.2137 13.5595 32.2137C12.7103 32.2137 12.022 32.902 12.022 33.7512C12.0148 36.9633 12.7757 40.1297 14.2418 42.9874L8.81411 48.4151C8.4117 48.8007 8.24954 49.3731 8.39008 49.9124C8.53002 50.4518 8.95105 50.8728 9.4898 51.0133C10.0291 51.1539 10.6021 50.9917 10.9877 50.5899L15.9031 45.6739C16.5163 46.51 17.1926 47.298 17.926 48.0313C21.2413 51.3623 25.6228 53.4212 30.3033 53.847V60.9246H24.6029C23.7537 60.9246 23.0654 61.6135 23.0654 62.4622C23.0654 63.3114 23.7537 63.9997 24.6029 63.9997H39.8098C40.6584 63.9997 41.3473 63.3114 41.3473 62.4622C41.3473 61.6135 40.6584 60.9246 39.8098 60.9246H33.3778V53.9017C44.0585 53.2951 52.4051 44.4499 52.3907 33.7518C52.3907 32.9026 51.7018 32.2143 50.8532 32.2143C50.0039 32.2143 49.3156 32.9026 49.3156 33.7518C49.318 41.2426 44.4453 47.8638 37.292 50.089C30.1387 52.3143 22.3699 49.6259 18.1224 43.4553L21.6503 39.9279C23.8059 43.7286 27.8366 46.0787 32.206 46.0823C38.9004 46.0823 44.3468 40.6024 44.3468 33.8672V17.2309L55.1475 6.43072C55.7481 5.83071 55.7481 4.85713 55.1475 4.25652C54.5469 3.65591 53.5733 3.65591 52.9733 4.25652V4.25592Z\"\n              fill=\"white\" />\n          </g>\n        </svg>\n      </div>\n      <p>Mic</p>\n    </button>\n  </div>\n\n  @if (!smallScreenEnabled) {\n    <div class=\"controls__item\">\n      <button (click)=\"onToggleFullScreen()\" class=\"controls__button\" [class.controls__button--active]=\"fullScreenEnabled\">\n        <div class=\"controls__icon-wrapper\">\n          <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <g id=\"fullscreen\" class=\"controls__icon\" [class.controls__icon--shown]=\"!fullScreenEnabled\">\n              <g id=\"Group\">\n                <g id=\"Group_2\">\n                  <g id=\"Group_3\">\n                    <path id=\"Vector\"\n                      d=\"M57.8018 53.4382L44.3964 40.0328L40.0328 44.3964L53.4382 57.8018H43.0205V64H64V43.0205H57.8018V53.4382Z\"\n                      fill=\"white\" />\n                    <path id=\"Vector_2\"\n                      d=\"M44.3964 23.9803L57.8018 10.5618V20.9795H64V0H43.0205V6.1982H53.4382L40.0328 19.6036L44.3964 23.9803Z\"\n                      fill=\"white\" />\n                    <path id=\"Vector_3\"\n                      d=\"M19.6036 40.0328L6.1982 53.4382V43.0205H0V64H20.9795V57.8018H10.5618L23.9803 44.3964L19.6036 40.0328Z\"\n                      fill=\"white\" />\n                    <path id=\"Vector_4\"\n                      d=\"M20.9795 6.1982V0H0V20.9795H6.1982V10.5618L19.6036 23.9803L23.9803 19.6036L10.5618 6.1982H20.9795Z\"\n                      fill=\"white\" />\n                  </g>\n                </g>\n              </g>\n            </g>\n            <g id=\"exit-full-screen\" class=\"controls__icon\" [class.controls__icon--shown]=\"fullScreenEnabled\">\n              <g id=\"Group\">\n                <g id=\"fullscreen_x5F_exit\">\n                  <g id=\"Group_2\">\n                    <path id=\"Vector\" d=\"M49.172 54.828L58.344 64L64 58.344L54.828 49.172L64 40H40V64L49.172 54.828Z\"\n                      fill=\"white\" />\n                    <path id=\"Vector_2\" d=\"M0 24H24V0L14.828 9.172L5.75 0.086L0.094 5.742L9.172 14.828L0 24Z\"\n                      fill=\"white\" />\n                    <path id=\"Vector_3\" d=\"M0 58.344L5.656 64L14.828 54.828L24 64V40H0L9.172 49.172L0 58.344Z\"\n                      fill=\"white\" />\n                    <path id=\"Vector_4\" d=\"M40 24H64L54.828 14.828L63.922 5.742L58.266 0.086L49.172 9.172L40 0V24Z\"\n                      fill=\"white\" />\n                  </g>\n                </g>\n              </g>\n            </g>\n          </svg>\n        </div>\n        <p>{{ fullScreenEnabled ? 'Exit fullscreen' : 'Fullscreen' }}</p>\n      </button>\n    </div>\n  }\n\n  @if (displaySmallScreen) {\n    <div class=\"controls__item\">\n      <button (click)=\"onToggleSmallScreen()\" class=\"controls__button controls__button--rotate\" [class.controls__button--active]=\"smallScreenEnabled\">\n        <div class=\"controls__icon-wrapper\">\n          <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <g filter=\"url(#filter0_d_0_4)\">\n              <path\n                d=\"M-4.81762e-07 34.7678V57.0215C-4.81762e-07 60.8696 3.13284 64 6.98275 64H57.016C60.8672 64 64 60.8696 64 57.0215V7.05508C64 3.20697 60.8672 0.0757321 57.016 0.0757321H34.6959C35.8972 1.3077 36.6961 2.93443 36.871 4.74067H57.0168C58.2942 4.74067 59.3335 5.77899 59.3335 7.05508V57.0216C59.3335 58.2969 58.2942 59.3352 57.0168 59.3352H6.98342C5.7062 59.3352 4.66761 58.2969 4.66761 57.0216V36.9389C2.90982 36.7703 1.27948 36.0149 -4.81762e-07 34.7678ZM10.7807 30.6654H26.0384L1.34093 5.97437C-0.02533 4.60686 -0.02533 2.39174 1.34093 1.02583C2.70813 -0.341677 4.92462 -0.341677 6.29089 1.02423L30.9883 25.7159V10.4614C30.9883 8.52907 32.5556 6.96139 34.4888 6.96139C35.4553 6.96139 36.3305 7.35214 36.9642 7.98612C37.5976 8.62116 37.9897 9.49543 37.9897 10.4613V34.1643C37.9897 36.0966 36.4228 37.6635 34.4896 37.6635H10.7807C8.84705 37.6635 7.28056 36.0974 7.28056 34.1643C7.28056 32.2312 8.84705 30.6654 10.7807 30.6654Z\"\n                fill=\"white\" />\n            </g>\n            <defs>\n              <filter id=\"filter0_d_0_4\" x=\"-4\" y=\"0\" width=\"72\" height=\"72\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n                <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n                <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n                <feOffset dy=\"4\" />\n                <feGaussianBlur stdDeviation=\"2\" />\n                <feComposite in2=\"hardAlpha\" operator=\"out\" />\n                <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\" />\n                <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_0_4\" />\n                <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_0_4\" result=\"shape\" />\n              </filter>\n            </defs>\n          </svg>\n        </div>\n        <p>Minimize</p>\n      </button>\n    </div>\n  }\n\n  <div class=\"controls__item\">\n    <button (click)=\"onEndCall()\" class=\"controls__button controls__button--danger\">\n      <div class=\"controls__icon-wrapper\">\n        <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <g id=\"phone\">\n            <g id=\"Group\">\n              <path id=\"Vector\"\n                d=\"M51.7097 13.2478C51.2458 12.7839 50.4959 12.7839 50.032 13.2478L1.38351 61.8963C0.919568 62.3602 0.919568 63.1101 1.38351 63.574C1.61488 63.8054 1.91864 63.9217 2.2224 63.9217C2.52615 63.9217 2.82991 63.8054 3.06129 63.574L51.7097 14.9256C52.1737 14.4628 52.1737 13.7117 51.7097 13.2478Z\"\n                fill=\"white\" />\n              <path id=\"Vector_2\"\n                d=\"M16.9605 42.9635L26.1159 33.8081L21.3365 29.0287C18.91 26.6022 18.6869 24.3679 20.5878 21.5629C20.8535 21.1951 22.5444 19.6941 23.992 18.4839C24.9151 17.9333 25.5487 17.1181 25.8264 16.1155C26.1954 14.783 25.9225 13.2156 25.0516 11.6885C24.8463 11.3373 19.9625 3.06229 15.4583 0.680892C14.6171 0.235937 13.6714 0.0010004 12.721 0.0010004C11.1571 0.0010004 9.68576 0.610886 8.58109 1.71556L5.57082 4.72702C-3.21082 13.5098 -1.58525 24.419 10.2719 36.2749L16.9605 42.9635Z\"\n                fill=\"white\" />\n              <path id=\"Vector_3\"\n                d=\"M63.313 48.5357C60.9304 44.0328 52.6566 39.1478 52.2923 38.9342C51.2304 38.329 50.1209 38.0099 49.0839 38.0099C47.5402 38.0099 46.2753 38.717 45.51 40.0033C44.2986 41.452 42.7964 43.1429 42.4345 43.4051C39.6129 45.3154 37.4071 45.1007 34.9652 42.6588L31.148 38.8416L21.9926 47.997L27.7189 53.7233C34.5356 60.5412 41.0367 63.9976 47.0371 63.9976C47.0383 63.9976 47.0383 63.9976 47.0383 63.9976C51.4534 63.9976 55.5672 62.1217 59.2669 58.4232L62.2771 55.413C64.1068 53.5845 64.5233 50.821 63.313 48.5357Z\"\n                fill=\"white\" />\n            </g>\n          </g>\n        </svg>\n      </div>\n      <p>End</p>\n    </button>\n  </div>\n</div>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ngx-user-state',\n  standalone: true,\n  imports: [NgClass],\n  templateUrl: './user-state.component.html',\n  styleUrl: './user-state.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UserStateComponent {\n  @Input({ required: true }) userName: string;\n  @Input({ required: true }) muted: boolean;\n  @Input() rootClass: string;\n}\n","<div class=\"user-state\" [ngClass]=\"rootClass\">\n  <span>{{ userName }}</span>\n\n  @if (muted) {\n    <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g id=\"microphone\" class=\"controls__icon\">\n        <g id=\"Vector\">\n          <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n            d=\"M44.3474 12.1407L44.3468 17.2309V33.8672C44.3468 40.6024 38.9004 46.0823 32.206 46.0823C27.8366 46.0787 23.8059 43.7286 21.6503 39.9279L20.4131 36.8161C20.1824 35.875 20.0659 34.9098 20.0659 33.941V12.1407C20.0659 5.43551 25.5014 0 32.2066 0C38.9118 0 44.3474 5.43551 44.3474 12.1407Z\"\n            fill=\"white\" />\n          <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n            d=\"M15.0971 33.7512C15.0947 36.1345 15.5932 38.4912 16.5596 40.6697L18.1223 43.4553C22.3699 49.6259 30.1387 52.3143 37.292 50.089C44.4453 47.8638 49.318 41.2426 49.3156 33.7518C49.3156 32.9026 50.0039 32.2143 50.8532 32.2143C51.7018 32.2143 52.3907 32.9026 52.3907 33.7518C52.4051 44.4499 44.0585 53.2951 33.3778 53.9017V60.9246H39.8098C40.6584 60.9246 41.3473 61.6135 41.3473 62.4622C41.3473 63.3114 40.6584 63.9997 39.8098 63.9997H24.6029C23.7537 63.9997 23.0654 63.3114 23.0654 62.4622C23.0654 61.6135 23.7537 60.9246 24.6029 60.9246H30.3033V53.847C25.6228 53.4212 21.2413 51.3623 17.926 48.0313C17.1926 47.298 16.5163 46.51 15.9031 45.6739L14.2418 42.9874C12.7757 40.1297 12.0148 36.9633 12.022 33.7512C12.022 32.902 12.7103 32.2137 13.5595 32.2137C14.4088 32.2137 15.0971 32.902 15.0971 33.7512Z\"\n            fill=\"white\" />\n        </g>\n      </g>\n      <g id=\"no-microphone\" class=\"controls__icon controls__icon--shown\">\n        <path id=\"Vector\"\n          d=\"M52.9733 4.25592L44.3474 12.8813V12.1407C44.3474 5.43551 38.9118 0 32.2066 0C25.5014 0 20.0659 5.43551 20.0659 12.1407V33.941C20.0659 34.9098 20.1824 35.875 20.4131 36.8161L16.5596 40.6697C15.5932 38.4912 15.0947 36.1345 15.0971 33.7512C15.0971 32.902 14.4088 32.2137 13.5595 32.2137C12.7103 32.2137 12.022 32.902 12.022 33.7512C12.0148 36.9633 12.7757 40.1297 14.2418 42.9874L8.81411 48.4151C8.4117 48.8007 8.24954 49.3731 8.39008 49.9124C8.53002 50.4518 8.95105 50.8728 9.4898 51.0133C10.0291 51.1539 10.6021 50.9917 10.9877 50.5899L15.9031 45.6739C16.5163 46.51 17.1926 47.298 17.926 48.0313C21.2413 51.3623 25.6228 53.4212 30.3033 53.847V60.9246H24.6029C23.7537 60.9246 23.0654 61.6135 23.0654 62.4622C23.0654 63.3114 23.7537 63.9997 24.6029 63.9997H39.8098C40.6584 63.9997 41.3473 63.3114 41.3473 62.4622C41.3473 61.6135 40.6584 60.9246 39.8098 60.9246H33.3778V53.9017C44.0585 53.2951 52.4051 44.4499 52.3907 33.7518C52.3907 32.9026 51.7018 32.2143 50.8532 32.2143C50.0039 32.2143 49.3156 32.9026 49.3156 33.7518C49.318 41.2426 44.4453 47.8638 37.292 50.089C30.1387 52.3143 22.3699 49.6259 18.1224 43.4553L21.6503 39.9279C23.8059 43.7286 27.8366 46.0787 32.206 46.0823C38.9004 46.0823 44.3468 40.6024 44.3468 33.8672V17.2309L55.1475 6.43072C55.7481 5.83071 55.7481 4.85713 55.1475 4.25652C54.5469 3.65591 53.5733 3.65591 52.9733 4.25652V4.25592Z\"\n          fill=\"white\" />\n      </g>\n    </svg>\n  }\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { User } from '../../models';\nimport { UserStateComponent } from '../user-state/user-state.component';\n\n@Component({\n  selector: 'ngx-local-stream-view',\n  standalone: true,\n  imports: [UserStateComponent],\n  templateUrl: './local-stream-view.component.html',\n  styleUrl: './local-stream-view.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LocalStreamViewComponent {\n  @Input({ required: true }) hidden: boolean;\n  @Input({ required: true }) localContainerId: string;\n  @Input({ required: true }) microphoneEnabled: boolean;\n  @Input({ required: true }) useVirtualBackground: boolean;\n  @Input({ required: true }) blurEnabled: boolean;\n  @Input() user: User | null;\n  @Output() toggleBlur = new EventEmitter<boolean>();\n\n  get userName(): string {\n    return this.user?.name || 'Me';\n  }\n\n  onToggleBlur(): void {\n    this.toggleBlur.emit(this.blurEnabled);\n  }\n}\n","<div\n  class=\"local-stream-view\"\n  [hidden]=\"hidden\"\n>\n  <div [id]=\"localContainerId\" class=\"local-stream-view__video\"></div>\n\n  <ngx-user-state\n    [rootClass]=\"'user-state--mobile'\"\n    [userName]=\"userName\"\n    [muted]=\"!microphoneEnabled\"\n  />\n\n  @if (useVirtualBackground) {\n    <button (click)=\"onToggleBlur()\" class=\"local-stream-view__blur-btn\">\n      <svg viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n        @if (blurEnabled) {\n          <path d=\"M128 576C116.053333 576 106.666667 585.386667 106.666667 597.333333 106.666667 609.28 116.053333 618.666667 128 618.666667 139.946667 618.666667 149.333333 609.28 149.333333 597.333333 149.333333 585.386667 139.946667 576 128 576M256 725.333333C232.533333 725.333333 213.333333 744.533333 213.333333 768 213.333333 791.466667 232.533333 810.666667 256 810.666667 279.466667 810.666667 298.666667 791.466667 298.666667 768 298.666667 744.533333 279.466667 725.333333 256 725.333333M426.666667 874.666667C414.72 874.666667 405.333333 884.053333 405.333333 896 405.333333 907.946667 414.72 917.333333 426.666667 917.333333 438.613333 917.333333 448 907.946667 448 896 448 884.053333 438.613333 874.666667 426.666667 874.666667M128 405.333333C116.053333 405.333333 106.666667 414.72 106.666667 426.666667 106.666667 438.613333 116.053333 448 128 448 139.946667 448 149.333333 438.613333 149.333333 426.666667 149.333333 414.72 139.946667 405.333333 128 405.333333M256 554.666667C232.533333 554.666667 213.333333 573.866667 213.333333 597.333333 213.333333 620.8 232.533333 640 256 640 279.466667 640 298.666667 620.8 298.666667 597.333333 298.666667 573.866667 279.466667 554.666667 256 554.666667M896 576C884.053333 576 874.666667 585.386667 874.666667 597.333333 874.666667 609.28 884.053333 618.666667 896 618.666667 907.946667 618.666667 917.333333 609.28 917.333333 597.333333 917.333333 585.386667 907.946667 576 896 576M426.666667 725.333333C403.2 725.333333 384 744.533333 384 768 384 791.466667 403.2 810.666667 426.666667 810.666667 450.133333 810.666667 469.333333 791.466667 469.333333 768 469.333333 744.533333 450.133333 725.333333 426.666667 725.333333M106.666667 224.853333 267.946667 386.133333 256 384C232.533333 384 213.333333 403.2 213.333333 426.666667 213.333333 450.133333 232.533333 469.333333 256 469.333333 279.466667 469.333333 298.666667 450.133333 298.666667 426.666667 298.666667 422.4 297.386667 418.56 296.106667 414.72L416 534.613333C385.706667 539.306667 362.666667 565.76 362.666667 597.333333 362.666667 632.746667 391.253333 661.333333 426.666667 661.333333 458.24 661.333333 484.693333 638.293333 489.386667 608L609.28 727.893333C605.44 726.613333 601.6 725.333333 597.333333 725.333333 573.866667 725.333333 554.666667 744.533333 554.666667 768 554.666667 791.466667 573.866667 810.666667 597.333333 810.666667 620.8 810.666667 640 791.466667 640 768 640 763.733333 638.72 759.893333 637.44 756.053333L798.72 917.333333 853.333333 863.146667 160.853333 170.666667 106.666667 224.853333M597.333333 874.666667C585.386667 874.666667 576 884.053333 576 896 576 907.946667 585.386667 917.333333 597.333333 917.333333 609.28 917.333333 618.666667 907.946667 618.666667 896 618.666667 884.053333 609.28 874.666667 597.333333 874.666667M768 298.666667C791.466667 298.666667 810.666667 279.466667 810.666667 256 810.666667 232.533333 791.466667 213.333333 768 213.333333 744.533333 213.333333 725.333333 232.533333 725.333333 256 725.333333 279.466667 744.533333 298.666667 768 298.666667M768 469.333333C791.466667 469.333333 810.666667 450.133333 810.666667 426.666667 810.666667 403.2 791.466667 384 768 384 744.533333 384 725.333333 403.2 725.333333 426.666667 725.333333 450.133333 744.533333 469.333333 768 469.333333M768 640C791.466667 640 810.666667 620.8 810.666667 597.333333 810.666667 573.866667 791.466667 554.666667 768 554.666667 744.533333 554.666667 725.333333 573.866667 725.333333 597.333333 725.333333 620.8 744.533333 640 768 640M426.666667 298.666667C450.133333 298.666667 469.333333 279.466667 469.333333 256 469.333333 232.533333 450.133333 213.333333 426.666667 213.333333 403.2 213.333333 384 232.533333 384 256 384 279.466667 403.2 298.666667 426.666667 298.666667M896 448C907.946667 448 917.333333 438.613333 917.333333 426.666667 917.333333 414.72 907.946667 405.333333 896 405.333333 884.053333 405.333333 874.666667 414.72 874.666667 426.666667 874.666667 438.613333 884.053333 448 896 448M426.666667 149.333333C438.613333 149.333333 448 139.946667 448 128 448 116.053333 438.613333 106.666667 426.666667 106.666667 414.72 106.666667 405.333333 116.053333 405.333333 128 405.333333 139.946667 414.72 149.333333 426.666667 149.333333M597.333333 149.333333C609.28 149.333333 618.666667 139.946667 618.666667 128 618.666667 116.053333 609.28 106.666667 597.333333 106.666667 585.386667 106.666667 576 116.053333 576 128 576 139.946667 585.386667 149.333333 597.333333 149.333333M588.8 490.666667 597.333333 490.666667C632.746667 490.666667 661.333333 462.08 661.333333 426.666667 661.333333 391.253333 632.746667 362.666667 597.333333 362.666667 561.92 362.666667 533.333333 391.253333 533.333333 426.666667L533.333333 435.2C538.026667 463.786667 560.213333 485.973333 588.8 490.666667M597.333333 298.666667C620.8 298.666667 640 279.466667 640 256 640 232.533333 620.8 213.333333 597.333333 213.333333 573.866667 213.333333 554.666667 232.533333 554.666667 256 554.666667 279.466667 573.866667 298.666667 597.333333 298.666667Z\" />\n        } @else {\n          <path d=\"M256 554.666667c-23.466667 0-42.666667 19.2-42.666667 42.666666s19.2 42.666667 42.666667 42.666667 42.666667-19.2 42.666667-42.666667-19.2-42.666667-42.666667-42.666666z m0 170.666666c-23.466667 0-42.666667 19.2-42.666667 42.666667s19.2 42.666667 42.666667 42.666667 42.666667-19.2 42.666667-42.666667-19.2-42.666667-42.666667-42.666667z m0-341.333333c-23.466667 0-42.666667 19.2-42.666667 42.666667s19.2 42.666667 42.666667 42.666666 42.666667-19.2 42.666667-42.666666-19.2-42.666667-42.666667-42.666667z m-128 21.333333c-11.733333 0-21.333333 9.6-21.333333 21.333334s9.6 21.333333 21.333333 21.333333 21.333333-9.6 21.333333-21.333333-9.6-21.333333-21.333333-21.333334z m128-192c-23.466667 0-42.666667 19.2-42.666667 42.666667s19.2 42.666667 42.666667 42.666667 42.666667-19.2 42.666667-42.666667-19.2-42.666667-42.666667-42.666667z m640 234.666667c11.733333 0 21.333333-9.6 21.333333-21.333333s-9.6-21.333333-21.333333-21.333334-21.333333 9.6-21.333333 21.333334 9.6 21.333333 21.333333 21.333333z m-298.666667-149.333333c23.466667 0 42.666667-19.2 42.666667-42.666667s-19.2-42.666667-42.666667-42.666667-42.666667 19.2-42.666666 42.666667 19.2 42.666667 42.666666 42.666667z m0-149.333334c11.733333 0 21.333333-9.6 21.333334-21.333333s-9.6-21.333333-21.333334-21.333333-21.333333 9.6-21.333333 21.333333 9.6 21.333333 21.333333 21.333333zM128 576c-11.733333 0-21.333333 9.6-21.333333 21.333333s9.6 21.333333 21.333333 21.333334 21.333333-9.6 21.333333-21.333334-9.6-21.333333-21.333333-21.333333z m298.666667 298.666667c-11.733333 0-21.333333 9.6-21.333334 21.333333s9.6 21.333333 21.333334 21.333333 21.333333-9.6 21.333333-21.333333-9.6-21.333333-21.333333-21.333333z m0-725.333334c11.733333 0 21.333333-9.6 21.333333-21.333333s-9.6-21.333333-21.333333-21.333333-21.333333 9.6-21.333334 21.333333 9.6 21.333333 21.333334 21.333333z m0 149.333334c23.466667 0 42.666667-19.2 42.666666-42.666667s-19.2-42.666667-42.666666-42.666667-42.666667 19.2-42.666667 42.666667 19.2 42.666667 42.666667 42.666667z m0 234.666666c-35.413333 0-64 28.586667-64 64s28.586667 64 64 64 64-28.586667 64-64-28.586667-64-64-64z m341.333333 21.333334c-23.466667 0-42.666667 19.2-42.666667 42.666666s19.2 42.666667 42.666667 42.666667 42.666667-19.2 42.666667-42.666667-19.2-42.666667-42.666667-42.666666z m0 170.666666c-23.466667 0-42.666667 19.2-42.666667 42.666667s19.2 42.666667 42.666667 42.666667 42.666667-19.2 42.666667-42.666667-19.2-42.666667-42.666667-42.666667z m0-341.333333c-23.466667 0-42.666667 19.2-42.666667 42.666667s19.2 42.666667 42.666667 42.666666 42.666667-19.2 42.666667-42.666666-19.2-42.666667-42.666667-42.666667z m0-170.666667c-23.466667 0-42.666667 19.2-42.666667 42.666667s19.2 42.666667 42.666667 42.666667 42.666667-19.2 42.666667-42.666667-19.2-42.666667-42.666667-42.666667z m128 362.666667c-11.733333 0-21.333333 9.6-21.333333 21.333333s9.6 21.333333 21.333333 21.333334 21.333333-9.6 21.333333-21.333334-9.6-21.333333-21.333333-21.333333z m-298.666667 149.333333c-23.466667 0-42.666667 19.2-42.666666 42.666667s19.2 42.666667 42.666666 42.666667 42.666667-19.2 42.666667-42.666667-19.2-42.666667-42.666667-42.666667z m0 149.333334c-11.733333 0-21.333333 9.6-21.333333 21.333333s9.6 21.333333 21.333333 21.333333 21.333333-9.6 21.333334-21.333333-9.6-21.333333-21.333334-21.333333z m-170.666666-512c-35.413333 0-64 28.586667-64 64s28.586667 64 64 64 64-28.586667 64-64-28.586667-64-64-64z m0 362.666666c-23.466667 0-42.666667 19.2-42.666667 42.666667s19.2 42.666667 42.666667 42.666667 42.666667-19.2 42.666666-42.666667-19.2-42.666667-42.666666-42.666667z m170.666666-192c-35.413333 0-64 28.586667-64 64s28.586667 64 64 64 64-28.586667 64-64-28.586667-64-64-64z m0-170.666666c-35.413333 0-64 28.586667-64 64s28.586667 64 64 64 64-28.586667 64-64-28.586667-64-64-64z\" />\n        }\n      </svg>\n    </button>\n  }\n</div>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { User } from '../../models';\nimport { UserStateComponent } from '../user-state/user-state.component';\n\n@Component({\n  selector: 'ngx-remote-stream-view',\n  standalone: true,\n  imports: [NgClass, UserStateComponent],\n  templateUrl: './remote-stream-view.component.html',\n  styleUrl: './remote-stream-view.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RemoteStreamViewComponent {\n  @Input({ required: true }) id: string;\n  @Input({ required: true }) cameraEnabled: boolean;\n  @Input({ required: true }) microphoneEnabled: boolean;\n  @Input() user: User | null;\n  @Input() rootClass: object;\n}\n","<div class=\"remote-stream-view\" [ngClass]=\"rootClass\">\n  <div\n    [id]=\"id\"\n    [class.hidden]=\"!cameraEnabled\"\n    class=\"remote-stream-view__container\"\n  ></div>\n\n  @if (!cameraEnabled) {\n    <div class=\"remote-stream-view__info\">\n      @if (user?.photoURL; as photoURL) {\n        <img [src]=\"photoURL\" alt=\"User icon\" />\n      } @else {\n        <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <g id=\"user\" clip-path=\"url(#clip0)\">\n            <path id=\"Vector\"\n              d=\"M31.5439 30.829C35.7793 30.829 39.4468 29.3099 42.4434 26.3129C45.4399 23.3163 46.959 19.6498 46.959 15.414C46.959 11.1796 45.4399 7.51267 42.4429 4.51512C39.4458 1.51904 35.7788 0 31.5439 0C27.3081 0 23.6416 1.51904 20.645 4.51561C17.6484 7.51218 16.1289 11.1792 16.1289 15.414C16.1289 19.6498 17.6484 23.3168 20.6455 26.3134C23.6426 29.3095 27.3096 30.829 31.5439 30.829V30.829Z\"\n              fill=\"#0B73C9\" />\n            <path id=\"Vector_2\"\n              d=\"M58.5161 49.2127C58.4297 47.9656 58.2549 46.6053 57.9976 45.1688C57.7378 43.7215 57.4033 42.3533 57.0029 41.1029C56.5894 39.8104 56.0269 38.534 55.3315 37.3109C54.6099 36.0414 53.7622 34.9359 52.811 34.0262C51.8164 33.0746 50.5986 32.3094 49.1904 31.7513C47.7871 31.1962 46.2319 30.9149 44.5684 30.9149C43.915 30.9149 43.2832 31.183 42.063 31.9774C41.312 32.4672 40.4336 33.0336 39.4531 33.66C38.6147 34.1942 37.479 34.6947 36.0762 35.1478C34.7075 35.5907 33.3179 35.8153 31.9463 35.8153C30.5747 35.8153 29.1855 35.5907 27.8154 35.1478C26.4141 34.6952 25.2783 34.1947 24.4409 33.6605C23.4697 33.0399 22.5908 32.4735 21.8286 31.9769C20.6099 31.1825 19.9775 30.9144 19.3242 30.9144C17.6602 30.9144 16.1055 31.1962 14.7026 31.7518C13.2954 32.309 12.0771 33.0741 11.0815 34.0267C10.1309 34.9369 9.28271 36.0419 8.56201 37.3109C7.86719 38.534 7.30469 39.8099 6.89062 41.1034C6.49072 42.3538 6.15625 43.7215 5.89648 45.1688C5.63916 46.6033 5.46436 47.9642 5.37793 49.2142C5.29297 50.4388 5.25 51.7098 5.25 52.9934C5.25 56.3343 6.31201 59.0388 8.40625 61.0335C10.4746 63.0017 13.2114 64.0002 16.5396 64.0002H47.356C50.6841 64.0002 53.4199 63.0022 55.4888 61.0335C57.5835 59.0403 58.6455 56.3352 58.6455 52.993C58.645 51.7034 58.6016 50.4314 58.5161 49.2127V49.2127Z\"\n              fill=\"#0B73C9\" />\n          </g>\n          <defs>\n            <clipPath id=\"clip0\">\n              <rect width=\"64\" height=\"64\" fill=\"#0B73C9\" />\n            </clipPath>\n          </defs>\n        </svg>\n      }\n    </div>\n  }\n\n  @if (user?.name; as name) {\n    <ngx-user-state\n      [rootClass]=\"'user-state--centered'\"\n      [muted]=\"!microphoneEnabled\"\n      [userName]=\"name\"\n    />\n  }\n</div>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ngx-spinner',\n  templateUrl: './spinner.component.html',\n  styleUrls: ['./spinner.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [NgClass],\n})\nexport class SpinnerComponent {\n  @Input() text: string;\n  @Input() error = false;\n  @Input() connected = true;\n  @Input() ended = false;\n  @Input() small = false;\n\n  get color(): string {\n    if (this.ended) {\n      return '#aaa';\n    }\n\n    if (this.error) {\n      return '#d73b3d';\n    }\n\n    return this.connected ? '#37D425' : '#1195E6';\n  }\n}\n","<div class=\"spinner\" [ngClass]=\"{ 'spinner--connected': connected, 'spinner--ended': ended, 'spinner--small': small, 'spinner--error': error }\">\n  <div class=\"spinner__wrapper\">\n    <div class=\"spinner__icon\">\n      <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" fill=\"none\" width=\"64\" height=\"64\">\n        <path\n          d=\"M5.25 5.5C3.45507 5.5 2 6.95508 2 8.75V19.25C2 21.0449 3.45507 22.5 5.25 22.5H14.75C16.5449 22.5 18 21.0449 18 19.25V8.75C18 6.95507 16.5449 5.5 14.75 5.5H5.25Z\"\n          [attr.fill]=\"color\" />\n        <path\n          d=\"M23.1232 20.6431L19.5 17.0935V10.9989L23.1121 7.3706C23.8988 6.58044 25.248 7.13753 25.248 8.25251V19.7502C25.248 20.8577 23.9143 21.4181 23.1232 20.6431Z\"\n          [attr.fill]=\"color\" />\n      </svg>\n    </div>\n    <div class=\"spinner__cirle\"></div>\n\n    @if (!small) {\n      <div class=\"spinner__text\">{{ text }}</div>\n    }\n  </div>\n</div>\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Observable, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n  selector: 'ngx-timer',\n  templateUrl: './timer.component.html',\n  styleUrls: ['./timer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [AsyncPipe],\n})\nexport class TimerComponent implements OnInit {\n  @Input() started: number = Date.now();\n  public time$: Observable<string>;\n\n  ngOnInit(): void {\n    this.time$ = timer(0, 1000).pipe(\n      map(() => this.format(Date.now() - this.started)),\n    );\n  }\n\n  format(duration: number): string {\n    const s = Math.floor((duration / 1000) % 60).toString().padStart(2, '0');\n    const m = Math.floor((duration / (1000 * 60)) % 60).toString().padStart(2, '0');\n    const h = Math.floor((duration / (1000 * 60 * 60)) % 24).toString().padStart(2, '0');\n\n    return [h, m, s].join(':');\n  }\n}\n","<div class=\"timer\">\n  <span>{{ time$ | async }}</span>\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nconst STATES = {\n  HIDDEN: {\n    opacity: 0,\n    'margin-top': '100%',\n  },\n  SHOWN: {\n    opacity: 1,\n    'margin-top': 0,\n  },\n};\n\nexport const fadeAnimation = trigger('fade', [\n  transition(':enter', [\n    style(STATES.HIDDEN),\n    animate('250ms ease-in-out', style(STATES.SHOWN)),\n  ]),\n  transition(':leave', [\n    style(STATES.SHOWN),\n    animate('250ms ease-in-out', style(STATES.HIDDEN)),\n  ]),\n]);\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { fadeAnimation } from '../../animations';\nimport { VideoCallDialogData } from '../../models';\nimport { DialogComponent } from '../abstract-dialog.component';\n\n@Component({\n  selector: 'ngx-video-call',\n  templateUrl: './video-call.component.html',\n  styleUrls: ['./video-call.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [fadeAnimation],\n  imports: [NgIf],\n  standalone: true,\n})\nexport class VideoCallComponent extends DialogComponent implements OnInit, OnDestroy {\n  @Input() data: VideoCallDialogData;\n  public fullScreen = false;\n  private audio: HTMLAudioElement;\n\n  constructor(cdr: ChangeDetectorRef) {\n    super(cdr);\n  }\n\n  get remoteUserName(): string {\n    return this.data.remoteUser.name;\n  }\n\n  get remoteUserPhotoURL(): string {\n    return this.data.remoteUser.photoURL;\n  }\n\n  ngOnInit(): void {\n    this.play(`assets/${this.data.outcome ? 'outcome' : 'income'}.mp3`);\n  }\n\n  ngOnDestroy(): void {\n    this.stop();\n  }\n\n  onAcceptCall(): void {\n    this.fullScreen = true;\n    this.cdr.markForCheck();\n    this.afterClosed.next(this.data);\n  }\n\n  onDeclineCall(): void {\n    this.play('assets/cancel.mp3');\n    setTimeout(() => this.closeDialog(null), 200);\n  }\n\n  private play(path: string, loop = true): void {\n    if (this.audio) {\n      this.stop();\n    }\n\n    this.audio = new Audio(path);\n    this.audio.loop = loop;\n    this.audio.load();\n    this.audio.play();\n  }\n\n  private stop(): void {\n    this.audio.pause();\n    this.audio.remove();\n  }\n}\n","<div @fade *ngIf=\"shown && data\" class=\"video-call\" [class.video-call--full-screen]=\"fullScreen\">\n  <div class=\"video-call-user\">\n    <div class=\"video-call-user__block video-call-user__block--animated\">\n      <img class=\"video-call-user__img\" [src]=\"remoteUserPhotoURL\" alt=\"\">\n    </div>\n    <p class=\"video-call-user__title\">\n      @if (data.outcome) {\n        Calling to {{ remoteUserName }}\n      } @else {\n        {{ remoteUserName }} is calling\n      }\n    </p>\n  </div>\n  <div class=\"video-call__actions\">\n    @if (!data.outcome) {\n      <button\n        aria-label=\"Accept\"\n        class=\"video-call__button video-call__button--accept\"\n        (click)=\"onAcceptCall()\"\n      ></button>\n    }\n    <span>\n      <button\n        aria-label=\"Decline\"\n        class=\"video-call__button video-call__button--decline\"\n        (click)=\"onDeclineCall()\"\n      ></button>\n    </span>\n  </div>\n</div>\n","import { Directive, ElementRef, EventEmitter, HostListener, OnInit, Output, Renderer2 } from '@angular/core';\nimport { interval, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Directive({\n  selector: '[ngxToggle]',\n  standalone: true,\n})\nexport class ToggleDirective implements OnInit {\n  private subscription: Subscription = new Subscription();\n  private delay = 5000;\n\n  @Output() toggleVisibility = new EventEmitter<boolean>();\n\n  @HostListener('mouseenter') onEnter(): void {\n    this.subscription.unsubscribe();\n    this.setStyle(1);\n   }\n\n  @HostListener('mouseleave') onLeave(): void {\n    this.hide();\n  }\n\n  constructor(private renderer: Renderer2, private el: ElementRef) { }\n\n  ngOnInit(): void {\n    this.hide();\n  }\n\n  hide(): void {\n    this.subscription.unsubscribe();\n    this.subscription = interval(this.delay)\n      .pipe(take(1))\n      .subscribe(() => this.setStyle(0));\n  }\n\n  setStyle(opacity: number): void {\n    this.renderer.setStyle(this.el.nativeElement, 'opacity', opacity);\n    this.toggleVisibility.emit(opacity === 1);\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Inject, Injectable, Injector, Type } from '@angular/core';\nimport { delay, take } from 'rxjs/operators';\nimport { DialogComponent } from '../models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DialogService {\n  private wrapperSelector = 'ngx-webrtc-wrapper';\n\n  constructor(\n   @Inject(DOCUMENT) private document: Document,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private appRef: ApplicationRef,\n    private injector: Injector,\n  ) { }\n\n  open(component: Type<any>, data: any = {}): DialogComponent {\n    return this.appendComponent(component, data);\n  }\n\n  private appendComponent(component: Type<any>, data: any): DialogComponent {\n    // 1. Create a component reference from the component\n    const componentRef = this.componentFactoryResolver\n      .resolveComponentFactory(component)\n      .create(this.injector);\n\n    const { instance } = componentRef;\n\n    // Set inputs\n    Object.keys(data).forEach((key: string) => instance[key] = data[key]);\n\n    // 2. Attach incoming component to the appRef so that it's inside the ng component tree\n    this.appRef.attachView(componentRef.hostView);\n\n    // 3. Get DOM element from component\n    const domElem = (componentRef.hostView as EmbeddedViewRef<any>)\n      .rootNodes[0] as HTMLElement;\n\n    // 4. Append DOM element to the container\n    this.getContainer().append(domElem);\n\n    // 5. Destroy after fade out\n    (instance as DialogComponent).afterClosed\n      .pipe(\n        take(1),\n        delay(250),\n      )\n      .subscribe(() => {\n        this.appRef.detachView(componentRef.hostView);\n        componentRef.destroy();\n      });\n\n    return instance as DialogComponent;\n  }\n\n  private getContainer(): HTMLElement {\n    let container: HTMLElement = this.document.querySelector(`.${this.wrapperSelector}`) as HTMLElement;\n\n    if (!container) {\n      container = this.document.createElement('div');\n      container.setAttribute('class', this.wrapperSelector);\n      container.setAttribute('style', 'position: fixed; top: 0; width: 100%; z-index: 1;');\n      this.document.body.appendChild(container);\n    }\n\n    return container;\n  }\n}\n","export interface StreamState {\n  connected: boolean;\n  loading: boolean;\n  statusText: string;\n  started: number | null;\n  ended: boolean;\n  error: boolean;\n}\n\nexport const DEFAULT_STREAM_STATE: StreamState = {\n  connected: false,\n  loading: true,\n  statusText: 'Initializing',\n  started: null,\n  ended: false,\n  error: false,\n};\n","import { Inject, Injectable } from '@angular/core';\nimport {\n  IVirtualBackgroundExtension,\n  IVirtualBackgroundProcessor,\n} from 'agora-extension-virtual-background';\nimport {\n  ClientConfig,\n  IAgoraRTC,\n  IAgoraRTCClient,\n  IAgoraRTCRemoteUser,\n  ICameraVideoTrack,\n  IMicrophoneAudioTrack,\n  IRemoteDataChannel,\n  IRemoteTrack,\n  UID,\n} from 'agora-rtc-sdk-ng';\nimport { BehaviorSubject, Observable, Subject, concatMap, from, interval } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { AgoraConfig, DEFAULT_STREAM_STATE, StreamState } from '../models';\n\nconst CLIENT_CONFIG: ClientConfig = {\n  mode: 'rtc',\n  codec: 'h264',\n};\n\n@Injectable()\nexport class WebRtcService {\n  private agoraRTC: IAgoraRTC;\n  private virtualBackgroundProcessor: IVirtualBackgroundProcessor;\n  private virtualBackgroundExtension: IVirtualBackgroundExtension;\n  private client: IAgoraRTCClient;\n  private localTracks: { videoTrack: ICameraVideoTrack, audioTrack: IMicrophoneAudioTrack };\n  private uid: string;\n  private streamState = new BehaviorSubject<StreamState>(DEFAULT_STREAM_STATE);\n  private remoteStreamVideoToggle = new BehaviorSubject<boolean>(true);\n  private remoteStreamAudioToggle = new BehaviorSubject<boolean>(true);\n  private callEnd = new Subject<void>();\n\n  public localContainerId = 'local-video';\n  public remoteCalls: string[] = [];\n  public remoteStreamVideoToggle$ = this.remoteStreamVideoToggle.asObservable();\n  public remoteStreamAudioToggle$ = this.remoteStreamAudioToggle.asObservable();\n  public streamState$ = this.streamState.asObservable();\n\n  constructor(@Inject('AgoraConfig') private config: AgoraConfig) {\n  }\n\n  init(uid: string, channel: string, token: string | null): Observable<void> {\n    return from(this.loadSDK()).pipe(\n      concatMap(() => {\n        this.uid = uid;\n        this.agoraRTC.setLogLevel(this.config.debug ? 0 : 4);\n\n        this.client = this.agoraRTC.createClient(CLIENT_CONFIG);\n        this.assignClientHandlers();\n\n        this.initLocalStream().then(() => {\n          this.client.join(this.config.AppID, channel, token || null, this.uid)\n            .then(() => {\n              this.localTracks.videoTrack.play(this.localContainerId);\n              this.client.publish(Object.values(this.localTracks));\n              this.streamState.next({ ...this.streamState.value, connected: true, statusText: 'Waiting remote to join' });\n            })\n            .catch((err: Error) => this.handleError(err));\n        });\n\n        return this.callEnd.asObservable();\n      }),\n    );\n  }\n\n  deinit(): void {\n    this.streamState.next(DEFAULT_STREAM_STATE);\n    this.remoteStreamAudioToggle.next(true);\n    this.remoteStreamVideoToggle.next(true);\n  }\n\n  endCall(): void {\n    this.client.leave().then(() => {\n      this.stopLocalStream();\n      this.streamState.next({ ...this.streamState.value, started: null, loading: true, statusText: '', ended: true });\n      this.remoteCalls = [];\n\n      interval(500)\n        .pipe(take(1))\n        .subscribe(() => this.callEnd.next());\n    });\n  }\n\n  toggleVideo(enabled: boolean): void {\n    if (this.localTracks) {\n      this.localTracks.videoTrack.setMuted(enabled);\n    }\n  }\n\n  toggleAudio(enabled: boolean): void {\n    if (this.localTracks) {\n      this.localTracks.audioTrack.setMuted(enabled);\n    }\n  }\n\n  toggleFullScreen(enabled: boolean): void {\n    enabled ? document.exitFullscreen() : document.documentElement.requestFullscreen();\n  }\n\n  toggleBlur(enabled: boolean) {\n    this.virtualBackgroundProcessor[enabled ? 'disable' : 'enable']();\n  }\n\n  isVideoEnabled(): boolean {\n    if (this.localTracks) {\n      return !this.localTracks.videoTrack.muted;\n    }\n\n    return false;\n  }\n\n  isAudioEnabled(): boolean {\n    if (this.localTracks) {\n      return !this.localTracks.audioTrack.muted;\n    }\n\n    return false;\n  }\n\n  isBlurEnabled(): boolean {\n    return this.virtualBackgroundProcessor?.enabled;\n  }\n\n  useVirtualBackground(): boolean {\n    return !!this.config.useVirtualBackground;\n  }\n\n  private assignClientHandlers(): void {\n    this.client.on(ClientEvents.UserJoined, (user: IAgoraRTCRemoteUser) => {\n      this.streamState.next({ ...this.streamState.value, started: Date.now(), loading: false });\n\n      if (!this.remoteCalls.length) {\n        this.remoteCalls.push(this.getRemoteId(user));\n      }\n    });\n\n    this.client.on(ClientEvents.UserPublished, (user: IAgoraRTCRemoteUser, mediaType: 'audio' | 'video') => {\n      const remoteCall = this.getRemoteId(user);\n      this.client.subscribe(user, mediaType).then((track: IRemoteTrack | IRemoteDataChannel) => {\n        if (this.remoteCalls.includes(remoteCall)) {\n          (track as IRemoteTrack).play(remoteCall);\n        }\n      });\n    });\n\n    this.client.on(ClientEvents.UserInfoUpdated, (uid: UID, msg: UserInfoUpdatedMessages) => {\n      switch (msg) {\n        case UserInfoUpdatedMessages.MuteAudio:\n          this.remoteStreamAudioToggle.next(false);\n          break;\n        case UserInfoUpdatedMessages.UnmuteAudio:\n          this.remoteStreamAudioToggle.next(true);\n          break;\n        case UserInfoUpdatedMessages.MuteVideo:\n          this.remoteStreamVideoToggle.next(false);\n          break;\n        case UserInfoUpdatedMessages.UnmuteVideo:\n          this.remoteStreamVideoToggle.next(true);\n          break;\n      }\n    });\n\n    this.client.on(ClientEvents.UserLeft, () => {\n      this.endCall();\n    });\n  }\n\n  private initLocalStream(): Promise<void> {\n    return Promise.all([\n      this.agoraRTC.createCameraVideoTrack({\n        encoderConfig: '720p_1',\n      }),\n      this.agoraRTC.createMicrophoneAudioTrack()\n    ]).then(([videoTrack, audioTrack]) => {\n      this.localTracks = { audioTrack, videoTrack };\n\n      if (this.virtualBackgroundExtension) {\n        return this.initVirtualBackgroundProcessor();\n      }\n\n      return Promise.resolve();\n    }).catch((error: Error) => {\n      this.handleError(error);\n    });\n  }\n\n  private getRemoteId(user: IAgoraRTCRemoteUser): string {\n    return `remote_call-${user.uid}`;\n  }\n\n  private handleError(error: Error): void {\n    this.streamState.next({ ...this.streamState.value, statusText: error.message, error: true });\n    this.stopLocalStream();\n\n    interval(5000)\n      .pipe(take(1))\n      .subscribe(() => this.callEnd.next());\n\n    throw new Error(error.message);\n  }\n\n  private stopLocalStream(): void {\n    if (this.localTracks) {\n      Object.values(this.localTracks).forEach((track: ICameraVideoTrack | IMicrophoneAudioTrack) => {\n        track.stop();\n        track.close();\n      });\n    }\n  }\n\n  private async loadSDK(): Promise<void> {\n    if (!this.agoraRTC) {\n      const { default: AgoraRTC } = await import('agora-rtc-sdk-ng');\n      this.agoraRTC = AgoraRTC;\n    }\n\n    if (!this.virtualBackgroundExtension && this.config.useVirtualBackground) {\n      const { default: VirtualBackgroundExtension } = await import('agora-extension-virtual-background');\n      this.virtualBackgroundExtension = new VirtualBackgroundExtension();\n      this.agoraRTC.registerExtensions([this.virtualBackgroundExtension]);\n    }\n\n    if (!this.agoraRTC.checkSystemRequirements()) {\n      this.handleError(new Error('Web RTC is not supported in this browser'));\n    }\n  }\n\n  private async initVirtualBackgroundProcessor(): Promise<void> {\n    this.virtualBackgroundProcessor = this.virtualBackgroundExtension.createProcessor();\n    await this.virtualBackgroundProcessor.init();\n\n    this.localTracks.videoTrack.pipe(this.virtualBackgroundProcessor).pipe(this.localTracks.videoTrack.processorDestination);\n    this.virtualBackgroundProcessor.setOptions({ type: 'blur', blurDegree: 2 });\n  }\n}\n\nexport enum ClientEvents {\n  UserJoined = 'user-joined',\n  UserPublished = 'user-published',\n  UserInfoUpdated = 'user-info-updated',\n  UserLeft = 'user-left',\n}\n\nexport enum UserInfoUpdatedMessages {\n  MuteAudio = 'mute-audio',\n  UnmuteAudio = 'unmute-audio',\n  MuteVideo = 'mute-video',\n  UnmuteVideo = 'unmute-video',\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  inject,\n  Input,\n  OnDestroy,\n  Output,\n  PLATFORM_ID,\n} from '@angular/core';\n\nimport { AsyncPipe, isPlatformBrowser, NgIf } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { fadeAnimation } from './animations';\nimport { ControlsComponent, DialogComponent, LocalStreamViewComponent, RemoteStreamViewComponent, SpinnerComponent, TimerComponent } from './components';\nimport { ToggleDirective } from './directives';\nimport { User } from './models';\nimport { WebRtcService } from './services';\n\ninterface OnInitWebRtc {\n  onInitWebRtc(): void;\n  canInitWebRtc(): boolean;\n}\n\n/**\n * The `WebRtcComponent` handles WebRTC-based video calling functionality.\n * It initializes the WebRTC service and manages the stream and call states.\n * It also provides control over video and audio settings.\n *\n * @publicApi\n */\n@Component({\n  selector: 'ngx-webrtc',\n  templateUrl: './webrtc.component.html',\n  styleUrls: ['./webrtc.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [fadeAnimation],\n  standalone: true,\n  imports: [\n    AsyncPipe,\n    NgIf,\n    ControlsComponent,\n    LocalStreamViewComponent,\n    RemoteStreamViewComponent,\n    SpinnerComponent,\n    TimerComponent,\n    ToggleDirective,\n  ],\n})\nexport class WebRtcComponent extends DialogComponent implements OnInitWebRtc, OnDestroy {\n\n  /**\n   * User identifier for the WebRTC session.\n   */\n  @Input({ required: true }) uid: string;\n\n  /**\n   * Authentication token for the WebRTC session (optional).\n   */\n  @Input() token: string;\n\n  /**\n   * Channel identifier for the WebRTC session.\n   */\n  @Input({ required: true }) channel: string;\n\n  /**\n   * Represents the current user in the call.\n   * Optional, used for reference or display purposes.\n   */\n  @Input() localUser: User;\n\n  /**\n   * Represents the remote user in the call.\n   * Optional, used for reference or display purposes.\n   */\n  @Input() remoteUser: User;\n\n  /**\n   * Flag to enable/disable animation in the WebRTC component.\n   * Default is true.\n   */\n  @Input() animate = true;\n\n  /**\n   * Flag to enable/disable small screen mode.\n   * Default is false.\n   */\n  @Input() displaySmallScreen = false;\n\n  /**\n   * Event emitter that emits when the call ends.\n   */\n  @Output() callEnd = new EventEmitter<void>();\n  @HostBinding('class.small-screen') smallScreenEnabled = false;\n  @HostBinding('class.active') active = false;\n\n  private readonly platformId = inject(PLATFORM_ID);\n  private webRtcService = inject(WebRtcService);\n  public streamState$ = this.webRtcService.streamState$;\n  public remoteStreamVideoToggle$ = this.webRtcService.remoteStreamVideoToggle$;\n  public remoteStreamAudioToggle$ = this.webRtcService.remoteStreamAudioToggle$;\n  public controlsVisibility$ = new BehaviorSubject<boolean>(true);\n  public webRtcInitialized = false;\n\n  constructor(\n    cdr: ChangeDetectorRef,\n  ) {\n    super(cdr);\n  }\n\n  onInitWebRtc(): void {\n    if (this.canInitWebRtc()) {\n      this.webRtcInitialized = true;\n      this.webRtcService.init(this.uid, this.channel, this.token)\n        .pipe(take(1))\n        .subscribe(() => {\n          this.active = this.smallScreenEnabled;\n          this.callEnd.emit();\n          this.closeDialog(true);\n        });\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.webRtcService.deinit();\n  }\n\n  get localContainerId(): string {\n    return this.webRtcService.localContainerId;\n  }\n\n  get remoteCalls(): string[] {\n    return this.webRtcService.remoteCalls;\n  }\n\n  get cameraEnabled(): boolean {\n    return this.webRtcService.isVideoEnabled();\n  }\n\n  get microphoneEnabled(): boolean {\n    return this.webRtcService.isAudioEnabled();\n  }\n\n  get fullScreenEnabled(): boolean {\n    return !!document.fullscreenElement;\n  }\n\n  get blurEnabled(): boolean {\n    return this.webRtcService.isBlurEnabled();\n  }\n\n  get useVirtualBackground(): boolean {\n    return this.webRtcService.useVirtualBackground();\n  }\n\n  onToggleCamera(state: boolean): void {\n    this.webRtcService.toggleVideo(state);\n  }\n\n  onToggleMicrophone(state: boolean): void {\n    this.webRtcService.toggleAudio(state);\n  }\n\n  onToggleFullScreen(state: boolean): void {\n    this.webRtcService.toggleFullScreen(state);\n  }\n\n  onToggleSmallScreen(state: boolean): void {\n    this.smallScreenEnabled = !state;\n    this.active = true;\n  }\n\n  onToggleBlur(state: boolean): void {\n    this.webRtcService.toggleBlur(state);\n  }\n\n  onEndCall(): void {\n    this.webRtcService.endCall();\n  }\n\n  canInitWebRtc(): boolean {\n    return !this.webRtcInitialized && isPlatformBrowser(this.platformId);\n  }\n}\n","<div\n  *ngIf=\"shown\"\n  @fade\n  (@fade.done)=\"onInitWebRtc()\"\n  [@.disabled]=\"!animate\"\n>\n  <div *ngIf=\"streamState$ | async as streamState\" class=\"container\">\n    <ngx-spinner\n      *ngIf=\"streamState.loading\"\n      [error]=\"streamState.error\"\n      [text]=\"streamState.statusText\"\n      [connected]=\"streamState.connected\"\n      [ended]=\"streamState.ended\"\n      [small]=\"smallScreenEnabled\"\n    />\n\n    <ngx-timer\n      *ngIf=\"streamState.started\"\n      [started]=\"streamState.started\"\n    />\n\n    <ngx-local-stream-view\n      [blurEnabled]=\"blurEnabled\"\n      [hidden]=\"!cameraEnabled || smallScreenEnabled\"\n      [localContainerId]=\"localContainerId\"\n      [microphoneEnabled]=\"microphoneEnabled\"\n      [useVirtualBackground]=\"useVirtualBackground\"\n      [user]=\"localUser\"\n      (toggleBlur)=\"onToggleBlur($event)\"\n    />\n\n    @for (call of remoteCalls; track call) {\n      <ngx-remote-stream-view\n        [cameraEnabled]=\"(remoteStreamVideoToggle$ | async) === true\"\n        [id]=\"call\"\n        [microphoneEnabled]=\"(remoteStreamAudioToggle$ | async) === true\"\n        [user]=\"remoteUser\"\n        [rootClass]=\"{\n          'remote-stream-view--small': smallScreenEnabled,\n          'controls-visible': controlsVisibility$ | async\n        }\"\n      />\n    }\n\n    <ngx-controls\n      *ngIf=\"streamState.connected && !streamState.ended\"\n      ngxToggle\n      [cameraEnabled]=\"cameraEnabled\"\n      [microphoneEnabled]=\"microphoneEnabled\"\n      [fullScreenEnabled]=\"fullScreenEnabled\"\n      [smallScreenEnabled]=\"smallScreenEnabled\"\n      [displaySmallScreen]=\"displaySmallScreen\"\n      (toggleCamera)=\"onToggleCamera($event)\"\n      (toggleMicrophone)=\"onToggleMicrophone($event)\"\n      (toggleFullScreen)=\"onToggleFullScreen($event)\"\n      (toggleSmallScreen)=\"onToggleSmallScreen($event)\"\n      (toggleVisibility)=\"controlsVisibility$.next($event)\"\n      (endCall)=\"onEndCall()\"\n    />\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { of, Subject } from 'rxjs';\nimport { switchMap, take, tap } from 'rxjs/operators';\n\nimport { VideoCallComponent } from '../components';\nimport { VideoCallDialog, VideoCallDialogData } from '../models';\nimport { WebRtcComponent } from '../webrtc.component';\nimport { DialogService } from './dialog.service';\n\n/**\n * Service for managing the video call dialog and its interactions.\n * Provides methods to open a video call dialog and handle call flow.\n * @publicApi\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class VideoCallDialogService {\n\n  constructor(private dialog: DialogService) { }\n\n  /**\n   * Opens the video call dialog with the given data.\n   * Manages the flow of the video call including confirming the call and launching WebRTC for video.\n   *\n   * @param data The data to initialize the video call dialog (includes user info, channel, etc.).\n   * @returns An object with methods to control the dialog and get call status.\n   */\n  open(data: VideoCallDialogData): VideoCallDialog {\n    const callEnded = new Subject<boolean>();\n    const dialog = this.dialog.open(VideoCallComponent, { data }) as VideoCallComponent;\n\n    dialog.afterClosed.asObservable().pipe(\n      switchMap((data: VideoCallDialogData) => {\n        if (data?.channel) {\n          return this.dialog.open(WebRtcComponent, {\n            uid: data.uid,\n            token: data.token,\n            channel: data.channel,\n            localUser: data.localUser,\n            remoteUser: data.remoteUser,\n            displaySmallScreen: true,\n          }).afterClosed.asObservable();\n        }\n\n        return of(false);\n      }),\n      take(1),\n      tap(() => callEnded.next(true)),\n    ).subscribe();\n\n    return {\n      acceptCall: dialog.onAcceptCall.bind(dialog),\n      close: dialog.closeDialog.bind(dialog),\n      afterConfirmation: () => dialog.afterClosed.asObservable().pipe(take(1)),\n      afterCallEnd: () => callEnded.asObservable().pipe(take(1)),\n    };\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { AgoraConfig } from './models';\nimport { WebRtcService } from './services';\nimport { WebRtcComponent } from './webrtc.component';\n\n/**\n * The WebRTC module for Angular applications.\n * This module provides the WebRTC functionality through `WebRtcComponent` and its associated services.\n *\n * The `forRoot` method configures the WebRTC services and provides the necessary Agora SDK configuration.\n * This should be used once in the root module of your application to initialize WebRTC.\n *\n * @publicApi\n */\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    WebRtcComponent,\n  ],\n  exports: [\n    WebRtcComponent,\n  ],\n})\nexport class WebRtcModule {\n\n  /**\n   * Configures the WebRTC module with the Agora SDK configuration.\n   * This method must be called in the root module of your Angular application to properly initialize WebRTC services.\n   *\n   * @param config The configuration object for Agora SDK, including the AppID and other related settings.\n   * @returns A `ModuleWithProviders` object that configures the WebRTC module and services.\n   */\n  static forRoot(config: AgoraConfig): ModuleWithProviders<WebRtcModule> {\n    return {\n      ngModule: WebRtcModule,\n      providers: [\n        WebRtcService,\n        {\n          provide: 'AgoraConfig',\n          useValue: config,\n        },\n      ],\n    };\n  }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { AgoraConfig } from './models';\nimport { WebRtcService } from './services';\n\n/**\n * Provides WebRTC-related services and configuration for use in Angular applications.\n * This function sets up the necessary providers for WebRTC services and configures\n * the Agora SDK using the provided configuration.\n *\n * @param config The configuration object for Agora SDK, which includes details such as AppID and other settings.\n * @returns An `EnvironmentProviders` object that configures the `WebRtcService` and Agora configuration for the application.\n * @publicApi\n */\nexport function provideWebRtc(config: AgoraConfig): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    WebRtcService,\n    {\n      provide: 'AgoraConfig',\n      useValue: config,\n    },\n  ]);\n}\n","/*\n * Public API Surface of ngx-webrtc-lib\n */\n\nexport * from './lib/models/agora-config.model';\nexport * from './lib/models/call-dialog-data.model';\nexport * from './lib/services/video-call-dialog.service';\nexport * from './lib/webrtc-lib.module';\nexport * from './lib/webrtc-lib.provider';\nexport * from './lib/webrtc.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DialogService"],"mappings":";;;;;;;MAGsB,eAAe,CAAA;AAIb,IAAA,GAAA;AAHtB,IAAA,WAAW,GAAG,IAAI,OAAO,EAAO;IAChC,KAAK,GAAG,IAAI;AAEZ,IAAA,WAAA,CAAsB,GAAsB,EAAA;QAAtB,IAAG,CAAA,GAAA,GAAH,GAAG;;AAEzB,IAAA,WAAW,CAAC,IAAU,EAAA;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;;AAGlB,IAAA,aAAa,CAAC,IAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE9B;;MCTY,iBAAiB,CAAA;IACnB,aAAa,GAAG,IAAI;IACpB,iBAAiB,GAAG,IAAI;IACxB,iBAAiB,GAAG,KAAK;IACzB,kBAAkB,GAAG,KAAK;IAC1B,kBAAkB,GAAG,KAAK;AACzB,IAAA,YAAY,GAAG,IAAI,YAAY,EAAW;AAC1C,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;AAC9C,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;AAC9C,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAW;AAC/C,IAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;IAE5C,cAAc,GAAA;QACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;IAG5C,kBAAkB,GAAA;QAChB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;;IAGpD,kBAAkB,GAAA;QAChB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;;IAGpD,mBAAmB,GAAA;QACjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;;IAGtD,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;uGA7BV,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,2cCT9B,+vZAgKA,EAAA,MAAA,EAAA,CAAA,q9CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDvJa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAGP,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,QAAA,EAAA,+vZAAA,EAAA,MAAA,EAAA,CAAA,q9CAAA,CAAA,EAAA;8BAGP,aAAa,EAAA,CAAA;sBAArB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBACS,iBAAiB,EAAA,CAAA;sBAA1B;gBACS,OAAO,EAAA,CAAA;sBAAhB;;;MERU,kBAAkB,CAAA;AACF,IAAA,QAAQ;AACR,IAAA,KAAK;AACvB,IAAA,SAAS;uGAHP,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX/B,skGAuBA,EAAA,MAAA,EAAA,CAAA,sgBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKN,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EACP,OAAA,EAAA,CAAC,OAAO,CAAC,EAAA,eAAA,EAGD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,skGAAA,EAAA,MAAA,EAAA,CAAA,sgBAAA,CAAA,EAAA;8BAGpB,QAAQ,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAChB,SAAS,EAAA,CAAA;sBAAjB;;;MEFU,wBAAwB,CAAA;AACR,IAAA,MAAM;AACN,IAAA,gBAAgB;AAChB,IAAA,iBAAiB;AACjB,IAAA,oBAAoB;AACpB,IAAA,WAAW;AAC7B,IAAA,IAAI;AACH,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW;AAElD,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI;;IAGhC,YAAY,GAAA;QACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;uGAd7B,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZrC,qrSAwBA,EAAA,MAAA,EAAA,CAAA,uzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBY,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKjB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EACP,OAAA,EAAA,CAAC,kBAAkB,CAAC,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qrSAAA,EAAA,MAAA,EAAA,CAAA,uzBAAA,CAAA,EAAA;8BAGpB,MAAM,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,gBAAgB,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,iBAAiB,EAAA,CAAA;sBAA3C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,oBAAoB,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,WAAW,EAAA,CAAA;sBAArC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAChB,IAAI,EAAA,CAAA;sBAAZ;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;MENU,yBAAyB,CAAA;AACT,IAAA,EAAE;AACF,IAAA,aAAa;AACb,IAAA,iBAAiB;AACnC,IAAA,IAAI;AACJ,IAAA,SAAS;uGALP,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,ECbtC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,srFAuCA,ED/BY,MAAA,EAAA,CAAA,4iDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFAAE,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAK1B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAA,eAAA,EAGrB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,srFAAA,EAAA,MAAA,EAAA,CAAA,4iDAAA,CAAA,EAAA;8BAGpB,EAAE,EAAA,CAAA;sBAA5B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,aAAa,EAAA,CAAA;sBAAvC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,iBAAiB,EAAA,CAAA;sBAA3C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAChB,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MEPU,gBAAgB,CAAA;AAClB,IAAA,IAAI;IACJ,KAAK,GAAG,KAAK;IACb,SAAS,GAAG,IAAI;IAChB,KAAK,GAAG,KAAK;IACb,KAAK,GAAG,KAAK;AAEtB,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,MAAM;;AAGf,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,SAAS;;QAGlB,OAAO,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS;;uGAhBpC,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX7B,47BAmBA,EAAA,MAAA,EAAA,CAAA,2iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEN,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;+BACE,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,47BAAA,EAAA,MAAA,EAAA,CAAA,2iCAAA,CAAA,EAAA;8BAGT,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;MEHU,cAAc,CAAA;AAChB,IAAA,OAAO,GAAW,IAAI,CAAC,GAAG,EAAE;AAC9B,IAAA,KAAK;IAEZ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAC9B,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAClD;;AAGH,IAAA,MAAM,CAAC,QAAgB,EAAA;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACxE,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC/E,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAEpF,QAAA,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;uGAfjB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb3B,qEAGA,EAAA,MAAA,EAAA,CAAA,wIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDQY,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAER,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;+BACE,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,SAAS,CAAC,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,wIAAA,CAAA,EAAA;8BAGX,OAAO,EAAA,CAAA;sBAAf;;;AEZH,MAAM,MAAM,GAAG;AACb,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,YAAY,EAAE,MAAM;AACrB,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,YAAY,EAAE,CAAC;AAChB,KAAA;CACF;AAEM,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE;IAC3C,UAAU,CAAC,QAAQ,EAAE;AACnB,QAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QACpB,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAClD,CAAC;IACF,UAAU,CAAC,QAAQ,EAAE;AACnB,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACnB,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACnD,CAAC;AACH,CAAA,CAAC;;ACPI,MAAO,kBAAmB,SAAQ,eAAe,CAAA;AAC5C,IAAA,IAAI;IACN,UAAU,GAAG,KAAK;AACjB,IAAA,KAAK;AAEb,IAAA,WAAA,CAAY,GAAsB,EAAA;QAChC,KAAK,CAAC,GAAG,CAAC;;AAGZ,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI;;AAGlC,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ;;IAGtC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAA,IAAA,CAAM,CAAC;;IAGrE,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,EAAE;;IAGb,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGlC,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAC9B,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;;AAGvC,IAAA,IAAI,CAAC,IAAY,EAAE,IAAI,GAAG,IAAI,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,IAAI,EAAE;;QAGb,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;IAGX,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;;uGAjDV,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,2HCf/B,g8BA8BA,EAAA,MAAA,EAAA,CAAA,guIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlBY,IAAI,EADF,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,aAAa,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIhB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGT,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,CAAC,aAAa,CAAC,EAClB,OAAA,EAAA,CAAC,IAAI,CAAC,cACH,IAAI,EAAA,QAAA,EAAA,g8BAAA,EAAA,MAAA,EAAA,CAAA,guIAAA,CAAA,EAAA;sFAGP,IAAI,EAAA,CAAA;sBAAZ;;;MERU,eAAe,CAAA;AAeN,IAAA,QAAA;AAA6B,IAAA,EAAA;AAdzC,IAAA,YAAY,GAAiB,IAAI,YAAY,EAAE;IAC/C,KAAK,GAAG,IAAI;AAEV,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;IAE5B,OAAO,GAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;;IAGU,OAAO,GAAA;QACjC,IAAI,CAAC,IAAI,EAAE;;IAGb,WAAoB,CAAA,QAAmB,EAAU,EAAc,EAAA;QAA3C,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAAqB,IAAE,CAAA,EAAA,GAAF,EAAE;;IAEnD,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE;;IAGb,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QAC/B,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK;AACpC,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;AAGtC,IAAA,QAAQ,CAAC,OAAe,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC;QACjE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;;uGA9BhC,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;uGAKW,gBAAgB,EAAA,CAAA;sBAAzB;gBAE2B,OAAO,EAAA,CAAA;sBAAlC,YAAY;uBAAC,YAAY;gBAKE,OAAO,EAAA,CAAA;sBAAlC,YAAY;uBAAC,YAAY;;;MCXf,aAAa,CAAA;AAIG,IAAA,QAAA;AACjB,IAAA,wBAAA;AACA,IAAA,MAAA;AACA,IAAA,QAAA;IANF,eAAe,GAAG,oBAAoB;AAE9C,IAAA,WAAA,CAC2B,QAAkB,EACnC,wBAAkD,EAClD,MAAsB,EACtB,QAAkB,EAAA;QAHD,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACzB,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QACxB,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAGlB,IAAA,IAAI,CAAC,SAAoB,EAAE,IAAA,GAAY,EAAE,EAAA;QACvC,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC;;IAGtC,eAAe,CAAC,SAAoB,EAAE,IAAS,EAAA;;AAErD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC;aACvB,uBAAuB,CAAC,SAAS;AACjC,aAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAExB,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY;;QAGjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAAK,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;;QAGrE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;;AAG7C,QAAA,MAAM,OAAO,GAAI,YAAY,CAAC;aAC3B,SAAS,CAAC,CAAC,CAAgB;;QAG9B,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;;AAGlC,QAAA,QAA4B,CAAC;aAC3B,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,CAAC,GAAG,CAAC;aAEX,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC7C,YAAY,CAAC,OAAO,EAAE;AACxB,SAAC,CAAC;AAEJ,QAAA,OAAO,QAA2B;;IAG5B,YAAY,GAAA;AAClB,QAAA,IAAI,SAAS,GAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,CAAA,CAAE,CAAgB;QAEnG,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;YAC9C,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC;AACrD,YAAA,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,mDAAmD,CAAC;YACpF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;;AAG3C,QAAA,OAAO,SAAS;;AA3DP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBAIf,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAJN,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAKG,MAAM;2BAAC,QAAQ;;;ACHZ,MAAM,oBAAoB,GAAgB;AAC/C,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,KAAK,EAAE,KAAK;CACb;;ACID,MAAM,aAAa,GAAiB;AAClC,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,KAAK,EAAE,MAAM;CACd;MAGY,aAAa,CAAA;AAkBmB,IAAA,MAAA;AAjBnC,IAAA,QAAQ;AACR,IAAA,0BAA0B;AAC1B,IAAA,0BAA0B;AAC1B,IAAA,MAAM;AACN,IAAA,WAAW;AACX,IAAA,GAAG;AACH,IAAA,WAAW,GAAG,IAAI,eAAe,CAAc,oBAAoB,CAAC;AACpE,IAAA,uBAAuB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAC5D,IAAA,uBAAuB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAC5D,IAAA,OAAO,GAAG,IAAI,OAAO,EAAQ;IAE9B,gBAAgB,GAAG,aAAa;IAChC,WAAW,GAAa,EAAE;AAC1B,IAAA,wBAAwB,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE;AACtE,IAAA,wBAAwB,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE;AACtE,IAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAErD,IAAA,WAAA,CAA2C,MAAmB,EAAA;QAAnB,IAAM,CAAA,MAAA,GAAN,MAAM;;AAGjD,IAAA,IAAI,CAAC,GAAW,EAAE,OAAe,EAAE,KAAoB,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC9B,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAEpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC;YACvD,IAAI,CAAC,oBAAoB,EAAE;AAE3B,YAAA,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,MAAK;gBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG;qBACjE,IAAI,CAAC,MAAK;oBACT,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACvD,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,wBAAwB,EAAE,CAAC;AAC7G,iBAAC;AACA,qBAAA,KAAK,CAAC,CAAC,GAAU,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACjD,aAAC,CAAC;AAEF,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;SACnC,CAAC,CACH;;IAGH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC3C,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGzC,OAAO,GAAA;QACL,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAK;YAC5B,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/G,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;YAErB,QAAQ,CAAC,GAAG;AACT,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACZ,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACzC,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAAgB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;;;AAIjD,IAAA,WAAW,CAAC,OAAgB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;;;AAIjD,IAAA,gBAAgB,CAAC,OAAgB,EAAA;AAC/B,QAAA,OAAO,GAAG,QAAQ,CAAC,cAAc,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,iBAAiB,EAAE;;AAGpF,IAAA,UAAU,CAAC,OAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,0BAA0B,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,EAAE;;IAGnE,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK;;AAG3C,QAAA,OAAO,KAAK;;IAGd,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK;;AAG3C,QAAA,OAAO,KAAK;;IAGd,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,0BAA0B,EAAE,OAAO;;IAGjD,oBAAoB,GAAA;AAClB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB;;IAGnC,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,IAAyB,KAAI;YACpE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAEzF,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC5B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;AAEjD,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,IAAyB,EAAE,SAA4B,KAAI;YACrG,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACzC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAwC,KAAI;gBACvF,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxC,oBAAA,KAAsB,CAAC,IAAI,CAAC,UAAU,CAAC;;AAE5C,aAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,GAAQ,EAAE,GAA4B,KAAI;YACtF,QAAQ,GAAG;gBACT,KAAK,uBAAuB,CAAC,SAAS;AACpC,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;oBACxC;gBACF,KAAK,uBAAuB,CAAC,WAAW;AACtC,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;oBACvC;gBACF,KAAK,uBAAuB,CAAC,SAAS;AACpC,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;oBACxC;gBACF,KAAK,uBAAuB,CAAC,WAAW;AACtC,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;oBACvC;;AAEN,SAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAK;YACzC,IAAI,CAAC,OAAO,EAAE;AAChB,SAAC,CAAC;;IAGI,eAAe,GAAA;QACrB,OAAO,OAAO,CAAC,GAAG,CAAC;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;AACnC,gBAAA,aAAa,EAAE,QAAQ;aACxB,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,0BAA0B;SACzC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAI;YACnC,IAAI,CAAC,WAAW,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE;AAE7C,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,gBAAA,OAAO,IAAI,CAAC,8BAA8B,EAAE;;AAG9C,YAAA,OAAO,OAAO,CAAC,OAAO,EAAE;AAC1B,SAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAY,KAAI;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACzB,SAAC,CAAC;;AAGI,IAAA,WAAW,CAAC,IAAyB,EAAA;AAC3C,QAAA,OAAO,CAAe,YAAA,EAAA,IAAI,CAAC,GAAG,EAAE;;AAG1B,IAAA,WAAW,CAAC,KAAY,EAAA;QAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC5F,IAAI,CAAC,eAAe,EAAE;QAEtB,QAAQ,CAAC,IAAI;AACV,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAEvC,QAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;;IAGxB,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,KAAgD,KAAI;gBAC3F,KAAK,CAAC,IAAI,EAAE;gBACZ,KAAK,CAAC,KAAK,EAAE;AACf,aAAC,CAAC;;;AAIE,IAAA,MAAM,OAAO,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAC9D,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;QAG1B,IAAI,CAAC,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;YACxE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE,GAAG,MAAM,OAAO,oCAAoC,CAAC;AAClG,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,0BAA0B,EAAE;YAClE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;;QAGrE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,EAAE;YAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;;;AAInE,IAAA,MAAM,8BAA8B,GAAA;QAC1C,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE;AACnF,QAAA,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE;QAE5C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,oBAAoB,CAAC;AACxH,QAAA,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;;AApNlE,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBAkBJ,aAAa,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAlBtB,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;0BAmBc,MAAM;2BAAC,aAAa;;AAsMnC,IAAY,YAKX;AALD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,YAAA,CAAA,iBAAA,CAAA,GAAA,mBAAqC;AACrC,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACxB,CAAC,EALW,YAAY,KAAZ,YAAY,GAKvB,EAAA,CAAA,CAAA;AAED,IAAY,uBAKX;AALD,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,uBAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,uBAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,uBAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC9B,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,GAKlC,EAAA,CAAA,CAAA;;ACnOD;;;;;;AAMG;AAmBG,MAAO,eAAgB,SAAQ,eAAe,CAAA;AAElD;;AAEG;AACwB,IAAA,GAAG;AAE9B;;AAEG;AACM,IAAA,KAAK;AAEd;;AAEG;AACwB,IAAA,OAAO;AAElC;;;AAGG;AACM,IAAA,SAAS;AAElB;;;AAGG;AACM,IAAA,UAAU;AAEnB;;;AAGG;IACM,OAAO,GAAG,IAAI;AAEvB;;;AAGG;IACM,kBAAkB,GAAG,KAAK;AAEnC;;AAEG;AACO,IAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;IACT,kBAAkB,GAAG,KAAK;IAChC,MAAM,GAAG,KAAK;AAE1B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,IAAA,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;AAC9C,IAAA,wBAAwB,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB;AACtE,IAAA,wBAAwB,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB;AACtE,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;IACxD,iBAAiB,GAAG,KAAK;AAEhC,IAAA,WAAA,CACE,GAAsB,EAAA;QAEtB,KAAK,CAAC,GAAG,CAAC;;IAGZ,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK;AACvD,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACZ,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB;AACrC,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACxB,aAAC,CAAC;;;IAIR,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;;AAG7B,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB;;AAG5C,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW;;AAGvC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;;AAG5C,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;;AAG5C,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,iBAAiB;;AAGrC,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;;AAG3C,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;;AAGlD,IAAA,cAAc,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;;AAGvC,IAAA,kBAAkB,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;;AAGvC,IAAA,kBAAkB,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AAG5C,IAAA,mBAAmB,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,KAAK;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;AAGpB,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC;;IAGtC,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;;IAG9B,aAAa,GAAA;QACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;;uGArI3D,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpD5B,w/DA6DA,EDnBI,MAAA,EAAA,CAAA,sjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,8CACT,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,iBAAiB,EACjB,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,uMACxB,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,gBAAgB,EAChB,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,2EACd,eAAe,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAVL,CAAC,aAAa,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAahB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,SAAS;+BACE,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,CAAC,aAAa,CAAC,EACf,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,SAAS;wBACT,IAAI;wBACJ,iBAAiB;wBACjB,wBAAwB;wBACxB,yBAAyB;wBACzB,gBAAgB;wBAChB,cAAc;wBACd,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,w/DAAA,EAAA,MAAA,EAAA,CAAA,sjBAAA,CAAA,EAAA;sFAO0B,GAAG,EAAA,CAAA;sBAA7B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAKhB,KAAK,EAAA,CAAA;sBAAb;gBAK0B,OAAO,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAMhB,SAAS,EAAA,CAAA;sBAAjB;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBAMQ,OAAO,EAAA,CAAA;sBAAf;gBAMQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKS,OAAO,EAAA,CAAA;sBAAhB;gBACkC,kBAAkB,EAAA,CAAA;sBAApD,WAAW;uBAAC,oBAAoB;gBACJ,MAAM,EAAA,CAAA;sBAAlC,WAAW;uBAAC,cAAc;;;AEzF7B;;;;AAIG;MAIU,sBAAsB,CAAA;AAEb,IAAA,MAAA;AAApB,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM;;AAE1B;;;;;;AAMG;AACH,IAAA,IAAI,CAAC,IAAyB,EAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAW;AACxC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAuB;AAEnF,QAAA,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CACpC,SAAS,CAAC,CAAC,IAAyB,KAAI;AACtC,YAAA,IAAI,IAAI,EAAE,OAAO,EAAE;AACjB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;oBACvC,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,oBAAA,kBAAkB,EAAE,IAAI;AACzB,iBAAA,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE;;AAG/B,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC;SACjB,CAAC,EACF,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAChC,CAAC,SAAS,EAAE;QAEb,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,YAAA,iBAAiB,EAAE,MAAM,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxE,YAAA,YAAY,EAAE,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC3D;;uGAvCQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA;;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACTD;;;;;;;;AAQG;MAWU,YAAY,CAAA;AAEvB;;;;;;AAMG;IACH,OAAO,OAAO,CAAC,MAAmB,EAAA;QAChC,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE;gBACT,aAAa;AACb,gBAAA;AACE,oBAAA,OAAO,EAAE,aAAa;AACtB,oBAAA,QAAQ,EAAE,MAAM;AACjB,iBAAA;AACF,aAAA;SACF;;uGAnBQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAPrB,YAAY;AACZ,YAAA,eAAe,aAGf,eAAe,CAAA,EAAA,CAAA;AAGN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAPrB,YAAY,CAAA,EAAA,CAAA;;2FAOH,YAAY,EAAA,UAAA,EAAA,CAAA;kBAVxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;AAChB,qBAAA;AACF,iBAAA;;;ACrBD;;;;;;;;AAQG;AACG,SAAU,aAAa,CAAC,MAAmB,EAAA;AAC/C,IAAA,OAAO,wBAAwB,CAAC;QAC9B,aAAa;AACb,QAAA;AACE,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,QAAQ,EAAE,MAAM;AACjB,SAAA;AACF,KAAA,CAAC;AACJ;;ACrBA;;AAEG;;ACFH;;AAEG;;;;"}