@rolatech/angular-course 17.2.8 → 17.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/esm2022/lib/components/course-action/course-action.component.mjs +3 -3
  2. package/esm2022/lib/components/course-details/course-details.component.mjs +3 -3
  3. package/esm2022/lib/components/course-details-dialog/course-details-dialog.component.mjs +3 -3
  4. package/esm2022/lib/components/course-edit-dialog/course-edit-dialog.component.mjs +3 -3
  5. package/esm2022/lib/components/course-info/course-info.component.mjs +3 -3
  6. package/esm2022/lib/components/course-item/course-item.component.mjs +3 -3
  7. package/esm2022/lib/components/course-media/course-media.component.mjs +3 -3
  8. package/esm2022/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.mjs +3 -3
  9. package/esm2022/lib/components/course-preview/course-preview.component.mjs +3 -3
  10. package/esm2022/lib/components/course-pricing/course-pricing.component.mjs +3 -3
  11. package/esm2022/lib/components/course-pricing-add-dialog/course-pricing-add-dialog.component.mjs +3 -3
  12. package/esm2022/lib/components/course-pricing-dialog/course-pricing-dialog.component.mjs +3 -3
  13. package/esm2022/lib/components/course-schedule/course-schedule.component.mjs +3 -3
  14. package/esm2022/lib/components/course-schedule-add-dialog/course-schedule-add-dialog.component.mjs +3 -3
  15. package/esm2022/lib/components/course-schedule-dialog/course-schedule-dialog.component.mjs +3 -3
  16. package/esm2022/lib/components/course-section-item/course-section-item.component.mjs +3 -3
  17. package/esm2022/lib/components/course-section-lecture-item/course-section-lecture-item.component.mjs +4 -7
  18. package/esm2022/lib/components/course-section-lecture-video-dialog/course-section-lecture-video-dialog.component.mjs +4 -7
  19. package/esm2022/lib/components/course-section-lecture-video-item/course-section-lecture-video-item.component.mjs +3 -3
  20. package/esm2022/lib/components/course-sections/course-sections.component.mjs +3 -3
  21. package/esm2022/lib/components/detail-item/detail-item.component.mjs +5 -5
  22. package/esm2022/lib/components/pricing-item/pricing-item.component.mjs +3 -3
  23. package/esm2022/lib/components/schedule-item/schedule-item.component.mjs +3 -3
  24. package/esm2022/lib/pages/course/course-category/course-category.component.mjs +3 -3
  25. package/esm2022/lib/pages/course/course-detail/course-detail.component.mjs +27 -41
  26. package/esm2022/lib/pages/course/course-index/course-index.component.mjs +3 -3
  27. package/esm2022/lib/pages/course/course-layout/course-layout.component.mjs +3 -3
  28. package/esm2022/lib/pages/course/course-section-content/course-section-content.component.mjs +12 -19
  29. package/esm2022/lib/services/category.service.mjs +3 -3
  30. package/esm2022/lib/services/course-section.service.mjs +3 -3
  31. package/esm2022/lib/services/course.service.mjs +3 -3
  32. package/fesm2022/rolatech-angular-course.mjs +123 -150
  33. package/fesm2022/rolatech-angular-course.mjs.map +1 -1
  34. package/lib/pages/course/course-detail/course-detail.component.d.ts +2 -0
  35. package/lib/pages/course/course-section-content/course-section-content.component.d.ts +2 -1
  36. package/package.json +4 -4
  37. package/themes/_default.scss +1 -1
@@ -1,4 +1,4 @@
1
- import { Component, inject } from '@angular/core';
1
+ import { Component, effect, inject } from '@angular/core';
2
2
  import { CourseSectionLectureContentType, CourseStatus } from '../../../interfaces';
3
3
  import { CourseSectionService, CourseService } from '../../../services';
4
4
  import { AuthService, AuthUserService } from '@rolatech/angular-auth';
@@ -16,31 +16,30 @@ import { CourseSectionsComponent } from '../../../components/course-sections/cou
16
16
  import * as i0 from "@angular/core";
17
17
  export class CourseDetailComponent extends BaseComponent {
18
18
  constructor() {
19
- super(...arguments);
19
+ super();
20
20
  this.status = CourseStatus;
21
21
  this.authService = inject(AuthService);
22
22
  this.authUserService = inject(AuthUserService);
23
23
  this.courseService = inject(CourseService);
24
24
  this.viewportScroller = inject(ViewportScroller);
25
25
  this.courseSectionService = inject(CourseSectionService);
26
+ this.authenticated = this.authService.authenticated;
26
27
  this.instructorName = '';
27
28
  this.username = '';
28
29
  this.inWishList = false;
29
30
  this.purchased = false;
30
31
  this.sections = [];
31
32
  this.type = CourseSectionLectureContentType;
33
+ effect(() => {
34
+ if (this.authenticated()) {
35
+ this.findPurchasedByCourseId();
36
+ this.findWishlistBy();
37
+ }
38
+ });
32
39
  }
33
40
  ngOnInit() {
34
41
  this.findOne();
35
42
  this.findSections();
36
- this.authService.introspect().subscribe({
37
- next: (res) => {
38
- if (res.authenticated) {
39
- this.findPurchasedByCourseId();
40
- this.findWishlistBy();
41
- }
42
- },
43
- });
44
43
  }
45
44
  scrollToAnchor(anchorId) {
46
45
  // this.viewportScroller.setOffset([100, 100]);
@@ -75,24 +74,17 @@ export class CourseDetailComponent extends BaseComponent {
75
74
  });
76
75
  }
77
76
  onWish(e) {
78
- this.authService.introspect().subscribe({
79
- next: (res) => {
80
- if (res.authenticated) {
81
- if (this.inWishList) {
82
- this.removeFromWishlist();
83
- }
84
- else {
85
- this.addToWishlist();
86
- }
87
- }
88
- else {
89
- this.snackBarService.open('请先登录');
90
- }
91
- },
92
- error: (error) => {
93
- this.snackBarService.open(error.message);
94
- },
95
- });
77
+ if (this.authenticated()) {
78
+ if (this.inWishList) {
79
+ this.removeFromWishlist();
80
+ }
81
+ else {
82
+ this.addToWishlist();
83
+ }
84
+ }
85
+ else {
86
+ this.snackBarService.open('请先登录');
87
+ }
96
88
  }
97
89
  checkout(e) {
98
90
  this.router.navigateByUrl(`/carts/checkout/express/courses/${this.id}`);
@@ -116,15 +108,9 @@ export class CourseDetailComponent extends BaseComponent {
116
108
  this.router.navigate(['/courses', this.course.id, 'sections', section.id, 'lectures', lecture.id]);
117
109
  }
118
110
  findWishlistBy() {
119
- this.authService.introspect().subscribe({
111
+ this.courseService.findWishlistBy(this.id).subscribe({
120
112
  next: (res) => {
121
- if (res.authenticated) {
122
- this.courseService.findWishlistBy(this.id).subscribe({
123
- next: (res) => {
124
- this.inWishList = res.data;
125
- },
126
- });
127
- }
113
+ this.inWishList = res.data;
128
114
  },
129
115
  });
130
116
  }
@@ -135,10 +121,10 @@ export class CourseDetailComponent extends BaseComponent {
135
121
  },
136
122
  });
137
123
  }
