@rolatech/angular-course 17.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/esm2022/index.mjs +4 -0
- package/esm2022/lib/components/course-action/course-action.component.mjs +27 -0
- package/esm2022/lib/components/course-details/course-details.component.mjs +27 -0
- package/esm2022/lib/components/course-info/course-info.component.mjs +19 -0
- package/esm2022/lib/components/course-item/course-item.component.mjs +15 -0
- package/esm2022/lib/components/course-media/course-media.component.mjs +34 -0
- package/esm2022/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.mjs +20 -0
- package/esm2022/lib/components/course-pricing/course-pricing.component.mjs +14 -0
- package/esm2022/lib/components/course-schedule/course-schedule.component.mjs +22 -0
- package/esm2022/lib/components/course-sections/course-sections.component.mjs +30 -0
- package/esm2022/lib/interfaces/category.mjs +2 -0
- package/esm2022/lib/interfaces/course.mjs +146 -0
- package/esm2022/lib/interfaces/index.mjs +2 -0
- package/esm2022/lib/interfaces/media.mjs +2 -0
- package/esm2022/lib/pages/course/course-category/course-category.component.mjs +74 -0
- package/esm2022/lib/pages/course/course-detail/course-detail.component.mjs +157 -0
- package/esm2022/lib/pages/course/course-index/course-index.component.mjs +53 -0
- package/esm2022/lib/pages/course/course-layout/course-layout.component.mjs +49 -0
- package/esm2022/lib/pages/course/course-section-content/course-section-content.component.mjs +140 -0
- package/esm2022/lib/pages/course/course.routes.mjs +34 -0
- package/esm2022/lib/services/category.service.mjs +38 -0
- package/esm2022/lib/services/course-section.service.mjs +26 -0
- package/esm2022/lib/services/course.service.mjs +280 -0
- package/esm2022/lib/services/index.mjs +6 -0
- package/esm2022/provider.mjs +13 -0
- package/esm2022/rolatech-angular-course.mjs +5 -0
- package/fesm2022/rolatech-angular-course.mjs +1139 -0
- package/fesm2022/rolatech-angular-course.mjs.map +1 -0
- package/index.d.ts +3 -0
- package/lib/components/course-action/course-action.component.d.ts +14 -0
- package/lib/components/course-details/course-details.component.d.ts +20 -0
- package/lib/components/course-info/course-info.component.d.ts +9 -0
- package/lib/components/course-item/course-item.component.d.ts +8 -0
- package/lib/components/course-media/course-media.component.d.ts +12 -0
- package/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.d.ts +8 -0
- package/lib/components/course-pricing/course-pricing.component.d.ts +7 -0
- package/lib/components/course-schedule/course-schedule.component.d.ts +10 -0
- package/lib/components/course-sections/course-sections.component.d.ts +19 -0
- package/lib/interfaces/category.d.ts +16 -0
- package/lib/interfaces/course.d.ts +143 -0
- package/lib/interfaces/index.d.ts +3 -0
- package/lib/interfaces/media.d.ts +9 -0
- package/lib/pages/course/course-category/course-category.component.d.ts +21 -0
- package/lib/pages/course/course-detail/course-detail.component.d.ts +36 -0
- package/lib/pages/course/course-index/course-index.component.d.ts +18 -0
- package/lib/pages/course/course-layout/course-layout.component.d.ts +17 -0
- package/lib/pages/course/course-section-content/course-section-content.component.d.ts +40 -0
- package/lib/pages/course/course.routes.d.ts +2 -0
- package/lib/services/category.service.d.ts +12 -0
- package/lib/services/course-section.service.d.ts +10 -0
- package/lib/services/course.service.d.ts +65 -0
- package/lib/services/index.d.ts +5 -0
- package/package.json +31 -0
- package/provider.d.ts +2 -0
- package/themes/_default.scss +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rolatech-angular-course.mjs","sources":["../../../../libs/angular-course/src/lib/interfaces/course.ts","../../../../libs/angular-course/src/lib/services/course.service.ts","../../../../libs/angular-course/src/lib/services/course-section.service.ts","../../../../libs/angular-course/src/lib/services/category.service.ts","../../../../libs/angular-course/src/lib/services/index.ts","../../../../libs/angular-course/src/provider.ts","../../../../libs/angular-course/src/lib/components/course-item/course-item.component.ts","../../../../libs/angular-course/src/lib/components/course-item/course-item.component.html","../../../../libs/angular-course/src/lib/pages/course/course-category/course-category.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-category/course-category.component.html","../../../../libs/angular-course/src/lib/components/course-action/course-action.component.ts","../../../../libs/angular-course/src/lib/components/course-action/course-action.component.html","../../../../libs/angular-course/src/lib/components/course-details/course-details.component.ts","../../../../libs/angular-course/src/lib/components/course-details/course-details.component.html","../../../../libs/angular-course/src/lib/components/course-info/course-info.component.ts","../../../../libs/angular-course/src/lib/components/course-info/course-info.component.html","../../../../libs/angular-course/src/lib/components/course-media/course-media.component.ts","../../../../libs/angular-course/src/lib/components/course-media/course-media.component.html","../../../../libs/angular-course/src/lib/components/course-pricing/course-pricing.component.ts","../../../../libs/angular-course/src/lib/components/course-pricing/course-pricing.component.html","../../../../libs/angular-course/src/lib/components/course-schedule/course-schedule.component.ts","../../../../libs/angular-course/src/lib/components/course-schedule/course-schedule.component.html","../../../../libs/angular-course/src/lib/components/course-sections/course-sections.component.ts","../../../../libs/angular-course/src/lib/components/course-sections/course-sections.component.html","../../../../libs/angular-course/src/lib/pages/course/course-detail/course-detail.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-detail/course-detail.component.html","../../../../libs/angular-course/src/lib/pages/course/course-index/course-index.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-index/course-index.component.html","../../../../libs/angular-course/src/lib/pages/course/course-layout/course-layout.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-layout/course-layout.component.html","../../../../libs/angular-course/src/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.ts","../../../../libs/angular-course/src/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.html","../../../../libs/angular-course/src/lib/pages/course/course-section-content/course-section-content.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-section-content/course-section-content.component.html","../../../../libs/angular-course/src/lib/pages/course/course.routes.ts","../../../../libs/angular-course/src/rolatech-angular-course.ts"],"sourcesContent":["import { CourseCategory } from './category';\nimport { Media } from './media';\n\nexport interface Course {\n id: string;\n name: string;\n description: string;\n categories?: CourseCategory[];\n createdAt: string;\n updatedAt: string;\n status: CourseStatus | string;\n media: Media[];\n type: CourseType;\n instructorId: string;\n classroom: CourseClassroom;\n details: CourseDetail[];\n pricing: CoursePricing[];\n schedule: CourseSchedule[];\n}\nexport interface CoursePricing {\n id: string;\n min: number;\n max: number;\n total: number;\n}\nexport interface CourseSchedule {\n id: string;\n title: string;\n content: string;\n startDate: string;\n startTime: string;\n startAt: string;\n endDate: string;\n endTime: string;\n endAt: string;\n}\nexport interface CourseClassroom {\n id: string;\n name: string;\n contact: string;\n phone: string;\n province: string;\n city: string;\n county: string;\n town: string;\n address: string;\n detail: string;\n latitude: string;\n longitude: string;\n media: Media[];\n isUploading?: boolean;\n room?: string;\n}\nexport enum CourseStatus {\n ACTIVE = <any>'已发布',\n ACCEPTED = <any>'已通过',\n AWAITING = <any>'审核中',\n PENDING = <any>'审核中',\n STARTED = <any>'已开始',\n ENDED = <any>'已完成',\n DELETED = <any>'已删除',\n DRAFT = <any>'草稿',\n}\nexport enum CourseRequestStatus {\n AWAITING = '审核中',\n ACTIVE = '已通过',\n REJECTED = '已拒绝',\n}\nexport interface CourseReviewRecord {\n content: string;\n status: CourseReviewStatus;\n course: Course;\n createdAt: string;\n updatedAt: string;\n}\nexport enum CourseReviewStatus {\n ACCEPTED = '已通过',\n REJECTED = '未通过',\n}\nexport interface CourseDetail {\n id: string;\n title: string;\n description: string;\n content: string;\n media: Media[];\n isUploading?: boolean;\n}\nexport interface CourseSection {\n id?: string;\n title: string;\n description: string;\n lectures: CourseSectionLecture[];\n}\nexport interface CourseSectionLecture {\n id?: string;\n title: string;\n description: string;\n type: CourseSectionLectureContentType | string;\n item: CourseSectionLectureVideo;\n isUploading?: boolean;\n progress?: number | 0;\n}\nexport interface CourseSectionLectureItem {\n id: string;\n}\nexport enum CourseSectionLectureContentType {\n VIDEO = <any>'视频',\n ARTICLE = <any>'文章',\n}\nexport interface CourseSectionLectureVideo {\n id?: string;\n url: string;\n thumbnail: string;\n duration: number;\n isUploading?: boolean;\n progress: number | 0;\n canBePreviewed: boolean;\n}\nexport interface CourseSectionLectureVideoMetadata {\n duration: string;\n}\n\nexport interface Schedule {\n id?: string;\n title: string;\n content: string;\n startDate?: string;\n startTime?: string;\n startAt: string;\n endDate?: string;\n endTime?: string;\n endAt: string;\n}\nexport interface Pricing {\n id?: string;\n min: number;\n max: number;\n total: number;\n}\n// export const CourseType = [\n// {\n// key: 'ONLINE',\n// value: '线上',\n// },\n// {\n// key: 'OFFLINE',\n// value: '线下',\n// },\n// {\n// key: 'MIXED',\n// value: '混合',\n// },\n// ];\nexport enum CourseType {\n ONLINE = <any>'线上',\n OFFLINE = <any>'线下',\n MIXED = <any>'混合',\n}\nexport const ScheduleDate = [\n '00:00',\n '00:15',\n '00:30',\n '00:45',\n\n '01:00',\n '01:15',\n '01:30',\n '01:45',\n\n '02:00',\n '02:15',\n '02:30',\n '02:45',\n '03:00',\n '03:15',\n '03:30',\n '03:45',\n\n '04:00',\n '04:15',\n '04:30',\n '04:45',\n '05:00',\n '05:15',\n '05:30',\n '05:45',\n\n '06:00',\n '06:15',\n '06:30',\n '06:45',\n '07:00',\n '07:15',\n '07:30',\n '07:45',\n\n '08:00',\n '08:15',\n '08:30',\n '08:45',\n '09:00',\n '09:15',\n '09:30',\n '09:45',\n\n '10:00',\n '10:15',\n '10:30',\n '10:45',\n '11:00',\n '11:15',\n '11:30',\n '11:45',\n\n '12:00',\n '12:15',\n '12:30',\n '12:45',\n '13:00',\n '13:15',\n '13:30',\n '13:45',\n\n '14:00',\n '14:15',\n '14:30',\n '14:45',\n '15:00',\n '15:15',\n '15:30',\n '15:45',\n\n '16:00',\n '16:15',\n '16:30',\n '16:45',\n '17:00',\n '17:15',\n '17:30',\n '17:45',\n\n '18:00',\n '18:15',\n '18:30',\n '18:45',\n '19:00',\n '19:15',\n '19:30',\n '19:45',\n\n '20:00',\n '20:15',\n '20:30',\n '20:45',\n '21:00',\n '21:15',\n '21:30',\n '21:45',\n\n '22:00',\n '22:15',\n '22:30',\n '22:45',\n '23:00',\n '23:15',\n '23:30',\n '23:45',\n];\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BaseService } from '@rolatech/angular-services';\nimport { Observable, of } from 'rxjs';\n@Injectable({\n providedIn: 'root',\n})\nexport class CourseService extends BaseService {\n override init() {\n this.endpoint = 'courses';\n super.init();\n }\n me(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/me`, {\n params: options,\n withCredentials: true,\n });\n }\n\n findSchedule(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/${id}/schedule`, {\n withCredentials: true,\n });\n }\n findPricing(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/${id}/pricing`, {\n withCredentials: true,\n });\n }\n addDetail(id: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/details`, data, {\n withCredentials: true,\n });\n }\n addBatchDetails(id: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/details/batch`, data, {\n withCredentials: true,\n });\n }\n findDetails(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/${id}/details`, {\n withCredentials: true,\n });\n }\n updateDetail(id: string, detailId: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.actionUrl}/${id}/details/${detailId}`, data, {\n withCredentials: true,\n });\n }\n deleteDetail(id: string, detailId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/details/${detailId}`, {\n withCredentials: true,\n });\n }\n uploadDetailMedia(id: string, detailId: string, data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/details/${detailId}/media`, data, {\n withCredentials: true,\n });\n }\n deleteDetailMedia(id: string, detailId: string, mediaId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/details/${detailId}/media/${mediaId}`, {\n withCredentials: true,\n });\n }\n review(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/${id}/review`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n start(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/${id}/start`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n finish(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/${id}/finish`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n publish(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/${id}/publish`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n\n upload(data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/upload`, data, {\n withCredentials: true,\n });\n }\n uploadMedia(id: string, data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/media`, data, {\n withCredentials: true,\n });\n }\n deleteMedia(id: string, mediaId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/media/${mediaId}`, {\n withCredentials: true,\n });\n }\n importFromExcel(data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/excel`, data, {\n withCredentials: true,\n });\n }\n createFromExcel(data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/list`, data, {\n withCredentials: true,\n });\n }\n findAllRequests(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/requests`, {\n params: options,\n withCredentials: true,\n });\n }\n findRequestDetail(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/requests/${id}`, {\n withCredentials: true,\n });\n }\n accept(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/${id}/reviews/accept`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n reject(id: string, body: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/reviews/reject`, body, {\n withCredentials: true,\n });\n }\n acceptRequest(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/requests/${id}/reviews/accept`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n rejectRequest(id: string, body: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/requests/${id}/reviews/reject`, body, {\n withCredentials: true,\n });\n }\n addPricing(id: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/pricing`, data, {\n withCredentials: true,\n });\n }\n updatePricing(id: string, pricingId: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.actionUrl}/${id}/pricing/${pricingId}`, data, {\n withCredentials: true,\n });\n }\n deletePricing(id: string, pricingId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/pricing/${pricingId}`, {\n withCredentials: true,\n });\n }\n addSchedule(id: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/schedule`, data, {\n withCredentials: true,\n });\n }\n updateSchedule(id: string, scheduleId: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.actionUrl}/${id}/schedule/${scheduleId}`, data, {\n withCredentials: true,\n });\n }\n deleteSchedule(id: string, scheduleId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/schedule/${scheduleId}`, {\n withCredentials: true,\n });\n }\n findAllReviews(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/reviews`, {\n params: options,\n withCredentials: true,\n });\n }\n getReview(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/reviews/${id}`, {\n withCredentials: true,\n });\n }\n findReviews(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/reviews/me`, {\n params: options,\n withCredentials: true,\n });\n }\n countUsers(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/users/count/by`, {\n params: options,\n withCredentials: true,\n });\n }\n findByIds(ids: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/by`, {\n params: { ids },\n withCredentials: true,\n });\n }\n findWishlist(options: any) {\n return this.http.get(`${this.actionUrl}/wishlist`, { params: options, withCredentials: true });\n }\n addToWishlist(courseId: string) {\n return this.http.post(`${this.actionUrl}/${courseId}/wishlist`, {}, { withCredentials: true });\n }\n removeFromWishlist(courseId: string) {\n return this.http.delete(`${this.actionUrl}/${courseId}/wishlist`, { withCredentials: true });\n }\n findWishlistBy(courseId: string) {\n return this.http.get(`${this.actionUrl}/${courseId}/wishlist/by`, { withCredentials: true });\n }\n findMyCourses(options: any) {\n return this.http.get(`${this.actionUrl}/users`, { params: options, withCredentials: true });\n }\n findPurchasedByCourseId(courseId: string) {\n return this.http.get(`${this.actionUrl}/users/me/by?courseId=${courseId}`, {\n withCredentials: true,\n });\n }\n deleteFromWishlist(sectionId: string) {\n return this.http.delete(`${this.actionUrl}/sections/${sectionId}`, { withCredentials: true });\n }\n\n // Course sections\n findCourseSections(options: any) {\n return this.http.get(`${this.actionUrl}/sections`, { params: options, withCredentials: false });\n }\n addCourseSection(courseId: any, data: any): Observable<any> {\n return this.http.post(`${this.actionUrl}/${courseId}/sections`, data, { withCredentials: true });\n }\n updateCourseSection(sectionId: any, data: any): Observable<any> {\n return this.http.put(`${this.actionUrl}/sections/${sectionId}`, data, { withCredentials: true });\n }\n deleteCourseSection(sectionId: any): Observable<any> {\n return this.http.delete(`${this.actionUrl}/sections/${sectionId}`, { withCredentials: true });\n }\n getCourseSection(courseId: any): Observable<any> {\n return this.http.get(`${this.actionUrl}/${courseId}/sections`, { withCredentials: false });\n }\n addLecture(sectionId: string, data: any): Observable<any> {\n return this.http.post(`${this.actionUrl}/sections/${sectionId}/lectures`, data, { withCredentials: true });\n }\n updateLecture(lectureId: string, data: any): Observable<any> {\n return this.http.put(`${this.actionUrl}/sections/lectures/${lectureId}`, data, { withCredentials: true });\n }\n deleteLecture(lectureId: any): Observable<any> {\n return this.http.delete(`${this.actionUrl}/sections/lectures/${lectureId}`, { withCredentials: true });\n }\n uploadVideoInit(lectureId: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/sections/lectures/${lectureId}/videos/init`, data, {\n withCredentials: true,\n });\n }\n uploadVideoPartsToLecture(lectureId: string, data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/sections/lectures/${lectureId}/videos/parts`, data, {\n withCredentials: true,\n });\n }\n completePartUpload(lectureId: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.actionUrl}/sections/lectures/${lectureId}/videos/parts`, data, {\n withCredentials: true,\n });\n }\n uploadVideoToLecture(lectureId: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/sections/lectures/${lectureId}/videos`, data, {\n withCredentials: true,\n });\n }\n deleteLectureVideo(videoId: any): Observable<any> {\n return this.http.delete(`${this.actionUrl}/sections/lectures/videos/${videoId}`, { withCredentials: true });\n }\n uploadLectureVideoThumbnail(videoId: any, data: FormData): Observable<any> {\n return this.http.post(`${this.actionUrl}/sections/lectures/videos/${videoId}/thumbnail`, data, {\n withCredentials: true,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseService } from '@rolatech/angular-services';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CourseSectionService extends BaseService {\n override init() {\n this.endpoint = 'courses';\n super.init();\n }\n findSections(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/${id}/sections`);\n }\n canBePreviewed(videoId: any, data: any): Observable<any> {\n return this.http.post(`${this.actionUrl}/sections/lectures/videos/${videoId}/preview`, data, {\n withCredentials: true,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from '@rolatech/angular-services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CategoryService extends BaseService {\n override init() {\n this.endpoint = 'categories';\n super.init();\n }\n uploadMedia(id: string, data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/media`, data, {\n withCredentials: true,\n });\n }\n deleteMedia(id: string, mediaId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/media/${mediaId}`, {\n withCredentials: true,\n });\n }\n importFromExcel(data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/excel`, data, {\n withCredentials: true,\n });\n }\n createFromExcel(data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/list`, data, {\n withCredentials: true,\n });\n }\n}\n","import { CourseService } from './course.service';\nimport { CourseSectionService } from './course-section.service';\nimport { CategoryService } from './category.service';\nexport { CourseService, CourseSectionService, CategoryService };\nexport const services: any[] = [CourseService, CourseSectionService, CategoryService];\n","import { EnvironmentProviders, Provider, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport * as fromServices from './lib/services';\n\nexport function provideAngulaCourse(): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n ...fromServices.services,\n importProvidersFrom(CommonModule, ReactiveFormsModule, FormsModule, RouterModule),\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { Component, input } from '@angular/core';\nimport { Course } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-item',\n templateUrl: './course-item.component.html',\n styleUrls: ['./course-item.component.scss'],\n standalone: true,\n imports: [],\n})\nexport class CourseItemComponent {\n course = input.required<Course>();\n row = input<boolean>(true);\n}\n","@if (row()) {\n <div class=\"flex w-full flex-row\">\n <div class=\"h-fit w-2/5 sm:w-1/4 aspect-video bg-gray-200 rounded-lg\">\n @if (course().media) {\n <img class=\"w-full object-cover aspect-video rounded-lg\" [src]=\"course().media[0].url\" />\n }\n </div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div>\n <div class=\"sm:text-xl font-medium break-words line-clamp-2 whitespace-normal\">{{ course().name }}</div>\n <div class=\"invisible h-0 sm:h-auto sm:visible break-words line-clamp-1 whitespace-normal\">\n {{ course().description }}\n </div>\n </div>\n @if (course().pricing) {\n <div class=\"sm:text-lg font-medium py-1\">¥{{ course().pricing[0].total / 100 }}</div>\n }\n </div>\n </div>\n} @else {\n <div>\n <div class=\"bg-gray-200 rounded-lg h-fit\">\n @if (course().media) {\n <img class=\"w-full object-cover aspect-video rounded-lg\" [src]=\"course().media[0].url\" />\n }\n </div>\n <div class=\"mt-2\">\n <div class=\"text-md sm:text-xl font-medium break-words line-clamp-2\">{{ course().name }}</div>\n @if (course().pricing) {\n <div class=\"text-md sm:text-lg font-medium py-1\">¥{{ course().pricing[0].total / 100 }}</div>\n }\n </div>\n </div>\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { ParamMap } from '@angular/router';\nimport { CourseCategory, Course } from '../../../interfaces';\nimport { CategoryService, CourseService } from '../../../services';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';\nimport { CourseItemComponent } from '../../../components/course-item/course-item.component';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, CourseItemComponent],\n selector: 'rolatech-course-category',\n templateUrl: './course-category.component.html',\n styleUrls: ['./course-category.component.scss'],\n})\nexport class CourseCategoryComponent extends BaseComponent implements OnInit {\n categoryService = inject(CategoryService);\n courseService = inject(CourseService);\n category!: CourseCategory;\n courses: Course[] = [];\n categories: CourseCategory[] = [];\n loading = false;\n\n ngOnInit(): void {\n this.findAllCategories();\n this.route.paramMap.subscribe((params: ParamMap) => {\n const id = params.get('id') as string;\n this.findCategoryById(id);\n this.findCoursesByCategoryId(id);\n });\n }\n findAllCategories() {\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n findCategoryById(id: string) {\n this.categoryService.get(id).subscribe({\n next: (res: any) => {\n this.category = res.data;\n },\n });\n }\n findAllCourses() {\n this.courseService.find({}).subscribe({\n next: (res: any) => {\n this.courses = res.data;\n },\n });\n }\n findCoursesByCategoryId(id: string) {\n this.loading = true;\n const options = {\n filter: `categories:${id},published:true`,\n };\n this.courseService.find(options).subscribe({\n next: (res: any) => {\n this.courses = res.data;\n this.loading = false;\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n\n loadCoursesByCategory(item: any) {\n // [routerLink] = \"['../../', item.id]\";\n this.router.navigate([`../../${item.id}`], {\n relativeTo: this.route,\n });\n }\n}\n","<div>\n @if (category) {\n <div class=\"p-3 hidden sm:block text-2xl font-medium\">{{ category.name }}</div>\n } @else {\n <div class=\"flex flex-row animate-pulse w-full\">\n <div class=\"h-4 bg-slate-200 rounded col-span-2\"></div>\n </div>\n }\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 item) {\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","import { Component, input, output } from '@angular/core';\nimport { Course } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-action',\n templateUrl: './course-action.component.html',\n styleUrls: ['./course-action.component.scss'],\n standalone: true,\n})\nexport class CourseActionComponent {\n course = input.required<Course>();\n inWishList = input<boolean>(false);\n\n cart = output<Course>();\n wish = output<Course>();\n checkout = output<Course>();\n\n onCart(course: Course) {\n this.cart.emit(course);\n }\n onWish(course: Course) {\n this.wish.emit(course);\n }\n onCheckout(course: Course) {\n this.checkout.emit(course);\n }\n}\n","<div class=\"flex flex-col\">\n <!-- <a class=\"p-3 bg-orange-600 text-white text-center mt-3\" target=\"_blank\" (click)=\"onCart(course)\">加入购物车</a> -->\n <a\n class=\"p-3 bg-orange-600 text-white text-center mt-3 cursor-pointer rounded-md hover:bg-orange-700\"\n target=\"_blank\"\n (click)=\"onCheckout(course())\"\n >立即购买</a\n >\n <a\n class=\"p-3 border border-black text-center mt-3 cursor-pointer rounded-md hover:bg-gray-100\"\n target=\"_blank\"\n (click)=\"onWish(course())\"\n >{{ inWishList() ? '移除收藏' : '加入收藏' }}</a\n >\n</div>\n","import { ViewportScroller } from '@angular/common';\nimport { Component, ElementRef, inject, input, OnInit, PLATFORM_ID } from '@angular/core';\nimport { CourseDetail } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-details',\n templateUrl: './course-details.component.html',\n styleUrls: ['./course-details.component.scss'],\n standalone: true,\n imports: [],\n})\nexport class CourseDetailsComponent implements OnInit {\n details = input.required<CourseDetail[]>();\n instructor = input<string>();\n username = input<string>();\n el = inject(ElementRef);\n\n viewportScroller = inject(ViewportScroller);\n platformId = inject(PLATFORM_ID);\n\n player: any;\n\n show = false;\n mediaIndex = 0;\n finalSchedule = [];\n ngOnInit(): void {}\n\n onClickScroller(id: string) {\n this.viewportScroller.scrollToAnchor(id);\n }\n}\n","<div class=\"py-3\" id=\"details\">\n <div class=\"text-xl font-medium py-2\">详情</div>\n @if (details()) {\n @for (detail of details(); track $index) {\n <div>\n @if (detail.title) {\n <div class=\"py-3 flex items-center gap-3\">\n <span class=\"h-4 w-1 bg-orange-500 inline-block\"></span>\n <span class=\"text-lg font-medium py-1\"> {{ detail.title }}</span>\n </div>\n }\n @if (detail.content) {\n <div>\n {{ detail.content }}\n </div>\n }\n @if (detail.media) {\n <div class=\"w-80%\">\n @for (item of detail.media; track item) {\n <div class=\"py-3\">\n <img class=\"object-cover\" [src]=\"item.url + '?imageMogr2/format/avif'\" />\n </div>\n }\n </div>\n }\n </div>\n }\n }\n</div>\n","import { Component, input } from '@angular/core';\nimport { Course } from '../../interfaces';\nimport { RouterLink } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-course-info',\n templateUrl: './course-info.component.html',\n styleUrls: ['./course-info.component.scss'],\n standalone: true,\n imports: [MatIconModule, RouterLink],\n})\nexport class CourseInfoComponent {\n course = input.required<Course>();\n instructor = input<string>();\n username = input<string>();\n}\n","<div>\n <div>\n <div class=\"text-2xl font-medium\">{{ course().name }}</div>\n @if (course().type && course().type.toString() !== 'ONLINE') {\n <div class=\"flex items-center pt-2\">\n <mat-icon>place</mat-icon>\n <span class=\"text-sm opacity-75\">{{ course().classroom.address }}</span>\n </div>\n }\n <div class=\"py-3 text-black-light flex justify-between\">\n <div>\n <div class=\"mb-1 flex items-center\">\n <span class=\"font-medium\">主讲教师: </span>\n <a class=\"ml-2 underline text-orange-600 text-[0.9rem]\" [routerLink]=\"['../../instructors/', '@' + username()]\">{{\n instructor()\n }}</a>\n </div>\n <span class=\"text-sm opacity-75\">最后编辑: {{ course().updatedAt }} </span>\n </div>\n </div>\n </div>\n <!-- 描述 -->\n <div class=\"mb-3\">\n {{ course().description }}\n </div>\n</div>\n","import { Component, inject, input } from '@angular/core';\nimport { Media } from '../../interfaces';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NgClass } from '@angular/common';\nimport { MediaPreviewDialogComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-course-media',\n templateUrl: './course-media.component.html',\n styleUrls: ['./course-media.component.scss'],\n standalone: true,\n imports: [NgClass],\n})\nexport class CourseMediaComponent {\n dialog = inject(MatDialog);\n media = input<Media[]>([]);\n min = input<boolean>(false);\n mediaIndex = 0;\n onImageClick(i: any) {\n const dialogRef = this.dialog.open(MediaPreviewDialogComponent, {\n maxWidth: '80vw',\n maxHeight: '80vh',\n height: '80%',\n width: '80%',\n panelClass: 'full-screen-modal',\n data: {\n media: this.media,\n selected: i,\n },\n });\n dialogRef.afterClosed().subscribe((result) => {});\n }\n}\n","@if (media()) {\n @if (min()) {\n <div class=\"sm:w-80 object-cover aspect-video bg-gray-200 rounded-lg\">\n @if (media()) {\n <img class=\"aspect-video object-cover w-full rounded-lg\" [src]=\"media()[0].url\" />\n }\n </div>\n } @else {\n <div>\n <div class=\"object-cover aspect-video bg-gray-200\">\n <img class=\"aspect-video object-cover w-full rounded-md\" [src]=\"media()[mediaIndex].url\" />\n </div>\n @for (item of media(); track $index) {\n <div\n class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer rounded-md\"\n (click)=\"mediaIndex = $index\"\n [ngClass]=\"mediaIndex === $index ? '' : 'opacity-30'\"\n >\n <img class=\"rounded-md aspect-video object-cover w-32\" [src]=\"item.url\" />\n </div>\n }\n </div>\n }\n}\n","import { Component, input } from '@angular/core';\nimport { CoursePricing } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-pricing',\n templateUrl: './course-pricing.component.html',\n styleUrls: ['./course-pricing.component.scss'],\n standalone: true,\n})\nexport class CoursePricingComponent {\n pricing = input<CoursePricing[]>([]);\n}\n","@if (pricing()) {\n <div class=\"py-3\">\n <div class=\"text-lg font-medium py-2\">价格</div>\n @for (item of pricing(); track $index) {\n <div>\n <span>{{ item.min }} 至 {{ item.max }}人</span>\n <span class=\"ml-3\">{{ item.total / 100 }}元</span>\n </div>\n }\n </div>\n}\n","import { Component, OnInit, input } from '@angular/core';\nimport { CourseSchedule } from '../../interfaces';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-course-schedule',\n templateUrl: './course-schedule.component.html',\n styleUrls: ['./course-schedule.component.scss'],\n standalone: true,\n imports: [MatExpansionModule, MatIconModule],\n})\nexport class CourseScheduleComponent implements OnInit {\n schedule = input<CourseSchedule[]>([]);\n\n ngOnInit(): void {\n // this.formatSchedule();\n }\n formatSchedule() {}\n}\n","<!-- 课表 -->\n@if (schedule()) {\n <div class=\"py-3\" id=\"schedule\">\n <div class=\"text-xl font-medium py-2\">课表</div>\n @for (item of schedule(); track $index) {\n <mat-expansion-panel #panel [class.mat-elevation-z0]=\"true\" hideToggle [expanded]=\"$index === 0\">\n <mat-expansion-panel-header class=\"bg-red\">\n <mat-panel-title>\n <span class=\"text-[1rem]\">{{ item.title }}</span>\n </mat-panel-title>\n <mat-icon\n class=\"toggle-icon\"\n style=\"transition-duration:.5s;transform: {{ panel.expanded ? 'rotate(180deg)' : 'rotate(0deg)' }};\"\n >expand_more</mat-icon\n >\n </mat-expansion-panel-header>\n <div class=\"bg-white\">\n <div class=\"text-gray-600 font-thin pt-2\">\n <span>{{ item.startAt }} - {{ item.endAt }}</span>\n </div>\n <div class=\"py-3\">\n <div>{{ item.content }}</div>\n </div>\n </div>\n </mat-expansion-panel>\n }\n </div>\n}\n","import { Component, ViewEncapsulation, inject, input, output } from '@angular/core';\nimport { CourseSection, CourseSectionLecture } from '../../interfaces';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { DurationPipe } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-course-sections',\n templateUrl: './course-sections.component.html',\n styleUrls: ['./course-sections.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [MatExpansionModule, MatIconModule, DurationPipe, MatCheckboxModule],\n})\nexport class CourseSectionsComponent {\n purchased = input<boolean>(false);\n sections = input<CourseSection[]>([]);\n section = output<{ section: CourseSection; lecture: CourseSectionLecture }>();\n checkout = output<{ section: CourseSection; lecture: CourseSectionLecture }>();\n\n panelOpenState = false;\n onSection(section: CourseSection, lecture: CourseSectionLecture) {\n this.section.emit({ section, lecture });\n }\n onCheckout(section: CourseSection, lecture: CourseSectionLecture) {\n this.checkout.emit({ section, lecture });\n }\n}\n","@if (sections()) {\n <div id=\"sections()\">\n <div class=\"text-xl font-medium py-2\">课程内容</div>\n <mat-accordion multi>\n @for (item of sections(); track $index) {\n <mat-expansion-panel #panel [class.mat-elevation-z0]=\"true\" hideToggle [expanded]=\"$index === 0\">\n <mat-expansion-panel-header class=\"bg-red\">\n <mat-panel-title>\n <span class=\"text-[1rem]\">{{ item.title }}</span>\n </mat-panel-title>\n <mat-icon\n class=\"toggle-icon\"\n style=\"transition-duration:.5s;transform: {{ panel.expanded ? 'rotate(180deg)' : 'rotate(0deg)' }};\"\n >expand_more</mat-icon\n >\n </mat-expansion-panel-header>\n <div class=\"bg-white\">\n @for (lecture of item.lectures; track $index) {\n <div class=\"flex items-center justify-between py-1\">\n @if (lecture.item && lecture.type === 'VIDEO') {\n <div class=\"flex items-center gap-3\">\n <mat-icon>live_tv</mat-icon>\n <span class=\"text-md\"> {{ lecture.title }}</span>\n </div>\n <div>\n @if (purchased()) {\n <a\n class=\"text-sm mr-1 underline underline-offset-2 cursor-pointer text-orange-600\"\n (click)=\"onSection(item, lecture)\"\n >播放</a\n >\n } @else {\n @if (lecture.item.canBePreviewed) {\n <a\n class=\"text-sm mr-1 underline underline-offset-2 cursor-pointer text-orange-600\"\n (click)=\"onSection(item, lecture)\"\n >试看</a\n >\n } @else {\n <a\n class=\"text-sm mr-1 underline underline-offset-2 cursor-pointer text-orange-600\"\n (click)=\"onCheckout(item, lecture)\"\n >购买</a\n >\n }\n }\n\n <a class=\"text-gray-500 inline-block w-[60px] text-right\">{{ lecture.item.duration | duration }}</a>\n </div>\n }\n </div>\n }\n </div>\n </mat-expansion-panel>\n }\n </mat-accordion>\n </div>\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CourseSection, CourseSectionLectureContentType, CourseStatus } from '../../../interfaces';\nimport { CourseSectionService, CourseService } from '../../../services';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { AngularComponentsModule, AppContainerComponent, BaseComponent } from '@rolatech/angular-components';\nimport { ViewportScroller } from '@angular/common';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { CommentsComponent } from '@rolatech/angular-comment';\nimport { CourseActionComponent } from '../../../components/course-action/course-action.component';\nimport { CourseDetailsComponent } from '../../../components/course-details/course-details.component';\nimport { CourseInfoComponent } from '../../../components/course-info/course-info.component';\nimport { CourseMediaComponent } from '../../../components/course-media/course-media.component';\nimport { CoursePricingComponent } from '../../../components/course-pricing/course-pricing.component';\nimport { CourseScheduleComponent } from '../../../components/course-schedule/course-schedule.component';\nimport { CourseSectionsComponent } from '../../../components/course-sections/course-sections.component';\n@Component({\n standalone: true,\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n CourseInfoComponent,\n CourseSectionsComponent,\n CourseScheduleComponent,\n CourseDetailsComponent,\n CourseMediaComponent,\n CoursePricingComponent,\n CourseActionComponent,\n CommentsComponent,\n AppContainerComponent,\n ],\n selector: 'rolatech-course-detail',\n templateUrl: './course-detail.component.html',\n styleUrls: ['./course-detail.component.scss'],\n})\nexport class CourseDetailComponent extends BaseComponent implements OnInit {\n course: any;\n status: any = CourseStatus;\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n courseService = inject(CourseService);\n viewportScroller = inject(ViewportScroller);\n courseSectionService = inject(CourseSectionService);\n instructorName = '';\n username = '';\n inWishList = false;\n purchased = false;\n sections: CourseSection[] = [];\n type = CourseSectionLectureContentType;\n ngOnInit(): void {\n this.findOne();\n this.findSections();\n this.authService.introspect().subscribe({\n next: (res) => {\n if (res.authenticated) {\n this.findPurchasedByCourseId();\n this.findWishlistBy();\n }\n },\n });\n }\n scrollToAnchor(anchorId: string): void {\n // this.viewportScroller.setOffset([100, 100]);\n document.getElementById(anchorId)?.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n inline: 'nearest',\n });\n }\n findOne() {\n this.courseService.get(this.id).subscribe({\n next: (res: any) => {\n this.course = res.data;\n this.findUserBaseInfo(this.course.instructorId);\n this.titleService.setTitle(`${this.course.name} - 拼小课`);\n },\n });\n }\n findSections() {\n this.courseSectionService.findSections(this.id).subscribe({\n next: (res) => {\n this.sections = res.data;\n },\n });\n }\n findUserBaseInfo(userId: string) {\n this.authUserService.getPublicUserInfo(userId).subscribe({\n next: (res) => {\n this.instructorName = res.name;\n this.username = res.username;\n },\n });\n }\n onWish(e: any) {\n this.authService.introspect().subscribe({\n next: (res) => {\n if (res.authenticated) {\n if (this.inWishList) {\n this.removeFromWishlist();\n } else {\n this.addToWishlist();\n }\n } else {\n this.snackBarService.open('请先登录');\n }\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n checkout(e: any) {\n this.router.navigateByUrl(`/carts/checkout/express/courses/${this.id}`);\n }\n private removeFromWishlist() {\n this.courseService.removeFromWishlist(this.id).subscribe({\n next: (res) => {\n this.inWishList = false;\n },\n });\n }\n private addToWishlist() {\n this.courseService.addToWishlist(this.id).subscribe({\n next: (res) => {\n this.inWishList = true;\n },\n });\n }\n onSection(event: any) {\n const { section, lecture } = event;\n this.router.navigate(['/courses', this.course.id, 'sections', section.id, 'lectures', lecture.id]);\n }\n\n private findWishlistBy() {\n this.authService.introspect().subscribe({\n next: (res) => {\n if (res.authenticated) {\n this.courseService.findWishlistBy(this.id).subscribe({\n next: (res: any) => {\n this.inWishList = res.data;\n },\n });\n }\n },\n });\n }\n findPurchasedByCourseId() {\n this.courseService.findPurchasedByCourseId(this.id).subscribe({\n next: (res: any) => {\n this.purchased = res.data ? true : false;\n },\n });\n }\n}\n","@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","import { Component, inject, OnInit } from '@angular/core';\nimport { CourseCategory, Course } from '../../../interfaces';\nimport { CategoryService, CourseService } from '../../../services';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';\nimport { CourseItemComponent } from '../../../components/course-item/course-item.component';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, CourseItemComponent],\n selector: 'rolatech-course-index',\n templateUrl: './course-index.component.html',\n styleUrls: ['./course-index.component.scss'],\n})\nexport class CourseIndexComponent extends BaseComponent implements OnInit {\n courses: Course[] = [];\n categories: CourseCategory[] = [];\n courseService = inject(CourseService);\n categoryService = inject(CategoryService);\n meta: any;\n loading = false;\n\n ngOnInit(): void {\n this.findCategories();\n this.findCourses();\n this.titleService.setTitle('课程 - 拼小课');\n }\n findCourses() {\n this.loading = true;\n const options = {\n sort: 'updatedAt desc',\n filter: 'published:true',\n };\n this.courseService.find(options).subscribe({\n next: (res: any) => {\n this.courses = res.data;\n this.meta = res.meta;\n this.loading = false;\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n findCategories() {\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n}\n","<div class=\"min-w-[320px] max-w-[1120px] m-auto\">\n <div class=\"p-3 hidden sm:block text-2xl font-medium\">全部课程</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","import { Component, inject, OnInit } from '@angular/core';\nimport { CourseCategory } from '../../../interfaces';\nimport { CategoryService, CourseService } from '../../../services';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, AppContainerComponent, BaseComponent } from '@rolatech/angular-components';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, AppContainerComponent],\n selector: 'rolatech-course-layout',\n templateUrl: './course-layout.component.html',\n styleUrls: ['./course-layout.component.scss'],\n})\nexport class CourseLayoutComponent extends BaseComponent implements OnInit {\n categories: CourseCategory[] = [];\n categoryService = inject(CategoryService);\n courseService = inject(CourseService);\n selectIndex = 0;\n\n ngOnInit(): void {\n this.findCategories();\n }\n findCategories() {\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n loadCourseByCategoryIndex(index: number) {\n this.selectIndex = index;\n const id = this.categories[index].id;\n if (index === 0) {\n this.router.navigate([`/courses`]);\n // this.courseService.find({}).subscribe({\n // next: res => {\n // }\n // })\n } else {\n this.router.navigate([`../courses/categories/${id}`], {\n relativeTo: this.route,\n });\n }\n }\n nextCategory() {}\n}\n","@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\">分类</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\">全部</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","import { Component, input } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-course-media-owner-renderer',\n standalone: true,\n imports: [AngularCommonModule, MatIconModule],\n templateUrl: './course-media-owner-renderer.component.html',\n styleUrl: './course-media-owner-renderer.component.scss',\n})\nexport class CourseMediaOwnerRendererComponent {\n name = input<string>();\n avatar = input<string>();\n username = input<string>();\n}\n","<div class=\"flex flex-row items-center\">\n <div class=\"flex mr-3 gap-2 items-center\">\n @if (avatar()) {\n <div class=\"cursor-pointer\" [routerLink]=\"['/instructors/', '@' + username()]\">\n <img [src]=\"avatar()\" class=\"w-11 h-11 rounded-full\" />\n </div>\n } @else {\n <div class=\"w-11 h-11 rounded-full bg-orange-600\"></div>\n }\n <div class=\"flex items-center text-lg font-bold cursor-pointer\">\n <a [routerLink]=\"['/instructors/', '@' + username()]\">\n <span>{{ name() }}</span>\n </a>\n <mat-icon color=\"primary\">verified</mat-icon>\n </div>\n </div>\n</div>\n","import { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, OnDestroy, OnInit, PLATFORM_ID, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CourseSection } from '../../../interfaces';\nimport { CourseSectionService, CourseService } from '../../../services';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { CommentsComponent } from '@rolatech/angular-comment';\nimport { CourseMediaOwnerRendererComponent } from '../../../components/course-media-owner-renderer/course-media-owner-renderer.component';\nimport { CourseSectionsComponent } from '../../../components/course-sections/course-sections.component';\n\n// import DPlayer from 'DPlayer';\ndeclare const DPlayer: any;\n\n@Component({\n standalone: true,\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n CourseSectionsComponent,\n CourseMediaOwnerRendererComponent,\n CommentsComponent,\n ],\n selector: 'rolatech-course-section-content',\n templateUrl: './course-section-content.component.html',\n styleUrls: ['./course-section-content.component.scss'],\n})\nexport class CourseSectionContentComponent implements OnInit, AfterViewInit, OnDestroy {\n route = inject(ActivatedRoute);\n router = inject(Router);\n courseSectionService = inject(CourseSectionService);\n courseService = inject(CourseService);\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n el = inject(ElementRef);\n platformId = inject(PLATFORM_ID);\n player: any;\n sections: CourseSection[] = [];\n courseId = '';\n sectionId = '';\n lectureId = '';\n videoUrl: any = '';\n instructorName = '';\n instructorAvatar = '';\n instructorUsername = '';\n course: any;\n purchased = false;\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.courseId = params['id'];\n this.sectionId = params['sectionId'];\n this.lectureId = params['lectureId'];\n this.findCourse(this.courseId);\n this.findSections(this.courseId);\n this.introspect();\n });\n }\n ngOnDestroy(): void {\n if (this.player) {\n this.player.destroy();\n }\n }\n ngAfterViewInit(): void {}\n initPlayer(url: string, thumbnail?: string) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n // 'https://cos-video-1258344699.cos.ap-guangzhou.tencentcos.cn/test.mp4',\n if (!this.player) {\n const playerContainer = this.el.nativeElement.querySelector('#dplayer');\n this.player = new DPlayer({\n container: playerContainer,\n screenshot: true,\n preload: 'metadata',\n video: {\n url: url,\n pic: thumbnail,\n },\n });\n // this.player.on('loadedmetadata', () => {\n // console.log('Video duration:', this.player.video.duration);\n // });\n } else {\n this.player.switchVideo({\n url: url,\n pic: thumbnail,\n });\n }\n }\n findSections(courseId: any) {\n this.courseSectionService.findSections(courseId).subscribe({\n next: (res) => {\n this.sections = res.data;\n const section = this.sections.find((item: any) => item.id === this.sectionId);\n const letcture = section?.lectures.find((item: any) => item.id === this.lectureId);\n this.videoUrl = letcture?.item.url;\n const thumbnail = letcture?.item.thumbnail;\n\n this.initPlayer(this.videoUrl, thumbnail);\n },\n });\n }\n findCourse(courseId: string) {\n this.courseService.get(courseId).subscribe({\n next: (res: any) => {\n this.course = res.data;\n this.findUserBaseInfo(this.course.instructorId);\n },\n });\n }\n findUserBaseInfo(userId: string) {\n this.authUserService.getPublicUserInfo(userId).subscribe({\n next: (res) => {\n this.instructorName = res.name;\n this.instructorAvatar = res.avatar;\n this.instructorUsername = res.username;\n },\n });\n }\n introspect() {\n this.authService.introspect().subscribe({\n next: (res) => {\n if (res.authenticated) {\n this.findPurchasedByCourseId();\n }\n },\n });\n }\n\n findPurchasedByCourseId() {\n this.courseService.findPurchasedByCourseId(this.courseId).subscribe({\n next: (res: any) => {\n this.purchased = res.data ? true : false;\n },\n });\n }\n onSection(event: any) {\n const { section, lecture } = event;\n this.router.navigate(['/courses', this.courseId, 'sections', section.id, 'lectures', lecture.id]);\n }\n checkout(e: any) {\n this.router.navigateByUrl(`/carts/checkout/express/courses/${this.courseId}`);\n }\n}\n","<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","import { Routes } from '@angular/router';\nimport { CourseCategoryComponent } from './course-category/course-category.component';\nimport { CourseDetailComponent } from './course-detail/course-detail.component';\nimport { CourseIndexComponent } from './course-index/course-index.component';\nimport { CourseLayoutComponent } from './course-layout/course-layout.component';\nimport { CourseSectionContentComponent } from './course-section-content/course-section-content.component';\n\nexport const courseRoutes: Routes = [\n {\n path: '',\n component: CourseLayoutComponent,\n children: [\n {\n path: '',\n component: CourseIndexComponent,\n },\n {\n path: 'categories/:id',\n component: CourseCategoryComponent,\n },\n ],\n },\n {\n path: ':id',\n component: CourseDetailComponent,\n },\n {\n path: ':id/sections/:sectionId/lectures/:lectureId',\n component: CourseSectionContentComponent,\n },\n {\n path: 'my-courses',\n component: CourseDetailComponent,\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["fromServices.services"],"mappings":";;;;;;;;;;;;;;;;;;IAqDY,aASX;AATD,CAAA,UAAY,YAAY,EAAA;IACtB,YAAc,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,KAAK,YAAA,CAAA;IACnB,YAAgB,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,KAAK,cAAA,CAAA;IACrB,YAAgB,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,KAAK,cAAA,CAAA;IACrB,YAAe,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,KAAK,aAAA,CAAA;IACpB,YAAe,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,KAAK,aAAA,CAAA;IACpB,YAAa,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,KAAK,WAAA,CAAA;IAClB,YAAe,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,KAAK,aAAA,CAAA;IACpB,YAAa,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,IAAI,WAAA,CAAA;AACnB,CAAC,EATW,YAAY,KAAZ,YAAY,GASvB,EAAA,CAAA,CAAA,CAAA;IACW,oBAIX;AAJD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,oBAAgB,CAAA;AAChB,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,oBAAc,CAAA;AACd,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,oBAAgB,CAAA;AAClB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,GAI9B,EAAA,CAAA,CAAA,CAAA;IAQW,mBAGX;AAHD,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,oBAAgB,CAAA;AAChB,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,oBAAgB,CAAA;AAClB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,GAG7B,EAAA,CAAA,CAAA,CAAA;IA2BW,gCAGX;AAHD,CAAA,UAAY,+BAA+B,EAAA;IACzC,+BAAa,CAAA,+BAAA,CAAA,OAAA,CAAA,GAAA,IAAI,WAAA,CAAA;IACjB,+BAAe,CAAA,+BAAA,CAAA,SAAA,CAAA,GAAA,IAAI,aAAA,CAAA;AACrB,CAAC,EAHW,+BAA+B,KAA/B,+BAA+B,GAG1C,EAAA,CAAA,CAAA,CAAA;AA+BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACY,WAIX;AAJD,CAAA,UAAY,UAAU,EAAA;IACpB,UAAc,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,IAAI,YAAA,CAAA;IAClB,UAAe,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,IAAI,aAAA,CAAA;IACnB,UAAa,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAI,WAAA,CAAA;AACnB,CAAC,EAJW,UAAU,KAAV,UAAU,GAIrB,EAAA,CAAA,CAAA,CAAA;AACY,MAAA,YAAY,GAAG;IAC1B,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IAEP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;;;ACnQH,MAAO,aAAc,SAAQ,WAAW,CAAA;IACnC,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,IAAI,EAAE,CAAC;KACd;AACD,IAAA,EAAE,CAAC,OAAY,EAAA;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,GAAA,CAAK,EAAE;AAChD,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,WAAW,EAAE;AAC5D,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,WAAW,CAAC,EAAU,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,UAAU,EAAE;AAC3D,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,SAAS,CAAC,EAAU,EAAE,IAAS,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAU,QAAA,CAAA,EAAE,IAAI,EAAE;AAClE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,eAAe,CAAC,EAAU,EAAE,IAAS,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAgB,cAAA,CAAA,EAAE,IAAI,EAAE;AACxE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,WAAW,CAAC,EAAU,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,UAAU,EAAE;AAC3D,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,YAAY,CAAC,EAAU,EAAE,QAAgB,EAAE,IAAS,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA,SAAA,EAAY,QAAQ,CAAE,CAAA,EAAE,IAAI,EAAE;AAC7E,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,YAAY,CAAC,EAAU,EAAE,QAAgB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAY,SAAA,EAAA,QAAQ,EAAE,EAAE;AAC1E,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,iBAAiB,CAAC,EAAU,EAAE,QAAgB,EAAE,IAAc,EAAA;AAC5D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA,SAAA,EAAY,QAAQ,CAAQ,MAAA,CAAA,EAAE,IAAI,EAAE;AACpF,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,iBAAiB,CAAC,EAAU,EAAE,QAAgB,EAAE,OAAe,EAAA;AAC7D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA,SAAA,EAAY,QAAQ,CAAU,OAAA,EAAA,OAAO,EAAE,EAAE;AAC3F,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAS,OAAA,CAAA,EAChC,EAAE,EACF;AACE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CACF,CAAC;KACH;AACD,IAAA,KAAK,CAAC,EAAU,EAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAQ,MAAA,CAAA,EAC/B,EAAE,EACF;AACE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CACF,CAAC;KACH;AACD,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAS,OAAA,CAAA,EAChC,EAAE,EACF;AACE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CACF,CAAC;KACH;AACD,IAAA,OAAO,CAAC,EAAU,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAU,QAAA,CAAA,EACjC,EAAE,EACF;AACE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CACF,CAAC;KACH;AAED,IAAA,MAAM,CAAC,IAAc,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,CAAS,OAAA,CAAA,EAAE,IAAI,EAAE;AAC3D,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,WAAW,CAAC,EAAU,EAAE,IAAc,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAQ,MAAA,CAAA,EAAE,IAAI,EAAE;AAChE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,WAAW,CAAC,EAAU,EAAE,OAAe,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAU,OAAA,EAAA,OAAO,EAAE,EAAE;AACvE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,eAAe,CAAC,IAAc,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,CAAQ,MAAA,CAAA,EAAE,IAAI,EAAE;AAC1D,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,eAAe,CAAC,IAAS,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,CAAO,KAAA,CAAA,EAAE,IAAI,EAAE;AACzD,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,eAAe,CAAC,OAAY,EAAA;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,SAAA,CAAW,EAAE;AACtD,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,iBAAiB,CAAC,EAAU,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,CAAa,UAAA,EAAA,EAAE,EAAE,EAAE;AAC5D,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAiB,eAAA,CAAA,EACxC,EAAE,EACF;AACE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CACF,CAAC;KACH;IACD,MAAM,CAAC,EAAU,EAAE,IAAS,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAiB,eAAA,CAAA,EAAE,IAAI,EAAE;AACzE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,aAAa,CAAC,EAAU,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,SAAS,CAAa,UAAA,EAAA,EAAE,CAAiB,eAAA,CAAA,EACjD,EAAE,EACF;AACE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CACF,CAAC;KACH;IACD,aAAa,CAAC,EAAU,EAAE,IAAS,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAa,UAAA,EAAA,EAAE,CAAiB,eAAA,CAAA,EAAE,IAAI,EAAE;AAClF,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,UAAU,CAAC,EAAU,EAAE,IAAS,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAU,QAAA,CAAA,EAAE,IAAI,EAAE;AAClE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,aAAa,CAAC,EAAU,EAAE,SAAiB,EAAE,IAAS,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA,SAAA,EAAY,SAAS,CAAE,CAAA,EAAE,IAAI,EAAE;AAC9E,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,aAAa,CAAC,EAAU,EAAE,SAAiB,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAY,SAAA,EAAA,SAAS,EAAE,EAAE;AAC3E,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,WAAW,CAAC,EAAU,EAAE,IAAS,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAW,SAAA,CAAA,EAAE,IAAI,EAAE;AACnE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,cAAc,CAAC,EAAU,EAAE,UAAkB,EAAE,IAAS,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA,UAAA,EAAa,UAAU,CAAE,CAAA,EAAE,IAAI,EAAE;AAChF,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,cAAc,CAAC,EAAU,EAAE,UAAkB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAa,UAAA,EAAA,UAAU,EAAE,EAAE;AAC7E,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,cAAc,CAAC,OAAY,EAAA;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,QAAA,CAAU,EAAE;AACrD,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,SAAS,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,CAAY,SAAA,EAAA,EAAE,EAAE,EAAE;AAC3D,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,WAAW,CAAC,OAAY,EAAA;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,WAAA,CAAa,EAAE;AACxD,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,UAAU,CAAC,OAAY,EAAA;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,eAAA,CAAiB,EAAE;AAC5D,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,SAAS,CAAC,GAAW,EAAA;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,GAAA,CAAK,EAAE;YAChD,MAAM,EAAE,EAAE,GAAG,EAAE;AACf,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,YAAY,CAAC,OAAY,EAAA;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,SAAA,CAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAChG;AACD,IAAA,aAAa,CAAC,QAAgB,EAAA;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,CAAA,EAAI,QAAQ,CAAW,SAAA,CAAA,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAChG;AACD,IAAA,kBAAkB,CAAC,QAAgB,EAAA;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAA,SAAA,CAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9F;AACD,IAAA,cAAc,CAAC,QAAgB,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAA,YAAA,CAAc,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9F;AACD,IAAA,aAAa,CAAC,OAAY,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,MAAA,CAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAC7F;AACD,IAAA,uBAAuB,CAAC,QAAgB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,SAAS,CAAyB,sBAAA,EAAA,QAAQ,EAAE,EAAE;AACzE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,kBAAkB,CAAC,SAAiB,EAAA;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,aAAa,SAAS,CAAA,CAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/F;;AAGD,IAAA,kBAAkB,CAAC,OAAY,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,SAAA,CAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;KACjG;IACD,gBAAgB,CAAC,QAAa,EAAE,IAAS,EAAA;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,CAAA,EAAI,QAAQ,CAAW,SAAA,CAAA,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAClG;IACD,mBAAmB,CAAC,SAAc,EAAE,IAAS,EAAA;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,UAAA,EAAa,SAAS,CAAE,CAAA,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAClG;AACD,IAAA,mBAAmB,CAAC,SAAc,EAAA;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,aAAa,SAAS,CAAA,CAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/F;AACD,IAAA,gBAAgB,CAAC,QAAa,EAAA;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAA,SAAA,CAAW,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;KAC5F;IACD,UAAU,CAAC,SAAiB,EAAE,IAAS,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,UAAA,EAAa,SAAS,CAAW,SAAA,CAAA,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAC5G;IACD,aAAa,CAAC,SAAiB,EAAE,IAAS,EAAA;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,mBAAA,EAAsB,SAAS,CAAE,CAAA,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAC3G;AACD,IAAA,aAAa,CAAC,SAAc,EAAA;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,sBAAsB,SAAS,CAAA,CAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KACxG;IACD,eAAe,CAAC,SAAiB,EAAE,IAAS,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAsB,mBAAA,EAAA,SAAS,CAAc,YAAA,CAAA,EAAE,IAAI,EAAE;AAC/F,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,yBAAyB,CAAC,SAAiB,EAAE,IAAc,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAsB,mBAAA,EAAA,SAAS,CAAe,aAAA,CAAA,EAAE,IAAI,EAAE;AAChG,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,kBAAkB,CAAC,SAAiB,EAAE,IAAS,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAsB,mBAAA,EAAA,SAAS,CAAe,aAAA,CAAA,EAAE,IAAI,EAAE;AAC/F,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,oBAAoB,CAAC,SAAiB,EAAE,IAAS,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAsB,mBAAA,EAAA,SAAS,CAAS,OAAA,CAAA,EAAE,IAAI,EAAE;AAC1F,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,kBAAkB,CAAC,OAAY,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,6BAA6B,OAAO,CAAA,CAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAC7G;IACD,2BAA2B,CAAC,OAAY,EAAE,IAAc,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAA6B,0BAAA,EAAA,OAAO,CAAY,UAAA,CAAA,EAAE,IAAI,EAAE;AAC7F,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;8GArSU,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACCK,MAAO,oBAAqB,SAAQ,WAAW,CAAA;IAC1C,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,IAAI,EAAE,CAAC;KACd;AACD,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,SAAA,CAAW,CAAC,CAAC;KAC/D;IACD,cAAc,CAAC,OAAY,EAAE,IAAS,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAA6B,0BAAA,EAAA,OAAO,CAAU,QAAA,CAAA,EAAE,IAAI,EAAE;AAC3F,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;8GAZU,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACCK,MAAO,eAAgB,SAAQ,WAAW,CAAA;IACrC,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;QAC7B,KAAK,CAAC,IAAI,EAAE,CAAC;KACd;IACD,WAAW,CAAC,EAAU,EAAE,IAAc,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAQ,MAAA,CAAA,EAAE,IAAI,EAAE;AAChE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;IACD,WAAW,CAAC,EAAU,EAAE,OAAe,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,CAAA,EAAG,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,EAAE,CAAU,OAAA,EAAA,OAAO,EAAE,EAAE;AACvE,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,eAAe,CAAC,IAAc,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,CAAQ,MAAA,CAAA,EAAE,IAAI,EAAE;AAC1D,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,eAAe,CAAC,IAAS,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAG,EAAA,IAAI,CAAC,SAAS,CAAO,KAAA,CAAA,EAAE,IAAI,EAAE;AACzD,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACJ;8GAxBU,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACFM,MAAM,QAAQ,GAAU,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,CAAC;;SCErE,mBAAmB,GAAA;AACjC,IAAA,MAAM,SAAS,GAAwC;QACrD,GAAGA,QAAqB;QACxB,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,CAAC;KAClF,CAAC;AACF,IAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAC7C;;MCFa,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;AAClC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AAC5B,KAAA;8GAHY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,wUCVhC,g1CAkCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDxBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACE,sBAAsB,EAAA,UAAA,EAGpB,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EAAA,g1CAAA,EAAA,CAAA;;;AEOP,MAAO,uBAAwB,SAAQ,aAAa,CAAA;AAP1D,IAAA,WAAA,GAAA;;AAQE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAEtC,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;QACvB,IAAU,CAAA,UAAA,GAAqB,EAAE,CAAC;QAClC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAqDjB,KAAA;IAnDC,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAgB,KAAI;YACjD,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAW,CAAC;AACtC,YAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;KACJ;IACD,iBAAiB,GAAA;QACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;aAC5B;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,gBAAgB,CAAC,EAAU,EAAA;QACzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;aAC1B;AACF,SAAA,CAAC,CAAC;KACJ;IACD,cAAc,GAAA;QACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACpC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;aACzB;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,uBAAuB,CAAC,EAAU,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,CAAc,WAAA,EAAA,EAAE,CAAiB,eAAA,CAAA;SAC1C,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;AACF,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,qBAAqB,CAAC,IAAS,EAAA;;AAE7B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAS,MAAA,EAAA,IAAI,CAAC,EAAE,CAAE,CAAA,CAAC,EAAE;YACzC,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,SAAA,CAAC,CAAC;KACJ;8GA1DU,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,2GCfpC,+zCAmCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzBY,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,uBAAuB,+BAAE,mBAAmB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKhE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAClE,0BAA0B,EAAA,QAAA,EAAA,+zCAAA,EAAA,CAAA;;;MEFzB,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QAEnC,IAAI,CAAA,IAAA,GAAG,MAAM,EAAU,CAAC;QACxB,IAAI,CAAA,IAAA,GAAG,MAAM,EAAU,CAAC;QACxB,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAU,CAAC;AAW7B,KAAA;AATC,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACxB;AACD,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACxB;AACD,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5B;8GAhBU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,8ZCTlC,mpBAeA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDNa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,IAAI,EAAA,QAAA,EAAA,mpBAAA,EAAA,CAAA;;;MEIL,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAkB,CAAC;QAC3C,IAAU,CAAA,UAAA,GAAG,KAAK,EAAU,CAAC;QAC7B,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAExB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAIjC,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QACb,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;AAMpB,KAAA;AALC,IAAA,QAAQ,MAAW;AAEnB,IAAA,eAAe,CAAC,EAAU,EAAA;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;KAC1C;8GAlBU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,oeCXnC,g5BA6BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDlBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EAGvB,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EAAA,g5BAAA,EAAA,CAAA;;;MEGA,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;QAClC,IAAU,CAAA,UAAA,GAAG,KAAK,EAAU,CAAC;QAC7B,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU,CAAC;AAC5B,KAAA;8GAJY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,ECZhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,s8BA0BA,EDhBY,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,oLAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAExB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,s8BAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,CAAA;;;MEGzB,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAU,EAAE,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QAC5B,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAehB,KAAA;AAdC,IAAA,YAAY,CAAC,CAAM,EAAA;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;AAC9D,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,UAAU,EAAE,mBAAmB;AAC/B,YAAA,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,QAAQ,EAAE,CAAC;AACZ,aAAA;AACF,SAAA,CAAC,CAAC;AACH,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAM,GAAC,CAAC,CAAC;KACnD;8GAlBU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbjC,o1BAwBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEN,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGrB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,o1BAAA,EAAA,CAAA;;;MEFP,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB,EAAE,CAAC,CAAC;AACtC,KAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,6NCTnC,6UAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDFa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,IAAI,EAAA,QAAA,EAAA,6UAAA,EAAA,CAAA;;;MEKL,uBAAuB,CAAA;AAPpC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAmB,EAAE,CAAC,CAAC;AAMxC,KAAA;IAJC,QAAQ,GAAA;;KAEP;AACD,IAAA,cAAc,MAAK;8GANR,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,ECZpC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,mjCA4BA,EDlBY,MAAA,EAAA,CAAA,ygBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,+dAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEhC,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cAGxB,IAAI,EAAA,OAAA,EACP,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,mjCAAA,EAAA,MAAA,EAAA,CAAA,ygBAAA,CAAA,EAAA,CAAA;;;MEKjC,uBAAuB,CAAA;AARpC,IAAA,WAAA,GAAA;AASE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,EAAE,CAAC,CAAC;QACtC,IAAO,CAAA,OAAA,GAAG,MAAM,EAA6D,CAAC;QAC9E,IAAQ,CAAA,QAAA,GAAG,MAAM,EAA6D,CAAC;QAE/E,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAOxB,KAAA;IANC,SAAS,CAAC,OAAsB,EAAE,OAA6B,EAAA;QAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;KACzC;IACD,UAAU,CAAC,OAAsB,EAAE,OAA6B,EAAA;QAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;KAC1C;8GAZU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfpC,igFA0DA,ED7CY,MAAA,EAAA,CAAA,0jBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,+nBAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAEjE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAGrB,aAAA,EAAA,iBAAiB,CAAC,IAAI,cACzB,IAAI,EAAA,OAAA,EACP,CAAC,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,igFAAA,EAAA,MAAA,EAAA,CAAA,0jBAAA,CAAA,EAAA,CAAA;;;AEqBzE,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAnBxD,IAAA,WAAA,GAAA;;QAqBE,IAAM,CAAA,MAAA,GAAQ,YAAY,CAAC;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACpD,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;QACpB,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;QACd,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAQ,CAAA,QAAA,GAAoB,EAAE,CAAC;QAC/B,IAAI,CAAA,IAAA,GAAG,+BAA+B,CAAC;AAyGxC,KAAA;IAxGC,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,GAAG,CAAC,aAAa,EAAE;oBACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;iBACvB;aACF;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,cAAc,CAAC,QAAgB,EAAA;;AAE7B,QAAA,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;AAChD,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,SAAS;AAClB,SAAA,CAAC,CAAC;KACJ;IACD,OAAO,GAAA;QACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACxC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC,CAAC;aACzD;AACF,SAAA,CAAC,CAAC;KACJ;IACD,YAAY,GAAA;QACV,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACxD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;aAC1B;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;AACvD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC;AAC/B,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;aAC9B;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,MAAM,CAAC,CAAM,EAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,GAAG,CAAC,aAAa,EAAE;AACrB,oBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;wBACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;qBAC3B;yBAAM;wBACL,IAAI,CAAC,aAAa,EAAE,CAAC;qBACtB;iBACF;qBAAM;AACL,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACnC;aACF;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;gBACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1C;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,QAAQ,CAAC,CAAM,EAAA;QACb,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAmC,gCAAA,EAAA,IAAI,CAAC,EAAE,CAAE,CAAA,CAAC,CAAC;KACzE;IACO,kBAAkB,GAAA;QACxB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACvD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;AACF,SAAA,CAAC,CAAC;KACJ;IACO,aAAa,GAAA;QACnB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAClD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aACxB;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;KACpG;IAEO,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,GAAG,CAAC,aAAa,EAAE;oBACrB,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACnD,wBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,4BAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;yBAC5B;AACF,qBAAA,CAAC,CAAC;iBACJ;aACF;AACF,SAAA,CAAC,CAAC;KACJ;IACD,uBAAuB,GAAA;QACrB,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAC5D,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;aAC1C;AACF,SAAA,CAAC,CAAC;KACJ;8GArHU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClClC,w7CA+BA,EDbI,MAAA,EAAA,CAAA,qDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8BACnB,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,mBAAmB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,uBAAuB,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,uBAAuB,EACvB,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,EACtB,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,yFACtB,qBAAqB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,qBAAqB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMZ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAnBjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,mBAAmB;wBACnB,uBAAuB;wBACvB,mBAAmB;wBACnB,uBAAuB;wBACvB,uBAAuB;wBACvB,sBAAsB;wBACtB,oBAAoB;wBACpB,sBAAsB;wBACtB,qBAAqB;wBACrB,iBAAiB;wBACjB,qBAAqB;AACtB,qBAAA,EAAA,QAAA,EACS,wBAAwB,EAAA,QAAA,EAAA,w7CAAA,EAAA,MAAA,EAAA,CAAA,qDAAA,CAAA,EAAA,CAAA;;;AEhB9B,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AAPvD,IAAA,WAAA,GAAA;;QAQE,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;QACvB,IAAU,CAAA,UAAA,GAAqB,EAAE,CAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAE1C,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AA+BjB,KAAA;IA7BC,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KACxC;IACD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,MAAM,EAAE,gBAAgB;SACzB,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;AACF,SAAA,CAAC,CAAC;KACJ;IACD,cAAc,GAAA;QACZ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;aAC5B;AACF,SAAA,CAAC,CAAC;KACJ;8GApCU,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,wGCdjC,msCA6BA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpBY,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,uBAAuB,+BAAE,mBAAmB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKhE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAClE,uBAAuB,EAAA,QAAA,EAAA,msCAAA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,CAAA;;;AEG7B,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAPxD,IAAA,WAAA,GAAA;;QAQE,IAAU,CAAA,UAAA,GAAqB,EAAE,CAAC;AAClC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACtC,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AA4BjB,KAAA;IA1BC,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IACD,cAAc,GAAA;QACZ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;aAC5B;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,yBAAyB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACrC,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,QAAA,CAAU,CAAC,CAAC,CAAC;;;;;SAKpC;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAyB,sBAAA,EAAA,EAAE,CAAE,CAAA,CAAC,EAAE;gBACpD,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,aAAA,CAAC,CAAC;SACJ;KACF;AACD,IAAA,YAAY,MAAK;8GA/BN,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,yGCblC,68CAkCA,EAAA,MAAA,EAAA,CAAA,kPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1BY,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,uBAAuB,+BAAE,qBAAqB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKlE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,CAAC,EAAA,QAAA,EACpE,wBAAwB,EAAA,QAAA,EAAA,68CAAA,EAAA,MAAA,EAAA,CAAA,kPAAA,CAAA,EAAA,CAAA;;;MEEvB,iCAAiC,CAAA;AAP9C,IAAA,WAAA,GAAA;QAQE,IAAI,CAAA,IAAA,GAAG,KAAK,EAAU,CAAC;QACvB,IAAM,CAAA,MAAA,GAAG,KAAK,EAAU,CAAC;QACzB,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU,CAAC;AAC5B,KAAA;8GAJY,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,ECX9C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,soBAiBA,EDVY,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,+QAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAP7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sCAAsC,cACpC,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,soBAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,CAAA;;;MEqBlC,6BAA6B,CAAA;AAb1C,IAAA,WAAA,GAAA;AAcE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACpD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAEjC,IAAQ,CAAA,QAAA,GAAoB,EAAE,CAAC;QAC/B,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;QACd,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QACf,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QACf,IAAQ,CAAA,QAAA,GAAQ,EAAE,CAAC;QACnB,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;QACpB,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;QACtB,IAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;QAExB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAkGnB,KAAA;IAhGC,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;IACD,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACvB;KACF;AACD,IAAA,eAAe,MAAW;IAC1B,UAAU,CAAC,GAAW,EAAE,SAAkB,EAAA;QACxC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACvC,OAAO;SACR;;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACxE,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,KAAK,EAAE;AACL,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,GAAG,EAAE,SAAS;AACf,iBAAA;AACF,aAAA,CAAC,CAAC;;;;SAIJ;aAAM;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACtB,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,GAAG,EAAE,SAAS;AACf,aAAA,CAAC,CAAC;SACJ;KACF;AACD,IAAA,YAAY,CAAC,QAAa,EAAA;QACxB,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACzD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9E,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnF,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC;AACnC,gBAAA,MAAM,SAAS,GAAG,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;gBAE3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;aAC3C;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,UAAU,CAAC,QAAgB,EAAA;QACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aACjD;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;AACvD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC;AAC/B,gBAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC;AACnC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,QAAQ,CAAC;aACxC;AACF,SAAA,CAAC,CAAC;KACJ;IACD,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,GAAG,CAAC,aAAa,EAAE;oBACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;iBAChC;aACF;AACF,SAAA,CAAC,CAAC;KACJ;IAED,uBAAuB,GAAA;QACrB,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AAClE,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;aAC1C;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;KACnG;AACD,IAAA,QAAQ,CAAC,CAAM,EAAA;QACb,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAmC,gCAAA,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;KAC/E;8GApHU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5B1C,kjCA8BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,uBAAuB,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,iCAAiC,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjC,iBAAiB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMR,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,mBAAmB;wBACnB,uBAAuB;wBACvB,uBAAuB;wBACvB,iCAAiC;wBACjC,iBAAiB;AAClB,qBAAA,EAAA,QAAA,EACS,iCAAiC,EAAA,QAAA,EAAA,kjCAAA,EAAA,CAAA;;;AEjBhC,MAAA,YAAY,GAAW;AAClC,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,qBAAqB;AAChC,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,SAAS,EAAE,oBAAoB;AAChC,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,SAAS,EAAE,uBAAuB;AACnC,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAE,qBAAqB;AACjC,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,6CAA6C;AACnD,QAAA,SAAS,EAAE,6BAA6B;AACzC,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,SAAS,EAAE,qBAAqB;AACjC,KAAA;;;ACjCH;;AAEG;;;;"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Course } from '../../interfaces';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CourseActionComponent {
|
|
4
|
+
course: import("@angular/core").InputSignal<Course>;
|
|
5
|
+
inWishList: import("@angular/core").InputSignal<boolean>;
|
|
6
|
+
cart: import("@angular/core").OutputEmitterRef<Course>;
|
|
7
|
+
wish: import("@angular/core").OutputEmitterRef<Course>;
|
|
8
|
+
checkout: import("@angular/core").OutputEmitterRef<Course>;
|
|
9
|
+
onCart(course: Course): void;
|
|
10
|
+
onWish(course: Course): void;
|
|
11
|
+
onCheckout(course: Course): void;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CourseActionComponent, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CourseActionComponent, "rolatech-course-action", never, { "course": { "alias": "course"; "required": true; "isSignal": true; }; "inWishList": { "alias": "inWishList"; "required": false; "isSignal": true; }; }, { "cart": "cart"; "wish": "wish"; "checkout": "checkout"; }, never, never, true, never>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ViewportScroller } from '@angular/common';
|
|
2
|
+
import { ElementRef, OnInit } from '@angular/core';
|
|
3
|
+
import { CourseDetail } from '../../interfaces';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class CourseDetailsComponent implements OnInit {
|
|
6
|
+
details: import("@angular/core").InputSignal<CourseDetail[]>;
|
|
7
|
+
instructor: import("@angular/core").InputSignal<string | undefined>;
|
|
8
|
+
username: import("@angular/core").InputSignal<string | undefined>;
|
|
9
|
+
el: ElementRef<any>;
|
|
10
|
+
viewportScroller: ViewportScroller;
|
|
11
|
+
platformId: Object;
|
|
12
|
+
player: any;
|
|
13
|
+
show: boolean;
|
|
14
|
+
mediaIndex: number;
|
|
15
|
+
finalSchedule: never[];
|
|
16
|
+
ngOnInit(): void;
|
|
17
|
+
onClickScroller(id: string): void;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CourseDetailsComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CourseDetailsComponent, "rolatech-course-details", never, { "details": { "alias": "details"; "required": true; "isSignal": true; }; "instructor": { "alias": "instructor"; "required": false; "isSignal": true; }; "username": { "alias": "username"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Course } from '../../interfaces';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CourseInfoComponent {
|
|
4
|
+
course: import("@angular/core").InputSignal<Course>;
|
|
5
|
+
instructor: import("@angular/core").InputSignal<string | undefined>;
|
|
6
|
+
username: import("@angular/core").InputSignal<string | undefined>;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CourseInfoComponent, never>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CourseInfoComponent, "rolatech-course-info", never, { "course": { "alias": "course"; "required": true; "isSignal": true; }; "instructor": { "alias": "instructor"; "required": false; "isSignal": true; }; "username": { "alias": "username"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Course } from '../../interfaces';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CourseItemComponent {
|
|
4
|
+
course: import("@angular/core").InputSignal<Course>;
|
|
5
|
+
row: import("@angular/core").InputSignal<boolean>;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CourseItemComponent, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CourseItemComponent, "rolatech-course-item", never, { "course": { "alias": "course"; "required": true; "isSignal": true; }; "row": { "alias": "row"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Media } from '../../interfaces';
|
|
2
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class CourseMediaComponent {
|
|
5
|
+
dialog: MatDialog;
|
|
6
|
+
media: import("@angular/core").InputSignal<Media[]>;
|
|
7
|
+
min: import("@angular/core").InputSignal<boolean>;
|
|
8
|
+
mediaIndex: number;
|
|
9
|
+
onImageClick(i: any): void;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CourseMediaComponent, never>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CourseMediaComponent, "rolatech-course-media", never, { "media": { "alias": "media"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class CourseMediaOwnerRendererComponent {
|
|
3
|
+
name: import("@angular/core").InputSignal<string | undefined>;
|
|
4
|
+
avatar: import("@angular/core").InputSignal<string | undefined>;
|
|
5
|
+
username: import("@angular/core").InputSignal<string | undefined>;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CourseMediaOwnerRendererComponent, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CourseMediaOwnerRendererComponent, "rolatech-course-media-owner-renderer", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; "username": { "alias": "username"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CoursePricing } from '../../interfaces';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CoursePricingComponent {
|
|
4
|
+
pricing: import("@angular/core").InputSignal<CoursePricing[]>;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CoursePricingComponent, never>;
|
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CoursePricingComponent, "rolatech-course-pricing", never, { "pricing": { "alias": "pricing"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { CourseSchedule } from '../../interfaces';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class CourseScheduleComponent implements OnInit {
|
|
5
|
+
schedule: import("@angular/core").InputSignal<CourseSchedule[]>;
|
|
6
|
+
ngOnInit(): void;
|
|
7
|
+
formatSchedule(): void;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CourseScheduleComponent, never>;
|
|
9
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CourseScheduleComponent, "rolatech-course-schedule", never, { "schedule": { "alias": "schedule"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CourseSection, CourseSectionLecture } from '../../interfaces';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CourseSectionsComponent {
|
|
4
|
+
purchased: import("@angular/core").InputSignal<boolean>;
|
|
5
|
+
sections: import("@angular/core").InputSignal<CourseSection[]>;
|
|
6
|
+
section: import("@angular/core").OutputEmitterRef<{
|
|
7
|
+
section: CourseSection;
|
|
8
|
+
lecture: CourseSectionLecture;
|
|
9
|
+
}>;
|
|
10
|
+
checkout: import("@angular/core").OutputEmitterRef<{
|
|
11
|
+
section: CourseSection;
|
|
12
|
+
lecture: CourseSectionLecture;
|
|
13
|
+
}>;
|
|
14
|
+
panelOpenState: boolean;
|
|
15
|
+
onSection(section: CourseSection, lecture: CourseSectionLecture): void;
|
|
16
|
+
onCheckout(section: CourseSection, lecture: CourseSectionLecture): void;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CourseSectionsComponent, never>;
|
|
18
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CourseSectionsComponent, "rolatech-course-sections", never, { "purchased": { "alias": "purchased"; "required": false; "isSignal": true; }; "sections": { "alias": "sections"; "required": false; "isSignal": true; }; }, { "section": "section"; "checkout": "checkout"; }, never, never, true, never>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Course } from './course';
|
|
2
|
+
export interface CourseCategory {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
media: CourseCategoryMedia[];
|
|
6
|
+
courses: Course[];
|
|
7
|
+
createdAt: string;
|
|
8
|
+
originId: string;
|
|
9
|
+
children: CourseCategory;
|
|
10
|
+
parent: CourseCategory;
|
|
11
|
+
}
|
|
12
|
+
export interface CourseCategoryMedia {
|
|
13
|
+
id: string;
|
|
14
|
+
url: string;
|
|
15
|
+
alt: string;
|
|
16
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { CourseCategory } from './category';
|
|
2
|
+
import { Media } from './media';
|
|
3
|
+
export interface Course {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
categories?: CourseCategory[];
|
|
8
|
+
createdAt: string;
|
|
9
|
+
updatedAt: string;
|
|
10
|
+
status: CourseStatus | string;
|
|
11
|
+
media: Media[];
|
|
12
|
+
type: CourseType;
|
|
13
|
+
instructorId: string;
|
|
14
|
+
classroom: CourseClassroom;
|
|
15
|
+
details: CourseDetail[];
|
|
16
|
+
pricing: CoursePricing[];
|
|
17
|
+
schedule: CourseSchedule[];
|
|
18
|
+
}
|
|
19
|
+
export interface CoursePricing {
|
|
20
|
+
id: string;
|
|
21
|
+
min: number;
|
|
22
|
+
max: number;
|
|
23
|
+
total: number;
|
|
24
|
+
}
|
|
25
|
+
export interface CourseSchedule {
|
|
26
|
+
id: string;
|
|
27
|
+
title: string;
|
|
28
|
+
content: string;
|
|
29
|
+
startDate: string;
|
|
30
|
+
startTime: string;
|
|
31
|
+
startAt: string;
|
|
32
|
+
endDate: string;
|
|
33
|
+
endTime: string;
|
|
34
|
+
endAt: string;
|
|
35
|
+
}
|
|
36
|
+
export interface CourseClassroom {
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
contact: string;
|
|
40
|
+
phone: string;
|
|
41
|
+
province: string;
|
|
42
|
+
city: string;
|
|
43
|
+
county: string;
|
|
44
|
+
town: string;
|
|
45
|
+
address: string;
|
|
46
|
+
detail: string;
|
|
47
|
+
latitude: string;
|
|
48
|
+
longitude: string;
|
|
49
|
+
media: Media[];
|
|
50
|
+
isUploading?: boolean;
|
|
51
|
+
room?: string;
|
|
52
|
+
}
|
|
53
|
+
export declare enum CourseStatus {
|
|
54
|
+
ACTIVE,
|
|
55
|
+
ACCEPTED,
|
|
56
|
+
AWAITING,
|
|
57
|
+
PENDING,
|
|
58
|
+
STARTED,
|
|
59
|
+
ENDED,
|
|
60
|
+
DELETED,
|
|
61
|
+
DRAFT
|
|
62
|
+
}
|
|
63
|
+
export declare enum CourseRequestStatus {
|
|
64
|
+
AWAITING = "\u5BA1\u6838\u4E2D",
|
|
65
|
+
ACTIVE = "\u5DF2\u901A\u8FC7",
|
|
66
|
+
REJECTED = "\u5DF2\u62D2\u7EDD"
|
|
67
|
+
}
|
|
68
|
+
export interface CourseReviewRecord {
|
|
69
|
+
content: string;
|
|
70
|
+
status: CourseReviewStatus;
|
|
71
|
+
course: Course;
|
|
72
|
+
createdAt: string;
|
|
73
|
+
updatedAt: string;
|
|
74
|
+
}
|
|
75
|
+
export declare enum CourseReviewStatus {
|
|
76
|
+
ACCEPTED = "\u5DF2\u901A\u8FC7",
|
|
77
|
+
REJECTED = "\u672A\u901A\u8FC7"
|
|
78
|
+
}
|
|
79
|
+
export interface CourseDetail {
|
|
80
|
+
id: string;
|
|
81
|
+
title: string;
|
|
82
|
+
description: string;
|
|
83
|
+
content: string;
|
|
84
|
+
media: Media[];
|
|
85
|
+
isUploading?: boolean;
|
|
86
|
+
}
|
|
87
|
+
export interface CourseSection {
|
|
88
|
+
id?: string;
|
|
89
|
+
title: string;
|
|
90
|
+
description: string;
|
|
91
|
+
lectures: CourseSectionLecture[];
|
|
92
|
+
}
|
|
93
|
+
export interface CourseSectionLecture {
|
|
94
|
+
id?: string;
|
|
95
|
+
title: string;
|
|
96
|
+
description: string;
|
|
97
|
+
type: CourseSectionLectureContentType | string;
|
|
98
|
+
item: CourseSectionLectureVideo;
|
|
99
|
+
isUploading?: boolean;
|
|
100
|
+
progress?: number | 0;
|
|
101
|
+
}
|
|
102
|
+
export interface CourseSectionLectureItem {
|
|
103
|
+
id: string;
|
|
104
|
+
}
|
|
105
|
+
export declare enum CourseSectionLectureContentType {
|
|
106
|
+
VIDEO,
|
|
107
|
+
ARTICLE
|
|
108
|
+
}
|
|
109
|
+
export interface CourseSectionLectureVideo {
|
|
110
|
+
id?: string;
|
|
111
|
+
url: string;
|
|
112
|
+
thumbnail: string;
|
|
113
|
+
duration: number;
|
|
114
|
+
isUploading?: boolean;
|
|
115
|
+
progress: number | 0;
|
|
116
|
+
canBePreviewed: boolean;
|
|
117
|
+
}
|
|
118
|
+
export interface CourseSectionLectureVideoMetadata {
|
|
119
|
+
duration: string;
|
|
120
|
+
}
|
|
121
|
+
export interface Schedule {
|
|
122
|
+
id?: string;
|
|
123
|
+
title: string;
|
|
124
|
+
content: string;
|
|
125
|
+
startDate?: string;
|
|
126
|
+
startTime?: string;
|
|
127
|
+
startAt: string;
|
|
128
|
+
endDate?: string;
|
|
129
|
+
endTime?: string;
|
|
130
|
+
endAt: string;
|
|
131
|
+
}
|
|
132
|
+
export interface Pricing {
|
|
133
|
+
id?: string;
|
|
134
|
+
min: number;
|
|
135
|
+
max: number;
|
|
136
|
+
total: number;
|
|
137
|
+
}
|
|
138
|
+
export declare enum CourseType {
|
|
139
|
+
ONLINE,
|
|
140
|
+
OFFLINE,
|
|
141
|
+
MIXED
|
|
142
|
+
}
|
|
143
|
+
export declare const ScheduleDate: string[];
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { Media } from './media';
|
|
2
|
+
export { Course, CourseStatus, CourseRequestStatus, CourseDetail, Schedule, CourseSchedule, CoursePricing, ScheduleDate, Pricing, CourseType, CourseReviewRecord, CourseReviewStatus, CourseClassroom, CourseSection, CourseSectionLecture, CourseSectionLectureVideo, CourseSectionLectureContentType, CourseSectionLectureVideoMetadata, } from './course';
|
|
3
|
+
export { CourseCategory, CourseCategoryMedia } from './category';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { CourseCategory, Course } from '../../../interfaces';
|
|
3
|
+
import { CategoryService, CourseService } from '../../../services';
|
|
4
|
+
import { BaseComponent } from '@rolatech/angular-components';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class CourseCategoryComponent extends BaseComponent implements OnInit {
|
|
7
|
+
categoryService: CategoryService;
|
|
8
|
+
courseService: CourseService;
|
|
9
|
+
category: CourseCategory;
|
|
10
|
+
courses: Course[];
|
|
11
|
+
categories: CourseCategory[];
|
|
12
|
+
loading: boolean;
|
|
13
|
+
ngOnInit(): void;
|
|
14
|
+
findAllCategories(): void;
|
|
15
|
+
findCategoryById(id: string): void;
|
|
16
|
+
findAllCourses(): void;
|
|
17
|
+
findCoursesByCategoryId(id: string): void;
|
|
18
|
+
loadCoursesByCategory(item: any): void;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CourseCategoryComponent, never>;
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CourseCategoryComponent, "rolatech-course-category", never, {}, {}, never, never, true, never>;
|
|
21
|
+
}
|