diff --git a/docker/create_image.sh b/docker/create_image.sh index 6c026b5..17d2cf3 100755 --- a/docker/create_image.sh +++ b/docker/create_image.sh @@ -5,7 +5,7 @@ cp ../../openvidu/openvidu-server/target/openvidu-server-"$1".jar ./openvidu-ser cd ../src/angular/frontend -ng build --environment=container --output-path ../../main/resources/static +ng build --configuration=container --output-path ../../main/resources/static cd ../../../ diff --git a/src/main/java/io/openvidu/classroom/demo/App.java b/src/main/java/io/openvidu/classroom/demo/App.java index c396ddf..2814284 100644 --- a/src/main/java/io/openvidu/classroom/demo/App.java +++ b/src/main/java/io/openvidu/classroom/demo/App.java @@ -40,7 +40,7 @@ public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { - registry.addMapping("/**").allowedOrigins("*"); + registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST","PUT", "DELETE");; } }; } diff --git a/src/main/resources/static/main.js b/src/main/resources/static/main.js index 5ebd650..dc88be4 100644 --- a/src/main/resources/static/main.js +++ b/src/main/resources/static/main.js @@ -1864,13 +1864,10 @@ var VideoSessionService = /** @class */ (function () { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "environment", function() { return environment; }); -// The file contents for the current environment will overwrite these during build. -// The build system defaults to the dev environment which uses `environment.ts`, but if you do -// `ng build --env=prod` then `environment.prod.ts` will be used instead. -// The list of which env maps to which file can be found in `.angular-cli.json`. var environment = { production: false, - URL_BACK: 'https://localhost:5000' + envName: 'container', + URL_BACK: window.location.origin }; diff --git a/src/main/resources/static/main.js.map b/src/main/resources/static/main.js.map index 42bc00f..878709f 100644 --- a/src/main/resources/static/main.js.map +++ b/src/main/resources/static/main.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app.component.css","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/app.routing.ts","webpack:///./src/app/auth.guard.ts","webpack:///./src/app/components/dashboard/dahsboard.component.ts","webpack:///./src/app/components/dashboard/dashboard.component.css","webpack:///./src/app/components/dashboard/dashboard.component.html","webpack:///./src/app/components/dashboard/join-session-dialog.component.ts","webpack:///./src/app/components/error-message/error-message.component.css","webpack:///./src/app/components/error-message/error-message.component.html","webpack:///./src/app/components/error-message/error-message.component.ts","webpack:///./src/app/components/lesson-details/lesson-details.component.css","webpack:///./src/app/components/lesson-details/lesson-details.component.html","webpack:///./src/app/components/lesson-details/lesson-details.component.ts","webpack:///./src/app/components/presentation/presentation.component.css","webpack:///./src/app/components/presentation/presentation.component.html","webpack:///./src/app/components/presentation/presentation.component.ts","webpack:///./src/app/components/profile/profile.component.css","webpack:///./src/app/components/profile/profile.component.html","webpack:///./src/app/components/profile/profile.component.ts","webpack:///./src/app/components/video-session/video-session.component.css","webpack:///./src/app/components/video-session/video-session.component.html","webpack:///./src/app/components/video-session/video-session.component.ts","webpack:///./src/app/material.module.ts","webpack:///./src/app/models/lesson.ts","webpack:///./src/app/models/user.ts","webpack:///./src/app/router.animation.ts","webpack:///./src/app/services/authentication.service.ts","webpack:///./src/app/services/lesson.service.ts","webpack:///./src/app/services/user.service.ts","webpack:///./src/app/services/video-session.service.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error('Cannot find module \"' + req + '\".');\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","module.exports = \"mat-sidenav {\\n width: 250px;\\n}\\n\\nmat-sidenav-container {\\n height: 100%;\\n}\\n\\nfooter.page-footer {\\n margin: 0;\\n}\\n\\nfooter h2 {\\n margin-top: 10px;\\n}\\n\\n.sidenav-button {\\n width: 100%;\\n}\\n\\nheader .fill-remaining-space {\\n flex: 1 1 auto;\\n}\\n\\nheader #navbar-logo {\\n font-weight: bold;\\n}\\n\\nfooter ul {\\n padding-left: 0;\\n}\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\\n
\\n \\n \\n \\n
\\n \\n \\n \\n
\\n \\n
\\n
\\n\\n
\\n \\n
\\n\\n \\n\\n
\"","import { Component, NgModule } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AuthenticationService } from './services/authentication.service';\nimport { routerTransition } from './router.animation';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css'],\n animations: [routerTransition]\n})\nexport class AppComponent {\n\n constructor(private router: Router, private authenticationService: AuthenticationService) { }\n\n isVideoSessionUrl() {\n return (this.router.url.substring(0, '/lesson/'.length) === '/lesson/');\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HttpModule } from '@angular/http';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\nimport 'hammerjs';\n\nimport { MaterialModule } from './material.module';\nimport { routing } from './app.routing';\nimport { AppComponent } from './app.component';\nimport { AuthGuard } from './auth.guard';\nimport { PresentationComponent } from './components/presentation/presentation.component';\nimport { DashboardComponent } from './components/dashboard/dahsboard.component';\nimport { LessonDetailsComponent } from './components/lesson-details/lesson-details.component';\nimport { ProfileComponent } from './components/profile/profile.component';\nimport { VideoSessionComponent } from './components/video-session/video-session.component';\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\nimport { JoinSessionDialogComponent } from './components/dashboard/join-session-dialog.component';\n\nimport { AuthenticationService } from './services/authentication.service';\nimport { UserService } from './services/user.service';\nimport { LessonService } from './services/lesson.service';\nimport { VideoSessionService } from './services/video-session.service';\n\n@NgModule({\n declarations: [\n AppComponent,\n PresentationComponent,\n DashboardComponent,\n LessonDetailsComponent,\n ProfileComponent,\n VideoSessionComponent,\n ErrorMessageComponent,\n JoinSessionDialogComponent,\n ],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n FormsModule,\n HttpModule,\n MaterialModule,\n FlexLayoutModule,\n routing,\n ],\n providers: [\n AuthenticationService,\n UserService,\n LessonService,\n VideoSessionService,\n AuthGuard,\n ],\n entryComponents: [\n JoinSessionDialogComponent,\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { ModuleWithProviders } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { PresentationComponent } from './components/presentation/presentation.component';\nimport { DashboardComponent } from './components/dashboard/dahsboard.component';\nimport { LessonDetailsComponent } from './components/lesson-details/lesson-details.component';\nimport { ProfileComponent } from './components/profile/profile.component';\nimport { VideoSessionComponent } from './components/video-session/video-session.component';\n\nimport { AuthGuard } from './auth.guard';\n\nconst appRoutes: Routes = [\n {\n path: '',\n component: PresentationComponent,\n pathMatch: 'full',\n data: { state: 'presentation' }\n },\n {\n path: 'lessons',\n component: DashboardComponent,\n canActivate: [AuthGuard],\n data: { state: 'lessons' }\n },\n {\n path: 'lesson-details/:id',\n component: LessonDetailsComponent,\n canActivate: [AuthGuard],\n data: { state: 'lesson-details' }\n },\n {\n path: 'profile',\n component: ProfileComponent,\n canActivate: [AuthGuard],\n data: { state: 'profile' }\n },\n {\n path: 'lesson/:id',\n component: VideoSessionComponent,\n canActivate: [AuthGuard],\n data: { state: 'session' }\n },\n];\n\nexport const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes, {useHash: true});\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate } from '@angular/router';\n\nimport { AuthenticationService } from './services/authentication.service';\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n\n constructor(private router: Router, private authenticationService: AuthenticationService) { }\n\n canActivate() {\n if (localStorage.getItem('login') && localStorage.getItem('rol') && this.authenticationService.isLoggedIn()) {\n // logged in so return true\n return true;\n }\n\n // not logged in so redirect to login page\n this.router.navigate(['']);\n return false;\n }\n}\n","import { Component, OnInit, EventEmitter } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatDialog, MatDialogRef, MatSnackBar } from '@angular/material';\n\nimport { Lesson } from '../../models/lesson';\n\nimport { LessonService } from '../../services/lesson.service';\nimport { VideoSessionService } from '../../services/video-session.service';\nimport { AuthenticationService } from '../../services/authentication.service';\n\nimport { JoinSessionDialogComponent } from './join-session-dialog.component';\nimport { PublisherProperties } from 'openvidu-browser';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.css'],\n})\nexport class DashboardComponent implements OnInit {\n\n lessons: Lesson[];\n\n addingLesson: false;\n lessonTitle: string;\n sumbitNewLesson: boolean;\n\n constructor(\n private lessonService: LessonService,\n private videoSessionService: VideoSessionService,\n private authenticationService: AuthenticationService,\n private router: Router,\n public snackBar: MatSnackBar,\n public dialog: MatDialog\n ) { }\n\n ngOnInit(): void {\n this.authenticationService.checkCredentials();\n this.getLessons();\n }\n\n logout() {\n this.authenticationService.logOut();\n }\n\n getLessons(): void {\n this.lessonService.getLessons(this.authenticationService.getCurrentUser()).subscribe(\n lessons => {\n console.log('User\\'s lessons: ');\n console.log(lessons);\n this.lessons = lessons;\n this.authenticationService.updateUserLessons(this.lessons);\n },\n error => console.log(error));\n }\n\n goToLesson(lesson: Lesson) {\n let dialogRef: MatDialogRef;\n dialogRef = this.dialog.open(JoinSessionDialogComponent);\n dialogRef.componentInstance.myReference = dialogRef;\n\n dialogRef.afterClosed().subscribe((cameraOptions: PublisherProperties) => {\n if (!!cameraOptions) {\n console.log('Joining session with options:');\n console.log(cameraOptions);\n this.videoSessionService.lesson = lesson;\n this.videoSessionService.cameraOptions = cameraOptions;\n this.router.navigate(['/lesson/' + lesson.id]);\n }\n });\n }\n\n goToLessonDetails(lesson: Lesson) {\n this.router.navigate(['/lesson-details/' + lesson.id]);\n }\n\n newLesson() {\n this.sumbitNewLesson = true;\n this.lessonService.newLesson(new Lesson(this.lessonTitle)).subscribe(\n lesson => {\n console.log('New lesson added: ');\n console.log(lesson);\n this.lessons.push(lesson);\n this.authenticationService.updateUserLessons(this.lessons);\n this.sumbitNewLesson = false;\n this.snackBar.open('Lesson added!', undefined, { duration: 3000 });\n this.addingLesson = false;\n },\n error => {\n console.log(error);\n this.sumbitNewLesson = false;\n this.snackBar.open('There has been a problem...', undefined, { duration: 3000 });\n }\n );\n }\n\n createSession(lessonId: number) {\n this.videoSessionService.createSession(lessonId).subscribe(\n () => {\n console.log('Session created');\n },\n error => {\n console.log(error);\n }\n )\n }\n\n generateToken(lessonId: number) {\n this.videoSessionService.generateToken(lessonId).subscribe(\n response => {\n console.log(response.text());\n },\n error => {\n console.log(error);\n }\n )\n }\n\n}\n","module.exports = \"mat-card {\\n margin-top: 20px;\\n}\\n\\nmat-card mat-icon {\\n text-align: center;\\n}\\n\\nspan.teacher {\\n font-size: 12px;\\n}\\n\"","module.exports = \"
\\n
\\n
\\n\\n
\\n
\\n\\n
\\n
MY LESSONS
\\n add_circle_outline\\n
\\n\\n
\\n
NEW LESSON
\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n {{lesson.title}}\\n {{lesson.teacher.nickName}}\\n mode_edit\\n play_circle_filled\\n
\\n
\\n\\n
\\n \\n
\\n\\n
\\n \\n
\\n\\n
\\n
\\n\"","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material';\n\nimport { PublisherProperties } from 'openvidu-browser';\n\n@Component({\n selector: 'app-join-session-dialog',\n template: `\n
\n

\n Video options\n

\n
\n \n
\n
Quality
\n \n Low\n Medium\n High\n Very high\n \n
\n
\n
Enter with active...
\n Video\n Audio\n
\n
\n \n \n \n \n
\n
\n `,\n styles: [`\n #quality-div {\n margin-top: 20px;\n }\n #join-div {\n margin-top: 25px;\n margin-bottom: 20px;\n }\n #quality-tag {\n display: block;\n }\n h5 {\n margin-bottom: 10px;\n text-align: left;\n }\n #joinWithVideo {\n margin-right: 50px;\n }\n mat-dialog-actions {\n display: block;\n }\n #join-btn {\n float: right;\n }\n `],\n})\nexport class JoinSessionDialogComponent {\n\n public myReference: MatDialogRef;\n private quality = 'medium';\n private joinWithVideo = true;\n private joinWithAudio = true;\n\n constructor() { }\n\n joinSession() {\n const cameraOptions: PublisherProperties = {\n audioSource: (!this.joinWithAudio) ? false : undefined,\n videoSource: (!this.joinWithVideo) ? false : undefined,\n resolution: this.getResolution()\n };\n this.myReference.close(cameraOptions);\n }\n\n getResolution(): string {\n let resolution;\n switch (this.quality) {\n case 'low':\n resolution = '320x240';\n break;\n case 'medium':\n resolution = '640x480';\n break;\n case 'high':\n resolution = '1280x720';\n break;\n case 'veryhigh':\n resolution = '1920x1080';\n break;\n default:\n resolution = '640x480';\n }\n return resolution;\n }\n}\n","module.exports = \".fail {\\n background-color: rgba(167, 56, 65, 0.2);\\n color: #a73841;\\n}\\n\\n.warning {\\n background-color: rgba(175, 110, 0, 0.2);\\n color: #af6e00;\\n}\\n\\n.correct {\\n background-color: rgba(55, 86, 70, 0.25);\\n color: #375546;\\n}\\n\\nmat-icon {\\n cursor: pointer;\\n float: right;\\n}\\n\\nmat-card {\\n max-width: 400px;\\n margin-top: 20px;\\n margin-bottom: 20px;\\n box-shadow: none;\\n}\\n\"","module.exports = \"\\n clear\\n {{this.errorTitle}}\\n \\n\\n\"","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'app-error-message',\n templateUrl: './error-message.component.html',\n styleUrls: ['./error-message.component.css']\n})\nexport class ErrorMessageComponent {\n\n @Input()\n errorTitle: string;\n @Input()\n errorContent: string;\n @Input()\n customClass: string;\n @Input()\n closable: boolean;\n @Input()\n timeable: number;\n\n @Output()\n eventShowable = new EventEmitter();\n\n constructor() { }\n\n public closeAlert() {\n this.eventShowable.emit(false);\n }\n\n}\n","module.exports = \".attender-email {\\n font-size: 11px;\\n}\\n\\n.no-margin-bottom {\\n margin-bottom: 0 !important;\\n}\\n\\n.attender-row {\\n width: 100%;\\n margin-top: 20px;\\n min-height: 27px;\\n}\\n\\n#new-attender-title {\\n margin-bottom: 5px;\\n}\\n\\n/*Rotating animation*/\\n\\n@-webkit-keyframes rotating\\n/* Safari and Chrome */\\n\\n{\\n from {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n to {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n\\n@keyframes rotating {\\n from {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n to {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n\\n.rotating {\\n -webkit-animation: rotating 1s linear infinite;\\n animation: rotating 1s linear infinite;\\n cursor: default !important;\\n}\\n\\n.rotating:hover {\\n color: inherit !important;\\n}\\n\\n/*End rotating animation*/\\n\"","module.exports = \"
\\n
\\n\\n
\\n keyboard_arrow_left\\n

{{lesson.title}}

\\n mode_edit\\n
\\n\\n
\\n
\\n \\n \\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n

New attender

\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n\\n \\n \\n\\n
\\n
\\n
\\n
{{authenticationService.getCurrentUser().nickName}}
\\n
{{authenticationService.getCurrentUser().name}}
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
{{attender.nickName}}
\\n
{{attender.name}}
\\n
\\n
\\n
\\n clear\\n cached\\n
\\n
\\n
\\n \\n
\\n
\\n\"","import { map } from 'rxjs/operators';\n\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { MatSnackBar } from '@angular/material';\n\nimport { Lesson } from '../../models/lesson';\nimport { User } from '../../models/user';\n\nimport { LessonService } from '../../services/lesson.service';\nimport { AuthenticationService } from '../../services/authentication.service';\n\n@Component({\n selector: 'app-lesson-details',\n templateUrl: './lesson-details.component.html',\n styleUrls: ['./lesson-details.component.css'],\n})\nexport class LessonDetailsComponent implements OnInit {\n\n lesson: Lesson;\n\n editingTitle = false;\n titleEdited: string;\n sumbitEditLesson = false;\n emailAttender: string;\n sumbitAddAttenders = false;\n arrayOfAttDels = [];\n\n // Feedback message parameters\n addAttendersCorrect = false;\n addAttendersError = false;\n attErrorTitle: string;\n attErrorContent: string;\n attCorrectTitle: string;\n attCorrectContent: string;\n\n constructor(\n private lessonService: LessonService,\n private authenticationService: AuthenticationService,\n private router: Router,\n private route: ActivatedRoute,\n private location: Location,\n public snackBar: MatSnackBar\n ) { }\n\n ngOnInit(): void {\n this.route.params\n .map((params: Params) => this.lessonService.obtainLocalLesson(+params['id']))\n .subscribe(lesson => this.lesson = lesson);\n }\n\n editLesson() {\n if (this.titleEdited !== this.lesson.title) {\n this.sumbitEditLesson = true;\n const l = new Lesson(this.titleEdited);\n l.id = this.lesson.id;\n this.lessonService.editLesson(l).subscribe(\n lesson => {\n // Lesson has been updated\n console.log('Lesson edited: ');\n console.log(lesson);\n this.lesson = lesson;\n this.sumbitEditLesson = false;\n this.editingTitle = false;\n this.snackBar.open('Lesson edited!', undefined, { duration: 3000 });\n },\n error => {\n console.log(error);\n this.sumbitEditLesson = false;\n this.snackBar.open('There has been a problem...', undefined, { duration: 3000 });\n });\n } else {\n this.editingTitle = false; // The user has not modified the title\n }\n }\n\n deleteLesson() {\n this.sumbitEditLesson = true;\n this.lessonService.deleteLesson(this.lesson.id).subscribe(\n lesson => {\n // Lesson has been deleted\n console.log('Lesson deleted');\n console.log(lesson);\n this.sumbitEditLesson = false;\n this.router.navigate(['/lessons']);\n this.snackBar.open('Lesson deleted!', undefined, { duration: 3000 });\n },\n error => {\n console.log(error);\n this.sumbitEditLesson = false;\n this.snackBar.open('There has been a problem...', undefined, { duration: 3000 });\n });\n }\n\n addLessonAttenders() {\n this.sumbitAddAttenders = true;\n this.lessonService.addLessonAttenders(this.lesson.id, [this.emailAttender]).subscribe(\n response => { // response: attendersAdded, attendersAlreadyAdded, emailsInvalid, emailsValidNotRegistered\n console.log('Attender added');\n console.log(response);\n this.sumbitAddAttenders = false;\n const newAttenders = response.attendersAdded as User[];\n this.lesson.attenders = this.lesson.attenders.concat(newAttenders);\n this.handleAttendersMessage(response);\n },\n error => {\n console.log(error);\n this.sumbitAddAttenders = false;\n this.snackBar.open('There has been a problem...', undefined, { duration: 3000 });\n });\n }\n\n deleteLessonAttender(i: number, attender: User) {\n this.arrayOfAttDels[i] = true;\n const l = new Lesson(this.lesson.title);\n l.id = this.lesson.id;\n for (let j = 0; j < this.lesson.attenders.length; j++) {\n if (this.lesson.attenders[j].id !== attender.id) {\n // Inserting a new User object equal to the attender but \"lessons\" array empty\n l.attenders.push(new User(this.lesson.attenders[j]));\n }\n }\n this.lessonService.deleteLessonAttenders(l).subscribe(\n attenders => {\n console.log('Attender removed');\n console.log(attenders);\n this.arrayOfAttDels[i] = false;\n this.lesson.attenders = attenders;\n this.snackBar.open('Attender removed!', undefined, { duration: 3000 });\n },\n error => {\n console.log(error);\n this.arrayOfAttDels[i] = false;\n this.snackBar.open('There has been a problem...', undefined, { duration: 3000 });\n });\n }\n\n // Creates an error message when there is any problem during the process of adding Users to a Lesson\n // It also generates a correct feedback message when any student has been correctly added to the Lesson\n handleAttendersMessage(response) {\n let isError = false;\n let isCorrect = false;\n this.attErrorContent = '';\n this.attCorrectContent = '';\n\n if (response.attendersAdded.length > 0) {\n for (const user of response.attendersAdded) {\n this.attCorrectContent += '' + user.name + '';\n }\n isCorrect = true;\n }\n if (response.attendersAlreadyAdded.length > 0) {\n this.attErrorContent += 'The following users were already added to the lesson';\n for (const user of response.attendersAlreadyAdded) {\n this.attErrorContent += '' + user.name + '';\n }\n isError = true;\n }\n if (response.emailsValidNotRegistered.length > 0) {\n this.attErrorContent += 'The following users are not registered';\n for (const email of response.emailsValidNotRegistered) {\n this.attErrorContent += '' + email + '';\n }\n isError = true;\n }\n if (response.emailsInvalid) {\n if (response.emailsInvalid.length > 0) {\n this.attErrorContent += 'These are not valid emails';\n for (const email of response.emailsInvalid) {\n this.attErrorContent += '' + email + '';\n }\n isError = true;\n }\n }\n if (isError) {\n this.attErrorTitle = 'There have been some problems';\n this.addAttendersError = true;\n } else if (response.attendersAdded.length === 0) {\n this.attErrorTitle = 'No emails there!';\n this.addAttendersError = true;\n }\n if (isCorrect) {\n this.attCorrectTitle = 'The following users where properly added';\n this.addAttendersCorrect = true;\n }\n }\n\n}\n","module.exports = \"h1 {\\n text-align: center;\\n display: block;\\n}\\n\\nmat-form-field {\\n width: 100%;\\n}\\n\\nmat-card-actions {\\n padding-left: 10px;\\n padding-right: 10px;\\n color: #9e9e9e;\\n}\\n\\n.btn-container {\\n text-align: center;\\n padding-top: 20px;\\n}\\n\\n.card-button {\\n margin-left: 10px !important;\\n}\\n\\n.radio-button-div {\\n text-align: center;\\n margin-bottom: 10px;\\n}\\n\\n#sign-up-as {\\n color: #9e9e9e;\\n display: block;\\n margin-top: 15px;\\n margin-bottom: 10px;\\n}\\n\\ntable {\\n margin: 0 auto;\\n margin-top: 30px;\\n text-align: left;\\n}\\n\"","module.exports = \"
\\n
\\n\\n

OpenVidu Classroom Demo

\\n\\n
\\n\\n \\n \\n\\n
\\n
\\n
\\n\\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n Sign up as...\\n \\n Student\\n Teacher\\n \\n
\\n\\n \\n\\n
\\n \\n \\n
\\n\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
EmailPassword
teacher@gmail.compass
student1@gmail.compass
student2@gmail.compass
\\n
\\n\\n
\\n\\n \\n
Not registered yet?
\\n
Already registered?
\\n
\\n\\n
\\n\\n
\\n\\n
\\n
\\n\"","import { Component, OnInit, AfterViewChecked } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthenticationService } from '../../services/authentication.service';\nimport { UserService } from '../../services/user.service';\n\n@Component({\n selector: 'app-presentation',\n templateUrl: './presentation.component.html',\n styleUrls: ['./presentation.component.css']\n})\n\nexport class PresentationComponent implements OnInit, AfterViewChecked {\n\n private email: string;\n private password: string;\n private confirmPassword: string;\n private nickName: string;\n private roleUserSignup = 'student';\n\n private loginView = true;\n private fieldsIncorrect: boolean;\n private submitProcessing: boolean;\n\n // Error message content\n private errorTitle: string;\n private errorContent: string;\n private customClass: string;\n\n constructor(\n private authenticationService: AuthenticationService,\n private userService: UserService,\n private router: Router) { }\n\n ngOnInit() { }\n\n // If the user is loggedIn, navigates to dashboard\n ngAfterViewChecked() {\n if (this.authenticationService.isLoggedIn()) {\n this.router.navigate(['/lessons']);\n }\n }\n\n setLoginView(option: boolean) {\n this.fieldsIncorrect = false;\n this.loginView = option;\n }\n\n onSubmit() {\n console.log('Submit: email = ' + this.email + ' , password = ' + this.password + ', confirmPassword = ' + this.confirmPassword);\n this.submitProcessing = true;\n\n if (this.loginView) {\n // If login view is activated\n console.log('Logging in...');\n this.logIn(this.email, this.password);\n } else {\n // If signup view is activated\n console.log('Signing up...');\n this.signUp();\n }\n }\n\n logIn(user: string, pass: string) {\n this.authenticationService.logIn(user, pass).subscribe(\n result => {\n this.submitProcessing = false;\n\n console.log('Login succesful! LOGGED AS ' + this.authenticationService.getCurrentUser().name);\n\n // Login successful\n this.fieldsIncorrect = false;\n this.router.navigate(['/lessons']);\n },\n error => {\n\n console.log('Login failed (error): ' + error);\n\n this.errorTitle = 'Invalid field';\n this.errorContent = 'Please check your email or password';\n this.customClass = 'fail';\n\n // Login failed\n this.handleError();\n }\n );\n }\n\n signUp() {\n\n // Passwords don't match\n if (this.password !== this.confirmPassword) {\n this.errorTitle = 'Your passwords don\\'t match!';\n this.errorContent = '';\n this.customClass = 'fail';\n this.handleError();\n }\n\n else {\n\n let userNameFixed = this.email;\n let userPasswordFixed = this.password;\n\n this.userService.newUser(userNameFixed, userPasswordFixed, this.nickName, this.roleUserSignup).subscribe(\n result => {\n\n // Sign up succesful\n this.logIn(userNameFixed, userPasswordFixed);\n console.log('Sign up succesful!');\n },\n error => {\n\n console.log('Sign up failed (error): ' + error);\n if (error === 409) { // CONFLICT: Email already in use\n this.errorTitle = 'Invalid email';\n this.errorContent = 'That email is already in use';\n this.customClass = 'fail';\n } else if (error === 403) { // FORBIDDEN: Invalid email format\n this.errorTitle = 'Invalid email format';\n this.errorContent = 'Our server has rejected that email';\n this.customClass = 'fail';\n }\n\n // Sign up failed\n this.handleError();\n }\n );\n }\n }\n\n handleError() {\n this.submitProcessing = false;\n this.fieldsIncorrect = true;\n }\n}\n","module.exports = \"table {\\n margin-top: 15px;\\n border-collapse: separate;\\n border-spacing: 15px 17px;\\n}\\n\\nth {\\n text-align: left;\\n}\\n\"","module.exports = \"
\\n
\\n\\n
MY PROFILE
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Name{{authenticationService.getCurrentUser().nickName}}
Email{{authenticationService.getCurrentUser().name}}
\\n \\n
\\n
\\n\"","import { Component, OnInit } from '@angular/core';\n\nimport { AuthenticationService } from '../../services/authentication.service';\nimport { User } from '../../models/user';\n\n@Component({\n selector: 'app-profile',\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.css']\n})\nexport class ProfileComponent implements OnInit {\n\n private user: User;\n\n constructor(private authenticationService: AuthenticationService) { }\n\n ngOnInit() {\n this.user = this.authenticationService.getCurrentUser();\n }\n\n}\n","module.exports = \"h1 {\\n text-align: center;\\n margin: 0;\\n color: white;\\n}\\n\\n#header-div {\\n position: absolute;\\n z-index: 1000;\\n width: 100%;\\n background: rgba(0, 0, 0, 0.4);\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */ /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none;\\n}\\n\\nmat-icon {\\n font-size: 38px;\\n width: 38px;\\n height: 38px;\\n color: white;\\n transition: color .2s linear;\\n}\\n\\nmat-icon:hover {\\n color: #ffd740;\\n}\\n\\n#back-btn {\\n float: left;\\n}\\n\\n.right-btn {\\n float: right;\\n}\\n\"","module.exports = \"
\\n keyboard_arrow_left\\n {{fullscreenIcon}}\\n {{videoIcon}}\\n {{audioIcon}}\\n

{{lesson?.title}}

\\n
\\n
\\n
\"","import { Component, OnInit, OnDestroy, AfterViewInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { OpenVidu, Session, Publisher, StreamEvent, ConnectionEvent, PublisherProperties } from 'openvidu-browser';\n\nimport { VideoSessionService } from '../../services/video-session.service';\nimport { AuthenticationService } from '../../services/authentication.service';\n\nimport { Lesson } from '../../models/lesson';\n\n@Component({\n selector: 'app-video-session',\n templateUrl: './video-session.component.html',\n styleUrls: ['./video-session.component.css']\n})\nexport class VideoSessionComponent implements OnInit, OnDestroy, AfterViewInit {\n\n lesson: Lesson;\n\n OV: OpenVidu;\n session: Session;\n publisher: Publisher;\n\n token: string;\n\n cameraOptions: PublisherProperties;\n\n localVideoActivated: boolean;\n localAudioActivated: boolean;\n videoIcon: string;\n audioIcon: string;\n fullscreenIcon: string;\n\n constructor(\n private location: Location,\n private authenticationService: AuthenticationService,\n private videoSessionService: VideoSessionService) { }\n\n\n OPEN_VIDU_CONNECTION() {\n\n // 0) Obtain 'token' from server\n // In this case, the method ngOnInit takes care of it\n\n\n // 1) Initialize OpenVidu and your Session\n this.OV = new OpenVidu();\n this.session = this.OV.initSession();\n\n\n // 2) Specify the actions when events take place\n this.session.on('streamCreated', (event: StreamEvent) => {\n console.warn('STREAM CREATED!');\n console.warn(event.stream);\n this.session.subscribe(event.stream, 'subscriber', {\n insertMode: 'APPEND'\n });\n });\n\n this.session.on('streamDestroyed', (event: StreamEvent) => {\n console.warn('STREAM DESTROYED!');\n console.warn(event.stream);\n });\n\n this.session.on('connectionCreated', (event: ConnectionEvent) => {\n if (event.connection.connectionId === this.session.connection.connectionId) {\n console.warn('YOUR OWN CONNECTION CREATED!');\n } else {\n console.warn('OTHER USER\\'S CONNECTION CREATED!');\n }\n console.warn(event.connection);\n });\n\n this.session.on('connectionDestroyed', (event: ConnectionEvent) => {\n console.warn('OTHER USER\\'S CONNECTION DESTROYED!');\n console.warn(event.connection);\n });\n\n\n // 3) Connect to the session\n this.session.connect(this.token, 'CLIENT:' + this.authenticationService.getCurrentUser().name)\n .then(() => {\n if (this.authenticationService.isTeacher()) {\n\n // 4) Get your own camera stream with the desired resolution and publish it, only if the user is supposed to do so\n this.publisher = this.OV.initPublisher('publisher', this.cameraOptions);\n\n this.publisher.on('accessAllowed', () => {\n console.warn('CAMERA ACCESS ALLOWED!');\n });\n this.publisher.on('accessDenied', () => {\n console.warn('CAMERA ACCESS DENIED!');\n });\n this.publisher.on('streamCreated', (event: StreamEvent) => {\n console.warn('STREAM CREATED BY PUBLISHER!');\n console.warn(event.stream);\n })\n\n // 5) Publish your stream\n this.session.publish(this.publisher);\n }\n }).catch(error => {\n console.log('There was an error connecting to the session:', error.code, error.message);\n });\n }\n\n\n ngOnInit() {\n\n // Specific aspects of this concrete application\n this.previousConnectionStuff();\n\n\n if (this.authenticationService.isTeacher()) {\n\n // If the user is the teacher: creates the session and gets a token (with PUBLISHER role)\n this.videoSessionService.createSession(this.lesson.id).subscribe(\n () => {\n this.videoSessionService.generateToken(this.lesson.id).subscribe(\n response => {\n this.token = response[0];\n console.warn('Token: ' + this.token);\n this.OPEN_VIDU_CONNECTION();\n },\n error => {\n console.log(error);\n });\n },\n error => {\n console.log(error);\n }\n );\n } else {\n\n // If the user is a student: gets a token (with SUBSCRIBER role)\n this.videoSessionService.generateToken(this.lesson.id).subscribe(\n response => { // {0: token}\n this.token = response[0];\n console.warn('Token: ' + this.token);\n this.OPEN_VIDU_CONNECTION();\n },\n error => {\n console.log(error);\n });\n }\n\n\n // Specific aspects of this concrete application\n this.afterConnectionStuff();\n }\n\n ngAfterViewInit() {\n this.toggleScrollPage('hidden');\n }\n\n ngOnDestroy() {\n this.videoSessionService.removeUser(this.lesson.id).subscribe(\n response => {\n console.warn('You have succesfully left the lesson');\n },\n error => {\n console.log(error);\n });\n this.toggleScrollPage('auto');\n this.exitFullScreen();\n if (this.OV) { this.session.disconnect(); }\n }\n\n toggleScrollPage(scroll: string) {\n const content = document.getElementsByClassName('mat-sidenav-content')[0];\n content.style.overflow = scroll;\n }\n\n toggleLocalVideo() {\n this.localVideoActivated = !this.localVideoActivated;\n this.publisher.publishVideo(this.localVideoActivated);\n this.videoIcon = this.localVideoActivated ? 'videocam' : 'videocam_off';\n }\n\n toggleLocalAudio() {\n this.localAudioActivated = !this.localAudioActivated;\n this.publisher.publishAudio(this.localAudioActivated);\n this.audioIcon = this.localAudioActivated ? 'mic' : 'mic_off';\n }\n\n toggleFullScreen() {\n const document: any = window.document;\n const fs = document.getElementsByTagName('html')[0];\n if (!document.fullscreenElement &&\n !document.mozFullScreenElement &&\n !document.webkitFullscreenElement &&\n !document.msFullscreenElement) {\n console.log('enter FULLSCREEN!');\n this.fullscreenIcon = 'fullscreen_exit';\n if (fs.requestFullscreen) {\n fs.requestFullscreen();\n } else if (fs.msRequestFullscreen) {\n fs.msRequestFullscreen();\n } else if (fs.mozRequestFullScreen) {\n fs.mozRequestFullScreen();\n } else if (fs.webkitRequestFullscreen) {\n fs.webkitRequestFullscreen();\n }\n } else {\n console.log('exit FULLSCREEN!');\n this.fullscreenIcon = 'fullscreen';\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n }\n\n exitFullScreen() {\n const document: any = window.document;\n const fs = document.getElementsByTagName('html')[0];\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n\n previousConnectionStuff() {\n this.lesson = this.videoSessionService.lesson;\n this.cameraOptions = this.videoSessionService.cameraOptions;\n }\n\n afterConnectionStuff() {\n this.localVideoActivated = this.cameraOptions.videoSource !== false;\n this.localAudioActivated = this.cameraOptions.audioSource !== false;\n this.videoIcon = this.localVideoActivated ? 'videocam' : 'videocam_off';\n this.audioIcon = this.localAudioActivated ? 'mic' : 'mic_off';\n this.fullscreenIcon = 'fullscreen';\n }\n\n}\n","import { NgModule } from '@angular/core';\n\nimport {\n MatButtonModule,\n MatSidenavModule,\n MatToolbarModule,\n MatIconModule,\n MatInputModule,\n MatCardModule,\n MatFormFieldModule,\n MatDialogModule,\n MatRadioModule,\n MatCheckboxModule,\n MatSnackBarModule\n} from '@angular/material';\n\n@NgModule({\n imports: [\n MatButtonModule,\n MatSidenavModule,\n MatToolbarModule,\n MatIconModule,\n MatInputModule,\n MatCardModule,\n MatFormFieldModule,\n MatDialogModule,\n MatRadioModule,\n MatCheckboxModule,\n MatSnackBarModule\n ],\n exports: [\n MatButtonModule,\n MatSidenavModule,\n MatToolbarModule,\n MatIconModule,\n MatInputModule,\n MatCardModule,\n MatFormFieldModule,\n MatDialogModule,\n MatRadioModule,\n MatCheckboxModule,\n MatSnackBarModule\n ]\n})\nexport class MaterialModule { }\n","import { User } from './user';\n\nexport class Lesson {\n\n public id?: number;\n public title: string;\n public teacher: User;\n public attenders: User[];\n\n constructor(title: string) {\n this.title = title;\n this.attenders = [];\n }\n\n}\n","import { Lesson } from './lesson';\n\nexport class User {\n\n public id?: number;\n public name: string;\n public nickName: string;\n public roles: string[];\n public lessons: Lesson[];\n\n constructor(u: User) {\n this.id = u.id;\n this.name = u.name;\n this.nickName = u.nickName;\n this.roles = u.roles;\n this.lessons = [];\n }\n\n}\n","import { trigger, animate, style, group, animateChild, query, stagger, transition } from '@angular/animations';\n\nexport const routerTransition = trigger('routerTransition', [\n transition('* <=> *', [\n query(':enter, :leave', style({ position: 'fixed', width: '100%' })\n , { optional: true }),\n group([\n query(\n ':enter',\n [\n style({ opacity: '0' }),\n animate('0.4s ease-in-out', style({ opacity: '1' }))\n ],\n { optional: true }),\n query(\n ':leave',\n [\n style({ opacity: '1' }),\n animate('0.2s cubic-bezier(0.000, 0.900, 0.495, 0.990)', style({ opacity: '0' }))\n ],\n { optional: true }),\n ])\n ])\n]);\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { Injectable } from '@angular/core';\nimport { Http, RequestOptions, Headers, Response } from '@angular/http';\nimport { Router } from '@angular/router';\n\nimport { environment } from '../../environments/environment';\n\n\n\nimport { User } from '../models/user';\n\n@Injectable()\nexport class AuthenticationService {\n\n private urlLogIn = 'api-logIn';\n private urlLogOut = 'api-logOut';\n\n public token: string;\n private user: User;\n private role: string;\n\n constructor(private http: Http, private router: Router) {\n this.reqIsLogged();\n\n // set token if saved in local storage\n // let auth_token = JSON.parse(localStorage.getItem('auth_token'));\n // this.token = auth_token && auth_token.token;\n }\n\n logIn(user: string, pass: string) {\n\n console.log('Login service started...');\n\n const userPass = utf8_to_b64(user + ':' + pass);\n const headers = new Headers({\n 'Authorization': 'Basic ' + userPass,\n 'X-Requested-With': 'XMLHttpRequest'\n });\n const options = new RequestOptions({ headers });\n\n return this.http.get(this.urlLogIn, options)\n .pipe(\n map(response => {\n this.processLogInResponse(response);\n return this.user;\n }),\n catchError(error => Observable.throw(error))\n );\n }\n\n logOut() {\n\n console.log('Logging out...');\n\n return this.http.get(this.urlLogOut)\n .pipe(\n map(response => {\n console.log('Logout succesful!');\n\n this.user = null;\n this.role = null;\n\n // clear token remove user from local storage to log user out and navigates to welcome page\n this.token = null;\n localStorage.removeItem('login');\n localStorage.removeItem('rol');\n this.router.navigate(['']);\n\n return response;\n }),\n catchError(error => Observable.throw(error))\n );\n }\n\n directLogOut() {\n this.logOut().subscribe(\n response => { },\n error => console.log('Error when trying to log out: ' + error)\n );\n }\n\n private processLogInResponse(response) {\n // Correctly logged in\n console.log('Login succesful processing...');\n\n this.user = (response.json() as User);\n\n localStorage.setItem('login', 'OPENVIDUAPP');\n if (this.user.roles.indexOf('ROLE_TEACHER') !== -1) {\n this.role = 'ROLE_TEACHER';\n localStorage.setItem('rol', 'ROLE_TEACHER');\n }\n if (this.user.roles.indexOf('ROLE_STUDENT') !== -1) {\n this.role = 'ROLE_STUDENT';\n localStorage.setItem('rol', 'ROLE_STUDENT');\n }\n }\n\n reqIsLogged() {\n\n console.log('ReqIsLogged called');\n\n const headers = new Headers({\n 'X-Requested-With': 'XMLHttpRequest'\n });\n const options = new RequestOptions({ headers });\n\n this.http.get(this.urlLogIn, options)\n .pipe(\n map(response => this.processLogInResponse(response)),\n catchError(error => {\n if (error.status !== 401) {\n console.error('Error when asking if logged: ' + JSON.stringify(error));\n this.logOut();\n return Observable.throw(error);\n }\n })\n );\n }\n\n checkCredentials() {\n if (!this.isLoggedIn()) {\n this.logOut();\n }\n }\n\n isLoggedIn() {\n return ((this.user != null) && (this.user !== undefined));\n }\n\n getCurrentUser() {\n return this.user;\n }\n\n isTeacher() {\n return ((this.user.roles.indexOf('ROLE_TEACHER')) !== -1) && (localStorage.getItem('rol') === 'ROLE_TEACHER');\n }\n\n isStudent() {\n return ((this.user.roles.indexOf('ROLE_STUDENT')) !== -1) && (localStorage.getItem('rol') === 'ROLE_STUDENT');\n }\n\n updateUserLessons(lessons) {\n this.getCurrentUser().lessons = lessons;\n }\n}\n\nfunction utf8_to_b64(str) {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\n return String.fromCharCode('0x' + p1);\n }));\n}\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { environment } from '../../environments/environment';\n\nimport { Lesson } from '../models/lesson';\nimport { User } from '../models/user';\nimport { AuthenticationService } from './authentication.service';\n\nimport 'rxjs/Rx';\n\n@Injectable()\nexport class LessonService {\n\n private url = 'api-lessons';\n\n constructor(private http: Http, private authenticationService: AuthenticationService) { }\n\n getLessons(user: User) {\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.get(this.url + '/user/' + user.id, options) // Must send userId\n .pipe(\n map((response: Response) => response.json() as Lesson[]),\n catchError(error => this.handleError(error))\n );\n }\n\n getLesson(lessonId: number) {\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.get(this.url + '/lesson/' + lessonId, options) // Must send userId\n .pipe(\n map((response: Response) => response.json() as Lesson),\n catchError(error => this.handleError(error))\n );\n }\n\n // POST new lesson. On success returns the created lesson\n newLesson(lesson: Lesson) {\n const body = JSON.stringify(lesson);\n const headers = new Headers({\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n });\n const options = new RequestOptions({ headers });\n return this.http.post(this.url + '/new', body, options)\n .pipe(\n map(response => response.json() as Lesson),\n catchError(error => this.handleError(error))\n );\n }\n\n // PUT existing lesson. On success returns the updated lesson\n editLesson(lesson: Lesson) {\n const body = JSON.stringify(lesson);\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.put(this.url + '/edit', body, options)\n .pipe(\n map(response => response.json() as Lesson),\n catchError(error => this.handleError(error))\n );\n }\n\n // DELETE existing lesson. On success returns the deleted lesson (simplified version)\n deleteLesson(lessonId: number) {\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.delete(this.url + '/delete/' + lessonId, options)\n .pipe(\n map(response => response.json() as Lesson),\n catchError(error => this.handleError(error))\n );\n }\n\n // PUT existing lesson, modifying its attenders (adding them). On success returns the updated lesson.attenders array\n addLessonAttenders(lessonId: number, userEmails: string[]) {\n const body = JSON.stringify(userEmails);\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.put(this.url + '/edit/add-attenders/lesson/' + lessonId, body, options)\n .pipe(\n map(response => response.json()),\n catchError(error => this.handleError(error))\n );\n }\n\n // PUT existing lesson, modifying its attenders (deleting them). On success returns the updated lesson.attenders array\n deleteLessonAttenders(lesson: Lesson) {\n const body = JSON.stringify(lesson);\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.put(this.url + '/edit/delete-attenders', body, options)\n .pipe(\n map(response => response.json() as User[]),\n catchError(error => this.handleError(error))\n );\n }\n\n obtainLocalLesson(id: number) {\n return this.authenticationService.getCurrentUser().lessons.find(lesson => lesson.id === id);\n }\n\n private handleError(error: any) {\n console.error(error);\n return observableThrowError('Server error (' + error.status + '): ' + error.text())\n }\n}\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\n\nimport { User } from '../models/user';\n\n@Injectable()\nexport class UserService {\n\n private url = 'api-users';\n\n constructor(private http: Http) { }\n\n newUser(name: string, pass: string, nickName: string, role: string) {\n const body = JSON.stringify([name, pass, nickName, role]);\n const headers = new Headers({\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n });\n const options = new RequestOptions({ headers });\n return this.http.post(this.url + '/new', body, options)\n .pipe(\n map(response => response.json() as User),\n catchError(error => this.handleError(error))\n );\n }\n\n private handleError(error: any) {\n return observableThrowError(error.status);\n }\n}\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions } from '@angular/http';\n\nimport { Lesson } from '../models/lesson';\n\nimport { AuthenticationService } from './authentication.service';\nimport { PublisherProperties } from 'openvidu-browser';\n\n@Injectable()\nexport class VideoSessionService {\n\n lesson: Lesson;\n cameraOptions: PublisherProperties;\n\n private url = 'api-sessions';\n\n constructor(private http: Http, private authenticationService: AuthenticationService) { }\n\n // Returns nothing (HttpResponse)\n createSession(lessonId: number) {\n const body = JSON.stringify(lessonId);\n return this.http.post(this.url + '/create-session', body)\n .pipe(\n map(response => { }),\n catchError(error => this.handleError(error))\n );\n }\n\n // Returns {0: sessionId, 1: token}\n generateToken(lessonId: number) {\n const body = JSON.stringify(lessonId);\n const headers = new Headers({ 'Content-Type': 'application/json' });\n const options = new RequestOptions({ headers });\n return this.http.post(this.url + '/generate-token', body, options)\n .pipe(\n map(response => response.json()),\n catchError(error => this.handleError(error))\n );\n }\n\n removeUser(lessonId: number) {\n const body = JSON.stringify(lessonId);\n const headers = new Headers({ 'Content-Type': 'application/json' });\n const options = new RequestOptions({ headers });\n return this.http.post(this.url + '/remove-user', body, options)\n .pipe(\n map(response => response),\n catchError(error => this.handleError(error))\n );\n }\n\n private handleError(error: any) {\n console.error(error);\n return observableThrowError('Server error (' + error.status + '): ' + error.text())\n }\n\n}\n","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\n\nexport const environment = {\n production: false,\n URL_BACK: 'https://localhost:5000'\n};\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app.component.css","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/app.routing.ts","webpack:///./src/app/auth.guard.ts","webpack:///./src/app/components/dashboard/dahsboard.component.ts","webpack:///./src/app/components/dashboard/dashboard.component.css","webpack:///./src/app/components/dashboard/dashboard.component.html","webpack:///./src/app/components/dashboard/join-session-dialog.component.ts","webpack:///./src/app/components/error-message/error-message.component.css","webpack:///./src/app/components/error-message/error-message.component.html","webpack:///./src/app/components/error-message/error-message.component.ts","webpack:///./src/app/components/lesson-details/lesson-details.component.css","webpack:///./src/app/components/lesson-details/lesson-details.component.html","webpack:///./src/app/components/lesson-details/lesson-details.component.ts","webpack:///./src/app/components/presentation/presentation.component.css","webpack:///./src/app/components/presentation/presentation.component.html","webpack:///./src/app/components/presentation/presentation.component.ts","webpack:///./src/app/components/profile/profile.component.css","webpack:///./src/app/components/profile/profile.component.html","webpack:///./src/app/components/profile/profile.component.ts","webpack:///./src/app/components/video-session/video-session.component.css","webpack:///./src/app/components/video-session/video-session.component.html","webpack:///./src/app/components/video-session/video-session.component.ts","webpack:///./src/app/material.module.ts","webpack:///./src/app/models/lesson.ts","webpack:///./src/app/models/user.ts","webpack:///./src/app/router.animation.ts","webpack:///./src/app/services/authentication.service.ts","webpack:///./src/app/services/lesson.service.ts","webpack:///./src/app/services/user.service.ts","webpack:///./src/app/services/video-session.service.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,4E;;;;;;;;;;;ACZA,+BAA+B,iBAAiB,GAAG,2BAA2B,iBAAiB,GAAG,wBAAwB,cAAc,GAAG,eAAe,qBAAqB,GAAG,qBAAqB,gBAAgB,GAAG,kCAAkC,mBAAmB,GAAG,yBAAyB,sBAAsB,GAAG,eAAe,oBAAoB,GAAG,G;;;;;;;;;;;ACA1W,sIAAsI,6HAA6H,+GAA+G,uxF;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA9T;AACX;AAEiC;AACpB;AAQtD;IAEE,sBAAoB,MAAc,EAAU,qBAA4C;QAApE,WAAM,GAAN,MAAM,CAAQ;QAAU,0BAAqB,GAArB,qBAAqB,CAAuB;IAAI,CAAC;IAE7F,wCAAiB,GAAjB;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;IAC1E,CAAC;IANU,YAAY;QANxB,+DAAS,CAAC;YACT,QAAQ,EAAE,UAAU;;;YAGpB,UAAU,EAAE,CAAC,kEAAgB,CAAC;SAC/B,CAAC;yCAG4B,sDAAM,EAAiC,sFAAqB;OAF7E,YAAY,CAQxB;IAAD,mBAAC;CAAA;AARwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZgB;AACI;AACF;AACe;AACqB;AACvB;AAEtC;AAEiC;AACX;AACO;AACN;AACgD;AACT;AACc;AACpB;AACiB;AACA;AACO;AAExB;AACpB;AACI;AACa;AAkCvE;IAAA;IAAyB,CAAC;IAAb,SAAS;QAhCrB,8DAAQ,CAAC;YACR,YAAY,EAAE;gBACZ,2DAAY;gBACZ,sGAAqB;gBACrB,6FAAkB;gBAClB,2GAAsB;gBACtB,uFAAgB;gBAChB,wGAAqB;gBACrB,wGAAqB;gBACrB,+GAA0B;aAC3B;YACD,OAAO,EAAE;gBACP,uEAAa;gBACb,4FAAuB;gBACvB,0DAAW;gBACX,wDAAU;gBACV,+DAAc;gBACd,qEAAgB;gBAChB,oDAAO;aACR;YACD,SAAS,EAAE;gBACT,uFAAqB;gBACrB,mEAAW;gBACX,uEAAa;gBACb,oFAAmB;gBACnB,sDAAS;aACV;YACD,eAAe,EAAE;gBACf,+GAA0B;aAC3B;YACD,SAAS,EAAE,CAAC,2DAAY,CAAC;SAC1B,CAAC;OACW,SAAS,CAAI;IAAD,gBAAC;CAAA;AAAJ;;;;;;;;;;;;;;;;;;;;;;ACzDiC;AAEkC;AACT;AACc;AACpB;AACiB;AAElD;AAEzC,IAAM,SAAS,GAAW;IACxB;QACE,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,qGAAqB;QAChC,SAAS,EAAE,MAAM;QACjB,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;KAChC;IACD;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,4FAAkB;QAC7B,WAAW,EAAE,CAAC,qDAAS,CAAC;QACxB,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;KAC3B;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,SAAS,EAAE,0GAAsB;QACjC,WAAW,EAAE,CAAC,qDAAS,CAAC;QACxB,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;KAClC;IACD;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,sFAAgB;QAC3B,WAAW,EAAE,CAAC,qDAAS,CAAC;QACxB,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;KAC3B;IACD;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,uGAAqB;QAChC,WAAW,EAAE,CAAC,qDAAS,CAAC;QACxB,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;KAC3B;CACF,CAAC;AAEK,IAAM,OAAO,GAAwB,4DAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5ClD;AACW;AAEoB;AAG1E;IAEI,mBAAoB,MAAc,EAAU,qBAA4C;QAApE,WAAM,GAAN,MAAM,CAAQ;QAAU,0BAAqB,GAArB,qBAAqB,CAAuB;IAAI,CAAC;IAE7F,+BAAW,GAAX;QACI,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC1G,2BAA2B;YAC3B,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;IAbQ,SAAS;QADrB,gEAAU,EAAE;yCAGmB,sDAAM,EAAiC,sFAAqB;OAF/E,SAAS,CAcrB;IAAD,gBAAC;CAAA;AAdqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACN0C;AACvB;AACgC;AAE5B;AAEiB;AACa;AACG;AAED;AAQ7E;IAQI,4BACY,aAA4B,EAC5B,mBAAwC,EACxC,qBAA4C,EAC5C,MAAc,EACf,QAAqB,EACrB,MAAiB;QALhB,kBAAa,GAAb,aAAa,CAAe;QAC5B,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,WAAM,GAAN,MAAM,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAa;QACrB,WAAM,GAAN,MAAM,CAAW;IACxB,CAAC;IAEL,qCAAQ,GAAR;QACI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED,mCAAM,GAAN;QACI,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;IAED,uCAAU,GAAV;QAAA,iBASC;QARG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,CAChF,iBAAO;YACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,KAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC,EACD,eAAK,IAAI,cAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAlB,CAAkB,CAAC,CAAC;IACrC,CAAC;IAED,uCAAU,GAAV,UAAW,MAAc;QAAzB,iBAcC;QAbG,IAAI,SAAmD,CAAC;QACxD,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yFAA0B,CAAC,CAAC;QACzD,SAAS,CAAC,iBAAiB,CAAC,WAAW,GAAG,SAAS,CAAC;QAEpD,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,UAAC,aAAkC;YACjE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC3B,KAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,MAAM,CAAC;gBACzC,KAAI,CAAC,mBAAmB,CAAC,aAAa,GAAG,aAAa,CAAC;gBACvD,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,8CAAiB,GAAjB,UAAkB,MAAc;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,sCAAS,GAAT;QAAA,iBAkBC;QAjBG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,qDAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAChE,gBAAM;YACF,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,KAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;YAC3D,KAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC9B,CAAC,EACD,eAAK;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,KAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6BAA6B,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC,CACJ,CAAC;IACN,CAAC;IAED,0CAAa,GAAb,UAAc,QAAgB;QAC1B,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,SAAS,CACtD;YACI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACnC,CAAC,EACD,eAAK;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CACJ;IACL,CAAC;IAED,0CAAa,GAAb,UAAc,QAAgB;QAC1B,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,SAAS,CACtD,kBAAQ;YACJ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC,EACD,eAAK;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CACJ;IACL,CAAC;IAjGQ,kBAAkB;QAL9B,+DAAS,CAAC;YACP,QAAQ,EAAE,eAAe;;;SAG5B,CAAC;yCAU6B,sEAAa;YACP,mFAAmB;YACjB,sFAAqB;YACpC,sDAAM;YACL,6DAAW;YACb,2DAAS;OAdnB,kBAAkB,CAmG9B;IAAD,yBAAC;CAAA;AAnG8B;;;;;;;;;;;;AClB/B,4BAA4B,qBAAqB,GAAG,uBAAuB,uBAAuB,GAAG,kBAAkB,oBAAoB,GAAG,G;;;;;;;;;;;ACA9I,iQAAiQ,gBAAgB,idAAid,8dAA8d,ySAAyS,cAAc,2GAA2G,yBAAyB,m+B;;;;;;;;;;;;;;;;;;;;;;;;ACAjlD;AA8D1C;IAOI;QAJQ,YAAO,GAAG,QAAQ,CAAC;QACnB,kBAAa,GAAG,IAAI,CAAC;QACrB,kBAAa,GAAG,IAAI,CAAC;IAEb,CAAC;IAEjB,gDAAW,GAAX;QACI,IAAM,aAAa,GAAwB;YACvC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACtD,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACtD,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;SACnC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAED,kDAAa,GAAb;QACI,IAAI,UAAU,CAAC;QACf,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACnB,KAAK,KAAK;gBACN,UAAU,GAAG,SAAS,CAAC;gBACvB,KAAK,CAAC;YACV,KAAK,QAAQ;gBACT,UAAU,GAAG,SAAS,CAAC;gBACvB,KAAK,CAAC;YACV,KAAK,MAAM;gBACP,UAAU,GAAG,UAAU,CAAC;gBACxB,KAAK,CAAC;YACV,KAAK,UAAU;gBACX,UAAU,GAAG,WAAW,CAAC;gBACzB,KAAK,CAAC;YACV;gBACI,UAAU,GAAG,SAAS,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,UAAU,CAAC;IACtB,CAAC;IArCQ,0BAA0B;QAzDtC,+DAAS,CAAC;YACP,QAAQ,EAAE,yBAAyB;YACnC,QAAQ,EAAE,qjDA4BT;YACD,MAAM,EAAE,CAAC,4gBAwBR,CAAC;SACL,CAAC;;OACW,0BAA0B,CAsCtC;IAAD,iCAAC;CAAA;AAtCsC;;;;;;;;;;;;AC9DvC,yBAAyB,6CAA6C,mBAAmB,GAAG,cAAc,6CAA6C,mBAAmB,GAAG,cAAc,6CAA6C,mBAAmB,GAAG,cAAc,oBAAoB,iBAAiB,GAAG,cAAc,qBAAqB,qBAAqB,wBAAwB,qBAAqB,GAAG,G;;;;;;;;;;;ACA5Z,sJAAsJ,iBAAiB,8G;;;;;;;;;;;;;;;;;;;;;;;;ACAhG;AAOvE;IAgBE;QAFA,kBAAa,GAAG,IAAI,0DAAY,EAAW,CAAC;IAE5B,CAAC;IAEV,0CAAU,GAAjB;QACE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAjBD;QADC,2DAAK,EAAE;;6DACW;IAEnB;QADC,2DAAK,EAAE;;+DACa;IAErB;QADC,2DAAK,EAAE;;8DACY;IAEpB;QADC,2DAAK,EAAE;;2DACU;IAElB;QADC,2DAAK,EAAE;;2DACS;IAGjB;QADC,4DAAM,EAAE;;gEACmC;IAdjC,qBAAqB;QALjC,+DAAS,CAAC;YACT,QAAQ,EAAE,mBAAmB;;;SAG9B,CAAC;;OACW,qBAAqB,CAsBjC;IAAD,4BAAC;CAAA;AAtBiC;;;;;;;;;;;;ACPlC,mCAAmC,oBAAoB,GAAG,uBAAuB,gCAAgC,GAAG,mBAAmB,gBAAgB,qBAAqB,qBAAqB,GAAG,yBAAyB,uBAAuB,GAAG,uFAAuF,UAAU,wCAAwC,gCAAgC,KAAK,QAAQ,sCAAsC,8BAA8B,KAAK,GAAG,yBAAyB,UAAU,wCAAwC,gCAAgC,KAAK,QAAQ,sCAAsC,8BAA8B,KAAK,GAAG,eAAe,mDAAmD,2CAA2C,+BAA+B,GAAG,qBAAqB,8BAA8B,GAAG,iC;;;;;;;;;;;ACAl4B,yIAAyI,gBAAgB,4RAA4R,cAAc,iGAAiG,oOAAoO,icAAic,gSAAgS,4+CAA4+C,iDAAiD,yDAAyD,6CAA6C,uIAAuI,uaAAua,mBAAmB,2DAA2D,eAAe,0X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACE9rH;AACQ;AACtB;AACK;AAEH;AACJ;AAEqB;AACgB;AAO9E;IAmBI,gCACY,aAA4B,EAC5B,qBAA4C,EAC5C,MAAc,EACd,KAAqB,EACrB,QAAkB,EACnB,QAAqB;QALpB,kBAAa,GAAb,aAAa,CAAe;QAC5B,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAgB;QACrB,aAAQ,GAAR,QAAQ,CAAU;QACnB,aAAQ,GAAR,QAAQ,CAAa;QArBhC,iBAAY,GAAG,KAAK,CAAC;QAErB,qBAAgB,GAAG,KAAK,CAAC;QAEzB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,mBAAc,GAAG,EAAE,CAAC;QAEpB,8BAA8B;QAC9B,wBAAmB,GAAG,KAAK,CAAC;QAC5B,sBAAiB,GAAG,KAAK,CAAC;IAatB,CAAC;IAEL,yCAAQ,GAAR;QAAA,iBAIC;QAHG,IAAI,CAAC,KAAK,CAAC,MAAM;aACZ,GAAG,CAAC,UAAC,MAAc,IAAK,YAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAnD,CAAmD,CAAC;aAC5E,SAAS,CAAC,gBAAM,IAAI,YAAI,CAAC,MAAM,GAAG,MAAM,EAApB,CAAoB,CAAC,CAAC;IACnD,CAAC;IAED,2CAAU,GAAV;QAAA,iBAuBC;QAtBG,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAM,CAAC,GAAG,IAAI,qDAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CACtC,gBAAM;gBACF,0BAA0B;gBAC1B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpB,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC,EACD,eAAK;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6BAA6B,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;QACX,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,sCAAsC;QACrE,CAAC;IACL,CAAC;IAED,6CAAY,GAAZ;QAAA,iBAgBC;QAfG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CACrD,gBAAM;YACF,0BAA0B;YAC1B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACnC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC,EACD,eAAK;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6BAA6B,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACX,CAAC;IAED,mDAAkB,GAAlB;QAAA,iBAgBC;QAfG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CACjF,kBAAQ;YACJ,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,KAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAM,YAAY,GAAG,QAAQ,CAAC,cAAwB,CAAC;YACvD,KAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACnE,KAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC,EACD,eAAK;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,KAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6BAA6B,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACX,CAAC;IAED,qDAAoB,GAApB,UAAqB,CAAS,EAAE,QAAc;QAA9C,iBAuBC;QAtBG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC9B,IAAM,CAAC,GAAG,IAAI,qDAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9C,8EAA8E;gBAC9E,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,iDAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CACjD,mBAAS;YACL,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAC/B,KAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAClC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC,EACD,eAAK;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAC/B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6BAA6B,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACX,CAAC;IAED,oGAAoG;IACpG,uGAAuG;IACvG,uDAAsB,GAAtB,UAAuB,QAAQ;QAC3B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAE5B,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACrC,GAAG,CAAC,CAAe,UAAuB,EAAvB,aAAQ,CAAC,cAAc,EAAvB,cAAuB,EAAvB,IAAuB;gBAArC,IAAM,IAAI;gBACX,IAAI,CAAC,iBAAiB,IAAI,gCAAgC,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;aACtF;YACD,SAAS,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,eAAe,IAAI,mEAAmE,CAAC;YAC5F,GAAG,CAAC,CAAe,UAA8B,EAA9B,aAAQ,CAAC,qBAAqB,EAA9B,cAA8B,EAA9B,IAA8B;gBAA5C,IAAM,IAAI;gBACX,IAAI,CAAC,eAAe,IAAI,gCAAgC,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;aACpF;YACD,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,eAAe,IAAI,qDAAqD,CAAC;YAC9E,GAAG,CAAC,CAAgB,UAAiC,EAAjC,aAAQ,CAAC,wBAAwB,EAAjC,cAAiC,EAAjC,IAAiC;gBAAhD,IAAM,KAAK;gBACZ,IAAI,CAAC,eAAe,IAAI,gCAAgC,GAAG,KAAK,GAAG,SAAS,CAAC;aAChF;YACD,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;YACzB,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,eAAe,IAAI,yCAAyC,CAAC;gBAClE,GAAG,CAAC,CAAgB,UAAsB,EAAtB,aAAQ,CAAC,aAAa,EAAtB,cAAsB,EAAtB,IAAsB;oBAArC,IAAM,KAAK;oBACZ,IAAI,CAAC,eAAe,IAAI,gCAAgC,GAAG,KAAK,GAAG,SAAS,CAAC;iBAChF;gBACD,OAAO,GAAG,IAAI,CAAC;YACnB,CAAC;QACL,CAAC;QACD,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACV,IAAI,CAAC,aAAa,GAAG,+BAA+B,CAAC;YACrD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;YACxC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,eAAe,GAAG,0CAA0C,CAAC;YAClE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACpC,CAAC;IACL,CAAC;IAxKQ,sBAAsB;QALlC,+DAAS,CAAC;YACP,QAAQ,EAAE,oBAAoB;;;SAGjC,CAAC;yCAqB6B,sEAAa;YACL,sFAAqB;YACpC,sDAAM;YACP,8DAAc;YACX,wDAAQ;YACT,6DAAW;OAzBvB,sBAAsB,CA0KlC;IAAD,6BAAC;CAAA;AA1KkC;;;;;;;;;;;;AClBnC,sBAAsB,uBAAuB,mBAAmB,GAAG,oBAAoB,gBAAgB,GAAG,sBAAsB,uBAAuB,wBAAwB,mBAAmB,GAAG,oBAAoB,uBAAuB,sBAAsB,GAAG,kBAAkB,iCAAiC,GAAG,uBAAuB,uBAAuB,wBAAwB,GAAG,iBAAiB,mBAAmB,mBAAmB,qBAAqB,wBAAwB,GAAG,WAAW,mBAAmB,qBAAqB,qBAAqB,GAAG,G;;;;;;;;;;;ACA1jB,wHAAwH,gBAAgB,mtGAAmtG,uKAAuK,oJ;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA97G;AAC3B;AACqC;AACpB;AAQ1D;IAiBE,+BACU,qBAA4C,EAC5C,WAAwB,EACxB,MAAc;QAFd,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAQ;QAdhB,mBAAc,GAAG,SAAS,CAAC;QAE3B,cAAS,GAAG,IAAI,CAAC;IAYG,CAAC;IAE7B,wCAAQ,GAAR,cAAa,CAAC;IAEd,kDAAkD;IAClD,kDAAkB,GAAlB;QACE,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,4CAAY,GAAZ,UAAa,MAAe;QAC1B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,wCAAQ,GAAR;QACE,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,GAAG,gBAAgB,GAAG,IAAI,CAAC,QAAQ,GAAG,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QAChI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,6BAA6B;YAC7B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,8BAA8B;YAC9B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,qCAAK,GAAL,UAAM,IAAY,EAAE,IAAY;QAAhC,iBAuBC;QAtBC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,CACpD,gBAAM;YACJ,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAE9B,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,KAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC;YAE9F,mBAAmB;YACnB,KAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,CAAC,EACD,eAAK;YAEH,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,KAAK,CAAC,CAAC;YAE9C,KAAI,CAAC,UAAU,GAAG,eAAe,CAAC;YAClC,KAAI,CAAC,YAAY,GAAG,qCAAqC,CAAC;YAC1D,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAE1B,eAAe;YACf,KAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CACF,CAAC;IACJ,CAAC;IAED,sCAAM,GAAN;QAAA,iBAwCC;QAtCC,wBAAwB;QACxB,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,8BAA8B,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,CAAC;YAEJ,IAAI,eAAa,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,IAAI,mBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;YAEtC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAa,EAAE,mBAAiB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,CACtG,gBAAM;gBAEJ,oBAAoB;gBACpB,KAAI,CAAC,KAAK,CAAC,eAAa,EAAE,mBAAiB,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YACpC,CAAC,EACD,eAAK;gBAEH,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,KAAK,CAAC,CAAC;gBAChD,EAAE,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;oBAClB,KAAI,CAAC,UAAU,GAAG,eAAe,CAAC;oBAClC,KAAI,CAAC,YAAY,GAAG,8BAA8B,CAAC;oBACnD,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC;gBAC5B,CAAC;gBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;oBACzB,KAAI,CAAC,UAAU,GAAG,sBAAsB,CAAC;oBACzC,KAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;oBACzD,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC;gBAC5B,CAAC;gBAED,iBAAiB;gBACjB,KAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,2CAAW,GAAX;QACE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAzHU,qBAAqB;QANjC,+DAAS,CAAC;YACT,QAAQ,EAAE,kBAAkB;;;SAG7B,CAAC;yCAoBiC,sFAAqB;YAC/B,kEAAW;YAChB,sDAAM;OApBb,qBAAqB,CA0HjC;IAAD,4BAAC;CAAA;AA1HiC;;;;;;;;;;;;ACXlC,yBAAyB,qBAAqB,8BAA8B,8BAA8B,GAAG,QAAQ,qBAAqB,GAAG,G;;;;;;;;;;;ACA7I,wHAAwH,gBAAgB,gGAAgG,iDAAiD,sEAAsE,6CAA6C,2D;;;;;;;;;;;;;;;;;;;;;;;;;ACA1V;AAE4B;AAQ9E;IAII,0BAAoB,qBAA4C;QAA5C,0BAAqB,GAArB,qBAAqB,CAAuB;IAAI,CAAC;IAErE,mCAAQ,GAAR;QACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC;IAC5D,CAAC;IARQ,gBAAgB;QAL5B,+DAAS,CAAC;YACP,QAAQ,EAAE,aAAa;;;SAG1B,CAAC;yCAK6C,sFAAqB;OAJvD,gBAAgB,CAU5B;IAAD,uBAAC;CAAA;AAV4B;;;;;;;;;;;;ACV7B,sBAAsB,uBAAuB,cAAc,iBAAiB,GAAG,iBAAiB,uBAAuB,kBAAkB,gBAAgB,mCAAmC,gCAAgC,+CAA+C,gEAAgE,4CAA4C,2DAA2D,GAAG,cAAc,oBAAoB,gBAAgB,iBAAiB,iBAAiB,iCAAiC,GAAG,oBAAoB,mBAAmB,GAAG,eAAe,gBAAgB,GAAG,gBAAgB,iBAAiB,GAAG,G;;;;;;;;;;;ACA7pB,+PAA+P,gBAAgB,2GAA2G,WAAW,2GAA2G,WAAW,uBAAuB,eAAe,2E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACArd;AACjC;AACwE;AAExC;AACG;AAS9E;IAkBI,+BACY,QAAkB,EAClB,qBAA4C,EAC5C,mBAAwC;QAFxC,aAAQ,GAAR,QAAQ,CAAU;QAClB,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAI,CAAC;IAGzD,oDAAoB,GAApB;QAEI,gCAAgC;QAChC,qDAAqD;QAHzD,iBAiEC;QA3DG,0CAA0C;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,yDAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAGrC,gDAAgD;QAChD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,UAAC,KAAkB;YAChD,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3B,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE;gBAC/C,UAAU,EAAE,QAAQ;aACvB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAiB,EAAE,UAAC,KAAkB;YAClD,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,KAAsB;YACxD,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,KAAK,KAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;gBACzE,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YACjD,CAAC;YAAC,IAAI,CAAC,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE,UAAC,KAAsB;YAC1D,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAGH,4BAA4B;QAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC;aACzF,IAAI,CAAC;YACF,EAAE,CAAC,CAAC,KAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAEzC,kHAAkH;gBAClH,KAAI,CAAC,SAAS,GAAG,KAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,KAAI,CAAC,aAAa,CAAC,CAAC;gBAExE,KAAI,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,EAAE;oBAC/B,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;gBACH,KAAI,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE;oBAC9B,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;gBACH,KAAI,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,EAAE,UAAC,KAAkB;oBAClD,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;oBAC7C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC,CAAC;gBAEF,yBAAyB;gBACzB,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAI,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;QACL,CAAC,CAAC,CAAC,KAAK,CAAC,eAAK;YACV,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;IACX,CAAC;IAGD,wCAAQ,GAAR;QAAA,iBA0CC;QAxCG,gDAAgD;QAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAG/B,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAEzC,yFAAyF;YACzF,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAC5D;gBACI,KAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAC5D,kBAAQ;oBACJ,KAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACzB,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,CAAC;oBACrC,KAAI,CAAC,oBAAoB,EAAE,CAAC;gBAChC,CAAC,EACD,eAAK;oBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;YACX,CAAC,EACD,eAAK;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,CACJ,CAAC;QACN,CAAC;QAAC,IAAI,CAAC,CAAC;YAEJ,gEAAgE;YAChE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAC5D,kBAAQ;gBACJ,KAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,CAAC;gBACrC,KAAI,CAAC,oBAAoB,EAAE,CAAC;YAChC,CAAC,EACD,eAAK;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACX,CAAC;QAGD,gDAAgD;QAChD,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,+CAAe,GAAf;QACI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,2CAAW,GAAX;QACI,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CACzD,kBAAQ;YACJ,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACzD,CAAC,EACD,eAAK;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACP,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAAC,CAAC;IAC/C,CAAC;IAED,gDAAgB,GAAhB,UAAiB,MAAc;QAC3B,IAAM,OAAO,GAAgB,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;IACpC,CAAC;IAED,gDAAgB,GAAhB;QACI,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;IAC5E,CAAC;IAED,gDAAgB,GAAhB;QACI,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,CAAC;IAED,gDAAgB,GAAhB;QACI,IAAM,QAAQ,GAAQ,MAAM,CAAC,QAAQ,CAAC;QACtC,IAAM,EAAE,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB;YAC3B,CAAC,QAAQ,CAAC,oBAAoB;YAC9B,CAAC,QAAQ,CAAC,uBAAuB;YACjC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC;YACxC,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACvB,EAAE,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAChC,EAAE,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACjC,EAAE,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACpC,EAAE,CAAC,uBAAuB,EAAE,CAAC;YACjC,CAAC;QACL,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;YACnC,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1B,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACnC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAChC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACtC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YACnC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACvC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;YACpC,CAAC;QACL,CAAC;IACL,CAAC;IAED,8CAAc,GAAd;QACI,IAAM,QAAQ,GAAQ,MAAM,CAAC,QAAQ,CAAC;QACtC,IAAM,EAAE,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;YAC1B,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC9B,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACnC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAChC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACtC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACnC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACvC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QACpC,CAAC;IACL,CAAC;IAED,uDAAuB,GAAvB;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;IAChE,CAAC;IAED,oDAAoB,GAApB;QACI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,KAAK,KAAK,CAAC;QACpE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,KAAK,KAAK,CAAC;QACpE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;QACxE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;IACvC,CAAC;IApOQ,qBAAqB;QALjC,+DAAS,CAAC;YACP,QAAQ,EAAE,mBAAmB;;;SAGhC,CAAC;yCAoBwB,wDAAQ;YACK,sFAAqB;YACvB,mFAAmB;OArB3C,qBAAqB,CAsOjC;IAAD,4BAAC;CAAA;AAtOiC;;;;;;;;;;;;;;;;;;;;;;;ACdO;AAcd;AA8B3B;IAAA;IAA8B,CAAC;IAAlB,cAAc;QA5B1B,8DAAQ,CAAC;YACN,OAAO,EAAE;gBACL,iEAAe;gBACf,kEAAgB;gBAChB,kEAAgB;gBAChB,+DAAa;gBACb,gEAAc;gBACd,+DAAa;gBACb,oEAAkB;gBAClB,iEAAe;gBACf,gEAAc;gBACd,mEAAiB;gBACjB,mEAAiB;aACpB;YACD,OAAO,EAAE;gBACL,iEAAe;gBACf,kEAAgB;gBAChB,kEAAgB;gBAChB,+DAAa;gBACb,gEAAc;gBACd,+DAAa;gBACb,oEAAkB;gBAClB,iEAAe;gBACf,gEAAc;gBACd,mEAAiB;gBACjB,mEAAiB;aACpB;SACJ,CAAC;OACW,cAAc,CAAI;IAAD,qBAAC;CAAA;AAAJ;;;;;;;;;;;;;;AC1C3B;AAAA;IAOE,gBAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAEH,aAAC;AAAD,CAAC;;;;;;;;;;;;;;;ACZD;AAAA;IAQE,cAAY,CAAO;QACjB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAEH,WAAC;AAAD,CAAC;;;;;;;;;;;;;;;;;AClB8G;AAExG,IAAM,gBAAgB,GAAG,mEAAO,CAAC,kBAAkB,EAAE;IACxD,sEAAU,CAAC,SAAS,EAAE;QAClB,iEAAK,CAAC,gBAAgB,EAAE,iEAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAC7D,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACzB,iEAAK,CAAC;YACF,iEAAK,CACD,QAAQ,EACR;gBACI,iEAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBACvB,mEAAO,CAAC,kBAAkB,EAAE,iEAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;aACvD,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACvB,iEAAK,CACD,QAAQ,EACR;gBACI,iEAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBACvB,mEAAO,CAAC,+CAA+C,EAAE,iEAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;aACpF,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;SAC1B,CAAC;KACL,CAAC;CACL,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvBmE;AACrB;AAEN;AAC6B;AAC/B;AAOzC;IASI,+BAAoB,IAAU,EAAU,MAAc;QAAlC,SAAI,GAAJ,IAAI,CAAM;QAAU,WAAM,GAAN,MAAM,CAAQ;QAP9C,aAAQ,GAAG,WAAW,CAAC;QACvB,cAAS,GAAG,YAAY,CAAC;QAO7B,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,sCAAsC;QACtC,mEAAmE;QACnE,+CAA+C;IACnD,CAAC;IAED,qCAAK,GAAL,UAAM,IAAY,EAAE,IAAY;QAAhC,iBAmBC;QAjBG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAExC,IAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;QAChD,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC;YACxB,eAAe,EAAE,QAAQ,GAAG,QAAQ;YACpC,kBAAkB,EAAE,gBAAgB;SACvC,CAAC,CAAC;QACH,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;aACvC,IAAI,CACD,0DAAG,CAAC,kBAAQ;YACR,KAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,CAAC,KAAI,CAAC,IAAI,CAAC;QACrB,CAAC,CAAC,EACF,iEAAU,CAAC,eAAK,IAAI,sDAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,sCAAM,GAAN;QAAA,iBAsBC;QApBG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;aAC/B,IAAI,CACD,0DAAG,CAAC,kBAAQ;YACR,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAEjC,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAEjB,2FAA2F;YAC3F,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACjC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/B,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAE3B,MAAM,CAAC,QAAQ,CAAC;QACpB,CAAC,CAAC,EACF,iEAAU,CAAC,eAAK,IAAI,sDAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,4CAAY,GAAZ;QACI,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CACnB,kBAAQ,IAAM,CAAC,EACf,eAAK,IAAI,cAAO,CAAC,GAAG,CAAC,gCAAgC,GAAG,KAAK,CAAC,EAArD,CAAqD,CACjE,CAAC;IACN,CAAC;IAEO,oDAAoB,GAA5B,UAA6B,QAAQ;QACjC,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,GAAI,QAAQ,CAAC,IAAI,EAAW,CAAC;QAEtC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC7C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;YAC3B,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;YAC3B,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED,2CAAW,GAAX;QAAA,iBAoBC;QAlBG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAElC,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC;YACxB,kBAAkB,EAAE,gBAAgB;SACvC,CAAC,CAAC;QACH,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;aAChC,IAAI,CACD,0DAAG,CAAC,kBAAQ,IAAI,YAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAnC,CAAmC,CAAC,EACpD,iEAAU,CAAC,eAAK;YACZ,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvE,KAAI,CAAC,MAAM,EAAE,CAAC;gBACd,MAAM,CAAC,+CAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;QACL,CAAC,CAAC,CACL,CAAC;IACV,CAAC;IAED,gDAAgB,GAAhB;QACI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;IAED,0CAAU,GAAV;QACI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,8CAAc,GAAd;QACI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,yCAAS,GAAT;QACI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,CAAC;IAClH,CAAC;IAED,yCAAS,GAAT;QACI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,CAAC;IAClH,CAAC;IAED,iDAAiB,GAAjB,UAAkB,OAAO;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC;IAC5C,CAAC;IApIQ,qBAAqB;QADjC,gEAAU,EAAE;yCAUiB,kDAAI,EAAkB,sDAAM;OAT7C,qBAAqB,CAqIjC;IAAD,4BAAC;CAAA;AArIiC;AAuIlC,qBAAqB,GAAG;IACpB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,KAAK,EAAE,EAAE;QAC9E,MAAM,CAAC,MAAM,CAAC,YAAY,CAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvJqE;AACrB;AAEN;AAC6B;AAKP;AAEhD;AAGjB;IAII,uBAAoB,IAAU,EAAU,qBAA4C;QAAhE,SAAI,GAAJ,IAAI,CAAM;QAAU,0BAAqB,GAArB,qBAAqB,CAAuB;QAF5E,QAAG,GAAG,aAAa,CAAC;IAE4D,CAAC;IAEzF,kCAAU,GAAV,UAAW,IAAU;QAArB,iBAQC;QAPG,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;QACnI,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,mBAAmB;aAC3E,IAAI,CACD,0DAAG,CAAC,UAAC,QAAkB,IAAK,eAAQ,CAAC,IAAI,EAAc,EAA3B,CAA2B,CAAC,EACxD,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,iCAAS,GAAT,UAAU,QAAgB;QAA1B,iBAQC;QAPG,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;QACnI,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,mBAAmB;aAC9E,IAAI,CACD,0DAAG,CAAC,UAAC,QAAkB,IAAK,eAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC,EACtD,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,yDAAyD;IACzD,iCAAS,GAAT,UAAU,MAAc;QAAxB,iBAYC;QAXG,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC;YACxB,cAAc,EAAE,kBAAkB;YAClC,kBAAkB,EAAE,gBAAgB;SACvC,CAAC,CAAC;QACH,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;aAClD,IAAI,CACD,0DAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC,EAC1C,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,6DAA6D;IAC7D,kCAAU,GAAV,UAAW,MAAc;QAAzB,iBASC;QARG,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;QACnI,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;aAClD,IAAI,CACD,0DAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC,EAC1C,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,qFAAqF;IACrF,oCAAY,GAAZ,UAAa,QAAgB;QAA7B,iBAQC;QAPG,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;QACnI,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,GAAG,QAAQ,EAAE,OAAO,CAAC;aAC7D,IAAI,CACD,0DAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC,EAC1C,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,oHAAoH;IACpH,0CAAkB,GAAlB,UAAmB,QAAgB,EAAE,UAAoB;QAAzD,iBASC;QARG,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;QACnI,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,6BAA6B,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;aACnF,IAAI,CACD,0DAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,IAAI,EAAE,EAAf,CAAe,CAAC,EAChC,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,sHAAsH;IACtH,6CAAqB,GAArB,UAAsB,MAAc;QAApC,iBASC;QARG,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpC,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;QACnI,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,wBAAwB,EAAE,IAAI,EAAE,OAAO,CAAC;aACnE,IAAI,CACD,0DAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC,EAC1C,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,yCAAiB,GAAjB,UAAkB,EAAU;QACxB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,EAAE,KAAK,EAAE,EAAhB,CAAgB,CAAC,CAAC;IAChG,CAAC;IAEO,mCAAW,GAAnB,UAAoB,KAAU;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,CAAC,uDAAoB,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvF,CAAC;IA/FQ,aAAa;QADzB,gEAAU,EAAE;yCAKiB,kDAAI,EAAiC,6EAAqB;OAJ3E,aAAa,CAgGzB;IAAD,oBAAC;CAAA;AAhGyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACd4C;AACrB;AAEN;AAC6B;AAKxE;IAIE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAFtB,QAAG,GAAG,WAAW,CAAC;IAEQ,CAAC;IAEnC,6BAAO,GAAP,UAAQ,IAAY,EAAE,IAAY,EAAE,QAAgB,EAAE,IAAY;QAAlE,iBAYC;QAXC,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC;YAC1B,cAAc,EAAE,kBAAkB;YAClC,kBAAkB,EAAE,gBAAgB;SACrC,CAAC,CAAC;QACH,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;aACpD,IAAI,CACH,0DAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,IAAI,EAAU,EAAvB,CAAuB,CAAC,EACxC,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC7C,CAAC;IACN,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,MAAM,CAAC,uDAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAtBU,WAAW;QADvB,gEAAU,EAAE;yCAKe,kDAAI;OAJnB,WAAW,CAuBvB;IAAD,kBAAC;CAAA;AAvBuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACT8C;AACrB;AAEN;AACmB;AAIG;AAIjE;IAOI,6BAAoB,IAAU,EAAU,qBAA4C;QAAhE,SAAI,GAAJ,IAAI,CAAM;QAAU,0BAAqB,GAArB,qBAAqB,CAAuB;QAF5E,QAAG,GAAG,cAAc,CAAC;IAE2D,CAAC;IAEzF,iCAAiC;IACjC,2CAAa,GAAb,UAAc,QAAgB;QAA9B,iBAOC;QANG,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,iBAAiB,EAAE,IAAI,CAAC;aACpD,IAAI,CACD,0DAAG,CAAC,kBAAQ,IAAM,CAAC,CAAC,EACpB,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,mCAAmC;IACnC,2CAAa,GAAb,UAAc,QAAgB;QAA9B,iBASC;QARG,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACpE,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC;aAC7D,IAAI,CACD,0DAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,IAAI,EAAE,EAAf,CAAe,CAAC,EAChC,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAED,wCAAU,GAAV,UAAW,QAAgB;QAA3B,iBASC;QARG,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAM,OAAO,GAAG,IAAI,qDAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACpE,IAAM,OAAO,GAAG,IAAI,4DAAc,CAAC,EAAE,OAAO,WAAE,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC;aAC1D,IAAI,CACD,0DAAG,CAAC,kBAAQ,IAAI,eAAQ,EAAR,CAAQ,CAAC,EACzB,iEAAU,CAAC,eAAK,IAAI,YAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAC/C,CAAC;IACV,CAAC;IAEO,yCAAW,GAAnB,UAAoB,KAAU;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,CAAC,uDAAoB,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvF,CAAC;IA7CQ,mBAAmB;QAD/B,gEAAU,EAAE;yCAQiB,kDAAI,EAAiC,6EAAqB;OAP3E,mBAAmB,CA+C/B;IAAD,0BAAC;CAAA;AA/C+B;;;;;;;;;;;;;;;ACZzB,IAAM,WAAW,GAAG;IACzB,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;CACjC,CAAC;;;;;;;;;;;;;;;;;;ACJ6C;AAC4B;AAE9B;AACY;AAEzD,EAAE,CAAC,CAAC,qEAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3B,oEAAc,EAAE,CAAC;AACnB,CAAC;AAED,gGAAsB,EAAE,CAAC,eAAe,CAAC,yDAAS,CAAC,CAAC","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error('Cannot find module \"' + req + '\".');\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","module.exports = \"mat-sidenav {\\n width: 250px;\\n}\\n\\nmat-sidenav-container {\\n height: 100%;\\n}\\n\\nfooter.page-footer {\\n margin: 0;\\n}\\n\\nfooter h2 {\\n margin-top: 10px;\\n}\\n\\n.sidenav-button {\\n width: 100%;\\n}\\n\\nheader .fill-remaining-space {\\n flex: 1 1 auto;\\n}\\n\\nheader #navbar-logo {\\n font-weight: bold;\\n}\\n\\nfooter ul {\\n padding-left: 0;\\n}\\n\"","module.exports = \"\\n\\n \\n \\n \\n \\n \\n\\n
\\n \\n \\n \\n
\\n \\n \\n \\n
\\n \\n
\\n
\\n\\n
\\n \\n
\\n\\n \\n\\n
\"","import { Component, NgModule } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AuthenticationService } from './services/authentication.service';\nimport { routerTransition } from './router.animation';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css'],\n animations: [routerTransition]\n})\nexport class AppComponent {\n\n constructor(private router: Router, private authenticationService: AuthenticationService) { }\n\n isVideoSessionUrl() {\n return (this.router.url.substring(0, '/lesson/'.length) === '/lesson/');\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HttpModule } from '@angular/http';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\nimport 'hammerjs';\n\nimport { MaterialModule } from './material.module';\nimport { routing } from './app.routing';\nimport { AppComponent } from './app.component';\nimport { AuthGuard } from './auth.guard';\nimport { PresentationComponent } from './components/presentation/presentation.component';\nimport { DashboardComponent } from './components/dashboard/dahsboard.component';\nimport { LessonDetailsComponent } from './components/lesson-details/lesson-details.component';\nimport { ProfileComponent } from './components/profile/profile.component';\nimport { VideoSessionComponent } from './components/video-session/video-session.component';\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\nimport { JoinSessionDialogComponent } from './components/dashboard/join-session-dialog.component';\n\nimport { AuthenticationService } from './services/authentication.service';\nimport { UserService } from './services/user.service';\nimport { LessonService } from './services/lesson.service';\nimport { VideoSessionService } from './services/video-session.service';\n\n@NgModule({\n declarations: [\n AppComponent,\n PresentationComponent,\n DashboardComponent,\n LessonDetailsComponent,\n ProfileComponent,\n VideoSessionComponent,\n ErrorMessageComponent,\n JoinSessionDialogComponent,\n ],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n FormsModule,\n HttpModule,\n MaterialModule,\n FlexLayoutModule,\n routing,\n ],\n providers: [\n AuthenticationService,\n UserService,\n LessonService,\n VideoSessionService,\n AuthGuard,\n ],\n entryComponents: [\n JoinSessionDialogComponent,\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { ModuleWithProviders } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { PresentationComponent } from './components/presentation/presentation.component';\nimport { DashboardComponent } from './components/dashboard/dahsboard.component';\nimport { LessonDetailsComponent } from './components/lesson-details/lesson-details.component';\nimport { ProfileComponent } from './components/profile/profile.component';\nimport { VideoSessionComponent } from './components/video-session/video-session.component';\n\nimport { AuthGuard } from './auth.guard';\n\nconst appRoutes: Routes = [\n {\n path: '',\n component: PresentationComponent,\n pathMatch: 'full',\n data: { state: 'presentation' }\n },\n {\n path: 'lessons',\n component: DashboardComponent,\n canActivate: [AuthGuard],\n data: { state: 'lessons' }\n },\n {\n path: 'lesson-details/:id',\n component: LessonDetailsComponent,\n canActivate: [AuthGuard],\n data: { state: 'lesson-details' }\n },\n {\n path: 'profile',\n component: ProfileComponent,\n canActivate: [AuthGuard],\n data: { state: 'profile' }\n },\n {\n path: 'lesson/:id',\n component: VideoSessionComponent,\n canActivate: [AuthGuard],\n data: { state: 'session' }\n },\n];\n\nexport const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes, {useHash: true});\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate } from '@angular/router';\n\nimport { AuthenticationService } from './services/authentication.service';\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n\n constructor(private router: Router, private authenticationService: AuthenticationService) { }\n\n canActivate() {\n if (localStorage.getItem('login') && localStorage.getItem('rol') && this.authenticationService.isLoggedIn()) {\n // logged in so return true\n return true;\n }\n\n // not logged in so redirect to login page\n this.router.navigate(['']);\n return false;\n }\n}\n","import { Component, OnInit, EventEmitter } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatDialog, MatDialogRef, MatSnackBar } from '@angular/material';\n\nimport { Lesson } from '../../models/lesson';\n\nimport { LessonService } from '../../services/lesson.service';\nimport { VideoSessionService } from '../../services/video-session.service';\nimport { AuthenticationService } from '../../services/authentication.service';\n\nimport { JoinSessionDialogComponent } from './join-session-dialog.component';\nimport { PublisherProperties } from 'openvidu-browser';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.css'],\n})\nexport class DashboardComponent implements OnInit {\n\n lessons: Lesson[];\n\n addingLesson: false;\n lessonTitle: string;\n sumbitNewLesson: boolean;\n\n constructor(\n private lessonService: LessonService,\n private videoSessionService: VideoSessionService,\n private authenticationService: AuthenticationService,\n private router: Router,\n public snackBar: MatSnackBar,\n public dialog: MatDialog\n ) { }\n\n ngOnInit(): void {\n this.authenticationService.checkCredentials();\n this.getLessons();\n }\n\n logout() {\n this.authenticationService.logOut();\n }\n\n getLessons(): void {\n this.lessonService.getLessons(this.authenticationService.getCurrentUser()).subscribe(\n lessons => {\n console.log('User\\'s lessons: ');\n console.log(lessons);\n this.lessons = lessons;\n this.authenticationService.updateUserLessons(this.lessons);\n },\n error => console.log(error));\n }\n\n goToLesson(lesson: Lesson) {\n let dialogRef: MatDialogRef;\n dialogRef = this.dialog.open(JoinSessionDialogComponent);\n dialogRef.componentInstance.myReference = dialogRef;\n\n dialogRef.afterClosed().subscribe((cameraOptions: PublisherProperties) => {\n if (!!cameraOptions) {\n console.log('Joining session with options:');\n console.log(cameraOptions);\n this.videoSessionService.lesson = lesson;\n this.videoSessionService.cameraOptions = cameraOptions;\n this.router.navigate(['/lesson/' + lesson.id]);\n }\n });\n }\n\n goToLessonDetails(lesson: Lesson) {\n this.router.navigate(['/lesson-details/' + lesson.id]);\n }\n\n newLesson() {\n this.sumbitNewLesson = true;\n this.lessonService.newLesson(new Lesson(this.lessonTitle)).subscribe(\n lesson => {\n console.log('New lesson added: ');\n console.log(lesson);\n this.lessons.push(lesson);\n this.authenticationService.updateUserLessons(this.lessons);\n this.sumbitNewLesson = false;\n this.snackBar.open('Lesson added!', undefined, { duration: 3000 });\n this.addingLesson = false;\n },\n error => {\n console.log(error);\n this.sumbitNewLesson = false;\n this.snackBar.open('There has been a problem...', undefined, { duration: 3000 });\n }\n );\n }\n\n createSession(lessonId: number) {\n this.videoSessionService.createSession(lessonId).subscribe(\n () => {\n console.log('Session created');\n },\n error => {\n console.log(error);\n }\n )\n }\n\n generateToken(lessonId: number) {\n this.videoSessionService.generateToken(lessonId).subscribe(\n response => {\n console.log(response.text());\n },\n error => {\n console.log(error);\n }\n )\n }\n\n}\n","module.exports = \"mat-card {\\n margin-top: 20px;\\n}\\n\\nmat-card mat-icon {\\n text-align: center;\\n}\\n\\nspan.teacher {\\n font-size: 12px;\\n}\\n\"","module.exports = \"
\\n
\\n
\\n\\n
\\n
\\n\\n
\\n
MY LESSONS
\\n add_circle_outline\\n
\\n\\n
\\n
NEW LESSON
\\n
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n \\n
\\n {{lesson.title}}\\n {{lesson.teacher.nickName}}\\n mode_edit\\n play_circle_filled\\n
\\n
\\n\\n
\\n \\n
\\n\\n
\\n \\n
\\n\\n
\\n
\\n\"","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material';\n\nimport { PublisherProperties } from 'openvidu-browser';\n\n@Component({\n selector: 'app-join-session-dialog',\n template: `\n
\n

\n Video options\n

\n
\n \n
\n
Quality
\n \n Low\n Medium\n High\n Very high\n \n
\n
\n
Enter with active...
\n Video\n Audio\n
\n
\n \n \n \n \n
\n
\n `,\n styles: [`\n #quality-div {\n margin-top: 20px;\n }\n #join-div {\n margin-top: 25px;\n margin-bottom: 20px;\n }\n #quality-tag {\n display: block;\n }\n h5 {\n margin-bottom: 10px;\n text-align: left;\n }\n #joinWithVideo {\n margin-right: 50px;\n }\n mat-dialog-actions {\n display: block;\n }\n #join-btn {\n float: right;\n }\n `],\n})\nexport class JoinSessionDialogComponent {\n\n public myReference: MatDialogRef;\n private quality = 'medium';\n private joinWithVideo = true;\n private joinWithAudio = true;\n\n constructor() { }\n\n joinSession() {\n const cameraOptions: PublisherProperties = {\n audioSource: (!this.joinWithAudio) ? false : undefined,\n videoSource: (!this.joinWithVideo) ? false : undefined,\n resolution: this.getResolution()\n };\n this.myReference.close(cameraOptions);\n }\n\n getResolution(): string {\n let resolution;\n switch (this.quality) {\n case 'low':\n resolution = '320x240';\n break;\n case 'medium':\n resolution = '640x480';\n break;\n case 'high':\n resolution = '1280x720';\n break;\n case 'veryhigh':\n resolution = '1920x1080';\n break;\n default:\n resolution = '640x480';\n }\n return resolution;\n }\n}\n","module.exports = \".fail {\\n background-color: rgba(167, 56, 65, 0.2);\\n color: #a73841;\\n}\\n\\n.warning {\\n background-color: rgba(175, 110, 0, 0.2);\\n color: #af6e00;\\n}\\n\\n.correct {\\n background-color: rgba(55, 86, 70, 0.25);\\n color: #375546;\\n}\\n\\nmat-icon {\\n cursor: pointer;\\n float: right;\\n}\\n\\nmat-card {\\n max-width: 400px;\\n margin-top: 20px;\\n margin-bottom: 20px;\\n box-shadow: none;\\n}\\n\"","module.exports = \"\\n clear\\n {{this.errorTitle}}\\n \\n\\n\"","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'app-error-message',\n templateUrl: './error-message.component.html',\n styleUrls: ['./error-message.component.css']\n})\nexport class ErrorMessageComponent {\n\n @Input()\n errorTitle: string;\n @Input()\n errorContent: string;\n @Input()\n customClass: string;\n @Input()\n closable: boolean;\n @Input()\n timeable: number;\n\n @Output()\n eventShowable = new EventEmitter();\n\n constructor() { }\n\n public closeAlert() {\n this.eventShowable.emit(false);\n }\n\n}\n","module.exports = \".attender-email {\\n font-size: 11px;\\n}\\n\\n.no-margin-bottom {\\n margin-bottom: 0 !important;\\n}\\n\\n.attender-row {\\n width: 100%;\\n margin-top: 20px;\\n min-height: 27px;\\n}\\n\\n#new-attender-title {\\n margin-bottom: 5px;\\n}\\n\\n/*Rotating animation*/\\n\\n@-webkit-keyframes rotating\\n/* Safari and Chrome */\\n\\n{\\n from {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n to {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n\\n@keyframes rotating {\\n from {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n to {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n\\n.rotating {\\n -webkit-animation: rotating 1s linear infinite;\\n animation: rotating 1s linear infinite;\\n cursor: default !important;\\n}\\n\\n.rotating:hover {\\n color: inherit !important;\\n}\\n\\n/*End rotating animation*/\\n\"","module.exports = \"
\\n
\\n\\n
\\n keyboard_arrow_left\\n

{{lesson.title}}

\\n mode_edit\\n
\\n\\n
\\n
\\n \\n \\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n

New attender

\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n\\n \\n \\n\\n
\\n
\\n
\\n
{{authenticationService.getCurrentUser().nickName}}
\\n
{{authenticationService.getCurrentUser().name}}
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
{{attender.nickName}}
\\n
{{attender.name}}
\\n
\\n
\\n
\\n clear\\n cached\\n
\\n
\\n
\\n \\n
\\n
\\n\"","import { map } from 'rxjs/operators';\n\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { MatSnackBar } from '@angular/material';\n\nimport { Lesson } from '../../models/lesson';\nimport { User } from '../../models/user';\n\nimport { LessonService } from '../../services/lesson.service';\nimport { AuthenticationService } from '../../services/authentication.service';\n\n@Component({\n selector: 'app-lesson-details',\n templateUrl: './lesson-details.component.html',\n styleUrls: ['./lesson-details.component.css'],\n})\nexport class LessonDetailsComponent implements OnInit {\n\n lesson: Lesson;\n\n editingTitle = false;\n titleEdited: string;\n sumbitEditLesson = false;\n emailAttender: string;\n sumbitAddAttenders = false;\n arrayOfAttDels = [];\n\n // Feedback message parameters\n addAttendersCorrect = false;\n addAttendersError = false;\n attErrorTitle: string;\n attErrorContent: string;\n attCorrectTitle: string;\n attCorrectContent: string;\n\n constructor(\n private lessonService: LessonService,\n private authenticationService: AuthenticationService,\n private router: Router,\n private route: ActivatedRoute,\n private location: Location,\n public snackBar: MatSnackBar\n ) { }\n\n ngOnInit(): void {\n this.route.params\n .map((params: Params) => this.lessonService.obtainLocalLesson(+params['id']))\n .subscribe(lesson => this.lesson = lesson);\n }\n\n editLesson() {\n if (this.titleEdited !== this.lesson.title) {\n this.sumbitEditLesson = true;\n const l = new Lesson(this.titleEdited);\n l.id = this.lesson.id;\n this.lessonService.editLesson(l).subscribe(\n lesson => {\n // Lesson has been updated\n console.log('Lesson edited: ');\n console.log(lesson);\n this.lesson = lesson;\n this.sumbitEditLesson = false;\n this.editingTitle = false;\n this.snackBar.open('Lesson edited!', undefined, { duration: 3000 });\n },\n error => {\n console.log(error);\n this.sumbitEditLesson = false;\n this.snackBar.open('There has been a problem...', undefined, { duration: 3000 });\n });\n } else {\n this.editingTitle = false; // The user has not modified the title\n }\n }\n\n deleteLesson() {\n this.sumbitEditLesson = true;\n this.lessonService.deleteLesson(this.lesson.id).subscribe(\n lesson => {\n // Lesson has been deleted\n console.log('Lesson deleted');\n console.log(lesson);\n this.sumbitEditLesson = false;\n this.router.navigate(['/lessons']);\n this.snackBar.open('Lesson deleted!', undefined, { duration: 3000 });\n },\n error => {\n console.log(error);\n this.sumbitEditLesson = false;\n this.snackBar.open('There has been a problem...', undefined, { duration: 3000 });\n });\n }\n\n addLessonAttenders() {\n this.sumbitAddAttenders = true;\n this.lessonService.addLessonAttenders(this.lesson.id, [this.emailAttender]).subscribe(\n response => { // response: attendersAdded, attendersAlreadyAdded, emailsInvalid, emailsValidNotRegistered\n console.log('Attender added');\n console.log(response);\n this.sumbitAddAttenders = false;\n const newAttenders = response.attendersAdded as User[];\n this.lesson.attenders = this.lesson.attenders.concat(newAttenders);\n this.handleAttendersMessage(response);\n },\n error => {\n console.log(error);\n this.sumbitAddAttenders = false;\n this.snackBar.open('There has been a problem...', undefined, { duration: 3000 });\n });\n }\n\n deleteLessonAttender(i: number, attender: User) {\n this.arrayOfAttDels[i] = true;\n const l = new Lesson(this.lesson.title);\n l.id = this.lesson.id;\n for (let j = 0; j < this.lesson.attenders.length; j++) {\n if (this.lesson.attenders[j].id !== attender.id) {\n // Inserting a new User object equal to the attender but \"lessons\" array empty\n l.attenders.push(new User(this.lesson.attenders[j]));\n }\n }\n this.lessonService.deleteLessonAttenders(l).subscribe(\n attenders => {\n console.log('Attender removed');\n console.log(attenders);\n this.arrayOfAttDels[i] = false;\n this.lesson.attenders = attenders;\n this.snackBar.open('Attender removed!', undefined, { duration: 3000 });\n },\n error => {\n console.log(error);\n this.arrayOfAttDels[i] = false;\n this.snackBar.open('There has been a problem...', undefined, { duration: 3000 });\n });\n }\n\n // Creates an error message when there is any problem during the process of adding Users to a Lesson\n // It also generates a correct feedback message when any student has been correctly added to the Lesson\n handleAttendersMessage(response) {\n let isError = false;\n let isCorrect = false;\n this.attErrorContent = '';\n this.attCorrectContent = '';\n\n if (response.attendersAdded.length > 0) {\n for (const user of response.attendersAdded) {\n this.attCorrectContent += '' + user.name + '';\n }\n isCorrect = true;\n }\n if (response.attendersAlreadyAdded.length > 0) {\n this.attErrorContent += 'The following users were already added to the lesson';\n for (const user of response.attendersAlreadyAdded) {\n this.attErrorContent += '' + user.name + '';\n }\n isError = true;\n }\n if (response.emailsValidNotRegistered.length > 0) {\n this.attErrorContent += 'The following users are not registered';\n for (const email of response.emailsValidNotRegistered) {\n this.attErrorContent += '' + email + '';\n }\n isError = true;\n }\n if (response.emailsInvalid) {\n if (response.emailsInvalid.length > 0) {\n this.attErrorContent += 'These are not valid emails';\n for (const email of response.emailsInvalid) {\n this.attErrorContent += '' + email + '';\n }\n isError = true;\n }\n }\n if (isError) {\n this.attErrorTitle = 'There have been some problems';\n this.addAttendersError = true;\n } else if (response.attendersAdded.length === 0) {\n this.attErrorTitle = 'No emails there!';\n this.addAttendersError = true;\n }\n if (isCorrect) {\n this.attCorrectTitle = 'The following users where properly added';\n this.addAttendersCorrect = true;\n }\n }\n\n}\n","module.exports = \"h1 {\\n text-align: center;\\n display: block;\\n}\\n\\nmat-form-field {\\n width: 100%;\\n}\\n\\nmat-card-actions {\\n padding-left: 10px;\\n padding-right: 10px;\\n color: #9e9e9e;\\n}\\n\\n.btn-container {\\n text-align: center;\\n padding-top: 20px;\\n}\\n\\n.card-button {\\n margin-left: 10px !important;\\n}\\n\\n.radio-button-div {\\n text-align: center;\\n margin-bottom: 10px;\\n}\\n\\n#sign-up-as {\\n color: #9e9e9e;\\n display: block;\\n margin-top: 15px;\\n margin-bottom: 10px;\\n}\\n\\ntable {\\n margin: 0 auto;\\n margin-top: 30px;\\n text-align: left;\\n}\\n\"","module.exports = \"
\\n
\\n\\n

OpenVidu Classroom Demo

\\n\\n
\\n\\n \\n \\n\\n
\\n
\\n
\\n\\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n Sign up as...\\n \\n Student\\n Teacher\\n \\n
\\n\\n \\n\\n
\\n \\n \\n
\\n\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
EmailPassword
teacher@gmail.compass
student1@gmail.compass
student2@gmail.compass
\\n
\\n\\n
\\n\\n \\n
Not registered yet?
\\n
Already registered?
\\n
\\n\\n
\\n\\n
\\n\\n
\\n
\\n\"","import { Component, OnInit, AfterViewChecked } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthenticationService } from '../../services/authentication.service';\nimport { UserService } from '../../services/user.service';\n\n@Component({\n selector: 'app-presentation',\n templateUrl: './presentation.component.html',\n styleUrls: ['./presentation.component.css']\n})\n\nexport class PresentationComponent implements OnInit, AfterViewChecked {\n\n private email: string;\n private password: string;\n private confirmPassword: string;\n private nickName: string;\n private roleUserSignup = 'student';\n\n private loginView = true;\n private fieldsIncorrect: boolean;\n private submitProcessing: boolean;\n\n // Error message content\n private errorTitle: string;\n private errorContent: string;\n private customClass: string;\n\n constructor(\n private authenticationService: AuthenticationService,\n private userService: UserService,\n private router: Router) { }\n\n ngOnInit() { }\n\n // If the user is loggedIn, navigates to dashboard\n ngAfterViewChecked() {\n if (this.authenticationService.isLoggedIn()) {\n this.router.navigate(['/lessons']);\n }\n }\n\n setLoginView(option: boolean) {\n this.fieldsIncorrect = false;\n this.loginView = option;\n }\n\n onSubmit() {\n console.log('Submit: email = ' + this.email + ' , password = ' + this.password + ', confirmPassword = ' + this.confirmPassword);\n this.submitProcessing = true;\n\n if (this.loginView) {\n // If login view is activated\n console.log('Logging in...');\n this.logIn(this.email, this.password);\n } else {\n // If signup view is activated\n console.log('Signing up...');\n this.signUp();\n }\n }\n\n logIn(user: string, pass: string) {\n this.authenticationService.logIn(user, pass).subscribe(\n result => {\n this.submitProcessing = false;\n\n console.log('Login succesful! LOGGED AS ' + this.authenticationService.getCurrentUser().name);\n\n // Login successful\n this.fieldsIncorrect = false;\n this.router.navigate(['/lessons']);\n },\n error => {\n\n console.log('Login failed (error): ' + error);\n\n this.errorTitle = 'Invalid field';\n this.errorContent = 'Please check your email or password';\n this.customClass = 'fail';\n\n // Login failed\n this.handleError();\n }\n );\n }\n\n signUp() {\n\n // Passwords don't match\n if (this.password !== this.confirmPassword) {\n this.errorTitle = 'Your passwords don\\'t match!';\n this.errorContent = '';\n this.customClass = 'fail';\n this.handleError();\n }\n\n else {\n\n let userNameFixed = this.email;\n let userPasswordFixed = this.password;\n\n this.userService.newUser(userNameFixed, userPasswordFixed, this.nickName, this.roleUserSignup).subscribe(\n result => {\n\n // Sign up succesful\n this.logIn(userNameFixed, userPasswordFixed);\n console.log('Sign up succesful!');\n },\n error => {\n\n console.log('Sign up failed (error): ' + error);\n if (error === 409) { // CONFLICT: Email already in use\n this.errorTitle = 'Invalid email';\n this.errorContent = 'That email is already in use';\n this.customClass = 'fail';\n } else if (error === 403) { // FORBIDDEN: Invalid email format\n this.errorTitle = 'Invalid email format';\n this.errorContent = 'Our server has rejected that email';\n this.customClass = 'fail';\n }\n\n // Sign up failed\n this.handleError();\n }\n );\n }\n }\n\n handleError() {\n this.submitProcessing = false;\n this.fieldsIncorrect = true;\n }\n}\n","module.exports = \"table {\\n margin-top: 15px;\\n border-collapse: separate;\\n border-spacing: 15px 17px;\\n}\\n\\nth {\\n text-align: left;\\n}\\n\"","module.exports = \"
\\n
\\n\\n
MY PROFILE
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Name{{authenticationService.getCurrentUser().nickName}}
Email{{authenticationService.getCurrentUser().name}}
\\n \\n
\\n
\\n\"","import { Component, OnInit } from '@angular/core';\n\nimport { AuthenticationService } from '../../services/authentication.service';\nimport { User } from '../../models/user';\n\n@Component({\n selector: 'app-profile',\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.css']\n})\nexport class ProfileComponent implements OnInit {\n\n private user: User;\n\n constructor(private authenticationService: AuthenticationService) { }\n\n ngOnInit() {\n this.user = this.authenticationService.getCurrentUser();\n }\n\n}\n","module.exports = \"h1 {\\n text-align: center;\\n margin: 0;\\n color: white;\\n}\\n\\n#header-div {\\n position: absolute;\\n z-index: 1000;\\n width: 100%;\\n background: rgba(0, 0, 0, 0.4);\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */ /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none;\\n}\\n\\nmat-icon {\\n font-size: 38px;\\n width: 38px;\\n height: 38px;\\n color: white;\\n transition: color .2s linear;\\n}\\n\\nmat-icon:hover {\\n color: #ffd740;\\n}\\n\\n#back-btn {\\n float: left;\\n}\\n\\n.right-btn {\\n float: right;\\n}\\n\"","module.exports = \"
\\n keyboard_arrow_left\\n {{fullscreenIcon}}\\n {{videoIcon}}\\n {{audioIcon}}\\n

{{lesson?.title}}

\\n
\\n
\\n
\"","import { Component, OnInit, OnDestroy, AfterViewInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { OpenVidu, Session, Publisher, StreamEvent, ConnectionEvent, PublisherProperties } from 'openvidu-browser';\n\nimport { VideoSessionService } from '../../services/video-session.service';\nimport { AuthenticationService } from '../../services/authentication.service';\n\nimport { Lesson } from '../../models/lesson';\n\n@Component({\n selector: 'app-video-session',\n templateUrl: './video-session.component.html',\n styleUrls: ['./video-session.component.css']\n})\nexport class VideoSessionComponent implements OnInit, OnDestroy, AfterViewInit {\n\n lesson: Lesson;\n\n OV: OpenVidu;\n session: Session;\n publisher: Publisher;\n\n token: string;\n\n cameraOptions: PublisherProperties;\n\n localVideoActivated: boolean;\n localAudioActivated: boolean;\n videoIcon: string;\n audioIcon: string;\n fullscreenIcon: string;\n\n constructor(\n private location: Location,\n private authenticationService: AuthenticationService,\n private videoSessionService: VideoSessionService) { }\n\n\n OPEN_VIDU_CONNECTION() {\n\n // 0) Obtain 'token' from server\n // In this case, the method ngOnInit takes care of it\n\n\n // 1) Initialize OpenVidu and your Session\n this.OV = new OpenVidu();\n this.session = this.OV.initSession();\n\n\n // 2) Specify the actions when events take place\n this.session.on('streamCreated', (event: StreamEvent) => {\n console.warn('STREAM CREATED!');\n console.warn(event.stream);\n this.session.subscribe(event.stream, 'subscriber', {\n insertMode: 'APPEND'\n });\n });\n\n this.session.on('streamDestroyed', (event: StreamEvent) => {\n console.warn('STREAM DESTROYED!');\n console.warn(event.stream);\n });\n\n this.session.on('connectionCreated', (event: ConnectionEvent) => {\n if (event.connection.connectionId === this.session.connection.connectionId) {\n console.warn('YOUR OWN CONNECTION CREATED!');\n } else {\n console.warn('OTHER USER\\'S CONNECTION CREATED!');\n }\n console.warn(event.connection);\n });\n\n this.session.on('connectionDestroyed', (event: ConnectionEvent) => {\n console.warn('OTHER USER\\'S CONNECTION DESTROYED!');\n console.warn(event.connection);\n });\n\n\n // 3) Connect to the session\n this.session.connect(this.token, 'CLIENT:' + this.authenticationService.getCurrentUser().name)\n .then(() => {\n if (this.authenticationService.isTeacher()) {\n\n // 4) Get your own camera stream with the desired resolution and publish it, only if the user is supposed to do so\n this.publisher = this.OV.initPublisher('publisher', this.cameraOptions);\n\n this.publisher.on('accessAllowed', () => {\n console.warn('CAMERA ACCESS ALLOWED!');\n });\n this.publisher.on('accessDenied', () => {\n console.warn('CAMERA ACCESS DENIED!');\n });\n this.publisher.on('streamCreated', (event: StreamEvent) => {\n console.warn('STREAM CREATED BY PUBLISHER!');\n console.warn(event.stream);\n })\n\n // 5) Publish your stream\n this.session.publish(this.publisher);\n }\n }).catch(error => {\n console.log('There was an error connecting to the session:', error.code, error.message);\n });\n }\n\n\n ngOnInit() {\n\n // Specific aspects of this concrete application\n this.previousConnectionStuff();\n\n\n if (this.authenticationService.isTeacher()) {\n\n // If the user is the teacher: creates the session and gets a token (with PUBLISHER role)\n this.videoSessionService.createSession(this.lesson.id).subscribe(\n () => {\n this.videoSessionService.generateToken(this.lesson.id).subscribe(\n response => {\n this.token = response[0];\n console.warn('Token: ' + this.token);\n this.OPEN_VIDU_CONNECTION();\n },\n error => {\n console.log(error);\n });\n },\n error => {\n console.log(error);\n }\n );\n } else {\n\n // If the user is a student: gets a token (with SUBSCRIBER role)\n this.videoSessionService.generateToken(this.lesson.id).subscribe(\n response => { // {0: token}\n this.token = response[0];\n console.warn('Token: ' + this.token);\n this.OPEN_VIDU_CONNECTION();\n },\n error => {\n console.log(error);\n });\n }\n\n\n // Specific aspects of this concrete application\n this.afterConnectionStuff();\n }\n\n ngAfterViewInit() {\n this.toggleScrollPage('hidden');\n }\n\n ngOnDestroy() {\n this.videoSessionService.removeUser(this.lesson.id).subscribe(\n response => {\n console.warn('You have succesfully left the lesson');\n },\n error => {\n console.log(error);\n });\n this.toggleScrollPage('auto');\n this.exitFullScreen();\n if (this.OV) { this.session.disconnect(); }\n }\n\n toggleScrollPage(scroll: string) {\n const content = document.getElementsByClassName('mat-sidenav-content')[0];\n content.style.overflow = scroll;\n }\n\n toggleLocalVideo() {\n this.localVideoActivated = !this.localVideoActivated;\n this.publisher.publishVideo(this.localVideoActivated);\n this.videoIcon = this.localVideoActivated ? 'videocam' : 'videocam_off';\n }\n\n toggleLocalAudio() {\n this.localAudioActivated = !this.localAudioActivated;\n this.publisher.publishAudio(this.localAudioActivated);\n this.audioIcon = this.localAudioActivated ? 'mic' : 'mic_off';\n }\n\n toggleFullScreen() {\n const document: any = window.document;\n const fs = document.getElementsByTagName('html')[0];\n if (!document.fullscreenElement &&\n !document.mozFullScreenElement &&\n !document.webkitFullscreenElement &&\n !document.msFullscreenElement) {\n console.log('enter FULLSCREEN!');\n this.fullscreenIcon = 'fullscreen_exit';\n if (fs.requestFullscreen) {\n fs.requestFullscreen();\n } else if (fs.msRequestFullscreen) {\n fs.msRequestFullscreen();\n } else if (fs.mozRequestFullScreen) {\n fs.mozRequestFullScreen();\n } else if (fs.webkitRequestFullscreen) {\n fs.webkitRequestFullscreen();\n }\n } else {\n console.log('exit FULLSCREEN!');\n this.fullscreenIcon = 'fullscreen';\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n }\n\n exitFullScreen() {\n const document: any = window.document;\n const fs = document.getElementsByTagName('html')[0];\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n\n previousConnectionStuff() {\n this.lesson = this.videoSessionService.lesson;\n this.cameraOptions = this.videoSessionService.cameraOptions;\n }\n\n afterConnectionStuff() {\n this.localVideoActivated = this.cameraOptions.videoSource !== false;\n this.localAudioActivated = this.cameraOptions.audioSource !== false;\n this.videoIcon = this.localVideoActivated ? 'videocam' : 'videocam_off';\n this.audioIcon = this.localAudioActivated ? 'mic' : 'mic_off';\n this.fullscreenIcon = 'fullscreen';\n }\n\n}\n","import { NgModule } from '@angular/core';\n\nimport {\n MatButtonModule,\n MatSidenavModule,\n MatToolbarModule,\n MatIconModule,\n MatInputModule,\n MatCardModule,\n MatFormFieldModule,\n MatDialogModule,\n MatRadioModule,\n MatCheckboxModule,\n MatSnackBarModule\n} from '@angular/material';\n\n@NgModule({\n imports: [\n MatButtonModule,\n MatSidenavModule,\n MatToolbarModule,\n MatIconModule,\n MatInputModule,\n MatCardModule,\n MatFormFieldModule,\n MatDialogModule,\n MatRadioModule,\n MatCheckboxModule,\n MatSnackBarModule\n ],\n exports: [\n MatButtonModule,\n MatSidenavModule,\n MatToolbarModule,\n MatIconModule,\n MatInputModule,\n MatCardModule,\n MatFormFieldModule,\n MatDialogModule,\n MatRadioModule,\n MatCheckboxModule,\n MatSnackBarModule\n ]\n})\nexport class MaterialModule { }\n","import { User } from './user';\n\nexport class Lesson {\n\n public id?: number;\n public title: string;\n public teacher: User;\n public attenders: User[];\n\n constructor(title: string) {\n this.title = title;\n this.attenders = [];\n }\n\n}\n","import { Lesson } from './lesson';\n\nexport class User {\n\n public id?: number;\n public name: string;\n public nickName: string;\n public roles: string[];\n public lessons: Lesson[];\n\n constructor(u: User) {\n this.id = u.id;\n this.name = u.name;\n this.nickName = u.nickName;\n this.roles = u.roles;\n this.lessons = [];\n }\n\n}\n","import { trigger, animate, style, group, animateChild, query, stagger, transition } from '@angular/animations';\n\nexport const routerTransition = trigger('routerTransition', [\n transition('* <=> *', [\n query(':enter, :leave', style({ position: 'fixed', width: '100%' })\n , { optional: true }),\n group([\n query(\n ':enter',\n [\n style({ opacity: '0' }),\n animate('0.4s ease-in-out', style({ opacity: '1' }))\n ],\n { optional: true }),\n query(\n ':leave',\n [\n style({ opacity: '1' }),\n animate('0.2s cubic-bezier(0.000, 0.900, 0.495, 0.990)', style({ opacity: '0' }))\n ],\n { optional: true }),\n ])\n ])\n]);\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { Injectable } from '@angular/core';\nimport { Http, RequestOptions, Headers, Response } from '@angular/http';\nimport { Router } from '@angular/router';\n\nimport { environment } from '../../environments/environment';\n\nimport { User } from '../models/user';\n\n@Injectable()\nexport class AuthenticationService {\n\n private urlLogIn = 'api-logIn';\n private urlLogOut = 'api-logOut';\n\n public token: string;\n private user: User;\n private role: string;\n\n constructor(private http: Http, private router: Router) {\n this.reqIsLogged();\n\n // set token if saved in local storage\n // let auth_token = JSON.parse(localStorage.getItem('auth_token'));\n // this.token = auth_token && auth_token.token;\n }\n\n logIn(user: string, pass: string) {\n\n console.log('Login service started...');\n\n const userPass = utf8_to_b64(user + ':' + pass);\n const headers = new Headers({\n 'Authorization': 'Basic ' + userPass,\n 'X-Requested-With': 'XMLHttpRequest'\n });\n const options = new RequestOptions({ headers });\n\n return this.http.get(this.urlLogIn, options)\n .pipe(\n map(response => {\n this.processLogInResponse(response);\n return this.user;\n }),\n catchError(error => Observable.throw(error))\n );\n }\n\n logOut() {\n\n console.log('Logging out...');\n\n return this.http.get(this.urlLogOut)\n .pipe(\n map(response => {\n console.log('Logout succesful!');\n\n this.user = null;\n this.role = null;\n\n // clear token remove user from local storage to log user out and navigates to welcome page\n this.token = null;\n localStorage.removeItem('login');\n localStorage.removeItem('rol');\n this.router.navigate(['']);\n\n return response;\n }),\n catchError(error => Observable.throw(error))\n );\n }\n\n directLogOut() {\n this.logOut().subscribe(\n response => { },\n error => console.log('Error when trying to log out: ' + error)\n );\n }\n\n private processLogInResponse(response) {\n // Correctly logged in\n console.log('Login succesful processing...');\n\n this.user = (response.json() as User);\n\n localStorage.setItem('login', 'OPENVIDUAPP');\n if (this.user.roles.indexOf('ROLE_TEACHER') !== -1) {\n this.role = 'ROLE_TEACHER';\n localStorage.setItem('rol', 'ROLE_TEACHER');\n }\n if (this.user.roles.indexOf('ROLE_STUDENT') !== -1) {\n this.role = 'ROLE_STUDENT';\n localStorage.setItem('rol', 'ROLE_STUDENT');\n }\n }\n\n reqIsLogged() {\n\n console.log('ReqIsLogged called');\n\n const headers = new Headers({\n 'X-Requested-With': 'XMLHttpRequest'\n });\n const options = new RequestOptions({ headers });\n\n this.http.get(this.urlLogIn, options)\n .pipe(\n map(response => this.processLogInResponse(response)),\n catchError(error => {\n if (error.status !== 401) {\n console.error('Error when asking if logged: ' + JSON.stringify(error));\n this.logOut();\n return Observable.throw(error);\n }\n })\n );\n }\n\n checkCredentials() {\n if (!this.isLoggedIn()) {\n this.logOut();\n }\n }\n\n isLoggedIn() {\n return ((this.user != null) && (this.user !== undefined));\n }\n\n getCurrentUser() {\n return this.user;\n }\n\n isTeacher() {\n return ((this.user.roles.indexOf('ROLE_TEACHER')) !== -1) && (localStorage.getItem('rol') === 'ROLE_TEACHER');\n }\n\n isStudent() {\n return ((this.user.roles.indexOf('ROLE_STUDENT')) !== -1) && (localStorage.getItem('rol') === 'ROLE_STUDENT');\n }\n\n updateUserLessons(lessons) {\n this.getCurrentUser().lessons = lessons;\n }\n}\n\nfunction utf8_to_b64(str) {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\n return String.fromCharCode('0x' + p1);\n }));\n}\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { environment } from '../../environments/environment';\n\nimport { Lesson } from '../models/lesson';\nimport { User } from '../models/user';\nimport { AuthenticationService } from './authentication.service';\n\nimport 'rxjs/Rx';\n\n@Injectable()\nexport class LessonService {\n\n private url = 'api-lessons';\n\n constructor(private http: Http, private authenticationService: AuthenticationService) { }\n\n getLessons(user: User) {\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.get(this.url + '/user/' + user.id, options) // Must send userId\n .pipe(\n map((response: Response) => response.json() as Lesson[]),\n catchError(error => this.handleError(error))\n );\n }\n\n getLesson(lessonId: number) {\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.get(this.url + '/lesson/' + lessonId, options) // Must send userId\n .pipe(\n map((response: Response) => response.json() as Lesson),\n catchError(error => this.handleError(error))\n );\n }\n\n // POST new lesson. On success returns the created lesson\n newLesson(lesson: Lesson) {\n const body = JSON.stringify(lesson);\n const headers = new Headers({\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n });\n const options = new RequestOptions({ headers });\n return this.http.post(this.url + '/new', body, options)\n .pipe(\n map(response => response.json() as Lesson),\n catchError(error => this.handleError(error))\n );\n }\n\n // PUT existing lesson. On success returns the updated lesson\n editLesson(lesson: Lesson) {\n const body = JSON.stringify(lesson);\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.put(this.url + '/edit', body, options)\n .pipe(\n map(response => response.json() as Lesson),\n catchError(error => this.handleError(error))\n );\n }\n\n // DELETE existing lesson. On success returns the deleted lesson (simplified version)\n deleteLesson(lessonId: number) {\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.delete(this.url + '/delete/' + lessonId, options)\n .pipe(\n map(response => response.json() as Lesson),\n catchError(error => this.handleError(error))\n );\n }\n\n // PUT existing lesson, modifying its attenders (adding them). On success returns the updated lesson.attenders array\n addLessonAttenders(lessonId: number, userEmails: string[]) {\n const body = JSON.stringify(userEmails);\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.put(this.url + '/edit/add-attenders/lesson/' + lessonId, body, options)\n .pipe(\n map(response => response.json()),\n catchError(error => this.handleError(error))\n );\n }\n\n // PUT existing lesson, modifying its attenders (deleting them). On success returns the updated lesson.attenders array\n deleteLessonAttenders(lesson: Lesson) {\n const body = JSON.stringify(lesson);\n const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this.authenticationService.token });\n const options = new RequestOptions({ headers });\n return this.http.put(this.url + '/edit/delete-attenders', body, options)\n .pipe(\n map(response => response.json() as User[]),\n catchError(error => this.handleError(error))\n );\n }\n\n obtainLocalLesson(id: number) {\n return this.authenticationService.getCurrentUser().lessons.find(lesson => lesson.id === id);\n }\n\n private handleError(error: any) {\n console.error(error);\n return observableThrowError('Server error (' + error.status + '): ' + error.text())\n }\n}\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\n\nimport { User } from '../models/user';\n\n@Injectable()\nexport class UserService {\n\n private url = 'api-users';\n\n constructor(private http: Http) { }\n\n newUser(name: string, pass: string, nickName: string, role: string) {\n const body = JSON.stringify([name, pass, nickName, role]);\n const headers = new Headers({\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n });\n const options = new RequestOptions({ headers });\n return this.http.post(this.url + '/new', body, options)\n .pipe(\n map(response => response.json() as User),\n catchError(error => this.handleError(error))\n );\n }\n\n private handleError(error: any) {\n return observableThrowError(error.status);\n }\n}\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions } from '@angular/http';\n\nimport { Lesson } from '../models/lesson';\n\nimport { AuthenticationService } from './authentication.service';\nimport { PublisherProperties } from 'openvidu-browser';\n\n@Injectable()\nexport class VideoSessionService {\n\n lesson: Lesson;\n cameraOptions: PublisherProperties;\n\n private url = 'api-sessions';\n\n constructor(private http: Http, private authenticationService: AuthenticationService) { }\n\n // Returns nothing (HttpResponse)\n createSession(lessonId: number) {\n const body = JSON.stringify(lessonId);\n return this.http.post(this.url + '/create-session', body)\n .pipe(\n map(response => { }),\n catchError(error => this.handleError(error))\n );\n }\n\n // Returns {0: sessionId, 1: token}\n generateToken(lessonId: number) {\n const body = JSON.stringify(lessonId);\n const headers = new Headers({ 'Content-Type': 'application/json' });\n const options = new RequestOptions({ headers });\n return this.http.post(this.url + '/generate-token', body, options)\n .pipe(\n map(response => response.json()),\n catchError(error => this.handleError(error))\n );\n }\n\n removeUser(lessonId: number) {\n const body = JSON.stringify(lessonId);\n const headers = new Headers({ 'Content-Type': 'application/json' });\n const options = new RequestOptions({ headers });\n return this.http.post(this.url + '/remove-user', body, options)\n .pipe(\n map(response => response),\n catchError(error => this.handleError(error))\n );\n }\n\n private handleError(error: any) {\n console.error(error);\n return observableThrowError('Server error (' + error.status + '): ' + error.text())\n }\n\n}\n","export const environment = { \n production: false,\n envName: 'container',\n URL_BACK: window.location.origin\n};\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n"],"sourceRoot":""} \ No newline at end of file