138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
139
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: CourseDetailComponent, isStandalone: true, selector: "rolatech-course-detail", usesInheritance: true, ngImport: i0, template: "@if (course) {\n <rolatech-app-container>\n <div class=\"flex flex-col-reverse gap-2 sm:flex-row md:flex-row w-full justify-between\">\n <div class=\"sm:w-3/4\">\n <rolatech-course-info [course]=\"course\" [instructor]=\"instructorName\" [username]=\"username\"> </rolatech-course-info>\n <rolatech-course-sections\n [sections]=\"sections\"\n (section)=\"onSection($event)\"\n (checkout)=\"checkout($event)\"\n [purchased]=\"purchased\"\n ></rolatech-course-sections>\n <rolatech-course-schedule [schedule]=\"course.schedule\"></rolatech-course-schedule>\n <rolatech-course-details [details]=\"course.details\"></rolatech-course-details>\n <rolatech-comments [itemId]=\"course.id\"></rolatech-comments>\n </div>\n <div>\n <!-- <rolatech-course-media [min]=\"!purchased\" [media]=\"course.media\" [min]=\"true\"></rolatech-course-media> -->\n <rolatech-course-media [media]=\"course.media\" [min]=\"true\"></rolatech-course-media>\n @if (!purchased) {\n <rolatech-course-pricing [pricing]=\"course.pricing\"></rolatech-course-pricing>\n <rolatech-course-action\n [course]=\"course\"\n (checkout)=\"checkout($event)\"\n (wish)=\"onWish($event)\"\n [inWishList]=\"inWishList\"\n ></rolatech-course-action>\n }\n </div>\n </div>\n </rolatech-app-container>\n}\n", styles: ["mat-expansion-panel mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: CourseInfoComponent, selector: "rolatech-course-info", inputs: ["course", "instructor", "username"] }, { kind: "component", type: CourseSectionsComponent, selector: "rolatech-course-sections", inputs: ["purchased", "sections"], outputs: ["section", "checkout"] }, { kind: "component", type: CourseScheduleComponent, selector: "rolatech-course-schedule", inputs: ["schedule"] }, { kind: "component", type: CourseDetailsComponent, selector: "rolatech-course-details", inputs: ["details", "instructor", "username"] }, { kind: "component", type: CourseMediaComponent, selector: "rolatech-course-media", inputs: ["media", "min"] }, { kind: "component", type: CoursePricingComponent, selector: "rolatech-course-pricing", inputs: ["pricing"] }, { kind: "component", type: CourseActionComponent, selector: "rolatech-course-action", inputs: ["course", "inWishList"], outputs: ["cart", "wish", "checkout"] }, { kind: "component", type: CommentsComponent, selector: "rolatech-comments", inputs: ["itemId"] }, { kind: "component", type: AppContainerComponent, selector: "rolatech-app-container" }] }); }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
125
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: CourseDetailComponent, isStandalone: true, selector: "rolatech-course-detail", usesInheritance: true, ngImport: i0, template: "@if (course) {\n <rolatech-app-container>\n <div class=\"flex flex-col-reverse gap-2 sm:flex-row md:flex-row w-full justify-between\">\n <div class=\"sm:w-3/4\">\n <rolatech-course-info [course]=\"course\" [instructor]=\"instructorName\" [username]=\"username\"> </rolatech-course-info>\n <rolatech-course-sections\n [sections]=\"sections\"\n (section)=\"onSection($event)\"\n (checkout)=\"checkout($event)\"\n [purchased]=\"purchased\"\n ></rolatech-course-sections>\n <rolatech-course-schedule [schedule]=\"course.schedule\"></rolatech-course-schedule>\n <rolatech-course-details [details]=\"course.details\"></rolatech-course-details>\n <rolatech-comments [itemId]=\"course.id\"></rolatech-comments>\n </div>\n <div>\n <!-- <rolatech-course-media [min]=\"!purchased\" [media]=\"course.media\" [min]=\"true\"></rolatech-course-media> -->\n <rolatech-course-media [media]=\"course.media\" [min]=\"true\"></rolatech-course-media>\n @if (!purchased) {\n <rolatech-course-pricing [pricing]=\"course.pricing\"></rolatech-course-pricing>\n <rolatech-course-action\n [course]=\"course\"\n (checkout)=\"checkout($event)\"\n (wish)=\"onWish($event)\"\n [inWishList]=\"inWishList\"\n ></rolatech-course-action>\n }\n </div>\n </div>\n </rolatech-app-container>\n}\n", styles: ["mat-expansion-panel mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: CourseInfoComponent, selector: "rolatech-course-info", inputs: ["course", "instructor", "username"] }, { kind: "component", type: CourseSectionsComponent, selector: "rolatech-course-sections", inputs: ["purchased", "sections"], outputs: ["section", "checkout"] }, { kind: "component", type: CourseScheduleComponent, selector: "rolatech-course-schedule", inputs: ["schedule"] }, { kind: "component", type: CourseDetailsComponent, selector: "rolatech-course-details", inputs: ["details", "instructor", "username"] }, { kind: "component", type: CourseMediaComponent, selector: "rolatech-course-media", inputs: ["media", "min"] }, { kind: "component", type: CoursePricingComponent, selector: "rolatech-course-pricing", inputs: ["pricing"] }, { kind: "component", type: CourseActionComponent, selector: "rolatech-course-action", inputs: ["course", "inWishList"], outputs: ["cart", "wish", "checkout"] }, { kind: "component", type: CommentsComponent, selector: "rolatech-comments", inputs: ["itemId"] }, { kind: "component", type: AppContainerComponent, selector: "rolatech-app-container" }] }); }
140
126
  }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseDetailComponent, decorators: [{
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseDetailComponent, decorators: [{
142
128
  type: Component,
143
129
  args: [{ standalone: true, imports: [
144
130
  AngularCommonModule,
@@ -153,5 +139,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImpor
153
139
  CommentsComponent,
154
140
  AppContainerComponent,
155
141
  ], selector: 'rolatech-course-detail', template: "@if (course) {\n <rolatech-app-container>\n <div class=\"flex flex-col-reverse gap-2 sm:flex-row md:flex-row w-full justify-between\">\n <div class=\"sm:w-3/4\">\n <rolatech-course-info [course]=\"course\" [instructor]=\"instructorName\" [username]=\"username\"> </rolatech-course-info>\n <rolatech-course-sections\n [sections]=\"sections\"\n (section)=\"onSection($event)\"\n (checkout)=\"checkout($event)\"\n [purchased]=\"purchased\"\n ></rolatech-course-sections>\n <rolatech-course-schedule [schedule]=\"course.schedule\"></rolatech-course-schedule>\n <rolatech-course-details [details]=\"course.details\"></rolatech-course-details>\n <rolatech-comments [itemId]=\"course.id\"></rolatech-comments>\n </div>\n <div>\n <!-- <rolatech-course-media [min]=\"!purchased\" [media]=\"course.media\" [min]=\"true\"></rolatech-course-media> -->\n <rolatech-course-media [media]=\"course.media\" [min]=\"true\"></rolatech-course-media>\n @if (!purchased) {\n <rolatech-course-pricing [pricing]=\"course.pricing\"></rolatech-course-pricing>\n <rolatech-course-action\n [course]=\"course\"\n (checkout)=\"checkout($event)\"\n (wish)=\"onWish($event)\"\n [inWishList]=\"inWishList\"\n ></rolatech-course-action>\n }\n </div>\n </div>\n </rolatech-app-container>\n}\n", styles: ["mat-expansion-panel mat-icon{transform:scale(.8)}\n"] }]
156
- }] });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cnNlLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY291cnNlL3NyYy9saWIvcGFnZXMvY291cnNlL2NvdXJzZS1kZXRhaWwvY291cnNlLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY291cnNlL3NyYy9saWIvcGFnZXMvY291cnNlL2NvdXJzZS1kZXRhaWwvY291cnNlLWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQWlCLCtCQUErQixFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUN4RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7QUFvQnhHLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxhQUFhO0lBbkJ4RDs7UUFxQkUsV0FBTSxHQUFRLFlBQVksQ0FBQztRQUMzQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1Qyx5QkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNwRCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGFBQVEsR0FBb0IsRUFBRSxDQUFDO1FBQy9CLFNBQUksR0FBRywrQkFBK0IsQ0FBQztLQXlHeEM7SUF4R0MsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN0QyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsY0FBYyxDQUFDLFFBQWdCO1FBQzdCLCtDQUErQztRQUMvQyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQztZQUNoRCxRQUFRLEVBQUUsUUFBUTtZQUNsQixLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN4QyxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUM7WUFDMUQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3hELElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUMzQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGdCQUFnQixDQUFDLE1BQWM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDdkQsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDL0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLENBQUMsQ0FBTTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3RDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUN0QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzt3QkFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQzVCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZCLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFFBQVEsQ0FBQyxDQUFNO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsbUNBQW1DLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3ZELElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ08sYUFBYTtRQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2xELElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsU0FBUyxDQUFDLEtBQVU7UUFDbEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3RDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO3dCQUNuRCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTs0QkFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO3dCQUM3QixDQUFDO3FCQUNGLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzVELElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzNDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXJIVSxxQkFBcUI7a0dBQXJCLHFCQUFxQix5R0NsQ2xDLHc3Q0ErQkEsNEdEYkksbUJBQW1CLDhCQUNuQix1QkFBdUIsK0JBQ3ZCLG1CQUFtQiwrR0FDbkIsdUJBQXVCLDBJQUN2Qix1QkFBdUIsMkZBQ3ZCLHNCQUFzQixtSEFDdEIsb0JBQW9CLDRGQUNwQixzQkFBc0IseUZBQ3RCLHFCQUFxQiw0SUFDckIsaUJBQWlCLGtGQUNqQixxQkFBcUI7OzJGQU1aLHFCQUFxQjtrQkFuQmpDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQO3dCQUNQLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIscUJBQXFCO3FCQUN0QixZQUNTLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvdXJzZVNlY3Rpb24sIENvdXJzZVNlY3Rpb25MZWN0dXJlQ29udGVudFR5cGUsIENvdXJzZVN0YXR1cyB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ291cnNlU2VjdGlvblNlcnZpY2UsIENvdXJzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgQXV0aFVzZXJTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgQXBwQ29udGFpbmVyQ29tcG9uZW50LCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBWaWV3cG9ydFNjcm9sbGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21tb25Nb2R1bGUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgQ29tbWVudHNDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tZW50JztcbmltcG9ydCB7IENvdXJzZUFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvY291cnNlLWFjdGlvbi9jb3Vyc2UtYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3Vyc2VEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jb3Vyc2UtZGV0YWlscy9jb3Vyc2UtZGV0YWlscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ291cnNlSW5mb0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvY291cnNlLWluZm8vY291cnNlLWluZm8uY29tcG9uZW50JztcbmltcG9ydCB7IENvdXJzZU1lZGlhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jb3Vyc2UtbWVkaWEvY291cnNlLW1lZGlhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3Vyc2VQcmljaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jb3Vyc2UtcHJpY2luZy9jb3Vyc2UtcHJpY2luZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ291cnNlU2NoZWR1bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2NvdXJzZS1zY2hlZHVsZS9jb3Vyc2Utc2NoZWR1bGUuY29tcG9uZW50JztcbmltcG9ydCB7IENvdXJzZVNlY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jb3Vyc2Utc2VjdGlvbnMvY291cnNlLXNlY3Rpb25zLmNvbXBvbmVudCc7XG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFuZ3VsYXJDb21tb25Nb2R1bGUsXG4gICAgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsXG4gICAgQ291cnNlSW5mb0NvbXBvbmVudCxcbiAgICBDb3Vyc2VTZWN0aW9uc0NvbXBvbmVudCxcbiAgICBDb3Vyc2VTY2hlZHVsZUNvbXBvbmVudCxcbiAgICBDb3Vyc2VEZXRhaWxzQ29tcG9uZW50LFxuICAgIENvdXJzZU1lZGlhQ29tcG9uZW50LFxuICAgIENvdXJzZVByaWNpbmdDb21wb25lbnQsXG4gICAgQ291cnNlQWN0aW9uQ29tcG9uZW50LFxuICAgIENvbW1lbnRzQ29tcG9uZW50LFxuICAgIEFwcENvbnRhaW5lckNvbXBvbmVudCxcbiAgXSxcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1jb3Vyc2UtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvdXJzZS1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb3Vyc2UtZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvdXJzZURldGFpbENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb3Vyc2U6IGFueTtcbiAgc3RhdHVzOiBhbnkgPSBDb3Vyc2VTdGF0dXM7XG4gIGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgYXV0aFVzZXJTZXJ2aWNlID0gaW5qZWN0KEF1dGhVc2VyU2VydmljZSk7XG4gIGNvdXJzZVNlcnZpY2UgPSBpbmplY3QoQ291cnNlU2VydmljZSk7XG4gIHZpZXdwb3J0U2Nyb2xsZXIgPSBpbmplY3QoVmlld3BvcnRTY3JvbGxlcik7XG4gIGNvdXJzZVNlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvdXJzZVNlY3Rpb25TZXJ2aWNlKTtcbiAgaW5zdHJ1Y3Rvck5hbWUgPSAnJztcbiAgdXNlcm5hbWUgPSAnJztcbiAgaW5XaXNoTGlzdCA9IGZhbHNlO1xuICBwdXJjaGFzZWQgPSBmYWxzZTtcbiAgc2VjdGlvbnM6IENvdXJzZVNlY3Rpb25bXSA9IFtdO1xuICB0eXBlID0gQ291cnNlU2VjdGlvbkxlY3R1cmVDb250ZW50VHlwZTtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maW5kT25lKCk7XG4gICAgdGhpcy5maW5kU2VjdGlvbnMoKTtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmludHJvc3BlY3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzLmF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICB0aGlzLmZpbmRQdXJjaGFzZWRCeUNvdXJzZUlkKCk7XG4gICAgICAgICAgdGhpcy5maW5kV2lzaGxpc3RCeSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHNjcm9sbFRvQW5jaG9yKGFuY2hvcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2V0T2Zmc2V0KFsxMDAsIDEwMF0pO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFuY2hvcklkKT8uc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgYmxvY2s6ICdzdGFydCcsXG4gICAgICBpbmxpbmU6ICduZWFyZXN0JyxcbiAgICB9KTtcbiAgfVxuICBmaW5kT25lKCkge1xuICAgIHRoaXMuY291cnNlU2VydmljZS5nZXQodGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNvdXJzZSA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLmZpbmRVc2VyQmFzZUluZm8odGhpcy5jb3Vyc2UuaW5zdHJ1Y3RvcklkKTtcbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUoYCR7dGhpcy5jb3Vyc2UubmFtZX0gLSDmi7zlsI/or75gKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgZmluZFNlY3Rpb25zKCkge1xuICAgIHRoaXMuY291cnNlU2VjdGlvblNlcnZpY2UuZmluZFNlY3Rpb25zKHRoaXMuaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc2VjdGlvbnMgPSByZXMuZGF0YTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgZmluZFVzZXJCYXNlSW5mbyh1c2VySWQ6IHN0cmluZykge1xuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLmdldFB1YmxpY1VzZXJJbmZvKHVzZXJJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5pbnN0cnVjdG9yTmFtZSA9IHJlcy5uYW1lO1xuICAgICAgICB0aGlzLnVzZXJuYW1lID0gcmVzLnVzZXJuYW1lO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBvbldpc2goZTogYW55KSB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5pbnRyb3NwZWN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcy5hdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaW5XaXNoTGlzdCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tV2lzaGxpc3QoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hZGRUb1dpc2hsaXN0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ+ivt+WFiOeZu+W9lScpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBjaGVja291dChlOiBhbnkpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvY2FydHMvY2hlY2tvdXQvZXhwcmVzcy9jb3Vyc2VzLyR7dGhpcy5pZH1gKTtcbiAgfVxuICBwcml2YXRlIHJlbW92ZUZyb21XaXNobGlzdCgpIHtcbiAgICB0aGlzLmNvdXJzZVNlcnZpY2UucmVtb3ZlRnJvbVdpc2hsaXN0KHRoaXMuaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuaW5XaXNoTGlzdCA9IGZhbHNlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGFkZFRvV2lzaGxpc3QoKSB7XG4gICAgdGhpcy5jb3Vyc2VTZXJ2aWNlLmFkZFRvV2lzaGxpc3QodGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5pbldpc2hMaXN0ID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25TZWN0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB7IHNlY3Rpb24sIGxlY3R1cmUgfSA9IGV2ZW50O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2NvdXJzZXMnLCB0aGlzLmNvdXJzZS5pZCwgJ3NlY3Rpb25zJywgc2VjdGlvbi5pZCwgJ2xlY3R1cmVzJywgbGVjdHVyZS5pZF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kV2lzaGxpc3RCeSgpIHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmludHJvc3BlY3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzLmF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICB0aGlzLmNvdXJzZVNlcnZpY2UuZmluZFdpc2hsaXN0QnkodGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmluV2lzaExpc3QgPSByZXMuZGF0YTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgZmluZFB1cmNoYXNlZEJ5Q291cnNlSWQoKSB7XG4gICAgdGhpcy5jb3Vyc2VTZXJ2aWNlLmZpbmRQdXJjaGFzZWRCeUNvdXJzZUlkKHRoaXMuaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5wdXJjaGFzZWQgPSByZXMuZGF0YSA/IHRydWUgOiBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIkBpZiAoY291cnNlKSB7XG4gIDxyb2xhdGVjaC1hcHAtY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sLXJldmVyc2UgZ2FwLTIgc206ZmxleC1yb3cgbWQ6ZmxleC1yb3cgdy1mdWxsIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNtOnctMy80XCI+XG4gICAgICAgIDxyb2xhdGVjaC1jb3Vyc2UtaW5mbyBbY291cnNlXT1cImNvdXJzZVwiIFtpbnN0cnVjdG9yXT1cImluc3RydWN0b3JOYW1lXCIgW3VzZXJuYW1lXT1cInVzZXJuYW1lXCI+IDwvcm9sYXRlY2gtY291cnNlLWluZm8+XG4gICAgICAgIDxyb2xhdGVjaC1jb3Vyc2Utc2VjdGlvbnNcbiAgICAgICAgICBbc2VjdGlvbnNdPVwic2VjdGlvbnNcIlxuICAgICAgICAgIChzZWN0aW9uKT1cIm9uU2VjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2hlY2tvdXQpPVwiY2hlY2tvdXQoJGV2ZW50KVwiXG4gICAgICAgICAgW3B1cmNoYXNlZF09XCJwdXJjaGFzZWRcIlxuICAgICAgICA+PC9yb2xhdGVjaC1jb3Vyc2Utc2VjdGlvbnM+XG4gICAgICAgIDxyb2xhdGVjaC1jb3Vyc2Utc2NoZWR1bGUgW3NjaGVkdWxlXT1cImNvdXJzZS5zY2hlZHVsZVwiPjwvcm9sYXRlY2gtY291cnNlLXNjaGVkdWxlPlxuICAgICAgICA8cm9sYXRlY2gtY291cnNlLWRldGFpbHMgW2RldGFpbHNdPVwiY291cnNlLmRldGFpbHNcIj48L3JvbGF0ZWNoLWNvdXJzZS1kZXRhaWxzPlxuICAgICAgICA8cm9sYXRlY2gtY29tbWVudHMgW2l0ZW1JZF09XCJjb3Vyc2UuaWRcIj48L3JvbGF0ZWNoLWNvbW1lbnRzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8IS0tIDxyb2xhdGVjaC1jb3Vyc2UtbWVkaWEgW21pbl09XCIhcHVyY2hhc2VkXCIgW21lZGlhXT1cImNvdXJzZS5tZWRpYVwiIFttaW5dPVwidHJ1ZVwiPjwvcm9sYXRlY2gtY291cnNlLW1lZGlhPiAtLT5cbiAgICAgICAgPHJvbGF0ZWNoLWNvdXJzZS1tZWRpYSBbbWVkaWFdPVwiY291cnNlLm1lZGlhXCIgW21pbl09XCJ0cnVlXCI+PC9yb2xhdGVjaC1jb3Vyc2UtbWVkaWE+XG4gICAgICAgIEBpZiAoIXB1cmNoYXNlZCkge1xuICAgICAgICAgIDxyb2xhdGVjaC1jb3Vyc2UtcHJpY2luZyBbcHJpY2luZ109XCJjb3Vyc2UucHJpY2luZ1wiPjwvcm9sYXRlY2gtY291cnNlLXByaWNpbmc+XG4gICAgICAgICAgPHJvbGF0ZWNoLWNvdXJzZS1hY3Rpb25cbiAgICAgICAgICAgIFtjb3Vyc2VdPVwiY291cnNlXCJcbiAgICAgICAgICAgIChjaGVja291dCk9XCJjaGVja291dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh3aXNoKT1cIm9uV2lzaCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtpbldpc2hMaXN0XT1cImluV2lzaExpc3RcIlxuICAgICAgICAgID48L3JvbGF0ZWNoLWNvdXJzZS1hY3Rpb24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3JvbGF0ZWNoLWFwcC1jb250YWluZXI+XG59XG4iXX0=
142
+ }], ctorParameters: () => [] });
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cnNlLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY291cnNlL3NyYy9saWIvcGFnZXMvY291cnNlL2NvdXJzZS1kZXRhaWwvY291cnNlLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY291cnNlL3NyYy9saWIvcGFnZXMvY291cnNlL2NvdXJzZS1kZXRhaWwvY291cnNlLWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFpQiwrQkFBK0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDckcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFv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QXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIscUJBQXFCO3FCQUN0QixZQUNTLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ291cnNlU2VjdGlvbiwgQ291cnNlU2VjdGlvbkxlY3R1cmVDb250ZW50VHlwZSwgQ291cnNlU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb3Vyc2VTZWN0aW9uU2VydmljZSwgQ291cnNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBBdXRoVXNlclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1hdXRoJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBBcHBDb250YWluZXJDb21wb25lbnQsIEJhc2VDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IFZpZXdwb3J0U2Nyb2xsZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQW5ndWxhckNvbW1vbk1vZHVsZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBDb21tZW50c0NvbXBvbmVudCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1lbnQnO1xuaW1wb3J0IHsgQ291cnNlQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jb3Vyc2UtYWN0aW9uL2NvdXJzZS1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENvdXJzZURldGFpbHNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2NvdXJzZS1kZXRhaWxzL2NvdXJzZS1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3Vyc2VJbmZvQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jb3Vyc2UtaW5mby9jb3Vyc2UtaW5mby5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ291cnNlTWVkaWFDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2NvdXJzZS1tZWRpYS9jb3Vyc2UtbWVkaWEuY29tcG9uZW50JztcbmltcG9ydCB7IENvdXJzZVByaWNpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2NvdXJzZS1wcmljaW5nL2NvdXJzZS1wcmljaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3Vyc2VTY2hlZHVsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvY291cnNlLXNjaGVkdWxlL2NvdXJzZS1zY2hlZHVsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ291cnNlU2VjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2NvdXJzZS1zZWN0aW9ucy9jb3Vyc2Utc2VjdGlvbnMuY29tcG9uZW50JztcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQW5ndWxhckNvbW1vbk1vZHVsZSxcbiAgICBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSxcbiAgICBDb3Vyc2VJbmZvQ29tcG9uZW50LFxuICAgIENvdXJzZVNlY3Rpb25zQ29tcG9uZW50LFxuICAgIENvdXJzZVNjaGVkdWxlQ29tcG9uZW50LFxuICAgIENvdXJzZURldGFpbHNDb21wb25lbnQsXG4gICAgQ291cnNlTWVkaWFDb21wb25lbnQsXG4gICAgQ291cnNlUHJpY2luZ0NvbXBvbmVudCxcbiAgICBDb3Vyc2VBY3Rpb25Db21wb25lbnQsXG4gICAgQ29tbWVudHNDb21wb25lbnQsXG4gICAgQXBwQ29udGFpbmVyQ29tcG9uZW50LFxuICBdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWNvdXJzZS1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY291cnNlLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvdXJzZS1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ291cnNlRGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvdXJzZTogYW55O1xuICBzdGF0dXM6IGFueSA9IENvdXJzZVN0YXR1cztcbiAgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBhdXRoVXNlclNlcnZpY2UgPSBpbmplY3QoQXV0aFVzZXJTZXJ2aWNlKTtcbiAgY291cnNlU2VydmljZSA9IGluamVjdChDb3Vyc2VTZXJ2aWNlKTtcbiAgdmlld3BvcnRTY3JvbGxlciA9IGluamVjdChWaWV3cG9ydFNjcm9sbGVyKTtcbiAgY291cnNlU2VjdGlvblNlcnZpY2UgPSBpbmplY3QoQ291cnNlU2VjdGlvblNlcnZpY2UpO1xuICBhdXRoZW50aWNhdGVkID0gdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkO1xuICBpbnN0cnVjdG9yTmFtZSA9ICcnO1xuICB1c2VybmFtZSA9ICcnO1xuICBpbldpc2hMaXN0ID0gZmFsc2U7XG4gIHB1cmNoYXNlZCA9IGZhbHNlO1xuICBzZWN0aW9uczogQ291cnNlU2VjdGlvbltdID0gW107XG4gIHR5cGUgPSBDb3Vyc2VTZWN0aW9uTGVjdHVyZUNvbnRlbnRUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmF1dGhlbnRpY2F0ZWQoKSkge1xuICAgICAgICB0aGlzLmZpbmRQdXJjaGFzZWRCeUNvdXJzZUlkKCk7XG4gICAgICAgIHRoaXMuZmluZFdpc2hsaXN0QnkoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbmRPbmUoKTtcbiAgICB0aGlzLmZpbmRTZWN0aW9ucygpO1xuICB9XG4gIHNjcm9sbFRvQW5jaG9yKGFuY2hvcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2V0T2Zmc2V0KFsxMDAsIDEwMF0pO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFuY2hvcklkKT8uc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgYmxvY2s6ICdzdGFydCcsXG4gICAgICBpbmxpbmU6ICduZWFyZXN0JyxcbiAgICB9KTtcbiAgfVxuICBmaW5kT25lKCkge1xuICAgIHRoaXMuY291cnNlU2VydmljZS5nZXQodGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNvdXJzZSA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLmZpbmRVc2VyQmFzZUluZm8odGhpcy5jb3Vyc2UuaW5zdHJ1Y3RvcklkKTtcbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUoYCR7dGhpcy5jb3Vyc2UubmFtZX0gLSDmi7zlsI/or75gKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgZmluZFNlY3Rpb25zKCkge1xuICAgIHRoaXMuY291cnNlU2VjdGlvblNlcnZpY2UuZmluZFNlY3Rpb25zKHRoaXMuaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc2VjdGlvbnMgPSByZXMuZGF0YTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgZmluZFVzZXJCYXNlSW5mbyh1c2VySWQ6IHN0cmluZykge1xuICAgIHRoaXMuYXV0aFVzZXJTZXJ2aWNlLmdldFB1YmxpY1VzZXJJbmZvKHVzZXJJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5pbnN0cnVjdG9yTmFtZSA9IHJlcy5uYW1lO1xuICAgICAgICB0aGlzLnVzZXJuYW1lID0gcmVzLnVzZXJuYW1lO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBvbldpc2goZTogYW55KSB7XG4gICAgaWYgKHRoaXMuYXV0aGVudGljYXRlZCgpKSB7XG4gICAgICBpZiAodGhpcy5pbldpc2hMaXN0KSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRnJvbVdpc2hsaXN0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFkZFRvV2lzaGxpc3QoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3Blbign6K+35YWI55m75b2VJyk7XG4gICAgfVxuICB9XG4gIGNoZWNrb3V0KGU6IGFueSkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9jYXJ0cy9jaGVja291dC9leHByZXNzL2NvdXJzZXMvJHt0aGlzLmlkfWApO1xuICB9XG4gIHByaXZhdGUgcmVtb3ZlRnJvbVdpc2hsaXN0KCkge1xuICAgIHRoaXMuY291cnNlU2VydmljZS5yZW1vdmVGcm9tV2lzaGxpc3QodGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5pbldpc2hMaXN0ID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgYWRkVG9XaXNobGlzdCgpIHtcbiAgICB0aGlzLmNvdXJzZVNlcnZpY2UuYWRkVG9XaXNobGlzdCh0aGlzLmlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmluV2lzaExpc3QgPSB0cnVlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBvblNlY3Rpb24oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc2VjdGlvbiwgbGVjdHVyZSB9ID0gZXZlbnQ7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY291cnNlcycsIHRoaXMuY291cnNlLmlkLCAnc2VjdGlvbnMnLCBzZWN0aW9uLmlkLCAnbGVjdHVyZXMnLCBsZWN0dXJlLmlkXSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRXaXNobGlzdEJ5KCkge1xuICAgIHRoaXMuY291cnNlU2VydmljZS5maW5kV2lzaGxpc3RCeSh0aGlzLmlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaW5XaXNoTGlzdCA9IHJlcy5kYXRhO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBmaW5kUHVyY2hhc2VkQnlDb3Vyc2VJZCgpIHtcbiAgICB0aGlzLmNvdXJzZVNlcnZpY2UuZmluZFB1cmNoYXNlZEJ5Q291cnNlSWQodGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnB1cmNoYXNlZCA9IHJlcy5kYXRhID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiQGlmIChjb3Vyc2UpIHtcbiAgPHJvbGF0ZWNoLWFwcC1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wtcmV2ZXJzZSBnYXAtMiBzbTpmbGV4LXJvdyBtZDpmbGV4LXJvdyB3LWZ1bGwganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic206dy0zLzRcIj5cbiAgICAgICAgPHJvbGF0ZWNoLWNvdXJzZS1pbmZvIFtjb3Vyc2VdPVwiY291cnNlXCIgW2luc3RydWN0b3JdPVwiaW5zdHJ1Y3Rvck5hbWVcIiBbdXNlcm5hbWVdPVwidXNlcm5hbWVcIj4gPC9yb2xhdGVjaC1jb3Vyc2UtaW5mbz5cbiAgICAgICAgPHJvbGF0ZWNoLWNvdXJzZS1zZWN0aW9uc1xuICAgICAgICAgIFtzZWN0aW9uc109XCJzZWN0aW9uc1wiXG4gICAgICAgICAgKHNlY3Rpb24pPVwib25TZWN0aW9uKCRldmVudClcIlxuICAgICAgICAgIChjaGVja291dCk9XCJjaGVja291dCgkZXZlbnQpXCJcbiAgICAgICAgICBbcHVyY2hhc2VkXT1cInB1cmNoYXNlZFwiXG4gICAgICAgID48L3JvbGF0ZWNoLWNvdXJzZS1zZWN0aW9ucz5cbiAgICAgICAgPHJvbGF0ZWNoLWNvdXJzZS1zY2hlZHVsZSBbc2NoZWR1bGVdPVwiY291cnNlLnNjaGVkdWxlXCI+PC9yb2xhdGVjaC1jb3Vyc2Utc2NoZWR1bGU+XG4gICAgICAgIDxyb2xhdGVjaC1jb3Vyc2UtZGV0YWlscyBbZGV0YWlsc109XCJjb3Vyc2UuZGV0YWlsc1wiPjwvcm9sYXRlY2gtY291cnNlLWRldGFpbHM+XG4gICAgICAgIDxyb2xhdGVjaC1jb21tZW50cyBbaXRlbUlkXT1cImNvdXJzZS5pZFwiPjwvcm9sYXRlY2gtY29tbWVudHM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDwhLS0gPHJvbGF0ZWNoLWNvdXJzZS1tZWRpYSBbbWluXT1cIiFwdXJjaGFzZWRcIiBbbWVkaWFdPVwiY291cnNlLm1lZGlhXCIgW21pbl09XCJ0cnVlXCI+PC9yb2xhdGVjaC1jb3Vyc2UtbWVkaWE+IC0tPlxuICAgICAgICA8cm9sYXRlY2gtY291cnNlLW1lZGlhIFttZWRpYV09XCJjb3Vyc2UubWVkaWFcIiBbbWluXT1cInRydWVcIj48L3JvbGF0ZWNoLWNvdXJzZS1tZWRpYT5cbiAgICAgICAgQGlmICghcHVyY2hhc2VkKSB7XG4gICAgICAgICAgPHJvbGF0ZWNoLWNvdXJzZS1wcmljaW5nIFtwcmljaW5nXT1cImNvdXJzZS5wcmljaW5nXCI+PC9yb2xhdGVjaC1jb3Vyc2UtcHJpY2luZz5cbiAgICAgICAgICA8cm9sYXRlY2gtY291cnNlLWFjdGlvblxuICAgICAgICAgICAgW2NvdXJzZV09XCJjb3Vyc2VcIlxuICAgICAgICAgICAgKGNoZWNrb3V0KT1cImNoZWNrb3V0KCRldmVudClcIlxuICAgICAgICAgICAgKHdpc2gpPVwib25XaXNoKCRldmVudClcIlxuICAgICAgICAgICAgW2luV2lzaExpc3RdPVwiaW5XaXNoTGlzdFwiXG4gICAgICAgICAgPjwvcm9sYXRlY2gtY291cnNlLWFjdGlvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvcm9sYXRlY2gtYXBwLWNvbnRhaW5lcj5cbn1cbiJdfQ==
@@ -43,10 +43,10 @@ export class CourseIndexComponent extends BaseComponent {
43
43
  },
