@servicemind.tis/tis-image-and-file-upload-and-view 1.1.3 → 1.1.5
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.
|
@@ -275,7 +275,7 @@ class TisHelperService {
|
|
|
275
275
|
let errorCode = 'Unknown Error';
|
|
276
276
|
const httpError = error;
|
|
277
277
|
if (httpError.status >= 400) {
|
|
278
|
-
const errorFromServer = httpError.error;
|
|
278
|
+
const errorFromServer = httpError.error?.errors || httpError.error || [];
|
|
279
279
|
if (Array.isArray(errorFromServer) && errorFromServer.length > 0) {
|
|
280
280
|
errorMessage = errorFromServer[0].message;
|
|
281
281
|
errorCode = errorFromServer[0].code;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"servicemind.tis-tis-image-and-file-upload-and-view.mjs","sources":["../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view.service.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-pdf-viewer/tis-pdf-viewer.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-pdf-viewer/tis-pdf-viewer.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-excel-file-viewer/tis-excel-file-viewer.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-excel-file-viewer/tis-excel-file-viewer.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-video/tis-video.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-video/tis-video.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-file-viewer.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-file-viewer.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-preview-image/tis-preview-image.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-preview-image/tis-preview-image.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-error-dialog/tis-error-dialog.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-error-dialog/tis-error-dialog.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/services/tis-helper.service.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-confirmation-dialog/tis-confirmation-dialog.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-confirmation-dialog/tis-confirmation-dialog.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view.module.ts","../../../projects/tis-image-and-file-upload-and-view/src/public-api.ts","../../../projects/tis-image-and-file-upload-and-view/src/servicemind.tis-tis-image-and-file-upload-and-view.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TisImageAndFileUploadAndViewService {\n\n constructor() { }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport type { SafeUrl } from '@angular/platform-browser';\nimport { NgxExtendedPdfViewerComponent } from 'ngx-extended-pdf-viewer';\n\n@Component({\n selector: 'tis-pdf-viewer',\n standalone: false,\n templateUrl: './tis-pdf-viewer.component.html',\n styleUrl: './tis-pdf-viewer.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TisPdfViewerComponent implements OnChanges {\n\n loading = true;\n isError = false;\n\n @Input({ required: true }) src!: string;\n\n @ViewChild(NgxExtendedPdfViewerComponent, { static: false })\n private pdfViewer!: NgxExtendedPdfViewerComponent;\n\n constructor(\n private cdRef: ChangeDetectorRef\n ) {\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes['src']) {\n console.log('Pdf Viewer: src changed: ', changes['src']);\n }\n }\n\n destroyPdfViewer() {\n this.pdfViewer.ngOnDestroy();\n }\n\n loadingFinished(ev: any) {\n console.log('PDF Loaded', ev)\n this.loading = false;\n this.cdRef.detectChanges();\n this.pdfViewer.height = 'auto';\n }\n\n loadingError(ev: any) {\n console.log('PDF Loading Error:', ev);\n this.isError = true;\n this.loading = false;\n this.cdRef.detectChanges();\n }\n\n}\n","@if (isError) {\n <div class=\"flex tis-justify-content-center py-4\">\n <h3> Some Error Occurred in Loading PDF File. Please Try again. </h3>\n </div>\n} \n\n@if (!isError) {\n <div class=\"tis-extended-pdf-viewer\">\n @if(loading) {\n <div class=\"loading\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"50\"></mat-progress-spinner>\n </div>\n }\n <ngx-extended-pdf-viewer [src]=\"src\"\n [showToolbar]=\"true\"\n [showSidebarButton]=\"true\"\n [showFindButton]=\"false\"\n [showPagingButtons]=\"true\"\n [showDrawEditor]=\"false\"\n [showStampEditor]=\"false\"\n [showTextEditor]=\"false\"\n [showZoomButtons]=\"true\"\n [showPresentationModeButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [showPrintButton]=\"true\"\n [showDownloadButton]=\"true\"\n [showSecondaryToolbarButton]=\"false\"\n [showRotateButton]=\"true\"\n [showHandToolButton]=\"false\"\n [showScrollingButton]=\"true\"\n [showSpreadButton]=\"false\"\n [showPropertiesButton]=\"false\"\n [zoom]=\"'page-fit'\"\n (pdfDownloaded)=\"loadingFinished($event)\"\n (pdfLoaded)=\"loadingFinished($event)\"\n (pdfLoadingFailed)=\"loadingError($event)\"\n >\n </ngx-extended-pdf-viewer>\n </div>\n}\n \n ","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport type { SafeUrl } from '@angular/platform-browser';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'tis-excel-file-viewer',\n standalone: false,\n templateUrl: './tis-excel-file-viewer.component.html',\n styleUrl: './tis-excel-file-viewer.component.css'\n})\nexport class TisExcelFileViewerComponent implements OnChanges {\n\n @Input({ required: true }) src!: SafeUrl;\n\n baseUrl = `https://view.officeapps.live.com/op/embed.aspx?src=`;\n iframeSrc: SafeUrl | null = null;\n\n constructor(private sanitizer: DomSanitizer ) {\n\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['src']) {\n console.log('Url Received', this.src);\n const src = this.baseUrl + this.src;\n this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(src);\n console.log('Iframe src:', this.iframeSrc);\n }\n }\n\n \n}\n","<div class=\"bg-slate-900 w-full h-5\">\n \n</div>\n<div class=\"aspect-w-16 aspect-h-9\">\n <iframe class=\"w-full h-full\" [src]=\"iframeSrc\" frameborder='0'>This is an embedded <a target='_blank'\n href='http://office.com'>Microsoft Office</a> document, powered by <a target='_blank'\n href='http://office.com/webapps'>Office Online</a>.</iframe>\n</div>","import { Component, Input, SimpleChanges } from '@angular/core';\nimport type { SafeUrl } from '@angular/platform-browser';\n\n@Component({\n selector: 'tis-video',\n standalone: false,\n templateUrl: './tis-video.component.html',\n styleUrl: './tis-video.component.css'\n})\nexport class TisVideoComponent {\n @Input({ required: true }) src!: SafeUrl;\n type!: string;\n\n constructor() {}\n\n ngOnInit(): void {\n if(this.src){\n this.type = this.getFileType(String(this.src));\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes['src']) {\n console.log('Pdf Viewer: src changed: ', changes['src']);\n this.type = this.getFileType(changes['src'].currentValue);\n }\n }\n\n getFileType(text: string) {\n let txtArr = text.split('.');\n let fileType = txtArr[txtArr.length - 1];\n return fileType.toLocaleLowerCase() == 'mov' ? 'mp4': fileType.toLocaleLowerCase();\n }\n}\n","<video controls autoplay style=\"min-width: 300px; max-width: 90vw; min-height: 300px; max-height: 90vh;\">\n <source [src]=\"src\" type=\"video/{{type}}\">\n Your browser does not support the video tag.\n</video>","import { Component, Inject, ViewChild } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport type { FileViewerDialogData } from '../interfaces';\nimport { TisPdfViewerComponent } from './tis-pdf-viewer/tis-pdf-viewer.component';\n\n@Component({\n selector: 'tis-file-viewer',\n standalone: false,\n templateUrl: './tis-file-viewer.component.html',\n styleUrl: './tis-file-viewer.component.css'\n})\nexport class TisFileViewerComponent {\n safeUrl!: string;\n\n @ViewChild(TisPdfViewerComponent, { static: false }) private pdfViewer!: TisPdfViewerComponent;\n\n constructor(\n public dialogRef: MatDialogRef<TisFileViewerComponent>,\n @Inject(MAT_DIALOG_DATA) public data: FileViewerDialogData,\n private sanitizer: DomSanitizer\n ) {\n console.log('File Viewer Data:', data);\n\n this.safeUrl = this.data.src;\n console.log('FileViewer SafeUrl:', this.safeUrl);\n\n dialogRef.beforeClosed().subscribe((result) => {\n console.log('The dialog is about to be closed');\n // Here's the interesting bit:\n if (this.pdfViewer) {\n this.pdfViewer.destroyPdfViewer();\n console.log('PDF Viewer Destroyed.');\n }\n });\n }\n\n downloadFile() {\n var el = document.createElement(\"a\");\n el.setAttribute(\"href\", this.safeUrl);\n el.setAttribute(\"download\", 'Video-' + new Date().valueOf());\n document.body.appendChild(el);\n el.click();\n el.remove();\n }\n\n onClose(status: boolean | null): void {\n this.dialogRef.close(status);\n }\n}\n","@if(safeUrl) {\n <div class=\"tis-pdf-viewer\">\n @if(data.fileType == 'video') {\n <mat-icon class=\"download-btn\" (click)=\"downloadFile()\" matTooltip=\"Download\">download</mat-icon>\n <!-- <button mat-icon-button color=\"primary\" class=\"download-btn\" >\n <mat-icon>download</mat-icon>\n </button> -->\n }\n @else {\n <button mat-mini-fab color=\"primary\" class=\"close-btn\" (click)=\"onClose(null)\" matTooltip=\"Close\">\n <mat-icon>clear</mat-icon>\n </button>\n }\n @if(data.fileType == 'pdf') {\n <tis-pdf-viewer [src]=\"safeUrl\"></tis-pdf-viewer>\n }\n @else if(data.fileType == 'excel') {\n <tis-excel-file-viewer [src]=\"safeUrl\"></tis-excel-file-viewer>\n }\n @else if(data.fileType == 'video') {\n <tis-video [src]=\"safeUrl\"></tis-video>\n }\n </div>\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'tis-preview-image',\n standalone: false,\n templateUrl: './tis-preview-image.component.html',\n styleUrl: './tis-preview-image.component.css'\n})\nexport class TisPreviewImageComponent {\n width = 850;\n height = 650;\n isLoading: boolean = true;\n isLandscape: boolean | undefined;\n orientation: string | undefined;\n imageWidth: number | undefined;\n imageHeight: number | undefined;\n\n\n constructor(\n public dialogRef: MatDialogRef<TisPreviewImageComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) { }\n\n ngOnInit(): void {\n if (this.data.url) {\n setTimeout(() => {\n this.checkImageOrientation(this.data.url);\n }, 500);\n }\n }\n\n checkImageOrientation(imageUrl: string): void {\n const img = new Image();\n img.src = imageUrl;\n this.isLoading = true;\n\n img.onload = () => {\n this.imageWidth = img.naturalWidth;\n this.imageHeight = img.naturalHeight;\n this.isLandscape = img.naturalWidth > img.naturalHeight;\n this.orientation = this.isLandscape ? 'landscape-image' : 'portrait-image';\n this.isLoading = false;\n };\n\n img.onerror = () => {\n console.error('Failed to load image.');\n this.isLoading = false;\n };\n }\n\n onClose() {\n this.dialogRef.close()\n }\n}\n","@if(isLoading){\n <div style=\"width: 350px; height: 350px; display: flex; justify-content: center; align-items: center\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"80\"></mat-progress-spinner>\n </div>\n}\n@else{\n <div class=\"w-100 dialog-container\" appScrolling style=\"--img-width: {{(imageWidth && imageWidth < 700) ? imageWidth : 650}}px; --img-height: {{(imageHeight && imageHeight < 600) ? imageHeight : 600}}px\">\n <mat-icon\n class=\"close-icon\"\n (click)=\"onClose()\">cancel</mat-icon>\n <img \n *ngIf=\"data.url\" \n [src]=\"data.url\" \n alt=\"preview-image\" \n class=\"preview-image {{orientation}}\">\n </div>\n}","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'lib-tis-error-dialog',\n standalone: false,\n templateUrl: './tis-error-dialog.component.html',\n styleUrl: './tis-error-dialog.component.css'\n})\nexport class TisErrorDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<TisErrorDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {}\n\n onClose(): void {\n this.dialogRef.close();\n }\n}\n","<h1 mat-dialog-title>\n <mat-icon class=\"{{data?.iconClass}}\">{{data?.icon}}</mat-icon>\n {{data?.title}}\n</h1>\n<div mat-dialog-content>\n {{data?.message}}\n</div>\n<div mat-dialog-actions>\n <button mat-button class=\"tis-text-upper {{data?.buttonClass ?? 'tis-btn-primary'}}\" (click)=\"onClose()\" cdkFocusInitial *ngIf=\"data?.buttonText && data?.buttonText != ''\">{{data?.buttonText}}</button>\n</div>","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar';\nimport { TisErrorDialogComponent } from '../tis-error-dialog/tis-error-dialog.component';\nimport { Observable } from 'rxjs';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TisHelperService {\n\n constructor(\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n private http: HttpClient\n ) { }\n\n showHttpErrorMsg(error: HttpErrorResponse, duration = 5000) {\n console.log('httpError: ', error);\n\n let errorMessage = 'Some Unknown Error Occurred.';\n let errorCode = 'Unknown Error';\n const httpError = error;\n\n if (httpError.status >= 400) {\n const errorFromServer = httpError.error;\n if (Array.isArray(errorFromServer) && errorFromServer.length > 0) {\n errorMessage = errorFromServer[0].message;\n errorCode = errorFromServer[0].code;\n }\n } else if (httpError.status < 100) {\n errorMessage = httpError.message;\n errorCode = httpError.statusText;\n }\n\n if (errorCode == \"VALIDATION_ERROR\" || errorCode == \"NOT_FOUND_ERROR\" || errorCode == \"THIRD_PARTY_API_ERROR\") {\n let confirmBoxData: any = {\n title: \"Error !\",\n message: errorMessage,\n icon: \"error\",\n iconClass: \"tis-text-danger\",\n buttonText: \"Ok\",\n buttonClass: \"tis-btn-primary\",\n };\n\n const dialogRef: MatDialogRef<TisErrorDialogComponent> = this.dialog.open(TisErrorDialogComponent, {\n width: \"550px\",\n panelClass: ['tis-simple-confirmation'],\n data: confirmBoxData,\n disableClose: false,\n });\n\n return dialogRef;\n\n } else {\n const snackbarRef: MatSnackBarRef<TextOnlySnackBar> = this.snackBar.open(errorMessage, 'Error', { duration: duration });\n return snackbarRef;\n }\n\n }\n\n showSuccessMsg(message: string, title: string, duration = 5000) {\n this.snackBar.open(message, title, {\n duration: duration\n })\n }\n\n showErrorMsg(message: string, title: string, duration = 5000) {\n this.snackBar.open(message, title, {\n duration: duration\n })\n }\n\n async compressFile(image: any, mimeType: string): Promise<Blob> {\n\n let imageData = image;\n\n let imageBlob: Blob = this.dataURItoBlob(imageData.split(',')[1], mimeType);\n return imageBlob;\n }\n\n dataURItoBlob(dataURI: string, mimeType: string): Blob {\n const byteString = window.atob(dataURI);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const int8Array = new Uint8Array(arrayBuffer);\n for (let i = 0; i < byteString.length; i++) {\n int8Array[i] = byteString.charCodeAt(i);\n }\n const blob = new Blob([int8Array], { type: mimeType });\n return blob;\n }\n\n getDataUrlFromFile(file: any) {\n return new Promise((resolve, reject) => {\n var reader = new FileReader();\n reader.onload = (e: any) => {\n resolve(e.target.result)\n };\n reader.onerror = (e: any) => {\n reject(e.target.error);\n };\n reader.readAsDataURL(file);\n })\n }\n\n getUploadUrl(url: string, filename: string, mimeType: string, type: string): Observable<any> {\n return this.http.post(url, { filename, mimeType, type });\n }\n\n attachFilesToEntity(url: string, data: any, limit: number): Observable<any> {\n return this.http.post(`${url}?limit=${limit}`, data);\n }\n\n updateTag(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n updateSequence(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n putFile(url: string, file: File, contentType?: string): Observable<any> {\n const headers = new HttpHeaders({ \"content-type\": contentType ? contentType : \"binary/octet-stream\"}).set('X-Skip-Auth-Interceptor', \"\");\n return this.http.put(url, file, { headers });\n }\n\n deleteUploadedFile(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n}","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'tis-confirmation-dialog',\n standalone: false,\n templateUrl: './tis-confirmation-dialog.component.html',\n styleUrl: './tis-confirmation-dialog.component.css'\n})\nexport class TisConfirmationDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<TisConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n this.dialogRef.addPanelClass(['md-tis-w-400-px']);\n }\n\n onClose(status: boolean | null): void {\n this.dialogRef.close(status);\n }\n}\n","<h1 mat-dialog-title style=\"align-items: center; display: flex;\">\n <mat-icon class=\"{{data?.iconClass}}\" style=\"color: var(--tis-cancel, #bb333b)\">{{data?.icon}}</mat-icon>\n <span>{{data?.title}}</span>\n</h1>\n<div mat-dialog-content style=\"padding: 20px 24px; padding-top: 0px;\">\n @if(data?.html){\n <h5 class=\"title\">{{data?.message}}</h5>\n <div [innerHTML]=\"data.html\">\n </div>\n }\n @else {\n <span>{{data?.message}}</span>\n }\n</div>\n<div mat-dialog-actions>\n <button mat-button class=\"{{data?.cancelButtonClass}}\" style=\"color: var(--tis-primary, var(--mat-sys-primary))\" (click)=\"onClose(false)\" *ngIf=\"data?.cancelButtonText && data?.cancelButtonText != ''\">{{data?.cancelButtonText}}</button>\n <button mat-button class=\"{{data?.approveButtonClass}}\" style=\"color: var(--tis-cancel, #bb333b)\" (click)=\"onClose(true)\" cdkFocusInitial *ngIf=\"data?.approveButtonText && data?.approveButtonText != ''\">{{data?.approveButtonText}}</button>\n</div>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { TisFileViewerComponent } from '../tis-file-viewer/tis-file-viewer.component';\nimport type { DialogConfig, FileViewerDialogData, FileViewerFileType, OptionConfig, UrlConfig } from '../interfaces';\nimport { TisPreviewImageComponent } from '../tis-preview-image/tis-preview-image.component';\nimport { BehaviorSubject, Observable, map, sequenceEqual, shareReplay } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { TisHelperService } from '../services/tis-helper.service';\nimport { TisConfirmationDialogComponent } from '../tis-confirmation-dialog/tis-confirmation-dialog.component';\nimport { Config } from '../interfaces/config.type';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\n\nconst generateRandomString = (length: number): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n}\n\n@Component({\n selector: 'tis-image-and-file-upload-and-view',\n standalone: false,\n templateUrl: './tis-image-and-file-upload-and-view.component.html',\n styleUrl: './tis-image-and-file-upload-and-view.component.css'\n})\nexport class TisImageAndFileUploadAndViewComponent {\n private changeSubject = new BehaviorSubject<boolean>(false);\n\n @Input({required: true}) urlConfig!: UrlConfig;\n @Input() entityType!: string;\n @Input() entityId: any;\n @Input() viewType: 'card' | 'list' = 'card';\n @Input() type: 'image' | 'file' = 'image';\n @Input() label: string | null = null;\n @Input() disabled: boolean = false;\n @Input() data: any;\n @Input() hint: string | null = null;\n @Input() accept: string = '';\n @Input() selectedId: any = null;\n @Input() options: OptionConfig | null = null;\n @Input() required: boolean = false;\n @Input() previewOnly: boolean = false;\n @Input() previewInFlex: boolean = false;\n @Input() imageItemClass: string = '';\n @Input() isEnableDeleteConfirmation: boolean = true;\n @Input() isAddUploadedFileInLastNode: boolean = false;\n @Input() deleteConfirmationMsg!: string;\n @Input() dialogConfig!: DialogConfig;\n @Output() uploadInProgress = new EventEmitter();\n @Output() onUploaded = new EventEmitter();\n @Output() onFileSelect = new EventEmitter<any>();\n @Output() onFileRemoved = new EventEmitter<any>();\n\n @Input() enableDragNDrop: boolean = false;\n @Output() dataSequenceChange = new EventEmitter<any>();\n\n isMobile = false;\n isTab = false;\n\n isHandset$!: Observable<boolean>;\n isTab$!: Observable<boolean>;\n\n\n config: Config = {\n isCompressed: false,\n hiddenDeleteBtn: false,\n hiddenPreview: false,\n selectionMode: false,\n isStoredDb: false,\n isMultiple: false,\n limit: 10,\n cols: 5,\n colsForTab: 5,\n colsForMobile: 3,\n height: '130px',\n selectorId: generateRandomString(10),\n enableImageTags: false\n };\n\n isSliderLoaded = true;\n\n filesArray: any[] = [\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg?Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152621Z&X-Amz-Expires=900&X-Amz-Signature=4004cfb10a740b9623d486de992a06f53b458ed6fc151c092eea88a3059eae8f&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"f7a32cd0-d0c1-474a-838e-47402d80527a.jpeg\",\n // \"fileName\": \"1452664590074.jpeg\",\n // \"uploadPath\": \"/survey_orders/f7a32cd0-d0c1-474a-838e-47402d80527a.jpeg\",\n // \"resourceUrl\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg\"\n // }\n // },\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/31033a2a-5db6-450d-a541-58a94654dd0c.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql?Content-Type=application%2Fsql&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152641Z&X-Amz-Expires=900&X-Amz-Signature=bcdf347df2a6495615bf48d619492e1deac2264231161da5dc3becaa7f45a796&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"6c537889-c72a-48ca-9134-638e8d6a1aac.sql\",\n // \"fileName\": \"eccom_bermuda.sql\",\n // \"uploadPath\": \"/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql\",\n // \"resourceUrl\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql\"\n // }\n // },\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/b8424185-30c6-4f44-ba1e-ff616dfd6576.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf?Content-Type=application%2Fpdf&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152656Z&X-Amz-Expires=900&X-Amz-Signature=85643479c3fbecc5bd1fee9783e3cb72e27e16a034921b52cf2f377eefb01ff9&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"232f2548-dc93-4204-8835-86b69f3005a7.pdf\",\n // \"fileName\": \"print-registration-4x6.pdf\",\n // \"uploadPath\": \"/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf\",\n // \"resourceUrl\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf\"\n // }\n // }\n ];\n currentEntityId!: number;\n currentEntityType!: string;\n images = [];\n loading = false;\n status = false;\n\n\n constructor(\n public dialog: MatDialog,\n private helper: TisHelperService,\n private breakpointObserver: BreakpointObserver\n ) { }\n\n ngOnInit() {\n this.isHandset$ = this.breakpointObserver.observe([Breakpoints.Handset])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n\n this.isTab$ = this.breakpointObserver.observe([Breakpoints.TabletPortrait])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n \n this.prepareConfig();\n\n // if(this.viewType == 'single-card'){\n // this.generateFilesForSingleCard();\n // }\n }\n\n ngAfterViewInit() {\n this.isHandset$.subscribe(r => {\n console.log('IS HANDSET:', r);\n this.isMobile = r;\n this.changeSubject.next(true);\n });\n this.isTab$.subscribe(r => {\n console.log('IS TAB:', r);\n this.isTab = r;\n this.changeSubject.next(true);\n });\n\n this.changeSubject.subscribe(status => {\n let cols = 1;\n if (this.isMobile) {\n cols = this.options?.colsForMobile ?? 3;\n }\n else if (this.isTab) {\n cols = this.options?.colsForTab ?? 4;\n }\n else {\n cols = this.options?.cols ?? 5;\n }\n\n this.config.cols = cols;\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['entityId']) {\n this.currentEntityId = changes['entityId'].currentValue;\n }\n if (changes['entityType']) {\n this.currentEntityType = changes['entityType'].currentValue;\n }\n if (changes['urlConfig']) {\n this.urlConfig = changes['urlConfig'].currentValue;\n this.config.isStoredDb = false;\n if (this.urlConfig?.attachToEntity) {\n this.config.isStoredDb = true;\n }\n }\n if (changes['options']) {\n this.prepareConfig();\n }\n if (changes['data']) {\n this.filesArray = changes['data']?.currentValue ?? [];\n this.filesArray = this.filesArray?.map(r => {\n r.loading = false;\n return r;\n });\n console.log(\"this.filesArray\", this.filesArray);\n }\n }\n\n prepareConfig() {\n if (this.options?.isCompressed) {\n this.config.isCompressed = this.options?.isCompressed;\n }\n\n if (this.options?.isSliderPreview) {\n this.config.isSliderPreview = this.options?.isSliderPreview;\n }\n\n if (this.options?.hiddenDeleteBtn) {\n this.config.hiddenDeleteBtn = this.options?.hiddenDeleteBtn;\n }\n\n if (this.options?.hiddenPreview) {\n this.config.hiddenPreview = this.options?.hiddenPreview;\n }\n\n if (this.options?.selectionMode) {\n this.config.selectionMode = this.options?.selectionMode;\n }\n\n this.config.isStoredDb = false;\n if (this.urlConfig?.attachToEntity) {\n this.config.isStoredDb = true;\n }\n\n if (this.options?.isMultiple) {\n this.config.isMultiple = this.options?.isMultiple;\n }\n\n if (this.options?.fileSize) {\n this.config.fileSize = this.options?.fileSize;\n }\n\n if (this.options?.limit) {\n this.config.limit = this.options?.limit;\n }\n\n if (this.options?.cols) {\n this.config.cols = this.options?.cols;\n }\n\n if (this.options?.colsForTab) {\n this.config.colsForTab = this.options?.colsForTab;\n }\n\n if (this.options?.colsForMobile) {\n this.config.colsForMobile = this.options?.colsForMobile;\n }\n\n if (this.options?.height) {\n this.config.height = this.options?.height;\n }\n\n if (this.options?.selectorId) {\n this.config.selectorId = this.options?.selectorId;\n }\n\n if (this.options?.enableImageTags) {\n this.config.enableImageTags = this.options?.enableImageTags;\n }\n }\n\n setSliderLoading() {\n this.isSliderLoaded = false;\n setTimeout(() => {\n this.isSliderLoaded = true;\n }, 20);\n }\n\n openImageSelector(selectorId: string = this.config?.selectorId) {\n document.getElementById(selectorId)?.click();\n }\n\n async detectImages(event: any, index: number = -1) {\n console.log('detectImages:', event);\n event.preventDefault();\n\n if (this.config?.limit === 1) {\n this.filesArray = []; // Reset array for a single image\n }\n\n let files = event.target.files;\n if (!files) {\n this.helper.showErrorMsg('Please select an image', 'Error', 3000);\n return;\n }\n\n if ((this.filesArray?.length + files.length) > this.config?.limit) {\n this.helper.showErrorMsg(`You can upload a maximum of ${this.config?.limit} images`, 'Error', 3000);\n return;\n }\n\n this.loading = true;\n this.uploadInProgress.emit(true);\n\n let uploadedImages: any[] = [];\n\n // Process all images concurrently and wait for completion\n await Promise.all([...files].map(file => this.processImage(file, uploadedImages, index)));\n\n if (this.config?.isStoredDb) {\n await this.uploadImages(uploadedImages);\n }\n\n this.loading = false;\n this.uploadInProgress.emit(false);\n\n this.onSubmit(); // Call once after all uploads\n this.updateSequence();\n }\n\n async processImage(file: File, uploadedImages: any[], index: number) {\n let fileSize = file.size / 1024;\n if (this.config?.fileSize && fileSize > this.config?.fileSize) {\n let maxSize = this.config.fileSize / 1024;\n this.helper.showErrorMsg(`File size must be ≤ ${maxSize >= 1 ? maxSize : this.config.fileSize} ${maxSize >= 1 ? 'MB' : 'KB'}`, 'Error', 3000);\n return;\n }\n\n return new Promise<void>((resolve) => {\n let reader = new FileReader();\n reader.onload = async (e: any) => {\n let mimeType = file.type;\n let compressedImage = this.config?.isCompressed ? await this.helper.compressFile(e.target?.result, mimeType) : e.target.result;\n\n try {\n let uploadResponse = await this.helper.getUploadUrl(this.urlConfig.getUploadUrl, file.name, mimeType, this.currentEntityType).toPromise();\n let uploadData = uploadResponse.data.uploadUrlData;\n let dataUrl = await this.helper.getDataUrlFromFile(file);\n\n let currentImageData = {\n title: file.name, name: file.name, s3Url: dataUrl,\n filename: file.name, s3Path: uploadData.uploadPath,\n tempS3Url: uploadData.resourceUrl, id: null,\n uploadData: uploadData, loading: false,\n tags: null, tempTags: null, isEditMode: false, sequence: 1,\n };\n\n if(index == -1){\n if(this.isAddUploadedFileInLastNode){\n this.filesArray = [...this.filesArray, currentImageData];\n }\n else{\n this.filesArray = [currentImageData, ...this.filesArray];\n }\n }\n else{\n this.filesArray[index] = {...this.filesArray[index], ...currentImageData};\n }\n this.setSliderLoading();\n uploadedImages.push(currentImageData);\n\n await this.helper.putFile(uploadData.uploadURL, compressedImage).toPromise();\n\n // Final processing\n if(index == -1){\n currentImageData.s3Url = currentImageData.tempS3Url;\n currentImageData.loading = !this.config?.isStoredDb;\n }\n else{\n this.filesArray[index].s3Url = currentImageData.tempS3Url;\n this.filesArray[index].loading = !this.config?.isStoredDb;\n }\n this.setSliderLoading();\n\n resolve();\n } catch (error: any) {\n this.helper.showHttpErrorMsg(error);\n resolve();\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n }\n\n uploadImages(data: any) {\n return new Promise((resolve, reject) => {\n if (data && data?.length > 0) {\n console.log('There is a image pending to attach:', data);\n\n let images: any[] = [];\n let fa = data.map((r: any) => {\n if (r?.uploadData) {\n images.push({ fileName: r.uploadData?.fileName, resourceUrl: r.uploadData?.resourceUrl, uploadPath: r.uploadData?.uploadPath, uploadURL: r.uploadData?.uploadURL });\n // delete r.uploadData;\n }\n\n return r;\n\n });\n\n this.helper.attachFilesToEntity(this.urlConfig?.attachToEntity || 'not-specified', { images: images, entityId: this.currentEntityId, entityType: this.currentEntityType }, this.config.limit).subscribe({\n next: (ir: any) => {\n ir?.data?.map((file: any) =>{\n let selectedIndex = this.filesArray?.findIndex(f => f.uploadData?.resourceUrl == file.s3Url);\n if(selectedIndex !== -1){\n this.filesArray[selectedIndex] = {...this.filesArray[selectedIndex], loading: false, id: file?.id || null}\n }\n });\n this.onSubmit();\n resolve(ir);\n },\n error: (imErr: any) => this.helper.showHttpErrorMsg(imErr)\n });\n\n } else {\n resolve(false);\n }\n });\n }\n\n deleteImage(event: any, t: any, index: number, img: any) {\n event.stopPropagation();\n if (this.isEnableDeleteConfirmation) {\n let confirmBoxData: DialogConfig = {\n title: this.dialogConfig?.title || 'Delete Image',\n message: this.deleteConfirmationMsg || (this.dialogConfig?.message || 'Are you sure, you want to delete this image?'),\n iconClass: this.dialogConfig?.iconClass || 'tis-text-danger',\n icon: this.dialogConfig?.icon || 'delete',\n approveButtonText: this.dialogConfig?.approveButtonText || 'Yes, delete',\n approveButtonClass: `tis-approve-button ${this.dialogConfig?.approveButtonClass}`,\n cancelButtonText: this.dialogConfig?.cancelButtonText || 'No',\n cancelButtonClass: `tis-cancel-button ${this.dialogConfig?.cancelButtonClass}`\n };\n\n const panelClass = ['tis-confirmation-dialog'];\n if(this.dialogConfig?.panelClass){\n panelClass.push(this.dialogConfig.panelClass);\n }\n\n const dialogRef = this.dialog.open(TisConfirmationDialogComponent, {\n width: \"450px\",\n panelClass: panelClass,\n data: confirmBoxData,\n disableClose: true,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"The dialog was closed with result:\", result);\n if (result) {\n this.removeImage(event, index, img);\n }\n });\n }\n else {\n this.removeImage(event, index, img);\n }\n }\n\n /*REMOVE SELECTED IMAGE */\n removeImage(event: any, index: number, img: any) {\n this.loading = true;\n this.filesArray[index].loading = true;\n if (img?.id) {\n delete img.uploadData;\n this.removeUploadedImage(img, index, true);\n }\n else {\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n }\n }\n\n removeUploadedImage(img: any, index: number, silently: boolean = false) {\n console.log(\"removeUploadedImage:\", img);\n this.helper.deleteUploadedFile(this.urlConfig.removeImage, img).subscribe((r: any) => {\n console.log('Image Delete Res:', r);\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n if (!silently) {\n this.helper.showSuccessMsg(r.message, 'Success', 3000);\n }\n },\n (err: any) => { this.filesArray[index].loading = false; this.helper.showErrorMsg(err, \"Error\") })\n }\n\n async detectFiles(event: any, index: number = -1) {\n console.log('detectFiles:', event);\n event.preventDefault();\n\n if (this.config?.limit === 1) {\n this.filesArray = []; // Reset array for a single file\n }\n\n let files = event.target.files;\n if (!files) {\n this.helper.showErrorMsg('Please select a file', 'Error', 3000);\n return;\n }\n\n if ((this.filesArray?.length + files.length) > this.config?.limit) {\n this.helper.showErrorMsg(`You can upload a maximum of ${this.config?.limit} files`, 'Error', 3000);\n return;\n }\n\n this.loading = true;\n this.uploadInProgress.emit(true);\n\n let uploadedFiles: any[] = [];\n\n // Process all files concurrently and wait for completion\n await Promise.all([...files].map(file => this.processFile(file, uploadedFiles, index)));\n\n if (this.config?.isStoredDb) {\n await this.uploadFiles(uploadedFiles);\n }\n\n this.loading = false;\n this.uploadInProgress.emit(false);\n\n this.onSubmit(); // Call once after all uploads\n this.updateSequence();\n }\n\n async processFile(file: File, uploadedFiles: any[], index: number) {\n let fileSize = file.size / 1024;\n if (this.config?.fileSize && fileSize > this.config?.fileSize) {\n let maxSize = this.config.fileSize / 1024;\n this.helper.showErrorMsg(`File size must be ≤ ${maxSize >= 1 ? maxSize : this.config.fileSize} ${maxSize >= 1 ? 'MB' : 'KB'}`, 'Error', 3000);\n return;\n }\n\n return new Promise<void>((resolve) => {\n let reader = new FileReader();\n reader.onload = async (e: any) => {\n let mimeType = file.type;\n let buffer = new Uint8Array(<ArrayBuffer>reader.result);\n\n try {\n let uploadResponse = await this.helper.getUploadUrl(this.urlConfig.getUploadUrl, file.name, mimeType, this.currentEntityType).toPromise();\n let uploadData = uploadResponse.data.uploadUrlData;\n\n let currentFileData = {\n title: file.name, name: file.name, s3Url: uploadData.resourceUrl,\n s3Path: uploadData.uploadPath, filename: file.name, id: null,\n uploadData: uploadData, loading: true, buffer: buffer,\n tags: null, tempTags: null, isEditMode: false, sequence: 1,\n };\n\n if(index == -1){\n if(this.isAddUploadedFileInLastNode){\n this.filesArray = [...this.filesArray, currentFileData];\n }\n else{\n this.filesArray = [currentFileData, ...this.filesArray];\n }\n }\n else{\n this.filesArray[index] = {...this.filesArray[index], ...currentFileData};\n }\n this.setSliderLoading();\n uploadedFiles.push(currentFileData);\n\n await this.helper.putFile(uploadData.uploadURL, e.target.result).toPromise();\n\n // Final processing\n if(index == -1){\n currentFileData.s3Url = currentFileData.uploadData?.resourceUrl;\n currentFileData.loading = !this.config?.isStoredDb;\n }\n else{\n this.filesArray[index].s3Url = this.filesArray[index].uploadData?.resourceUrl;\n this.filesArray[index].loading = !this.config?.isStoredDb;\n }\n this.setSliderLoading();\n\n resolve();\n } catch (error: any) {\n this.helper.showHttpErrorMsg(error);\n resolve();\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n }\n\n uploadFiles(data: any) {\n return new Promise((resolve, reject) => {\n if (data && data.length > 0) {\n console.log('There is a file pending to attach:', data);\n\n let files: any[] = [];\n let fa = data.map((r: any) => {\n if (r?.uploadData) {\n files.push({ fileName: r.uploadData?.fileName, resourceUrl: r.uploadData?.resourceUrl, uploadPath: r.uploadData?.uploadPath, uploadURL: r.uploadData?.uploadURL });\n // delete r.uploadData;\n }\n\n return r;\n });\n\n this.helper.attachFilesToEntity(this.urlConfig?.attachToEntity || 'not-specified', { files: files, entityId: this.currentEntityId, entityType: this.currentEntityType }, this.config.limit).subscribe({\n next: (ir: any) => {\n ir?.data?.map((file: any) =>{\n let selectedIndex = this.filesArray?.findIndex(f => f.uploadData?.resourceUrl == file.s3Url);\n if(selectedIndex !== -1){\n this.filesArray[selectedIndex] = {...this.filesArray[selectedIndex], loading: false, id: file?.id || null}\n }\n });\n this.onSubmit();\n resolve(ir);\n },\n error: (imErr: any) => reject(imErr)\n });\n } else {\n resolve(false);\n }\n });\n }\n\n deleteFile(event: any, t: any, index: number, file: any) {\n event.stopPropagation();\n if (this.isEnableDeleteConfirmation) {\n let confirmBoxData: DialogConfig = {\n title: this.dialogConfig?.title || 'Delete File',\n message: this.deleteConfirmationMsg || (this.dialogConfig?.message || 'Are you sure, you want to delete this file?'),\n iconClass: this.dialogConfig?.iconClass || 'tis-text-danger',\n icon: this.dialogConfig?.icon || 'delete',\n approveButtonText: this.dialogConfig?.approveButtonText || 'Yes, delete',\n approveButtonClass: `tis-approve-button ${this.dialogConfig?.approveButtonClass}`,\n cancelButtonText: this.dialogConfig?.cancelButtonText || 'No',\n cancelButtonClass: `tis-cancel-button ${this.dialogConfig?.cancelButtonClass}`\n };\n\n const panelClass = ['tis-confirmation-dialog'];\n if(this.dialogConfig?.panelClass){\n panelClass.push(this.dialogConfig.panelClass);\n }\n\n const dialogRef = this.dialog.open(TisConfirmationDialogComponent, {\n width: \"450px\",\n panelClass: panelClass,\n data: confirmBoxData,\n disableClose: true,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"The dialog was closed with result:\", result);\n if (result) {\n this.removeFile(event, index, file);\n }\n });\n }\n else {\n this.removeFile(event, index, file);\n }\n }\n\n removeFile(event: any, index: number, file: any) {\n this.loading = true;\n this.filesArray[index].loading = true;\n if (file?.id) {\n delete file.uploadData;\n this.removeUploadedFile(file, index, true);\n }\n else {\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n this.onFileRemoved.emit(true);\n }\n }\n\n removeUploadedFile(file: any, index: number, silently = false) {\n console.log(\"removeUploadedFile:\", file);\n this.helper.deleteUploadedFile(this.urlConfig.removeImage, file).subscribe((r: any) => {\n console.log('File Delete Res:', r);\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n if (!silently) {\n this.helper.showSuccessMsg(r.message, 'Success', 3000);\n }\n this.onSubmit();\n },\n (err: any) => { this.filesArray[index].loading = false; this.helper.showErrorMsg(err, \"Error\") })\n }\n\n onSubmit() {\n this.onUploaded.emit(this.filesArray);\n }\n\n async downloadFile(url: string, fileName: string) {\n fetch(url)\n .then(response => response.blob())\n .then(blob => {\n const blobUrl = URL.createObjectURL(blob);\n const el = document.createElement(\"a\");\n el.href = blobUrl;\n el.download = fileName;\n document.body.appendChild(el);\n el.click();\n document.body.removeChild(el);\n URL.revokeObjectURL(blobUrl); // Cleanup\n })\n .catch(error => console.error(\"Download failed\", error));\n }\n\n clickTimeout: any = null;\n clickDelay: number = 250; // Delay in milliseconds to distinguish single and double click\n\n onSelectFile(file: any) {\n if (this.config.selectionMode) {\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = null;\n this.openFile(file); // Double-click detected\n } else {\n this.clickTimeout = setTimeout(() => {\n this.clickTimeout = null;\n if (this.config.selectionMode) {\n this.onFileSelect.emit(file); // Single-click detected\n }\n }, this.clickDelay);\n }\n }\n else {\n this.clickTimeout = null;\n this.openFile(file);\n }\n }\n\n openFile(file: any) {\n if (!this.config.hiddenPreview) {\n this.openPreviewDialog(file.s3Url, file.title);\n }\n }\n\n openPreviewDialog(url: string, title: string): void {\n if (url.indexOf('.jpg') != -1 || url.indexOf('.jpeg') != -1 || url.indexOf('.png') != -1) {\n this.openImagePreviewDialog(url);\n }\n else if (url.indexOf('.pdf') != -1) {\n this.openFileViewer(url, 'pdf');\n }\n // else if(url.indexOf('.csv') != -1){\n // this.openFileViewer(url, 'csv');\n // }\n else if (url.indexOf('.xlxs') != -1 || url.indexOf('.xlx') != -1 || url.indexOf('.xls') != -1) {\n this.openFileViewer(url, 'excel');\n }\n else {\n this.downloadFile(url, title);\n }\n }\n\n openImagePreviewDialog(url: string): void {\n const dialogRef = this.dialog.open(TisPreviewImageComponent, {\n panelClass: ['mat-p-0', 'relative'],\n data: { url },\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log('The dialog was closed', result);\n });\n }\n\n openFileViewer(pdfUrl: string, fileType: FileViewerFileType) {\n let dialogData: FileViewerDialogData = {\n src: pdfUrl,\n fileType: fileType\n };\n\n const dialogRef = this.dialog.open(TisFileViewerComponent, {\n width: this.isMobile ? \"100%\" : \"90%\",\n height: this.isMobile ? \"100%\" : \"98%\",\n minHeight: this.isMobile ? \"100%\" : \"80%\",\n maxWidth: this.isMobile ? \"100%\" : \"100%\",\n panelClass: ['tis-file-viewer'],\n data: dialogData,\n disableClose: false,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"FileViewer Dialog Closed\");\n });\n }\n\n checkingForPreview(img: string) {\n let imageArray = img.split('.');\n let imageType = imageArray[imageArray?.length - 1];\n if (imageType == 'png' || imageType == 'jpg' || imageType == 'jpeg') {\n return true;\n }\n else {\n return false;\n }\n }\n\n setHeight(id: string) {\n let height = document.getElementById(id)?.offsetWidth;\n // console.log(\"=== setHeight::height ===\", id, height);\n return `${height}px`;\n }\n\n generateFilesForSingleCard(){\n if(this.filesArray?.length < this.config.limit){\n for (let index = 0; index < (this.config.limit - this.filesArray?.length); index++) {\n this.filesArray.push({\n selectorId: generateRandomString(10),\n tags: null,\n tempTags: null,\n isEditMode: false\n });\n }\n }\n else{\n this.filesArray = this.filesArray?.map((file: any) => {\n return {...file, selectorId: generateRandomString(10), tempTag: null, isEditMode: false};\n });\n }\n }\n\n editTagWithSpace(file: any){\n console.log(\"=== editTagWithSpace :: file ===\", file);\n \n let tempTag: any = file?.tempTags?.trim();\n console.log(\"=== editTagWithSpace :: tempTag ===\", tempTag);\n\n if(tempTag && tempTag != ''){\n let tempTagsArr: any[] = tempTag?.split(' ');\n console.log(\"=== editTagWithSpace :: before tempTagsArr ===\", tempTagsArr);\n\n tempTagsArr = tempTagsArr?.filter(e => (e && e != ''))?.map(t =>{\n if (t.includes('#')) {}\n else{\n t = `#${t}`;\n }\n return t;\n });\n\n tempTag = tempTagsArr.join(' ');\n file.tempTags = `${tempTag}`;\n }\n else{\n file.tempTags = tempTag\n }\n }\n\n onKeydown(event: KeyboardEvent, file: any) {\n if (event.key === ',' || event.keyCode === 188) {\n event.preventDefault();\n this.editTagWithComma(file);\n }\n }\n\n editTagWithComma(file: any){\n let tempTag: any = file?.tempTags?.trim();\n\n if(tempTag && tempTag != ''){\n let tempTagsArr: any[] = tempTag?.split(' ');\n tempTagsArr = tempTagsArr?.filter(e => (e && e != ''))?.map(t =>{\n if (t.includes('#')) {}\n else{\n t = `#${t}`;\n }\n return t;\n });\n\n tempTag = tempTagsArr.join(' ');\n tempTag = tempTag.replace(/,/g, '');\n file.tempTags = `${tempTag} `;\n }\n else{\n file.tempTags = tempTag\n }\n }\n\n onSubmitTags(file: any){\n file.tags = file?.tempTags?.trim();\n file.isEditMode = false;\n this.helper.updateTag(this.urlConfig?.updateTag || 'not-specified', {id: file?.id || null, tag: file?.tags || null}).subscribe({\n next: (ir: any) => {\n this.helper.showSuccessMsg(ir.message, 'Success', 3000);\n this.onSubmit();\n },\n error: (err: any) => this.helper.showHttpErrorMsg(err)\n });\n }\n\n drop(event: CdkDragDrop<any[]>) {\n // Ignore if the item was dropped at the same index\n if (event.previousIndex === event.currentIndex) {\n return;\n }\n\n // Access current data from apiSubject\n const currentData = [...this.filesArray];\n\n if (!currentData || currentData.length === 0) {\n return;\n }\n\n // Rearrange items based on the drop event\n moveItemInArray(currentData, event.previousIndex, event.currentIndex);\n\n // Update the apiSubject with reordered data\n this.filesArray = currentData;\n\n this.updateSequence(true);\n }\n\n updateSequence(isShowMessage: boolean = false){\n this.filesArray = this.filesArray.map((file: any, index: number) => {\n return {...file, sequence: (index + 1)};\n });\n\n if(this.enableDragNDrop && this.urlConfig?.updateSequence){\n let files: any[] = this.filesArray?.length ? JSON.parse(JSON.stringify(this.filesArray)) : [];\n files = files?.map(f =>{\n return {id: f?.id, sequence: f?.sequence || 1};\n });\n this.helper.updateSequence(this.urlConfig?.updateSequence || 'not-specified', {files}).subscribe({\n next: (ir: any) => {\n if(isShowMessage){\n this.helper.showSuccessMsg(ir.message, 'Success', 3000);\n }\n else{\n this.helper.showSuccessMsg(`${this.type == 'image' ? 'Image' : 'File'} has been uploaded successfully`, 'Success', 3000);\n }\n this.dataSequenceChange.emit(this.filesArray);\n },\n error: (err: any) => this.helper.showHttpErrorMsg(err)\n });\n }\n else{\n this.dataSequenceChange.emit(this.filesArray);\n }\n }\n\n getTagsArray(tags: string){\n let tempTag: any = tags?.trim();\n let tempTagsArr: any[] = tempTag?.split(' ');\n\n return tempTagsArr?.filter(e => e && e != '');\n }\n}\n","<input type=\"file\" size=\"60\" *ngIf=\"!config?.isMultiple\" id=\"{{config.selectorId}}\" (change)=\"type == 'file'? detectFiles($event): detectImages($event)\" accept=\"{{accept}}\" style=\"display: none;\" />\n<input type=\"file\" size=\"60\" *ngIf=\"config?.isMultiple\" id=\"{{config.selectorId}}\" (change)=\"type == 'file'? detectFiles($event): detectImages($event)\" accept=\"{{accept}}\" multiple style=\"display: none;\" />\n<!-- <input type=\"file\" name=\"file\" id=\"file-picker\" style=\"display: none;\" *ngIf=\"(filesArray?.length < config?.limit) && !disabled\" [style.height]=\"config?.labelHeight\"> -->\n@if(viewType == 'card'){\n <div [class.image-picker-label]=\"!previewOnly\" [class.error]=\"required && (filesArray?.length || 0) <= 0\" [style.height]=\"filesArray?.length ? null : config?.height\" style=\"--tis-image-picker-height: {{config?.height ?? 0}}\" cdkDropList (cdkDropListDropped)=\"drop($event)\" [cdkDropListLockAxis]=\"'x'\">\n @if(filesArray?.length){\n <div [ngClass]=\"{'grid-cols-1': config?.cols == 1, 'grid-cols-2': config?.cols == 2, 'grid-cols-3': config?.cols == 3, 'grid-cols-4': config?.cols == 4, 'grid-cols-5': config?.cols == 5, 'grid-cols-6': config?.cols == 6}\" class=\"{{previewInFlex ? 'flex' : 'grid'}} image-list\" style=\"gap: 25px;\">\n @for(file of filesArray; track file.s3Url; let i = $index; let l = $last;){\n <!-- style=\"height: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2); width: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2);\" -->\n @if(enableDragNDrop){\n <div class=\"flex flex-col\">\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" *ngIf=\"file?.loading\">\n <div class=\"shedded\" style=\"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; display: flex; justify-content: center; align-items: center;\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"30\"></mat-progress-spinner>\n </div>\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n </div>\n <div cdkDrag>\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" (click)=\"onSelectFile(file)\" *ngIf=\"!file?.loading\" cdkDragHandle>\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n <!-- <span class=\"material-icons drag\" cdkDragHandle>drag_indicator</span> -->\n <span class=\"material-icons cancel\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">highlight_off</span>\n <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!config.hiddenDownloadBtn\">download_for_offline</span>\n </div>\n </div>\n @if(config?.enableImageTags){\n <div class=\"image-description\">\n <div class=\"image-description-text\" *ngIf=\"!file?.isEditMode\">\n @if(file?.tags && file?.tags != ''){\n <span class=\"anchor\" *ngFor=\"let tag of getTagsArray(file?.tags)\">{{tag}} </span>\n }\n @else {\n <span>No Tags</span>\n }\n </div>\n <span class=\"material-icons edit-description-btn edit\" style=\"font-size: 20px;\" (click)=\"$event.stopPropagation(); file.tempTags = file.tags; file.isEditMode = true;\" *ngIf=\"!file?.isEditMode && !disabled\">edit</span>\n <div class=\"image-description-edit\" *ngIf=\"file?.isEditMode && !disabled\">\n <input [(ngModel)]=\"file.tempTags\" placeholder=\"Enter tags here...\" (keydown.enter)=\"onSubmitTags(file)\" (keydown.space)=\"editTagWithSpace(file)\" (keydown)=\"onKeydown($event, file)\" />\n <div class=\"description-actions\">\n <button class=\"description-action-btn description-cancel-btn\" (click)=\"$event.stopPropagation(); file.tempTags = file.tags; file.isEditMode = false;\">Cancel</button>\n <button class=\"description-action-btn description-save-btn\" (click)=\"$event.stopPropagation(); onSubmitTags(file);\">Save</button>\n </div>\n </div>\n </div>\n }\n </div>\n }\n @else {\n <div class=\"flex flex-col\">\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" *ngIf=\"file?.loading\">\n <div class=\"shedded\" style=\"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; display: flex; justify-content: center; align-items: center;\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"30\"></mat-progress-spinner>\n </div>\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n </div>\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" (click)=\"onSelectFile(file)\" *ngIf=\"!file?.loading\">\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n <!-- <span class=\"material-icons drag\" cdkDragHandle>drag_indicator</span> -->\n <span class=\"material-icons cancel\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">highlight_off</span>\n <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!config.hiddenDownloadBtn\">download_for_offline</span>\n </div>\n @if(config?.enableImageTags){\n <div class=\"image-description\">\n <div class=\"image-description-text\" *ngIf=\"!file?.isEditMode\">{{file?.tags || 'No Tags'}}</div>\n <span class=\"material-icons edit-description-btn edit\" style=\"font-size: 20px;\" (click)=\"$event.stopPropagation(); file.isEditMode = true;\" *ngIf=\"!file?.isEditMode && !disabled\">edit</span>\n <div class=\"image-description-edit\" *ngIf=\"file?.isEditMode && !disabled\">\n <input [(ngModel)]=\"file.tempTags\" placeholder=\"Enter tags here...\" (keydown.enter)=\"onSubmitTags(file)\" (keydown.space)=\"editTagWithSpace(file)\" (keydown)=\"onKeydown($event, file)\" />\n <div class=\"description-actions\">\n <button class=\"description-action-btn description-cancel-btn\" (click)=\"$event.stopPropagation(); file.tempTags = file.tags; file.isEditMode = false;\">Cancel</button>\n <button class=\"description-action-btn description-save-btn\" (click)=\"$event.stopPropagation(); onSubmitTags(file);\">Save</button>\n </div>\n </div>\n </div>\n }\n </div>\n }\n @if(l && (config?.limit || 0) > (filesArray?.length || 0) && !disabled){\n <!-- style=\"height: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2); width: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2);\" -->\n <div class=\"image-item uploader\" id=\"image-item-{{config.selectorId}}-{{i}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i+'-'+i)\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon class=\"active\">upload_file</mat-icon>\n </div>\n }\n }\n </div>\n }\n @else if(!disabled){\n <label style=\"display: flex; gap: 12px; flex-direction: column; justify-content: center; align-items: center; height: 100%; cursor: pointer;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon>upload_file</mat-icon>\n <p style=\"text-align: center; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <br>\n <small>{{hint}}</small>\n }\n </p>\n </label>\n }\n @else{\n <div class=\"not-found-section\" style=\"display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; cursor: pointer;\">\n <!-- <img src=\"assets/tis-image-and-file-upload-and-view-assets/no-record-found.png\" alt=\"data not found\" style=\"margin: auto; height: calc(var(--tis-image-picker-height) - 30px); max-height: 150px;\"> -->\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" id=\"Layer_1\" x=\"0px\" y=\"0px\" width=\"100%\" viewBox=\"0 0 512 512\" enable-background=\"new 0 0 512 512\" xml:space=\"preserve\">\n <path fill=\"none\" opacity=\"1.000000\" stroke=\"none\" d=\" M283.000000,513.000000 C188.689560,513.000000 94.879120,513.000000 1.034338,513.000000 C1.034338,342.397858 1.034338,171.795731 1.034338,1.096792 C171.560455,1.096792 342.121002,1.096792 512.840759,1.096792 C512.840759,171.666550 512.840759,342.333252 512.840759,513.000000 C436.462372,513.000000 359.981171,513.000000 283.000000,513.000000 M214.500000,497.000000 C271.998901,496.999969 329.497833,497.019897 386.996674,496.975769 C394.561920,496.969971 401.787231,494.626648 406.395233,488.770782 C412.026520,481.614502 416.644897,473.577057 421.072449,465.572754 C437.390259,436.072754 453.464813,406.438049 469.597321,376.835754 C478.327332,360.816742 487.426758,344.977722 495.530029,328.645905 C501.012421,317.596252 494.173737,304.613556 481.201294,304.861847 C456.377502,305.336975 431.538177,304.999878 406.705292,304.999847 C404.938568,304.999847 403.171844,304.999847 401.000031,304.999847 C401.000031,302.348328 401.003784,300.379181 400.999481,298.410065 C400.935120,269.085632 400.853577,239.761169 400.867645,210.436768 C400.868164,209.340317 401.642242,208.138214 402.315186,207.164581 C408.841400,197.722305 416.441071,188.858276 421.779449,178.792419 C433.290894,157.086823 435.985443,133.380402 431.740631,109.507538 C425.335449,73.484550 405.456726,46.387234 373.051300,29.163473 C356.219269,20.217096 338.040710,16.499708 318.773804,16.813351 C301.234619,17.098873 284.897461,21.133270 269.449402,28.965902 C256.098724,35.735111 244.580948,44.876842 234.887085,56.467457 C224.793365,68.536171 217.675415,82.055397 213.023590,96.957832 C209.186737,109.249481 208.654160,121.911049 208.964157,134.687836 C209.387650,152.143631 214.172058,168.302002 222.741714,183.427231 C224.412766,186.376572 225.987946,189.380234 227.939270,192.969376 C211.045273,192.969376 194.919281,193.199417 178.811310,192.763687 C175.805389,192.682358 172.083817,190.621887 170.038193,188.292847 C160.046188,176.916489 150.561493,165.096268 140.789429,153.524185 C136.493210,148.436600 131.117233,145.037399 124.221672,145.023544 C96.055626,144.966995 67.881424,145.387711 39.727192,144.808304 C28.532793,144.577896 16.775660,156.479080 16.809900,167.857864 C17.130381,274.354980 17.052288,380.853516 16.870073,487.351288 C16.859135,493.743988 19.582472,497.123566 26.503685,497.103851 C88.835381,496.926239 151.167801,497.000000 214.500000,497.000000 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M214.000000,497.000000 C151.167801,497.000000 88.835381,496.926239 26.503685,497.103851 C19.582472,497.123566 16.859135,493.743988 16.870073,487.351288 C17.052288,380.853516 17.130381,274.354980 16.809900,167.857864 C16.775660,156.479080 28.532793,144.577896 39.727192,144.808304 C67.881424,145.387711 96.055626,144.966995 124.221672,145.023544 C131.117233,145.037399 136.493210,148.436600 140.789429,153.524185 C150.561493,165.096268 160.046188,176.916489 170.038193,188.292847 C172.083817,190.621887 175.805389,192.682358 178.811310,192.763687 C194.919281,193.199417 211.045273,192.969376 227.939270,192.969376 C225.987946,189.380234 224.412766,186.376572 222.741714,183.427231 C214.172058,168.302002 209.387650,152.143631 208.964157,134.687836 C208.654160,121.911049 209.186737,109.249481 213.023590,96.957832 C217.675415,82.055397 224.793365,68.536171 234.887085,56.467457 C244.580948,44.876842 256.098724,35.735111 269.449402,28.965902 C284.897461,21.133270 301.234619,17.098873 318.773804,16.813351 C338.040710,16.499708 356.219269,20.217096 373.051300,29.163473 C405.456726,46.387234 425.335449,73.484550 431.740631,109.507538 C435.985443,133.380402 433.290894,157.086823 421.779449,178.792419 C416.441071,188.858276 408.841400,197.722305 402.315186,207.164581 C401.642242,208.138214 400.868164,209.340317 400.867645,210.436768 C400.853577,239.761169 400.935120,269.085632 400.999481,298.410065 C401.003784,300.379181 401.000031,302.348328 401.000031,304.999847 C403.171844,304.999847 404.938568,304.999847 406.705292,304.999847 C431.538177,304.999878 456.377502,305.336975 481.201294,304.861847 C494.173737,304.613556 501.012421,317.596252 495.530029,328.645905 C487.426758,344.977722 478.327332,360.816742 469.597321,376.835754 C453.464813,406.438049 437.390259,436.072754 421.072449,465.572754 C416.644897,473.577057 412.026520,481.614502 406.395233,488.770782 C401.787231,494.626648 394.561920,496.969971 386.996674,496.975769 C329.497833,497.019897 271.998901,496.999969 214.000000,497.000000 M134.597260,321.000000 C127.620270,319.337616 123.942146,323.017517 121.500618,328.932983 C120.498009,331.362091 119.193306,333.673279 117.937233,335.989990 C103.522736,362.575897 89.117485,389.166901 74.653091,415.725647 C67.257729,429.304626 59.689438,442.789490 52.312668,456.378448 C47.974022,464.370728 43.857620,472.483643 39.401810,481.000000 C42.117859,481.000000 44.110912,481.000000 46.103966,481.000000 C144.765793,481.000000 243.427612,481.000031 342.089447,481.000000 C354.922150,481.000000 367.755981,481.100647 380.587189,480.961823 C388.353729,480.877808 394.963684,478.668121 399.028687,471.088623 C414.189636,442.819641 429.540070,414.652191 444.852783,386.464783 C452.465210,372.451935 460.203308,358.507233 467.780884,344.475739 C471.870789,336.902466 475.742279,329.211273 480.010315,321.000000 C364.545990,321.000000 250.059738,321.000000 134.597260,321.000000 M324.557129,242.085190 C327.301666,237.590393 329.664886,232.791306 332.924042,228.707169 C335.118561,225.957092 338.299622,222.950409 341.520416,222.240189 C357.159485,218.791580 371.110535,211.909912 382.881226,201.408112 C405.027954,181.648727 416.679504,157.025070 416.129883,126.765366 C415.719910,104.193253 408.285522,84.336838 393.808441,67.607040 C373.699219,44.368736 348.121246,32.686760 316.779572,33.851212 C294.904785,34.663937 275.751617,42.202290 259.624786,56.188839 C232.720886,79.522171 221.513794,109.436241 227.057266,144.851562 C232.965317,182.596176 262.283539,213.393021 299.806335,221.925400 C304.366974,222.962448 307.440796,225.236969 309.702332,229.227615 C313.147400,235.306534 316.865295,241.230835 320.988098,248.086838 C322.400177,245.685776 323.276184,244.196213 324.557129,242.085190 z\"/>\n <path fill=\"none\" opacity=\"1.000000\" stroke=\"none\" d=\" M135.085373,321.000000 C250.059738,321.000000 364.545990,321.000000 480.010315,321.000000 C475.742279,329.211273 471.870789,336.902466 467.780884,344.475739 C460.203308,358.507233 452.465210,372.451935 444.852783,386.464783 C429.540070,414.652191 414.189636,442.819641 399.028687,471.088623 C394.963684,478.668121 388.353729,480.877808 380.587189,480.961823 C367.755981,481.100647 354.922150,481.000000 342.089447,481.000000 C243.427612,481.000031 144.765793,481.000000 46.103966,481.000000 C44.110912,481.000000 42.117859,481.000000 39.401810,481.000000 C43.857620,472.483643 47.974022,464.370728 52.312668,456.378448 C59.689438,442.789490 67.257729,429.304626 74.653091,415.725647 C89.117485,389.166901 103.522736,362.575897 117.937233,335.989990 C119.193306,333.673279 120.498009,331.362091 121.500618,328.932983 C123.942146,323.017517 127.620270,319.337616 135.085373,321.000000 M140.500000,440.999939 C132.167938,440.999939 123.835869,440.999023 115.503807,441.000183 C106.978073,441.001343 104.965355,442.559265 105.000999,449.124817 C105.035042,455.395599 107.121445,456.999329 115.262733,456.999634 C146.424759,457.000732 177.586792,457.000153 208.748825,457.000000 C224.913086,456.999939 241.077591,456.952484 257.241425,457.035980 C260.763824,457.054169 263.472839,456.015015 264.705200,452.580017 C267.060974,446.013672 263.486053,441.009705 256.482880,441.007080 C218.155258,440.992767 179.827621,441.000061 140.500000,440.999939 M211.498047,417.000153 C216.330338,416.999176 221.164948,417.091248 225.994263,416.971069 C230.865005,416.849884 232.921509,414.514984 232.998932,409.368042 C233.083664,403.733337 231.121094,401.059509 226.230942,401.046417 C196.071045,400.965607 165.910004,400.915100 135.752502,401.195435 C133.579193,401.215637 130.361252,403.471161 129.469467,405.497375 C126.665665,411.867889 130.514359,416.987915 137.514694,416.993042 C161.842728,417.010773 186.170807,417.000061 211.498047,417.000153 z\"/>\n <path fill=\"none\" opacity=\"1.000000\" stroke=\"none\" d=\" M324.354675,242.395920 C323.276184,244.196213 322.400177,245.685776 320.988098,248.086838 C316.865295,241.230835 313.147400,235.306534 309.702332,229.227615 C307.440796,225.236969 304.366974,222.962448 299.806335,221.925400 C262.283539,213.393021 232.965317,182.596176 227.057266,144.851562 C221.513794,109.436241 232.720886,79.522171 259.624786,56.188839 C275.751617,42.202290 294.904785,34.663937 316.779572,33.851212 C348.121246,32.686760 373.699219,44.368736 393.808441,67.607040 C408.285522,84.336838 415.719910,104.193253 416.129883,126.765366 C416.679504,157.025070 405.027954,181.648727 382.881226,201.408112 C371.110535,211.909912 357.159485,218.791580 341.520416,222.240189 C338.299622,222.950409 335.118561,225.957092 332.924042,228.707169 C329.664886,232.791306 327.301666,237.590393 324.354675,242.395920 M365.048187,97.443359 C370.583435,91.700768 370.701630,85.175507 365.330109,81.880753 C361.672668,79.637360 356.630035,80.933273 352.129089,85.405678 C342.914734,94.561584 333.749512,103.766907 324.548431,112.936203 C323.412384,114.068321 322.181274,115.104980 320.457794,116.674324 C319.017365,114.966263 317.930176,113.478592 316.646271,112.186401 C307.370972,102.851303 298.080811,93.530586 288.741608,84.259491 C284.745544,80.292557 279.208740,79.658867 275.876648,82.619972 C271.622955,86.400055 271.606628,92.007065 276.075226,96.532738 C285.555145,106.133804 295.140411,115.630798 304.670227,125.182716 C305.910522,126.425888 307.078339,127.741364 308.699982,129.471832 C306.767456,131.142502 305.170319,132.365768 303.755219,133.772186 C294.658264,142.813187 285.530975,151.825531 276.561829,160.992294 C272.316803,165.330841 271.679443,172.193146 274.860229,175.243683 C278.125275,178.375015 284.989929,177.494553 289.133881,173.366959 C295.270966,167.254105 301.415710,161.148209 307.489624,154.972931 C311.886749,150.502441 316.174255,145.924133 320.608521,141.291687 C322.557465,143.156174 323.772125,144.275360 324.939575,145.441833 C334.366547,154.861099 343.762360,164.311676 353.216248,173.703827 C357.078430,177.540771 364.054932,178.250854 367.156860,175.284821 C369.494812,173.049301 370.182617,164.901749 365.897583,161.258850 C361.343750,157.387436 357.354156,152.853470 353.106140,148.620880 C346.649475,142.187607 340.182373,135.764771 333.450989,129.070267 C344.099365,118.419060 354.322937,108.192757 365.048187,97.443359 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M141.000000,440.999939 C179.827621,441.000061 218.155258,440.992767 256.482880,441.007080 C263.486053,441.009705 267.060974,446.013672 264.705200,452.580017 C263.472839,456.015015 260.763824,457.054169 257.241425,457.035980 C241.077591,456.952484 224.913086,456.999939 208.748825,457.000000 C177.586792,457.000153 146.424759,457.000732 115.262733,456.999634 C107.121445,456.999329 105.035042,455.395599 105.000999,449.124817 C104.965355,442.559265 106.978073,441.001343 115.503807,441.000183 C123.835869,440.999023 132.167938,440.999939 141.000000,440.999939 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M210.998444,417.000153 C186.170807,417.000061 161.842728,417.010773 137.514694,416.993042 C130.514359,416.987915 126.665665,411.867889 129.469467,405.497375 C130.361252,403.471161 133.579193,401.215637 135.752502,401.195435 C165.910004,400.915100 196.071045,400.965607 226.230942,401.046417 C231.121094,401.059509 233.083664,403.733337 232.998932,409.368042 C232.921509,414.514984 230.865005,416.849884 225.994263,416.971069 C221.164948,417.091248 216.330338,416.999176 210.998444,417.000153 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M364.797363,97.704910 C354.322937,108.192757 344.099365,118.419060 333.450989,129.070267 C340.182373,135.764771 346.649475,142.187607 353.106140,148.620880 C357.354156,152.853470 361.343750,157.387436 365.897583,161.258850 C370.182617,164.901749 369.494812,173.049301 367.156860,175.284821 C364.054932,178.250854 357.078430,177.540771 353.216248,173.703827 C343.762360,164.311676 334.366547,154.861099 324.939575,145.441833 C323.772125,144.275360 322.557465,143.156174 320.608521,141.291687 C316.174255,145.924133 311.886749,150.502441 307.489624,154.972931 C301.415710,161.148209 295.270966,167.254105 289.133881,173.366959 C284.989929,177.494553 278.125275,178.375015 274.860229,175.243683 C271.679443,172.193146 272.316803,165.330841 276.561829,160.992294 C285.530975,151.825531 294.658264,142.813187 303.755219,133.772186 C305.170319,132.365768 306.767456,131.142502 308.699982,129.471832 C307.078339,127.741364 305.910522,126.425888 304.670227,125.182716 C295.140411,115.630798 285.555145,106.133804 276.075226,96.532738 C271.606628,92.007065 271.622955,86.400055 275.876648,82.619972 C279.208740,79.658867 284.745544,80.292557 288.741608,84.259491 C298.080811,93.530586 307.370972,102.851303 316.646271,112.186401 C317.930176,113.478592 319.017365,114.966263 320.457794,116.674324 C322.181274,115.104980 323.412384,114.068321 324.548431,112.936203 C333.749512,103.766907 342.914734,94.561584 352.129089,85.405678 C356.630035,80.933273 361.672668,79.637360 365.330109,81.880753 C370.701630,85.175507 370.583435,91.700768 364.797363,97.704910 z\"/>\n </svg>\n\n </div>\n }\n </div>\n}\n@else if(viewType == 'list'){\n <div [class.error-border]=\"required && (filesArray?.length || 0) <= 0\" [style.height]=\"filesArray?.length ? null : config?.height\" style=\"width: 100%; display: flex; gap: 12px; flex-direction: column; --tis-image-picker-height: {{config?.height ?? 0}}\">\n @if(filesArray?.length){\n @for(file of filesArray; track file.s3Url; let i = $index; let l = $last;){\n <div style=\"position: relative; display: flex; align-items: center; gap: 10px; border-radius: 5px; border: 1px solid black; padding: 5px; height: 56px;\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">description</mat-icon>\n <div style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%;\">{{file?.title}}</div>\n <div style=\"display: flex; align-items: center; gap: 4px;\" *ngIf=\"!file?.loading\">\n <button type=\"button\" mat-icon-button aria-label=\"Download File\" class=\"tis-icon-btn-sm tis-text-download\" style=\"margin: 0px !important;\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!config.hiddenDownloadBtn\">\n <mat-icon>download_for_offline</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button aria-label=\"View File\" class=\"tis-icon-btn-sm tis-text-view\" style=\"margin: 0px !important;\" (click)=\"openFile(file)\" *ngIf=\"!config.hiddenPreview\">\n <mat-icon>visibility</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button aria-label=\"Remove File\" class=\"tis-icon-btn-sm tis-text-cancel\" style=\"margin: 0px !important;\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n <div style=\"display: flex; justify-content: center; align-items: center; gap: 4px;\" style=\"width: 50px;\" *ngIf=\"file?.loading\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"20\"></mat-progress-spinner>\n </div>\n <!-- <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!disabled && !config.hiddenDownloadBtn\">download_for_offline</span> -->\n </div>\n @if(l && (config?.limit || 0) > (filesArray?.length || 0) && !disabled){\n <div style=\"cursor: pointer; display: flex; align-items: center; gap: 4px; border: 1px solid black; border-radius: 5px; padding: 5px; height: 56px;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">upload_file</mat-icon>\n <div style=\"width: 100%;\">\n <div style=\"display: flex; flex-direction: column; align-items: start; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <small>{{hint}}</small>\n }\n </div>\n </div>\n </div>\n }\n }\n }\n @else if(!disabled){\n <div style=\"cursor: pointer; display: flex; align-items: center; gap: 4px; border: 1px solid black; border-radius: 5px; padding: 5px; height: 56px;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">upload_file</mat-icon>\n <div style=\"width: 100%;\">\n <div style=\"display: flex; flex-direction: column; align-items: start; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <small>{{hint}}</small>\n }\n </div>\n </div>\n </div>\n }\n </div>\n}\n\n<!-- <div [ngClass]=\"{'grid-cols-1': config?.cols == 1, 'grid-cols-2': config?.cols == 2, 'grid-cols-3': config?.cols == 3, 'grid-cols-4': config?.cols == 4, 'grid-cols-5': config?.cols == 5, 'grid-cols-6': config?.cols == 6}\" class=\"{{previewInFlex ? 'flex' : 'grid'}} image-list\" style=\"gap: 25px;\">\n @for(file of filesArray; track file.selectorId; let i = $index; let l = $last;){\n <input type=\"file\" size=\"60\" id=\"{{file.selectorId}}\" (change)=\"type == 'file'? detectFiles($event, i): detectImages($event, i)\" accept=\"{{accept}}\" style=\"display: none;\" />\n <div class=\"flex flex-col gap-3\">\n @if(file.s3Url){\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{file.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+file.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" *ngIf=\"file?.loading\">\n <div class=\"shedded\" style=\"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; display: flex; justify-content: center; align-items: center;\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"30\"></mat-progress-spinner>\n </div>\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n </div>\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{file.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+file.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" (click)=\"onSelectFile(file)\" *ngIf=\"!file?.loading\">\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n <span class=\"material-icons cancel\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">highlight_off</span>\n <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!config.hiddenDownloadBtn\">download_for_offline</span>\n </div>\n }\n @else {\n <div class=\"image-item uploader\" id=\"image-item-{{file.selectorId}}-{{i}}-{{i}}\" [style.height]=\"setHeight('image-item-'+file.selectorId+'-'+i+'-'+i)\" (click)=\"loading? null : openImageSelector(file.selectorId)\">\n <div>\n <mat-icon class=\"active\">upload_file</mat-icon>\n <p style=\"margin: 0px;\">\n {{label}}\n @if(hint && hint != ''){\n <br>\n <small>{{hint}}</small>\n }\n </p>\n </div>\n </div>\n }\n <div class=\"image-description\">\n <div class=\"image-description-text\" *ngIf=\"!file?.isEditMode\">{{file?.tags || 'No Tags'}}</div>\n <span class=\"material-icons edit-description-btn edit\" style=\"font-size: 20px;\" (click)=\"$event.stopPropagation(); file.isEditMode = true;\" *ngIf=\"!file?.isEditMode\">edit</span>\n <div class=\"image-description-edit\" *ngIf=\"file?.isEditMode\">\n <textarea rows=\"2\" [(ngModel)]=\"file.tempTags\" placeholder=\"Enter tags here...\"></textarea>\n <div class=\"description-actions\">\n <button class=\"description-action-btn description-cancel-btn\" (click)=\"$event.stopPropagation(); file.tempTags = file.tags; file.isEditMode = false;\">Cancel</button>\n <button class=\"description-action-btn description-save-btn\" (click)=\"$event.stopPropagation(); file.tags = file.tempTags; file.isEditMode = false;\">Save</button>\n </div>\n </div>\n </div>\n </div>\n }\n</div> -->","import { NgModule } from '@angular/core';\nimport { TisImageAndFileUploadAndViewComponent } from './tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component';\nimport { TisPreviewImageComponent } from './tis-preview-image/tis-preview-image.component';\nimport { CommonModule } from '@angular/common';\nimport { TisFileViewerComponent } from './tis-file-viewer/tis-file-viewer.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TisErrorDialogComponent } from './tis-error-dialog/tis-error-dialog.component';\nimport { TisConfirmationDialogComponent } from './tis-confirmation-dialog/tis-confirmation-dialog.component';\nimport { TisExcelFileViewerComponent } from './tis-file-viewer/tis-excel-file-viewer/tis-excel-file-viewer.component';\nimport { TisPdfViewerComponent } from './tis-file-viewer/tis-pdf-viewer/tis-pdf-viewer.component';\nimport { TisVideoComponent } from './tis-file-viewer/tis-video/tis-video.component';\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\n\nconst uiImports = [\n MatTooltipModule,\n MatIconModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatInputModule,\n MatButtonModule,\n MatDialogModule,\n];\n\n\n@NgModule({\n declarations: [\n TisImageAndFileUploadAndViewComponent,\n TisPreviewImageComponent,\n TisFileViewerComponent,\n TisExcelFileViewerComponent,\n TisPdfViewerComponent,\n TisVideoComponent,\n TisErrorDialogComponent,\n TisConfirmationDialogComponent\n ],\n imports: [\n CommonModule,\n NgxExtendedPdfViewerModule,\n FormsModule,\n ReactiveFormsModule,\n ...uiImports,\n DragDropModule\n ],\n exports: [\n TisImageAndFileUploadAndViewComponent\n ]\n})\nexport class TisImageAndFileUploadAndViewModule { }\n","/*\n * Public API Surface of tis-image-and-file-upload-and-view\n */\n\nexport * from './lib/tis-image-and-file-upload-and-view.service';\nexport * from './lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component';\nexport * from './lib/tis-image-and-file-upload-and-view.module';\n\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4","i5","i6.TisExcelFileViewerComponent","i7.TisPdfViewerComponent","i8.TisVideoComponent","i3","i2.TisHelperService","i6","i7","i8"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"servicemind.tis-tis-image-and-file-upload-and-view.mjs","sources":["../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view.service.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-pdf-viewer/tis-pdf-viewer.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-pdf-viewer/tis-pdf-viewer.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-excel-file-viewer/tis-excel-file-viewer.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-excel-file-viewer/tis-excel-file-viewer.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-video/tis-video.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-video/tis-video.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-file-viewer.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-file-viewer.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-preview-image/tis-preview-image.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-preview-image/tis-preview-image.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-error-dialog/tis-error-dialog.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-error-dialog/tis-error-dialog.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/services/tis-helper.service.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-confirmation-dialog/tis-confirmation-dialog.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-confirmation-dialog/tis-confirmation-dialog.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view.module.ts","../../../projects/tis-image-and-file-upload-and-view/src/public-api.ts","../../../projects/tis-image-and-file-upload-and-view/src/servicemind.tis-tis-image-and-file-upload-and-view.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TisImageAndFileUploadAndViewService {\n\n constructor() { }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport type { SafeUrl } from '@angular/platform-browser';\nimport { NgxExtendedPdfViewerComponent } from 'ngx-extended-pdf-viewer';\n\n@Component({\n selector: 'tis-pdf-viewer',\n standalone: false,\n templateUrl: './tis-pdf-viewer.component.html',\n styleUrl: './tis-pdf-viewer.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TisPdfViewerComponent implements OnChanges {\n\n loading = true;\n isError = false;\n\n @Input({ required: true }) src!: string;\n\n @ViewChild(NgxExtendedPdfViewerComponent, { static: false })\n private pdfViewer!: NgxExtendedPdfViewerComponent;\n\n constructor(\n private cdRef: ChangeDetectorRef\n ) {\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes['src']) {\n console.log('Pdf Viewer: src changed: ', changes['src']);\n }\n }\n\n destroyPdfViewer() {\n this.pdfViewer.ngOnDestroy();\n }\n\n loadingFinished(ev: any) {\n console.log('PDF Loaded', ev)\n this.loading = false;\n this.cdRef.detectChanges();\n this.pdfViewer.height = 'auto';\n }\n\n loadingError(ev: any) {\n console.log('PDF Loading Error:', ev);\n this.isError = true;\n this.loading = false;\n this.cdRef.detectChanges();\n }\n\n}\n","@if (isError) {\n <div class=\"flex tis-justify-content-center py-4\">\n <h3> Some Error Occurred in Loading PDF File. Please Try again. </h3>\n </div>\n} \n\n@if (!isError) {\n <div class=\"tis-extended-pdf-viewer\">\n @if(loading) {\n <div class=\"loading\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"50\"></mat-progress-spinner>\n </div>\n }\n <ngx-extended-pdf-viewer [src]=\"src\"\n [showToolbar]=\"true\"\n [showSidebarButton]=\"true\"\n [showFindButton]=\"false\"\n [showPagingButtons]=\"true\"\n [showDrawEditor]=\"false\"\n [showStampEditor]=\"false\"\n [showTextEditor]=\"false\"\n [showZoomButtons]=\"true\"\n [showPresentationModeButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [showPrintButton]=\"true\"\n [showDownloadButton]=\"true\"\n [showSecondaryToolbarButton]=\"false\"\n [showRotateButton]=\"true\"\n [showHandToolButton]=\"false\"\n [showScrollingButton]=\"true\"\n [showSpreadButton]=\"false\"\n [showPropertiesButton]=\"false\"\n [zoom]=\"'page-fit'\"\n (pdfDownloaded)=\"loadingFinished($event)\"\n (pdfLoaded)=\"loadingFinished($event)\"\n (pdfLoadingFailed)=\"loadingError($event)\"\n >\n </ngx-extended-pdf-viewer>\n </div>\n}\n \n ","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport type { SafeUrl } from '@angular/platform-browser';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'tis-excel-file-viewer',\n standalone: false,\n templateUrl: './tis-excel-file-viewer.component.html',\n styleUrl: './tis-excel-file-viewer.component.css'\n})\nexport class TisExcelFileViewerComponent implements OnChanges {\n\n @Input({ required: true }) src!: SafeUrl;\n\n baseUrl = `https://view.officeapps.live.com/op/embed.aspx?src=`;\n iframeSrc: SafeUrl | null = null;\n\n constructor(private sanitizer: DomSanitizer ) {\n\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['src']) {\n console.log('Url Received', this.src);\n const src = this.baseUrl + this.src;\n this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(src);\n console.log('Iframe src:', this.iframeSrc);\n }\n }\n\n \n}\n","<div class=\"bg-slate-900 w-full h-5\">\n \n</div>\n<div class=\"aspect-w-16 aspect-h-9\">\n <iframe class=\"w-full h-full\" [src]=\"iframeSrc\" frameborder='0'>This is an embedded <a target='_blank'\n href='http://office.com'>Microsoft Office</a> document, powered by <a target='_blank'\n href='http://office.com/webapps'>Office Online</a>.</iframe>\n</div>","import { Component, Input, SimpleChanges } from '@angular/core';\nimport type { SafeUrl } from '@angular/platform-browser';\n\n@Component({\n selector: 'tis-video',\n standalone: false,\n templateUrl: './tis-video.component.html',\n styleUrl: './tis-video.component.css'\n})\nexport class TisVideoComponent {\n @Input({ required: true }) src!: SafeUrl;\n type!: string;\n\n constructor() {}\n\n ngOnInit(): void {\n if(this.src){\n this.type = this.getFileType(String(this.src));\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes['src']) {\n console.log('Pdf Viewer: src changed: ', changes['src']);\n this.type = this.getFileType(changes['src'].currentValue);\n }\n }\n\n getFileType(text: string) {\n let txtArr = text.split('.');\n let fileType = txtArr[txtArr.length - 1];\n return fileType.toLocaleLowerCase() == 'mov' ? 'mp4': fileType.toLocaleLowerCase();\n }\n}\n","<video controls autoplay style=\"min-width: 300px; max-width: 90vw; min-height: 300px; max-height: 90vh;\">\n <source [src]=\"src\" type=\"video/{{type}}\">\n Your browser does not support the video tag.\n</video>","import { Component, Inject, ViewChild } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport type { FileViewerDialogData } from '../interfaces';\nimport { TisPdfViewerComponent } from './tis-pdf-viewer/tis-pdf-viewer.component';\n\n@Component({\n selector: 'tis-file-viewer',\n standalone: false,\n templateUrl: './tis-file-viewer.component.html',\n styleUrl: './tis-file-viewer.component.css'\n})\nexport class TisFileViewerComponent {\n safeUrl!: string;\n\n @ViewChild(TisPdfViewerComponent, { static: false }) private pdfViewer!: TisPdfViewerComponent;\n\n constructor(\n public dialogRef: MatDialogRef<TisFileViewerComponent>,\n @Inject(MAT_DIALOG_DATA) public data: FileViewerDialogData,\n private sanitizer: DomSanitizer\n ) {\n console.log('File Viewer Data:', data);\n\n this.safeUrl = this.data.src;\n console.log('FileViewer SafeUrl:', this.safeUrl);\n\n dialogRef.beforeClosed().subscribe((result) => {\n console.log('The dialog is about to be closed');\n // Here's the interesting bit:\n if (this.pdfViewer) {\n this.pdfViewer.destroyPdfViewer();\n console.log('PDF Viewer Destroyed.');\n }\n });\n }\n\n downloadFile() {\n var el = document.createElement(\"a\");\n el.setAttribute(\"href\", this.safeUrl);\n el.setAttribute(\"download\", 'Video-' + new Date().valueOf());\n document.body.appendChild(el);\n el.click();\n el.remove();\n }\n\n onClose(status: boolean | null): void {\n this.dialogRef.close(status);\n }\n}\n","@if(safeUrl) {\n <div class=\"tis-pdf-viewer\">\n @if(data.fileType == 'video') {\n <mat-icon class=\"download-btn\" (click)=\"downloadFile()\" matTooltip=\"Download\">download</mat-icon>\n <!-- <button mat-icon-button color=\"primary\" class=\"download-btn\" >\n <mat-icon>download</mat-icon>\n </button> -->\n }\n @else {\n <button mat-mini-fab color=\"primary\" class=\"close-btn\" (click)=\"onClose(null)\" matTooltip=\"Close\">\n <mat-icon>clear</mat-icon>\n </button>\n }\n @if(data.fileType == 'pdf') {\n <tis-pdf-viewer [src]=\"safeUrl\"></tis-pdf-viewer>\n }\n @else if(data.fileType == 'excel') {\n <tis-excel-file-viewer [src]=\"safeUrl\"></tis-excel-file-viewer>\n }\n @else if(data.fileType == 'video') {\n <tis-video [src]=\"safeUrl\"></tis-video>\n }\n </div>\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'tis-preview-image',\n standalone: false,\n templateUrl: './tis-preview-image.component.html',\n styleUrl: './tis-preview-image.component.css'\n})\nexport class TisPreviewImageComponent {\n width = 850;\n height = 650;\n isLoading: boolean = true;\n isLandscape: boolean | undefined;\n orientation: string | undefined;\n imageWidth: number | undefined;\n imageHeight: number | undefined;\n\n\n constructor(\n public dialogRef: MatDialogRef<TisPreviewImageComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) { }\n\n ngOnInit(): void {\n if (this.data.url) {\n setTimeout(() => {\n this.checkImageOrientation(this.data.url);\n }, 500);\n }\n }\n\n checkImageOrientation(imageUrl: string): void {\n const img = new Image();\n img.src = imageUrl;\n this.isLoading = true;\n\n img.onload = () => {\n this.imageWidth = img.naturalWidth;\n this.imageHeight = img.naturalHeight;\n this.isLandscape = img.naturalWidth > img.naturalHeight;\n this.orientation = this.isLandscape ? 'landscape-image' : 'portrait-image';\n this.isLoading = false;\n };\n\n img.onerror = () => {\n console.error('Failed to load image.');\n this.isLoading = false;\n };\n }\n\n onClose() {\n this.dialogRef.close()\n }\n}\n","@if(isLoading){\n <div style=\"width: 350px; height: 350px; display: flex; justify-content: center; align-items: center\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"80\"></mat-progress-spinner>\n </div>\n}\n@else{\n <div class=\"w-100 dialog-container\" appScrolling style=\"--img-width: {{(imageWidth && imageWidth < 700) ? imageWidth : 650}}px; --img-height: {{(imageHeight && imageHeight < 600) ? imageHeight : 600}}px\">\n <mat-icon\n class=\"close-icon\"\n (click)=\"onClose()\">cancel</mat-icon>\n <img \n *ngIf=\"data.url\" \n [src]=\"data.url\" \n alt=\"preview-image\" \n class=\"preview-image {{orientation}}\">\n </div>\n}","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'lib-tis-error-dialog',\n standalone: false,\n templateUrl: './tis-error-dialog.component.html',\n styleUrl: './tis-error-dialog.component.css'\n})\nexport class TisErrorDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<TisErrorDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {}\n\n onClose(): void {\n this.dialogRef.close();\n }\n}\n","<h1 mat-dialog-title>\n <mat-icon class=\"{{data?.iconClass}}\">{{data?.icon}}</mat-icon>\n {{data?.title}}\n</h1>\n<div mat-dialog-content>\n {{data?.message}}\n</div>\n<div mat-dialog-actions>\n <button mat-button class=\"tis-text-upper {{data?.buttonClass ?? 'tis-btn-primary'}}\" (click)=\"onClose()\" cdkFocusInitial *ngIf=\"data?.buttonText && data?.buttonText != ''\">{{data?.buttonText}}</button>\n</div>","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar';\nimport { TisErrorDialogComponent } from '../tis-error-dialog/tis-error-dialog.component';\nimport { Observable } from 'rxjs';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TisHelperService {\n\n constructor(\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n private http: HttpClient\n ) { }\n\n showHttpErrorMsg(error: HttpErrorResponse, duration = 5000) {\n console.log('httpError: ', error);\n\n let errorMessage = 'Some Unknown Error Occurred.';\n let errorCode = 'Unknown Error';\n const httpError = error;\n\n if (httpError.status >= 400) {\n const errorFromServer = httpError.error?.errors || httpError.error || [];\n if (Array.isArray(errorFromServer) && errorFromServer.length > 0) {\n errorMessage = errorFromServer[0].message;\n errorCode = errorFromServer[0].code;\n }\n } else if (httpError.status < 100) {\n errorMessage = httpError.message;\n errorCode = httpError.statusText;\n }\n\n if (errorCode == \"VALIDATION_ERROR\" || errorCode == \"NOT_FOUND_ERROR\" || errorCode == \"THIRD_PARTY_API_ERROR\") {\n let confirmBoxData: any = {\n title: \"Error !\",\n message: errorMessage,\n icon: \"error\",\n iconClass: \"tis-text-danger\",\n buttonText: \"Ok\",\n buttonClass: \"tis-btn-primary\",\n };\n\n const dialogRef: MatDialogRef<TisErrorDialogComponent> = this.dialog.open(TisErrorDialogComponent, {\n width: \"550px\",\n panelClass: ['tis-simple-confirmation'],\n data: confirmBoxData,\n disableClose: false,\n });\n\n return dialogRef;\n\n } else {\n const snackbarRef: MatSnackBarRef<TextOnlySnackBar> = this.snackBar.open(errorMessage, 'Error', { duration: duration });\n return snackbarRef;\n }\n\n }\n\n showSuccessMsg(message: string, title: string, duration = 5000) {\n this.snackBar.open(message, title, {\n duration: duration\n })\n }\n\n showErrorMsg(message: string, title: string, duration = 5000) {\n this.snackBar.open(message, title, {\n duration: duration\n })\n }\n\n async compressFile(image: any, mimeType: string): Promise<Blob> {\n\n let imageData = image;\n\n let imageBlob: Blob = this.dataURItoBlob(imageData.split(',')[1], mimeType);\n return imageBlob;\n }\n\n dataURItoBlob(dataURI: string, mimeType: string): Blob {\n const byteString = window.atob(dataURI);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const int8Array = new Uint8Array(arrayBuffer);\n for (let i = 0; i < byteString.length; i++) {\n int8Array[i] = byteString.charCodeAt(i);\n }\n const blob = new Blob([int8Array], { type: mimeType });\n return blob;\n }\n\n getDataUrlFromFile(file: any) {\n return new Promise((resolve, reject) => {\n var reader = new FileReader();\n reader.onload = (e: any) => {\n resolve(e.target.result)\n };\n reader.onerror = (e: any) => {\n reject(e.target.error);\n };\n reader.readAsDataURL(file);\n })\n }\n\n getUploadUrl(url: string, filename: string, mimeType: string, type: string): Observable<any> {\n return this.http.post(url, { filename, mimeType, type });\n }\n\n attachFilesToEntity(url: string, data: any, limit: number): Observable<any> {\n return this.http.post(`${url}?limit=${limit}`, data);\n }\n\n updateTag(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n updateSequence(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n putFile(url: string, file: File, contentType?: string): Observable<any> {\n const headers = new HttpHeaders({ \"content-type\": contentType ? contentType : \"binary/octet-stream\"}).set('X-Skip-Auth-Interceptor', \"\");\n return this.http.put(url, file, { headers });\n }\n\n deleteUploadedFile(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n}","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'tis-confirmation-dialog',\n standalone: false,\n templateUrl: './tis-confirmation-dialog.component.html',\n styleUrl: './tis-confirmation-dialog.component.css'\n})\nexport class TisConfirmationDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<TisConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n this.dialogRef.addPanelClass(['md-tis-w-400-px']);\n }\n\n onClose(status: boolean | null): void {\n this.dialogRef.close(status);\n }\n}\n","<h1 mat-dialog-title style=\"align-items: center; display: flex;\">\n <mat-icon class=\"{{data?.iconClass}}\" style=\"color: var(--tis-cancel, #bb333b)\">{{data?.icon}}</mat-icon>\n <span>{{data?.title}}</span>\n</h1>\n<div mat-dialog-content style=\"padding: 20px 24px; padding-top: 0px;\">\n @if(data?.html){\n <h5 class=\"title\">{{data?.message}}</h5>\n <div [innerHTML]=\"data.html\">\n </div>\n }\n @else {\n <span>{{data?.message}}</span>\n }\n</div>\n<div mat-dialog-actions>\n <button mat-button class=\"{{data?.cancelButtonClass}}\" style=\"color: var(--tis-primary, var(--mat-sys-primary))\" (click)=\"onClose(false)\" *ngIf=\"data?.cancelButtonText && data?.cancelButtonText != ''\">{{data?.cancelButtonText}}</button>\n <button mat-button class=\"{{data?.approveButtonClass}}\" style=\"color: var(--tis-cancel, #bb333b)\" (click)=\"onClose(true)\" cdkFocusInitial *ngIf=\"data?.approveButtonText && data?.approveButtonText != ''\">{{data?.approveButtonText}}</button>\n</div>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { TisFileViewerComponent } from '../tis-file-viewer/tis-file-viewer.component';\nimport type { DialogConfig, FileViewerDialogData, FileViewerFileType, OptionConfig, UrlConfig } from '../interfaces';\nimport { TisPreviewImageComponent } from '../tis-preview-image/tis-preview-image.component';\nimport { BehaviorSubject, Observable, map, sequenceEqual, shareReplay } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { TisHelperService } from '../services/tis-helper.service';\nimport { TisConfirmationDialogComponent } from '../tis-confirmation-dialog/tis-confirmation-dialog.component';\nimport { Config } from '../interfaces/config.type';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\n\nconst generateRandomString = (length: number): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n}\n\n@Component({\n selector: 'tis-image-and-file-upload-and-view',\n standalone: false,\n templateUrl: './tis-image-and-file-upload-and-view.component.html',\n styleUrl: './tis-image-and-file-upload-and-view.component.css'\n})\nexport class TisImageAndFileUploadAndViewComponent {\n private changeSubject = new BehaviorSubject<boolean>(false);\n\n @Input({required: true}) urlConfig!: UrlConfig;\n @Input() entityType!: string;\n @Input() entityId: any;\n @Input() viewType: 'card' | 'list' = 'card';\n @Input() type: 'image' | 'file' = 'image';\n @Input() label: string | null = null;\n @Input() disabled: boolean = false;\n @Input() data: any;\n @Input() hint: string | null = null;\n @Input() accept: string = '';\n @Input() selectedId: any = null;\n @Input() options: OptionConfig | null = null;\n @Input() required: boolean = false;\n @Input() previewOnly: boolean = false;\n @Input() previewInFlex: boolean = false;\n @Input() imageItemClass: string = '';\n @Input() isEnableDeleteConfirmation: boolean = true;\n @Input() isAddUploadedFileInLastNode: boolean = false;\n @Input() deleteConfirmationMsg!: string;\n @Input() dialogConfig!: DialogConfig;\n @Output() uploadInProgress = new EventEmitter();\n @Output() onUploaded = new EventEmitter();\n @Output() onFileSelect = new EventEmitter<any>();\n @Output() onFileRemoved = new EventEmitter<any>();\n\n @Input() enableDragNDrop: boolean = false;\n @Output() dataSequenceChange = new EventEmitter<any>();\n\n isMobile = false;\n isTab = false;\n\n isHandset$!: Observable<boolean>;\n isTab$!: Observable<boolean>;\n\n\n config: Config = {\n isCompressed: false,\n hiddenDeleteBtn: false,\n hiddenPreview: false,\n selectionMode: false,\n isStoredDb: false,\n isMultiple: false,\n limit: 10,\n cols: 5,\n colsForTab: 5,\n colsForMobile: 3,\n height: '130px',\n selectorId: generateRandomString(10),\n enableImageTags: false\n };\n\n isSliderLoaded = true;\n\n filesArray: any[] = [\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg?Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152621Z&X-Amz-Expires=900&X-Amz-Signature=4004cfb10a740b9623d486de992a06f53b458ed6fc151c092eea88a3059eae8f&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"f7a32cd0-d0c1-474a-838e-47402d80527a.jpeg\",\n // \"fileName\": \"1452664590074.jpeg\",\n // \"uploadPath\": \"/survey_orders/f7a32cd0-d0c1-474a-838e-47402d80527a.jpeg\",\n // \"resourceUrl\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg\"\n // }\n // },\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/31033a2a-5db6-450d-a541-58a94654dd0c.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql?Content-Type=application%2Fsql&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152641Z&X-Amz-Expires=900&X-Amz-Signature=bcdf347df2a6495615bf48d619492e1deac2264231161da5dc3becaa7f45a796&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"6c537889-c72a-48ca-9134-638e8d6a1aac.sql\",\n // \"fileName\": \"eccom_bermuda.sql\",\n // \"uploadPath\": \"/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql\",\n // \"resourceUrl\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql\"\n // }\n // },\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/b8424185-30c6-4f44-ba1e-ff616dfd6576.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf?Content-Type=application%2Fpdf&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152656Z&X-Amz-Expires=900&X-Amz-Signature=85643479c3fbecc5bd1fee9783e3cb72e27e16a034921b52cf2f377eefb01ff9&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"232f2548-dc93-4204-8835-86b69f3005a7.pdf\",\n // \"fileName\": \"print-registration-4x6.pdf\",\n // \"uploadPath\": \"/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf\",\n // \"resourceUrl\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf\"\n // }\n // }\n ];\n currentEntityId!: number;\n currentEntityType!: string;\n images = [];\n loading = false;\n status = false;\n\n\n constructor(\n public dialog: MatDialog,\n private helper: TisHelperService,\n private breakpointObserver: BreakpointObserver\n ) { }\n\n ngOnInit() {\n this.isHandset$ = this.breakpointObserver.observe([Breakpoints.Handset])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n\n this.isTab$ = this.breakpointObserver.observe([Breakpoints.TabletPortrait])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n \n this.prepareConfig();\n\n // if(this.viewType == 'single-card'){\n // this.generateFilesForSingleCard();\n // }\n }\n\n ngAfterViewInit() {\n this.isHandset$.subscribe(r => {\n console.log('IS HANDSET:', r);\n this.isMobile = r;\n this.changeSubject.next(true);\n });\n this.isTab$.subscribe(r => {\n console.log('IS TAB:', r);\n this.isTab = r;\n this.changeSubject.next(true);\n });\n\n this.changeSubject.subscribe(status => {\n let cols = 1;\n if (this.isMobile) {\n cols = this.options?.colsForMobile ?? 3;\n }\n else if (this.isTab) {\n cols = this.options?.colsForTab ?? 4;\n }\n else {\n cols = this.options?.cols ?? 5;\n }\n\n this.config.cols = cols;\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['entityId']) {\n this.currentEntityId = changes['entityId'].currentValue;\n }\n if (changes['entityType']) {\n this.currentEntityType = changes['entityType'].currentValue;\n }\n if (changes['urlConfig']) {\n this.urlConfig = changes['urlConfig'].currentValue;\n this.config.isStoredDb = false;\n if (this.urlConfig?.attachToEntity) {\n this.config.isStoredDb = true;\n }\n }\n if (changes['options']) {\n this.prepareConfig();\n }\n if (changes['data']) {\n this.filesArray = changes['data']?.currentValue ?? [];\n this.filesArray = this.filesArray?.map(r => {\n r.loading = false;\n return r;\n });\n console.log(\"this.filesArray\", this.filesArray);\n }\n }\n\n prepareConfig() {\n if (this.options?.isCompressed) {\n this.config.isCompressed = this.options?.isCompressed;\n }\n\n if (this.options?.isSliderPreview) {\n this.config.isSliderPreview = this.options?.isSliderPreview;\n }\n\n if (this.options?.hiddenDeleteBtn) {\n this.config.hiddenDeleteBtn = this.options?.hiddenDeleteBtn;\n }\n\n if (this.options?.hiddenPreview) {\n this.config.hiddenPreview = this.options?.hiddenPreview;\n }\n\n if (this.options?.selectionMode) {\n this.config.selectionMode = this.options?.selectionMode;\n }\n\n this.config.isStoredDb = false;\n if (this.urlConfig?.attachToEntity) {\n this.config.isStoredDb = true;\n }\n\n if (this.options?.isMultiple) {\n this.config.isMultiple = this.options?.isMultiple;\n }\n\n if (this.options?.fileSize) {\n this.config.fileSize = this.options?.fileSize;\n }\n\n if (this.options?.limit) {\n this.config.limit = this.options?.limit;\n }\n\n if (this.options?.cols) {\n this.config.cols = this.options?.cols;\n }\n\n if (this.options?.colsForTab) {\n this.config.colsForTab = this.options?.colsForTab;\n }\n\n if (this.options?.colsForMobile) {\n this.config.colsForMobile = this.options?.colsForMobile;\n }\n\n if (this.options?.height) {\n this.config.height = this.options?.height;\n }\n\n if (this.options?.selectorId) {\n this.config.selectorId = this.options?.selectorId;\n }\n\n if (this.options?.enableImageTags) {\n this.config.enableImageTags = this.options?.enableImageTags;\n }\n }\n\n setSliderLoading() {\n this.isSliderLoaded = false;\n setTimeout(() => {\n this.isSliderLoaded = true;\n }, 20);\n }\n\n openImageSelector(selectorId: string = this.config?.selectorId) {\n document.getElementById(selectorId)?.click();\n }\n\n async detectImages(event: any, index: number = -1) {\n console.log('detectImages:', event);\n event.preventDefault();\n\n if (this.config?.limit === 1) {\n this.filesArray = []; // Reset array for a single image\n }\n\n let files = event.target.files;\n if (!files) {\n this.helper.showErrorMsg('Please select an image', 'Error', 3000);\n return;\n }\n\n if ((this.filesArray?.length + files.length) > this.config?.limit) {\n this.helper.showErrorMsg(`You can upload a maximum of ${this.config?.limit} images`, 'Error', 3000);\n return;\n }\n\n this.loading = true;\n this.uploadInProgress.emit(true);\n\n let uploadedImages: any[] = [];\n\n // Process all images concurrently and wait for completion\n await Promise.all([...files].map(file => this.processImage(file, uploadedImages, index)));\n\n if (this.config?.isStoredDb) {\n await this.uploadImages(uploadedImages);\n }\n\n this.loading = false;\n this.uploadInProgress.emit(false);\n\n this.onSubmit(); // Call once after all uploads\n this.updateSequence();\n }\n\n async processImage(file: File, uploadedImages: any[], index: number) {\n let fileSize = file.size / 1024;\n if (this.config?.fileSize && fileSize > this.config?.fileSize) {\n let maxSize = this.config.fileSize / 1024;\n this.helper.showErrorMsg(`File size must be ≤ ${maxSize >= 1 ? maxSize : this.config.fileSize} ${maxSize >= 1 ? 'MB' : 'KB'}`, 'Error', 3000);\n return;\n }\n\n return new Promise<void>((resolve) => {\n let reader = new FileReader();\n reader.onload = async (e: any) => {\n let mimeType = file.type;\n let compressedImage = this.config?.isCompressed ? await this.helper.compressFile(e.target?.result, mimeType) : e.target.result;\n\n try {\n let uploadResponse = await this.helper.getUploadUrl(this.urlConfig.getUploadUrl, file.name, mimeType, this.currentEntityType).toPromise();\n let uploadData = uploadResponse.data.uploadUrlData;\n let dataUrl = await this.helper.getDataUrlFromFile(file);\n\n let currentImageData = {\n title: file.name, name: file.name, s3Url: dataUrl,\n filename: file.name, s3Path: uploadData.uploadPath,\n tempS3Url: uploadData.resourceUrl, id: null,\n uploadData: uploadData, loading: false,\n tags: null, tempTags: null, isEditMode: false, sequence: 1,\n };\n\n if(index == -1){\n if(this.isAddUploadedFileInLastNode){\n this.filesArray = [...this.filesArray, currentImageData];\n }\n else{\n this.filesArray = [currentImageData, ...this.filesArray];\n }\n }\n else{\n this.filesArray[index] = {...this.filesArray[index], ...currentImageData};\n }\n this.setSliderLoading();\n uploadedImages.push(currentImageData);\n\n await this.helper.putFile(uploadData.uploadURL, compressedImage).toPromise();\n\n // Final processing\n if(index == -1){\n currentImageData.s3Url = currentImageData.tempS3Url;\n currentImageData.loading = !this.config?.isStoredDb;\n }\n else{\n this.filesArray[index].s3Url = currentImageData.tempS3Url;\n this.filesArray[index].loading = !this.config?.isStoredDb;\n }\n this.setSliderLoading();\n\n resolve();\n } catch (error: any) {\n this.helper.showHttpErrorMsg(error);\n resolve();\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n }\n\n uploadImages(data: any) {\n return new Promise((resolve, reject) => {\n if (data && data?.length > 0) {\n console.log('There is a image pending to attach:', data);\n\n let images: any[] = [];\n let fa = data.map((r: any) => {\n if (r?.uploadData) {\n images.push({ fileName: r.uploadData?.fileName, resourceUrl: r.uploadData?.resourceUrl, uploadPath: r.uploadData?.uploadPath, uploadURL: r.uploadData?.uploadURL });\n // delete r.uploadData;\n }\n\n return r;\n\n });\n\n this.helper.attachFilesToEntity(this.urlConfig?.attachToEntity || 'not-specified', { images: images, entityId: this.currentEntityId, entityType: this.currentEntityType }, this.config.limit).subscribe({\n next: (ir: any) => {\n ir?.data?.map((file: any) =>{\n let selectedIndex = this.filesArray?.findIndex(f => f.uploadData?.resourceUrl == file.s3Url);\n if(selectedIndex !== -1){\n this.filesArray[selectedIndex] = {...this.filesArray[selectedIndex], loading: false, id: file?.id || null}\n }\n });\n this.onSubmit();\n resolve(ir);\n },\n error: (imErr: any) => this.helper.showHttpErrorMsg(imErr)\n });\n\n } else {\n resolve(false);\n }\n });\n }\n\n deleteImage(event: any, t: any, index: number, img: any) {\n event.stopPropagation();\n if (this.isEnableDeleteConfirmation) {\n let confirmBoxData: DialogConfig = {\n title: this.dialogConfig?.title || 'Delete Image',\n message: this.deleteConfirmationMsg || (this.dialogConfig?.message || 'Are you sure, you want to delete this image?'),\n iconClass: this.dialogConfig?.iconClass || 'tis-text-danger',\n icon: this.dialogConfig?.icon || 'delete',\n approveButtonText: this.dialogConfig?.approveButtonText || 'Yes, delete',\n approveButtonClass: `tis-approve-button ${this.dialogConfig?.approveButtonClass}`,\n cancelButtonText: this.dialogConfig?.cancelButtonText || 'No',\n cancelButtonClass: `tis-cancel-button ${this.dialogConfig?.cancelButtonClass}`\n };\n\n const panelClass = ['tis-confirmation-dialog'];\n if(this.dialogConfig?.panelClass){\n panelClass.push(this.dialogConfig.panelClass);\n }\n\n const dialogRef = this.dialog.open(TisConfirmationDialogComponent, {\n width: \"450px\",\n panelClass: panelClass,\n data: confirmBoxData,\n disableClose: true,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"The dialog was closed with result:\", result);\n if (result) {\n this.removeImage(event, index, img);\n }\n });\n }\n else {\n this.removeImage(event, index, img);\n }\n }\n\n /*REMOVE SELECTED IMAGE */\n removeImage(event: any, index: number, img: any) {\n this.loading = true;\n this.filesArray[index].loading = true;\n if (img?.id) {\n delete img.uploadData;\n this.removeUploadedImage(img, index, true);\n }\n else {\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n }\n }\n\n removeUploadedImage(img: any, index: number, silently: boolean = false) {\n console.log(\"removeUploadedImage:\", img);\n this.helper.deleteUploadedFile(this.urlConfig.removeImage, img).subscribe((r: any) => {\n console.log('Image Delete Res:', r);\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n if (!silently) {\n this.helper.showSuccessMsg(r.message, 'Success', 3000);\n }\n },\n (err: any) => { this.filesArray[index].loading = false; this.helper.showErrorMsg(err, \"Error\") })\n }\n\n async detectFiles(event: any, index: number = -1) {\n console.log('detectFiles:', event);\n event.preventDefault();\n\n if (this.config?.limit === 1) {\n this.filesArray = []; // Reset array for a single file\n }\n\n let files = event.target.files;\n if (!files) {\n this.helper.showErrorMsg('Please select a file', 'Error', 3000);\n return;\n }\n\n if ((this.filesArray?.length + files.length) > this.config?.limit) {\n this.helper.showErrorMsg(`You can upload a maximum of ${this.config?.limit} files`, 'Error', 3000);\n return;\n }\n\n this.loading = true;\n this.uploadInProgress.emit(true);\n\n let uploadedFiles: any[] = [];\n\n // Process all files concurrently and wait for completion\n await Promise.all([...files].map(file => this.processFile(file, uploadedFiles, index)));\n\n if (this.config?.isStoredDb) {\n await this.uploadFiles(uploadedFiles);\n }\n\n this.loading = false;\n this.uploadInProgress.emit(false);\n\n this.onSubmit(); // Call once after all uploads\n this.updateSequence();\n }\n\n async processFile(file: File, uploadedFiles: any[], index: number) {\n let fileSize = file.size / 1024;\n if (this.config?.fileSize && fileSize > this.config?.fileSize) {\n let maxSize = this.config.fileSize / 1024;\n this.helper.showErrorMsg(`File size must be ≤ ${maxSize >= 1 ? maxSize : this.config.fileSize} ${maxSize >= 1 ? 'MB' : 'KB'}`, 'Error', 3000);\n return;\n }\n\n return new Promise<void>((resolve) => {\n let reader = new FileReader();\n reader.onload = async (e: any) => {\n let mimeType = file.type;\n let buffer = new Uint8Array(<ArrayBuffer>reader.result);\n\n try {\n let uploadResponse = await this.helper.getUploadUrl(this.urlConfig.getUploadUrl, file.name, mimeType, this.currentEntityType).toPromise();\n let uploadData = uploadResponse.data.uploadUrlData;\n\n let currentFileData = {\n title: file.name, name: file.name, s3Url: uploadData.resourceUrl,\n s3Path: uploadData.uploadPath, filename: file.name, id: null,\n uploadData: uploadData, loading: true, buffer: buffer,\n tags: null, tempTags: null, isEditMode: false, sequence: 1,\n };\n\n if(index == -1){\n if(this.isAddUploadedFileInLastNode){\n this.filesArray = [...this.filesArray, currentFileData];\n }\n else{\n this.filesArray = [currentFileData, ...this.filesArray];\n }\n }\n else{\n this.filesArray[index] = {...this.filesArray[index], ...currentFileData};\n }\n this.setSliderLoading();\n uploadedFiles.push(currentFileData);\n\n await this.helper.putFile(uploadData.uploadURL, e.target.result).toPromise();\n\n // Final processing\n if(index == -1){\n currentFileData.s3Url = currentFileData.uploadData?.resourceUrl;\n currentFileData.loading = !this.config?.isStoredDb;\n }\n else{\n this.filesArray[index].s3Url = this.filesArray[index].uploadData?.resourceUrl;\n this.filesArray[index].loading = !this.config?.isStoredDb;\n }\n this.setSliderLoading();\n\n resolve();\n } catch (error: any) {\n this.helper.showHttpErrorMsg(error);\n resolve();\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n }\n\n uploadFiles(data: any) {\n return new Promise((resolve, reject) => {\n if (data && data.length > 0) {\n console.log('There is a file pending to attach:', data);\n\n let files: any[] = [];\n let fa = data.map((r: any) => {\n if (r?.uploadData) {\n files.push({ fileName: r.uploadData?.fileName, resourceUrl: r.uploadData?.resourceUrl, uploadPath: r.uploadData?.uploadPath, uploadURL: r.uploadData?.uploadURL });\n // delete r.uploadData;\n }\n\n return r;\n });\n\n this.helper.attachFilesToEntity(this.urlConfig?.attachToEntity || 'not-specified', { files: files, entityId: this.currentEntityId, entityType: this.currentEntityType }, this.config.limit).subscribe({\n next: (ir: any) => {\n ir?.data?.map((file: any) =>{\n let selectedIndex = this.filesArray?.findIndex(f => f.uploadData?.resourceUrl == file.s3Url);\n if(selectedIndex !== -1){\n this.filesArray[selectedIndex] = {...this.filesArray[selectedIndex], loading: false, id: file?.id || null}\n }\n });\n this.onSubmit();\n resolve(ir);\n },\n error: (imErr: any) => reject(imErr)\n });\n } else {\n resolve(false);\n }\n });\n }\n\n deleteFile(event: any, t: any, index: number, file: any) {\n event.stopPropagation();\n if (this.isEnableDeleteConfirmation) {\n let confirmBoxData: DialogConfig = {\n title: this.dialogConfig?.title || 'Delete File',\n message: this.deleteConfirmationMsg || (this.dialogConfig?.message || 'Are you sure, you want to delete this file?'),\n iconClass: this.dialogConfig?.iconClass || 'tis-text-danger',\n icon: this.dialogConfig?.icon || 'delete',\n approveButtonText: this.dialogConfig?.approveButtonText || 'Yes, delete',\n approveButtonClass: `tis-approve-button ${this.dialogConfig?.approveButtonClass}`,\n cancelButtonText: this.dialogConfig?.cancelButtonText || 'No',\n cancelButtonClass: `tis-cancel-button ${this.dialogConfig?.cancelButtonClass}`\n };\n\n const panelClass = ['tis-confirmation-dialog'];\n if(this.dialogConfig?.panelClass){\n panelClass.push(this.dialogConfig.panelClass);\n }\n\n const dialogRef = this.dialog.open(TisConfirmationDialogComponent, {\n width: \"450px\",\n panelClass: panelClass,\n data: confirmBoxData,\n disableClose: true,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"The dialog was closed with result:\", result);\n if (result) {\n this.removeFile(event, index, file);\n }\n });\n }\n else {\n this.removeFile(event, index, file);\n }\n }\n\n removeFile(event: any, index: number, file: any) {\n this.loading = true;\n this.filesArray[index].loading = true;\n if (file?.id) {\n delete file.uploadData;\n this.removeUploadedFile(file, index, true);\n }\n else {\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n this.onFileRemoved.emit(true);\n }\n }\n\n removeUploadedFile(file: any, index: number, silently = false) {\n console.log(\"removeUploadedFile:\", file);\n this.helper.deleteUploadedFile(this.urlConfig.removeImage, file).subscribe((r: any) => {\n console.log('File Delete Res:', r);\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n if (!silently) {\n this.helper.showSuccessMsg(r.message, 'Success', 3000);\n }\n this.onSubmit();\n },\n (err: any) => { this.filesArray[index].loading = false; this.helper.showErrorMsg(err, \"Error\") })\n }\n\n onSubmit() {\n this.onUploaded.emit(this.filesArray);\n }\n\n async downloadFile(url: string, fileName: string) {\n fetch(url)\n .then(response => response.blob())\n .then(blob => {\n const blobUrl = URL.createObjectURL(blob);\n const el = document.createElement(\"a\");\n el.href = blobUrl;\n el.download = fileName;\n document.body.appendChild(el);\n el.click();\n document.body.removeChild(el);\n URL.revokeObjectURL(blobUrl); // Cleanup\n })\n .catch(error => console.error(\"Download failed\", error));\n }\n\n clickTimeout: any = null;\n clickDelay: number = 250; // Delay in milliseconds to distinguish single and double click\n\n onSelectFile(file: any) {\n if (this.config.selectionMode) {\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = null;\n this.openFile(file); // Double-click detected\n } else {\n this.clickTimeout = setTimeout(() => {\n this.clickTimeout = null;\n if (this.config.selectionMode) {\n this.onFileSelect.emit(file); // Single-click detected\n }\n }, this.clickDelay);\n }\n }\n else {\n this.clickTimeout = null;\n this.openFile(file);\n }\n }\n\n openFile(file: any) {\n if (!this.config.hiddenPreview) {\n this.openPreviewDialog(file.s3Url, file.title);\n }\n }\n\n openPreviewDialog(url: string, title: string): void {\n if (url.indexOf('.jpg') != -1 || url.indexOf('.jpeg') != -1 || url.indexOf('.png') != -1) {\n this.openImagePreviewDialog(url);\n }\n else if (url.indexOf('.pdf') != -1) {\n this.openFileViewer(url, 'pdf');\n }\n // else if(url.indexOf('.csv') != -1){\n // this.openFileViewer(url, 'csv');\n // }\n else if (url.indexOf('.xlxs') != -1 || url.indexOf('.xlx') != -1 || url.indexOf('.xls') != -1) {\n this.openFileViewer(url, 'excel');\n }\n else {\n this.downloadFile(url, title);\n }\n }\n\n openImagePreviewDialog(url: string): void {\n const dialogRef = this.dialog.open(TisPreviewImageComponent, {\n panelClass: ['mat-p-0', 'relative'],\n data: { url },\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log('The dialog was closed', result);\n });\n }\n\n openFileViewer(pdfUrl: string, fileType: FileViewerFileType) {\n let dialogData: FileViewerDialogData = {\n src: pdfUrl,\n fileType: fileType\n };\n\n const dialogRef = this.dialog.open(TisFileViewerComponent, {\n width: this.isMobile ? \"100%\" : \"90%\",\n height: this.isMobile ? \"100%\" : \"98%\",\n minHeight: this.isMobile ? \"100%\" : \"80%\",\n maxWidth: this.isMobile ? \"100%\" : \"100%\",\n panelClass: ['tis-file-viewer'],\n data: dialogData,\n disableClose: false,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"FileViewer Dialog Closed\");\n });\n }\n\n checkingForPreview(img: string) {\n let imageArray = img.split('.');\n let imageType = imageArray[imageArray?.length - 1];\n if (imageType == 'png' || imageType == 'jpg' || imageType == 'jpeg') {\n return true;\n }\n else {\n return false;\n }\n }\n\n setHeight(id: string) {\n let height = document.getElementById(id)?.offsetWidth;\n // console.log(\"=== setHeight::height ===\", id, height);\n return `${height}px`;\n }\n\n generateFilesForSingleCard(){\n if(this.filesArray?.length < this.config.limit){\n for (let index = 0; index < (this.config.limit - this.filesArray?.length); index++) {\n this.filesArray.push({\n selectorId: generateRandomString(10),\n tags: null,\n tempTags: null,\n isEditMode: false\n });\n }\n }\n else{\n this.filesArray = this.filesArray?.map((file: any) => {\n return {...file, selectorId: generateRandomString(10), tempTag: null, isEditMode: false};\n });\n }\n }\n\n editTagWithSpace(file: any){\n console.log(\"=== editTagWithSpace :: file ===\", file);\n \n let tempTag: any = file?.tempTags?.trim();\n console.log(\"=== editTagWithSpace :: tempTag ===\", tempTag);\n\n if(tempTag && tempTag != ''){\n let tempTagsArr: any[] = tempTag?.split(' ');\n console.log(\"=== editTagWithSpace :: before tempTagsArr ===\", tempTagsArr);\n\n tempTagsArr = tempTagsArr?.filter(e => (e && e != ''))?.map(t =>{\n if (t.includes('#')) {}\n else{\n t = `#${t}`;\n }\n return t;\n });\n\n tempTag = tempTagsArr.join(' ');\n file.tempTags = `${tempTag}`;\n }\n else{\n file.tempTags = tempTag\n }\n }\n\n onKeydown(event: KeyboardEvent, file: any) {\n if (event.key === ',' || event.keyCode === 188) {\n event.preventDefault();\n this.editTagWithComma(file);\n }\n }\n\n editTagWithComma(file: any){\n let tempTag: any = file?.tempTags?.trim();\n\n if(tempTag && tempTag != ''){\n let tempTagsArr: any[] = tempTag?.split(' ');\n tempTagsArr = tempTagsArr?.filter(e => (e && e != ''))?.map(t =>{\n if (t.includes('#')) {}\n else{\n t = `#${t}`;\n }\n return t;\n });\n\n tempTag = tempTagsArr.join(' ');\n tempTag = tempTag.replace(/,/g, '');\n file.tempTags = `${tempTag} `;\n }\n else{\n file.tempTags = tempTag\n }\n }\n\n onSubmitTags(file: any){\n file.tags = file?.tempTags?.trim();\n file.isEditMode = false;\n this.helper.updateTag(this.urlConfig?.updateTag || 'not-specified', {id: file?.id || null, tag: file?.tags || null}).subscribe({\n next: (ir: any) => {\n this.helper.showSuccessMsg(ir.message, 'Success', 3000);\n this.onSubmit();\n },\n error: (err: any) => this.helper.showHttpErrorMsg(err)\n });\n }\n\n drop(event: CdkDragDrop<any[]>) {\n // Ignore if the item was dropped at the same index\n if (event.previousIndex === event.currentIndex) {\n return;\n }\n\n // Access current data from apiSubject\n const currentData = [...this.filesArray];\n\n if (!currentData || currentData.length === 0) {\n return;\n }\n\n // Rearrange items based on the drop event\n moveItemInArray(currentData, event.previousIndex, event.currentIndex);\n\n // Update the apiSubject with reordered data\n this.filesArray = currentData;\n\n this.updateSequence(true);\n }\n\n updateSequence(isShowMessage: boolean = false){\n this.filesArray = this.filesArray.map((file: any, index: number) => {\n return {...file, sequence: (index + 1)};\n });\n\n if(this.enableDragNDrop && this.urlConfig?.updateSequence){\n let files: any[] = this.filesArray?.length ? JSON.parse(JSON.stringify(this.filesArray)) : [];\n files = files?.map(f =>{\n return {id: f?.id, sequence: f?.sequence || 1};\n });\n this.helper.updateSequence(this.urlConfig?.updateSequence || 'not-specified', {files}).subscribe({\n next: (ir: any) => {\n if(isShowMessage){\n this.helper.showSuccessMsg(ir.message, 'Success', 3000);\n }\n else{\n this.helper.showSuccessMsg(`${this.type == 'image' ? 'Image' : 'File'} has been uploaded successfully`, 'Success', 3000);\n }\n this.dataSequenceChange.emit(this.filesArray);\n },\n error: (err: any) => this.helper.showHttpErrorMsg(err)\n });\n }\n else{\n this.dataSequenceChange.emit(this.filesArray);\n }\n }\n\n getTagsArray(tags: string){\n let tempTag: any = tags?.trim();\n let tempTagsArr: any[] = tempTag?.split(' ');\n\n return tempTagsArr?.filter(e => e && e != '');\n }\n}\n","<input type=\"file\" size=\"60\" *ngIf=\"!config?.isMultiple\" id=\"{{config.selectorId}}\" (change)=\"type == 'file'? detectFiles($event): detectImages($event)\" accept=\"{{accept}}\" style=\"display: none;\" />\n<input type=\"file\" size=\"60\" *ngIf=\"config?.isMultiple\" id=\"{{config.selectorId}}\" (change)=\"type == 'file'? detectFiles($event): detectImages($event)\" accept=\"{{accept}}\" multiple style=\"display: none;\" />\n<!-- <input type=\"file\" name=\"file\" id=\"file-picker\" style=\"display: none;\" *ngIf=\"(filesArray?.length < config?.limit) && !disabled\" [style.height]=\"config?.labelHeight\"> -->\n@if(viewType == 'card'){\n <div [class.image-picker-label]=\"!previewOnly\" [class.error]=\"required && (filesArray?.length || 0) <= 0\" [style.height]=\"filesArray?.length ? null : config?.height\" style=\"--tis-image-picker-height: {{config?.height ?? 0}}\" cdkDropList (cdkDropListDropped)=\"drop($event)\" [cdkDropListLockAxis]=\"'x'\">\n @if(filesArray?.length){\n <div [ngClass]=\"{'grid-cols-1': config?.cols == 1, 'grid-cols-2': config?.cols == 2, 'grid-cols-3': config?.cols == 3, 'grid-cols-4': config?.cols == 4, 'grid-cols-5': config?.cols == 5, 'grid-cols-6': config?.cols == 6}\" class=\"{{previewInFlex ? 'flex' : 'grid'}} image-list\" style=\"gap: 25px;\">\n @for(file of filesArray; track file.s3Url; let i = $index; let l = $last;){\n <!-- style=\"height: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2); width: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2);\" -->\n @if(enableDragNDrop){\n <div class=\"flex flex-col\">\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" *ngIf=\"file?.loading\">\n <div class=\"shedded\" style=\"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; display: flex; justify-content: center; align-items: center;\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"30\"></mat-progress-spinner>\n </div>\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n </div>\n <div cdkDrag>\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" (click)=\"onSelectFile(file)\" *ngIf=\"!file?.loading\" cdkDragHandle>\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n <!-- <span class=\"material-icons drag\" cdkDragHandle>drag_indicator</span> -->\n <span class=\"material-icons cancel\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">highlight_off</span>\n <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!config.hiddenDownloadBtn\">download_for_offline</span>\n </div>\n </div>\n @if(config?.enableImageTags){\n <div class=\"image-description\">\n <div class=\"image-description-text\" *ngIf=\"!file?.isEditMode\">\n @if(file?.tags && file?.tags != ''){\n <span class=\"anchor\" *ngFor=\"let tag of getTagsArray(file?.tags)\">{{tag}} </span>\n }\n @else {\n <span>No Tags</span>\n }\n </div>\n <span class=\"material-icons edit-description-btn edit\" style=\"font-size: 20px;\" (click)=\"$event.stopPropagation(); file.tempTags = file.tags; file.isEditMode = true;\" *ngIf=\"!file?.isEditMode && !disabled\">edit</span>\n <div class=\"image-description-edit\" *ngIf=\"file?.isEditMode && !disabled\">\n <input [(ngModel)]=\"file.tempTags\" placeholder=\"Enter tags here...\" (keydown.enter)=\"onSubmitTags(file)\" (keydown.space)=\"editTagWithSpace(file)\" (keydown)=\"onKeydown($event, file)\" />\n <div class=\"description-actions\">\n <button class=\"description-action-btn description-cancel-btn\" (click)=\"$event.stopPropagation(); file.tempTags = file.tags; file.isEditMode = false;\">Cancel</button>\n <button class=\"description-action-btn description-save-btn\" (click)=\"$event.stopPropagation(); onSubmitTags(file);\">Save</button>\n </div>\n </div>\n </div>\n }\n </div>\n }\n @else {\n <div class=\"flex flex-col\">\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" *ngIf=\"file?.loading\">\n <div class=\"shedded\" style=\"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; display: flex; justify-content: center; align-items: center;\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"30\"></mat-progress-spinner>\n </div>\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n </div>\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" (click)=\"onSelectFile(file)\" *ngIf=\"!file?.loading\">\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n <!-- <span class=\"material-icons drag\" cdkDragHandle>drag_indicator</span> -->\n <span class=\"material-icons cancel\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">highlight_off</span>\n <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!config.hiddenDownloadBtn\">download_for_offline</span>\n </div>\n @if(config?.enableImageTags){\n <div class=\"image-description\">\n <div class=\"image-description-text\" *ngIf=\"!file?.isEditMode\">{{file?.tags || 'No Tags'}}</div>\n <span class=\"material-icons edit-description-btn edit\" style=\"font-size: 20px;\" (click)=\"$event.stopPropagation(); file.isEditMode = true;\" *ngIf=\"!file?.isEditMode && !disabled\">edit</span>\n <div class=\"image-description-edit\" *ngIf=\"file?.isEditMode && !disabled\">\n <input [(ngModel)]=\"file.tempTags\" placeholder=\"Enter tags here...\" (keydown.enter)=\"onSubmitTags(file)\" (keydown.space)=\"editTagWithSpace(file)\" (keydown)=\"onKeydown($event, file)\" />\n <div class=\"description-actions\">\n <button class=\"description-action-btn description-cancel-btn\" (click)=\"$event.stopPropagation(); file.tempTags = file.tags; file.isEditMode = false;\">Cancel</button>\n <button class=\"description-action-btn description-save-btn\" (click)=\"$event.stopPropagation(); onSubmitTags(file);\">Save</button>\n </div>\n </div>\n </div>\n }\n </div>\n }\n @if(l && (config?.limit || 0) > (filesArray?.length || 0) && !disabled){\n <!-- style=\"height: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2); width: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2);\" -->\n <div class=\"image-item uploader\" id=\"image-item-{{config.selectorId}}-{{i}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i+'-'+i)\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon class=\"active\">upload_file</mat-icon>\n </div>\n }\n }\n </div>\n }\n @else if(!disabled){\n <label style=\"display: flex; gap: 12px; flex-direction: column; justify-content: center; align-items: center; height: 100%; cursor: pointer;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon>upload_file</mat-icon>\n <p style=\"text-align: center; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <br>\n <small>{{hint}}</small>\n }\n </p>\n </label>\n }\n @else{\n <div class=\"not-found-section\" style=\"display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; cursor: pointer;\">\n <!-- <img src=\"assets/tis-image-and-file-upload-and-view-assets/no-record-found.png\" alt=\"data not found\" style=\"margin: auto; height: calc(var(--tis-image-picker-height) - 30px); max-height: 150px;\"> -->\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" id=\"Layer_1\" x=\"0px\" y=\"0px\" width=\"100%\" viewBox=\"0 0 512 512\" enable-background=\"new 0 0 512 512\" xml:space=\"preserve\">\n <path fill=\"none\" opacity=\"1.000000\" stroke=\"none\" d=\" M283.000000,513.000000 C188.689560,513.000000 94.879120,513.000000 1.034338,513.000000 C1.034338,342.397858 1.034338,171.795731 1.034338,1.096792 C171.560455,1.096792 342.121002,1.096792 512.840759,1.096792 C512.840759,171.666550 512.840759,342.333252 512.840759,513.000000 C436.462372,513.000000 359.981171,513.000000 283.000000,513.000000 M214.500000,497.000000 C271.998901,496.999969 329.497833,497.019897 386.996674,496.975769 C394.561920,496.969971 401.787231,494.626648 406.395233,488.770782 C412.026520,481.614502 416.644897,473.577057 421.072449,465.572754 C437.390259,436.072754 453.464813,406.438049 469.597321,376.835754 C478.327332,360.816742 487.426758,344.977722 495.530029,328.645905 C501.012421,317.596252 494.173737,304.613556 481.201294,304.861847 C456.377502,305.336975 431.538177,304.999878 406.705292,304.999847 C404.938568,304.999847 403.171844,304.999847 401.000031,304.999847 C401.000031,302.348328 401.003784,300.379181 400.999481,298.410065 C400.935120,269.085632 400.853577,239.761169 400.867645,210.436768 C400.868164,209.340317 401.642242,208.138214 402.315186,207.164581 C408.841400,197.722305 416.441071,188.858276 421.779449,178.792419 C433.290894,157.086823 435.985443,133.380402 431.740631,109.507538 C425.335449,73.484550 405.456726,46.387234 373.051300,29.163473 C356.219269,20.217096 338.040710,16.499708 318.773804,16.813351 C301.234619,17.098873 284.897461,21.133270 269.449402,28.965902 C256.098724,35.735111 244.580948,44.876842 234.887085,56.467457 C224.793365,68.536171 217.675415,82.055397 213.023590,96.957832 C209.186737,109.249481 208.654160,121.911049 208.964157,134.687836 C209.387650,152.143631 214.172058,168.302002 222.741714,183.427231 C224.412766,186.376572 225.987946,189.380234 227.939270,192.969376 C211.045273,192.969376 194.919281,193.199417 178.811310,192.763687 C175.805389,192.682358 172.083817,190.621887 170.038193,188.292847 C160.046188,176.916489 150.561493,165.096268 140.789429,153.524185 C136.493210,148.436600 131.117233,145.037399 124.221672,145.023544 C96.055626,144.966995 67.881424,145.387711 39.727192,144.808304 C28.532793,144.577896 16.775660,156.479080 16.809900,167.857864 C17.130381,274.354980 17.052288,380.853516 16.870073,487.351288 C16.859135,493.743988 19.582472,497.123566 26.503685,497.103851 C88.835381,496.926239 151.167801,497.000000 214.500000,497.000000 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M214.000000,497.000000 C151.167801,497.000000 88.835381,496.926239 26.503685,497.103851 C19.582472,497.123566 16.859135,493.743988 16.870073,487.351288 C17.052288,380.853516 17.130381,274.354980 16.809900,167.857864 C16.775660,156.479080 28.532793,144.577896 39.727192,144.808304 C67.881424,145.387711 96.055626,144.966995 124.221672,145.023544 C131.117233,145.037399 136.493210,148.436600 140.789429,153.524185 C150.561493,165.096268 160.046188,176.916489 170.038193,188.292847 C172.083817,190.621887 175.805389,192.682358 178.811310,192.763687 C194.919281,193.199417 211.045273,192.969376 227.939270,192.969376 C225.987946,189.380234 224.412766,186.376572 222.741714,183.427231 C214.172058,168.302002 209.387650,152.143631 208.964157,134.687836 C208.654160,121.911049 209.186737,109.249481 213.023590,96.957832 C217.675415,82.055397 224.793365,68.536171 234.887085,56.467457 C244.580948,44.876842 256.098724,35.735111 269.449402,28.965902 C284.897461,21.133270 301.234619,17.098873 318.773804,16.813351 C338.040710,16.499708 356.219269,20.217096 373.051300,29.163473 C405.456726,46.387234 425.335449,73.484550 431.740631,109.507538 C435.985443,133.380402 433.290894,157.086823 421.779449,178.792419 C416.441071,188.858276 408.841400,197.722305 402.315186,207.164581 C401.642242,208.138214 400.868164,209.340317 400.867645,210.436768 C400.853577,239.761169 400.935120,269.085632 400.999481,298.410065 C401.003784,300.379181 401.000031,302.348328 401.000031,304.999847 C403.171844,304.999847 404.938568,304.999847 406.705292,304.999847 C431.538177,304.999878 456.377502,305.336975 481.201294,304.861847 C494.173737,304.613556 501.012421,317.596252 495.530029,328.645905 C487.426758,344.977722 478.327332,360.816742 469.597321,376.835754 C453.464813,406.438049 437.390259,436.072754 421.072449,465.572754 C416.644897,473.577057 412.026520,481.614502 406.395233,488.770782 C401.787231,494.626648 394.561920,496.969971 386.996674,496.975769 C329.497833,497.019897 271.998901,496.999969 214.000000,497.000000 M134.597260,321.000000 C127.620270,319.337616 123.942146,323.017517 121.500618,328.932983 C120.498009,331.362091 119.193306,333.673279 117.937233,335.989990 C103.522736,362.575897 89.117485,389.166901 74.653091,415.725647 C67.257729,429.304626 59.689438,442.789490 52.312668,456.378448 C47.974022,464.370728 43.857620,472.483643 39.401810,481.000000 C42.117859,481.000000 44.110912,481.000000 46.103966,481.000000 C144.765793,481.000000 243.427612,481.000031 342.089447,481.000000 C354.922150,481.000000 367.755981,481.100647 380.587189,480.961823 C388.353729,480.877808 394.963684,478.668121 399.028687,471.088623 C414.189636,442.819641 429.540070,414.652191 444.852783,386.464783 C452.465210,372.451935 460.203308,358.507233 467.780884,344.475739 C471.870789,336.902466 475.742279,329.211273 480.010315,321.000000 C364.545990,321.000000 250.059738,321.000000 134.597260,321.000000 M324.557129,242.085190 C327.301666,237.590393 329.664886,232.791306 332.924042,228.707169 C335.118561,225.957092 338.299622,222.950409 341.520416,222.240189 C357.159485,218.791580 371.110535,211.909912 382.881226,201.408112 C405.027954,181.648727 416.679504,157.025070 416.129883,126.765366 C415.719910,104.193253 408.285522,84.336838 393.808441,67.607040 C373.699219,44.368736 348.121246,32.686760 316.779572,33.851212 C294.904785,34.663937 275.751617,42.202290 259.624786,56.188839 C232.720886,79.522171 221.513794,109.436241 227.057266,144.851562 C232.965317,182.596176 262.283539,213.393021 299.806335,221.925400 C304.366974,222.962448 307.440796,225.236969 309.702332,229.227615 C313.147400,235.306534 316.865295,241.230835 320.988098,248.086838 C322.400177,245.685776 323.276184,244.196213 324.557129,242.085190 z\"/>\n <path fill=\"none\" opacity=\"1.000000\" stroke=\"none\" d=\" M135.085373,321.000000 C250.059738,321.000000 364.545990,321.000000 480.010315,321.000000 C475.742279,329.211273 471.870789,336.902466 467.780884,344.475739 C460.203308,358.507233 452.465210,372.451935 444.852783,386.464783 C429.540070,414.652191 414.189636,442.819641 399.028687,471.088623 C394.963684,478.668121 388.353729,480.877808 380.587189,480.961823 C367.755981,481.100647 354.922150,481.000000 342.089447,481.000000 C243.427612,481.000031 144.765793,481.000000 46.103966,481.000000 C44.110912,481.000000 42.117859,481.000000 39.401810,481.000000 C43.857620,472.483643 47.974022,464.370728 52.312668,456.378448 C59.689438,442.789490 67.257729,429.304626 74.653091,415.725647 C89.117485,389.166901 103.522736,362.575897 117.937233,335.989990 C119.193306,333.673279 120.498009,331.362091 121.500618,328.932983 C123.942146,323.017517 127.620270,319.337616 135.085373,321.000000 M140.500000,440.999939 C132.167938,440.999939 123.835869,440.999023 115.503807,441.000183 C106.978073,441.001343 104.965355,442.559265 105.000999,449.124817 C105.035042,455.395599 107.121445,456.999329 115.262733,456.999634 C146.424759,457.000732 177.586792,457.000153 208.748825,457.000000 C224.913086,456.999939 241.077591,456.952484 257.241425,457.035980 C260.763824,457.054169 263.472839,456.015015 264.705200,452.580017 C267.060974,446.013672 263.486053,441.009705 256.482880,441.007080 C218.155258,440.992767 179.827621,441.000061 140.500000,440.999939 M211.498047,417.000153 C216.330338,416.999176 221.164948,417.091248 225.994263,416.971069 C230.865005,416.849884 232.921509,414.514984 232.998932,409.368042 C233.083664,403.733337 231.121094,401.059509 226.230942,401.046417 C196.071045,400.965607 165.910004,400.915100 135.752502,401.195435 C133.579193,401.215637 130.361252,403.471161 129.469467,405.497375 C126.665665,411.867889 130.514359,416.987915 137.514694,416.993042 C161.842728,417.010773 186.170807,417.000061 211.498047,417.000153 z\"/>\n <path fill=\"none\" opacity=\"1.000000\" stroke=\"none\" d=\" M324.354675,242.395920 C323.276184,244.196213 322.400177,245.685776 320.988098,248.086838 C316.865295,241.230835 313.147400,235.306534 309.702332,229.227615 C307.440796,225.236969 304.366974,222.962448 299.806335,221.925400 C262.283539,213.393021 232.965317,182.596176 227.057266,144.851562 C221.513794,109.436241 232.720886,79.522171 259.624786,56.188839 C275.751617,42.202290 294.904785,34.663937 316.779572,33.851212 C348.121246,32.686760 373.699219,44.368736 393.808441,67.607040 C408.285522,84.336838 415.719910,104.193253 416.129883,126.765366 C416.679504,157.025070 405.027954,181.648727 382.881226,201.408112 C371.110535,211.909912 357.159485,218.791580 341.520416,222.240189 C338.299622,222.950409 335.118561,225.957092 332.924042,228.707169 C329.664886,232.791306 327.301666,237.590393 324.354675,242.395920 M365.048187,97.443359 C370.583435,91.700768 370.701630,85.175507 365.330109,81.880753 C361.672668,79.637360 356.630035,80.933273 352.129089,85.405678 C342.914734,94.561584 333.749512,103.766907 324.548431,112.936203 C323.412384,114.068321 322.181274,115.104980 320.457794,116.674324 C319.017365,114.966263 317.930176,113.478592 316.646271,112.186401 C307.370972,102.851303 298.080811,93.530586 288.741608,84.259491 C284.745544,80.292557 279.208740,79.658867 275.876648,82.619972 C271.622955,86.400055 271.606628,92.007065 276.075226,96.532738 C285.555145,106.133804 295.140411,115.630798 304.670227,125.182716 C305.910522,126.425888 307.078339,127.741364 308.699982,129.471832 C306.767456,131.142502 305.170319,132.365768 303.755219,133.772186 C294.658264,142.813187 285.530975,151.825531 276.561829,160.992294 C272.316803,165.330841 271.679443,172.193146 274.860229,175.243683 C278.125275,178.375015 284.989929,177.494553 289.133881,173.366959 C295.270966,167.254105 301.415710,161.148209 307.489624,154.972931 C311.886749,150.502441 316.174255,145.924133 320.608521,141.291687 C322.557465,143.156174 323.772125,144.275360 324.939575,145.441833 C334.366547,154.861099 343.762360,164.311676 353.216248,173.703827 C357.078430,177.540771 364.054932,178.250854 367.156860,175.284821 C369.494812,173.049301 370.182617,164.901749 365.897583,161.258850 C361.343750,157.387436 357.354156,152.853470 353.106140,148.620880 C346.649475,142.187607 340.182373,135.764771 333.450989,129.070267 C344.099365,118.419060 354.322937,108.192757 365.048187,97.443359 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M141.000000,440.999939 C179.827621,441.000061 218.155258,440.992767 256.482880,441.007080 C263.486053,441.009705 267.060974,446.013672 264.705200,452.580017 C263.472839,456.015015 260.763824,457.054169 257.241425,457.035980 C241.077591,456.952484 224.913086,456.999939 208.748825,457.000000 C177.586792,457.000153 146.424759,457.000732 115.262733,456.999634 C107.121445,456.999329 105.035042,455.395599 105.000999,449.124817 C104.965355,442.559265 106.978073,441.001343 115.503807,441.000183 C123.835869,440.999023 132.167938,440.999939 141.000000,440.999939 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M210.998444,417.000153 C186.170807,417.000061 161.842728,417.010773 137.514694,416.993042 C130.514359,416.987915 126.665665,411.867889 129.469467,405.497375 C130.361252,403.471161 133.579193,401.215637 135.752502,401.195435 C165.910004,400.915100 196.071045,400.965607 226.230942,401.046417 C231.121094,401.059509 233.083664,403.733337 232.998932,409.368042 C232.921509,414.514984 230.865005,416.849884 225.994263,416.971069 C221.164948,417.091248 216.330338,416.999176 210.998444,417.000153 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M364.797363,97.704910 C354.322937,108.192757 344.099365,118.419060 333.450989,129.070267 C340.182373,135.764771 346.649475,142.187607 353.106140,148.620880 C357.354156,152.853470 361.343750,157.387436 365.897583,161.258850 C370.182617,164.901749 369.494812,173.049301 367.156860,175.284821 C364.054932,178.250854 357.078430,177.540771 353.216248,173.703827 C343.762360,164.311676 334.366547,154.861099 324.939575,145.441833 C323.772125,144.275360 322.557465,143.156174 320.608521,141.291687 C316.174255,145.924133 311.886749,150.502441 307.489624,154.972931 C301.415710,161.148209 295.270966,167.254105 289.133881,173.366959 C284.989929,177.494553 278.125275,178.375015 274.860229,175.243683 C271.679443,172.193146 272.316803,165.330841 276.561829,160.992294 C285.530975,151.825531 294.658264,142.813187 303.755219,133.772186 C305.170319,132.365768 306.767456,131.142502 308.699982,129.471832 C307.078339,127.741364 305.910522,126.425888 304.670227,125.182716 C295.140411,115.630798 285.555145,106.133804 276.075226,96.532738 C271.606628,92.007065 271.622955,86.400055 275.876648,82.619972 C279.208740,79.658867 284.745544,80.292557 288.741608,84.259491 C298.080811,93.530586 307.370972,102.851303 316.646271,112.186401 C317.930176,113.478592 319.017365,114.966263 320.457794,116.674324 C322.181274,115.104980 323.412384,114.068321 324.548431,112.936203 C333.749512,103.766907 342.914734,94.561584 352.129089,85.405678 C356.630035,80.933273 361.672668,79.637360 365.330109,81.880753 C370.701630,85.175507 370.583435,91.700768 364.797363,97.704910 z\"/>\n </svg>\n\n </div>\n }\n </div>\n}\n@else if(viewType == 'list'){\n <div [class.error-border]=\"required && (filesArray?.length || 0) <= 0\" [style.height]=\"filesArray?.length ? null : config?.height\" style=\"width: 100%; display: flex; gap: 12px; flex-direction: column; --tis-image-picker-height: {{config?.height ?? 0}}\">\n @if(filesArray?.length){\n @for(file of filesArray; track file.s3Url; let i = $index; let l = $last;){\n <div style=\"position: relative; display: flex; align-items: center; gap: 10px; border-radius: 5px; border: 1px solid black; padding: 5px; height: 56px;\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">description</mat-icon>\n <div style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%;\">{{file?.title}}</div>\n <div style=\"display: flex; align-items: center; gap: 4px;\" *ngIf=\"!file?.loading\">\n <button type=\"button\" mat-icon-button aria-label=\"Download File\" class=\"tis-icon-btn-sm tis-text-download\" style=\"margin: 0px !important;\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!config.hiddenDownloadBtn\">\n <mat-icon>download_for_offline</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button aria-label=\"View File\" class=\"tis-icon-btn-sm tis-text-view\" style=\"margin: 0px !important;\" (click)=\"openFile(file)\" *ngIf=\"!config.hiddenPreview\">\n <mat-icon>visibility</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button aria-label=\"Remove File\" class=\"tis-icon-btn-sm tis-text-cancel\" style=\"margin: 0px !important;\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n <div style=\"display: flex; justify-content: center; align-items: center; gap: 4px;\" style=\"width: 50px;\" *ngIf=\"file?.loading\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"20\"></mat-progress-spinner>\n </div>\n <!-- <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!disabled && !config.hiddenDownloadBtn\">download_for_offline</span> -->\n </div>\n @if(l && (config?.limit || 0) > (filesArray?.length || 0) && !disabled){\n <div style=\"cursor: pointer; display: flex; align-items: center; gap: 4px; border: 1px solid black; border-radius: 5px; padding: 5px; height: 56px;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">upload_file</mat-icon>\n <div style=\"width: 100%;\">\n <div style=\"display: flex; flex-direction: column; align-items: start; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <small>{{hint}}</small>\n }\n </div>\n </div>\n </div>\n }\n }\n }\n @else if(!disabled){\n <div style=\"cursor: pointer; display: flex; align-items: center; gap: 4px; border: 1px solid black; border-radius: 5px; padding: 5px; height: 56px;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">upload_file</mat-icon>\n <div style=\"width: 100%;\">\n <div style=\"display: flex; flex-direction: column; align-items: start; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <small>{{hint}}</small>\n }\n </div>\n </div>\n </div>\n }\n </div>\n}\n\n<!-- <div [ngClass]=\"{'grid-cols-1': config?.cols == 1, 'grid-cols-2': config?.cols == 2, 'grid-cols-3': config?.cols == 3, 'grid-cols-4': config?.cols == 4, 'grid-cols-5': config?.cols == 5, 'grid-cols-6': config?.cols == 6}\" class=\"{{previewInFlex ? 'flex' : 'grid'}} image-list\" style=\"gap: 25px;\">\n @for(file of filesArray; track file.selectorId; let i = $index; let l = $last;){\n <input type=\"file\" size=\"60\" id=\"{{file.selectorId}}\" (change)=\"type == 'file'? detectFiles($event, i): detectImages($event, i)\" accept=\"{{accept}}\" style=\"display: none;\" />\n <div class=\"flex flex-col gap-3\">\n @if(file.s3Url){\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{file.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+file.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" *ngIf=\"file?.loading\">\n <div class=\"shedded\" style=\"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; display: flex; justify-content: center; align-items: center;\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"30\"></mat-progress-spinner>\n </div>\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n </div>\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{file.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+file.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" (click)=\"onSelectFile(file)\" *ngIf=\"!file?.loading\">\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n <span class=\"material-icons cancel\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">highlight_off</span>\n <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!config.hiddenDownloadBtn\">download_for_offline</span>\n </div>\n }\n @else {\n <div class=\"image-item uploader\" id=\"image-item-{{file.selectorId}}-{{i}}-{{i}}\" [style.height]=\"setHeight('image-item-'+file.selectorId+'-'+i+'-'+i)\" (click)=\"loading? null : openImageSelector(file.selectorId)\">\n <div>\n <mat-icon class=\"active\">upload_file</mat-icon>\n <p style=\"margin: 0px;\">\n {{label}}\n @if(hint && hint != ''){\n <br>\n <small>{{hint}}</small>\n }\n </p>\n </div>\n </div>\n }\n <div class=\"image-description\">\n <div class=\"image-description-text\" *ngIf=\"!file?.isEditMode\">{{file?.tags || 'No Tags'}}</div>\n <span class=\"material-icons edit-description-btn edit\" style=\"font-size: 20px;\" (click)=\"$event.stopPropagation(); file.isEditMode = true;\" *ngIf=\"!file?.isEditMode\">edit</span>\n <div class=\"image-description-edit\" *ngIf=\"file?.isEditMode\">\n <textarea rows=\"2\" [(ngModel)]=\"file.tempTags\" placeholder=\"Enter tags here...\"></textarea>\n <div class=\"description-actions\">\n <button class=\"description-action-btn description-cancel-btn\" (click)=\"$event.stopPropagation(); file.tempTags = file.tags; file.isEditMode = false;\">Cancel</button>\n <button class=\"description-action-btn description-save-btn\" (click)=\"$event.stopPropagation(); file.tags = file.tempTags; file.isEditMode = false;\">Save</button>\n </div>\n </div>\n </div>\n </div>\n }\n</div> -->","import { NgModule } from '@angular/core';\nimport { TisImageAndFileUploadAndViewComponent } from './tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component';\nimport { TisPreviewImageComponent } from './tis-preview-image/tis-preview-image.component';\nimport { CommonModule } from '@angular/common';\nimport { TisFileViewerComponent } from './tis-file-viewer/tis-file-viewer.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TisErrorDialogComponent } from './tis-error-dialog/tis-error-dialog.component';\nimport { TisConfirmationDialogComponent } from './tis-confirmation-dialog/tis-confirmation-dialog.component';\nimport { TisExcelFileViewerComponent } from './tis-file-viewer/tis-excel-file-viewer/tis-excel-file-viewer.component';\nimport { TisPdfViewerComponent } from './tis-file-viewer/tis-pdf-viewer/tis-pdf-viewer.component';\nimport { TisVideoComponent } from './tis-file-viewer/tis-video/tis-video.component';\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\n\nconst uiImports = [\n MatTooltipModule,\n MatIconModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatInputModule,\n MatButtonModule,\n MatDialogModule,\n];\n\n\n@NgModule({\n declarations: [\n TisImageAndFileUploadAndViewComponent,\n TisPreviewImageComponent,\n TisFileViewerComponent,\n TisExcelFileViewerComponent,\n TisPdfViewerComponent,\n TisVideoComponent,\n TisErrorDialogComponent,\n TisConfirmationDialogComponent\n ],\n imports: [\n CommonModule,\n NgxExtendedPdfViewerModule,\n FormsModule,\n ReactiveFormsModule,\n ...uiImports,\n DragDropModule\n ],\n exports: [\n TisImageAndFileUploadAndViewComponent\n ]\n})\nexport class TisImageAndFileUploadAndViewModule { }\n","/*\n * Public API Surface of tis-image-and-file-upload-and-view\n */\n\nexport * from './lib/tis-image-and-file-upload-and-view.service';\nexport * from './lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component';\nexport * from './lib/tis-image-and-file-upload-and-view.module';\n\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4","i5","i6.TisExcelFileViewerComponent","i7.TisPdfViewerComponent","i8.TisVideoComponent","i3","i2.TisHelperService","i6","i7","i8"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAKa,mCAAmC,CAAA;AAE9C,IAAA,WAAA,GAAA;uGAFW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,cAFlC,MAAM,EAAA,CAAA;;2FAEP,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAH/C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCOY,qBAAqB,CAAA;AAWtB,IAAA,KAAA;IATV,OAAO,GAAG,IAAI;IACd,OAAO,GAAG,KAAK;AAEY,IAAA,GAAG;AAGtB,IAAA,SAAS;AAEjB,IAAA,WAAA,CACU,KAAwB,EAAA;QAAxB,IAAK,CAAA,KAAA,GAAL,KAAK;;AAKf,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAG,OAAO,CAAC,KAAK,CAAC,EAAE;YACjB,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;;;IAI5D,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;;AAG9B,IAAA,eAAe,CAAC,EAAO,EAAA;AACrB,QAAA,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM;;AAGhC,IAAA,YAAY,CAAC,EAAO,EAAA;AAClB,QAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;;uGArCjB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOrB,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB1C,40CAyCI,EAAA,MAAA,EAAA,CAAA,k7EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FD9BS,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EACd,UAAA,EAAA,KAAK,EAGA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,40CAAA,EAAA,MAAA,EAAA,CAAA,k7EAAA,CAAA,EAAA;sFAOpB,GAAG,EAAA,CAAA;sBAA7B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAGjB,SAAS,EAAA,CAAA;sBADhB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,6BAA6B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MERhD,2BAA2B,CAAA;AAOlB,IAAA,SAAA;AALO,IAAA,GAAG;IAE9B,OAAO,GAAI,qDAAqD;IAChE,SAAS,GAAmB,IAAI;AAEhC,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;;AAI7B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;YAClB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;YACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;;;uGAhBnC,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,+HCVxC,4XAOM,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA;;2FDGO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cACrB,KAAK,EAAA,QAAA,EAAA,4XAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA;mFAMU,GAAG,EAAA,CAAA;sBAA7B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MEHd,iBAAiB,CAAA;AACD,IAAA,GAAG;AAC9B,IAAA,IAAI;AAEJ,IAAA,WAAA,GAAA;IAEA,QAAQ,GAAA;AACN,QAAA,IAAG,IAAI,CAAC,GAAG,EAAC;AACV,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;;AAIlD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAG,OAAO,CAAC,KAAK,CAAC,EAAE;YACjB,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;;;AAI7D,IAAA,WAAW,CAAC,IAAY,EAAA;QACtB,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5B,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACxC,QAAA,OAAO,QAAQ,CAAC,iBAAiB,EAAE,IAAI,KAAK,GAAG,KAAK,GAAE,QAAQ,CAAC,iBAAiB,EAAE;;uGAtBzE,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,mHCT9B,6NAGQ,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDMK,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,KAAK,EAAA,QAAA,EAAA,6NAAA,EAAA;wDAKU,GAAG,EAAA,CAAA;sBAA7B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MEEd,sBAAsB,CAAA;AAMxB,IAAA,SAAA;AACyB,IAAA,IAAA;AACxB,IAAA,SAAA;AAPV,IAAA,OAAO;AAEsD,IAAA,SAAS;AAEtE,IAAA,WAAA,CACS,SAA+C,EACtB,IAA0B,EAClD,SAAuB,EAAA;QAFxB,IAAS,CAAA,SAAA,GAAT,SAAS;QACgB,IAAI,CAAA,IAAA,GAAJ,IAAI;QAC5B,IAAS,CAAA,SAAA,GAAT,SAAS;AAEjB,QAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;QAEtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG;QAC5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC;QAEhD,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC5C,YAAA,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;;AAE/C,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;AACjC,gBAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;;AAExC,SAAC,CAAC;;IAGJ,YAAY,GAAA;QACV,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QACpC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;AACrC,QAAA,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC5D,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,KAAK,EAAE;QACV,EAAE,CAAC,MAAM,EAAE;;AAGb,IAAA,OAAO,CAAC,MAAsB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;;AAnCnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,gDAOvB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAPd,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGtB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECflC,+8BAwBA,EAAA,MAAA,EAAA,CAAA,gVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,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,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDZa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,KAAK,EAAA,QAAA,EAAA,+8BAAA,EAAA,MAAA,EAAA,CAAA,gVAAA,CAAA,EAAA;;0BAWd,MAAM;2BAAC,eAAe;sEAJoC,SAAS,EAAA,CAAA;sBAArE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MENxC,wBAAwB,CAAA;AAW1B,IAAA,SAAA;AACyB,IAAA,IAAA;IAXlC,KAAK,GAAG,GAAG;IACX,MAAM,GAAG,GAAG;IACZ,SAAS,GAAY,IAAI;AACzB,IAAA,WAAW;AACX,IAAA,WAAW;AACX,IAAA,UAAU;AACV,IAAA,WAAW;IAGX,WACS,CAAA,SAAiD,EACxB,IAAS,EAAA;QADlC,IAAS,CAAA,SAAA,GAAT,SAAS;QACgB,IAAI,CAAA,IAAA,GAAJ,IAAI;;IAGtC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACjB,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aAC1C,EAAE,GAAG,CAAC;;;AAIX,IAAA,qBAAqB,CAAC,QAAgB,EAAA;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE;AACvB,QAAA,GAAG,CAAC,GAAG,GAAG,QAAQ;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,QAAA,GAAG,CAAC,MAAM,GAAG,MAAK;AAChB,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,YAAY;AAClC,YAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,aAAa;YACpC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,aAAa;AACvD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,iBAAiB,GAAG,gBAAgB;AAC1E,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACxB,SAAC;AAED,QAAA,GAAG,CAAC,OAAO,GAAG,MAAK;AACjB,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC;AACtC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACxB,SAAC;;IAGH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;AA3Cb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,gDAYzB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAZd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,8ECTrC,0uBAgBC,EAAA,MAAA,EAAA,CAAA,ybAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,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,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDPY,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,KAAK,EAAA,QAAA,EAAA,0uBAAA,EAAA,MAAA,EAAA,CAAA,ybAAA,CAAA,EAAA;;0BAgBd,MAAM;2BAAC,eAAe;;;MEZd,uBAAuB,CAAA;AAEzB,IAAA,SAAA;AACyB,IAAA,IAAA;IAFlC,WACS,CAAA,SAAgD,EACvB,IAAS,EAAA;QADlC,IAAS,CAAA,SAAA,GAAT,SAAS;QACgB,IAAI,CAAA,IAAA,GAAJ,IAAI;;IAGtC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;AAPb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,gDAGxB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAHd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,iFCTpC,waASM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA;;2FDAO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cACpB,KAAK,EAAA,QAAA,EAAA,waAAA,EAAA;;0BAOd,MAAM;2BAAC,eAAe;;;MEDd,gBAAgB,CAAA;AAGjB,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,IAAA;AAHV,IAAA,WAAA,CACU,QAAqB,EACrB,MAAiB,EACjB,IAAgB,EAAA;QAFhB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAI,CAAA,IAAA,GAAJ,IAAI;;AAGd,IAAA,gBAAgB,CAAC,KAAwB,EAAE,QAAQ,GAAG,IAAI,EAAA;AACxD,QAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC;QAEjC,IAAI,YAAY,GAAG,8BAA8B;QACjD,IAAI,SAAS,GAAG,eAAe;QAC/B,MAAM,SAAS,GAAG,KAAK;AAEvB,QAAA,IAAI,SAAS,CAAC,MAAM,IAAI,GAAG,EAAE;AAC3B,YAAA,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE;AACxE,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAChE,gBAAA,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO;AACzC,gBAAA,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;;;AAEhC,aAAA,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;AACjC,YAAA,YAAY,GAAG,SAAS,CAAC,OAAO;AAChC,YAAA,SAAS,GAAG,SAAS,CAAC,UAAU;;AAGlC,QAAA,IAAI,SAAS,IAAI,kBAAkB,IAAI,SAAS,IAAI,iBAAiB,IAAI,SAAS,IAAI,uBAAuB,EAAE;AAC7G,YAAA,IAAI,cAAc,GAAQ;AACxB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,SAAS,EAAE,iBAAiB;AAC5B,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,WAAW,EAAE,iBAAiB;aAC/B;YAED,MAAM,SAAS,GAA0C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACjG,gBAAA,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,CAAC,yBAAyB,CAAC;AACvC,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,YAAY,EAAE,KAAK;AACpB,aAAA,CAAC;AAEF,YAAA,OAAO,SAAS;;aAEX;AACL,YAAA,MAAM,WAAW,GAAqC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACvH,YAAA,OAAO,WAAW;;;AAKtB,IAAA,cAAc,CAAC,OAAe,EAAE,KAAa,EAAE,QAAQ,GAAG,IAAI,EAAA;QAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AACjC,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;;AAGJ,IAAA,YAAY,CAAC,OAAe,EAAE,KAAa,EAAE,QAAQ,GAAG,IAAI,EAAA;QAC1D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AACjC,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;;AAGJ,IAAA,MAAM,YAAY,CAAC,KAAU,EAAE,QAAgB,EAAA;QAE7C,IAAI,SAAS,GAAG,KAAK;AAErB,QAAA,IAAI,SAAS,GAAS,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC3E,QAAA,OAAO,SAAS;;IAGlB,aAAa,CAAC,OAAe,EAAE,QAAgB,EAAA;QAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;AAC7C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;;AAEzC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACtD,QAAA,OAAO,IAAI;;AAGb,IAAA,kBAAkB,CAAC,IAAS,EAAA;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;AAC7B,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;AACzB,gBAAA,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1B,aAAC;AACD,YAAA,MAAM,CAAC,OAAO,GAAG,CAAC,CAAM,KAAI;AAC1B,gBAAA,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACxB,aAAC;AACD,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5B,SAAC,CAAC;;AAGJ,IAAA,YAAY,CAAC,GAAW,EAAE,QAAgB,EAAE,QAAgB,EAAE,IAAY,EAAA;AACxE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAG1D,IAAA,mBAAmB,CAAC,GAAW,EAAE,IAAS,EAAE,KAAa,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,GAAG,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE,EAAE,IAAI,CAAC;;IAGtD,SAAS,CAAC,GAAW,EAAE,IAAS,EAAA;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;;IAGlC,cAAc,CAAC,GAAW,EAAE,IAAS,EAAA;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;;AAGlC,IAAA,OAAO,CAAC,GAAW,EAAE,IAAU,EAAE,WAAoB,EAAA;QACnD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,WAAW,GAAG,WAAW,GAAG,qBAAqB,EAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,EAAE,EAAE,CAAC;AACxI,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;;IAG9C,kBAAkB,CAAC,GAAW,EAAE,IAAS,EAAA;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;;uGAtHvB,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCDY,8BAA8B,CAAA;AAEhC,IAAA,SAAA;AACyB,IAAA,IAAA;IAFlC,WACS,CAAA,SAAuD,EAC9B,IAAS,EAAA;QADlC,IAAS,CAAA,SAAA,GAAT,SAAS;QACgB,IAAI,CAAA,IAAA,GAAJ,IAAI;QAEpC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC,CAAC;;AAGnD,IAAA,OAAO,CAAC,MAAsB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;;AATnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,gDAG/B,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAHd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,oFCT3C,khCAiBM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA;;2FDRO,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cACvB,KAAK,EAAA,QAAA,EAAA,khCAAA,EAAA;;0BAOd,MAAM;2BAAC,eAAe;;;AEA3B,MAAM,oBAAoB,GAAG,CAAC,MAAc,KAAY;IACtD,MAAM,KAAK,GAAG,gEAAgE;IAC9E,IAAI,MAAM,GAAG,EAAE;AACf,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/B,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;;AAElE,IAAA,OAAO,MAAM;AACf,CAAC;MAQY,qCAAqC,CAAA;AA4GvC,IAAA,MAAA;AACC,IAAA,MAAA;AACA,IAAA,kBAAA;AA7GF,IAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAElC,IAAA,SAAS;AACzB,IAAA,UAAU;AACV,IAAA,QAAQ;IACR,QAAQ,GAAoB,MAAM;IAClC,IAAI,GAAqB,OAAO;IAChC,KAAK,GAAkB,IAAI;IAC3B,QAAQ,GAAY,KAAK;AACzB,IAAA,IAAI;IACJ,IAAI,GAAkB,IAAI;IAC1B,MAAM,GAAW,EAAE;IACnB,UAAU,GAAQ,IAAI;IACtB,OAAO,GAAwB,IAAI;IACnC,QAAQ,GAAY,KAAK;IACzB,WAAW,GAAY,KAAK;IAC5B,aAAa,GAAY,KAAK;IAC9B,cAAc,GAAW,EAAE;IAC3B,0BAA0B,GAAY,IAAI;IAC1C,2BAA2B,GAAY,KAAK;AAC5C,IAAA,qBAAqB;AACrB,IAAA,YAAY;AACX,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE;AACrC,IAAA,UAAU,GAAG,IAAI,YAAY,EAAE;AAC/B,IAAA,YAAY,GAAG,IAAI,YAAY,EAAO;AACtC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAO;IAExC,eAAe,GAAY,KAAK;AAC/B,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAO;IAEtD,QAAQ,GAAG,KAAK;IAChB,KAAK,GAAG,KAAK;AAEb,IAAA,UAAU;AACV,IAAA,MAAM;AAGN,IAAA,MAAM,GAAW;AACf,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,eAAe,EAAE,KAAK;AACtB,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,aAAa,EAAE,CAAC;AAChB,QAAA,MAAM,EAAE,OAAO;AACf,QAAA,UAAU,EAAE,oBAAoB,CAAC,EAAE,CAAC;AACpC,QAAA,eAAe,EAAE;KAClB;IAED,cAAc,GAAG,IAAI;AAErB,IAAA,UAAU,GAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2CnB;AACD,IAAA,eAAe;AACf,IAAA,iBAAiB;IACjB,MAAM,GAAG,EAAE;IACX,OAAO,GAAG,KAAK;IACf,MAAM,GAAG,KAAK;AAGd,IAAA,WAAA,CACS,MAAiB,EAChB,MAAwB,EACxB,kBAAsC,EAAA;QAFvC,IAAM,CAAA,MAAA,GAAN,MAAM;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;;IAG5B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;AACpE,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,EAC7B,WAAW,EAAE,CACd;AAEH,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC;AACvE,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,EAC7B,WAAW,EAAE,CACd;QAEH,IAAI,CAAC,aAAa,EAAE;;;;;IAOtB,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAG;AAC5B,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAG;AACxB,YAAA,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAG;YACpC,IAAI,IAAI,GAAG,CAAC;AACZ,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC;;AAEpC,iBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACnB,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC;;iBAEjC;gBACH,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;;AAGhC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI;AACzB,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YACvB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY;;AAEzD,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YACzB,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY;;AAE7D,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;YACxB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY;AAClD,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK;AAC9B,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE;AAClC,gBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI;;;AAGjC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE;;AAEtB,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,IAAI,EAAE;YACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAG;AACzC,gBAAA,CAAC,CAAC,OAAO,GAAG,KAAK;AACjB,gBAAA,OAAO,CAAC;AACV,aAAC,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC;;;IAInD,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY;;AAGvD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe;;AAG7D,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe;;AAG7D,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;;AAGzD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;;AAGzD,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK;AAC9B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI;;AAG/B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU;;AAGnD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ;;AAG/C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK;;AAGzC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI;;AAGvC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU;;AAGnD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;;AAGzD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM;;AAG3C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU;;AAGnD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe;;;IAI/D,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;SAC3B,EAAE,EAAE,CAAC;;AAGR,IAAA,iBAAiB,CAAC,UAAqB,GAAA,IAAI,CAAC,MAAM,EAAE,UAAU,EAAA;QAC5D,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE;;AAG9C,IAAA,MAAM,YAAY,CAAC,KAAU,EAAE,KAAA,GAAgB,CAAC,CAAC,EAAA;AAC/C,QAAA,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;QACnC,KAAK,CAAC,cAAc,EAAE;QAEtB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;;AAGvB,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QAC9B,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,wBAAwB,EAAE,OAAO,EAAE,IAAI,CAAC;YACjE;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;AACjE,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,+BAA+B,IAAI,CAAC,MAAM,EAAE,KAAK,CAAS,OAAA,CAAA,EAAE,OAAO,EAAE,IAAI,CAAC;YACnG;;AAGF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,cAAc,GAAU,EAAE;;QAG9B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;AAEzF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;AAC3B,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;;AAGzC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AAEjC,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,cAAc,EAAE;;AAGvB,IAAA,MAAM,YAAY,CAAC,IAAU,EAAE,cAAqB,EAAE,KAAa,EAAA;AACjE,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI;AAC/B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;YAC7D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI;AACzC,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,uBAAuB,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAE,CAAA,EAAE,OAAO,EAAE,IAAI,CAAC;YAC7I;;AAGF,QAAA,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,KAAI;AACnC,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;AAC7B,YAAA,MAAM,CAAC,MAAM,GAAG,OAAO,CAAM,KAAI;AAC/B,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI;AACxB,gBAAA,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM;AAE9H,gBAAA,IAAI;AACF,oBAAA,IAAI,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE;AACzI,oBAAA,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa;oBAClD,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAExD,oBAAA,IAAI,gBAAgB,GAAG;AACrB,wBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO;wBACjD,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU;AAClD,wBAAA,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI;AAC3C,wBAAA,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK;AACtC,wBAAA,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;qBAC3D;AAED,oBAAA,IAAG,KAAK,IAAI,CAAC,CAAC,EAAC;AACb,wBAAA,IAAG,IAAI,CAAC,2BAA2B,EAAC;4BAClC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC;;6BAEtD;4BACF,IAAI,CAAC,UAAU,GAAG,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;;;yBAGxD;AACF,wBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,gBAAgB,EAAC;;oBAE3E,IAAI,CAAC,gBAAgB,EAAE;AACvB,oBAAA,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAErC,oBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,SAAS,EAAE;;AAG5E,oBAAA,IAAG,KAAK,IAAI,CAAC,CAAC,EAAC;AACb,wBAAA,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,SAAS;wBACnD,gBAAgB,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU;;yBAEjD;wBACF,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,gBAAgB,CAAC,SAAS;AACzD,wBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU;;oBAE3D,IAAI,CAAC,gBAAgB,EAAE;AAEvB,oBAAA,OAAO,EAAE;;gBACT,OAAO,KAAU,EAAE;AACnB,oBAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACnC,oBAAA,OAAO,EAAE;;AAEb,aAAC;AAED,YAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChC,SAAC,CAAC;;AAGJ,IAAA,YAAY,CAAC,IAAS,EAAA;QACpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACrC,IAAI,IAAI,IAAI,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE;AAC5B,gBAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC;gBAExD,IAAI,MAAM,GAAU,EAAE;gBACtB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,KAAI;AAC3B,oBAAA,IAAI,CAAC,EAAE,UAAU,EAAE;AACjB,wBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;;;AAIrK,oBAAA,OAAO,CAAC;AAEV,iBAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,IAAI,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AACtM,oBAAA,IAAI,EAAE,CAAC,EAAO,KAAI;wBAChB,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAS,KAAI;4BAC1B,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC;AAC5F,4BAAA,IAAG,aAAa,KAAK,CAAC,CAAC,EAAC;gCACtB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,EAAC;;AAE9G,yBAAC,CAAC;wBACF,IAAI,CAAC,QAAQ,EAAE;wBACf,OAAO,CAAC,EAAE,CAAC;qBACZ;AACD,oBAAA,KAAK,EAAE,CAAC,KAAU,KAAK,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK;AAC1D,iBAAA,CAAC;;iBAEG;gBACL,OAAO,CAAC,KAAK,CAAC;;AAElB,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,KAAU,EAAE,CAAM,EAAE,KAAa,EAAE,GAAQ,EAAA;QACrD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,cAAc,GAAiB;AACjC,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,cAAc;AACjD,gBAAA,OAAO,EAAE,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,8CAA8C,CAAC;AACrH,gBAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,IAAI,iBAAiB;AAC5D,gBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,QAAQ;AACzC,gBAAA,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE,iBAAiB,IAAI,aAAa;AACxE,gBAAA,kBAAkB,EAAE,CAAsB,mBAAA,EAAA,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAE,CAAA;AACjF,gBAAA,gBAAgB,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,IAAI,IAAI;AAC7D,gBAAA,iBAAiB,EAAE,CAAqB,kBAAA,EAAA,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAE;aAC/E;AAED,YAAA,MAAM,UAAU,GAAG,CAAC,yBAAyB,CAAC;AAC9C,YAAA,IAAG,IAAI,CAAC,YAAY,EAAE,UAAU,EAAC;gBAC/B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;;YAG/C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;AACjE,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,YAAY,EAAE,IAAI;AACnB,aAAA,CAAC;YAEF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AAChD,gBAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC;gBACzD,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;;AAEvC,aAAC,CAAC;;aAEC;YACH,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;;;;AAKvC,IAAA,WAAW,CAAC,KAAU,EAAE,KAAa,EAAE,GAAQ,EAAA;AAC7C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI;AACrC,QAAA,IAAI,GAAG,EAAE,EAAE,EAAE;YACX,OAAO,GAAG,CAAC,UAAU;YACrB,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;;aAEvC;AACH,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,QAAQ,EAAE;;;AAInB,IAAA,mBAAmB,CAAC,GAAQ,EAAE,KAAa,EAAE,WAAoB,KAAK,EAAA;AACpE,QAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,GAAG,CAAC;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACnF,YAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;;AAE1D,SAAC,EACD,CAAC,GAAQ,KAAO,EAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA,EAAE,CAAC;;AAGnG,IAAA,MAAM,WAAW,CAAC,KAAU,EAAE,KAAA,GAAgB,CAAC,CAAC,EAAA;AAC9C,QAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;QAClC,KAAK,CAAC,cAAc,EAAE;QAEtB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;;AAGvB,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QAC9B,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE,OAAO,EAAE,IAAI,CAAC;YAC/D;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;AACjE,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,+BAA+B,IAAI,CAAC,MAAM,EAAE,KAAK,CAAQ,MAAA,CAAA,EAAE,OAAO,EAAE,IAAI,CAAC;YAClG;;AAGF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,aAAa,GAAU,EAAE;;QAG7B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AAEvF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;AAC3B,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;;AAGvC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AAEjC,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,cAAc,EAAE;;AAGvB,IAAA,MAAM,WAAW,CAAC,IAAU,EAAE,aAAoB,EAAE,KAAa,EAAA;AAC/D,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI;AAC/B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;YAC7D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI;AACzC,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,uBAAuB,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAE,CAAA,EAAE,OAAO,EAAE,IAAI,CAAC;YAC7I;;AAGF,QAAA,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,KAAI;AACnC,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;AAC7B,YAAA,MAAM,CAAC,MAAM,GAAG,OAAO,CAAM,KAAI;AAC/B,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI;gBACxB,IAAI,MAAM,GAAG,IAAI,UAAU,CAAc,MAAM,CAAC,MAAM,CAAC;AAEvD,gBAAA,IAAI;AACF,oBAAA,IAAI,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE;AACzI,oBAAA,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa;AAElD,oBAAA,IAAI,eAAe,GAAG;AACpB,wBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW;AAChE,wBAAA,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI;wBAC5D,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;AACrD,wBAAA,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;qBAC3D;AAED,oBAAA,IAAG,KAAK,IAAI,CAAC,CAAC,EAAC;AACb,wBAAA,IAAG,IAAI,CAAC,2BAA2B,EAAC;4BAClC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC;;6BAErD;4BACF,IAAI,CAAC,UAAU,GAAG,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;;;yBAGvD;AACF,wBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,eAAe,EAAC;;oBAE1E,IAAI,CAAC,gBAAgB,EAAE;AACvB,oBAAA,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC;AAEnC,oBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE;;AAG5E,oBAAA,IAAG,KAAK,IAAI,CAAC,CAAC,EAAC;wBACb,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,WAAW;wBAC/D,eAAe,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU;;yBAEhD;AACF,wBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,WAAW;AAC7E,wBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU;;oBAE3D,IAAI,CAAC,gBAAgB,EAAE;AAEvB,oBAAA,OAAO,EAAE;;gBACT,OAAO,KAAU,EAAE;AACnB,oBAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACnC,oBAAA,OAAO,EAAE;;AAEb,aAAC;AAED,YAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChC,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,IAAS,EAAA;QACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACrC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,gBAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,IAAI,CAAC;gBAEvD,IAAI,KAAK,GAAU,EAAE;gBACrB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,KAAI;AAC3B,oBAAA,IAAI,CAAC,EAAE,UAAU,EAAE;AACjB,wBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;;;AAIpK,oBAAA,OAAO,CAAC;AACV,iBAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,IAAI,eAAe,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AACpM,oBAAA,IAAI,EAAE,CAAC,EAAO,KAAI;wBAChB,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAS,KAAI;4BAC1B,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC;AAC5F,4BAAA,IAAG,aAAa,KAAK,CAAC,CAAC,EAAC;gCACtB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,EAAC;;AAE9G,yBAAC,CAAC;wBACF,IAAI,CAAC,QAAQ,EAAE;wBACf,OAAO,CAAC,EAAE,CAAC;qBACZ;oBACD,KAAK,EAAE,CAAC,KAAU,KAAK,MAAM,CAAC,KAAK;AACpC,iBAAA,CAAC;;iBACG;gBACL,OAAO,CAAC,KAAK,CAAC;;AAElB,SAAC,CAAC;;AAGJ,IAAA,UAAU,CAAC,KAAU,EAAE,CAAM,EAAE,KAAa,EAAE,IAAS,EAAA;QACrD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,cAAc,GAAiB;AACjC,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,aAAa;AAChD,gBAAA,OAAO,EAAE,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,6CAA6C,CAAC;AACpH,gBAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,IAAI,iBAAiB;AAC5D,gBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,QAAQ;AACzC,gBAAA,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE,iBAAiB,IAAI,aAAa;AACxE,gBAAA,kBAAkB,EAAE,CAAsB,mBAAA,EAAA,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAE,CAAA;AACjF,gBAAA,gBAAgB,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,IAAI,IAAI;AAC7D,gBAAA,iBAAiB,EAAE,CAAqB,kBAAA,EAAA,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAE;aAC/E;AAED,YAAA,MAAM,UAAU,GAAG,CAAC,yBAAyB,CAAC;AAC9C,YAAA,IAAG,IAAI,CAAC,YAAY,EAAE,UAAU,EAAC;gBAC/B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;;YAG/C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;AACjE,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,YAAY,EAAE,IAAI;AACnB,aAAA,CAAC;YAEF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AAChD,gBAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC;gBACzD,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;;AAEvC,aAAC,CAAC;;aAEC;YACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;;;AAIvC,IAAA,UAAU,CAAC,KAAU,EAAE,KAAa,EAAE,IAAS,EAAA;AAC7C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI;AACrC,QAAA,IAAI,IAAI,EAAE,EAAE,EAAE;YACZ,OAAO,IAAI,CAAC,UAAU;YACtB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;;aAEvC;AACH,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAIjC,IAAA,kBAAkB,CAAC,IAAS,EAAE,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAA;AAC3D,QAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACpF,YAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;;YAExD,IAAI,CAAC,QAAQ,EAAE;AACjB,SAAC,EACD,CAAC,GAAQ,KAAO,EAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA,EAAE,CAAC;;IAGnG,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGvC,IAAA,MAAM,YAAY,CAAC,GAAW,EAAE,QAAgB,EAAA;QAC9C,KAAK,CAAC,GAAG;aACN,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;aAChC,IAAI,CAAC,IAAI,IAAG;YACX,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;YACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACtC,YAAA,EAAE,CAAC,IAAI,GAAG,OAAO;AACjB,YAAA,EAAE,CAAC,QAAQ,GAAG,QAAQ;AACtB,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,EAAE,CAAC,KAAK,EAAE;AACV,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AAC7B,YAAA,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAC;AACA,aAAA,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;;IAG5D,YAAY,GAAQ,IAAI;AACxB,IAAA,UAAU,GAAW,GAAG,CAAC;AAEzB,IAAA,YAAY,CAAC,IAAS,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;iBACf;AACL,gBAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAK;AAClC,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;wBAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEjC,iBAAC,EAAE,IAAI,CAAC,UAAU,CAAC;;;aAGlB;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;;;AAIvB,IAAA,QAAQ,CAAC,IAAS,EAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;YAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;;;IAIlD,iBAAiB,CAAC,GAAW,EAAE,KAAa,EAAA;AAC1C,QAAA,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACxF,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;;aAE7B,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC;;;;;AAK5B,aAAA,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7F,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC;;aAE9B;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;;;AAIjC,IAAA,sBAAsB,CAAC,GAAW,EAAA;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAC3D,YAAA,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;YACnC,IAAI,EAAE,EAAE,GAAG,EAAE;AACd,SAAA,CAAC;QAEF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AAChD,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC;AAC9C,SAAC,CAAC;;IAGJ,cAAc,CAAC,MAAc,EAAE,QAA4B,EAAA;AACzD,QAAA,IAAI,UAAU,GAAyB;AACrC,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,QAAQ,EAAE;SACX;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACzD,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,KAAK;YACrC,MAAM,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,KAAK;YACtC,SAAS,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,KAAK;YACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,MAAM;YACzC,UAAU,EAAE,CAAC,iBAAiB,CAAC;AAC/B,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,YAAY,EAAE,KAAK;AACpB,SAAA,CAAC;QAEF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AAChD,YAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;AACzC,SAAC,CAAC;;AAGJ,IAAA,kBAAkB,CAAC,GAAW,EAAA;QAC5B,IAAI,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/B,IAAI,SAAS,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC;AAClD,QAAA,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,MAAM,EAAE;AACnE,YAAA,OAAO,IAAI;;aAER;AACH,YAAA,OAAO,KAAK;;;AAIhB,IAAA,SAAS,CAAC,EAAU,EAAA;QAClB,IAAI,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,WAAW;;QAErD,OAAO,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI;;IAGtB,0BAA0B,GAAA;AACxB,QAAA,IAAG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC;YAC7C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE;AAClF,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,oBAAA,UAAU,EAAE,oBAAoB,CAAC,EAAE,CAAC;AACpC,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,UAAU,EAAE;AACb,iBAAA,CAAC;;;aAGF;AACF,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAS,KAAI;AACnD,gBAAA,OAAO,EAAC,GAAG,IAAI,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAC;AAC1F,aAAC,CAAC;;;AAIN,IAAA,gBAAgB,CAAC,IAAS,EAAA;AACxB,QAAA,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,CAAC;QAErD,IAAI,OAAO,GAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AACzC,QAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,OAAO,CAAC;AAE3D,QAAA,IAAG,OAAO,IAAI,OAAO,IAAI,EAAE,EAAC;YAC1B,IAAI,WAAW,GAAU,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC;AAC5C,YAAA,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,WAAW,CAAC;YAE1E,WAAW,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAG;gBAC9D,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;qBACjB;AACF,oBAAA,CAAC,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE;;AAEb,gBAAA,OAAO,CAAC;AACV,aAAC,CAAC;AAEF,YAAA,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAG,EAAA,OAAO,EAAE;;aAE1B;AACF,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;;;IAI3B,SAAS,CAAC,KAAoB,EAAE,IAAS,EAAA;AACvC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;;;AAI/B,IAAA,gBAAgB,CAAC,IAAS,EAAA;QACxB,IAAI,OAAO,GAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AAEzC,QAAA,IAAG,OAAO,IAAI,OAAO,IAAI,EAAE,EAAC;YAC1B,IAAI,WAAW,GAAU,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC;YAC5C,WAAW,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAG;gBAC9D,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;qBACjB;AACF,oBAAA,CAAC,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE;;AAEb,gBAAA,OAAO,CAAC;AACV,aAAC,CAAC;AAEF,YAAA,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAG,EAAA,OAAO,GAAG;;aAE3B;AACF,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;;;AAI3B,IAAA,YAAY,CAAC,IAAS,EAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,IAAI,eAAe,EAAE,EAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAC,CAAC,CAAC,SAAS,CAAC;AAC7H,YAAA,IAAI,EAAE,CAAC,EAAO,KAAI;AAChB,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;gBACvD,IAAI,CAAC,QAAQ,EAAE;aAChB;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG;AACtD,SAAA,CAAC;;AAGJ,IAAA,IAAI,CAAC,KAAyB,EAAA;;QAE5B,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,YAAY,EAAE;YAC9C;;;QAIF,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAExC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5C;;;QAIF,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;;AAGrE,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW;AAE7B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;;IAG3B,cAAc,CAAC,gBAAyB,KAAK,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,KAAa,KAAI;AACjE,YAAA,OAAO,EAAC,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,EAAC;AACzC,SAAC,CAAC;QAEF,IAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,EAAE,cAAc,EAAC;YACxD,IAAI,KAAK,GAAU,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE;AAC7F,YAAA,KAAK,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,IAAG;AACrB,gBAAA,OAAO,EAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,IAAI,CAAC,EAAC;AAChD,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,IAAI,eAAe,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC,SAAS,CAAC;AAC/F,gBAAA,IAAI,EAAE,CAAC,EAAO,KAAI;oBAChB,IAAG,aAAa,EAAC;AACf,wBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;;yBAErD;wBACF,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,GAAG,OAAO,GAAG,MAAM,CAAiC,+BAAA,CAAA,EAAE,SAAS,EAAE,IAAI,CAAC;;oBAE1H,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC9C;AACD,gBAAA,KAAK,EAAE,CAAC,GAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG;AACtD,aAAA,CAAC;;aAEA;YACF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;;AAIjD,IAAA,YAAY,CAAC,IAAY,EAAA;AACvB,QAAA,IAAI,OAAO,GAAQ,IAAI,EAAE,IAAI,EAAE;QAC/B,IAAI,WAAW,GAAU,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC;AAE5C,QAAA,OAAO,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;uGAn6BpC,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,+3BC3BlD,gzjCAqNU,EAAA,MAAA,EAAA,CAAA,sxKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,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,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FD1LG,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBANjD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,cAClC,KAAK,EAAA,QAAA,EAAA,gzjCAAA,EAAA,MAAA,EAAA,CAAA,sxKAAA,CAAA,EAAA;+IAOQ,SAAS,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;gBACd,UAAU,EAAA,CAAA;sBAAlB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,0BAA0B,EAAA,CAAA;sBAAlC;gBACQ,2BAA2B,EAAA,CAAA;sBAAnC;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBACS,kBAAkB,EAAA,CAAA;sBAA3B;;;AElCH,MAAM,SAAS,GAAG;IAChB,gBAAgB;IAChB,aAAa;IACb,iBAAiB;IACjB,wBAAwB;IACxB,cAAc;IACd,eAAe;IACf,eAAe;CAChB;MA0BY,kCAAkC,CAAA;uGAAlC,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,iBArB3C,qCAAqC;YACrC,wBAAwB;YACxB,sBAAsB;YACtB,2BAA2B;YAC3B,qBAAqB;YACrB,iBAAiB;YACjB,uBAAuB;AACvB,YAAA,8BAA8B,aAG9B,YAAY;YACZ,0BAA0B;YAC1B,WAAW;AACX,YAAA,mBAAmB,EAzBrB,gBAAgB;YAChB,aAAa;YACb,iBAAiB;YACjB,wBAAwB;YACxB,cAAc;YACd,eAAe;YACf,eAAe,EAqBb,cAAc,CAAA,EAAA,OAAA,EAAA,CAGd,qCAAqC,CAAA,EAAA,CAAA;AAG5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,YAX3C,YAAY;YACZ,0BAA0B;YAC1B,WAAW;YACX,mBAAmB,EAChB,SAAS,EACZ,cAAc,CAAA,EAAA,CAAA;;2FAML,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAvB9C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,qCAAqC;wBACrC,wBAAwB;wBACxB,sBAAsB;wBACtB,2BAA2B;wBAC3B,qBAAqB;wBACrB,iBAAiB;wBACjB,uBAAuB;wBACvB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,0BAA0B;wBAC1B,WAAW;wBACX,mBAAmB;AACnB,wBAAA,GAAG,SAAS;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;ACvDD;;AAEG;;ACFH;;AAEG;;;;"}
|