{"version":3,"file":"valtimo-resource.mjs","sources":["../../../../projects/valtimo/resource/src/lib/models/upload.model.ts","../../../../projects/valtimo/resource/src/lib/models/uploader.model.ts","../../../../projects/valtimo/resource/src/lib/models/open-zaak.model.ts","../../../../projects/valtimo/resource/src/lib/models/index.ts","../../../../projects/valtimo/resource/src/lib/services/open-zaak.service.ts","../../../../projects/valtimo/resource/src/lib/services/open-zaak-upload.service.ts","../../../../projects/valtimo/resource/src/lib/services/s3.service.ts","../../../../projects/valtimo/resource/src/lib/services/s3-upload.service.ts","../../../../projects/valtimo/resource/src/lib/services/upload-provider.service.ts","../../../../projects/valtimo/resource/src/lib/services/download.service.ts","../../../../projects/valtimo/resource/src/lib/resource.module.ts","../../../../projects/valtimo/resource/src/lib/resource-permissions.ts","../../../../projects/valtimo/resource/src/public-api.ts","../../../../projects/valtimo/resource/src/valtimo-resource.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Observable} from 'rxjs';\nimport {ResourceDto} from './uploader.model';\n\ninterface ResourceFile {\n  customUpload?: boolean;\n  originalName: string;\n  size: number;\n  storage: string;\n  type?: string;\n  isLast?: boolean;\n  url?: string;\n  data: {\n    baseUrl?: string;\n    bucketName?: string;\n    createdOn: string;\n    extension?: string;\n    form?: string;\n    key?: string;\n    name: string;\n    project?: string;\n    resourceId: string;\n    sizeInBytes: number;\n  };\n}\n\ninterface UploadService {\n  uploadFile(\n    file: File,\n    documentDefinitionName?: string,\n    documentId?: string\n  ): Observable<ResourceFile>;\n  getResource(resourceId: string): Observable<ResourceDto>;\n  checkUploadProcessLink?(caseDefinitionKey: string): Observable<boolean>;\n  uploadFileWithMetadata?(\n    file: File,\n    documentId: string,\n    metadata: {[key: string]: any}\n  ): Observable<void>;\n  uploadTempFileWithMetadata?(\n    file: File,\n    metadata: {[key: string]: any}\n  ): Observable<DocumentenApiFileReference>;\n}\n\ninterface DocumentenApiFileReference {\n  filename: string;\n  sizeInBytes: number;\n  id: string;\n}\n\nexport {ResourceFile, UploadService, DocumentenApiFileReference};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ResourceDto {\n  url: string;\n  resource: Resource;\n  originalName?: string;\n}\n\nexport interface Resource {\n  id?: string;\n  key: string;\n  name: string;\n  sizeInBytes: number;\n  extension?: string;\n  createdOn?: Date;\n}\n\nexport interface OpenZaakResource {\n  resourceId: string;\n  informatieObjectUrl: string;\n  createdOn: string;\n  name: string;\n  extension: string;\n  sizeInBytes: number;\n}\n\nexport class S3Resource implements Resource {\n  id?: string = null;\n  key: string;\n  name: string;\n  sizeInBytes: number;\n  extension?: string = null;\n  createdOn?: Date = null;\n  documentId?: string;\n\n  constructor(file: File, preSignedUrl: URL, documentId?: string) {\n    this.key = decodeURIComponent(preSignedUrl.pathname.substring(1));\n    this.name = file.name;\n    this.sizeInBytes = file.size;\n    if (!documentId) {\n      return;\n    }\n    this.documentId = documentId;\n  }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class OpenZaakConfig {\n  id: string;\n  url: string;\n  clientId: string;\n  secret: string;\n  rsin: string;\n}\n\nexport interface ZaakType {\n  url: string;\n  omschrijving: string;\n  omschrijvingGeneriek?: string;\n}\n\nexport interface InformatieObjectType {\n  url: string;\n  omschrijving: string;\n}\n\nexport interface InformatieObjectTypeLink {\n  informatieObjectTypeLinkId: string;\n  documentDefinitionName: string;\n  zaakType: string;\n  informatieObjectType: string;\n}\n\nexport interface ZaakTypeLink {\n  id: string;\n  documentDefinitionName: string;\n  zaakTypeUrl: string;\n  zaakInstanceLinks: ZaakInstanceLink[];\n  createWithDossier: boolean;\n  zakenApiPluginConfigurationId: string;\n  rsin: string;\n}\n\nexport interface ZaakTypeRequest {\n  zaaktype: string;\n}\n\nexport interface CreateZaakTypeLinkRequest {\n  documentDefinitionName: string;\n  zaakTypeUrl?: string;\n  createWithDossier: boolean;\n  zakenApiPluginConfigurationId?: string;\n  rsin?: string;\n}\n\nexport interface CreateInformatieObjectTypeLinkRequest {\n  documentDefinitionName: string;\n  zaakType: string;\n  informatieObjectType: string;\n}\n\nexport interface ZaakInstanceLink {\n  zaakInstanceUrl: string;\n  zaakInstanceId: string;\n  documentId: string;\n}\n\nexport interface PreviousSelectedZaak {\n  zaakTypeLink: ZaakTypeLink;\n  zaakType: ZaakType;\n}\n\nexport interface ZaakOperation {\n  type: string;\n  label: string;\n}\n\nexport interface ZaakStatusType {\n  url?: string;\n  omschrijving: string;\n  omschrijvingGeneriek?: string;\n  statustekst?: string;\n  zaakType: string;\n  volgnummer: number;\n  isEindStatus?: boolean;\n  informeren?: boolean;\n}\n\nexport interface ZaakResultType {\n  url?: string;\n  zaaktype: string;\n  omschrijving: string;\n  resultaattypeomschrijving: string;\n  omschrijvingGeneriek?: string;\n  selectielijstklasse: string;\n  toelichting?: string;\n  archiefnominatie?: Archiefnominatie;\n  archiefactietermijn?: string;\n  brondatumArchiefprocedure?: BrondatumArchiefprocedure;\n}\n\nexport interface ZaakBesluitType {\n  url?: string;\n  omschrijving: string;\n}\n\nexport interface BrondatumArchiefprocedure {\n  afleidingswijze: Afleidingswijze;\n  datumkenmerk?: string;\n  einddatumBekend?: boolean;\n  objecttype?: Objecttype;\n  registratie?: string;\n  procestermijn?: string;\n}\n\nexport enum Archiefnominatie {\n  blijvend_bewaren = 'blijven_bewaren',\n  vernietigen = 'vernietigen',\n}\n\nexport enum Afleidingswijze {\n  afgehandeld = 'afgehandeld',\n  ander_datumkenmerk = 'ander_datumkenmerk',\n  eigenschap = 'eigenschap',\n  gerelateerde_zaak = 'gerelateerde_zaak',\n  hoofdzaak = 'hoofdzaak',\n  ingangsdatum_besluit = 'ingangsdatum_besluit',\n  termijn = 'termijn',\n  vervaldatum_besluit = 'vervaldatum_besluit',\n  zaakobject = 'zaakobject',\n}\n\nexport enum Objecttype {\n  adres = 'adres',\n  besluit = 'besluit',\n  buurt = 'buurt',\n  enkelvoudig_document = 'enkelvoudig_document',\n  gemeente = 'gemeente',\n  gemeentelijke_openbare_ruimte = 'gemeentelijke_openbare_ruimte',\n  huishouden = 'huishouden',\n  inrichtingselement = 'inrichtingselement',\n  kadastrale_onroerende_zaak = 'kadastrale_onroerende_zaak',\n  kunstwerkdeel = 'kunstwerkdeel',\n  maatschappelijke_activiteit = 'maatschappelijke_activiteit',\n  medewerker = 'medewerker',\n  natuurlijk_persoon = 'natuurlijk_persoon',\n  niet_natuurlijk_persoon = 'niet_natuurlijk_persoon',\n  openbare_ruimte = 'openbare_ruimte',\n  organisatorische_eenheid = 'organisatorische_eenheid',\n  pand = 'pand',\n  spoorbaandeel = 'spoorbaandeel',\n  status = 'status',\n  terreindeel = 'terreindeel',\n  terrein_gebouwd_object = 'terrein_gebouwd_object',\n  vestiging = 'vestiging',\n  waterdeel = 'waterdeel',\n  wegdeel = 'wegdeel',\n  wijk = 'wijk',\n  woonplaats = 'woonplaats',\n  woz_deelobject = 'woz_deelobject',\n  woz_object = 'woz_object',\n  woz_waarde = 'woz_waarde',\n  zakelijk_recht = 'zakelijk_recht',\n  overige = 'overige',\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './upload.model';\nexport * from './uploader.model';\nexport * from './open-zaak.model';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/config';\nimport {InterceptorSkip} from '@valtimo/security';\nimport {Observable} from 'rxjs';\nimport {\n  CreateInformatieObjectTypeLinkRequest,\n  CreateZaakTypeLinkRequest,\n  DocumentenApiFileReference,\n  InformatieObjectType,\n  InformatieObjectTypeLink,\n  OpenZaakConfig,\n  OpenZaakResource,\n  ResourceDto,\n  ZaakType,\n  ZaakTypeLink,\n  ZaakTypeRequest,\n} from '../models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class OpenZaakService {\n  private valtimoApiConfig: any;\n  private catalogus: string;\n\n  constructor(\n    private http: HttpClient,\n    private configService: ConfigService\n  ) {\n    this.valtimoApiConfig = configService.config.valtimoApi;\n    this.catalogus = configService.config.openZaak.catalogus;\n  }\n\n  getOpenZaakConfig(): Observable<OpenZaakConfig> {\n    return this.http.get<OpenZaakConfig>(`${this.valtimoApiConfig.endpointUri}v1/openzaak/config`);\n  }\n\n  getResource(resourceId: string): Observable<ResourceDto> {\n    return this.http.get<ResourceDto>(\n      `${this.valtimoApiConfig.endpointUri}v1/resource/${resourceId}`\n    );\n  }\n\n  getZaakTypes(): Observable<ZaakType[]> {\n    return this.http.get<ZaakType[]>(\n      `${this.valtimoApiConfig.endpointUri}management/v1/zgw/zaaktype`\n    );\n  }\n\n  getBesluittypen(): Observable<any> {\n    return this.http.get(`${this.valtimoApiConfig.endpointUri}v1/besluittype`);\n  }\n\n  getInformatieObjectTypes(): Observable<InformatieObjectType[]> {\n    return this.http.get<InformatieObjectType[]>(\n      `${this.valtimoApiConfig.endpointUri}v1/openzaak/informatie-object-typen/${this.catalogus}`\n    );\n  }\n\n  getZaakTypeLink(documentDefinitionName: string): Observable<ZaakTypeLink> {\n    return this.http.get<ZaakTypeLink>(\n      `${this.valtimoApiConfig.endpointUri}management/v1/zaak-type-link/${documentDefinitionName}`\n    );\n  }\n\n  /**\n   * @deprecated This method will be removed in the future.\n   */\n  getInformatieObjectTypeLink(id: string): Observable<InformatieObjectTypeLink> {\n    return this.http.get<InformatieObjectTypeLink>(\n      `${this.valtimoApiConfig.endpointUri}v1/openzaak/informatie-object-type-link/${id}`\n    );\n  }\n\n  createZaakTypeLink(request: CreateZaakTypeLinkRequest): Observable<any> {\n    return this.http.post<any>(\n      `${this.valtimoApiConfig.endpointUri}management/v1/zaak-type-link`,\n      request\n    );\n  }\n\n  /**\n   * @deprecated This method will be removed in the future.\n   */\n  createInformatieObjectTypeLink(request: CreateInformatieObjectTypeLinkRequest): Observable<any> {\n    return this.http.post<any>(\n      `${this.valtimoApiConfig.endpointUri}v1/openzaak/informatie-object-type-link`,\n      request\n    );\n  }\n\n  deleteZaakTypeLink(documentDefinitionName: string): Observable<any> {\n    return this.http.delete<any>(\n      `${this.valtimoApiConfig.endpointUri}management/v1/zaak-type-link/${documentDefinitionName}`\n    );\n  }\n\n  /**\n   * @deprecated This method will be removed in the future.\n   */\n  deleteInformatieObjectTypeLink(id: string): Observable<any> {\n    return this.http.delete<any>(\n      `${this.valtimoApiConfig.endpointUri}v1/openzaak/informatie-object-type-link/${id}`\n    );\n  }\n\n  getZaakTypeLinkListByProcess(processDefinitionKey: string): Observable<Array<ZaakTypeLink>> {\n    return this.http.get<Array<ZaakTypeLink>>(\n      `${this.valtimoApiConfig.endpointUri}management/v1/zaak-type-link/process/${processDefinitionKey}`\n    );\n  }\n\n  getStatusTypes(zaakTypeRequest: ZaakTypeRequest): Observable<any> {\n    return this.http.post(\n      `${this.valtimoApiConfig.endpointUri}v1/openzaak/status`,\n      zaakTypeRequest\n    );\n  }\n\n  getStatusResults(zaakTypeRequest): Observable<any> {\n    return this.http.post(\n      `${this.valtimoApiConfig.endpointUri}v1/openzaak/resultaat`,\n      zaakTypeRequest\n    );\n  }\n\n  upload(file: File, documentDefinitionName: string): Observable<OpenZaakResource> {\n    const formData: FormData = new FormData();\n    formData.append('file', file);\n    formData.append('documentDefinitionName', documentDefinitionName);\n\n    return this.http.post<OpenZaakResource>(\n      `${this.valtimoApiConfig.endpointUri}v1/resource/upload-open-zaak`,\n      formData,\n      {\n        reportProgress: true,\n        responseType: 'json',\n      }\n    );\n  }\n\n  uploadWithMetadata(\n    file: File,\n    documentId: string,\n    metadata: {[key: string]: any}\n  ): Observable<void> {\n    const formData: FormData = new FormData();\n    formData.append('file', file);\n    formData.append('documentId', documentId);\n\n    Object.keys(metadata).forEach(metaDataKey => {\n      const metadataValue = metadata[metaDataKey];\n\n      if (metadataValue) {\n        formData.append(metaDataKey, metadataValue);\n      }\n    });\n\n    return this.http.post<void>(`${this.valtimoApiConfig.endpointUri}v1/resource/temp`, formData, {\n      reportProgress: true,\n      responseType: 'json',\n      headers: new HttpHeaders().set(InterceptorSkip, '403'),\n    });\n  }\n\n  uploadTempFileWithMetadata(\n    file: File,\n    metadata: {[key: string]: any}\n  ): Observable<DocumentenApiFileReference> {\n    const formData: FormData = new FormData();\n    formData.append('file', file);\n\n    Object.keys(metadata).forEach(metaDataKey => {\n      const metadataValue = metadata[metaDataKey];\n\n      if (metadataValue) {\n        formData.append(metaDataKey, metadataValue);\n      }\n    });\n\n    return this.http.post<DocumentenApiFileReference>(\n      `${this.valtimoApiConfig.endpointUri}v1/resource/temp`,\n      formData,\n      {\n        reportProgress: true,\n        responseType: 'json',\n        headers: new HttpHeaders().set(InterceptorSkip, '403'),\n      }\n    );\n  }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\nimport {\n  DocumentenApiFileReference,\n  OpenZaakResource,\n  ResourceDto,\n  ResourceFile,\n  UploadService,\n} from '../models';\nimport {OpenZaakService} from './open-zaak.service';\nimport {map} from 'rxjs/operators';\n\n@Injectable()\nexport class OpenZaakUploadService implements UploadService {\n  private valtimoApiConfig: any;\n\n  constructor(\n    private readonly openZaakService: OpenZaakService,\n    private http: HttpClient,\n    private configService: ConfigService\n  ) {\n    this.valtimoApiConfig = configService.config.valtimoApi;\n  }\n\n  uploadFile(file: File, documentDefinitionName: string): Observable<ResourceFile> {\n    return this.openZaakService\n      .upload(new File([file], file.name, {type: file.type}), documentDefinitionName)\n      .pipe(map(result => this.getResourceFile(result)));\n  }\n\n  uploadFileWithMetadata(\n    file: File,\n    documentId: string,\n    metadata: {[key: string]: any}\n  ): Observable<void> {\n    return this.openZaakService.uploadWithMetadata(\n      new File([file], metadata?.bestandsnaam || file.name, {type: file.type}),\n      documentId,\n      metadata\n    );\n  }\n\n  uploadTempFileWithMetadata(\n    file: File,\n    metadata: {[key: string]: any}\n  ): Observable<DocumentenApiFileReference> {\n    return this.openZaakService.uploadTempFileWithMetadata(\n      new File([file], metadata?.bestandsnaam || file.name, {type: file.type}),\n      metadata\n    );\n  }\n\n  getResource(resourceId: string): Observable<ResourceDto> {\n    return this.openZaakService.getResource(resourceId);\n  }\n\n  checkUploadProcessLink(caseDefinitionKey: string): Observable<boolean> {\n    return this.http\n      .get<{\n        processCaseLinkExists: boolean;\n      }>(\n        `${this.valtimoApiConfig.endpointUri}v1/uploadprocess/case/${caseDefinitionKey}/check-link`\n      )\n      .pipe(map(res => res.processCaseLinkExists));\n  }\n\n  private getResourceFile(result: OpenZaakResource): ResourceFile {\n    return {\n      customUpload: true,\n      originalName: result.name,\n      size: result.sizeInBytes,\n      url: '/api/resource/' + result.resourceId + '/download',\n      storage: 'openZaak',\n      type: result.extension,\n      data: {\n        createdOn: result.createdOn as any as string,\n        name: result.name,\n        sizeInBytes: result.sizeInBytes,\n        resourceId: result.resourceId,\n        extension: result.extension,\n      },\n    };\n  }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {ConfigService} from '@valtimo/config';\nimport {Resource, S3Resource, ResourceDto} from '../models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class S3Service {\n  private valtimoApiConfig: any;\n\n  constructor(\n    private http: HttpClient,\n    private configService: ConfigService\n  ) {\n    this.valtimoApiConfig = configService.config.valtimoApi;\n  }\n\n  public getPreSignedUrl(fileName: string): Observable<string> {\n    const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');\n    const options = {headers, responseType: 'text' as 'text'};\n    return this.http.get(\n      `${this.valtimoApiConfig.endpointUri}v1/resource/pre-signed-url/${fileName}`,\n      options\n    );\n  }\n\n  public upload(url: URL, file: File): Observable<any> {\n    const headers = new HttpHeaders().set('Content-Type', file.type);\n    return this.http.put(url.toString(), file, {headers});\n  }\n\n  public registerResource(s3ResourceDTO: S3Resource): Observable<Resource> {\n    return this.http.put<Resource>(\n      `${this.valtimoApiConfig.endpointUri}v1/resource`,\n      s3ResourceDTO\n    );\n  }\n\n  public get(resourceId: string): Observable<ResourceDto> {\n    const headers = new HttpHeaders().set('Content-Type', 'application/json;charset=UTF-8');\n    return this.http.get<ResourceDto>(\n      `${this.valtimoApiConfig.endpointUri}v1/resource/${resourceId}`,\n      {headers}\n    );\n  }\n\n  public delete(resourceId: string): Observable<any> {\n    const headers = new HttpHeaders().set('Content-Type', 'application/json;charset=UTF-8');\n    return this.http.delete(`${this.valtimoApiConfig.endpointUri}v1/resource/${resourceId}`, {\n      headers,\n    });\n  }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Observable} from 'rxjs';\nimport {map, switchMap, tap} from 'rxjs/operators';\nimport {ResourceDto, ResourceFile, S3Resource, UploadService} from '../models';\nimport {Injectable} from '@angular/core';\nimport {v4 as uuidv4} from 'uuid';\nimport {S3Service} from './s3.service';\n\n@Injectable()\nexport class S3UploadService implements UploadService {\n  constructor(private readonly s3Service: S3Service) {}\n\n  uploadFile(file: File, _, documentId?: string): Observable<ResourceFile> {\n    let resourceUrl: URL;\n    const fileName = file.name;\n    const splitFileName = fileName.split('.');\n    const fileNameWithUUID = `${splitFileName[0]}-${uuidv4()}.${splitFileName[1]}`;\n    const renamedFile = new File([file], fileNameWithUUID, {type: file.type});\n\n    return this.s3Service.getPreSignedUrl(renamedFile.name).pipe(\n      map(url => new URL(url)),\n      tap(url => (resourceUrl = url)),\n      switchMap(url => this.s3Service.upload(url, renamedFile)),\n      map(() => new S3Resource(file, resourceUrl, documentId)),\n      switchMap(s3Resource => this.s3Service.registerResource(s3Resource)),\n      switchMap(s3Resource => this.s3Service.get(s3Resource.id)),\n      map(result => ({...result, originalName: file.name})),\n      map(result => this.getResourceFile(result))\n    );\n  }\n\n  getResource(resourceId: string): Observable<ResourceDto> {\n    return this.s3Service.get(resourceId);\n  }\n\n  private getResourceFile(result: ResourceDto): ResourceFile {\n    return {\n      customUpload: true,\n      originalName: result.originalName,\n      url: result.url,\n      size: result.resource.sizeInBytes,\n      storage: 'url',\n      type: result.resource.extension,\n      data: {\n        key: result.resource.key,\n        bucketName: result.resource.name,\n        createdOn: result.resource.createdOn as any as string,\n        name: result.originalName,\n        sizeInBytes: result.resource.sizeInBytes,\n        resourceId: result.resource.id.split('ResourceId(id=')[1].slice(0, -1),\n      },\n    };\n  }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, Injector} from '@angular/core';\nimport {NGXLogger} from 'ngx-logger';\nimport {DocumentenApiFileReference, ResourceDto, ResourceFile, UploadService} from '../models';\nimport {ConfigService, UploadProvider} from '@valtimo/config';\nimport {Observable, of} from 'rxjs';\nimport {OpenZaakUploadService} from './open-zaak-upload.service';\nimport {S3UploadService} from './s3-upload.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UploadProviderService implements UploadService {\n  private readonly uploadService: UploadService;\n\n  constructor(\n    private configService: ConfigService,\n    private injector: Injector,\n    private logger: NGXLogger\n  ) {\n    let uploadService: UploadService;\n\n    switch (configService.config.uploadProvider) {\n      case UploadProvider.S3:\n        uploadService = injector.get<UploadService>(S3UploadService);\n        break;\n      case UploadProvider.OPEN_ZAAK:\n        uploadService = injector.get<UploadService>(OpenZaakUploadService);\n        break;\n      case UploadProvider.DOCUMENTEN_API:\n        uploadService = injector.get<UploadService>(OpenZaakUploadService);\n        break;\n    }\n\n    this.uploadService = uploadService;\n    this.logger.debug('Loading UploadService as', this.uploadService);\n  }\n\n  uploadFile(\n    file: File,\n    documentDefinitionName?: string,\n    documentId?: string\n  ): Observable<ResourceFile> {\n    return this.uploadService.uploadFile(file, documentDefinitionName, documentId);\n  }\n\n  getResource(resourceId: string): Observable<ResourceDto> {\n    return this.uploadService.getResource(resourceId);\n  }\n\n  checkUploadProcessLink(caseDefinitionKey: string): Observable<boolean> {\n    if (this.uploadService.checkUploadProcessLink) {\n      return this.uploadService.checkUploadProcessLink(caseDefinitionKey);\n    }\n\n    return of(false);\n  }\n\n  uploadFileWithMetadata(\n    file: File,\n    documentId: string,\n    metadata: {[key: string]: any}\n  ): Observable<void> {\n    if (this.uploadService.uploadFileWithMetadata) {\n      return this.uploadService.uploadFileWithMetadata(file, documentId, metadata);\n    }\n\n    return of(null);\n  }\n\n  uploadTempFileWithMetadata(\n    file: File,\n    metadata: {[key: string]: any}\n  ): Observable<DocumentenApiFileReference> {\n    if (this.uploadService.uploadTempFileWithMetadata) {\n      return this.uploadService.uploadTempFileWithMetadata(file, metadata);\n    }\n\n    return of(null);\n  }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/config';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable, Subject} from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DownloadService {\n  constructor(\n    private http: HttpClient,\n    private configService: ConfigService\n  ) {}\n\n  downloadFile(url: string, name: string, forceDownload?: boolean): Observable<null> {\n    const finishedSubject$ = new Subject<null>();\n\n    if (\n      url.startsWith(this.configService.config.valtimoApi.endpointUri) ||\n      url.startsWith(window.location.origin) ||\n      url.startsWith('/api/')\n    ) {\n      // if download url is on backend use angular to get the content so access token is used\n      this.http.get(url, {responseType: 'blob'}).subscribe(content => {\n        const downloadUrl = window.URL.createObjectURL(content);\n        if (!this.isFileTypeSupportedForNewWindow(name) || forceDownload) {\n          this.openDownloadLink(downloadUrl, name);\n        } else {\n          this.openBlobInNewTab(downloadUrl, name);\n        }\n        finishedSubject$.next(null);\n      });\n    } else {\n      // download links to external services (like amazon s3) open in a new window\n      this.openDownloadLink(url, name);\n      finishedSubject$.next(null);\n    }\n\n    return finishedSubject$;\n  }\n\n  /**\n   * A window.open won't work for blobs because ad blocker extensions will immediately\n   * close the tab again. The method used below will prevent this from happening.\n   */\n  private openBlobInNewTab(url: string, name: string) {\n    const newWindow = window.open('/');\n\n    // newWindow will be null if the browser blocks the opening of a new tab.\n    if (newWindow != null) {\n      newWindow.location = url;\n    } else {\n      // In case the tab is blocked it will just download the file.\n      this.openDownloadLink(url, name);\n    }\n  }\n\n  private openDownloadLink(url: string, name: string) {\n    const link = document.createElement('a');\n    link.href = url;\n    link.download = name;\n    link.target = '_blank';\n    link.click();\n    link.remove();\n  }\n\n  private isFileTypeSupportedForNewWindow(name: string): boolean {\n    const supportedFileTypes = this.configService?.config\n      ?.supportedDocumentFileTypesToViewInBrowser || ['pdf', 'jpg', 'png', 'svg'];\n\n    return supportedFileTypes.some(function (suffix) {\n      return name.toUpperCase().endsWith(suffix.toUpperCase());\n    });\n  }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {OpenZaakUploadService} from './services/open-zaak-upload.service';\nimport {S3UploadService} from './services/s3-upload.service';\nimport {UploadProviderService} from './services/upload-provider.service';\nimport {OpenZaakService} from './services/open-zaak.service';\nimport {S3Service} from './services/s3.service';\nimport {DownloadService} from './services/download.service';\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  exports: [],\n  providers: [\n    OpenZaakUploadService,\n    S3UploadService,\n    UploadProviderService,\n    OpenZaakService,\n    S3Service,\n    DownloadService,\n  ],\n})\nexport class ResourceModule {}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n  view = 'view',\n  view_list = 'view_list',\n  create = 'create',\n  modify = 'modify',\n  delete = 'delete',\n}\n\nenum RESOURCE_PERMISSION_RESOURCE {\n  // Kept as an alias of zgwDocument for transition; old code referencing resourcePermission\n  // will transparently carry the new FQCN.\n  resourcePermission = 'com.ritense.documentenapi.authorization.ResourcePermission',\n  zgwDocument = 'com.ritense.documentenapi.authorization.ZgwDocument',\n  jsonSchemaDocument = 'com.ritense.document.domain.impl.JsonSchemaDocument',\n}\n\nconst CAN_VIEW_RESOURCE_PERMISSION: PermissionRequest = {\n  action: PERMISSION_ACTION.view,\n  resource: RESOURCE_PERMISSION_RESOURCE.zgwDocument,\n};\n\nconst CAN_VIEW_LIST_RESOURCE_PERMISSION: PermissionRequest = {\n  action: PERMISSION_ACTION.view_list,\n  resource: RESOURCE_PERMISSION_RESOURCE.zgwDocument,\n};\n\nconst CAN_CREATE_RESOURCE_PERMISSION: PermissionRequest = {\n  action: PERMISSION_ACTION.create,\n  resource: RESOURCE_PERMISSION_RESOURCE.zgwDocument,\n};\n\nconst CAN_MODIFY_RESOURCE_PERMISSION: PermissionRequest = {\n  action: PERMISSION_ACTION.modify,\n  resource: RESOURCE_PERMISSION_RESOURCE.zgwDocument,\n};\n\nconst CAN_DELETE_RESOURCE_PERMISSION: PermissionRequest = {\n  action: PERMISSION_ACTION.delete,\n  resource: RESOURCE_PERMISSION_RESOURCE.zgwDocument,\n};\n\nexport {\n  CAN_VIEW_RESOURCE_PERMISSION,\n  CAN_VIEW_LIST_RESOURCE_PERMISSION,\n  CAN_CREATE_RESOURCE_PERMISSION,\n  CAN_MODIFY_RESOURCE_PERMISSION,\n  CAN_DELETE_RESOURCE_PERMISSION,\n  RESOURCE_PERMISSION_RESOURCE,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of upload\n */\n\nexport * from './lib/models';\nexport * from './lib/resource.module';\nexport * from './lib/services/open-zaak.service';\nexport * from './lib/services/upload-provider.service';\nexport * from './lib/services/s3.service';\nexport * from './lib/services/download.service';\nexport * from './lib/resource-permissions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.OpenZaakService","i2","i3","uuidv4","i1.S3Service","i1"],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MA0BU,UAAU,CAAA;AASrB,IAAA,WAAA,CAAY,IAAU,EAAE,YAAiB,EAAE,UAAmB,EAAA;QAR9D,IAAA,CAAA,EAAE,GAAY,IAAI;QAIlB,IAAA,CAAA,SAAS,GAAY,IAAI;QACzB,IAAA,CAAA,SAAS,GAAU,IAAI;AAIrB,QAAA,IAAI,CAAC,GAAG,GAAG,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI;QAC5B,IAAI,CAAC,UAAU,EAAE;YACf;QACF;AACA,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;IAC9B;AACD;;AC1DD;;;;;;;;;;;;;;AAcG;MAEU,cAAc,CAAA;AAM1B;IAsGW;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,iBAAoC;AACpC,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;IAKhB;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,eAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC;AACzC,IAAA,eAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,eAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,eAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C;AAC7C,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,eAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C;AAC3C,IAAA,eAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAC3B,CAAC,EAVW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;IAYf;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C;AAC7C,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,+BAAA,CAAA,GAAA,+BAA+D;AAC/D,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC;AACzC,IAAA,UAAA,CAAA,4BAAA,CAAA,GAAA,4BAAyD;AACzD,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,UAAA,CAAA,6BAAA,CAAA,GAAA,6BAA2D;AAC3D,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC;AACzC,IAAA,UAAA,CAAA,yBAAA,CAAA,GAAA,yBAAmD;AACnD,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,UAAA,CAAA,0BAAA,CAAA,GAAA,0BAAqD;AACrD,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,UAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD;AACjD,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EAhCW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;AC7ItB;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAwBU,eAAe,CAAA;IAI1B,WAAA,CACU,IAAgB,EAChB,aAA4B,EAAA;QAD5B,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,aAAa,GAAb,aAAa;QAErB,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU;QACvD,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS;IAC1D;IAEA,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,kBAAA,CAAoB,CAAC;IAChG;AAEA,IAAA,WAAW,CAAC,UAAkB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,YAAA,EAAe,UAAU,CAAA,CAAE,CAChE;IACH;IAEA,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,0BAAA,CAA4B,CACjE;IACH;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,cAAA,CAAgB,CAAC;IAC5E;IAEA,wBAAwB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,oCAAA,EAAuC,IAAI,CAAC,SAAS,CAAA,CAAE,CAC5F;IACH;AAEA,IAAA,eAAe,CAAC,sBAA8B,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,6BAAA,EAAgC,sBAAsB,CAAA,CAAE,CAC7F;IACH;AAEA;;AAEG;AACH,IAAA,2BAA2B,CAAC,EAAU,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,wCAAA,EAA2C,EAAE,CAAA,CAAE,CACpF;IACH;AAEA,IAAA,kBAAkB,CAAC,OAAkC,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,4BAAA,CAA8B,EAClE,OAAO,CACR;IACH;AAEA;;AAEG;AACH,IAAA,8BAA8B,CAAC,OAA8C,EAAA;AAC3E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,uCAAA,CAAyC,EAC7E,OAAO,CACR;IACH;AAEA,IAAA,kBAAkB,CAAC,sBAA8B,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,6BAAA,EAAgC,sBAAsB,CAAA,CAAE,CAC7F;IACH;AAEA;;AAEG;AACH,IAAA,8BAA8B,CAAC,EAAU,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,wCAAA,EAA2C,EAAE,CAAA,CAAE,CACpF;IACH;AAEA,IAAA,4BAA4B,CAAC,oBAA4B,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,qCAAA,EAAwC,oBAAoB,CAAA,CAAE,CACnG;IACH;AAEA,IAAA,cAAc,CAAC,eAAgC,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,kBAAA,CAAoB,EACxD,eAAe,CAChB;IACH;AAEA,IAAA,gBAAgB,CAAC,eAAe,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,qBAAA,CAAuB,EAC3D,eAAe,CAChB;IACH;IAEA,MAAM,CAAC,IAAU,EAAE,sBAA8B,EAAA;AAC/C,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE;AACzC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAC7B,QAAA,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,sBAAsB,CAAC;AAEjE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,4BAAA,CAA8B,EAClE,QAAQ,EACR;AACE,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,YAAY,EAAE,MAAM;AACrB,SAAA,CACF;IACH;AAEA,IAAA,kBAAkB,CAChB,IAAU,EACV,UAAkB,EAClB,QAA8B,EAAA;AAE9B,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE;AACzC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAC7B,QAAA,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC;QAEzC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,IAAG;AAC1C,YAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC;YAE3C,IAAI,aAAa,EAAE;AACjB,gBAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAO,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,gBAAA,CAAkB,EAAE,QAAQ,EAAE;AAC5F,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;AACvD,SAAA,CAAC;IACJ;IAEA,0BAA0B,CACxB,IAAU,EACV,QAA8B,EAAA;AAE9B,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE;AACzC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;QAE7B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,IAAG;AAC1C,YAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC;YAE3C,IAAI,aAAa,EAAE;AACjB,gBAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,gBAAA,CAAkB,EACtD,QAAQ,EACR;AACE,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;AACvD,SAAA,CACF;IACH;+GAxKW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACrCD;;;;;;;;;;;;;;AAcG;MAiBU,qBAAqB,CAAA;AAGhC,IAAA,WAAA,CACmB,eAAgC,EACzC,IAAgB,EAChB,aAA4B,EAAA;QAFnB,IAAA,CAAA,eAAe,GAAf,eAAe;QACxB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,aAAa,GAAb,aAAa;QAErB,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU;IACzD;IAEA,UAAU,CAAC,IAAU,EAAE,sBAA8B,EAAA;QACnD,OAAO,IAAI,CAAC;aACT,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,EAAE,sBAAsB;AAC7E,aAAA,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD;AAEA,IAAA,sBAAsB,CACpB,IAAU,EACV,UAAkB,EAClB,QAA8B,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAC5C,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,EACxE,UAAU,EACV,QAAQ,CACT;IACH;IAEA,0BAA0B,CACxB,IAAU,EACV,QAA8B,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,0BAA0B,CACpD,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,EACxE,QAAQ,CACT;IACH;AAEA,IAAA,WAAW,CAAC,UAAkB,EAAA;QAC5B,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC;IACrD;AAEA,IAAA,sBAAsB,CAAC,iBAAyB,EAAA;QAC9C,OAAO,IAAI,CAAC;aACT,GAAG,CAGF,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,sBAAA,EAAyB,iBAAiB,CAAA,WAAA,CAAa;AAE5F,aAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAChD;AAEQ,IAAA,eAAe,CAAC,MAAwB,EAAA;QAC9C,OAAO;AACL,YAAA,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,MAAM,CAAC,IAAI;YACzB,IAAI,EAAE,MAAM,CAAC,WAAW;AACxB,YAAA,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAAC,UAAU,GAAG,WAAW;AACvD,YAAA,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,MAAM,CAAC,SAAS;AACtB,YAAA,IAAI,EAAE;gBACJ,SAAS,EAAE,MAAM,CAAC,SAA0B;gBAC5C,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;AAC5B,aAAA;SACF;IACH;+GArEW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAArB,qBAAqB,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;AC9BD;;;;;;;;;;;;;;AAcG;MAWU,SAAS,CAAA;IAGpB,WAAA,CACU,IAAgB,EAChB,aAA4B,EAAA;QAD5B,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,aAAa,GAAb,aAAa;QAErB,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU;IACzD;AAEO,IAAA,eAAe,CAAC,QAAgB,EAAA;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,2BAA2B,CAAC;QAClF,MAAM,OAAO,GAAG,EAAC,OAAO,EAAE,YAAY,EAAE,MAAgB,EAAC;AACzD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,2BAAA,EAA8B,QAAQ,EAAE,EAC5E,OAAO,CACR;IACH;IAEO,MAAM,CAAC,GAAQ,EAAE,IAAU,EAAA;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC;AAChE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAC,OAAO,EAAC,CAAC;IACvD;AAEO,IAAA,gBAAgB,CAAC,aAAyB,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,WAAA,CAAa,EACjD,aAAa,CACd;IACH;AAEO,IAAA,GAAG,CAAC,UAAkB,EAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,gCAAgC,CAAC;QACvF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,YAAA,EAAe,UAAU,CAAA,CAAE,EAC/D,EAAC,OAAO,EAAC,CACV;IACH;AAEO,IAAA,MAAM,CAAC,UAAkB,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,gCAAgC,CAAC;AACvF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAA,YAAA,EAAe,UAAU,EAAE,EAAE;YACvF,OAAO;AACR,SAAA,CAAC;IACJ;+GA5CW,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cAFR,MAAM,EAAA,CAAA,CAAA;;4FAEP,SAAS,EAAA,UAAA,EAAA,CAAA;kBAHrB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCAY,eAAe,CAAA;AAC1B,IAAA,WAAA,CAA6B,SAAoB,EAAA;QAApB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAc;AAEpD,IAAA,UAAU,CAAC,IAAU,EAAE,CAAC,EAAE,UAAmB,EAAA;AAC3C,QAAA,IAAI,WAAgB;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;QAC1B,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACzC,QAAA,MAAM,gBAAgB,GAAG,CAAA,EAAG,aAAa,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIC,EAAM,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;AAC9E,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC;AAEzE,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1D,GAAG,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EACxB,GAAG,CAAC,GAAG,KAAK,WAAW,GAAG,GAAG,CAAC,CAAC,EAC/B,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EACzD,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,EACxD,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,EACpE,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAC1D,GAAG,CAAC,MAAM,KAAK,EAAC,GAAG,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,EACrD,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAC5C;IACH;AAEA,IAAA,WAAW,CAAC,UAAkB,EAAA;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;IACvC;AAEQ,IAAA,eAAe,CAAC,MAAmB,EAAA;QACzC,OAAO;AACL,YAAA,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,GAAG,EAAE,MAAM,CAAC,GAAG;AACf,YAAA,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW;AACjC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;AAC/B,YAAA,IAAI,EAAE;AACJ,gBAAA,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;AACxB,gBAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;AAChC,gBAAA,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAA0B;gBACrD,IAAI,EAAE,MAAM,CAAC,YAAY;AACzB,gBAAA,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW;gBACxC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,aAAA;SACF;IACH;+GA3CW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAf,eAAe,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACvBD;;;;;;;;;;;;;;AAcG;MAaU,qBAAqB,CAAA;AAGhC,IAAA,WAAA,CACU,aAA4B,EAC5B,QAAkB,EAClB,MAAiB,EAAA;QAFjB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,MAAM,GAAN,MAAM;AAEd,QAAA,IAAI,aAA4B;AAEhC,QAAA,QAAQ,aAAa,CAAC,MAAM,CAAC,cAAc;YACzC,KAAK,cAAc,CAAC,EAAE;AACpB,gBAAA,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAgB,eAAe,CAAC;gBAC5D;YACF,KAAK,cAAc,CAAC,SAAS;AAC3B,gBAAA,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAgB,qBAAqB,CAAC;gBAClE;YACF,KAAK,cAAc,CAAC,cAAc;AAChC,gBAAA,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAgB,qBAAqB,CAAC;gBAClE;;AAGJ,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAAC,aAAa,CAAC;IACnE;AAEA,IAAA,UAAU,CACR,IAAU,EACV,sBAA+B,EAC/B,UAAmB,EAAA;AAEnB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,CAAC;IAChF;AAEA,IAAA,WAAW,CAAC,UAAkB,EAAA;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC;IACnD;AAEA,IAAA,sBAAsB,CAAC,iBAAyB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE;YAC7C,OAAO,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,iBAAiB,CAAC;QACrE;AAEA,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC;IAClB;AAEA,IAAA,sBAAsB,CACpB,IAAU,EACV,UAAkB,EAClB,QAA8B,EAAA;AAE9B,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE;AAC7C,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;QAC9E;AAEA,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;IACjB;IAEA,0BAA0B,CACxB,IAAU,EACV,QAA8B,EAAA;AAE9B,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,0BAA0B,EAAE;YACjD,OAAO,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC;QACtE;AAEA,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;IACjB;+GAnEW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;AC1BD;;;;;;;;;;;;;;AAcG;MAUU,eAAe,CAAA;IAC1B,WAAA,CACU,IAAgB,EAChB,aAA4B,EAAA;QAD5B,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,aAAa,GAAb,aAAa;IACpB;AAEH,IAAA,YAAY,CAAC,GAAW,EAAE,IAAY,EAAE,aAAuB,EAAA;AAC7D,QAAA,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAQ;AAE5C,QAAA,IACE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;YAChE,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACtC,YAAA,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EACvB;;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAC,YAAY,EAAE,MAAM,EAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;gBAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC;gBACvD,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,aAAa,EAAE;AAChE,oBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC;gBAC1C;qBAAO;AACL,oBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC;gBAC1C;AACA,gBAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,YAAA,CAAC,CAAC;QACJ;aAAO;;AAEL,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AAChC,YAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B;AAEA,QAAA,OAAO,gBAAgB;IACzB;AAEA;;;AAGG;IACK,gBAAgB,CAAC,GAAW,EAAE,IAAY,EAAA;QAChD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGlC,QAAA,IAAI,SAAS,IAAI,IAAI,EAAE;AACrB,YAAA,SAAS,CAAC,QAAQ,GAAG,GAAG;QAC1B;aAAO;;AAEL,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;QAClC;IACF;IAEQ,gBAAgB,CAAC,GAAW,EAAE,IAAY,EAAA;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;QACtB,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,MAAM,EAAE;IACf;AAEQ,IAAA,+BAA+B,CAAC,IAAY,EAAA;AAClD,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE;cAC3C,yCAAyC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAE7E,QAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,UAAU,MAAM,EAAA;AAC7C,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAC1D,QAAA,CAAC,CAAC;IACJ;+GAjEW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACvBD;;;;;;;;;;;;;;AAcG;MAuBU,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAd,cAAc,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAAA,SAAA,EATd;YACT,qBAAqB;YACrB,eAAe;YACf,qBAAqB;YACrB,eAAe;YACf,SAAS;YACT,eAAe;AAChB,SAAA,EAAA,CAAA,CAAA;;4FAEU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;wBACT,qBAAqB;wBACrB,eAAe;wBACf,qBAAqB;wBACrB,eAAe;wBACf,SAAS;wBACT,eAAe;AAChB,qBAAA;AACF,iBAAA;;;ACpCD;;;;;;;;;;;;;;AAcG;AAIH,IAAK,iBAMJ;AAND,CAAA,UAAK,iBAAiB,EAAA;AACpB,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EANI,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;AAQtB,IAAK;AAAL,CAAA,UAAK,4BAA4B,EAAA;;;AAG/B,IAAA,4BAAA,CAAA,oBAAA,CAAA,GAAA,4DAAiF;AACjF,IAAA,4BAAA,CAAA,aAAA,CAAA,GAAA,qDAAmE;AACnE,IAAA,4BAAA,CAAA,oBAAA,CAAA,GAAA,qDAA0E;AAC5E,CAAC,EANI,4BAA4B,KAA5B,4BAA4B,GAAA,EAAA,CAAA,CAAA;AAQjC,MAAM,4BAA4B,GAAsB;IACtD,MAAM,EAAE,iBAAiB,CAAC,IAAI;IAC9B,QAAQ,EAAE,4BAA4B,CAAC,WAAW;;AAGpD,MAAM,iCAAiC,GAAsB;IAC3D,MAAM,EAAE,iBAAiB,CAAC,SAAS;IACnC,QAAQ,EAAE,4BAA4B,CAAC,WAAW;;AAGpD,MAAM,8BAA8B,GAAsB;IACxD,MAAM,EAAE,iBAAiB,CAAC,MAAM;IAChC,QAAQ,EAAE,4BAA4B,CAAC,WAAW;;AAGpD,MAAM,8BAA8B,GAAsB;IACxD,MAAM,EAAE,iBAAiB,CAAC,MAAM;IAChC,QAAQ,EAAE,4BAA4B,CAAC,WAAW;;AAGpD,MAAM,8BAA8B,GAAsB;IACxD,MAAM,EAAE,iBAAiB,CAAC,MAAM;IAChC,QAAQ,EAAE,4BAA4B,CAAC,WAAW;;;ACxDpD;;;;;;;;;;;;;;AAcG;AAEH;;AAEG;;AClBH;;AAEG;;;;"}