44
44
  });
45
45
  }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseIndexComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
47
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: CourseIndexComponent, isStandalone: true, selector: "rolatech-course-index", usesInheritance: true, ngImport: i0, template: "<div class=\"min-w-[320px] max-w-[1120px] m-auto\">\n <div class=\"p-3 hidden sm:block text-2xl font-medium\">\u5168\u90E8\u8BFE\u7A0B</div>\n @if (loading) {\n @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <div class=\"flex flex-row animate-pulse mt-3 mr-4 cursor-pointer w-full\">\n <div class=\"h-fit w-2/5 sm:w-1/4 aspect-video bg-gray-200 rounded-lg\"></div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-slate-200 rounded col-span-2\"></div>\n <div class=\"h-2 bg-slate-200 rounded col-span-1\"></div>\n <div class=\"h-2 bg-slate-200 rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-slate-200 rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n @for (item of courses; track $index) {\n <div\n class=\"py-2 cursor-pointer min-w-[80%] md:min-w-[25%] sm:min-w-[33%] hover:bg-gray-100\"\n [routerLink]=\"['./', item.id]\"\n >\n <rolatech-course-item [course]=\"item\"></rolatech-course-item>\n </div>\n }\n }\n</div>\n", styles: ["img:before{border-radius:12px}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: CourseItemComponent, selector: "rolatech-course-item", inputs: ["course", "row"] }] }); }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseIndexComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: CourseIndexComponent, isStandalone: true, selector: "rolatech-course-index", usesInheritance: true, ngImport: i0, template: "<div class=\"min-w-[320px] max-w-[1120px] m-auto\">\n <div class=\"p-3 hidden sm:block text-2xl font-medium\">\u5168\u90E8\u8BFE\u7A0B</div>\n @if (loading) {\n @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <div class=\"flex flex-row animate-pulse mt-3 mr-4 cursor-pointer w-full\">\n <div class=\"h-fit w-2/5 sm:w-1/4 aspect-video bg-gray-200 rounded-lg\"></div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-slate-200 rounded col-span-2\"></div>\n <div class=\"h-2 bg-slate-200 rounded col-span-1\"></div>\n <div class=\"h-2 bg-slate-200 rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-slate-200 rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n @for (item of courses; track $index) {\n <div\n class=\"py-2 cursor-pointer min-w-[80%] md:min-w-[25%] sm:min-w-[33%] hover:bg-gray-100\"\n [routerLink]=\"['./', item.id]\"\n >\n <rolatech-course-item [course]=\"item\"></rolatech-course-item>\n </div>\n }\n }\n</div>\n", styles: ["img:before{border-radius:12px}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: CourseItemComponent, selector: "rolatech-course-item", inputs: ["course", "row"] }] }); }
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseIndexComponent, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseIndexComponent, decorators: [{
50
50
  type: Component,
51
51
  args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, CourseItemComponent], selector: 'rolatech-course-index', template: "<div class=\"min-w-[320px] max-w-[1120px] m-auto\">\n <div class=\"p-3 hidden sm:block text-2xl font-medium\">\u5168\u90E8\u8BFE\u7A0B</div>\n @if (loading) {\n @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <div class=\"flex flex-row animate-pulse mt-3 mr-4 cursor-pointer w-full\">\n <div class=\"h-fit w-2/5 sm:w-1/4 aspect-video bg-gray-200 rounded-lg\"></div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-slate-200 rounded col-span-2\"></div>\n <div class=\"h-2 bg-slate-200 rounded col-span-1\"></div>\n <div class=\"h-2 bg-slate-200 rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-slate-200 rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n @for (item of courses; track $index) {\n <div\n class=\"py-2 cursor-pointer min-w-[80%] md:min-w-[25%] sm:min-w-[33%] hover:bg-gray-100\"\n [routerLink]=\"['./', item.id]\"\n >\n <rolatech-course-item [course]=\"item\"></rolatech-course-item>\n </div>\n }\n }\n</div>\n", styles: ["img:before{border-radius:12px}\n"] }]
52
52
  }] });
