@acontplus/ng-customer 1.0.2 → 1.0.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acontplus-ng-customer.mjs","sources":["../tmp-esm2022/lib/application/use-cases/customer.use-case.js","../tmp-esm2022/lib/application/use-cases/customer-external.use-case.js","../tmp-esm2022/lib/infrastructure/constants/customer.constants.js","../tmp-esm2022/lib/infrastructure/mappers/company-search.mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-create-update.mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-form-data.mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-get-by-id.mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-list.mapper.js","../tmp-esm2022/lib/infrastructure/repositories/customer-external-http.repository.js","../tmp-esm2022/lib/infrastructure/repositories/customer-http.repository.js","../tmp-esm2022/lib/ui/components/customer-add-edit/customer-add-edit.component.js","../tmp-esm2022/lib/ui/components/customer-card/customer-card.component.js","../tmp-esm2022/acontplus-ng-customer.js"],"sourcesContent":["export class CustomerUseCase {\n repo;\n constructor(repo) {\n this.repo = repo;\n }\n getAll(params) {\n return this.repo.getAll(params);\n }\n getFormData() {\n return this.repo.getFormData();\n }\n getById(id) {\n return this.repo.getById(id);\n }\n checkExistence(identificationNumber) {\n return this.repo.checkExistence(identificationNumber);\n }\n create(params) {\n return this.repo.create(params);\n }\n update(params) {\n return this.repo.update(params);\n }\n updateState(id) {\n return this.repo.updateState(id);\n }\n search(filter) {\n return this.repo.search(filter);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXIudXNlLWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9jdXN0b21lci51c2UtY2FzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZUFBZTtJQUNOO0lBQXBCLFlBQW9CLElBQXdCO1FBQXhCLFNBQUksR0FBSixJQUFJLENBQW9CO0lBQUcsQ0FBQztJQUVoRCxNQUFNLENBQUMsTUFBVztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLENBQUMsRUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUMsb0JBQTRCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXNCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tZXJSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEN1c3RvbWVyU2VhcmNoIH0gZnJvbSAnLi4vbW9kZWxzL2N1c3RvbWVyLXNlYXJjaC5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21lclVzZUNhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcG86IEN1c3RvbWVyUmVwb3NpdG9yeSkge31cblxuICBnZXRBbGwocGFyYW1zOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmdldEFsbChwYXJhbXMpO1xuICB9XG4gIGdldEZvcm1EYXRhKCkge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZ2V0Rm9ybURhdGEoKTtcbiAgfVxuXG4gIGdldEJ5SWQoaWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZ2V0QnlJZChpZCk7XG4gIH1cblxuICBjaGVja0V4aXN0ZW5jZShpZGVudGlmaWNhdGlvbk51bWJlcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5jaGVja0V4aXN0ZW5jZShpZGVudGlmaWNhdGlvbk51bWJlcik7XG4gIH1cblxuICBjcmVhdGUocGFyYW1zOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmNyZWF0ZShwYXJhbXMpO1xuICB9XG5cbiAgdXBkYXRlKHBhcmFtczogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby51cGRhdGUocGFyYW1zKTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKGlkOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLnVwZGF0ZVN0YXRlKGlkKTtcbiAgfVxuXG4gIHNlYXJjaChmaWx0ZXI6IEN1c3RvbWVyU2VhcmNoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5zZWFyY2goZmlsdGVyKTtcbiAgfVxufVxuIl19","import { IdentificationNumberVo } from '@acontplus/core';\nexport class CustomerExternalUseCase {\n repo;\n constructor(repo) {\n this.repo = repo;\n }\n getById(identification) {\n const idNumber = new IdentificationNumberVo(identification);\n return this.repo.getById(idNumber);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZXh0ZXJuYWwudXNlLWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9jdXN0b21lci1leHRlcm5hbC51c2UtY2FzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2Q7SUFBcEIsWUFBb0IsSUFBZ0M7UUFBaEMsU0FBSSxHQUFKLElBQUksQ0FBNEI7SUFBRyxDQUFDO0lBRXhELE9BQU8sQ0FBQyxjQUFzQjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tZXJFeHRlcm5hbFJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9kb21haW4vcmVwb3NpdG9yaWVzJztcbmltcG9ydCB7IElkZW50aWZpY2F0aW9uTnVtYmVyVm8gfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJFeHRlcm5hbFVzZUNhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcG86IEN1c3RvbWVyRXh0ZXJuYWxSZXBvc2l0b3J5KSB7fVxuXG4gIGdldEJ5SWQoaWRlbnRpZmljYXRpb246IHN0cmluZykge1xuICAgIGNvbnN0IGlkTnVtYmVyID0gbmV3IElkZW50aWZpY2F0aW9uTnVtYmVyVm8oaWRlbnRpZmljYXRpb24pO1xuICAgIHJldHVybiB0aGlzLnJlcG8uZ2V0QnlJZChpZE51bWJlcik7XG4gIH1cbn1cblxuIl19","export const CUSTOMER_API = {\n BILLING: '/api',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXIuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9jb25zdGFudHMvY3VzdG9tZXIuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixPQUFPLEVBQUUsTUFBTTtDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENVU1RPTUVSX0FQSSA9IHtcbiAgQklMTElORzogJy9hcGknLFxufTtcblxuIl19","export class CompanySearchMapper {\n static toJson(params) {\n return JSON.stringify({\n textSearch: params.search,\n });\n }\n static fromJson(response) {\n let customers = [];\n if (response && response.code === '1') {\n const results = JSON.parse(response.payload) || [];\n customers = results.map((item) => ({\n id: item.idCliente,\n identificationTypeId: item.idTipoIdentificacion,\n creditTimeId: item.idTiempoCredito,\n customerId: item.customerId,\n status: item.estado,\n email: item.correo,\n phone: item.telefono,\n address: item.direccion,\n licensePlate: item.placa,\n creditDays: item.diasCredito,\n sriValidation: item.validationSri,\n businessName: item.nombreFiscal,\n tradeName: item.nombreComercial,\n identificationNumber: item.numeroIdentificacion,\n identificationType: item.tipoIdentificacion,\n sriCode: item.codigoSri,\n companyRuc: item.rucEmpresa,\n companyId: item.companyId,\n name: item.nombreFiscal,\n }));\n }\n return customers;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1zZWFyY2gubWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9tYXBwZXJzL2NvbXBhbnktc2VhcmNoLm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBc0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFhO1FBQzNCLElBQUksU0FBUyxHQUFVLEVBQUUsQ0FBQztRQUUxQixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFN0QsU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDbEIsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtnQkFDL0MsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUNsQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDdkIsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUN4QixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzVCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDakMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQy9CLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7Z0JBQy9DLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7Z0JBQzNDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWTthQUN4QixDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21lclNlYXJjaCB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL21vZGVscy9jdXN0b21lci1zZWFyY2gubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgQ29tcGFueVNlYXJjaE1hcHBlciB7XG4gIHN0YXRpYyB0b0pzb24ocGFyYW1zOiBDdXN0b21lclNlYXJjaCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB0ZXh0U2VhcmNoOiBwYXJhbXMuc2VhcmNoLFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGZyb21Kc29uKHJlc3BvbnNlOiBhbnkpIHtcbiAgICBsZXQgY3VzdG9tZXJzOiBhbnlbXSA9IFtdO1xuXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmNvZGUgPT09ICcxJykge1xuICAgICAgY29uc3QgcmVzdWx0cyA9IEpTT04ucGFyc2UocmVzcG9uc2UucGF5bG9hZCBhcyBzdHJpbmcpIHx8IFtdO1xuXG4gICAgICBjdXN0b21lcnMgPSByZXN1bHRzLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICBpZDogaXRlbS5pZENsaWVudGUsXG4gICAgICAgIGlkZW50aWZpY2F0aW9uVHlwZUlkOiBpdGVtLmlkVGlwb0lkZW50aWZpY2FjaW9uLFxuICAgICAgICBjcmVkaXRUaW1lSWQ6IGl0ZW0uaWRUaWVtcG9DcmVkaXRvLFxuICAgICAgICBjdXN0b21lcklkOiBpdGVtLmN1c3RvbWVySWQsXG4gICAgICAgIHN0YXR1czogaXRlbS5lc3RhZG8sXG4gICAgICAgIGVtYWlsOiBpdGVtLmNvcnJlbyxcbiAgICAgICAgcGhvbmU6IGl0ZW0udGVsZWZvbm8sXG4gICAgICAgIGFkZHJlc3M6IGl0ZW0uZGlyZWNjaW9uLFxuICAgICAgICBsaWNlbnNlUGxhdGU6IGl0ZW0ucGxhY2EsXG4gICAgICAgIGNyZWRpdERheXM6IGl0ZW0uZGlhc0NyZWRpdG8sXG4gICAgICAgIHNyaVZhbGlkYXRpb246IGl0ZW0udmFsaWRhdGlvblNyaSxcbiAgICAgICAgYnVzaW5lc3NOYW1lOiBpdGVtLm5vbWJyZUZpc2NhbCxcbiAgICAgICAgdHJhZGVOYW1lOiBpdGVtLm5vbWJyZUNvbWVyY2lhbCxcbiAgICAgICAgaWRlbnRpZmljYXRpb25OdW1iZXI6IGl0ZW0ubnVtZXJvSWRlbnRpZmljYWNpb24sXG4gICAgICAgIGlkZW50aWZpY2F0aW9uVHlwZTogaXRlbS50aXBvSWRlbnRpZmljYWNpb24sXG4gICAgICAgIHNyaUNvZGU6IGl0ZW0uY29kaWdvU3JpLFxuICAgICAgICBjb21wYW55UnVjOiBpdGVtLnJ1Y0VtcHJlc2EsXG4gICAgICAgIGNvbXBhbnlJZDogaXRlbS5jb21wYW55SWQsXG4gICAgICAgIG5hbWU6IGl0ZW0ubm9tYnJlRmlzY2FsLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXN0b21lcnM7XG4gIH1cbn1cblxuIl19","import { DateFormatter, getValidId, isValidField } from '@acontplus/utils';\nexport class CustomerCreateUpdateMapper {\n static toJson(param) {\n return {\n idCliente: getValidId(param.idCliente),\n idEmpleado: getValidId(param.idEmpleado),\n idTipoIdentificacion: param.idTipoIdentificacion,\n idTipoClienteProveedor: getValidId(param.idTipoClienteProveedor),\n idTipoEntidad: getValidId(param.idTipoEntidad),\n idCiudad: getValidId(param.idCiudad),\n idSubContribuyente: getValidId(param.idSubContribuyente),\n idTiempoCredito: getValidId(param.idTiempoCredito),\n idEmpresa: getValidId(param.idEmpresa),\n idCargo: getValidId(param.idCargo),\n numeroIdentificacion: param.numeroIdentificacion,\n nombreFiscal: param.nombreFiscal,\n nombreComercial: param.nombreComercial,\n direccion: isValidField(param.direccion),\n telefono: isValidField(param.telefono),\n correo: isValidField(param.correo),\n placa: isValidField(param.placa),\n montoCredito: isValidField(param.montoCredito),\n nota: isValidField(param.nota),\n validationSri: param.validationSri,\n idFormaPagoSri: getValidId(param.idFormaPagoSri),\n estado: param.estado ?? true,\n infoCrediticia: param.dataInfoCred && JSON.stringify(param.dataInfoCred),\n configValorBruto: param.configValorBruto ?? null,\n birthDate: DateFormatter.isValid(param.birthDate)\n ? DateFormatter.toUTCString(param.birthDate)\n : null,\n };\n }\n static fromJson(response) {\n if (!response)\n return response;\n const result = {\n id: 0,\n };\n if (response.code === '1' && typeof response.payload === 'string') {\n try {\n const parsed = JSON.parse(response.payload);\n if (Array.isArray(parsed) && parsed.length > 0) {\n const { idCliente } = parsed[0];\n result.id = idCliente;\n }\n }\n catch (error) {\n console.error('Error parsing payload JSON:', error);\n }\n }\n return result;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItY3JlYXRlLXVwZGF0ZS5tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2luZnJhc3RydWN0dXJlL21hcHBlcnMvY3VzdG9tZXItY3JlYXRlLXVwZGF0ZS5tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0UsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQVU7UUFDdEIsT0FBTztZQUNMLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQW1CLENBQUM7WUFDaEQsVUFBVSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBb0IsQ0FBQztZQUNsRCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CO1lBQ2hELHNCQUFzQixFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7WUFDaEUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQzlDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNwQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1lBQ3hELGVBQWUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUNsRCxTQUFTLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDdEMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2xDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7WUFDaEQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtZQUN0QyxTQUFTLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDeEMsUUFBUSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ3RDLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDaEMsWUFBWSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQzlDLElBQUksRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM5QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQ2hELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUk7WUFDNUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ3hFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO1lBQ2hELFNBQVMsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQy9DLENBQUMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQzVDLENBQUMsQ0FBQyxJQUFJO1NBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQWE7UUFDM0IsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRztZQUNiLEVBQUUsRUFBRSxDQUFDO1NBQ04sQ0FBQztRQUVGLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksT0FBTyxRQUFRLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQy9DLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVGb3JtYXR0ZXIsIGdldFZhbGlkSWQsIGlzVmFsaWRGaWVsZCB9IGZyb20gJ0BhY29udHBsdXMvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJDcmVhdGVVcGRhdGVNYXBwZXIge1xuICBzdGF0aWMgdG9Kc29uKHBhcmFtOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWRDbGllbnRlOiBnZXRWYWxpZElkKHBhcmFtLmlkQ2xpZW50ZSBhcyBudW1iZXIpLFxuICAgICAgaWRFbXBsZWFkbzogZ2V0VmFsaWRJZChwYXJhbS5pZEVtcGxlYWRvIGFzIG51bWJlciksXG4gICAgICBpZFRpcG9JZGVudGlmaWNhY2lvbjogcGFyYW0uaWRUaXBvSWRlbnRpZmljYWNpb24sXG4gICAgICBpZFRpcG9DbGllbnRlUHJvdmVlZG9yOiBnZXRWYWxpZElkKHBhcmFtLmlkVGlwb0NsaWVudGVQcm92ZWVkb3IpLFxuICAgICAgaWRUaXBvRW50aWRhZDogZ2V0VmFsaWRJZChwYXJhbS5pZFRpcG9FbnRpZGFkKSxcbiAgICAgIGlkQ2l1ZGFkOiBnZXRWYWxpZElkKHBhcmFtLmlkQ2l1ZGFkKSxcbiAgICAgIGlkU3ViQ29udHJpYnV5ZW50ZTogZ2V0VmFsaWRJZChwYXJhbS5pZFN1YkNvbnRyaWJ1eWVudGUpLFxuICAgICAgaWRUaWVtcG9DcmVkaXRvOiBnZXRWYWxpZElkKHBhcmFtLmlkVGllbXBvQ3JlZGl0byksXG4gICAgICBpZEVtcHJlc2E6IGdldFZhbGlkSWQocGFyYW0uaWRFbXByZXNhKSxcbiAgICAgIGlkQ2FyZ286IGdldFZhbGlkSWQocGFyYW0uaWRDYXJnbyksXG4gICAgICBudW1lcm9JZGVudGlmaWNhY2lvbjogcGFyYW0ubnVtZXJvSWRlbnRpZmljYWNpb24sXG4gICAgICBub21icmVGaXNjYWw6IHBhcmFtLm5vbWJyZUZpc2NhbCxcbiAgICAgIG5vbWJyZUNvbWVyY2lhbDogcGFyYW0ubm9tYnJlQ29tZXJjaWFsLFxuICAgICAgZGlyZWNjaW9uOiBpc1ZhbGlkRmllbGQocGFyYW0uZGlyZWNjaW9uKSxcbiAgICAgIHRlbGVmb25vOiBpc1ZhbGlkRmllbGQocGFyYW0udGVsZWZvbm8pLFxuICAgICAgY29ycmVvOiBpc1ZhbGlkRmllbGQocGFyYW0uY29ycmVvKSxcbiAgICAgIHBsYWNhOiBpc1ZhbGlkRmllbGQocGFyYW0ucGxhY2EpLFxuICAgICAgbW9udG9DcmVkaXRvOiBpc1ZhbGlkRmllbGQocGFyYW0ubW9udG9DcmVkaXRvKSxcbiAgICAgIG5vdGE6IGlzVmFsaWRGaWVsZChwYXJhbS5ub3RhKSxcbiAgICAgIHZhbGlkYXRpb25Tcmk6IHBhcmFtLnZhbGlkYXRpb25TcmksXG4gICAgICBpZEZvcm1hUGFnb1NyaTogZ2V0VmFsaWRJZChwYXJhbS5pZEZvcm1hUGFnb1NyaSksXG4gICAgICBlc3RhZG86IHBhcmFtLmVzdGFkbyA/PyB0cnVlLFxuICAgICAgaW5mb0NyZWRpdGljaWE6IHBhcmFtLmRhdGFJbmZvQ3JlZCAmJiBKU09OLnN0cmluZ2lmeShwYXJhbS5kYXRhSW5mb0NyZWQpLFxuICAgICAgY29uZmlnVmFsb3JCcnV0bzogcGFyYW0uY29uZmlnVmFsb3JCcnV0byA/PyBudWxsLFxuICAgICAgYmlydGhEYXRlOiBEYXRlRm9ybWF0dGVyLmlzVmFsaWQocGFyYW0uYmlydGhEYXRlKVxuICAgICAgICA/IERhdGVGb3JtYXR0ZXIudG9VVENTdHJpbmcocGFyYW0uYmlydGhEYXRlKVxuICAgICAgICA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihyZXNwb25zZTogYW55KTogYW55IHtcbiAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm4gcmVzcG9uc2U7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgaWQ6IDAsXG4gICAgfTtcblxuICAgIGlmIChyZXNwb25zZS5jb2RlID09PSAnMScgJiYgdHlwZW9mIHJlc3BvbnNlLnBheWxvYWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJlc3BvbnNlLnBheWxvYWQpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWQpICYmIHBhcnNlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgeyBpZENsaWVudGUgfSA9IHBhcnNlZFswXTtcbiAgICAgICAgICByZXN1bHQuaWQgPSBpZENsaWVudGU7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgcGF5bG9hZCBKU09OOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbiJdfQ==","export class CustomerFormDataMapper {\n static toJson() {\n return JSON.stringify({\n tipo: 2,\n });\n }\n static fromJson(response) {\n const result = {};\n if (response.code === '1') {\n const mainData = JSON.parse(response.payload);\n result.tipoIdentificacion = mainData[0];\n result.tipoContribuyentes = mainData[1];\n result.tiempoCreditos = mainData[2] || [];\n const ciudades = mainData[3];\n result.ciudades = ciudades.reduce((acc, ciudade) => {\n const dataExists = acc.find((c) => c.idProvincia === ciudade.idProvincia);\n if (!dataExists) {\n acc.push({\n idProvincia: ciudade.idProvincia,\n nombre: ciudade.provincia,\n ciudades: [\n {\n idCiudad: ciudade.idCiudad,\n nombre: ciudade.ciudad,\n },\n ],\n });\n }\n else {\n dataExists.ciudades.push({\n idCiudad: ciudade.idCiudad,\n nombre: ciudade.ciudad,\n });\n }\n return acc;\n }, []);\n result.tiposCliente = mainData[4] || [];\n result.empresas = mainData[5] || [];\n result.cargos = mainData[6] || [];\n result.formasPagoSri = mainData[7] || [];\n result.housingTypes = mainData[8] || [];\n result.maritalStatuses = mainData[9] || [];\n result.employees = mainData[10] || [];\n }\n return result;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZm9ybS1kYXRhLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvaW5mcmFzdHJ1Y3R1cmUvbWFwcGVycy9jdXN0b21lci1mb3JtLWRhdGEubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFhO1FBQzNCLE1BQU0sTUFBTSxHQUFHLEVBQVMsQ0FBQztRQUN6QixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBaUIsQ0FBQyxDQUFDO1lBRXhELE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxNQUFNLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTdCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxPQUFZLEVBQUUsRUFBRTtnQkFDM0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQy9FLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDaEIsR0FBRyxDQUFDLElBQUksQ0FBQzt3QkFDUCxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7d0JBQ2hDLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUzt3QkFDekIsUUFBUSxFQUFFOzRCQUNSO2dDQUNFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQ0FDMUIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNOzZCQUN2Qjt5QkFDRjtxQkFDRixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO3dCQUN2QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7d0JBQzFCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtxQkFDdkIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUUsRUFBUyxDQUFDLENBQUM7WUFFZCxNQUFNLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekMsTUFBTSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQyxNQUFNLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDdXN0b21lckZvcm1EYXRhTWFwcGVyIHtcbiAgc3RhdGljIHRvSnNvbigpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdGlwbzogMixcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihyZXNwb25zZTogYW55KSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge30gYXMgYW55O1xuICAgIGlmIChyZXNwb25zZS5jb2RlID09PSAnMScpIHtcbiAgICAgIGNvbnN0IG1haW5EYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZS5wYXlsb2FkIGFzIHN0cmluZyk7XG5cbiAgICAgIHJlc3VsdC50aXBvSWRlbnRpZmljYWNpb24gPSBtYWluRGF0YVswXTtcbiAgICAgIHJlc3VsdC50aXBvQ29udHJpYnV5ZW50ZXMgPSBtYWluRGF0YVsxXTtcbiAgICAgIHJlc3VsdC50aWVtcG9DcmVkaXRvcyA9IG1haW5EYXRhWzJdIHx8IFtdO1xuICAgICAgY29uc3QgY2l1ZGFkZXMgPSBtYWluRGF0YVszXTtcblxuICAgICAgcmVzdWx0LmNpdWRhZGVzID0gY2l1ZGFkZXMucmVkdWNlKChhY2M6IGFueSwgY2l1ZGFkZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGFFeGlzdHMgPSBhY2MuZmluZCgoYzogYW55KSA9PiBjLmlkUHJvdmluY2lhID09PSBjaXVkYWRlLmlkUHJvdmluY2lhKTtcbiAgICAgICAgaWYgKCFkYXRhRXhpc3RzKSB7XG4gICAgICAgICAgYWNjLnB1c2goe1xuICAgICAgICAgICAgaWRQcm92aW5jaWE6IGNpdWRhZGUuaWRQcm92aW5jaWEsXG4gICAgICAgICAgICBub21icmU6IGNpdWRhZGUucHJvdmluY2lhLFxuICAgICAgICAgICAgY2l1ZGFkZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkQ2l1ZGFkOiBjaXVkYWRlLmlkQ2l1ZGFkLFxuICAgICAgICAgICAgICAgIG5vbWJyZTogY2l1ZGFkZS5jaXVkYWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGFFeGlzdHMuY2l1ZGFkZXMucHVzaCh7XG4gICAgICAgICAgICBpZENpdWRhZDogY2l1ZGFkZS5pZENpdWRhZCxcbiAgICAgICAgICAgIG5vbWJyZTogY2l1ZGFkZS5jaXVkYWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdIGFzIGFueSk7XG5cbiAgICAgIHJlc3VsdC50aXBvc0NsaWVudGUgPSBtYWluRGF0YVs0XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5lbXByZXNhcyA9IG1haW5EYXRhWzVdIHx8IFtdO1xuICAgICAgcmVzdWx0LmNhcmdvcyA9IG1haW5EYXRhWzZdIHx8IFtdO1xuICAgICAgcmVzdWx0LmZvcm1hc1BhZ29TcmkgPSBtYWluRGF0YVs3XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5ob3VzaW5nVHlwZXMgPSBtYWluRGF0YVs4XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5tYXJpdGFsU3RhdHVzZXMgPSBtYWluRGF0YVs5XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5lbXBsb3llZXMgPSBtYWluRGF0YVsxMF0gfHwgW107XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuIl19","import { SEPARADORES_REGEX } from '@acontplus/core';\nimport { parseJSONSafe } from '@acontplus/utils';\nexport class CustomerGetByIdMapper {\n static fromJson(response) {\n if (response.code !== '1' || !response.payload) {\n return {};\n }\n const data = JSON.parse(response.payload)[0];\n return {\n idCliente: data.idCliente,\n idTipoClienteProveedor: data.idTipoClienteProveedor,\n idTipoEntidad: data.idTipoEntidad,\n idSubContribuyente: data.idSubContribuyente,\n idTiempoCredito: data.idTiempoCredito,\n idTipoIdentificacion: data.idTipoIdentificacion,\n idCiudad: data.idCiudad,\n numeroIdentificacion: data.numeroIdentificacion,\n identificacionComprador: data.numeroIdentificacion,\n razonSocialComprador: data.nombreFiscal,\n nombreFiscal: data.nombreFiscal,\n montoCredito: data.montoCredito,\n nombreComercial: data.nombreComercial,\n direccion: data.direccion,\n telefono: data.telefono,\n correo: data.correo,\n estado: data.estado,\n idEmpleado: data.idEmpleado,\n diasCredito: data.diasCredito,\n empleado: data.empleado,\n idEmpresa: data.idEmpresa,\n idCargo: data.idCargo,\n placa: data.placa,\n validationSri: data.validationSri,\n codigoSri: data.codigoSri,\n correos: data.correo ? data.correo.split(SEPARADORES_REGEX) : [],\n telefonos: data.telefono ? data.telefono.split(SEPARADORES_REGEX) : [],\n placas: data.placa ? data.placa.split(SEPARADORES_REGEX) : [],\n idFormaPagoSri: data.idFormaPagoSri,\n dataInfoCred: parseJSONSafe(data.infoCrediticia, {}),\n nota: data.nota?.trim() ?? '',\n configValorBruto: data.configValorBruto ?? false,\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZ2V0LWJ5LWlkLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvaW5mcmFzdHJ1Y3R1cmUvbWFwcGVycy9jdXN0b21lci1nZXQtYnktaWQubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBYTtRQUMzQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9DLE9BQU8sRUFBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3QyxPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDbkQsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDL0MsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDL0MsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtZQUNsRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN2QyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0RSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3RCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUNwRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLO1NBQ2pELENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTRVBBUkFET1JFU19SRUdFWCB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5pbXBvcnQgeyBwYXJzZUpTT05TYWZlIH0gZnJvbSAnQGFjb250cGx1cy91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21lckdldEJ5SWRNYXBwZXIge1xuICBzdGF0aWMgZnJvbUpzb24ocmVzcG9uc2U6IGFueSkge1xuICAgIGlmIChyZXNwb25zZS5jb2RlICE9PSAnMScgfHwgIXJlc3BvbnNlLnBheWxvYWQpIHtcbiAgICAgIHJldHVybiB7fSBhcyBhbnk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2UucGF5bG9hZClbMF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWRDbGllbnRlOiBkYXRhLmlkQ2xpZW50ZSxcbiAgICAgIGlkVGlwb0NsaWVudGVQcm92ZWVkb3I6IGRhdGEuaWRUaXBvQ2xpZW50ZVByb3ZlZWRvcixcbiAgICAgIGlkVGlwb0VudGlkYWQ6IGRhdGEuaWRUaXBvRW50aWRhZCxcbiAgICAgIGlkU3ViQ29udHJpYnV5ZW50ZTogZGF0YS5pZFN1YkNvbnRyaWJ1eWVudGUsXG4gICAgICBpZFRpZW1wb0NyZWRpdG86IGRhdGEuaWRUaWVtcG9DcmVkaXRvLFxuICAgICAgaWRUaXBvSWRlbnRpZmljYWNpb246IGRhdGEuaWRUaXBvSWRlbnRpZmljYWNpb24sXG4gICAgICBpZENpdWRhZDogZGF0YS5pZENpdWRhZCxcbiAgICAgIG51bWVyb0lkZW50aWZpY2FjaW9uOiBkYXRhLm51bWVyb0lkZW50aWZpY2FjaW9uLFxuICAgICAgaWRlbnRpZmljYWNpb25Db21wcmFkb3I6IGRhdGEubnVtZXJvSWRlbnRpZmljYWNpb24sXG4gICAgICByYXpvblNvY2lhbENvbXByYWRvcjogZGF0YS5ub21icmVGaXNjYWwsXG4gICAgICBub21icmVGaXNjYWw6IGRhdGEubm9tYnJlRmlzY2FsLFxuICAgICAgbW9udG9DcmVkaXRvOiBkYXRhLm1vbnRvQ3JlZGl0byxcbiAgICAgIG5vbWJyZUNvbWVyY2lhbDogZGF0YS5ub21icmVDb21lcmNpYWwsXG4gICAgICBkaXJlY2Npb246IGRhdGEuZGlyZWNjaW9uLFxuICAgICAgdGVsZWZvbm86IGRhdGEudGVsZWZvbm8sXG4gICAgICBjb3JyZW86IGRhdGEuY29ycmVvLFxuICAgICAgZXN0YWRvOiBkYXRhLmVzdGFkbyxcbiAgICAgIGlkRW1wbGVhZG86IGRhdGEuaWRFbXBsZWFkbyxcbiAgICAgIGRpYXNDcmVkaXRvOiBkYXRhLmRpYXNDcmVkaXRvLFxuICAgICAgZW1wbGVhZG86IGRhdGEuZW1wbGVhZG8sXG4gICAgICBpZEVtcHJlc2E6IGRhdGEuaWRFbXByZXNhLFxuICAgICAgaWRDYXJnbzogZGF0YS5pZENhcmdvLFxuICAgICAgcGxhY2E6IGRhdGEucGxhY2EsXG4gICAgICB2YWxpZGF0aW9uU3JpOiBkYXRhLnZhbGlkYXRpb25TcmksXG4gICAgICBjb2RpZ29Tcmk6IGRhdGEuY29kaWdvU3JpLFxuICAgICAgY29ycmVvczogZGF0YS5jb3JyZW8gPyBkYXRhLmNvcnJlby5zcGxpdChTRVBBUkFET1JFU19SRUdFWCkgOiBbXSxcbiAgICAgIHRlbGVmb25vczogZGF0YS50ZWxlZm9ubyA/IGRhdGEudGVsZWZvbm8uc3BsaXQoU0VQQVJBRE9SRVNfUkVHRVgpIDogW10sXG4gICAgICBwbGFjYXM6IGRhdGEucGxhY2EgPyBkYXRhLnBsYWNhLnNwbGl0KFNFUEFSQURPUkVTX1JFR0VYKSA6IFtdLFxuICAgICAgaWRGb3JtYVBhZ29Tcmk6IGRhdGEuaWRGb3JtYVBhZ29TcmksXG4gICAgICBkYXRhSW5mb0NyZWQ6IHBhcnNlSlNPTlNhZmUoZGF0YS5pbmZvQ3JlZGl0aWNpYSwge30pLFxuICAgICAgbm90YTogZGF0YS5ub3RhPy50cmltKCkgPz8gJycsXG4gICAgICBjb25maWdWYWxvckJydXRvOiBkYXRhLmNvbmZpZ1ZhbG9yQnJ1dG8gPz8gZmFsc2UsXG4gICAgfTtcbiAgfVxufVxuXG4iXX0=","export class ListCustomerMapper {\n static toJson(params) {\n return JSON.stringify({\n ...params,\n type: 1,\n tipo: 1, // remove after\n pageIndex: params.pageIndex,\n pageSize: params.pageSize,\n });\n }\n static fromJson(response) {\n // Initialize with backend-aligned shape (PageIndex is commonly 1-based server-side)\n const result = {\n items: [],\n pageIndex: 1,\n pageSize: 0,\n totalCount: 0,\n totalPages: 0,\n hasPreviousPage: false,\n hasNextPage: false,\n metadata: {},\n };\n // Parse payload (backend sends JSON string in payload)\n const parsed = typeof response?.payload === 'string' ? JSON.parse(response.payload) : response?.payload;\n const dataArray = Array.isArray(parsed) ? parsed[0] ?? [] : Array.isArray(parsed?.items) ? parsed.items : [];\n // Map each item to UI-friendly fields, preserving source values\n result.items = dataArray.map((item, index) => ({\n index: index + 1,\n id: item.idCliente,\n identificationTypeId: item.idTipoIdentificacion,\n identification: item.numeroIdentificacion,\n businessName: item.nombreFiscal,\n tradeName: item.nombreComercial,\n address: item.direccion,\n phone: item.telefono,\n email: item.correo,\n finalConsumer: item.consumidorFinal,\n sriValidation: item.validacionSri ?? item.validationSri,\n sriValidationName: (item.validationSri ?? item.validacionSri) ? 'SI' : 'NO',\n identificationType: item.tipoIdentificacion,\n status: item.estado,\n statusName: item.estado ? 'Activo' : 'Inactivo',\n isFinalConsumer: item.codTipoIdentificacion === 'CF',\n totalRecords: item.totalRecords ?? item.TotalCount,\n }));\n // Flexible pagination extraction (prefer explicit backend values)\n const pageIndex = response?.PageIndex ?? response?.pageIndex ?? 1;\n const pageSize = response?.PageSize ?? response?.pageSize ?? result.items.length;\n const totalCountFromItem = result.items.length > 0 ? result.items[0].totalRecords : undefined;\n const totalCount = response?.TotalCount ?? response?.totalCount ?? totalCountFromItem ?? result.items.length;\n const metadata = response?.Metadata ?? response?.metadata ?? {};\n result.pageIndex = Number.isFinite(pageIndex) ? pageIndex : 1;\n result.pageSize = Number.isFinite(pageSize) ? pageSize : result.items.length;\n result.totalCount = Number.isFinite(totalCount) ? totalCount : result.items.length;\n result.totalPages = result.pageSize > 0 ? Math.ceil(result.totalCount / result.pageSize) : 0;\n // Backend semantics show HasPreviousPage as PageIndex > 1\n result.hasPreviousPage = result.pageIndex > 1;\n result.hasNextPage = result.pageIndex < result.totalPages;\n result.metadata = metadata;\n return result;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItbGlzdC5tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2luZnJhc3RydWN0dXJlL21hcHBlcnMvY3VzdG9tZXItbGlzdC5tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLEdBQUcsTUFBTTtZQUNULElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLENBQUMsRUFBRSxlQUFlO1lBQ3hCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztZQUMzQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBYTtRQUMzQixvRkFBb0Y7UUFDcEYsTUFBTSxNQUFNLEdBQVE7WUFDbEIsS0FBSyxFQUFFLEVBQVc7WUFDbEIsU0FBUyxFQUFFLENBQUM7WUFDWixRQUFRLEVBQUUsQ0FBQztZQUNYLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxFQUFFLENBQUM7WUFDYixlQUFlLEVBQUUsS0FBSztZQUN0QixXQUFXLEVBQUUsS0FBSztZQUNsQixRQUFRLEVBQUUsRUFBeUI7U0FDcEMsQ0FBQztRQUVGLHVEQUF1RDtRQUN2RCxNQUFNLE1BQU0sR0FBRyxPQUFPLFFBQVEsRUFBRSxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztRQUN4RyxNQUFNLFNBQVMsR0FBVSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENB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QUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RiwwREFBMEQ7UUFDMUQsTUFBTSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUMxRCxNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUUzQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTGlzdEN1c3RvbWVyTWFwcGVyIHtcbiAgc3RhdGljIHRvSnNvbihwYXJhbXM6IGFueSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICB0eXBlOiAxLFxuICAgICAgdGlwbzogMSwgLy8gcmVtb3ZlIGFmdGVyXG4gICAgICBwYWdlSW5kZXg6IHBhcmFtcy5wYWdlSW5kZXgsXG4gICAgICBwYWdlU2l6ZTogcGFyYW1zLnBhZ2VTaXplLFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGZyb21Kc29uKHJlc3BvbnNlOiBhbnkpIHtcbiAgICAvLyBJbml0aWFsaXplIHdpdGggYmFja2VuZC1hbGlnbmVkIHNoYXBlIChQYWdlSW5kZXggaXMgY29tbW9ubHkgMS1iYXNlZCBzZXJ2ZXItc2lkZSlcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IHtcbiAgICAgIGl0ZW1zOiBbXSBhcyBhbnlbXSxcbiAgICAgIHBhZ2VJbmRleDogMSxcbiAgICAgIHBhZ2VTaXplOiAwLFxuICAgICAgdG90YWxDb3VudDogMCxcbiAgICAgIHRvdGFsUGFnZXM6IDAsXG4gICAgICBoYXNQcmV2aW91c1BhZ2U6IGZhbHNlLFxuICAgICAgaGFzTmV4dFBhZ2U6IGZhbHNlLFxuICAgICAgbWV0YWRhdGE6IHt9IGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgfTtcblxuICAgIC8vIFBhcnNlIHBheWxvYWQgKGJhY2tlbmQgc2VuZHMgSlNPTiBzdHJpbmcgaW4gcGF5bG9hZClcbiAgICBjb25zdCBwYXJzZWQgPSB0eXBlb2YgcmVzcG9uc2U/LnBheWxvYWQgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShyZXNwb25zZS5wYXlsb2FkKSA6IHJlc3BvbnNlPy5wYXlsb2FkO1xuICAgIGNvbnN0IGRhdGFBcnJheTogYW55W10gPSBBcnJheS5pc0FycmF5KHBhcnNlZCkgPyBwYXJzZWRbMF0gPz8gW10gOiBBcnJheS5pc0FycmF5KHBhcnNlZD8uaXRlbXMpID8gcGFyc2VkLml0ZW1zIDogW107XG5cbiAgICAvLyBNYXAgZWFjaCBpdGVtIHRvIFVJLWZyaWVuZGx5IGZpZWxkcywgcHJlc2VydmluZyBzb3VyY2UgdmFsdWVzXG4gICAgcmVzdWx0Lml0ZW1zID0gZGF0YUFycmF5Lm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgaW5kZXg6IGluZGV4ICsgMSxcbiAgICAgIGlkOiBpdGVtLmlkQ2xpZW50ZSxcbiAgICAgIGlkZW50aWZpY2F0aW9uVHlwZUlkOiBpdGVtLmlkVGlwb0lkZW50aWZpY2FjaW9uLFxuICAgICAgaWRlbnRpZmljYXRpb246IGl0ZW0ubnVtZXJvSWRlbnRpZmljYWNpb24sXG4gICAgICBidXNpbmVzc05hbWU6IGl0ZW0ubm9tYnJlRmlzY2FsLFxuICAgICAgdHJhZGVOYW1lOiBpdGVtLm5vbWJyZUNvbWVyY2lhbCxcbiAgICAgIGFkZHJlc3M6IGl0ZW0uZGlyZWNjaW9uLFxuICAgICAgcGhvbmU6IGl0ZW0udGVsZWZvbm8sXG4gICAgICBlbWFpbDogaXRlbS5jb3JyZW8sXG4gICAgICBmaW5hbENvbnN1bWVyOiBpdGVtLmNvbnN1bWlkb3JGaW5hbCxcbiAgICAgIHNyaVZhbGlkYXRpb246IGl0ZW0udmFsaWRhY2lvblNyaSA/PyBpdGVtLnZhbGlkYXRpb25TcmksXG4gICAgICBzcmlWYWxpZGF0aW9uTmFtZTogKGl0ZW0udmFsaWRhdGlvblNyaSA/PyBpdGVtLnZhbGlkYWNpb25TcmkpID8gJ1NJJyA6ICdOTycsXG4gICAgICBpZGVudGlmaWNhdGlvblR5cGU6IGl0ZW0udGlwb0lkZW50aWZpY2FjaW9uLFxuICAgICAgc3RhdHVzOiBpdGVtLmVzdGFkbyxcbiAgICAgIHN0YXR1c05hbWU6IGl0ZW0uZXN0YWRvID8gJ0FjdGl2bycgOiAnSW5hY3Rpdm8nLFxuICAgICAgaXNGaW5hbENvbnN1bWVyOiBpdGVtLmNvZFRpcG9JZGVudGlmaWNhY2lvbiA9PT0gJ0NGJyxcbiAgICAgIHRvdGFsUmVjb3JkczogaXRlbS50b3RhbFJlY29yZHMgPz8gaXRlbS5Ub3RhbENvdW50LFxuICAgIH0pKTtcblxuICAgIC8vIEZsZXhpYmxlIHBhZ2luYXRpb24gZXh0cmFjdGlvbiAocHJlZmVyIGV4cGxpY2l0IGJhY2tlbmQgdmFsdWVzKVxuICAgIGNvbnN0IHBhZ2VJbmRleCA9IHJlc3BvbnNlPy5QYWdlSW5kZXggPz8gcmVzcG9uc2U/LnBhZ2VJbmRleCA/PyAxO1xuICAgIGNvbnN0IHBhZ2VTaXplID0gcmVzcG9uc2U/LlBhZ2VTaXplID8/IHJlc3BvbnNlPy5wYWdlU2l6ZSA/PyByZXN1bHQuaXRlbXMubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsQ291bnRGcm9tSXRlbSA9IHJlc3VsdC5pdGVtcy5sZW5ndGggPiAwID8gcmVzdWx0Lml0ZW1zWzBdLnRvdGFsUmVjb3JkcyA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0b3RhbENvdW50ID0gcmVzcG9uc2U/LlRvdGFsQ291bnQgPz8gcmVzcG9uc2U/LnRvdGFsQ291bnQgPz8gdG90YWxDb3VudEZyb21JdGVtID8/IHJlc3VsdC5pdGVtcy5sZW5ndGg7XG4gICAgY29uc3QgbWV0YWRhdGEgPSByZXNwb25zZT8uTWV0YWRhdGEgPz8gcmVzcG9uc2U/Lm1ldGFkYXRhID8/IHt9O1xuXG4gICAgcmVzdWx0LnBhZ2VJbmRleCA9IE51bWJlci5pc0Zpbml0ZShwYWdlSW5kZXgpID8gcGFnZUluZGV4IDogMTtcbiAgICByZXN1bHQucGFnZVNpemUgPSBOdW1iZXIuaXNGaW5pdGUocGFnZVNpemUpID8gcGFnZVNpemUgOiByZXN1bHQuaXRlbXMubGVuZ3RoO1xuICAgIHJlc3VsdC50b3RhbENvdW50ID0gTnVtYmVyLmlzRmluaXRlKHRvdGFsQ291bnQpID8gdG90YWxDb3VudCA6IHJlc3VsdC5pdGVtcy5sZW5ndGg7XG4gICAgcmVzdWx0LnRvdGFsUGFnZXMgPSByZXN1bHQucGFnZVNpemUgPiAwID8gTWF0aC5jZWlsKHJlc3VsdC50b3RhbENvdW50IC8gcmVzdWx0LnBhZ2VTaXplKSA6IDA7XG4gICAgLy8gQmFja2VuZCBzZW1hbnRpY3Mgc2hvdyBIYXNQcmV2aW91c1BhZ2UgYXMgUGFnZUluZGV4ID4gMVxuICAgIHJlc3VsdC5oYXNQcmV2aW91c1BhZ2UgPSByZXN1bHQucGFnZUluZGV4ID4gMTtcbiAgICByZXN1bHQuaGFzTmV4dFBhZ2UgPSByZXN1bHQucGFnZUluZGV4IDwgcmVzdWx0LnRvdGFsUGFnZXM7XG4gICAgcmVzdWx0Lm1ldGFkYXRhID0gbWV0YWRhdGE7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbiJdfQ==","import { HttpClientFactory } from '@acontplus/core';\nimport { CUSTOMER_API } from '../constants/customer.constants';\nexport class CustomerExternalHttpRepository {\n get http() {\n return HttpClientFactory.getClient(); // siempre toma el último cliente configurado\n }\n get url() {\n return `${CUSTOMER_API.BILLING}/Consultas/`;\n }\n getById(identification) {\n const id = identification.getId();\n let endpoint = '';\n if (identification.isValidRuc()) {\n endpoint = `GetRucSRI?Ruc=${id}`;\n }\n else if (identification.isValidCedula()) {\n endpoint = `GetCedulaSri?Ruc=${id}`;\n }\n else {\n throw new Error('Número de identificación inválido para SRI');\n }\n return this.http.get(`${this.url}${endpoint}`).then(response => {\n const idCard = response.numeroRuc ? response.numeroRuc : response.identificacion;\n const businessName = response.razonSocial ? response.razonSocial : response.nombreCompleto;\n const data = {\n phone: response.telefono,\n email: response.email,\n idCard,\n businessName,\n address: response.direccion,\n };\n return {\n status: response.error ? 'warning' : 'success',\n code: response.error ? 'EXTERNAL_API_ERROR' : 'SUCCESS',\n data,\n message: response.error ?? 'External API call completed',\n timestamp: new Date().toISOString(),\n };\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZXh0ZXJuYWwtaHR0cC5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9yZXBvc2l0b3JpZXMvY3VzdG9tZXItZXh0ZXJuYWwtaHR0cC5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxpQkFBaUIsRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHL0QsTUFBTSxPQUFPLDhCQUE4QjtJQUN6QyxJQUFZLElBQUk7UUFDZCxPQUFPLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsNkNBQTZDO0lBQ3JGLENBQUM7SUFFRCxJQUFZLEdBQUc7UUFDYixPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sYUFBYSxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPLENBQUMsY0FBc0M7UUFDNUMsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLGNBQWMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLFFBQVEsR0FBRyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksY0FBYyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDMUMsUUFBUSxHQUFHLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUNqRixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzNGLE1BQU0sSUFBSSxHQUFxQjtnQkFDN0IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUN4QixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLE1BQU07Z0JBQ04sWUFBWTtnQkFDWixPQUFPLEVBQUUsUUFBUSxDQUFDLFNBQVM7YUFDNUIsQ0FBQztZQUNGLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDOUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN2RCxJQUFJO2dCQUNKLE9BQU8sRUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLDZCQUE2QjtnQkFDeEQsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ2hCLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlSZXNwb25zZSwgSHR0cENsaWVudEZhY3RvcnksIElkZW50aWZpY2F0aW9uTnVtYmVyVm8gfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgQ1VTVE9NRVJfQVBJIH0gZnJvbSAnLi4vY29uc3RhbnRzL2N1c3RvbWVyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDdXN0b21lckV4dGVybmFsUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDdXN0b21lckV4dGVybmFsIH0gZnJvbSAnLi4vLi4vZG9tYWluL2VudGl0aWVzL2N1c3RvbWVyLWV4dGVybmFsLmVudGl0eSc7XG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJFeHRlcm5hbEh0dHBSZXBvc2l0b3J5IGltcGxlbWVudHMgQ3VzdG9tZXJFeHRlcm5hbFJlcG9zaXRvcnkge1xuICBwcml2YXRlIGdldCBodHRwKCkge1xuICAgIHJldHVybiBIdHRwQ2xpZW50RmFjdG9yeS5nZXRDbGllbnQoKTsgLy8gc2llbXByZSB0b21hIGVsIMO6bHRpbW8gY2xpZW50ZSBjb25maWd1cmFkb1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdXJsKCkge1xuICAgIHJldHVybiBgJHtDVVNUT01FUl9BUEkuQklMTElOR30vQ29uc3VsdGFzL2A7XG4gIH1cblxuICBnZXRCeUlkKGlkZW50aWZpY2F0aW9uOiBJZGVudGlmaWNhdGlvbk51bWJlclZvKTogUHJvbWlzZTxBcGlSZXNwb25zZTxDdXN0b21lckV4dGVybmFsPj4ge1xuICAgIGNvbnN0IGlkID0gaWRlbnRpZmljYXRpb24uZ2V0SWQoKTtcblxuICAgIGxldCBlbmRwb2ludCA9ICcnO1xuICAgIGlmIChpZGVudGlmaWNhdGlvbi5pc1ZhbGlkUnVjKCkpIHtcbiAgICAgIGVuZHBvaW50ID0gYEdldFJ1Y1NSST9SdWM9JHtpZH1gO1xuICAgIH0gZWxzZSBpZiAoaWRlbnRpZmljYXRpb24uaXNWYWxpZENlZHVsYSgpKSB7XG4gICAgICBlbmRwb2ludCA9IGBHZXRDZWR1bGFTcmk/UnVjPSR7aWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOw7ptZXJvIGRlIGlkZW50aWZpY2FjacOzbiBpbnbDoWxpZG8gcGFyYSBTUkknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMudXJsfSR7ZW5kcG9pbnR9YCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCBpZENhcmQgPSByZXNwb25zZS5udW1lcm9SdWMgPyByZXNwb25zZS5udW1lcm9SdWMgOiByZXNwb25zZS5pZGVudGlmaWNhY2lvbjtcbiAgICAgIGNvbnN0IGJ1c2luZXNzTmFtZSA9IHJlc3BvbnNlLnJhem9uU29jaWFsID8gcmVzcG9uc2UucmF6b25Tb2NpYWwgOiByZXNwb25zZS5ub21icmVDb21wbGV0bztcbiAgICAgIGNvbnN0IGRhdGE6IEN1c3RvbWVyRXh0ZXJuYWwgPSB7XG4gICAgICAgIHBob25lOiByZXNwb25zZS50ZWxlZm9ubyxcbiAgICAgICAgZW1haWw6IHJlc3BvbnNlLmVtYWlsLFxuICAgICAgICBpZENhcmQsXG4gICAgICAgIGJ1c2luZXNzTmFtZSxcbiAgICAgICAgYWRkcmVzczogcmVzcG9uc2UuZGlyZWNjaW9uLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogcmVzcG9uc2UuZXJyb3IgPyAnd2FybmluZycgOiAnc3VjY2VzcycsXG4gICAgICAgIGNvZGU6IHJlc3BvbnNlLmVycm9yID8gJ0VYVEVSTkFMX0FQSV9FUlJPUicgOiAnU1VDQ0VTUycsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLmVycm9yID8/ICdFeHRlcm5hbCBBUEkgY2FsbCBjb21wbGV0ZWQnLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0gYXMgQXBpUmVzcG9uc2U8YW55PjtcbiAgICB9KTtcbiAgfVxufVxuXG4iXX0=","import { CustomerFormDataMapper } from '../mappers/customer-form-data.mapper';\nimport { ListCustomerMapper } from '../mappers/customer-list.mapper';\nimport { CustomerGetByIdMapper } from '../mappers/customer-get-by-id.mapper';\nimport { CustomerCreateUpdateMapper } from '../mappers/customer-create-update.mapper';\nimport { CompanySearchMapper } from '../mappers/company-search.mapper';\nimport { HttpClientFactory } from '@acontplus/core';\nimport { CUSTOMER_API } from '../constants/customer.constants';\nexport class CustomerHttpRepository {\n get http() {\n return HttpClientFactory.getClient(); // siempre toma el último cliente configurado\n }\n get url() {\n return `${CUSTOMER_API.BILLING}/CompanyCustomer/`;\n }\n checkExistence(identificationNumber) {\n const searchPayload = JSON.stringify({\n textSearch: identificationNumber,\n tipo: 3,\n });\n return this.http.get(`${this.url}?json=${searchPayload}`).then(response => {\n const result = {\n status: 'warning',\n code: response.code ?? 'UNKNOWN_ERROR',\n data: null,\n message: response.message ?? 'Unknown error occurred',\n timestamp: new Date().toISOString(),\n };\n if (response.code === '1' && response.payload) {\n const parsedData = JSON.parse(response.payload);\n if (Array.isArray(parsedData) && parsedData.length > 0 && Array.isArray(parsedData[0])) {\n const [customer] = parsedData[0];\n if (customer) {\n result.status = 'success';\n result.data = customer;\n }\n }\n }\n return result;\n });\n }\n getFormData() {\n const json = CustomerFormDataMapper.toJson();\n return this.http.get(`${this.url}?json=${json}`).then((response) => {\n const data = CustomerFormDataMapper.fromJson(response);\n return {\n status: 'success',\n code: response.code ?? 'SUCCESS',\n data,\n timestamp: new Date().toISOString(),\n };\n });\n }\n getAll(obj) {\n const json = ListCustomerMapper.toJson(obj);\n return this.http\n .get(`${this.url}?json=${json}`)\n .then((response) => {\n const data = ListCustomerMapper.fromJson(response);\n return {\n status: 'success',\n code: response.code ?? 'SUCCESS',\n data,\n timestamp: new Date().toISOString(),\n };\n });\n }\n create(dto) {\n return this.http\n .post(this.url, { data: CustomerCreateUpdateMapper.toJson(dto.data) })\n .then(response => {\n console.log(response);\n const data = CustomerCreateUpdateMapper.fromJson(response);\n return {\n status: response.code === '1' ? 'success' : 'warning',\n code: response.code ?? 'OPERATION_FAILED',\n data,\n message: response.message ?? 'Operation completed with issues',\n timestamp: new Date().toISOString(),\n };\n });\n }\n update(dto) {\n return this.http\n .put(`${this.url}${dto.id}`, {\n data: CustomerCreateUpdateMapper.toJson(dto.data),\n })\n .then(response => {\n console.log(response);\n return {\n status: response.code === '1' ? 'success' : 'warning',\n code: response.code ?? 'OPERATION_FAILED',\n message: response.message ?? 'Operation completed with issues',\n timestamp: new Date().toISOString(),\n };\n });\n }\n updateState(id) {\n return this.http.delete(`${this.url}${id}`).then(response => {\n return {\n status: response.code === '1' ? 'success' : 'warning',\n code: response.code,\n message: response.message,\n timestamp: new Date().toISOString(),\n };\n });\n }\n getById(id) {\n return this.http\n .get(`${this.url}GetId/${id}`)\n .then(response => {\n const data = CustomerGetByIdMapper.fromJson(response);\n return {\n status: response.code === '1' ? 'success' : 'warning',\n code: response.code ?? 'OPERATION_FAILED',\n data,\n message: response.message ?? 'Operation completed with issues',\n timestamp: new Date().toISOString(),\n };\n });\n }\n search(params) {\n const json = CompanySearchMapper.toJson(params);\n return this.http.get(`${this.url}Search?json=${json}`).then(response => {\n const data = CompanySearchMapper.fromJson(response);\n return {\n status: response.code === '1' ? 'success' : 'warning',\n code: response.code,\n data,\n message: response.message,\n timestamp: new Date().toISOString(),\n };\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItaHR0cC5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9yZXBvc2l0b3JpZXMvY3VzdG9tZXItaHR0cC5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBZSxpQkFBaUIsRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLElBQVksSUFBSTtRQUNkLE9BQU8saUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyw2Q0FBNkM7SUFDckYsQ0FBQztJQUVELElBQVksR0FBRztRQUNiLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxtQkFBbUIsQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYyxDQUFDLG9CQUE0QjtRQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ25DLFVBQVUsRUFBRSxvQkFBb0I7WUFDaEMsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsU0FBUyxhQUFhLEVBQUUsQ0FBQyxDQUFDLElBQUks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QUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsRixNQUFNLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsT0FBTztnQkFDTCxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDckQsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dCQUNuQixJQUFJO2dCQUNKLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ2hCLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21lckZvcm1EYXRhTWFwcGVyIH0gZnJvbSAnLi4vbWFwcGVycy9jdXN0b21lci1mb3JtLWRhdGEubWFwcGVyJztcbmltcG9ydCB7IExpc3RDdXN0b21lck1hcHBlciB9IGZyb20gJy4uL21hcHBlcnMvY3VzdG9tZXItbGlzdC5tYXBwZXInO1xuaW1wb3J0IHsgQ3VzdG9tZXJSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEN1c3RvbWVyR2V0QnlJZE1hcHBlciB9IGZyb20gJy4uL21hcHBlcnMvY3VzdG9tZXItZ2V0LWJ5LWlkLm1hcHBlcic7XG5pbXBvcnQgeyBDdXN0b21lckNyZWF0ZVVwZGF0ZU1hcHBlciB9IGZyb20gJy4uL21hcHBlcnMvY3VzdG9tZXItY3JlYXRlLXVwZGF0ZS5tYXBwZXInO1xuaW1wb3J0IHsgQ3VzdG9tZXJTZWFyY2ggfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi9tb2RlbHMvY3VzdG9tZXItc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IENvbXBhbnlTZWFyY2hNYXBwZXIgfSBmcm9tICcuLi9tYXBwZXJzL2NvbXBhbnktc2VhcmNoLm1hcHBlcic7XG5pbXBvcnQgeyBBcGlSZXNwb25zZSwgSHR0cENsaWVudEZhY3RvcnksIFBhZ2VkUmVzdWx0IH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcbmltcG9ydCB7IENVU1RPTUVSX0FQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9jdXN0b21lci5jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJIdHRwUmVwb3NpdG9yeSBpbXBsZW1lbnRzIEN1c3RvbWVyUmVwb3NpdG9yeSB7XG4gIHByaXZhdGUgZ2V0IGh0dHAoKSB7XG4gICAgcmV0dXJuIEh0dHBDbGllbnRGYWN0b3J5LmdldENsaWVudCgpOyAvLyBzaWVtcHJlIHRvbWEgZWwgw7psdGltbyBjbGllbnRlIGNvbmZpZ3VyYWRvXG4gIH1cblxuICBwcml2YXRlIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGAke0NVU1RPTUVSX0FQSS5CSUxMSU5HfS9Db21wYW55Q3VzdG9tZXIvYDtcbiAgfVxuXG4gIGNoZWNrRXhpc3RlbmNlKGlkZW50aWZpY2F0aW9uTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPEFwaVJlc3BvbnNlPGFueT4+IHtcbiAgICBjb25zdCBzZWFyY2hQYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdGV4dFNlYXJjaDogaWRlbnRpZmljYXRpb25OdW1iZXIsXG4gICAgICB0aXBvOiAzLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy51cmx9P2pzb249JHtzZWFyY2hQYXlsb2FkfWApLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBBcGlSZXNwb25zZTxhbnk+ID0ge1xuICAgICAgICBzdGF0dXM6ICd3YXJuaW5nJyxcbiAgICAgICAgY29kZTogcmVzcG9uc2UuY29kZSA/PyAnVU5LTk9XTl9FUlJPUicsXG4gICAgICAgIGRhdGE6IG51bGwgYXMgYW55LFxuICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlID8/ICdVbmtub3duIGVycm9yIG9jY3VycmVkJyxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9O1xuICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09ICcxJyAmJiByZXNwb25zZS5wYXlsb2FkKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlLnBheWxvYWQpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWREYXRhKSAmJiBwYXJzZWREYXRhLmxlbmd0aCA+IDAgJiYgQXJyYXkuaXNBcnJheShwYXJzZWREYXRhWzBdKSkge1xuICAgICAgICAgIGNvbnN0IFtjdXN0b21lcl0gPSBwYXJzZWREYXRhWzBdO1xuICAgICAgICAgIGlmIChjdXN0b21lcikge1xuICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyA9ICdzdWNjZXNzJztcbiAgICAgICAgICAgIHJlc3VsdC5kYXRhID0gY3VzdG9tZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Rm9ybURhdGEoKTogUHJvbWlzZTxBcGlSZXNwb25zZTxhbnk+PiB7XG4gICAgY29uc3QganNvbiA9IEN1c3RvbWVyRm9ybURhdGFNYXBwZXIudG9Kc29uKCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLnVybH0/anNvbj0ke2pzb259YCkudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IEN1c3RvbWVyRm9ybURhdGFNYXBwZXIuZnJvbUpzb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUgPz8gJ1NVQ0NFU1MnLFxuICAgICAgICBkYXRhLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0gYXMgQXBpUmVzcG9uc2U8YW55PjtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEFsbDxUPihvYmo6IFQpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFBhZ2VkUmVzdWx0PGFueT4+PiB7XG4gICAgY29uc3QganNvbiA9IExpc3RDdXN0b21lck1hcHBlci50b0pzb24ob2JqKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueT4oYCR7dGhpcy51cmx9P2pzb249JHtqc29ufWApXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gTGlzdEN1c3RvbWVyTWFwcGVyLmZyb21Kc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcbiAgICAgICAgICBjb2RlOiByZXNwb25zZS5jb2RlID8/ICdTVUNDRVNTJyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9IGFzIEFwaVJlc3BvbnNlPFBhZ2VkUmVzdWx0PGFueT4+O1xuICAgICAgfSk7XG4gIH1cblxuICBjcmVhdGUoZHRvOiBhbnkpOiBQcm9taXNlPEFwaVJlc3BvbnNlPGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxBcGlSZXNwb25zZT4odGhpcy51cmwsIHsgZGF0YTogQ3VzdG9tZXJDcmVhdGVVcGRhdGVNYXBwZXIudG9Kc29uKGR0by5kYXRhKSB9KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBDdXN0b21lckNyZWF0ZVVwZGF0ZU1hcHBlci5mcm9tSnNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5jb2RlID09PSAnMScgPyAnc3VjY2VzcycgOiAnd2FybmluZycsXG4gICAgICAgICAgY29kZTogcmVzcG9uc2UuY29kZSA/PyAnT1BFUkFUSU9OX0ZBSUxFRCcsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlID8/ICdPcGVyYXRpb24gY29tcGxldGVkIHdpdGggaXNzdWVzJyxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfSBhcyBBcGlSZXNwb25zZTxhbnk+O1xuICAgICAgfSk7XG4gIH1cbiAgdXBkYXRlKGR0bzogYW55KTogUHJvbWlzZTxBcGlSZXNwb25zZTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnB1dDxBcGlSZXNwb25zZT4oYCR7dGhpcy51cmx9JHtkdG8uaWR9YCwge1xuICAgICAgICBkYXRhOiBDdXN0b21lckNyZWF0ZVVwZGF0ZU1hcHBlci50b0pzb24oZHRvLmRhdGEpLFxuICAgICAgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN0YXR1czogcmVzcG9uc2UuY29kZSA9PT0gJzEnID8gJ3N1Y2Nlc3MnIDogJ3dhcm5pbmcnLFxuICAgICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUgPz8gJ09QRVJBVElPTl9GQUlMRUQnLFxuICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UgPz8gJ09wZXJhdGlvbiBjb21wbGV0ZWQgd2l0aCBpc3N1ZXMnLFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9IGFzIEFwaVJlc3BvbnNlPGFueT47XG4gICAgICB9KTtcbiAgfVxuICB1cGRhdGVTdGF0ZShpZDogbnVtYmVyKTogUHJvbWlzZTxBcGlSZXNwb25zZTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8QXBpUmVzcG9uc2U+KGAke3RoaXMudXJsfSR7aWR9YCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmNvZGUgPT09ICcxJyA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJyxcbiAgICAgICAgY29kZTogcmVzcG9uc2UuY29kZSxcbiAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9IGFzIEFwaVJlc3BvbnNlPGFueT47XG4gICAgfSk7XG4gIH1cbiAgZ2V0QnlJZChpZDogbnVtYmVyKTogUHJvbWlzZTxBcGlSZXNwb25zZTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnk+KGAke3RoaXMudXJsfUdldElkLyR7aWR9YClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IEN1c3RvbWVyR2V0QnlJZE1hcHBlci5mcm9tSnNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5jb2RlID09PSAnMScgPyAnc3VjY2VzcycgOiAnd2FybmluZycsXG4gICAgICAgICAgY29kZTogcmVzcG9uc2UuY29kZSA/PyAnT1BFUkFUSU9OX0ZBSUxFRCcsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlID8/ICdPcGVyYXRpb24gY29tcGxldGVkIHdpdGggaXNzdWVzJyxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfSBhcyBBcGlSZXNwb25zZTxhbnk+O1xuICAgICAgfSk7XG4gIH1cblxuICBzZWFyY2gocGFyYW1zOiBDdXN0b21lclNlYXJjaCk6IFByb21pc2U8QXBpUmVzcG9uc2U8YW55Pj4ge1xuICAgIGNvbnN0IGpzb24gPSBDb21wYW55U2VhcmNoTWFwcGVyLnRvSnNvbihwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVJlc3BvbnNlPihgJHt0aGlzLnVybH1TZWFyY2g/anNvbj0ke2pzb259YCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gQ29tcGFueVNlYXJjaE1hcHBlci5mcm9tSnNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmNvZGUgPT09ICcxJyA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJyxcbiAgICAgICAgY29kZTogcmVzcG9uc2UuY29kZSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9IGFzIEFwaVJlc3BvbnNlPGFueT47XG4gICAgfSk7XG4gIH1cbn1cblxuIl19","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { forkJoin, from } from 'rxjs';\nimport { NotificationService } from '@acontplus/ng-notifications';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, } from '@angular/material/dialog';\nimport { MatDynamicCardComponent, MatInputChipComponent, MatThemeButtonComponent, } from '@acontplus/ng-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators, } from '@angular/forms';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { SEPARADORES_REGEX, SEPARATOR_KEY_CODE, SRI_DOCUMENT_TYPE, isSuccessResponse, } from '@acontplus/core';\nimport { ToUpperCaseDirective } from '@acontplus/ng-components';\nimport { CustomerUseCase } from '../../../application/use-cases/customer.use-case';\nimport { CustomerExternalUseCase } from '../../../application/use-cases/customer-external.use-case';\nimport { CustomerHttpRepository } from '../../../infrastructure/repositories/customer-http.repository';\nimport { CustomerExternalHttpRepository } from '../../../infrastructure/repositories/customer-external-http.repository';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/button\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@angular/material/tabs\";\nimport * as i4 from \"@angular/material/form-field\";\nimport * as i5 from \"@angular/material/input\";\nimport * as i6 from \"@angular/material/select\";\nimport * as i7 from \"@angular/material/slide-toggle\";\nimport * as i8 from \"@angular/material/datepicker\";\nexport class CustomerAddEditComponent {\n dialogRef = inject((MatDialogRef));\n customerUseCase = inject(CustomerUseCase);\n customerExternalUseCase = inject(CustomerExternalUseCase);\n btnText = signal('Guardar', ...(ngDevMode ? [{ debugName: \"btnText\" }] : []));\n paramsOptions = inject(MAT_DIALOG_DATA);\n params = this.paramsOptions.data;\n notificationService = inject(NotificationService);\n title = 'Nuevo Cliente';\n loading = false;\n emails = [];\n telephones = [];\n tiemposCredito = signal([], ...(ngDevMode ? [{ debugName: \"tiemposCredito\" }] : []));\n tipoContribuyentes = signal([], ...(ngDevMode ? [{ debugName: \"tipoContribuyentes\" }] : []));\n tiposCliente = signal([], ...(ngDevMode ? [{ debugName: \"tiposCliente\" }] : []));\n tiposIdentificacion = signal([], ...(ngDevMode ? [{ debugName: \"tiposIdentificacion\" }] : []));\n formasPagoSri = signal([], ...(ngDevMode ? [{ debugName: \"formasPagoSri\" }] : []));\n placas = signal([], ...(ngDevMode ? [{ debugName: \"placas\" }] : []));\n ciudades = signal([], ...(ngDevMode ? [{ debugName: \"ciudades\" }] : []));\n cargos = signal([], ...(ngDevMode ? [{ debugName: \"cargos\" }] : []));\n empresas = signal([], ...(ngDevMode ? [{ debugName: \"empresas\" }] : []));\n employees = signal([], ...(ngDevMode ? [{ debugName: \"employees\" }] : []));\n maritalStatuses = signal([], ...(ngDevMode ? [{ debugName: \"maritalStatuses\" }] : []));\n housingTypes = signal([], ...(ngDevMode ? [{ debugName: \"housingTypes\" }] : []));\n showRefresh = signal(true, ...(ngDevMode ? [{ debugName: \"showRefresh\" }] : []));\n endsWith001Validator(control) {\n const value = control.value;\n if (value && value.length >= 3) {\n if (!value.endsWith('001')) {\n return { endsWith001: true };\n }\n }\n return null;\n }\n customerForm = new FormGroup({\n direccion: new FormControl('', Validators.required),\n idCargo: new FormControl(0),\n idCliente: new FormControl(0),\n idEmpresa: new FormControl(0),\n idFormaPagoSri: new FormControl(0),\n idTipoClienteProveedor: new FormControl(0),\n idTipoEntidad: new FormControl(0),\n idCiudad: new FormControl(0),\n idEmpleado: new FormControl(0),\n nombreFiscal: new FormControl('', Validators.required),\n nombreComercial: new FormControl(''),\n numeroIdentificacion: new FormControl({ value: '', disabled: false }, [\n Validators.required,\n Validators.minLength(13),\n Validators.maxLength(13),\n this.endsWith001Validator,\n ]),\n correo: new FormControl(''),\n telefono: new FormControl(''),\n placa: new FormControl(''),\n nota: new FormControl(''),\n estado: new FormControl(false),\n birthDate: new FormControl(null),\n validationSri: new FormControl(false),\n configValorBruto: new FormControl(false),\n dataInfoCred: new FormGroup({\n maritalStatusId: new FormControl(null),\n conyugeNombre: new FormControl(null),\n conyugeTel: new FormControl(null),\n refFamNombre: new FormControl(null),\n refFamTel: new FormControl(null),\n housingTypeId: new FormControl(null),\n dirVivienda: new FormControl(null),\n refDomicilio: new FormControl(null),\n sector: new FormControl(null),\n barrio: new FormControl(null),\n calle: new FormControl(null),\n }),\n });\n getCustomer(codigo, id) {\n this.customerForm.patchValue({\n validationSri: false,\n });\n from(this.customerUseCase.checkExistence(id)).subscribe(response => {\n if (isSuccessResponse(response) && response.data) {\n alert('El cliente ya se encuentra registrado en su empresa');\n this.notificationService.toastr.show({\n type: 'warning',\n message: 'El cliente ya se encuentra registrado en su empresa',\n });\n this.customerForm.patchValue({ numeroIdentificacion: null });\n return;\n }\n if (codigo === SRI_DOCUMENT_TYPE.PASSPORT) {\n this.customerForm.patchValue({\n validationSri: true,\n });\n return;\n }\n from(this.customerExternalUseCase.getById(id)).subscribe(secondResponse => {\n if (!isSuccessResponse(secondResponse) || !secondResponse.data) {\n this.notificationService.toastr.show({\n type: 'info',\n message: ' No se encontró información en el SRI',\n });\n return;\n }\n const { phone, email, idCard, // numeroRuc\n businessName, // razonSocial\n address, // direccion\n } = secondResponse.data;\n if (phone && typeof phone === 'string') {\n this.telephones = phone.split(SEPARADORES_REGEX) || [];\n }\n if (email && typeof email === 'string') {\n this.emails = email.split(SEPARADORES_REGEX) || [];\n }\n if (idCard) {\n this.customerForm.patchValue({\n numeroIdentificacion: idCard,\n nombreFiscal: businessName,\n validationSri: true,\n direccion: address,\n nombreComercial: businessName,\n });\n }\n });\n });\n }\n getLoadData() {\n if (this.isUpdate()) {\n return forkJoin([\n from(this.customerUseCase.getFormData()),\n from(this.customerUseCase.getById(this.params.id)),\n ]);\n }\n return from(this.customerUseCase.getFormData());\n }\n ngOnInit() {\n try {\n this.getLoadData().subscribe(response => {\n let mainDataForm = {};\n let dataCompanyCustomer = {};\n if (Array.isArray(response)) {\n mainDataForm = response[0].data;\n dataCompanyCustomer = response[1];\n }\n else {\n mainDataForm = response.data;\n }\n this.tiposIdentificacion.set(mainDataForm.tipoIdentificacion);\n this.tiemposCredito.set(mainDataForm.tiempoCreditos);\n this.tipoContribuyentes.set(mainDataForm.tipoContribuyentes);\n this.formasPagoSri.set(mainDataForm.formasPagoSri);\n this.tiposCliente.set(mainDataForm.tiposCliente);\n this.ciudades.set(mainDataForm.ciudades);\n this.cargos.set(mainDataForm.cargos);\n this.empresas.set(mainDataForm.empresas);\n this.employees.set(mainDataForm.employees);\n this.maritalStatuses.set(mainDataForm.maritalStatuses);\n this.housingTypes.set(mainDataForm.housingTypes);\n if (this.isDataOfSri()) {\n const { codigoSri, numeroIdentificacion } = this.params;\n const dataIdentificacion = this.tiposIdentificacion().find((ti) => ti.codigoSri === codigoSri);\n if (dataIdentificacion) {\n const idTipoIdentificacionCtrl = this.customerForm.get('idTipoIdentificacion');\n idTipoIdentificacionCtrl?.setValue(dataIdentificacion.idTipoIdentificacion);\n const numeroIdentificacionCtrl = this.customerForm.get('numeroIdentificacion');\n numeroIdentificacionCtrl?.setValue(numeroIdentificacion);\n const idTiempoCreditoCtrl = this.customerForm.get('idTiempoCredito');\n idTiempoCreditoCtrl?.setValue(this.tiemposCredito().length > 0\n ? this.tiemposCredito()[0].idTiempoCredito\n : 0);\n this.updateFormControlNumeroIdentificacion(dataIdentificacion.codigoSri);\n this.onKeyDownGovernmentId();\n }\n return;\n }\n if (this.isCreate()) {\n const dataIdentificacion = this.tiposIdentificacion().find((ti) => ti.codigoSri === SRI_DOCUMENT_TYPE.RUC);\n if (dataIdentificacion) {\n const idTipoIdentificacionCtrl = this.customerForm.get('idTipoIdentificacion');\n idTipoIdentificacionCtrl?.setValue(dataIdentificacion.idTipoIdentificacion);\n this.setIdentificationTypeChange(dataIdentificacion.codigoSri);\n }\n const idTiempoCreditoCtrl = this.customerForm.get('idTiempoCredito');\n idTiempoCreditoCtrl?.setValue(this.tiemposCredito().length > 0\n ? this.tiemposCredito()[0].idTiempoCredito\n : 0);\n }\n else {\n this.title = 'Editar Cliente';\n this.btnText.set('Actualizar');\n this.emails = dataCompanyCustomer.correos;\n this.telephones = dataCompanyCustomer.telefonos;\n this.placas.set(dataCompanyCustomer.placas);\n const { dataInfoCred, ...rest } = dataCompanyCustomer;\n this.customerForm.patchValue(rest);\n if (dataInfoCred) {\n this.customerForm.get('dataInfoCred')?.patchValue(dataInfoCred);\n }\n this.updateFormControlNumeroIdentificacion(rest.codigoSri);\n }\n });\n }\n catch (error) {\n // Handle error appropriately\n }\n }\n identificationTypeChange(event) {\n const dt = this.tiposIdentificacion().find(item => item.idTipoIdentificacion === Number(event.value));\n this.setIdentificationTypeChange(dt.codigoSri);\n }\n updateFormControlNumeroIdentificacion(codigoSri) {\n const idNumberControl = this.customerForm.get('numeroIdentificacion');\n this.showRefresh.set(false);\n if ([SRI_DOCUMENT_TYPE.RUC, SRI_DOCUMENT_TYPE.CEDULA].includes(codigoSri)) {\n let lengthValidator;\n this.showRefresh.set(true);\n if (codigoSri === SRI_DOCUMENT_TYPE.CEDULA) {\n lengthValidator = [Validators.minLength(10), Validators.maxLength(10)];\n }\n else if (codigoSri === SRI_DOCUMENT_TYPE.RUC) {\n lengthValidator = [\n Validators.minLength(13),\n Validators.maxLength(13),\n this.endsWith001Validator,\n ];\n }\n if (lengthValidator) {\n idNumberControl?.setValidators([\n Validators.required,\n Validators.pattern(/^\\d+$/), // Solo números\n ...lengthValidator,\n ]);\n }\n }\n else {\n idNumberControl?.setValidators([Validators.required]);\n }\n idNumberControl?.updateValueAndValidity();\n }\n setIdentificationTypeChange(codigoSri) {\n const idNumberControl = this.customerForm.get('numeroIdentificacion');\n idNumberControl?.reset();\n idNumberControl?.clearValidators();\n this.updateFormControlNumeroIdentificacion(codigoSri);\n }\n get numeroIdentificacionControl() {\n return this.customerForm.get('numeroIdentificacion');\n }\n get birthDateCtrl() {\n return this.customerForm.get('birthDate');\n }\n onKeyDownGovernmentId($event) {\n if ($event) {\n $event.preventDefault();\n }\n if (this.numeroIdentificacionControl?.invalid)\n return;\n const idTipoIdentificacion = this.customerForm.get('idTipoIdentificacion')?.value;\n const numeroIdentificacion = this.customerForm.get('numeroIdentificacion')?.value;\n const codigoSri = this.tiposIdentificacion().find((x) => x.idTipoIdentificacion == idTipoIdentificacion).codigoSri;\n if (numeroIdentificacion) {\n this.getCustomer(codigoSri, numeroIdentificacion);\n }\n }\n isDataOfSri = () => this.params.dataOfSri;\n isCreate = () => !(this.params.id > 0);\n isUpdate = () => this.params.id > 0;\n onSave() {\n this.customerForm.patchValue({\n telefono: this.telephones.length > 0 ? this.telephones.join(SEPARATOR_KEY_CODE.SLASH) : null,\n });\n this.customerForm.patchValue({\n correo: this.emails.length > 0 ? this.emails.join(SEPARATOR_KEY_CODE.SLASH) : null,\n });\n this.customerForm.patchValue({\n placa: this.placas().length > 0 ? this.placas().join(SEPARATOR_KEY_CODE.SLASH) : null,\n });\n const dataForm = {\n ...this.customerForm.value,\n };\n if (this.customerForm.invalid) {\n this.notificationService.toastr.show({\n type: 'warning',\n message: 'Ingrese todos datos requeridos',\n });\n return;\n }\n if (this.isUpdate()) {\n const sendParams = {\n id: this.params.id,\n data: dataForm,\n };\n from(this.customerUseCase.update(sendParams)).subscribe(response => {\n this.notificationService.toastr.show({\n type: isSuccessResponse(response) ? 'success' : 'warning',\n message: `${response.message}`,\n });\n if (isSuccessResponse(response)) {\n this.dialogRef.close({\n id: this.params.id,\n });\n }\n });\n }\n if (this.isCreate()) {\n from(this.customerUseCase.create(dataForm)).subscribe(response => {\n this.notificationService.toastr.show({\n type: isSuccessResponse(response) ? 'success' : 'warning',\n message: `${response.message}`,\n });\n if (isSuccessResponse(response)) {\n this.dialogRef.close(response.data);\n }\n });\n }\n }\n close() {\n this.dialogRef.close();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: CustomerAddEditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.1\", type: CustomerAddEditComponent, isStandalone: true, selector: \"acp-customer-add-edit\", providers: [\n provideNativeDateAdapter(),\n {\n provide: CustomerUseCase,\n useFactory: () => new CustomerUseCase(new CustomerHttpRepository()),\n },\n {\n provide: CustomerExternalUseCase,\n useFactory: () => new CustomerExternalUseCase(new CustomerExternalHttpRepository()),\n },\n ], ngImport: i0, template: \"<mat-dialog-content>\\n <form\\n (ngSubmit)=\\\"onSave()\\\"\\n id=\\\"formCompanyCustomer\\\"\\n [formGroup]=\\\"customerForm\\\"\\n autocomplete=\\\"off\\\"\\n >\\n <mat-tab-group>\\n <mat-tab label=\\\"DATOS PRINCIPALES\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Identificaci\\u00F3n: </mat-label>\\n <mat-select\\n formControlName=\\\"idTipoIdentificacion\\\"\\n (selectionChange)=\\\"identificationTypeChange($event)\\\"\\n >\\n @for (item of tiposIdentificacion(); track $index) {\\n <mat-option [value]=\\\"item.idTipoIdentificacion\\\">{{\\n item.descripcion\\n }}</mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>N\\u00FAmero de Identificaci\\u00F3n</mat-label>\\n <input\\n type=\\\"text\\\"\\n matInput\\n (keydown.enter)=\\\"onKeyDownGovernmentId($event)\\\"\\n formControlName=\\\"numeroIdentificacion\\\"\\n />\\n @if (\\n numeroIdentificacionControl?.invalid &&\\n (numeroIdentificacionControl?.dirty || numeroIdentificacionControl?.touched)\\n ) {\\n @if (numeroIdentificacionControl?.hasError('required')) {\\n <mat-error> El n\\u00FAmero de identificaci\\u00F3n es obligatorio. </mat-error>\\n }\\n\\n @if (numeroIdentificacionControl?.hasError('minlength')) {\\n <mat-error>\\n Debe tener al menos\\n {{ numeroIdentificacionControl?.errors?.['minlength'].requiredLength }}\\n d\\u00EDgitos.\\n </mat-error>\\n }\\n @if (numeroIdentificacionControl?.hasError('maxlength')) {\\n <mat-error>\\n No puede tener m\\u00E1s de\\n {{ numeroIdentificacionControl?.errors?.['maxlength'].requiredLength }}\\n d\\u00EDgitos.\\n </mat-error>\\n }\\n @if (numeroIdentificacionControl?.hasError('pattern')) {\\n <mat-error> Solo se permiten caracteres num\\u00E9ricos. </mat-error>\\n }\\n @if (numeroIdentificacionControl?.hasError('endsWith001')) {\\n <mat-error> Los \\u00FAltimos tres d\\u00EDgitos deben ser 001. </mat-error>\\n }\\n }\\n\\n @if (showRefresh()) {\\n <ng-container matSuffix>\\n <button type=\\\"button\\\" mat-icon-button (click)=\\\"onKeyDownGovernmentId($event)\\\">\\n <mat-icon>refresh</mat-icon>\\n </button>\\n </ng-container>\\n }\\n </mat-form-field>\\n </div>\\n </div>\\n\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre Fiscal:</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n formControlName=\\\"nombreFiscal\\\"\\n id=\\\"nombreComercial\\\"\\n placeholder=\\\"Ej: TECNOMEGA\\\"\\n acpToUpperCase\\n />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre Comercial:</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n formControlName=\\\"nombreComercial\\\"\\n placeholder=\\\"Ej: TECNOMEGA\\\"\\n acpToUpperCase\\n type=\\\"text\\\"\\n />\\n </mat-form-field>\\n </div>\\n </div>\\n\\n <div>\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Direcci\\u00F3n:</mat-label>\\n <input\\n matInput\\n formControlName=\\\"direccion\\\"\\n placeholder=\\\"AV. 09 DE OCTUBRE...\\\"\\n acpToUpperCase\\n />\\n </mat-form-field>\\n </div>\\n\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-mat-input-chip [chips]=\\\"emails\\\" [labelText]=\\\"'Correo'\\\" />\\n </div>\\n <div class=\\\"col\\\">\\n <acp-mat-input-chip [chips]=\\\"telephones\\\" [labelText]=\\\"'Tel\\u00E9fono'\\\" />\\n </div>\\n </div>\\n\\n @if (isUpdate()) {\\n <div class=\\\"vstack gap-2 mt-2\\\">\\n <span>Estado</span>\\n <mat-slide-toggle formControlName=\\\"estado\\\">\\n {{ customerForm.value.estado ? 'Activo' : 'Inactivo' }}\\n </mat-slide-toggle>\\n </div>\\n }\\n </div>\\n </mat-tab>\\n <mat-tab label=\\\"DATOS ADICIONALES\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-mat-dynamic-card title=\\\"Informaci\\u00F3n B\\u00E1sica\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Contribuyente: </mat-label>\\n <mat-select formControlName=\\\"idSubContribuyente\\\">\\n @for (item of tipoContribuyentes(); track $index) {\\n <mat-option [value]=\\\"item.idSubContribuyente\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tiempo Cr\\u00E9dito: </mat-label>\\n <mat-select formControlName=\\\"idTiempoCredito\\\">\\n @for (item of tiemposCredito(); track $index) {\\n <mat-option [value]=\\\"item.idTiempoCredito\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Ciudad</mat-label>\\n <mat-select formControlName=\\\"idCiudad\\\">\\n <mat-option [value]=\\\"0\\\">-- Ninguno --</mat-option>\\n @for (group of ciudades(); track $index) {\\n <mat-optgroup [label]=\\\"group.nombre\\\">\\n @for (item of group.ciudades; track $index) {\\n <mat-option [value]=\\\"item.idCiudad\\\">{{ item.nombre }}</mat-option>\\n }\\n </mat-optgroup>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Cliente: </mat-label>\\n <mat-select formControlName=\\\"idTipoClienteProveedor\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n @for (item of tiposCliente(); track $index) {\\n <mat-option [value]=\\\"item.idTipoClienteProveedor\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Empresa: </mat-label>\\n <mat-select formControlName=\\\"idEmpresa\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of empresas(); track $index) {\\n <mat-option [value]=\\\"item.idEmpresa\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Fecha Nacimiento</mat-label>\\n <input matInput [matDatepicker]=\\\"birthDate\\\" formControlName=\\\"birthDate\\\" />\\n <mat-hint>MM/DD/YYYY</mat-hint>\\n <mat-datepicker-toggle\\n matIconSuffix\\n [for]=\\\"birthDate\\\"\\n ></mat-datepicker-toggle>\\n <mat-datepicker #birthDate></mat-datepicker>\\n @if (birthDateCtrl?.invalid && birthDateCtrl?.touched) {\\n <mat-error> Fecha inv\\u00E1lida </mat-error>\\n }\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-mat-dynamic-card>\\n </div>\\n <div class=\\\"col\\\">\\n <acp-mat-dynamic-card title=\\\"Informaci\\u00F3n Laboral\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Empleado: </mat-label>\\n <mat-select formControlName=\\\"idEmpleado\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of employees(); track $index) {\\n <mat-option [value]=\\\"item.idEmpleado\\\">\\n {{ item.nombreCompleto }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Cargo: </mat-label>\\n <mat-select formControlName=\\\"idCargo\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of cargos(); track $index) {\\n <mat-option [value]=\\\"item.idCargo\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Observaci\\u00F3n</mat-label>\\n <textarea matInput placeholder=\\\"...\\\" formControlName=\\\"nota\\\"></textarea>\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-mat-dynamic-card>\\n </div>\\n </div>\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-mat-dynamic-card title=\\\"Configuraci\\u00F3n Financiera\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-1 row-cols-xl-1 row-cols-lg-1 row-cols-md-1 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Forma de pago: </mat-label>\\n <mat-select formControlName=\\\"idFormaPagoSri\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of formasPagoSri(); track $index) {\\n <mat-option [value]=\\\"item.idFormaPagoSri\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <acp-mat-input-chip labelText=\\\"Placa\\\" [chips]=\\\"placas()\\\" />\\n </div>\\n\\n <div class=\\\"col w-100\\\">\\n <mat-checkbox formControlName=\\\"configValorBruto\\\"\\n >Activar configuraci\\u00F3n de valor bruto\\n <mat-icon\\n matTooltip=\\\"valor total de un bien o servicio sin incluir impuestos, deducciones o descuentos (uso dentro del reporte)\\\"\\n >info</mat-icon\\n ></mat-checkbox\\n >\\n </div>\\n </div>\\n </acp-mat-dynamic-card>\\n </div>\\n <div class=\\\"col\\\"></div>\\n </div>\\n </div>\\n </mat-tab>\\n <mat-tab label=\\\"INFORMACI\\u00D3N CREDITICIA\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-mat-dynamic-card title=\\\"Informaci\\u00F3n Personal\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n formGroupName=\\\"dataInfoCred\\\"\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Estado Civil: </mat-label>\\n <mat-select formControlName=\\\"maritalStatusId\\\">\\n <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n @for (item of maritalStatuses(); track $index) {\\n <mat-option [value]=\\\"item.id\\\">\\n {{ item.name }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Esposo(a):</mat-label>\\n <input\\n matInput\\n formControlName=\\\"conyugeNombre\\\"\\n placeholder=\\\"Nombre del c\\u00F3nyuge\\\"\\n />\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tel\\u00E9fono Personal:</mat-label>\\n <input matInput formControlName=\\\"conyugeTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tel\\u00E9fono Referencia:</mat-label>\\n <input matInput formControlName=\\\"refFamTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Referencia Familiar:</mat-label>\\n <input\\n matInput\\n formControlName=\\\"refFamNombre\\\"\\n placeholder=\\\"Nombre de referencia familiar\\\"\\n />\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-mat-dynamic-card>\\n </div>\\n <div class=\\\"col\\\">\\n <acp-mat-dynamic-card title=\\\"Informaci\\u00F3n de Vivienda\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n formGroupName=\\\"dataInfoCred\\\"\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo de Vivienda: </mat-label>\\n <mat-select formControlName=\\\"housingTypeId\\\">\\n <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n @for (item of housingTypes(); track $index) {\\n <mat-option [value]=\\\"item.id\\\">\\n {{ item.name }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Sector:</mat-label>\\n <input matInput formControlName=\\\"sector\\\" placeholder=\\\"Nombre del sector\\\" />\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Barrio:</mat-label>\\n <input matInput formControlName=\\\"barrio\\\" placeholder=\\\"Nombre del barrio\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Calle:</mat-label>\\n <input matInput formControlName=\\\"calle\\\" placeholder=\\\"Nombre de la calle\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Direcci\\u00F3n Completa</mat-label>\\n <textarea\\n matInput\\n formControlName=\\\"dirVivienda\\\"\\n placeholder=\\\"Direcci\\u00F3n completa de la vivienda (Sector, Barrio y Calle)\\\"\\n ></textarea>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Descripci\\u00F3n del Punto de Referencia:</mat-label>\\n <textarea\\n matInput\\n formControlName=\\\"refDomicilio\\\"\\n placeholder=\\\"Descripci\\u00F3n detallada del punto de referencia\\\"\\n ></textarea>\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-mat-dynamic-card>\\n </div>\\n </div>\\n </div>\\n </mat-tab>\\n </mat-tab-group>\\n </form>\\n</mat-dialog-content>\\n<mat-dialog-actions>\\n <acp-mat-theme-button type=\\\"submit\\\" form=\\\"formCompanyCustomer\\\" [text]=\\\"btnText()\\\" />\\n<<<<<<<< HEAD:projects/acontplus-ui-components/src/lib/customers-ui/client/client-add-edit/client-add-edit.component.html\\n <acp-mat-theme-button type=\\\"button\\\" variant=\\\"dark\\\" text=\\\"Cerrar\\\" (handleClick)=\\\"close()\\\" />\\n========\\n>>>>>>>> e8b4dd251833a4e8d200bdc036806a3191730767:packages/ng-customer/src/lib/ui/components/customer-add-edit/customer-add-edit.component.html\\n</mat-dialog-actions>\\n\", styles: [\"\"], dependencies: [{ kind: \"directive\", type: MatDialogContent, selector: \"[mat-dialog-content], mat-dialog-content, [matDialogContent]\" }, { kind: \"directive\", type: MatDialogActions, selector: \"[mat-dialog-actions], mat-dialog-actions, [matDialogActions]\", inputs: [\"align\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i1.MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i2.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i2.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"directive\", type: i2.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"directive\", type: i2.FormGroupName, selector: \"[formGroupName]\", inputs: [\"formGroupName\"] }, { kind: \"ngmodule\", type: MatTabsModule }, { kind: \"component\", type: i3.MatTab, selector: \"mat-tab\", inputs: [\"disabled\", \"label\", \"aria-label\", \"aria-labelledby\", \"labelClass\", \"bodyClass\", \"id\"], exportAs: [\"matTab\"] }, { kind: \"component\", type: i3.MatTabGroup, selector: \"mat-tab-group\", inputs: [\"color\", \"fitInkBarToContent\", \"mat-stretch-tabs\", \"mat-align-tabs\", \"dynamicHeight\", \"selectedIndex\", \"headerPosition\", \"animationDuration\", \"contentTabIndex\", \"disablePagination\", \"disableRipple\", \"preserveContent\", \"backgroundColor\", \"aria-label\", \"aria-labelledby\"], outputs: [\"selectedIndexChange\", \"focusChange\", \"animationDone\", \"selectedTabChange\"], exportAs: [\"matTabGroup\"] }, { kind: \"ngmodule\", type: MatFormFieldModule }, { kind: \"component\", type: i4.MatFormField, selector: \"mat-form-field\", inputs: [\"hideRequiredMarker\", \"color\", \"floatLabel\", \"appearance\", \"subscriptSizing\", \"hintLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i4.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i4.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i4.MatError, selector: \"mat-error, [matError]\", inputs: [\"id\"] }, { kind: \"directive\", type: i4.MatSuffix, selector: \"[matSuffix], [matIconSuffix], [matTextSuffix]\", inputs: [\"matTextSuffix\"] }, { kind: \"ngmodule\", type: MatInputModule }, { kind: \"directive\", type: i5.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\", \"disabledInteractive\"], exportAs: [\"matInput\"] }, { kind: \"ngmodule\", type: MatSelectModule }, { kind: \"component\", type: i6.MatSelect, selector: \"mat-select\", inputs: [\"aria-describedby\", \"panelClass\", \"disabled\", \"disableRipple\", \"tabIndex\", \"hideSingleSelectionIndicator\", \"placeholder\", \"required\", \"multiple\", \"disableOptionCentering\", \"compareWith\", \"value\", \"aria-label\", \"aria-labelledby\", \"errorStateMatcher\", \"typeaheadDebounceInterval\", \"sortComparator\", \"id\", \"panelWidth\", \"canSelectNullableOptions\"], outputs: [\"openedChange\", \"opened\", \"closed\", \"selectionChange\", \"valueChange\"], exportAs: [\"matSelect\"] }, { kind: \"component\", type: i6.MatOption, selector: \"mat-option\", inputs: [\"value\", \"id\", \"disabled\"], outputs: [\"onSelectionChange\"], exportAs: [\"matOption\"] }, { kind: \"component\", type: i6.MatOptgroup, selector: \"mat-optgroup\", inputs: [\"label\", \"disabled\"], exportAs: [\"matOptgroup\"] }, { kind: \"ngmodule\", type: MatSlideToggleModule }, { kind: \"component\", type: i7.MatSlideToggle, selector: \"mat-slide-toggle\", inputs: [\"name\", \"id\", \"labelPosition\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"required\", \"color\", \"disabled\", \"disableRipple\", \"tabIndex\", \"checked\", \"hideIcon\", \"disabledInteractive\"], outputs: [\"change\", \"toggleChange\"], exportAs: [\"matSlideToggle\"] }, { kind: \"component\", type: MatInputChipComponent, selector: \"acp-mat-input-chip\", inputs: [\"chips\", \"labelText\", \"placelholder\"] }, { kind: \"directive\", type: ToUpperCaseDirective, selector: \"[acpToUpperCase]\" }, { kind: \"component\", type: MatCheckbox, selector: \"mat-checkbox\", inputs: [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-expanded\", \"aria-controls\", \"aria-owns\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"disableRipple\", \"tabIndex\", \"color\", \"disabledInteractive\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: MatTooltip, selector: \"[matTooltip]\", inputs: [\"matTooltipPosition\", \"matTooltipPositionAtOrigin\", \"matTooltipDisabled\", \"matTooltipShowDelay\", \"matTooltipHideDelay\", \"matTooltipTouchGestures\", \"matTooltip\", \"matTooltipClass\"], exportAs: [\"matTooltip\"] }, { kind: \"ngmodule\", type: MatDatepickerModule }, { kind: \"component\", type: i8.MatDatepicker, selector: \"mat-datepicker\", exportAs: [\"matDatepicker\"] }, { kind: \"directive\", type: i8.MatDatepickerInput, selector: \"input[matDatepicker]\", inputs: [\"matDatepicker\", \"min\", \"max\", \"matDatepickerFilter\"], exportAs: [\"matDatepickerInput\"] }, { kind: \"component\", type: i8.MatDatepickerToggle, selector: \"mat-datepicker-toggle\", inputs: [\"for\", \"tabIndex\", \"aria-label\", \"disabled\", \"disableRipple\"], exportAs: [\"matDatepickerToggle\"] }, { kind: \"component\", type: MatThemeButtonComponent, selector: \"acp-mat-theme-button\", inputs: [\"variant\", \"text\", \"icon\", \"outlined\", \"disabled\", \"useThemeColor\", \"type\", \"matStyle\", \"title\", \"ariaLabel\", \"name\", \"id\", \"form\", \"tabIndex\", \"testId\"], outputs: [\"handleClick\"] }, { kind: \"component\", type: MatDynamicCardComponent, selector: \"acp-mat-dynamic-card\", inputs: [\"cardTitle\", \"cardSubtitle\", \"avatarImageUrl\", \"isHeaderVisible\", \"contentPadding\", \"hasDivider\", \"areActionsVisible\", \"primaryButtonText\", \"secondaryButtonText\", \"primaryButtonIcon\", \"secondaryButtonIcon\", \"buttonsPosition\"], outputs: [\"primaryButtonClicked\", \"secondaryButtonClicked\", \"cardClicked\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: CustomerAddEditComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-customer-add-edit', imports: [\n MatDialogContent,\n MatDialogActions,\n MatButtonModule,\n ReactiveFormsModule,\n MatTabsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatSlideToggleModule,\n MatInputChipComponent,\n ToUpperCaseDirective,\n MatCheckbox,\n MatIcon,\n MatTooltip,\n MatDatepickerModule,\n MatThemeButtonComponent,\n MatDynamicCardComponent,\n ], providers: [\n provideNativeDateAdapter(),\n {\n provide: CustomerUseCase,\n useFactory: () => new CustomerUseCase(new CustomerHttpRepository()),\n },\n {\n provide: CustomerExternalUseCase,\n useFactory: () => new CustomerExternalUseCase(new CustomerExternalHttpRepository()),\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-dialog-content>\\n <form\\n (ngSubmit)=\\\"onSave()\\\"\\n id=\\\"formCompanyCustomer\\\"\\n [formGroup]=\\\"customerForm\\\"\\n autocomplete=\\\"off\\\"\\n >\\n <mat-tab-group>\\n <mat-tab label=\\\"DATOS PRINCIPALES\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Identificaci\\u00F3n: </mat-label>\\n <mat-select\\n formControlName=\\\"idTipoIdentificacion\\\"\\n (selectionChange)=\\\"identificationTypeChange($event)\\\"\\n >\\n @for (item of tiposIdentificacion(); track $index) {\\n <mat-option [value]=\\\"item.idTipoIdentificacion\\\">{{\\n item.descripcion\\n }}</mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>N\\u00FAmero de Identificaci\\u00F3n</mat-label>\\n <input\\n type=\\\"text\\\"\\n matInput\\n (keydown.enter)=\\\"onKeyDownGovernmentId($event)\\\"\\n formControlName=\\\"numeroIdentificacion\\\"\\n />\\n @if (\\n numeroIdentificacionControl?.invalid &&\\n (numeroIdentificacionControl?.dirty || numeroIdentificacionControl?.touched)\\n ) {\\n @if (numeroIdentificacionControl?.hasError('required')) {\\n <mat-error> El n\\u00FAmero de identificaci\\u00F3n es obligatorio. </mat-error>\\n }\\n\\n @if (numeroIdentificacionControl?.hasError('minlength')) {\\n <mat-error>\\n Debe tener al menos\\n {{ numeroIdentificacionControl?.errors?.['minlength'].requiredLength }}\\n d\\u00EDgitos.\\n </mat-error>\\n }\\n @if (numeroIdentificacionControl?.hasError('maxlength')) {\\n <mat-error>\\n No puede tener m\\u00E1s de\\n {{ numeroIdentificacionControl?.errors?.['maxlength'].requiredLength }}\\n d\\u00EDgitos.\\n </mat-error>\\n }\\n @if (numeroIdentificacionControl?.hasError('pattern')) {\\n <mat-error> Solo se permiten caracteres num\\u00E9ricos. </mat-error>\\n }\\n @if (numeroIdentificacionControl?.hasError('endsWith001')) {\\n <mat-error> Los \\u00FAltimos tres d\\u00EDgitos deben ser 001. </mat-error>\\n }\\n }\\n\\n @if (showRefresh()) {\\n <ng-container matSuffix>\\n <button type=\\\"button\\\" mat-icon-button (click)=\\\"onKeyDownGovernmentId($event)\\\">\\n <mat-icon>refresh</mat-icon>\\n </button>\\n </ng-container>\\n }\\n </mat-form-field>\\n </div>\\n </div>\\n\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre Fiscal:</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n formControlName=\\\"nombreFiscal\\\"\\n id=\\\"nombreComercial\\\"\\n placeholder=\\\"Ej: TECNOMEGA\\\"\\n acpToUpperCase\\n />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre Comercial:</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n formControlName=\\\"nombreComercial\\\"\\n placeholder=\\\"Ej: TECNOMEGA\\\"\\n acpToUpperCase\\n type=\\\"text\\\"\\n />\\n </mat-form-field>\\n </div>\\n </div>\\n\\n <div>\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Direcci\\u00F3n:</mat-label>\\n <input\\n matInput\\n formControlName=\\\"direccion\\\"\\n placeholder=\\\"AV. 09 DE OCTUBRE...\\\"\\n acpToUpperCase\\n />\\n </mat-form-field>\\n </div>\\n\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-mat-input-chip [chips]=\\\"emails\\\" [labelText]=\\\"'Correo'\\\" />\\n </div>\\n <div class=\\\"col\\\">\\n <acp-mat-input-chip [chips]=\\\"telephones\\\" [labelText]=\\\"'Tel\\u00E9fono'\\\" />\\n </div>\\n </div>\\n\\n @if (isUpdate()) {\\n <div class=\\\"vstack gap-2 mt-2\\\">\\n <span>Estado</span>\\n <mat-slide-toggle formControlName=\\\"estado\\\">\\n {{ customerForm.value.estado ? 'Activo' : 'Inactivo' }}\\n </mat-slide-toggle>\\n </div>\\n }\\n </div>\\n </mat-tab>\\n <mat-tab label=\\\"DATOS ADICIONALES\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-mat-dynamic-card title=\\\"Informaci\\u00F3n B\\u00E1sica\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Contribuyente: </mat-label>\\n <mat-select formControlName=\\\"idSubContribuyente\\\">\\n @for (item of tipoContribuyentes(); track $index) {\\n <mat-option [value]=\\\"item.idSubContribuyente\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tiempo Cr\\u00E9dito: </mat-label>\\n <mat-select formControlName=\\\"idTiempoCredito\\\">\\n @for (item of tiemposCredito(); track $index) {\\n <mat-option [value]=\\\"item.idTiempoCredito\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Ciudad</mat-label>\\n <mat-select formControlName=\\\"idCiudad\\\">\\n <mat-option [value]=\\\"0\\\">-- Ninguno --</mat-option>\\n @for (group of ciudades(); track $index) {\\n <mat-optgroup [label]=\\\"group.nombre\\\">\\n @for (item of group.ciudades; track $index) {\\n <mat-option [value]=\\\"item.idCiudad\\\">{{ item.nombre }}</mat-option>\\n }\\n </mat-optgroup>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo Cliente: </mat-label>\\n <mat-select formControlName=\\\"idTipoClienteProveedor\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n @for (item of tiposCliente(); track $index) {\\n <mat-option [value]=\\\"item.idTipoClienteProveedor\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Empresa: </mat-label>\\n <mat-select formControlName=\\\"idEmpresa\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of empresas(); track $index) {\\n <mat-option [value]=\\\"item.idEmpresa\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Fecha Nacimiento</mat-label>\\n <input matInput [matDatepicker]=\\\"birthDate\\\" formControlName=\\\"birthDate\\\" />\\n <mat-hint>MM/DD/YYYY</mat-hint>\\n <mat-datepicker-toggle\\n matIconSuffix\\n [for]=\\\"birthDate\\\"\\n ></mat-datepicker-toggle>\\n <mat-datepicker #birthDate></mat-datepicker>\\n @if (birthDateCtrl?.invalid && birthDateCtrl?.touched) {\\n <mat-error> Fecha inv\\u00E1lida </mat-error>\\n }\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-mat-dynamic-card>\\n </div>\\n <div class=\\\"col\\\">\\n <acp-mat-dynamic-card title=\\\"Informaci\\u00F3n Laboral\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Empleado: </mat-label>\\n <mat-select formControlName=\\\"idEmpleado\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of employees(); track $index) {\\n <mat-option [value]=\\\"item.idEmpleado\\\">\\n {{ item.nombreCompleto }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Cargo: </mat-label>\\n <mat-select formControlName=\\\"idCargo\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of cargos(); track $index) {\\n <mat-option [value]=\\\"item.idCargo\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Observaci\\u00F3n</mat-label>\\n <textarea matInput placeholder=\\\"...\\\" formControlName=\\\"nota\\\"></textarea>\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-mat-dynamic-card>\\n </div>\\n </div>\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-mat-dynamic-card title=\\\"Configuraci\\u00F3n Financiera\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n class=\\\"row row-cols-xxl-1 row-cols-xl-1 row-cols-lg-1 row-cols-md-1 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Forma de pago: </mat-label>\\n <mat-select formControlName=\\\"idFormaPagoSri\\\">\\n <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n @for (item of formasPagoSri(); track $index) {\\n <mat-option [value]=\\\"item.idFormaPagoSri\\\">\\n {{ item.descripcion }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <acp-mat-input-chip labelText=\\\"Placa\\\" [chips]=\\\"placas()\\\" />\\n </div>\\n\\n <div class=\\\"col w-100\\\">\\n <mat-checkbox formControlName=\\\"configValorBruto\\\"\\n >Activar configuraci\\u00F3n de valor bruto\\n <mat-icon\\n matTooltip=\\\"valor total de un bien o servicio sin incluir impuestos, deducciones o descuentos (uso dentro del reporte)\\\"\\n >info</mat-icon\\n ></mat-checkbox\\n >\\n </div>\\n </div>\\n </acp-mat-dynamic-card>\\n </div>\\n <div class=\\\"col\\\"></div>\\n </div>\\n </div>\\n </mat-tab>\\n <mat-tab label=\\\"INFORMACI\\u00D3N CREDITICIA\\\">\\n <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n <div\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n >\\n <div class=\\\"col\\\">\\n <acp-mat-dynamic-card title=\\\"Informaci\\u00F3n Personal\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n formGroupName=\\\"dataInfoCred\\\"\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Estado Civil: </mat-label>\\n <mat-select formControlName=\\\"maritalStatusId\\\">\\n <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n @for (item of maritalStatuses(); track $index) {\\n <mat-option [value]=\\\"item.id\\\">\\n {{ item.name }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Esposo(a):</mat-label>\\n <input\\n matInput\\n formControlName=\\\"conyugeNombre\\\"\\n placeholder=\\\"Nombre del c\\u00F3nyuge\\\"\\n />\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tel\\u00E9fono Personal:</mat-label>\\n <input matInput formControlName=\\\"conyugeTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tel\\u00E9fono Referencia:</mat-label>\\n <input matInput formControlName=\\\"refFamTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Referencia Familiar:</mat-label>\\n <input\\n matInput\\n formControlName=\\\"refFamNombre\\\"\\n placeholder=\\\"Nombre de referencia familiar\\\"\\n />\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-mat-dynamic-card>\\n </div>\\n <div class=\\\"col\\\">\\n <acp-mat-dynamic-card title=\\\"Informaci\\u00F3n de Vivienda\\\" [isHeaderVisible]=\\\"true\\\">\\n <div\\n formGroupName=\\\"dataInfoCred\\\"\\n class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n >\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Tipo de Vivienda: </mat-label>\\n <mat-select formControlName=\\\"housingTypeId\\\">\\n <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n @for (item of housingTypes(); track $index) {\\n <mat-option [value]=\\\"item.id\\\">\\n {{ item.name }}\\n </mat-option>\\n }\\n </mat-select>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Sector:</mat-label>\\n <input matInput formControlName=\\\"sector\\\" placeholder=\\\"Nombre del sector\\\" />\\n </mat-form-field>\\n </div>\\n\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Barrio:</mat-label>\\n <input matInput formControlName=\\\"barrio\\\" placeholder=\\\"Nombre del barrio\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Calle:</mat-label>\\n <input matInput formControlName=\\\"calle\\\" placeholder=\\\"Nombre de la calle\\\" />\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Direcci\\u00F3n Completa</mat-label>\\n <textarea\\n matInput\\n formControlName=\\\"dirVivienda\\\"\\n placeholder=\\\"Direcci\\u00F3n completa de la vivienda (Sector, Barrio y Calle)\\\"\\n ></textarea>\\n </mat-form-field>\\n </div>\\n <div class=\\\"col w-100\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Descripci\\u00F3n del Punto de Referencia:</mat-label>\\n <textarea\\n matInput\\n formControlName=\\\"refDomicilio\\\"\\n placeholder=\\\"Descripci\\u00F3n detallada del punto de referencia\\\"\\n ></textarea>\\n </mat-form-field>\\n </div>\\n </div>\\n </acp-mat-dynamic-card>\\n </div>\\n </div>\\n </div>\\n </mat-tab>\\n </mat-tab-group>\\n </form>\\n</mat-dialog-content>\\n<mat-dialog-actions>\\n <acp-mat-theme-button type=\\\"submit\\\" form=\\\"formCompanyCustomer\\\" [text]=\\\"btnText()\\\" />\\n<<<<<<<< HEAD:projects/acontplus-ui-components/src/lib/customers-ui/client/client-add-edit/client-add-edit.component.html\\n <acp-mat-theme-button type=\\\"button\\\" variant=\\\"dark\\\" text=\\\"Cerrar\\\" (handleClick)=\\\"close()\\\" />\\n========\\n>>>>>>>> e8b4dd251833a4e8d200bdc036806a3191730767:packages/ng-customer/src/lib/ui/components/customer-add-edit/customer-add-edit.component.html\\n</mat-dialog-actions>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItYWRkLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi91aS9jb21wb25lbnRzL2N1c3RvbWVyLWFkZC1lZGl0L2N1c3RvbWVyLWFkZC1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvdWkvY29tcG9uZW50cy9jdXN0b21lci1hZGQtZWRpdC9jdXN0b21lci1hZGQtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFlBQVksR0FDYixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUN4QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxtQkFBbUIsRUFFbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5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QUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxVQUFVO3dCQUNWLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7cUJBQ3hCLGFBR1U7d0JBQ1Qsd0JBQXdCLEVBQUU7d0JBQzFCOzRCQUNFLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO3lCQUNwRTt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsdUJBQXVCOzRCQUNoQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLDhCQUE4QixFQUFFLENBQUM7eUJBQ3BGO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBzaWduYWwsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvbnRwbHVzL25nLW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHtcbiAgTUFUX0RJQUxPR19EQVRBLFxuICBNYXREaWFsb2dBY3Rpb25zLFxuICBNYXREaWFsb2dDb250ZW50LFxuICBNYXREaWFsb2dSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge1xuICBNYXREeW5hbWljQ2FyZENvbXBvbmVudCxcbiAgTWF0SW5wdXRDaGlwQ29tcG9uZW50LFxuICBNYXRUaGVtZUJ1dHRvbkNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb250cGx1cy9uZy1jb21wb25lbnRzJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UsIE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IHByb3ZpZGVOYXRpdmVEYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtcbiAgU0VQQVJBRE9SRVNfUkVHRVgsXG4gIFNFUEFSQVRPUl9LRVlfQ09ERSxcbiAgU1JJX0RPQ1VNRU5UX1RZUEUsXG4gIGlzU3VjY2Vzc1Jlc3BvbnNlLFxufSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgVG9VcHBlckNhc2VEaXJlY3RpdmUgfSBmcm9tICdAYWNvbnRwbHVzL25nLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ3VzdG9tZXJVc2VDYXNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwbGljYXRpb24vdXNlLWNhc2VzL2N1c3RvbWVyLnVzZS1jYXNlJztcbmltcG9ydCB7IEN1c3RvbWVyRXh0ZXJuYWxVc2VDYXNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwbGljYXRpb24vdXNlLWNhc2VzL2N1c3RvbWVyLWV4dGVybmFsLnVzZS1jYXNlJztcbmltcG9ydCB7IEN1c3RvbWVySHR0cFJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi8uLi9pbmZyYXN0cnVjdHVyZS9yZXBvc2l0b3JpZXMvY3VzdG9tZXItaHR0cC5yZXBvc2l0b3J5JztcbmltcG9ydCB7IEN1c3RvbWVyRXh0ZXJuYWxIdHRwUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uLy4uL2luZnJhc3RydWN0dXJlL3JlcG9zaXRvcmllcy9jdXN0b21lci1leHRlcm5hbC1odHRwLnJlcG9zaXRvcnknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3AtY3VzdG9tZXItYWRkLWVkaXQnLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0RGlhbG9nQ29udGVudCxcbiAgICBNYXREaWFsb2dBY3Rpb25zLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXRJbnB1dENoaXBDb21wb25lbnQsXG4gICAgVG9VcHBlckNhc2VEaXJlY3RpdmUsXG4gICAgTWF0Q2hlY2tib3gsXG4gICAgTWF0SWNvbixcbiAgICBNYXRUb29sdGlwLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0VGhlbWVCdXR0b25Db21wb25lbnQsXG4gICAgTWF0RHluYW1pY0NhcmRDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b21lci1hZGQtZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jdXN0b21lci1hZGQtZWRpdC5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIHByb3ZpZGVOYXRpdmVEYXRlQWRhcHRlcigpLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEN1c3RvbWVyVXNlQ2FzZSxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IG5ldyBDdXN0b21lclVzZUNhc2UobmV3IEN1c3RvbWVySHR0cFJlcG9zaXRvcnkoKSksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBDdXN0b21lckV4dGVybmFsVXNlQ2FzZSxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IG5ldyBDdXN0b21lckV4dGVybmFsVXNlQ2FzZShuZXcgQ3VzdG9tZXJFeHRlcm5hbEh0dHBSZXBvc2l0b3J5KCkpLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21lckFkZEVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8Q3VzdG9tZXJBZGRFZGl0Q29tcG9uZW50Pik7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tZXJVc2VDYXNlID0gaW5qZWN0KEN1c3RvbWVyVXNlQ2FzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tZXJFeHRlcm5hbFVzZUNhc2UgPSBpbmplY3QoQ3VzdG9tZXJFeHRlcm5hbFVzZUNhc2UpO1xuICBidG5UZXh0ID0gc2lnbmFsKCdHdWFyZGFyJyk7XG5cbiAgcmVhZG9ubHkgcGFyYW1zT3B0aW9ucyA9IGluamVjdDx7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBkZXNjcmlwY2lvbjogbnVsbCB8IHN0cmluZztcbiAgICBkYXRhT2ZTcmk/OiBib29sZWFuO1xuICAgIG51bWVyb0lkZW50aWZpY2FjaW9uPzogc3RyaW5nO1xuICAgIGNvZGlnb1NyaT86IHN0cmluZztcbiAgICBkYXRhOiBhbnk7XG4gIH0+KE1BVF9ESUFMT0dfREFUQSk7XG5cbiAgcmVhZG9ubHkgcGFyYW1zID0gdGhpcy5wYXJhbXNPcHRpb25zLmRhdGE7XG5cbiAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gIHRpdGxlID0gJ051ZXZvIENsaWVudGUnO1xuXG4gIGxvYWRpbmcgPSBmYWxzZTtcblxuICBlbWFpbHM6IHN0cmluZ1tdID0gW107XG5cbiAgdGVsZXBob25lczogc3RyaW5nW10gPSBbXTtcbiAgdGllbXBvc0NyZWRpdG8gPSBzaWduYWw8YW55W10+KFtdKTtcbiAgdGlwb0NvbnRyaWJ1eWVudGVzID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIHRpcG9zQ2xpZW50ZSA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICB0aXBvc0lkZW50aWZpY2FjaW9uID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIGZvcm1hc1BhZ29TcmkgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgcGxhY2FzID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIGNpdWRhZGVzID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIGNhcmdvcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICBlbXByZXNhcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICBlbXBsb3llZXMgPSBzaWduYWw8YW55W10+KFtdKTtcblxuICBtYXJpdGFsU3RhdHVzZXMgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgaG91c2luZ1R5cGVzID0gc2lnbmFsPGFueVtdPihbXSk7XG5cbiAgc2hvd1JlZnJlc2ggPSBzaWduYWwodHJ1ZSk7XG5cbiAgZW5kc1dpdGgwMDFWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoID49IDMpIHtcbiAgICAgIGlmICghdmFsdWUuZW5kc1dpdGgoJzAwMScpKSB7XG4gICAgICAgIHJldHVybiB7IGVuZHNXaXRoMDAxOiB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGN1c3RvbWVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIGRpcmVjY2lvbjogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICBpZENhcmdvOiBuZXcgRm9ybUNvbnRyb2woMCksXG4gICAgaWRDbGllbnRlOiBuZXcgRm9ybUNvbnRyb2woMCksXG4gICAgaWRFbXByZXNhOiBuZXcgRm9ybUNvbnRyb2woMCksXG4gICAgaWRGb3JtYVBhZ29Tcmk6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KDApLFxuICAgIGlkVGlwb0NsaWVudGVQcm92ZWVkb3I6IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICBpZFRpcG9FbnRpZGFkOiBuZXcgRm9ybUNvbnRyb2woMCksXG4gICAgaWRDaXVkYWQ6IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICBpZEVtcGxlYWRvOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgdW5kZWZpbmVkPigwKSxcbiAgICBub21icmVGaXNjYWw6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgbm9tYnJlQ29tZXJjaWFsOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgIG51bWVyb0lkZW50aWZpY2FjaW9uOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiBmYWxzZSB9LCBbXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTMpLFxuICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTMpLFxuICAgICAgdGhpcy5lbmRzV2l0aDAwMVZhbGlkYXRvcixcbiAgICBdKSxcbiAgICBjb3JyZW86IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgdGVsZWZvbm86IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgcGxhY2E6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgbm90YTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICBlc3RhZG86IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXG4gICAgYmlydGhEYXRlOiBuZXcgRm9ybUNvbnRyb2w8RGF0ZSB8IG51bGw+KG51bGwpLFxuICAgIHZhbGlkYXRpb25Tcmk6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXG4gICAgY29uZmlnVmFsb3JCcnV0bzogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcbiAgICBkYXRhSW5mb0NyZWQ6IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgbWFyaXRhbFN0YXR1c0lkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCksXG4gICAgICBjb255dWdlTm9tYnJlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICBjb255dWdlVGVsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICByZWZGYW1Ob21icmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgIHJlZkZhbVRlbDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgaG91c2luZ1R5cGVJZDogbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwpLFxuICAgICAgZGlyVml2aWVuZGE6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgIHJlZkRvbWljaWxpbzogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgc2VjdG9yOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICBiYXJyaW86IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgIGNhbGxlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgfSksXG4gIH0pO1xuXG4gIGdldEN1c3RvbWVyKGNvZGlnbzogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICB2YWxpZGF0aW9uU3JpOiBmYWxzZSxcbiAgICB9KTtcbiAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLmNoZWNrRXhpc3RlbmNlKGlkKSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmIChpc1N1Y2Nlc3NSZXNwb25zZShyZXNwb25zZSkgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICBhbGVydCgnRWwgY2xpZW50ZSB5YSBzZSBlbmN1ZW50cmEgcmVnaXN0cmFkbyBlbiBzdSBlbXByZXNhJyk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdHIuc2hvdyh7XG4gICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdFbCBjbGllbnRlIHlhIHNlIGVuY3VlbnRyYSByZWdpc3RyYWRvIGVuIHN1IGVtcHJlc2EnLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7IG51bWVyb0lkZW50aWZpY2FjaW9uOiBudWxsIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChjb2RpZ28gPT09IFNSSV9ET0NVTUVOVF9UWVBFLlBBU1NQT1JUKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tZXJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHZhbGlkYXRpb25Tcmk6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmcm9tKHRoaXMuY3VzdG9tZXJFeHRlcm5hbFVzZUNhc2UuZ2V0QnlJZChpZCkpLnN1YnNjcmliZShzZWNvbmRSZXNwb25zZSA9PiB7XG4gICAgICAgIGlmICghaXNTdWNjZXNzUmVzcG9uc2Uoc2Vjb25kUmVzcG9uc2UpIHx8ICFzZWNvbmRSZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0ci5zaG93KHtcbiAgICAgICAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcgIE5vIHNlIGVuY29udHLDsyBpbmZvcm1hY2nDs24gZW4gZWwgU1JJJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHBob25lLFxuICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgIGlkQ2FyZCwgLy8gbnVtZXJvUnVjXG4gICAgICAgICAgYnVzaW5lc3NOYW1lLCAvLyByYXpvblNvY2lhbFxuICAgICAgICAgIGFkZHJlc3MsIC8vIGRpcmVjY2lvblxuICAgICAgICB9ID0gc2Vjb25kUmVzcG9uc2UuZGF0YSBhcyBhbnk7XG5cbiAgICAgICAgaWYgKHBob25lICYmIHR5cGVvZiBwaG9uZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLnRlbGVwaG9uZXMgPSBwaG9uZS5zcGxpdChTRVBBUkFET1JFU19SRUdFWCkgfHwgW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVtYWlsICYmIHR5cGVvZiBlbWFpbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLmVtYWlscyA9IGVtYWlsLnNwbGl0KFNFUEFSQURPUkVTX1JFR0VYKSB8fCBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWRDYXJkKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICBudW1lcm9JZGVudGlmaWNhY2lvbjogaWRDYXJkLFxuICAgICAgICAgICAgbm9tYnJlRmlzY2FsOiBidXNpbmVzc05hbWUsXG4gICAgICAgICAgICB2YWxpZGF0aW9uU3JpOiB0cnVlLFxuICAgICAgICAgICAgZGlyZWNjaW9uOiBhZGRyZXNzLFxuICAgICAgICAgICAgbm9tYnJlQ29tZXJjaWFsOiBidXNpbmVzc05hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TG9hZERhdGEoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy5pc1VwZGF0ZSgpKSB7XG4gICAgICByZXR1cm4gZm9ya0pvaW4oW1xuICAgICAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLmdldEZvcm1EYXRhKCkpLFxuICAgICAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLmdldEJ5SWQodGhpcy5wYXJhbXMuaWQpKSxcbiAgICAgIF0pO1xuICAgIH1cbiAgICByZXR1cm4gZnJvbSh0aGlzLmN1c3RvbWVyVXNlQ2FzZS5nZXRGb3JtRGF0YSgpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmdldExvYWREYXRhKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgbGV0IG1haW5EYXRhRm9ybSA9IHt9IGFzIGFueTtcbiAgICAgICAgbGV0IGRhdGFDb21wYW55Q3VzdG9tZXIgPSB7fSBhcyBhbnk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3BvbnNlKSkge1xuICAgICAgICAgIG1haW5EYXRhRm9ybSA9IHJlc3BvbnNlWzBdLmRhdGE7XG4gICAgICAgICAgZGF0YUNvbXBhbnlDdXN0b21lciA9IHJlc3BvbnNlWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1haW5EYXRhRm9ybSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRpcG9zSWRlbnRpZmljYWNpb24uc2V0KG1haW5EYXRhRm9ybS50aXBvSWRlbnRpZmljYWNpb24pO1xuICAgICAgICB0aGlzLnRpZW1wb3NDcmVkaXRvLnNldChtYWluRGF0YUZvcm0udGllbXBvQ3JlZGl0b3MpO1xuICAgICAgICB0aGlzLnRpcG9Db250cmlidXllbnRlcy5zZXQobWFpbkRhdGFGb3JtLnRpcG9Db250cmlidXllbnRlcyk7XG4gICAgICAgIHRoaXMuZm9ybWFzUGFnb1NyaS5zZXQobWFpbkRhdGFGb3JtLmZvcm1hc1BhZ29TcmkpO1xuICAgICAgICB0aGlzLnRpcG9zQ2xpZW50ZS5zZXQobWFpbkRhdGFGb3JtLnRpcG9zQ2xpZW50ZSk7XG4gICAgICAgIHRoaXMuY2l1ZGFkZXMuc2V0KG1haW5EYXRhRm9ybS5jaXVkYWRlcyk7XG4gICAgICAgIHRoaXMuY2FyZ29zLnNldChtYWluRGF0YUZvcm0uY2FyZ29zKTtcbiAgICAgICAgdGhpcy5lbXByZXNhcy5zZXQobWFpbkRhdGFGb3JtLmVtcHJlc2FzKTtcbiAgICAgICAgdGhpcy5lbXBsb3llZXMuc2V0KG1haW5EYXRhRm9ybS5lbXBsb3llZXMpO1xuICAgICAgICB0aGlzLm1hcml0YWxTdGF0dXNlcy5zZXQobWFpbkRhdGFGb3JtLm1hcml0YWxTdGF0dXNlcyk7XG4gICAgICAgIHRoaXMuaG91c2luZ1R5cGVzLnNldChtYWluRGF0YUZvcm0uaG91c2luZ1R5cGVzKTtcblxuICAgICAgICBpZiAodGhpcy5pc0RhdGFPZlNyaSgpKSB7XG4gICAgICAgICAgY29uc3QgeyBjb2RpZ29TcmksIG51bWVyb0lkZW50aWZpY2FjaW9uIH0gPSB0aGlzLnBhcmFtcztcblxuICAgICAgICAgIGNvbnN0IGRhdGFJZGVudGlmaWNhY2lvbiA9IHRoaXMudGlwb3NJZGVudGlmaWNhY2lvbigpLmZpbmQoXG4gICAgICAgICAgICAodGk6IGFueSkgPT4gdGkuY29kaWdvU3JpID09PSBjb2RpZ29TcmksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChkYXRhSWRlbnRpZmljYWNpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGlkVGlwb0lkZW50aWZpY2FjaW9uQ3RybCA9IHRoaXMuY3VzdG9tZXJGb3JtLmdldChcbiAgICAgICAgICAgICAgJ2lkVGlwb0lkZW50aWZpY2FjaW9uJyxcbiAgICAgICAgICAgICkgYXMgRm9ybUNvbnRyb2w8bnVtYmVyPiB8IG51bGw7XG4gICAgICAgICAgICBpZFRpcG9JZGVudGlmaWNhY2lvbkN0cmw/LnNldFZhbHVlKGRhdGFJZGVudGlmaWNhY2lvbi5pZFRpcG9JZGVudGlmaWNhY2lvbiBhcyBudW1iZXIpO1xuXG4gICAgICAgICAgICBjb25zdCBudW1lcm9JZGVudGlmaWNhY2lvbkN0cmwgPSB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoXG4gICAgICAgICAgICAgICdudW1lcm9JZGVudGlmaWNhY2lvbicsXG4gICAgICAgICAgICApIGFzIEZvcm1Db250cm9sPHN0cmluZz4gfCBudWxsO1xuICAgICAgICAgICAgbnVtZXJvSWRlbnRpZmljYWNpb25DdHJsPy5zZXRWYWx1ZShudW1lcm9JZGVudGlmaWNhY2lvbiBhcyBzdHJpbmcpO1xuXG4gICAgICAgICAgICBjb25zdCBpZFRpZW1wb0NyZWRpdG9DdHJsID0gdGhpcy5jdXN0b21lckZvcm0uZ2V0KFxuICAgICAgICAgICAgICAnaWRUaWVtcG9DcmVkaXRvJyxcbiAgICAgICAgICAgICkgYXMgRm9ybUNvbnRyb2w8bnVtYmVyPiB8IG51bGw7XG4gICAgICAgICAgICBpZFRpZW1wb0NyZWRpdG9DdHJsPy5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgdGhpcy50aWVtcG9zQ3JlZGl0bygpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/ICh0aGlzLnRpZW1wb3NDcmVkaXRvKClbMF0uaWRUaWVtcG9DcmVkaXRvIGFzIG51bWJlcilcbiAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE51bWVyb0lkZW50aWZpY2FjaW9uKGRhdGFJZGVudGlmaWNhY2lvbi5jb2RpZ29TcmkpO1xuXG4gICAgICAgICAgICB0aGlzLm9uS2V5RG93bkdvdmVybm1lbnRJZCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ3JlYXRlKCkpIHtcbiAgICAgICAgICBjb25zdCBkYXRhSWRlbnRpZmljYWNpb24gPSB0aGlzLnRpcG9zSWRlbnRpZmljYWNpb24oKS5maW5kKFxuICAgICAgICAgICAgKHRpOiBhbnkpID0+IHRpLmNvZGlnb1NyaSA9PT0gU1JJX0RPQ1VNRU5UX1RZUEUuUlVDLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoZGF0YUlkZW50aWZpY2FjaW9uKSB7XG4gICAgICAgICAgICBjb25zdCBpZFRpcG9JZGVudGlmaWNhY2lvbkN0cmwgPSB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoXG4gICAgICAgICAgICAgICdpZFRpcG9JZGVudGlmaWNhY2lvbicsXG4gICAgICAgICAgICApIGFzIEZvcm1Db250cm9sPG51bWJlcj4gfCBudWxsO1xuICAgICAgICAgICAgaWRUaXBvSWRlbnRpZmljYWNpb25DdHJsPy5zZXRWYWx1ZShkYXRhSWRlbnRpZmljYWNpb24uaWRUaXBvSWRlbnRpZmljYWNpb24gYXMgbnVtYmVyKTtcbiAgICAgICAgICAgIHRoaXMuc2V0SWRlbnRpZmljYXRpb25UeXBlQ2hhbmdlKGRhdGFJZGVudGlmaWNhY2lvbi5jb2RpZ29TcmkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGlkVGllbXBvQ3JlZGl0b0N0cmwgPSB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoXG4gICAgICAgICAgICAnaWRUaWVtcG9DcmVkaXRvJyxcbiAgICAgICAgICApIGFzIEZvcm1Db250cm9sPG51bWJlcj4gfCBudWxsO1xuICAgICAgICAgIGlkVGllbXBvQ3JlZGl0b0N0cmw/LnNldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy50aWVtcG9zQ3JlZGl0bygpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyAodGhpcy50aWVtcG9zQ3JlZGl0bygpWzBdLmlkVGllbXBvQ3JlZGl0byBhcyBudW1iZXIpXG4gICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudGl0bGUgPSAnRWRpdGFyIENsaWVudGUnO1xuICAgICAgICAgIHRoaXMuYnRuVGV4dC5zZXQoJ0FjdHVhbGl6YXInKTtcbiAgICAgICAgICB0aGlzLmVtYWlscyA9IGRhdGFDb21wYW55Q3VzdG9tZXIuY29ycmVvcztcbiAgICAgICAgICB0aGlzLnRlbGVwaG9uZXMgPSBkYXRhQ29tcGFueUN1c3RvbWVyLnRlbGVmb25vcztcbiAgICAgICAgICB0aGlzLnBsYWNhcy5zZXQoZGF0YUNvbXBhbnlDdXN0b21lci5wbGFjYXMpO1xuICAgICAgICAgIGNvbnN0IHsgZGF0YUluZm9DcmVkLCAuLi5yZXN0IH0gPSBkYXRhQ29tcGFueUN1c3RvbWVyO1xuICAgICAgICAgIHRoaXMuY3VzdG9tZXJGb3JtLnBhdGNoVmFsdWUocmVzdCk7XG4gICAgICAgICAgaWYgKGRhdGFJbmZvQ3JlZCkge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdkYXRhSW5mb0NyZWQnKT8ucGF0Y2hWYWx1ZShkYXRhSW5mb0NyZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sTnVtZXJvSWRlbnRpZmljYWNpb24ocmVzdC5jb2RpZ29TcmkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSGFuZGxlIGVycm9yIGFwcHJvcHJpYXRlbHlcbiAgICB9XG4gIH1cblxuICBpZGVudGlmaWNhdGlvblR5cGVDaGFuZ2UoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSkge1xuICAgIGNvbnN0IGR0ID0gdGhpcy50aXBvc0lkZW50aWZpY2FjaW9uKCkuZmluZChcbiAgICAgIGl0ZW0gPT4gaXRlbS5pZFRpcG9JZGVudGlmaWNhY2lvbiA9PT0gTnVtYmVyKGV2ZW50LnZhbHVlKSxcbiAgICApO1xuICAgIHRoaXMuc2V0SWRlbnRpZmljYXRpb25UeXBlQ2hhbmdlKGR0LmNvZGlnb1NyaSk7XG4gIH1cblxuICB1cGRhdGVGb3JtQ29udHJvbE51bWVyb0lkZW50aWZpY2FjaW9uKFxuICAgIGNvZGlnb1NyaTogU1JJX0RPQ1VNRU5UX1RZUEUuUlVDIHwgU1JJX0RPQ1VNRU5UX1RZUEUuQ0VEVUxBLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBpZE51bWJlckNvbnRyb2wgPSB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoJ251bWVyb0lkZW50aWZpY2FjaW9uJyk7XG5cbiAgICB0aGlzLnNob3dSZWZyZXNoLnNldChmYWxzZSk7XG5cbiAgICBpZiAoW1NSSV9ET0NVTUVOVF9UWVBFLlJVQywgU1JJX0RPQ1VNRU5UX1RZUEUuQ0VEVUxBXS5pbmNsdWRlcyhjb2RpZ29TcmkpKSB7XG4gICAgICBsZXQgbGVuZ3RoVmFsaWRhdG9yO1xuICAgICAgdGhpcy5zaG93UmVmcmVzaC5zZXQodHJ1ZSk7XG5cbiAgICAgIGlmIChjb2RpZ29TcmkgPT09IFNSSV9ET0NVTUVOVF9UWVBFLkNFRFVMQSkge1xuICAgICAgICBsZW5ndGhWYWxpZGF0b3IgPSBbVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMCldO1xuICAgICAgfSBlbHNlIGlmIChjb2RpZ29TcmkgPT09IFNSSV9ET0NVTUVOVF9UWVBFLlJVQykge1xuICAgICAgICBsZW5ndGhWYWxpZGF0b3IgPSBbXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTMpLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEzKSxcbiAgICAgICAgICB0aGlzLmVuZHNXaXRoMDAxVmFsaWRhdG9yLFxuICAgICAgICBdO1xuICAgICAgfVxuICAgICAgaWYgKGxlbmd0aFZhbGlkYXRvcikge1xuICAgICAgICBpZE51bWJlckNvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1xuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eXFxkKyQvKSwgLy8gU29sbyBuw7ptZXJvc1xuICAgICAgICAgIC4uLmxlbmd0aFZhbGlkYXRvcixcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkTnVtYmVyQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgIH1cblxuICAgIGlkTnVtYmVyQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgc2V0SWRlbnRpZmljYXRpb25UeXBlQ2hhbmdlKGNvZGlnb1NyaTogU1JJX0RPQ1VNRU5UX1RZUEUuUlVDIHwgU1JJX0RPQ1VNRU5UX1RZUEUuQ0VEVUxBKSB7XG4gICAgY29uc3QgaWROdW1iZXJDb250cm9sID0gdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdudW1lcm9JZGVudGlmaWNhY2lvbicpO1xuICAgIGlkTnVtYmVyQ29udHJvbD8ucmVzZXQoKTtcbiAgICBpZE51bWJlckNvbnRyb2w/LmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xOdW1lcm9JZGVudGlmaWNhY2lvbihjb2RpZ29TcmkpO1xuICB9XG5cbiAgZ2V0IG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdudW1lcm9JZGVudGlmaWNhY2lvbicpO1xuICB9XG5cbiAgZ2V0IGJpcnRoRGF0ZUN0cmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tZXJGb3JtLmdldCgnYmlydGhEYXRlJyk7XG4gIH1cblxuICBvbktleURvd25Hb3Zlcm5tZW50SWQoJGV2ZW50PzogRXZlbnQpIHtcbiAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5pbnZhbGlkKSByZXR1cm47XG5cbiAgICBjb25zdCBpZFRpcG9JZGVudGlmaWNhY2lvbiA9IChcbiAgICAgIHRoaXMuY3VzdG9tZXJGb3JtLmdldCgnaWRUaXBvSWRlbnRpZmljYWNpb24nKSBhcyBGb3JtQ29udHJvbDxudW1iZXI+IHwgbnVsbFxuICAgICk/LnZhbHVlIGFzIG51bWJlcjtcbiAgICBjb25zdCBudW1lcm9JZGVudGlmaWNhY2lvbiA9IChcbiAgICAgIHRoaXMuY3VzdG9tZXJGb3JtLmdldCgnbnVtZXJvSWRlbnRpZmljYWNpb24nKSBhcyBGb3JtQ29udHJvbDxzdHJpbmc+IHwgbnVsbFxuICAgICk/LnZhbHVlIGFzIHN0cmluZztcblxuICAgIGNvbnN0IGNvZGlnb1NyaSA9IHRoaXMudGlwb3NJZGVudGlmaWNhY2lvbigpLmZpbmQoXG4gICAgICAoeDogYW55KSA9PiB4LmlkVGlwb0lkZW50aWZpY2FjaW9uID09IGlkVGlwb0lkZW50aWZpY2FjaW9uLFxuICAgICkuY29kaWdvU3JpO1xuXG4gICAgaWYgKG51bWVyb0lkZW50aWZpY2FjaW9uKSB7XG4gICAgICB0aGlzLmdldEN1c3RvbWVyKGNvZGlnb1NyaSwgbnVtZXJvSWRlbnRpZmljYWNpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNEYXRhT2ZTcmkgPSAoKSA9PiB0aGlzLnBhcmFtcy5kYXRhT2ZTcmk7XG4gIHByaXZhdGUgaXNDcmVhdGUgPSAoKSA9PiAhKHRoaXMucGFyYW1zLmlkID4gMCk7XG4gIGlzVXBkYXRlID0gKCkgPT4gdGhpcy5wYXJhbXMuaWQgPiAwO1xuXG4gIG9uU2F2ZSgpIHtcbiAgICB0aGlzLmN1c3RvbWVyRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIHRlbGVmb25vOiB0aGlzLnRlbGVwaG9uZXMubGVuZ3RoID4gMCA/IHRoaXMudGVsZXBob25lcy5qb2luKFNFUEFSQVRPUl9LRVlfQ09ERS5TTEFTSCkgOiBudWxsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBjb3JyZW86IHRoaXMuZW1haWxzLmxlbmd0aCA+IDAgPyB0aGlzLmVtYWlscy5qb2luKFNFUEFSQVRPUl9LRVlfQ09ERS5TTEFTSCkgOiBudWxsLFxuICAgIH0pO1xuICAgIHRoaXMuY3VzdG9tZXJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgcGxhY2E6IHRoaXMucGxhY2FzKCkubGVuZ3RoID4gMCA/IHRoaXMucGxhY2FzKCkuam9pbihTRVBBUkFUT1JfS0VZX0NPREUuU0xBU0gpIDogbnVsbCxcbiAgICB9KTtcbiAgICBjb25zdCBkYXRhRm9ybSA9IHtcbiAgICAgIC4uLnRoaXMuY3VzdG9tZXJGb3JtLnZhbHVlLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jdXN0b21lckZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0ci5zaG93KHtcbiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICBtZXNzYWdlOiAnSW5ncmVzZSB0b2RvcyBkYXRvcyByZXF1ZXJpZG9zJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzVXBkYXRlKCkpIHtcbiAgICAgIGNvbnN0IHNlbmRQYXJhbXMgPSB7XG4gICAgICAgIGlkOiB0aGlzLnBhcmFtcy5pZCxcbiAgICAgICAgZGF0YTogZGF0YUZvcm0sXG4gICAgICB9O1xuICAgICAgZnJvbSh0aGlzLmN1c3RvbWVyVXNlQ2FzZS51cGRhdGUoc2VuZFBhcmFtcykpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdHIuc2hvdyh7XG4gICAgICAgICAgdHlwZTogaXNTdWNjZXNzUmVzcG9uc2UocmVzcG9uc2UpID8gJ3N1Y2Nlc3MnIDogJ3dhcm5pbmcnLFxuICAgICAgICAgIG1lc3NhZ2U6IGAke3Jlc3BvbnNlLm1lc3NhZ2V9YCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc1N1Y2Nlc3NSZXNwb25zZShyZXNwb25zZSkpIHtcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICBpZDogdGhpcy5wYXJhbXMuaWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQ3JlYXRlKCkpIHtcbiAgICAgIGZyb20odGhpcy5jdXN0b21lclVzZUNhc2UuY3JlYXRlKGRhdGFGb3JtKSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0ci5zaG93KHtcbiAgICAgICAgICB0eXBlOiBpc1N1Y2Nlc3NSZXNwb25zZShyZXNwb25zZSkgPyAnc3VjY2VzcycgOiAnd2FybmluZycsXG4gICAgICAgICAgbWVzc2FnZTogYCR7cmVzcG9uc2UubWVzc2FnZX1gLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzU3VjY2Vzc1Jlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9XG59XG4iLCI8bWF0LWRpYWxvZy1jb250ZW50PlxuICA8Zm9ybVxuICAgIChuZ1N1Ym1pdCk9XCJvblNhdmUoKVwiXG4gICAgaWQ9XCJmb3JtQ29tcGFueUN1c3RvbWVyXCJcbiAgICBbZm9ybUdyb3VwXT1cImN1c3RvbWVyRm9ybVwiXG4gICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgPlxuICAgIDxtYXQtdGFiLWdyb3VwPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJEQVRPUyBQUklOQ0lQQUxFU1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ncmlkIGdhcC0yIG14LTMgbXQtMlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRpcG8gSWRlbnRpZmljYWNpw7NuOiA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaWRUaXBvSWRlbnRpZmljYWNpb25cIlxuICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJpZGVudGlmaWNhdGlvblR5cGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiB0aXBvc0lkZW50aWZpY2FjaW9uKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZFRpcG9JZGVudGlmaWNhY2lvblwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5kZXNjcmlwY2lvblxuICAgICAgICAgICAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPk7Dum1lcm8gZGUgSWRlbnRpZmljYWNpw7NuPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25LZXlEb3duR292ZXJubWVudElkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibnVtZXJvSWRlbnRpZmljYWNpb25cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgIG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbD8uaW52YWxpZCAmJlxuICAgICAgICAgICAgICAgICAgKG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbD8uZGlydHkgfHwgbnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy50b3VjaGVkKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgQGlmIChudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+IEVsIG7Dum1lcm8gZGUgaWRlbnRpZmljYWNpw7NuIGVzIG9ibGlnYXRvcmlvLiA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgQGlmIChudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKSkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICAgIERlYmUgdGVuZXIgYWwgbWVub3NcbiAgICAgICAgICAgICAgICAgICAgICB7eyBudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/LmVycm9ycz8uWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aCB9fVxuICAgICAgICAgICAgICAgICAgICAgIGTDrWdpdG9zLlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAobnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICBObyBwdWVkZSB0ZW5lciBtw6FzIGRlXG4gICAgICAgICAgICAgICAgICAgICAge3sgbnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5lcnJvcnM/LlsnbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGggfX1cbiAgICAgICAgICAgICAgICAgICAgICBkw61naXRvcy5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbD8uaGFzRXJyb3IoJ3BhdHRlcm4nKSkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPiBTb2xvIHNlIHBlcm1pdGVuIGNhcmFjdGVyZXMgbnVtw6lyaWNvcy4gPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbD8uaGFzRXJyb3IoJ2VuZHNXaXRoMDAxJykpIHtcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj4gTG9zIMO6bHRpbW9zIHRyZXMgZMOtZ2l0b3MgZGViZW4gc2VyIDAwMS4gPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmIChzaG93UmVmcmVzaCgpKSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdFN1ZmZpeD5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbktleURvd25Hb3Zlcm5tZW50SWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPk5vbWJyZSBGaXNjYWw6PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5vbWJyZUZpc2NhbFwiXG4gICAgICAgICAgICAgICAgICBpZD1cIm5vbWJyZUNvbWVyY2lhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVqOiBURUNOT01FR0FcIlxuICAgICAgICAgICAgICAgICAgYWNwVG9VcHBlckNhc2VcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ob21icmUgQ29tZXJjaWFsOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJub21icmVDb21lcmNpYWxcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFajogVEVDTk9NRUdBXCJcbiAgICAgICAgICAgICAgICAgIGFjcFRvVXBwZXJDYXNlXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+RGlyZWNjacOzbjo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXJlY2Npb25cIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQVYuIDA5IERFIE9DVFVCUkUuLi5cIlxuICAgICAgICAgICAgICAgIGFjcFRvVXBwZXJDYXNlXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMiByb3ctY29scy0xIGctMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8YWNwLW1hdC1pbnB1dC1jaGlwIFtjaGlwc109XCJlbWFpbHNcIiBbbGFiZWxUZXh0XT1cIidDb3JyZW8nXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8YWNwLW1hdC1pbnB1dC1jaGlwIFtjaGlwc109XCJ0ZWxlcGhvbmVzXCIgW2xhYmVsVGV4dF09XCInVGVsw6lmb25vJ1wiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoaXNVcGRhdGUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZzdGFjayBnYXAtMiBtdC0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuPkVzdGFkbzwvc3Bhbj5cbiAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgZm9ybUNvbnRyb2xOYW1lPVwiZXN0YWRvXCI+XG4gICAgICAgICAgICAgICAge3sgY3VzdG9tZXJGb3JtLnZhbHVlLmVzdGFkbyA/ICdBY3Rpdm8nIDogJ0luYWN0aXZvJyB9fVxuICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJEQVRPUyBBRElDSU9OQUxFU1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ncmlkIGdhcC0yIG14LTMgbXQtMlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPGFjcC1tYXQtZHluYW1pYy1jYXJkIHRpdGxlPVwiSW5mb3JtYWNpw7NuIELDoXNpY2FcIiBbaXNIZWFkZXJWaXNpYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdyByb3ctY29scy14eGwtMiByb3ctY29scy14bC0yIHJvdy1jb2xzLWxnLTIgcm93LWNvbHMtbWQtMiByb3ctY29scy1zbS0yIHJvdy1jb2xzLTEgZy0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5UaXBvIENvbnRyaWJ1eWVudGU6IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImlkU3ViQ29udHJpYnV5ZW50ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiB0aXBvQ29udHJpYnV5ZW50ZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkU3ViQ29udHJpYnV5ZW50ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZGVzY3JpcGNpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5UaWVtcG8gQ3LDqWRpdG86IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImlkVGllbXBvQ3JlZGl0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiB0aWVtcG9zQ3JlZGl0bygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRUaWVtcG9DcmVkaXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kZXNjcmlwY2lvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkNpdWRhZDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImlkQ2l1ZGFkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMFwiPi0tIE5pbmd1bm8gLS08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChncm91cCBvZiBjaXVkYWRlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiZ3JvdXAubm9tYnJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBncm91cC5jaXVkYWRlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZENpdWRhZFwiPnt7IGl0ZW0ubm9tYnJlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5UaXBvIENsaWVudGU6IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImlkVGlwb0NsaWVudGVQcm92ZWVkb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIwXCI+LS1OaW5ndW5vLS08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHRpcG9zQ2xpZW50ZSgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRUaXBvQ2xpZW50ZVByb3ZlZWRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZGVzY3JpcGNpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5FbXByZXNhOiA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJpZEVtcHJlc2FcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIwXCI+LS1OaW5ndW5vLS08L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZW1wcmVzYXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkRW1wcmVzYVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZGVzY3JpcGNpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RmVjaGEgTmFjaW1pZW50bzwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJiaXJ0aERhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJiaXJ0aERhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludD5NTS9ERC9ZWVlZPC9tYXQtaGludD5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRJY29uU3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cImJpcnRoRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjYmlydGhEYXRlPjwvbWF0LWRhdGVwaWNrZXI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChiaXJ0aERhdGVDdHJsPy5pbnZhbGlkICYmIGJpcnRoRGF0ZUN0cmw/LnRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+IEZlY2hhIGludsOhbGlkYSA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hY3AtbWF0LWR5bmFtaWMtY2FyZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8YWNwLW1hdC1keW5hbWljLWNhcmQgdGl0bGU9XCJJbmZvcm1hY2nDs24gTGFib3JhbFwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkVtcGxlYWRvOiA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJpZEVtcGxlYWRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMFwiPi0tTmluZ3Vuby0tPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGVtcGxveWVlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRFbXBsZWFkb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubm9tYnJlQ29tcGxldG8gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5DYXJnbzogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRDYXJnb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjBcIj4tLU5pbmd1bm8tLTwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBjYXJnb3MoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkQ2FyZ29cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRlc2NyaXBjaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+T2JzZXJ2YWNpw7NuPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiLi4uXCIgZm9ybUNvbnRyb2xOYW1lPVwibm90YVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hY3AtbWF0LWR5bmFtaWMtY2FyZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPGFjcC1tYXQtZHluYW1pYy1jYXJkIHRpdGxlPVwiQ29uZmlndXJhY2nDs24gRmluYW5jaWVyYVwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0xIHJvdy1jb2xzLXhsLTEgcm93LWNvbHMtbGctMSByb3ctY29scy1tZC0xIHJvdy1jb2xzLXNtLTEgcm93LWNvbHMtMSBnLTIgbXQtMlwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Rm9ybWEgZGUgcGFnbzogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRGb3JtYVBhZ29TcmlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIwXCI+LS1OaW5ndW5vLS08L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZm9ybWFzUGFnb1NyaSgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRGb3JtYVBhZ29TcmlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRlc2NyaXBjaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YWNwLW1hdC1pbnB1dC1jaGlwIGxhYmVsVGV4dD1cIlBsYWNhXCIgW2NoaXBzXT1cInBsYWNhcygpXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggZm9ybUNvbnRyb2xOYW1lPVwiY29uZmlnVmFsb3JCcnV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgPkFjdGl2YXIgY29uZmlndXJhY2nDs24gZGUgdmFsb3IgYnJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ2YWxvciB0b3RhbCBkZSB1biBiaWVuIG8gc2VydmljaW8gc2luIGluY2x1aXIgaW1wdWVzdG9zLCBkZWR1Y2Npb25lcyBvIGRlc2N1ZW50b3MgKHVzbyBkZW50cm8gZGVsIHJlcG9ydGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5pbmZvPC9tYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgID48L21hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hY3AtbWF0LWR5bmFtaWMtY2FyZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDxtYXQtdGFiIGxhYmVsPVwiSU5GT1JNQUNJw5NOIENSRURJVElDSUFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZ3JpZCBnYXAtMiBteC0zIG10LTJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInJvdyByb3ctY29scy14eGwtMiByb3ctY29scy14bC0yIHJvdy1jb2xzLWxnLTIgcm93LWNvbHMtbWQtMiByb3ctY29scy1zbS0yIHJvdy1jb2xzLTEgZy0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxhY3AtbWF0LWR5bmFtaWMtY2FyZCB0aXRsZT1cIkluZm9ybWFjacOzbiBQZXJzb25hbFwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJkYXRhSW5mb0NyZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMSByb3ctY29scy0xIGctMiBtdC0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Fc3RhZG8gQ2l2aWw6IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1hcml0YWxTdGF0dXNJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjBcIj5TZWxlY2Npb25hci4uLjwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBtYXJpdGFsU3RhdHVzZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkVzcG9zbyhhKTo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb255dWdlTm9tYnJlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTm9tYnJlIGRlbCBjw7NueXVnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5UZWzDqWZvbm8gUGVyc29uYWw6PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImNvbnl1Z2VUZWxcIiBwbGFjZWhvbGRlcj1cIjA5eHh4eHh4eHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5UZWzDqWZvbm8gUmVmZXJlbmNpYTo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicmVmRmFtVGVsXCIgcGxhY2Vob2xkZXI9XCIwOXh4eHh4eHh4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+UmVmZXJlbmNpYSBGYW1pbGlhcjo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZWZGYW1Ob21icmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOb21icmUgZGUgcmVmZXJlbmNpYSBmYW1pbGlhclwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FjcC1tYXQtZHluYW1pYy1jYXJkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxhY3AtbWF0LWR5bmFtaWMtY2FyZCB0aXRsZT1cIkluZm9ybWFjacOzbiBkZSBWaXZpZW5kYVwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJkYXRhSW5mb0NyZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMSByb3ctY29scy0xIGctMiBtdC0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5UaXBvIGRlIFZpdmllbmRhOiA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJob3VzaW5nVHlwZUlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMFwiPlNlbGVjY2lvbmFyLi4uPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGhvdXNpbmdUeXBlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U2VjdG9yOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzZWN0b3JcIiBwbGFjZWhvbGRlcj1cIk5vbWJyZSBkZWwgc2VjdG9yXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5CYXJyaW86PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImJhcnJpb1wiIHBsYWNlaG9sZGVyPVwiTm9tYnJlIGRlbCBiYXJyaW9cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5DYWxsZTo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY2FsbGVcIiBwbGFjZWhvbGRlcj1cIk5vbWJyZSBkZSBsYSBjYWxsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkRpcmVjY2nDs24gQ29tcGxldGE8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXJWaXZpZW5kYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkRpcmVjY2nDs24gY29tcGxldGEgZGUgbGEgdml2aWVuZGEgKFNlY3RvciwgQmFycmlvIHkgQ2FsbGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RGVzY3JpcGNpw7NuIGRlbCBQdW50byBkZSBSZWZlcmVuY2lhOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZkRvbWljaWxpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkRlc2NyaXBjacOzbiBkZXRhbGxhZGEgZGVsIHB1bnRvIGRlIHJlZmVyZW5jaWFcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYWNwLW1hdC1keW5hbWljLWNhcmQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuICA8L2Zvcm0+XG48L21hdC1kaWFsb2ctY29udGVudD5cbjxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDxhY3AtbWF0LXRoZW1lLWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgZm9ybT1cImZvcm1Db21wYW55Q3VzdG9tZXJcIiBbdGV4dF09XCJidG5UZXh0KClcIiAvPlxuPDw8PDw8PDwgSEVBRDpwcm9qZWN0cy9hY29udHBsdXMtdWktY29tcG9uZW50cy9zcmMvbGliL2N1c3RvbWVycy11aS9jbGllbnQvY2xpZW50LWFkZC1lZGl0L2NsaWVudC1hZGQtZWRpdC5jb21wb25lbnQuaHRtbFxuICA8YWNwLW1hdC10aGVtZS1idXR0b24gdHlwZT1cImJ1dHRvblwiIHZhcmlhbnQ9XCJkYXJrXCIgdGV4dD1cIkNlcnJhclwiIChoYW5kbGVDbGljayk9XCJjbG9zZSgpXCIgLz5cbj09PT09PT09XG4+Pj4+Pj4+PiBlOGI0ZGQyNTE4MzNhNGU4ZDIwMGJkYzAzNjgwNmEzMTkxNzMwNzY3OnBhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvdWkvY29tcG9uZW50cy9jdXN0b21lci1hZGQtZWRpdC9jdXN0b21lci1hZGQtZWRpdC5jb21wb25lbnQuaHRtbFxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=","import { Component, computed, input, output } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatThemeButtonComponent } from '@acontplus/ng-components';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/card\";\nimport * as i2 from \"@angular/material/chips\";\nexport class CustomerCardComponent {\n customer = input.required(...(ngDevMode ? [{ debugName: \"customer\" }] : []));\n editCustomer = output();\n deleteCustomer = output();\n getLogoSliceBusinessName = computed(() => {\n const name = this.customer()?.businessName || '';\n return name.slice(0, 1);\n }, ...(ngDevMode ? [{ debugName: \"getLogoSliceBusinessName\" }] : []));\n onEditClick() {\n // Emits the customer object to the parent component\n this.editCustomer.emit(this.customer());\n }\n onDeleteClick() {\n // Emits the customer object to the parent component\n this.deleteCustomer.emit(this.customer());\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: CustomerCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.1\", type: CustomerCardComponent, isStandalone: true, selector: \"acp-customer-card\", inputs: { customer: { classPropertyName: \"customer\", publicName: \"customer\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { editCustomer: \"editCustomer\", deleteCustomer: \"deleteCustomer\" }, ngImport: i0, template: \"<mat-card class=\\\"customer-card\\\">\\n <!-- Header -->\\n <div class=\\\"card-header\\\">\\n <div class=\\\"avatar\\\" aria-label=\\\"Logo de cliente\\\">{{ getLogoSliceBusinessName() }}</div>\\n <h5 class=\\\"businessName\\\">{{ customer().businessName }}</h5>\\n <p class=\\\"tradeName\\\">{{ customer().tradeName }}</p>\\n </div>\\n\\n <!-- Card content -->\\n <mat-card-content>\\n <div class=\\\"info\\\">\\n <p><strong>ID:</strong> 1234567890 (RUC)</p>\\n <p><strong>Email:</strong> {{ customer().email }}</p>\\n <p><strong>Tel\\u00E9fono:</strong> {{ customer().phone }}</p>\\n <p><strong>Direcci\\u00F3n:</strong>{{ customer().address }}</p>\\n\\n <div class=\\\"chips\\\">\\n <mat-chip-set>\\n <mat-chip color=\\\"primary\\\">{{ customer().statusName }}</mat-chip>\\n </mat-chip-set>\\n </div>\\n </div>\\n </mat-card-content>\\n\\n <!-- Card actions -->\\n @if (!customer().isFinalConsumer) {\\n <mat-card-actions class=\\\"actions gap-2\\\">\\n <acp-mat-theme-button matStyle=\\\"icon\\\" icon=\\\"edit\\\" (handleClick)=\\\"onEditClick()\\\" />\\n <acp-mat-theme-button\\n matStyle=\\\"icon\\\"\\n icon=\\\"delete\\\"\\n variant=\\\"danger\\\"\\n (handleClick)=\\\"onDeleteClick()\\\"\\n />\\n </mat-card-actions>\\n }\\n</mat-card>\\n\", styles: [\".customer-card{width:345px;border-radius:16px}.card-header{display:flex;flex-direction:column;align-items:center;padding:16px;background-color:#e3f2fd;border-top-left-radius:16px;border-top-right-radius:16px}.card-header .businessName{text-align:center;font-size:14px;font-weight:500}.card-header .tradeName{text-align:center;font-size:12px;color:#6c757d}.avatar{width:80px;height:80px;border-radius:50%;background-color:#1976d2;display:flex;justify-content:center;align-items:center;font-size:32px;color:#fff;margin-bottom:12px}.info p{margin:4px 0}.chips{margin-top:12px;display:flex;gap:8px}.actions{justify-content:flex-end;padding:16px}\\n\"], dependencies: [{ kind: \"ngmodule\", type: MatCardModule }, { kind: \"component\", type: i1.MatCard, selector: \"mat-card\", inputs: [\"appearance\"], exportAs: [\"matCard\"] }, { kind: \"directive\", type: i1.MatCardActions, selector: \"mat-card-actions\", inputs: [\"align\"], exportAs: [\"matCardActions\"] }, { kind: \"directive\", type: i1.MatCardContent, selector: \"mat-card-content\" }, { kind: \"ngmodule\", type: MatDividerModule }, { kind: \"ngmodule\", type: MatChipsModule }, { kind: \"component\", type: i2.MatChip, selector: \"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]\", inputs: [\"role\", \"id\", \"aria-label\", \"aria-description\", \"value\", \"color\", \"removable\", \"highlighted\", \"disableRipple\", \"disabled\"], outputs: [\"removed\", \"destroyed\"], exportAs: [\"matChip\"] }, { kind: \"component\", type: i2.MatChipSet, selector: \"mat-chip-set\", inputs: [\"disabled\", \"role\", \"tabIndex\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: MatThemeButtonComponent, selector: \"acp-mat-theme-button\", inputs: [\"variant\", \"text\", \"icon\", \"outlined\", \"disabled\", \"useThemeColor\", \"type\", \"matStyle\", \"title\", \"ariaLabel\", \"name\", \"id\", \"form\", \"tabIndex\", \"testId\"], outputs: [\"handleClick\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: CustomerCardComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-customer-card', imports: [\n MatCardModule,\n MatDividerModule,\n MatChipsModule,\n MatButtonModule,\n MatThemeButtonComponent,\n ], template: \"<mat-card class=\\\"customer-card\\\">\\n <!-- Header -->\\n <div class=\\\"card-header\\\">\\n <div class=\\\"avatar\\\" aria-label=\\\"Logo de cliente\\\">{{ getLogoSliceBusinessName() }}</div>\\n <h5 class=\\\"businessName\\\">{{ customer().businessName }}</h5>\\n <p class=\\\"tradeName\\\">{{ customer().tradeName }}</p>\\n </div>\\n\\n <!-- Card content -->\\n <mat-card-content>\\n <div class=\\\"info\\\">\\n <p><strong>ID:</strong> 1234567890 (RUC)</p>\\n <p><strong>Email:</strong> {{ customer().email }}</p>\\n <p><strong>Tel\\u00E9fono:</strong> {{ customer().phone }}</p>\\n <p><strong>Direcci\\u00F3n:</strong>{{ customer().address }}</p>\\n\\n <div class=\\\"chips\\\">\\n <mat-chip-set>\\n <mat-chip color=\\\"primary\\\">{{ customer().statusName }}</mat-chip>\\n </mat-chip-set>\\n </div>\\n </div>\\n </mat-card-content>\\n\\n <!-- Card actions -->\\n @if (!customer().isFinalConsumer) {\\n <mat-card-actions class=\\\"actions gap-2\\\">\\n <acp-mat-theme-button matStyle=\\\"icon\\\" icon=\\\"edit\\\" (handleClick)=\\\"onEditClick()\\\" />\\n <acp-mat-theme-button\\n matStyle=\\\"icon\\\"\\n icon=\\\"delete\\\"\\n variant=\\\"danger\\\"\\n (handleClick)=\\\"onDeleteClick()\\\"\\n />\\n </mat-card-actions>\\n }\\n</mat-card>\\n\", styles: [\".customer-card{width:345px;border-radius:16px}.card-header{display:flex;flex-direction:column;align-items:center;padding:16px;background-color:#e3f2fd;border-top-left-radius:16px;border-top-right-radius:16px}.card-header .businessName{text-align:center;font-size:14px;font-weight:500}.card-header .tradeName{text-align:center;font-size:12px;color:#6c757d}.avatar{width:80px;height:80px;border-radius:50%;background-color:#1976d2;display:flex;justify-content:center;align-items:center;font-size:32px;color:#fff;margin-bottom:12px}.info p{margin:4px 0}.chips{margin-top:12px;display:flex;gap:8px}.actions{justify-content:flex-end;padding:16px}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL3VpL2NvbXBvbmVudHMvY3VzdG9tZXItY2FyZC9jdXN0b21lci1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvdWkvY29tcG9uZW50cy9jdXN0b21lci1jYXJkL2N1c3RvbWVyLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQWVuRSxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxtREFBdUIsQ0FBQztJQUNqRCxZQUFZLEdBQUcsTUFBTSxFQUF1QixDQUFDO0lBQzdDLGNBQWMsR0FBRyxNQUFNLEVBQXVCLENBQUM7SUFFL0Msd0JBQXdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUMsb0VBQUMsQ0FBQztJQUVILFdBQVc7UUFDVCxvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGFBQWE7UUFDWCxvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQzt1R0FsQlUscUJBQXFCOzJGQUFyQixxQkFBcUIsc1NDcEJsQyx1dkNBcUNBLDRyQkQxQkksYUFBYSx5VkFDYixnQkFBZ0IsOEJBQ2hCLGNBQWMsMGJBQ2QsZUFBZSwrQkFDZix1QkFBdUI7OzJGQUtkLHFCQUFxQjtrQkFaakMsU0FBUzsrQkFDRSxtQkFBbUIsV0FDcEI7d0JBQ1AsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZix1QkFBdUI7cUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0VGhlbWVCdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWNvbnRwbHVzL25nLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ3VzdG9tZXJMaXN0SXRlbUR0byB9IGZyb20gJy4uLy4uLy4uL2luZnJhc3RydWN0dXJlL2R0b3MvY3VzdG9tZXIuZHRvJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLWN1c3RvbWVyLWNhcmQnLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Q2FyZE1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1hdENoaXBzTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRUaGVtZUJ1dHRvbkNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbWVyLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY3VzdG9tZXItY2FyZC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbWVyQ2FyZENvbXBvbmVudCB7XG4gIGN1c3RvbWVyID0gaW5wdXQucmVxdWlyZWQ8Q3VzdG9tZXJMaXN0SXRlbUR0bz4oKTtcbiAgZWRpdEN1c3RvbWVyID0gb3V0cHV0PEN1c3RvbWVyTGlzdEl0ZW1EdG8+KCk7XG4gIGRlbGV0ZUN1c3RvbWVyID0gb3V0cHV0PEN1c3RvbWVyTGlzdEl0ZW1EdG8+KCk7XG5cbiAgZ2V0TG9nb1NsaWNlQnVzaW5lc3NOYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmN1c3RvbWVyKCk/LmJ1c2luZXNzTmFtZSB8fCAnJztcbiAgICByZXR1cm4gbmFtZS5zbGljZSgwLCAxKTtcbiAgfSk7XG5cbiAgb25FZGl0Q2xpY2soKTogdm9pZCB7XG4gICAgLy8gRW1pdHMgdGhlIGN1c3RvbWVyIG9iamVjdCB0byB0aGUgcGFyZW50IGNvbXBvbmVudFxuICAgIHRoaXMuZWRpdEN1c3RvbWVyLmVtaXQodGhpcy5jdXN0b21lcigpKTtcbiAgfVxuXG4gIG9uRGVsZXRlQ2xpY2soKTogdm9pZCB7XG4gICAgLy8gRW1pdHMgdGhlIGN1c3RvbWVyIG9iamVjdCB0byB0aGUgcGFyZW50IGNvbXBvbmVudFxuICAgIHRoaXMuZGVsZXRlQ3VzdG9tZXIuZW1pdCh0aGlzLmN1c3RvbWVyKCkpO1xuICB9XG59XG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJjdXN0b21lci1jYXJkXCI+XG4gIDwhLS0gSGVhZGVyIC0tPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgYXJpYS1sYWJlbD1cIkxvZ28gZGUgY2xpZW50ZVwiPnt7IGdldExvZ29TbGljZUJ1c2luZXNzTmFtZSgpIH19PC9kaXY+XG4gICAgPGg1IGNsYXNzPVwiYnVzaW5lc3NOYW1lXCI+e3sgY3VzdG9tZXIoKS5idXNpbmVzc05hbWUgfX08L2g1PlxuICAgIDxwIGNsYXNzPVwidHJhZGVOYW1lXCI+e3sgY3VzdG9tZXIoKS50cmFkZU5hbWUgfX08L3A+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ2FyZCBjb250ZW50IC0tPlxuICA8bWF0LWNhcmQtY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiPlxuICAgICAgPHA+PHN0cm9uZz5JRDo8L3N0cm9uZz4gMTIzNDU2Nzg5MCAoUlVDKTwvcD5cbiAgICAgIDxwPjxzdHJvbmc+RW1haWw6PC9zdHJvbmc+IHt7IGN1c3RvbWVyKCkuZW1haWwgfX08L3A+XG4gICAgICA8cD48c3Ryb25nPlRlbMOpZm9ubzo8L3N0cm9uZz4ge3sgY3VzdG9tZXIoKS5waG9uZSB9fTwvcD5cbiAgICAgIDxwPjxzdHJvbmc+RGlyZWNjacOzbjo8L3N0cm9uZz57eyBjdXN0b21lcigpLmFkZHJlc3MgfX08L3A+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaGlwc1wiPlxuICAgICAgICA8bWF0LWNoaXAtc2V0PlxuICAgICAgICAgIDxtYXQtY2hpcCBjb2xvcj1cInByaW1hcnlcIj57eyBjdXN0b21lcigpLnN0YXR1c05hbWUgfX08L21hdC1jaGlwPlxuICAgICAgICA8L21hdC1jaGlwLXNldD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG5cbiAgPCEtLSBDYXJkIGFjdGlvbnMgLS0+XG4gIEBpZiAoIWN1c3RvbWVyKCkuaXNGaW5hbENvbnN1bWVyKSB7XG4gICAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9XCJhY3Rpb25zIGdhcC0yXCI+XG4gICAgICA8YWNwLW1hdC10aGVtZS1idXR0b24gbWF0U3R5bGU9XCJpY29uXCIgaWNvbj1cImVkaXRcIiAoaGFuZGxlQ2xpY2spPVwib25FZGl0Q2xpY2soKVwiIC8+XG4gICAgICA8YWNwLW1hdC10aGVtZS1idXR0b25cbiAgICAgICAgbWF0U3R5bGU9XCJpY29uXCJcbiAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgIHZhcmlhbnQ9XCJkYW5nZXJcIlxuICAgICAgICAoaGFuZGxlQ2xpY2spPVwib25EZWxldGVDbGljaygpXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuICB9XG48L21hdC1jYXJkPlxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWN1c3RvbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2Fjb250cGx1cy1uZy1jdXN0b21lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2"],"mappings":"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"}