@@ -39,10 +39,10 @@ export class CourseLayoutComponent extends BaseComponent {
39
39
  }
40
40
  }
41
41
  nextCategory() { }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: CourseLayoutComponent, isStandalone: true, selector: "rolatech-course-layout", usesInheritance: true, ngImport: i0, template: "@if (categories) {\n <rolatech-app-container>\n <div class=\"flex flex-col sm:flex-row min-w-[320px] max-w-[1280px] m-auto\">\n <div class=\"h-14 sm:h-auto min-w-[256px] sm:py-3\">\n <div class=\"hidden sm:block text-2xl font-medium p-3\">\u5206\u7C7B</div>\n <div\n class=\"flex flex-row sm:flex-col sm:h-full items-center sm:items-start h-14 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <a\n class=\"cursor-pointer h-8 sm:hover:bg-gray-200 hover:rounded flex items-center sm:mb-1\"\n routerLinkActive=\"active\"\n routerLink=\"/courses\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md sm:text-lg\">\u5168\u90E8</span>\n </a>\n @for (category of categories; track category; let index = $index) {\n <a\n class=\"cursor-pointer h-8 sm:hover:bg-gray-200 hover:rounded flex items-center sm:mb-1\"\n routerLinkActive=\"active\"\n [routerLink]=\"['../courses/categories/', category.id]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md sm:text-lg\">{{ category.name }}</span>\n </a>\n }\n </div>\n </div>\n <div class=\"w-full sm:py-3\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </rolatech-app-container>\n}\n", styles: [".active{border-radius:8px;color:#ff4500}@media (max-width: 600px){.active{border-radius:8px;background-color:#303030;color:#fff}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: AppContainerComponent, selector: "rolatech-app-container" }] }); }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: CourseLayoutComponent, isStandalone: true, selector: "rolatech-course-layout", usesInheritance: true, ngImport: i0, template: "@if (categories) {\n <rolatech-app-container>\n <div class=\"flex flex-col sm:flex-row min-w-[320px] max-w-[1280px] m-auto\">\n <div class=\"h-14 sm:h-auto min-w-[256px] sm:py-3\">\n <div class=\"hidden sm:block text-2xl font-medium p-3\">\u5206\u7C7B</div>\n <div\n class=\"flex flex-row sm:flex-col sm:h-full items-center sm:items-start h-14 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <a\n class=\"cursor-pointer h-8 sm:hover:bg-gray-200 hover:rounded flex items-center sm:mb-1\"\n routerLinkActive=\"active\"\n routerLink=\"/courses\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md sm:text-lg\">\u5168\u90E8</span>\n </a>\n @for (category of categories; track category; let index = $index) {\n <a\n class=\"cursor-pointer h-8 sm:hover:bg-gray-200 hover:rounded flex items-center sm:mb-1\"\n routerLinkActive=\"active\"\n [routerLink]=\"['../courses/categories/', category.id]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md sm:text-lg\">{{ category.name }}</span>\n </a>\n }\n </div>\n </div>\n <div class=\"w-full sm:py-3\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </rolatech-app-container>\n}\n", styles: [".active{border-radius:8px;color:#ff4500}@media (max-width: 600px){.active{border-radius:8px;background-color:#303030;color:#fff}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: AppContainerComponent, selector: "rolatech-app-container" }] }); }
44
44
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseLayoutComponent, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseLayoutComponent, decorators: [{
46
46
  type: Component,
47
47
  args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule, AppContainerComponent], selector: 'rolatech-course-layout', template: "@if (categories) {\n <rolatech-app-container>\n <div class=\"flex flex-col sm:flex-row min-w-[320px] max-w-[1280px] m-auto\">\n <div class=\"h-14 sm:h-auto min-w-[256px] sm:py-3\">\n <div class=\"hidden sm:block text-2xl font-medium p-3\">\u5206\u7C7B</div>\n <div\n class=\"flex flex-row sm:flex-col sm:h-full items-center sm:items-start h-14 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <a\n class=\"cursor-pointer h-8 sm:hover:bg-gray-200 hover:rounded flex items-center sm:mb-1\"\n routerLinkActive=\"active\"\n routerLink=\"/courses\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md sm:text-lg\">\u5168\u90E8</span>\n </a>\n @for (category of categories; track category; let index = $index) {\n <a\n class=\"cursor-pointer h-8 sm:hover:bg-gray-200 hover:rounded flex items-center sm:mb-1\"\n routerLinkActive=\"active\"\n [routerLink]=\"['../courses/categories/', category.id]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md sm:text-lg\">{{ category.name }}</span>\n </a>\n }\n </div>\n </div>\n <div class=\"w-full sm:py-3\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </rolatech-app-container>\n}\n", styles: [".active{border-radius:8px;color:#ff4500}@media (max-width: 600px){.active{border-radius:8px;background-color:#303030;color:#fff}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"] }]
48
48
  }] });
@@ -1,5 +1,5 @@
1
1
  import { isPlatformBrowser } from '@angular/common';
2
- import { Component, ElementRef, PLATFORM_ID, inject } from '@angular/core';
2
+ import { Component, ElementRef, PLATFORM_ID, effect, inject } from '@angular/core';
3
3
  import { ActivatedRoute, Router } from '@angular/router';
4
4
  import { CourseSectionService, CourseService } from '../../../services';
5
5
  import { AuthService, AuthUserService } from '@rolatech/angular-auth';
@@ -19,6 +19,7 @@ export class CourseSectionContentComponent {
19
19
  this.authUserService = inject(AuthUserService);
20
20
  this.el = inject(ElementRef);
21
21
  this.platformId = inject(PLATFORM_ID);
22
+ this.authenticated = this.authService.authenticated;
22
23
  this.sections = [];
23
24
  this.courseId = '';
24
25
  this.sectionId = '';
@@ -28,6 +29,11 @@ export class CourseSectionContentComponent {
28
29
  this.instructorAvatar = '';
29
30
  this.instructorUsername = '';
30
31
  this.purchased = false;
32
+ effect(() => {
33
+ if (this.authenticated()) {
34
+ this.findPurchasedByCourseId();
35
+ }
36
+ });
31
37
  }
32
38
  ngOnInit() {
33
39
  this.route.params.subscribe((params) => {
@@ -36,7 +42,6 @@ export class CourseSectionContentComponent {
36
42
  this.lectureId = params['lectureId'];
37
43
  this.findCourse(this.courseId);
38
44
  this.findSections(this.courseId);
39
- this.introspect();
40
45
  });
41
46
  }
42
47
  ngOnDestroy() {
@@ -61,9 +66,6 @@ export class CourseSectionContentComponent {
61
66
  pic: thumbnail,
62
67
  },
63
68
  });
64
- // this.player.on('loadedmetadata', () => {
65
- // console.log('Video duration:', this.player.video.duration);
66
- // });
67
69
  }
68
70
  else {
69
71
  this.player.switchVideo({
@@ -101,15 +103,6 @@ export class CourseSectionContentComponent {
101
103
  },
102
104
  });
103
105
  }
104
- introspect() {
105
- this.authService.introspect().subscribe({
106
- next: (res) => {
107
- if (res.authenticated) {
108
- this.findPurchasedByCourseId();
109
- }
110
- },
111
- });
112
- }
113
106
  findPurchasedByCourseId() {
114
107
  this.courseService.findPurchasedByCourseId(this.courseId).subscribe({
115
108
  next: (res) => {
@@ -124,10 +117,10 @@ export class CourseSectionContentComponent {
124
117
  checkout(e) {
125
118
  this.router.navigateByUrl(`/carts/checkout/express/courses/${this.courseId}`);
126
119
  }
127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseSectionContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: CourseSectionContentComponent, isStandalone: true, selector: "rolatech-course-section-content", ngImport: i0, template: "<div class=\"flex sm:flex-row flex-col justify-between w-full mt-2 sm:mt-4\">\n <div class=\"sm:w-[70%] flex flex-col items-start justify-center px-4 sm:px-6 h-fit\">\n <div id=\"dplayer\" class=\"w-full h-auto aspect-video rounded-xl\"></div>\n <div class=\"py-3 w-full\">\n @if (course) {\n <div class=\"text-xl font-medium py-3\">\n {{ course.name }}\n </div>\n <div>\n <rolatech-course-media-owner-renderer\n [name]=\"instructorName\"\n [avatar]=\"instructorAvatar\"\n [username]=\"instructorUsername\"\n ></rolatech-course-media-owner-renderer>\n </div>\n <div>\n <rolatech-comments [itemId]=\"lectureId\"></rolatech-comments>\n </div>\n }\n </div>\n </div>\n <div class=\"sm:w-[30%] px-4 sm:px-0 sm:pr-6\">\n <rolatech-course-sections\n [sections]=\"sections\"\n [purchased]=\"purchased\"\n (section)=\"onSection($event)\"\n (checkout)=\"checkout($event)\"\n ></rolatech-course-sections>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: CourseSectionsComponent, selector: "rolatech-course-sections", inputs: ["purchased", "sections"], outputs: ["section", "checkout"] }, { kind: "component", type: CourseMediaOwnerRendererComponent, selector: "rolatech-course-media-owner-renderer", inputs: ["name", "avatar", "username"] }, { kind: "component", type: CommentsComponent, selector: "rolatech-comments", inputs: ["itemId"] }] }); }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseSectionContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: CourseSectionContentComponent, isStandalone: true, selector: "rolatech-course-section-content", ngImport: i0, template: "<div class=\"flex sm:flex-row flex-col justify-between w-full mt-2 sm:mt-4\">\n <div class=\"sm:w-[70%] flex flex-col items-start justify-center px-4 sm:px-6 h-fit\">\n <div id=\"dplayer\" class=\"w-full h-auto aspect-video rounded-xl\"></div>\n <div class=\"py-3 w-full\">\n @if (course) {\n <div class=\"text-xl font-medium py-3\">\n {{ course.name }}\n </div>\n <div>\n <rolatech-course-media-owner-renderer\n [name]=\"instructorName\"\n [avatar]=\"instructorAvatar\"\n [username]=\"instructorUsername\"\n ></rolatech-course-media-owner-renderer>\n </div>\n <div>\n <rolatech-comments [itemId]=\"lectureId\"></rolatech-comments>\n </div>\n }\n </div>\n </div>\n <div class=\"sm:w-[30%] px-4 sm:px-0 sm:pr-6\">\n <rolatech-course-sections\n [sections]=\"sections\"\n [purchased]=\"purchased\"\n (section)=\"onSection($event)\"\n (checkout)=\"checkout($event)\"\n ></rolatech-course-sections>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: CourseSectionsComponent, selector: "rolatech-course-sections", inputs: ["purchased", "sections"], outputs: ["section", "checkout"] }, { kind: "component", type: CourseMediaOwnerRendererComponent, selector: "rolatech-course-media-owner-renderer", inputs: ["name", "avatar", "username"] }, { kind: "component", type: CommentsComponent, selector: "rolatech-comments", inputs: ["itemId"] }] }); }
129
122
  }
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseSectionContentComponent, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseSectionContentComponent, decorators: [{
131
124
  type: Component,
132
125
  args: [{ standalone: true, imports: [
133
126
  AngularCommonModule,
@@ -136,5 +129,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImpor
136
129
  CourseMediaOwnerRendererComponent,
137
130
  CommentsComponent,
138
131
  ], selector: 'rolatech-course-section-content', template: "<div class=\"flex sm:flex-row flex-col justify-between w-full mt-2 sm:mt-4\">\n <div class=\"sm:w-[70%] flex flex-col items-start justify-center px-4 sm:px-6 h-fit\">\n <div id=\"dplayer\" class=\"w-full h-auto aspect-video rounded-xl\"></div>\n <div class=\"py-3 w-full\">\n @if (course) {\n <div class=\"text-xl font-medium py-3\">\n {{ course.name }}\n </div>\n <div>\n <rolatech-course-media-owner-renderer\n [name]=\"instructorName\"\n [avatar]=\"instructorAvatar\"\n [username]=\"instructorUsername\"\n ></rolatech-course-media-owner-renderer>\n </div>\n <div>\n <rolatech-comments [itemId]=\"lectureId\"></rolatech-comments>\n </div>\n }\n </div>\n </div>\n <div class=\"sm:w-[30%] px-4 sm:px-0 sm:pr-6\">\n <rolatech-course-sections\n [sections]=\"sections\"\n [purchased]=\"purchased\"\n (section)=\"onSection($event)\"\n (checkout)=\"checkout($event)\"\n ></rolatech-course-sections>\n </div>\n</div>\n" }]
139
- }] });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cnNlLXNlY3Rpb24tY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY291cnNlL3NyYy9saWIvcGFnZXMvY291cnNlL2NvdXJzZS1zZWN0aW9uLWNvbnRlbnQvY291cnNlLXNlY3Rpb24tY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY291cnNlL3NyYy9saWIvcGFnZXMvY291cnNlL2NvdXJzZS1zZWN0aW9uLWNvbnRlbnQvY291cnNlLXNlY3Rpb24tY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQXFCLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1RkFBdUYsQ0FBQztBQUMxSSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7QUFrQnhHLE1BQU0sT0FBTyw2QkFBNkI7SUFiMUM7UUFj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QWEsQ0FBQyxtQ0FBbUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDaEYsQ0FBQzs4R0FwSFUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsMkZDNUIxQyxrakNBOEJBLHlERFpJLG1CQUFtQiw4QkFDbkIsdUJBQXVCLCtCQUN2Qix1QkFBdUIsMElBQ3ZCLGlDQUFpQyx5SEFDakMsaUJBQWlCOzsyRkFNUiw2QkFBNkI7a0JBYnpDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQO3dCQUNQLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLGlDQUFpQzt3QkFDakMsaUJBQWlCO3FCQUNsQixZQUNTLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIFBMQVRGT1JNX0lELCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ291cnNlU2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ291cnNlU2VjdGlvblNlcnZpY2UsIENvdXJzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgQXV0aFVzZXJTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDb21tZW50c0NvbXBvbmVudCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1lbnQnO1xuaW1wb3J0IHsgQ291cnNlTWVkaWFPd25lclJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jb3Vyc2UtbWVkaWEtb3duZXItcmVuZGVyZXIvY291cnNlLW1lZGlhLW93bmVyLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3Vyc2VTZWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvY291cnNlLXNlY3Rpb25zL2NvdXJzZS1zZWN0aW9ucy5jb21wb25lbnQnO1xuXG4vLyBpbXBvcnQgRFBsYXllciBmcm9tICdEUGxheWVyJztcbmRlY2xhcmUgY29uc3QgRFBsYXllcjogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFuZ3VsYXJDb21tb25Nb2R1bGUsXG4gICAgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsXG4gICAgQ291cnNlU2VjdGlvbnNDb21wb25lbnQsXG4gICAgQ291cnNlTWVkaWFPd25lclJlbmRlcmVyQ29tcG9uZW50LFxuICAgIENvbW1lbnRzQ29tcG9uZW50LFxuICBdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWNvdXJzZS1zZWN0aW9uLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY291cnNlLXNlY3Rpb24tY29udGVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvdXJzZS1zZWN0aW9uLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ291cnNlU2VjdGlvbkNvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvdXJzZVNlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvdXJzZVNlY3Rpb25TZXJ2aWNlKTtcbiAgY291cnNlU2VydmljZSA9IGluamVjdChDb3Vyc2VTZXJ2aWNlKTtcbiAgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBhdXRoVXNlclNlcnZpY2UgPSBpbmplY3QoQXV0aFVzZXJTZXJ2aWNlKTtcbiAgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwbGF5ZXI6IGFueTtcbiAgc2VjdGlvbnM6IENvdXJzZVNlY3Rpb25bXSA9IFtdO1xuICBjb3Vyc2VJZCA9ICcnO1xuICBzZWN0aW9uSWQgPSAnJztcbiAgbGVjdHVyZUlkID0gJyc7XG4gIHZpZGVvVXJsOiBhbnkgPSAnJztcbiAgaW5zdHJ1Y3Rvck5hbWUgPSAnJztcbiAgaW5zdHJ1Y3RvckF2YXRhciA9ICcnO1xuICBpbnN0cnVjdG9yVXNlcm5hbWUgPSAnJztcbiAgY291cnNlOiBhbnk7XG4gIHB1cmNoYXNlZCA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmNvdXJzZUlkID0gcGFyYW1zWydpZCddO1xuICAgICAgdGhpcy5zZWN0aW9uSWQgPSBwYXJhbXNbJ3NlY3Rpb25JZCddO1xuICAgICAgdGhpcy5sZWN0dXJlSWQgPSBwYXJhbXNbJ2xlY3R1cmVJZCddO1xuICAgICAgdGhpcy5maW5kQ291cnNlKHRoaXMuY291cnNlSWQpO1xuICAgICAgdGhpcy5maW5kU2VjdGlvbnModGhpcy5jb3Vyc2VJZCk7XG4gICAgICB0aGlzLmludHJvc3BlY3QoKTtcbiAgICB9KTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wbGF5ZXIpIHtcbiAgICAgIHRoaXMucGxheWVyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge31cbiAgaW5pdFBsYXllcih1cmw6IHN0cmluZywgdGh1bWJuYWlsPzogc3RyaW5nKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vICdodHRwczovL2Nvcy12aWRlby0xMjU4MzQ0Njk5LmNvcy5hcC1ndWFuZ3pob3UudGVuY2VudGNvcy5jbi90ZXN0Lm1wNCcsXG4gICAgaWYgKCF0aGlzLnBsYXllcikge1xuICAgICAgY29uc3QgcGxheWVyQ29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkcGxheWVyJyk7XG4gICAgICB0aGlzLnBsYXllciA9IG5ldyBEUGxheWVyKHtcbiAgICAgICAgY29udGFpbmVyOiBwbGF5ZXJDb250YWluZXIsXG4gICAgICAgIHNjcmVlbnNob3Q6IHRydWUsXG4gICAgICAgIHByZWxvYWQ6ICdtZXRhZGF0YScsXG4gICAgICAgIHZpZGVvOiB7XG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgcGljOiB0aHVtYm5haWwsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIC8vIHRoaXMucGxheWVyLm9uKCdsb2FkZWRtZXRhZGF0YScsICgpID0+IHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ1ZpZGVvIGR1cmF0aW9uOicsIHRoaXMucGxheWVyLnZpZGVvLmR1cmF0aW9uKTtcbiAgICAgIC8vIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBsYXllci5zd2l0Y2hWaWRlbyh7XG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBwaWM6IHRodW1ibmFpbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBmaW5kU2VjdGlvbnMoY291cnNlSWQ6IGFueSkge1xuICAgIHRoaXMuY291cnNlU2VjdGlvblNlcnZpY2UuZmluZFNlY3Rpb25zKGNvdXJzZUlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLnNlY3Rpb25zID0gcmVzLmRhdGE7XG4gICAgICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLnNlY3Rpb25zLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5zZWN0aW9uSWQpO1xuICAgICAgICBjb25zdCBsZXRjdHVyZSA9IHNlY3Rpb24/LmxlY3R1cmVzLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5sZWN0dXJlSWQpO1xuICAgICAgICB0aGlzLnZpZGVvVXJsID0gbGV0Y3R1cmU/Lml0ZW0udXJsO1xuICAgICAgICBjb25zdCB0aHVtYm5haWwgPSBsZXRjdHVyZT8uaXRlbS50aHVtYm5haWw7XG5cbiAgICAgICAgdGhpcy5pbml0UGxheWVyKHRoaXMudmlkZW9VcmwsIHRodW1ibmFpbCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGZpbmRDb3Vyc2UoY291cnNlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuY291cnNlU2VydmljZS5nZXQoY291cnNlSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jb3Vyc2UgPSByZXMuZGF0YTtcbiAgICAgICAgdGhpcy5maW5kVXNlckJhc2VJbmZvKHRoaXMuY291cnNlLmluc3RydWN0b3JJZCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGZpbmRVc2VyQmFzZUluZm8odXNlcklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5nZXRQdWJsaWNVc2VySW5mbyh1c2VySWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdHJ1Y3Rvck5hbWUgPSByZXMubmFtZTtcbiAgICAgICAgdGhpcy5pbnN0cnVjdG9yQXZhdGFyID0gcmVzLmF2YXRhcjtcbiAgICAgICAgdGhpcy5pbnN0cnVjdG9yVXNlcm5hbWUgPSByZXMudXNlcm5hbWU7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGludHJvc3BlY3QoKSB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5pbnRyb3NwZWN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcy5hdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgdGhpcy5maW5kUHVyY2hhc2VkQnlDb3Vyc2VJZCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZmluZFB1cmNoYXNlZEJ5Q291cnNlSWQoKSB7XG4gICAgdGhpcy5jb3Vyc2VTZXJ2aWNlLmZpbmRQdXJjaGFzZWRCeUNvdXJzZUlkKHRoaXMuY291cnNlSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5wdXJjaGFzZWQgPSByZXMuZGF0YSA/IHRydWUgOiBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25TZWN0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB7IHNlY3Rpb24sIGxlY3R1cmUgfSA9IGV2ZW50O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2NvdXJzZXMnLCB0aGlzLmNvdXJzZUlkLCAnc2VjdGlvbnMnLCBzZWN0aW9uLmlkLCAnbGVjdHVyZXMnLCBsZWN0dXJlLmlkXSk7XG4gIH1cbiAgY2hlY2tvdXQoZTogYW55KSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2NhcnRzL2NoZWNrb3V0L2V4cHJlc3MvY291cnNlcy8ke3RoaXMuY291cnNlSWR9YCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IHNtOmZsZXgtcm93IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiB3LWZ1bGwgbXQtMiBzbTptdC00XCI+XG4gIDxkaXYgY2xhc3M9XCJzbTp3LVs3MCVdIGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXIgcHgtNCBzbTpweC02IGgtZml0XCI+XG4gICAgPGRpdiBpZD1cImRwbGF5ZXJcIiBjbGFzcz1cInctZnVsbCBoLWF1dG8gYXNwZWN0LXZpZGVvIHJvdW5kZWQteGxcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHktMyB3LWZ1bGxcIj5cbiAgICAgIEBpZiAoY291cnNlKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtbWVkaXVtIHB5LTNcIj5cbiAgICAgICAgICB7eyBjb3Vyc2UubmFtZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8cm9sYXRlY2gtY291cnNlLW1lZGlhLW93bmVyLXJlbmRlcmVyXG4gICAgICAgICAgICBbbmFtZV09XCJpbnN0cnVjdG9yTmFtZVwiXG4gICAgICAgICAgICBbYXZhdGFyXT1cImluc3RydWN0b3JBdmF0YXJcIlxuICAgICAgICAgICAgW3VzZXJuYW1lXT1cImluc3RydWN0b3JVc2VybmFtZVwiXG4gICAgICAgICAgPjwvcm9sYXRlY2gtY291cnNlLW1lZGlhLW93bmVyLXJlbmRlcmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8cm9sYXRlY2gtY29tbWVudHMgW2l0ZW1JZF09XCJsZWN0dXJlSWRcIj48L3JvbGF0ZWNoLWNvbW1lbnRzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzbTp3LVszMCVdIHB4LTQgc206cHgtMCBzbTpwci02XCI+XG4gICAgPHJvbGF0ZWNoLWNvdXJzZS1zZWN0aW9uc1xuICAgICAgW3NlY3Rpb25zXT1cInNlY3Rpb25zXCJcbiAgICAgIFtwdXJjaGFzZWRdPVwicHVyY2hhc2VkXCJcbiAgICAgIChzZWN0aW9uKT1cIm9uU2VjdGlvbigkZXZlbnQpXCJcbiAgICAgIChjaGVja291dCk9XCJjaGVja291dCgkZXZlbnQpXCJcbiAgICA+PC9yb2xhdGVjaC1jb3Vyc2Utc2VjdGlvbnM+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
132
+ }], ctorParameters: () => [] });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cnNlLXNlY3Rpb24tY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY291cnNlL3NyYy9saWIvcGFnZXMvY291cnNlL2NvdXJzZS1zZWN0aW9uLWNvbnRlbnQvY291cnNlLXNlY3Rpb24tY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY291cnNlL3NyYy9saWIvcGFnZXMvY291cnNlL2NvdXJzZS1zZWN0aW9uLWNvbnRlbnQvY291cnNlLXNlY3Rpb24tY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQXFCLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUZBQXVGLENBQUM7QUFDMUksT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0RBQStELENBQUM7O0FBa0J4RyxNQUFNLE9BQU8sNkJBQTZC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QjFDLGtqQ0E4QkEseUREWkksbUJBQW1CLDhCQUNuQix1QkFBdUIsK0JBQ3ZCLHVCQUF1QiwwSUFDdkIsaUNBQWlDLHlIQUNqQyxpQkFBaUI7OzJGQU1SLDZCQUE2QjtrQkFiekMsU0FBUztpQ0FDSSxJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsaUNBQWlDO3dCQUNqQyxpQkFBaUI7cUJBQ2xCLFlBQ1MsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUExBVEZPUk1fSUQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvdXJzZVNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvdXJzZVNlY3Rpb25TZXJ2aWNlLCBDb3Vyc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEF1dGhVc2VyU2VydmljZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWF1dGgnO1xuaW1wb3J0IHsgQW5ndWxhckNvbW1vbk1vZHVsZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29tbWVudHNDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tZW50JztcbmltcG9ydCB7IENvdXJzZU1lZGlhT3duZXJSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvY291cnNlLW1lZGlhLW93bmVyLXJlbmRlcmVyL2NvdXJzZS1tZWRpYS1vd25lci1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ291cnNlU2VjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2NvdXJzZS1zZWN0aW9ucy9jb3Vyc2Utc2VjdGlvbnMuY29tcG9uZW50JztcblxuLy8gaW1wb3J0IERQbGF5ZXIgZnJvbSAnRFBsYXllcic7XG5kZWNsYXJlIGNvbnN0IERQbGF5ZXI6IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBbmd1bGFyQ29tbW9uTW9kdWxlLFxuICAgIEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLFxuICAgIENvdXJzZVNlY3Rpb25zQ29tcG9uZW50LFxuICAgIENvdXJzZU1lZGlhT3duZXJSZW5kZXJlckNvbXBvbmVudCxcbiAgICBDb21tZW50c0NvbXBvbmVudCxcbiAgXSxcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1jb3Vyc2Utc2VjdGlvbi1jb250ZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvdXJzZS1zZWN0aW9uLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb3Vyc2Utc2VjdGlvbi1jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvdXJzZVNlY3Rpb25Db250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb3Vyc2VTZWN0aW9uU2VydmljZSA9IGluamVjdChDb3Vyc2VTZWN0aW9uU2VydmljZSk7XG4gIGNvdXJzZVNlcnZpY2UgPSBpbmplY3QoQ291cnNlU2VydmljZSk7XG4gIGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgYXV0aFVzZXJTZXJ2aWNlID0gaW5qZWN0KEF1dGhVc2VyU2VydmljZSk7XG4gIGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgYXV0aGVudGljYXRlZCA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZDtcbiAgcGxheWVyOiBhbnk7XG4gIHNlY3Rpb25zOiBDb3Vyc2VTZWN0aW9uW10gPSBbXTtcbiAgY291cnNlSWQgPSAnJztcbiAgc2VjdGlvbklkID0gJyc7XG4gIGxlY3R1cmVJZCA9ICcnO1xuICB2aWRlb1VybDogYW55ID0gJyc7XG4gIGluc3RydWN0b3JOYW1lID0gJyc7XG4gIGluc3RydWN0b3JBdmF0YXIgPSAnJztcbiAgaW5zdHJ1Y3RvclVzZXJuYW1lID0gJyc7XG4gIGNvdXJzZTogYW55O1xuICBwdXJjaGFzZWQgPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmF1dGhlbnRpY2F0ZWQoKSkge1xuICAgICAgICB0aGlzLmZpbmRQdXJjaGFzZWRCeUNvdXJzZUlkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMuY291cnNlSWQgPSBwYXJhbXNbJ2lkJ107XG4gICAgICB0aGlzLnNlY3Rpb25JZCA9IHBhcmFtc1snc2VjdGlvbklkJ107XG4gICAgICB0aGlzLmxlY3R1cmVJZCA9IHBhcmFtc1snbGVjdHVyZUlkJ107XG4gICAgICB0aGlzLmZpbmRDb3Vyc2UodGhpcy5jb3Vyc2VJZCk7XG4gICAgICB0aGlzLmZpbmRTZWN0aW9ucyh0aGlzLmNvdXJzZUlkKTtcbiAgICB9KTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wbGF5ZXIpIHtcbiAgICAgIHRoaXMucGxheWVyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge31cbiAgaW5pdFBsYXllcih1cmw6IHN0cmluZywgdGh1bWJuYWlsPzogc3RyaW5nKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vICdodHRwczovL2Nvcy12aWRlby0xMjU4MzQ0Njk5LmNvcy5hcC1ndWFuZ3pob3UudGVuY2VudGNvcy5jbi90ZXN0Lm1wNCcsXG4gICAgaWYgKCF0aGlzLnBsYXllcikge1xuICAgICAgY29uc3QgcGxheWVyQ29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkcGxheWVyJyk7XG4gICAgICB0aGlzLnBsYXllciA9IG5ldyBEUGxheWVyKHtcbiAgICAgICAgY29udGFpbmVyOiBwbGF5ZXJDb250YWluZXIsXG4gICAgICAgIHNjcmVlbnNob3Q6IHRydWUsXG4gICAgICAgIHByZWxvYWQ6ICdtZXRhZGF0YScsXG4gICAgICAgIHZpZGVvOiB7XG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgcGljOiB0aHVtYm5haWwsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wbGF5ZXIuc3dpdGNoVmlkZW8oe1xuICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgcGljOiB0aHVtYm5haWwsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgZmluZFNlY3Rpb25zKGNvdXJzZUlkOiBhbnkpIHtcbiAgICB0aGlzLmNvdXJzZVNlY3Rpb25TZXJ2aWNlLmZpbmRTZWN0aW9ucyhjb3Vyc2VJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5zZWN0aW9ucyA9IHJlcy5kYXRhO1xuICAgICAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5zZWN0aW9ucy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uaWQgPT09IHRoaXMuc2VjdGlvbklkKTtcbiAgICAgICAgY29uc3QgbGV0Y3R1cmUgPSBzZWN0aW9uPy5sZWN0dXJlcy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uaWQgPT09IHRoaXMubGVjdHVyZUlkKTtcbiAgICAgICAgdGhpcy52aWRlb1VybCA9IGxldGN0dXJlPy5pdGVtLnVybDtcbiAgICAgICAgY29uc3QgdGh1bWJuYWlsID0gbGV0Y3R1cmU/Lml0ZW0udGh1bWJuYWlsO1xuXG4gICAgICAgIHRoaXMuaW5pdFBsYXllcih0aGlzLnZpZGVvVXJsLCB0aHVtYm5haWwpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBmaW5kQ291cnNlKGNvdXJzZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvdXJzZVNlcnZpY2UuZ2V0KGNvdXJzZUlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY291cnNlID0gcmVzLmRhdGE7XG4gICAgICAgIHRoaXMuZmluZFVzZXJCYXNlSW5mbyh0aGlzLmNvdXJzZS5pbnN0cnVjdG9ySWQpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBmaW5kVXNlckJhc2VJbmZvKHVzZXJJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5hdXRoVXNlclNlcnZpY2UuZ2V0UHVibGljVXNlckluZm8odXNlcklkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmluc3RydWN0b3JOYW1lID0gcmVzLm5hbWU7XG4gICAgICAgIHRoaXMuaW5zdHJ1Y3RvckF2YXRhciA9IHJlcy5hdmF0YXI7XG4gICAgICAgIHRoaXMuaW5zdHJ1Y3RvclVzZXJuYW1lID0gcmVzLnVzZXJuYW1lO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBmaW5kUHVyY2hhc2VkQnlDb3Vyc2VJZCgpIHtcbiAgICB0aGlzLmNvdXJzZVNlcnZpY2UuZmluZFB1cmNoYXNlZEJ5Q291cnNlSWQodGhpcy5jb3Vyc2VJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnB1cmNoYXNlZCA9IHJlcy5kYXRhID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBvblNlY3Rpb24oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc2VjdGlvbiwgbGVjdHVyZSB9ID0gZXZlbnQ7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY291cnNlcycsIHRoaXMuY291cnNlSWQsICdzZWN0aW9ucycsIHNlY3Rpb24uaWQsICdsZWN0dXJlcycsIGxlY3R1cmUuaWRdKTtcbiAgfVxuICBjaGVja291dChlOiBhbnkpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvY2FydHMvY2hlY2tvdXQvZXhwcmVzcy9jb3Vyc2VzLyR7dGhpcy5jb3Vyc2VJZH1gKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggc206ZmxleC1yb3cgZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIHctZnVsbCBtdC0yIHNtOm10LTRcIj5cbiAgPGRpdiBjbGFzcz1cInNtOnctWzcwJV0gZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBqdXN0aWZ5LWNlbnRlciBweC00IHNtOnB4LTYgaC1maXRcIj5cbiAgICA8ZGl2IGlkPVwiZHBsYXllclwiIGNsYXNzPVwidy1mdWxsIGgtYXV0byBhc3BlY3QtdmlkZW8gcm91bmRlZC14bFwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJweS0zIHctZnVsbFwiPlxuICAgICAgQGlmIChjb3Vyc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteGwgZm9udC1tZWRpdW0gcHktM1wiPlxuICAgICAgICAgIHt7IGNvdXJzZS5uYW1lIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxyb2xhdGVjaC1jb3Vyc2UtbWVkaWEtb3duZXItcmVuZGVyZXJcbiAgICAgICAgICAgIFtuYW1lXT1cImluc3RydWN0b3JOYW1lXCJcbiAgICAgICAgICAgIFthdmF0YXJdPVwiaW5zdHJ1Y3RvckF2YXRhclwiXG4gICAgICAgICAgICBbdXNlcm5hbWVdPVwiaW5zdHJ1Y3RvclVzZXJuYW1lXCJcbiAgICAgICAgICA+PC9yb2xhdGVjaC1jb3Vyc2UtbWVkaWEtb3duZXItcmVuZGVyZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxyb2xhdGVjaC1jb21tZW50cyBbaXRlbUlkXT1cImxlY3R1cmVJZFwiPjwvcm9sYXRlY2gtY29tbWVudHM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNtOnctWzMwJV0gcHgtNCBzbTpweC0wIHNtOnByLTZcIj5cbiAgICA8cm9sYXRlY2gtY291cnNlLXNlY3Rpb25zXG4gICAgICBbc2VjdGlvbnNdPVwic2VjdGlvbnNcIlxuICAgICAgW3B1cmNoYXNlZF09XCJwdXJjaGFzZWRcIlxuICAgICAgKHNlY3Rpb24pPVwib25TZWN0aW9uKCRldmVudClcIlxuICAgICAgKGNoZWNrb3V0KT1cImNoZWNrb3V0KCRldmVudClcIlxuICAgID48L3JvbGF0ZWNoLWNvdXJzZS1zZWN0aW9ucz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -26,10 +26,10 @@ export class CategoryService extends BaseService {
26
26
  withCredentials: true,
27
27
  });
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CategoryService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
30
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CategoryService, providedIn: 'root' }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CategoryService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CategoryService, providedIn: 'root' }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CategoryService, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CategoryService, decorators: [{
33
33
  type: Injectable,
34
34
  args: [{
35
35
  providedIn: 'root',
@@ -14,10 +14,10 @@ export class CourseSectionService extends BaseService {
14
14
  withCredentials: true,
15
15
  });
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseSectionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
18
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseSectionService, providedIn: 'root' }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseSectionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
18
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseSectionService, providedIn: 'root' }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseSectionService, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseSectionService, decorators: [{
21
21
  type: Injectable,
22
22
  args: [{
23
23
  providedIn: 'root',
@@ -268,10 +268,10 @@ export class CourseService extends BaseService {
268
268
  withCredentials: true,
269
269
  });
270
270
  }
271
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
272
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseService, providedIn: 'root' }); }
271
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
272
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseService, providedIn: 'root' }); }
273
273
  }
274
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CourseService, decorators: [{
274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CourseService, decorators: [{
275
275
  type: Injectable,
276
276
  args: [{
277
277
  providedIn: 'root',