@fad-producto-portal/ng-fad-signature-fea 1.0.0-alpha.10 → 1.0.0-alpha.11

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.
@@ -48,10 +48,6 @@ export class UploadESignatureComponent {
48
48
  this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_DOCUMENTS, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_DOCUMENTS), 'ng-fad-signature-fea-upload-e-signature'));
49
49
  return false;
50
50
  }
51
- if (!this.signerId) {
52
- this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_SIGNER_ID, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_SIGNER_ID), 'ng-fad-signature-fea-upload-e-signature'));
53
- return false;
54
- }
55
51
  if (!this.rfc) {
56
52
  this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_RFC, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_RFC), 'ng-fad-signature-fea-upload-e-signature'));
57
53
  return false;
@@ -263,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
263
259
  }], oncomplete: [{
264
260
  type: Output
265
261
  }] } });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWUtc2lnbmF0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNpZ25hdHVyZS1mZWEvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZC1lLXNpZ25hdHVyZS91cGxvYWQtZS1zaWduYXR1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvdXBsb2FkLWUtc2lnbmF0dXJlL3VwbG9hZC1lLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFNUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLHdDQUF3QyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0ksT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPaEMsTUFBTSxPQUFPLHlCQUF5QjtJQXFCcEMsWUFBb0IsV0FBdUIsRUFBVSxFQUFlLEVBQzFELEdBQWUsRUFBVSxNQUFxQjtRQURwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDMUQsUUFBRyxH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QUFDLGNBQWMsQ0FBQyxxREFBcUQsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRXBMLEtBQUssQ0FBQyxjQUFjLENBQUMsb0RBQW9ELEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ2hMLEtBQUssQ0FBQyxjQUFjLENBQUMsMkRBQTJELEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNqTSxDQUFDOytHQXBSVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixzUUNoQnRDLDZ2T0FzSEE7OzRGRHRHYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UseUNBQXlDO2dMQUsxQyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcclxuaW1wb3J0IHsgSVVwbG9hZEVTaWduYXR1cmVDb25maWd1cmF0aW9uLCBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbiwgVVBMT0FEX0VfU0lHTkFUVVJFX0NPTkZJR1VSQVRJT05fREVGQVVMVCwgVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJlc3BvbnNlRXJyb3IsIFNoYXJlZFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNoYXJlZCc7XHJcbmltcG9ydCB7IEZhZFNlcnZpY2UsIE1pZmllbFNlcnZpY2UsIFNpZ25hdHVyZUZlYVJlcXVlc3QsIFNpZ25JbnRlcm5hbEZlYVJlcXVlc3QgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLWUtc2lnbmF0dXJlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91cGxvYWQtZS1zaWduYXR1cmUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkRVNpZ25hdHVyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbiE6IElVcGxvYWRFU2lnbmF0dXJlQ29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBkb2N1bWVudHM6IFNpZ25JbnRlcm5hbEZlYVJlcXVlc3RbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNpZ25lcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJmYyE6IHN0cmluZztcclxuICBAT3V0cHV0KCkgb25lcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VFcnJvcj4oKTtcclxuICBAT3V0cHV0KCkgb25sb2FkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIG9uY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bGwgfCBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGU+KCk7XHJcbiAgdXBsb2FkSW1nITogc3RyaW5nO1xyXG4gIGNoZWNrT25JbWchOiBzdHJpbmc7XHJcbiAgY2hlY2tPZmZJbWchOiBzdHJpbmc7XHJcbiAgZmlsZUltZyE6IHN0cmluZztcclxuICBmb3JtYXRDZXJMaXN0ID0gWydjZXInXTtcclxuICBmb3JtYXRLZXlMaXN0ID0gWydrZXknXTtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHBhc3N3b3JkSW5wdXRUeXBlID0gJ3Bhc3N3b3JkJztcclxuICBkb2N1bWVudFBsdXJhbFRpdGxlITogc3RyaW5nO1xyXG4gIGRvY3VtZW50U2luZ3VsYXJUaXRsZSE6IHN0cmluZztcclxuICBpc1ZhbGlkYXRlZCA9IGZhbHNlO1xyXG4gIHNob3dDb21wb25lbnQgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3RDb250ZXh0OiBFbGVtZW50UmVmLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZmFkOiBGYWRTZXJ2aWNlLCBwcml2YXRlIG1pZmllbDogTWlmaWVsU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSh0aGlzLmhvc3RDb250ZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuICAgIHRoaXMudXBsb2FkSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8udXBsb2FkIHx8IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeX11cGxvYWQuc3ZnYDtcclxuICAgIHRoaXMuY2hlY2tPbkltZyA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LmNoZWNrT24gfHwgYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlRGlyZWN0b3J5fWNoZWNrLW9uLnN2Z2A7XHJcbiAgICB0aGlzLmNoZWNrT2ZmSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uY2hlY2tPZmYgfHwgYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlRGlyZWN0b3J5fWNoZWNrLW9mZi5zdmdgO1xyXG4gICAgdGhpcy5maWxlSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uZmlsZSB8fCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VEaXJlY3Rvcnl9ZmlsZS5zdmdgO1xyXG5cclxuICAgIHRoaXMuc2hvd0NvbXBvbmVudCA9IHRoaXMudmFsaWRhdGVEYXRhKCk7XHJcbiAgICBpZiAodGhpcy5zaG93Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRQbHVyYWxUaXRsZSA9IHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnRpdGxlPy5wbHVyYWw/LnJlcGxhY2UoJyNUT1RBTF9ET0NTJywgdGhpcy5kb2N1bWVudHM/Lmxlbmd0aC50b1N0cmluZygpKSE7IC8vIHBvbmVyIGxvbmdpdHVkXHJcbiAgICAgIGlmICh0aGlzLmRvY3VtZW50cz8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5kb2N1bWVudHNbMF0uYXBwcm92ZWQgPyB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy50aXRsZT8uYXBwcm92ZWQhIDogdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8udGl0bGU/LnJlamVjdGVkITtcclxuICAgICAgICB0aGlzLmRvY3VtZW50U2luZ3VsYXJUaXRsZSA9IHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnRpdGxlPy5zaW5ndWxhcj8ucmVwbGFjZSgnI1NUQVRVU19ET0MnLCBzdGF0dXMpITsgLy8gcG9uZXIgbG9uZ2l0dWRcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVEYXRhKCkge1xyXG4gICAgaWYoIXRoaXMuZG9jdW1lbnRzIHx8IHRoaXMuZG9jdW1lbnRzLmxlbmd0aCA8IDEpIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5OT19ET0NVTUVOVFMsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTk9fRE9DVU1FTlRTKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCF0aGlzLnNpZ25lcklkKSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTk9fU0lHTkVSX0lELCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk5PX1NJR05FUl9JRCksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZighdGhpcy5yZmMpIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5OT19SRkMsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTk9fUkZDKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaW5pdEZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgY2VyOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAga2V5OiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgcGFzc3dvcmQ6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBjZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnY2VyJyk7XHJcbiAgfVxyXG5cclxuICBnZXQga2V5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2tleScpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhc3N3b3JkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3Bhc3N3b3JkJyk7XHJcbiAgfVxyXG5cclxuICBvcGVuRmlsZVBpY2tlcihmaWxlSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgIGZpbGVJbnB1dC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb25GaWxlQ2hhbmdlKGV2ZW50OiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuICAgIGlmICghZmlsZSkgcmV0dXJuO1xyXG5cclxuICAgIGlmIChldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk1VTFRJUExFX0ZJTEVTLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk1VTFRJUExFX0ZJTEVTKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlID09PSAnY2VyJyAmJiAhL1xcLmNlciQvLnRlc3QoZmlsZS5uYW1lKSkge1xyXG4gICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9DRVIsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0NFUiksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZSA9PT0gJ2tleScgJiYgIS9cXC5rZXkkLy50ZXN0KGZpbGUubmFtZSkpIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfS0VZLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9LRVkpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZSA9PT0gJ2NlcicgPyB0aGlzLmNlcj8uc2V0VmFsdWUoZmlsZSkgOiB0aGlzLmtleT8uc2V0VmFsdWUoZmlsZSk7XHJcbiAgfVxyXG5cclxuICBvbmZpbGVkcm9wcGVkKGZpbGVzOiBGaWxlTGlzdCwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlID0gZmlsZXNbMF07XHJcbiAgICB0eXBlID09PSAnY2VyJyA/IHRoaXMuY2VyPy5zZXRWYWx1ZShmaWxlKSA6IHRoaXMua2V5Py5zZXRWYWx1ZShmaWxlKTtcclxuICB9XHJcblxyXG4gIG9uZXJyb3JEaXJlY3RpdmUoZXZlbnQ6IFJlc3BvbnNlRXJyb3IsIHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09IC0xKSB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk1VTFRJUExFX0ZJTEVTLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk1VTFRJUExFX0ZJTEVTKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgIGlmIChldmVudC5jb2RlID09PSAtMiAmJiB0eXBlID09PSAnY2VyJykgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfQ0VSLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9DRVIpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09IC0yICYmIHR5cGUgPT09ICdrZXknKSB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9LRVksIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0tFWSksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQYXN3b3JkSW5wdXRUeXBlKCkge1xyXG4gICAgdGhpcy5wYXNzd29yZElucHV0VHlwZSA9IHRoaXMucGFzc3dvcmRJbnB1dFR5cGUgPT09ICd0ZXh0JyA/ICdwYXNzd29yZCcgOiAndGV4dCc7XHJcbiAgfVxyXG5cclxuICBzYXZlUGFzc3dvcmQodmFsdWU6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB2YWx1ZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIHRoaXMucGFzc3dvcmQ/LnNldFZhbHVlKGlucHV0RWxlbWVudC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBhbGxJc1JlamVjdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRzLmV2ZXJ5KGRvYyA9PiBkb2MuYXBwcm92ZWQgPT09IGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uU2lnbkRvY3VtZW50cygpIHtcclxuICAgIGNvbnN0IGFwcm92ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50cy5maWx0ZXIoKGRvYykgPT4gZG9jLmFwcHJvdmVkKTtcclxuICAgIGNvbnN0IHJlamVjdGVkRG9jdW1lbnRzID0gdGhpcy5kb2N1bWVudHMuZmlsdGVyKChkb2MpID0+ICFkb2MuYXBwcm92ZWQpO1xyXG4gICAgbGV0IGNlcjogbnVsbCB8IFVwbG9hZEVTaWduYXR1cmVDb21wbGV0ZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKGFwcm92ZWREb2N1bWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2lnbkRvY3VtZW50cygpO1xyXG4gICAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm47XHJcbiAgICAgIGNlciA9IHJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZWplY3RlZERvY3VtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZWplY3REb2N1bWVudHMoKTtcclxuICAgICAgaWYgKCFyZXNwb25zZSkgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25jb21wbGV0ZS5lbWl0KGNlcik7XHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2lnbkRvY3VtZW50cygpOiBQcm9taXNlPG51bGwgfCBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGU+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTtcclxuICAgICAgY29uc3QgY2VyID0gYXdhaXQgdGhpcy5nZXRCYXNlNjRGaWxlKHRoaXMuY2VyPy52YWx1ZSk7XHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgIGlmICghY2VyKSByZWplY3QobnVsbCk7XHJcblxyXG4gICAgICB0aGlzLm9ubG9hZGVyLmVtaXQodHJ1ZSk7XHJcbiAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZ2V0QmFzZTY0RmlsZSh0aGlzLmtleT8udmFsdWUpO1xyXG4gICAgICB0aGlzLm9ubG9hZGVyLmVtaXQoZmFsc2UpO1xyXG4gICAgICBpZiAoIWtleSkgcmVqZWN0KG51bGwpO1xyXG5cclxuICAgICAgY29uc3QgYXBycm92ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50cy5maWx0ZXIoKGRvYykgPT4gZG9jLmFwcHJvdmVkKTtcclxuXHJcbiAgICAgIGNvbnN0IGRhdGE6IFNpZ25hdHVyZUZlYVJlcXVlc3QgPSB7XHJcbiAgICAgICAgY2VyOiBjZXIhLnNwbGl0KCcsJylbMV0sXHJcbiAgICAgICAga2V5OiBrZXkhLnNwbGl0KCcsJylbMV0sXHJcbiAgICAgICAgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmQ/LnZhbHVlLFxyXG4gICAgICAgIGRvY3VtZW50czogYXBycm92ZWREb2N1bWVudHMsXHJcbiAgICAgICAgc2lnbmVySWQ6IHRoaXMucmZjXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTtcclxuICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHRoaXMubWlmaWVsLmdldFNpZ25Cb2R5KGRhdGEpO1xyXG4gICAgICB0aGlzLm9ubG9hZGVyLmVtaXQoZmFsc2UpO1xyXG4gICAgICBpZiAoIWJvZHkpIHtcclxuICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLlBBU1NXT1JEX0VSUk9SLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLlBBU1NXT1JEX0VSUk9SKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTtcclxuICAgICAgdGhpcy5mYWQuc2lnbkZlYShib2R5ISwgdGhpcy5jb25maWd1cmF0aW9uLmNyZWRlbnRpYWxzPy5rZXkhLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3JlZGVudGlhbHM/Lml2ISwgdGhpcy5jb25maWd1cmF0aW9uLnNlcnZpY2VzPy5zaWduISkucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9ubG9hZGVyLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgY29uc3QgY2VydGlmaWNhdGUgPSB0aGlzLm1pZmllbC5wYXJzZUNlcnRpZmljYXRlKGRhdGEuY2VyKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNlcjogVXBsb2FkRVNpZ25hdHVyZUNvbXBsZXRlID0ge1xyXG4gICAgICAgICAgICAgIGNlcjogY2VydGlmaWNhdGUhXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoY2VyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuU0VSVklDRSxyZXMuZXJyb3IsICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgICAgICAgIHJlamVjdChudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkhUVFAsIGVycm9yLmVycm9yLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZWplY3REb2N1bWVudHMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCByZWplY3RlZERvY3VtZW50cyA9IHRoaXMuZG9jdW1lbnRzLmZpbHRlcigoZG9jKSA9PiAhZG9jLmFwcHJvdmVkKTtcclxuXHJcbiAgICAgIGNvbnN0IGJvZHk6IFNpZ25hdHVyZUZlYVJlcXVlc3QgPSB7XHJcbiAgICAgICAgY2VyOiAnJyxcclxuICAgICAgICBrZXk6ICcnLFxyXG4gICAgICAgIHBhc3N3b3JkOiAnJyxcclxuICAgICAgICBkb2N1bWVudHM6IHJlamVjdGVkRG9jdW1lbnRzLm1hcChyZXMgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHJlcy5pZCxcclxuICAgICAgICAgICAgaWRSZXF1aXNpdGlvbjogcmVzLmlkUmVxdWlzaXRpb24sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc2lnbmVySWQ6IHRoaXMuc2lnbmVySWRcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xyXG5cclxuICAgICAgdGhpcy5mYWQucmVqZWN0RmVhKGJvZHksIHRoaXMuY29uZmlndXJhdGlvbi5jcmVkZW50aWFscz8ua2V5ISwgdGhpcy5jb25maWd1cmF0aW9uLmNyZWRlbnRpYWxzPy5pdiEsIHRoaXMuY29uZmlndXJhdGlvbi5zZXJ2aWNlcz8ucmVqZWN0ISkucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9ubG9hZGVyLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuU0VSVklDRSxyZXMuZXJyb3IsICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgICAgICAgIHJlamVjdChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5IVFRQLCBlcnJvci5lcnJvciwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgICAgIHJlamVjdChmYWxzZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0QmFzZTY0RmlsZShmaWxlOiBGaWxlKSB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgU2hhcmVkVXRpbHMuZmlsZVRvQmFzZTY0KGZpbGUpLnRoZW4oYmFzZTY0ID0+IGJhc2U2NCkuY2F0Y2goZXJyb3IgPT4gbnVsbCk7XHJcbiAgICBpZiAoZGF0YSkgcmV0dXJuIGRhdGEgYXMgc3RyaW5nO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRVJST1JfQkFTRV82NCwgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5FUlJPUl9CQVNFXzY0KSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDdXN0b21pemF0aW9uU3R5bGUodGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gVXRpbHMubWVyZ2VDb25maWd1cmF0aW9uKG5ldyBDb25maWd1cmF0aW9uKCksIFVQTE9BRF9FX1NJR05BVFVSRV9DT05GSUdVUkFUSU9OX0RFRkFVTFQsIHRoaXMuY29uZmlndXJhdGlvbik7XHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS1kb2N1bWVudHMtYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5zdHlsZT8uZG9jdW1lbnRzPy5iYWNrZ3JvdW5kQ29sb3IsIHsgdGFyZ2V0RWxlbWVudCB9KTtcclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLWRvY3VtZW50cy1ib3JkZXItcmFkaXVzJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy5kb2N1bWVudHM/LmJvcmRlclJhZGl1cywgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG5cclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLXVwbG9hZC1iYWNrZ3JvdW5kLWNvbG9yJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJhY2tncm91bmRDb2xvciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtdXBsb2FkLWJvcmRlcicsIHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5zdHlsZT8udXBsb2FkPy5ib3JkZXIsIHsgdGFyZ2V0RWxlbWVudCB9KTtcclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLXVwbG9hZC1ib3JkZXItcmFkaXVzJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJvcmRlclJhZGl1cywgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG5cclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLXVwbG9hZC1idXR0b24tYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5zdHlsZT8udXBsb2FkPy5idXR0b24/LmJhY2tncm91bmRDb2xvciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtdXBsb2FkLWJ1dHRvbi1ib3JkZXItcmFkaXVzJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJ1dHRvbj8uYm9yZGVyUmFkaXVzLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS11cGxvYWQtYnV0dG9uLWhvdmVyJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJ1dHRvbj8uaG92ZXIsIHsgdGFyZ2V0RWxlbWVudCB9KTtcclxuXHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS1maWxlLWJvcmRlci1yYWRpdXMnLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LmZpbGU/LmJvcmRlclJhZGl1cywgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtZmlsZS1pbWctYmFja2dyb3VuZC1jb2xvcicsIHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5zdHlsZT8uZmlsZT8uaW1nPy5iYWNrZ3JvdW5kQ29sb3IsIHsgdGFyZ2V0RWxlbWVudCB9KTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dDb21wb25lbnRcIj5cclxuICA8ZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRvY3VtZW50cy5sZW5ndGggPiAxXCIgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlLWJvbGRcIj57eyBkb2N1bWVudFBsdXJhbFRpdGxlIH19PC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA9PT0gMVwiIGNsYXNzPVwiZmFkLXBvcnRhbC10aXRsZS1ib2xkXCI+e3sgZG9jdW1lbnRTaW5ndWxhclRpdGxlIH19PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1kb2N1bWVudCBmYWQtcG9ydGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaSBvZiBkb2N1bWVudHNcIiBjbGFzcz1cImRvY3VtZW50XCI+XHJcbiAgICAgICAgPGRpdj57eyBpLmRvYy5uYW1lIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cyBmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZFwiPnt7IGkuYXBwcm92ZWQgPyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8uc3RhdHVzPy5hcHByb3ZlZCA6ICBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8uc3RhdHVzPy5yZWplY3RlZCB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlc1wiPnt7IGkuZG9jLnBhZ2VzIH19IHt7IGkuZG9jLnBhZ2VzID4gMSA/IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy5wYWdlcz8ucGx1cmFsIDogY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnBhZ2VzPy5zaW5ndWxhciB9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFsbElzUmVqZWN0ZWQoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtdGl0bGUtYm9sZFwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8udGl0bGUgfX08L2Rpdj5cclxuXHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWluc3RydWN0aW9uLWZpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50XCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5jZXI/LmxhYmVsIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImNlcj8udmFsdWVcIiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudCBzZWxlY3QtZmlsZVwiIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcihmaWxlQ2VySW5wdXQpXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy51cGxvYWQgfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCIhY2VyPy52YWx1ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJjb250YWluZXItdXBsb2FkXCJcclxuICAgICAgICAoY2xpY2spPVwib3BlbkZpbGVQaWNrZXIoZmlsZUNlcklucHV0KVwiXHJcbiAgICAgICAgZHJhZ0Ryb3BEb2N1bWVudFxyXG4gICAgICAgIFtmb3JtYXRMaXN0XT1cImZvcm1hdENlckxpc3RcIlxyXG4gICAgICAgIFthY2NlcHRNdWx0aXBsZUZpbGVzXT1cImZhbHNlXCJcclxuICAgICAgICAob25maWxlZHJvcHBlZCk9XCJvbmZpbGVkcm9wcGVkKCRldmVudCwgJ2NlcicpXCJcclxuICAgICAgICAob25lcnJvcik9XCJvbmVycm9yRGlyZWN0aXZlKCRldmVudCwgJ2NlcicpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudCBpbnN0cnVjdGlvblwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8uY2VyPy5pbnN0cnVjdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZCB1cGxvYWQtYnRuXCI+XHJcbiAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSBbc3JjXT1cInVwbG9hZEltZ1wiPjwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgICAgIDxzcGFuPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8uY2VyPy51cGxvYWQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cImNlcj8udmFsdWVcIiBjbGFzcz1cImNvbnRhaW5lci1maWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LWltZ1wiPlxyXG4gICAgICAgICAgPGltZyBbc3JjXT1cImZpbGVJbWdcIiBhbHQ9XCJcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50XCI+e3sgY2VyPy52YWx1ZS5uYW1lIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLmNlclwiICNmaWxlQ2VySW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCAnY2VyJylcIj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItaW5zdHJ1Y3Rpb24tZmlsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LmtleT8ubGFiZWwgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwia2V5Py52YWx1ZVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IHNlbGVjdC1maWxlXCIgKGNsaWNrKT1cIm9wZW5GaWxlUGlja2VyKGZpbGVLZXlJbnB1dClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnVwbG9hZCB9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIiFrZXk/LnZhbHVlXCJcclxuICAgICAgICBjbGFzcz1cImNvbnRhaW5lci11cGxvYWRcIlxyXG4gICAgICAgIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcihmaWxlS2V5SW5wdXQpXCJcclxuICAgICAgICBkcmFnRHJvcERvY3VtZW50XHJcbiAgICAgICAgW2Zvcm1hdExpc3RdPVwiZm9ybWF0S2V5TGlzdFwiXHJcbiAgICAgICAgW2FjY2VwdE11bHRpcGxlRmlsZXNdPVwiZmFsc2VcIlxyXG4gICAgICAgIChvbmZpbGVkcm9wcGVkKT1cIm9uZmlsZWRyb3BwZWQoJGV2ZW50LCAna2V5JylcIlxyXG4gICAgICAgIChvbmVycm9yKT1cIm9uZXJyb3JEaXJlY3RpdmUoJGV2ZW50LCAna2V5JylcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudCBpbnN0cnVjdGlvblwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8ua2V5Py5pbnN0cnVjdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZCB1cGxvYWQtYnRuXCI+XHJcbiAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSBbc3JjXT1cInVwbG9hZEltZ1wiPjwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgICAgIDxzcGFuPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8ua2V5Py51cGxvYWQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cImtleT8udmFsdWVcIiBjbGFzcz1cImNvbnRhaW5lci1maWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LWltZ1wiPlxyXG4gICAgICAgICAgPGltZyBbc3JjXT1cImZpbGVJbWdcIiBhbHQ9XCJcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50XCI+e3sga2V5Py52YWx1ZS5uYW1lIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLmtleVwiICNmaWxlS2V5SW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCAna2V5JylcIj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRhaW5lci1pbnB1dFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIiBmb3I9XCJcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnBhc3N3b3JkPy5sYWJlbCB9fTwvbGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1wYXNzd29yZFwiPlxyXG4gICAgICAgIDxpbnB1dCBbdHlwZV09XCJwYXNzd29yZElucHV0VHlwZVwiIChpbnB1dCk9XCJzYXZlUGFzc3dvcmQoJGV2ZW50KVwiIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZCBwYXNzd29yZC1zaG93XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFzc3dvcmRJbnB1dFR5cGUgPT09ICd0ZXh0J1wiIChjbGljayk9XCJjaGFuZ2VQYXN3b3JkSW5wdXRUeXBlKClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnBhc3N3b3JkPy5oaWRlIH19PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFzc3dvcmRJbnB1dFR5cGUgPT09ICdwYXNzd29yZCdcIiAoY2xpY2spPVwiY2hhbmdlUGFzd29yZElucHV0VHlwZSgpXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5wYXNzd29yZD8uc2hvdyB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1mYWQtcG9ydGFsLXNoYXJlZC1mb3JtLWVycm9ycyBbZm9ybURhdGFdPVwicGFzc3dvcmQhXCIgW2NvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvbi5mb3JtRXJyb3JzPy5jb25maWd1cmF0aW9uIVwiPjwvbmctZmFkLXBvcnRhbC1zaGFyZWQtZm9ybS1lcnJvcnM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8ZGl2PjwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IGNvbnRhaW5lci1jb25maXJtXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWFsbElzUmVqZWN0ZWQoKVwiIChjbGljayk9XCJpc1ZhbGlkYXRlZCA9ICFpc1ZhbGlkYXRlZFwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lICpuZ0lmPVwiaXNWYWxpZGF0ZWRcIiBbc3JjXT1cImNoZWNrT25JbWdcIj48L25nLWZhZC1pbWFnZS1pbmxpbmU+XHJcbiAgICAgICAgPG5nLWZhZC1pbWFnZS1pbmxpbmUgKm5nSWY9XCIhaXNWYWxpZGF0ZWRcIiBbc3JjXT1cImNoZWNrT2ZmSW1nXCI+PC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImRvY3VtZW50cy5sZW5ndGggPT09IDFcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNpZ24/LnZhbGlkYXRlPy5zaW5ndWxhciB9fTwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA+IDFcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNpZ24/LnZhbGlkYXRlPy5wbHVyYWwgfX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXY+PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvblwiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRvY3VtZW50cy5sZW5ndGggPT09IDEgJiYgIWFsbElzUmVqZWN0ZWQoKVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1wcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkIHx8ICFpc1ZhbGlkYXRlZFwiIChjbGljayk9XCJvblNpZ25Eb2N1bWVudHMoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8uYnV0dG9uPy5zaWduPy5zaW5ndWxhciB9fTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRvY3VtZW50cy5sZW5ndGggPiAxICYmICFhbGxJc1JlamVjdGVkKClcIiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZCB8fCAhaXNWYWxpZGF0ZWRcIiAoY2xpY2spPVwib25TaWduRG9jdW1lbnRzKClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNpZ24/LmJ1dHRvbj8uc2lnbj8ucGx1cmFsIH19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBhbGxJc1JlamVjdGVkKClcIiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIChjbGljayk9XCJvblNpZ25Eb2N1bWVudHMoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8uYnV0dG9uPy5yZWplY3Q/LnNpbmd1bGFyIH19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA+IDEgJiYgYWxsSXNSZWplY3RlZCgpXCIgY2xhc3M9XCJmYWQtcG9ydGFsLXByaW1hcnlcIiAoY2xpY2spPVwib25TaWduRG9jdW1lbnRzKClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNpZ24/LmJ1dHRvbj8ucmVqZWN0Py5wbHVyYWwgfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWUtc2lnbmF0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNpZ25hdHVyZS1mZWEvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZC1lLXNpZ25hdHVyZS91cGxvYWQtZS1zaWduYXR1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvdXBsb2FkLWUtc2lnbmF0dXJlL3VwbG9hZC1lLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFNUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLHdDQUF3QyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0ksT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPaEMsTUFBTSxPQUFPLHlCQUF5QjtJQXFCcEMsWUFBb0IsV0FBdUIsRUFBVSxFQUFlLEVBQzFELEdBQWUsRUFBVSxNQUFxQjtRQURwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDMUQsUUFBRyxH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LEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ2hMLEtBQUssQ0FBQyxjQUFjLENBQUMsMkRBQTJELEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNqTSxDQUFDOytHQS9RVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixzUUNoQnRDLDZ2T0FzSEE7OzRGRHRHYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UseUNBQXlDO2dMQUsxQyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcclxuaW1wb3J0IHsgSVVwbG9hZEVTaWduYXR1cmVDb25maWd1cmF0aW9uLCBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbiwgVVBMT0FEX0VfU0lHTkFUVVJFX0NPTkZJR1VSQVRJT05fREVGQVVMVCwgVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJlc3BvbnNlRXJyb3IsIFNoYXJlZFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNoYXJlZCc7XHJcbmltcG9ydCB7IEZhZFNlcnZpY2UsIE1pZmllbFNlcnZpY2UsIFNpZ25hdHVyZUZlYVJlcXVlc3QsIFNpZ25JbnRlcm5hbEZlYVJlcXVlc3QgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLWUtc2lnbmF0dXJlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91cGxvYWQtZS1zaWduYXR1cmUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkRVNpZ25hdHVyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbiE6IElVcGxvYWRFU2lnbmF0dXJlQ29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBkb2N1bWVudHM6IFNpZ25JbnRlcm5hbEZlYVJlcXVlc3RbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNpZ25lcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJmYyE6IHN0cmluZztcclxuICBAT3V0cHV0KCkgb25lcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VFcnJvcj4oKTtcclxuICBAT3V0cHV0KCkgb25sb2FkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIG9uY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bGwgfCBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGU+KCk7XHJcbiAgdXBsb2FkSW1nITogc3RyaW5nO1xyXG4gIGNoZWNrT25JbWchOiBzdHJpbmc7XHJcbiAgY2hlY2tPZmZJbWchOiBzdHJpbmc7XHJcbiAgZmlsZUltZyE6IHN0cmluZztcclxuICBmb3JtYXRDZXJMaXN0ID0gWydjZXInXTtcclxuICBmb3JtYXRLZXlMaXN0ID0gWydrZXknXTtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHBhc3N3b3JkSW5wdXRUeXBlID0gJ3Bhc3N3b3JkJztcclxuICBkb2N1bWVudFBsdXJhbFRpdGxlITogc3RyaW5nO1xyXG4gIGRvY3VtZW50U2luZ3VsYXJUaXRsZSE6IHN0cmluZztcclxuICBpc1ZhbGlkYXRlZCA9IGZhbHNlO1xyXG4gIHNob3dDb21wb25lbnQgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3RDb250ZXh0OiBFbGVtZW50UmVmLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZmFkOiBGYWRTZXJ2aWNlLCBwcml2YXRlIG1pZmllbDogTWlmaWVsU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSh0aGlzLmhvc3RDb250ZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuICAgIHRoaXMudXBsb2FkSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8udXBsb2FkIHx8IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeX11cGxvYWQuc3ZnYDtcclxuICAgIHRoaXMuY2hlY2tPbkltZyA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LmNoZWNrT24gfHwgYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlRGlyZWN0b3J5fWNoZWNrLW9uLnN2Z2A7XHJcbiAgICB0aGlzLmNoZWNrT2ZmSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uY2hlY2tPZmYgfHwgYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlRGlyZWN0b3J5fWNoZWNrLW9mZi5zdmdgO1xyXG4gICAgdGhpcy5maWxlSW1nID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uZmlsZSB8fCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VEaXJlY3Rvcnl9ZmlsZS5zdmdgO1xyXG5cclxuICAgIHRoaXMuc2hvd0NvbXBvbmVudCA9IHRoaXMudmFsaWRhdGVEYXRhKCk7XHJcbiAgICBpZiAodGhpcy5zaG93Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRQbHVyYWxUaXRsZSA9IHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnRpdGxlPy5wbHVyYWw/LnJlcGxhY2UoJyNUT1RBTF9ET0NTJywgdGhpcy5kb2N1bWVudHM/Lmxlbmd0aC50b1N0cmluZygpKSE7IC8vIHBvbmVyIGxvbmdpdHVkXHJcbiAgICAgIGlmICh0aGlzLmRvY3VtZW50cz8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5kb2N1bWVudHNbMF0uYXBwcm92ZWQgPyB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy50aXRsZT8uYXBwcm92ZWQhIDogdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8udGl0bGU/LnJlamVjdGVkITtcclxuICAgICAgICB0aGlzLmRvY3VtZW50U2luZ3VsYXJUaXRsZSA9IHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnRpdGxlPy5zaW5ndWxhcj8ucmVwbGFjZSgnI1NUQVRVU19ET0MnLCBzdGF0dXMpITsgLy8gcG9uZXIgbG9uZ2l0dWRcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVEYXRhKCkge1xyXG4gICAgaWYoIXRoaXMuZG9jdW1lbnRzIHx8IHRoaXMuZG9jdW1lbnRzLmxlbmd0aCA8IDEpIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5OT19ET0NVTUVOVFMsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTk9fRE9DVU1FTlRTKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCF0aGlzLnJmYykge1xyXG4gICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk5PX1JGQywgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5OT19SRkMpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBpbml0Rm9ybSgpIHtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBjZXI6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBrZXk6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBwYXNzd29yZDogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNlcigpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdjZXInKTtcclxuICB9XHJcblxyXG4gIGdldCBrZXkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgna2V5Jyk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFzc3dvcmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgncGFzc3dvcmQnKTtcclxuICB9XHJcblxyXG4gIG9wZW5GaWxlUGlja2VyKGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgZmlsZUlucHV0LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVDaGFuZ2UoZXZlbnQ6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgaWYgKCFmaWxlKSByZXR1cm47XHJcblxyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTVVMVElQTEVfRklMRVMsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTVVMVElQTEVfRklMRVMpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUgPT09ICdjZXInICYmICEvXFwuY2VyJC8udGVzdChmaWxlLm5hbWUpKSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0NFUiwgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfQ0VSKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlID09PSAna2V5JyAmJiAhL1xcLmtleSQvLnRlc3QoZmlsZS5uYW1lKSkge1xyXG4gICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9LRVksIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0tFWSksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlID09PSAnY2VyJyA/IHRoaXMuY2VyPy5zZXRWYWx1ZShmaWxlKSA6IHRoaXMua2V5Py5zZXRWYWx1ZShmaWxlKTtcclxuICB9XHJcblxyXG4gIG9uZmlsZWRyb3BwZWQoZmlsZXM6IEZpbGVMaXN0LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcclxuICAgIHR5cGUgPT09ICdjZXInID8gdGhpcy5jZXI/LnNldFZhbHVlKGZpbGUpIDogdGhpcy5rZXk/LnNldFZhbHVlKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgb25lcnJvckRpcmVjdGl2ZShldmVudDogUmVzcG9uc2VFcnJvciwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gLTEpIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTVVMVElQTEVfRklMRVMsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTVVMVElQTEVfRklMRVMpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09IC0yICYmIHR5cGUgPT09ICdjZXInKSB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9DRVIsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0NFUiksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gLTIgJiYgdHlwZSA9PT0gJ2tleScpIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0tFWSwgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfS0VZKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVBhc3dvcmRJbnB1dFR5cGUoKSB7XHJcbiAgICB0aGlzLnBhc3N3b3JkSW5wdXRUeXBlID0gdGhpcy5wYXNzd29yZElucHV0VHlwZSA9PT0gJ3RleHQnID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0JztcclxuICB9XHJcblxyXG4gIHNhdmVQYXNzd29yZCh2YWx1ZTogRXZlbnQpIHtcclxuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHZhbHVlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgdGhpcy5wYXNzd29yZD8uc2V0VmFsdWUoaW5wdXRFbGVtZW50LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGFsbElzUmVqZWN0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudHMuZXZlcnkoZG9jID0+IGRvYy5hcHByb3ZlZCA9PT0gZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25TaWduRG9jdW1lbnRzKCkge1xyXG4gICAgY29uc3QgYXByb3ZlZERvY3VtZW50cyA9IHRoaXMuZG9jdW1lbnRzLmZpbHRlcigoZG9jKSA9PiBkb2MuYXBwcm92ZWQpO1xyXG4gICAgY29uc3QgcmVqZWN0ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50cy5maWx0ZXIoKGRvYykgPT4gIWRvYy5hcHByb3ZlZCk7XHJcbiAgICBsZXQgY2VyOiBudWxsIHwgVXBsb2FkRVNpZ25hdHVyZUNvbXBsZXRlID0gbnVsbDtcclxuXHJcbiAgICBpZiAoYXByb3ZlZERvY3VtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zaWduRG9jdW1lbnRzKCk7XHJcbiAgICAgIGlmICghcmVzcG9uc2UpIHJldHVybjtcclxuICAgICAgY2VyID0gcmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlamVjdGVkRG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlamVjdERvY3VtZW50cygpO1xyXG4gICAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbmNvbXBsZXRlLmVtaXQoY2VyKTtcclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBzaWduRG9jdW1lbnRzKCk6IFByb21pc2U8bnVsbCB8IFVwbG9hZEVTaWduYXR1cmVDb21wbGV0ZT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xyXG4gICAgICBjb25zdCBjZXIgPSBhd2FpdCB0aGlzLmdldEJhc2U2NEZpbGUodGhpcy5jZXI/LnZhbHVlKTtcclxuICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KGZhbHNlKTtcclxuICAgICAgaWYgKCFjZXIpIHJlamVjdChudWxsKTtcclxuXHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTtcclxuICAgICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5nZXRCYXNlNjRGaWxlKHRoaXMua2V5Py52YWx1ZSk7XHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgIGlmICgha2V5KSByZWplY3QobnVsbCk7XHJcblxyXG4gICAgICBjb25zdCBhcHJyb3ZlZERvY3VtZW50cyA9IHRoaXMuZG9jdW1lbnRzLmZpbHRlcigoZG9jKSA9PiBkb2MuYXBwcm92ZWQpO1xyXG5cclxuICAgICAgY29uc3QgZGF0YTogU2lnbmF0dXJlRmVhUmVxdWVzdCA9IHtcclxuICAgICAgICBjZXI6IGNlciEuc3BsaXQoJywnKVsxXSxcclxuICAgICAgICBrZXk6IGtleSEuc3BsaXQoJywnKVsxXSxcclxuICAgICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZD8udmFsdWUsXHJcbiAgICAgICAgZG9jdW1lbnRzOiBhcHJyb3ZlZERvY3VtZW50cyxcclxuICAgICAgICBzaWduZXJJZDogdGhpcy5yZmNcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xyXG4gICAgICBjb25zdCBib2R5ID0gYXdhaXQgdGhpcy5taWZpZWwuZ2V0U2lnbkJvZHkoZGF0YSk7XHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgIGlmICghYm9keSkge1xyXG4gICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuUEFTU1dPUkRfRVJST1IsIGdldFVwbG9hZEVTaWduYXR1cmVFcnJvckRlc2NyaXB0aW9uKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuUEFTU1dPUkRfRVJST1IpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpO1xyXG4gICAgICB0aGlzLmZhZC5zaWduRmVhKGJvZHkhLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3JlZGVudGlhbHM/LmtleSEsIHRoaXMuY29uZmlndXJhdGlvbi5jcmVkZW50aWFscz8uaXYhLCB0aGlzLmNvbmZpZ3VyYXRpb24uc2VydmljZXM/LnNpZ24hKS5waXBlKFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IHRoaXMubWlmaWVsLnBhcnNlQ2VydGlmaWNhdGUoZGF0YS5jZXIpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY2VyOiBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGUgPSB7XHJcbiAgICAgICAgICAgICAgY2VyOiBjZXJ0aWZpY2F0ZSFcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShjZXIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5TRVJWSUNFLHJlcy5lcnJvciwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuSFRUUCwgZXJyb3IuZXJyb3IsICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlamVjdERvY3VtZW50cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlamVjdGVkRG9jdW1lbnRzID0gdGhpcy5kb2N1bWVudHMuZmlsdGVyKChkb2MpID0+ICFkb2MuYXBwcm92ZWQpO1xyXG5cclxuICAgICAgY29uc3QgYm9keTogU2lnbmF0dXJlRmVhUmVxdWVzdCA9IHtcclxuICAgICAgICBjZXI6ICcnLFxyXG4gICAgICAgIGtleTogJycsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICcnLFxyXG4gICAgICAgIGRvY3VtZW50czogcmVqZWN0ZWREb2N1bWVudHMubWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogcmVzLmlkLFxyXG4gICAgICAgICAgICBpZFJlcXVpc2l0aW9uOiByZXMuaWRSZXF1aXNpdGlvbixcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBzaWduZXJJZDogdGhpcy5zaWduZXJJZFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm9ubG9hZGVyLmVtaXQodHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLmZhZC5yZWplY3RGZWEoYm9keSwgdGhpcy5jb25maWd1cmF0aW9uLmNyZWRlbnRpYWxzPy5rZXkhLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3JlZGVudGlhbHM/Lml2ISwgdGhpcy5jb25maWd1cmF0aW9uLnNlcnZpY2VzPy5yZWplY3QhKS5waXBlKFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5TRVJWSUNFLHJlcy5lcnJvciwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkhUVFAsIGVycm9yLmVycm9yLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICAgICAgcmVqZWN0KGZhbHNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRCYXNlNjRGaWxlKGZpbGU6IEZpbGUpIHtcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBTaGFyZWRVdGlscy5maWxlVG9CYXNlNjQoZmlsZSkudGhlbihiYXNlNjQgPT4gYmFzZTY0KS5jYXRjaChlcnJvciA9PiBudWxsKTtcclxuICAgIGlmIChkYXRhKSByZXR1cm4gZGF0YSBhcyBzdHJpbmc7XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5FUlJPUl9CQVNFXzY0LCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkVSUk9SX0JBU0VfNjQpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEN1c3RvbWl6YXRpb25TdHlsZSh0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBVdGlscy5tZXJnZUNvbmZpZ3VyYXRpb24obmV3IENvbmZpZ3VyYXRpb24oKSwgVVBMT0FEX0VfU0lHTkFUVVJFX0NPTkZJR1VSQVRJT05fREVGQVVMVCwgdGhpcy5jb25maWd1cmF0aW9uKTtcclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLWRvY3VtZW50cy1iYWNrZ3JvdW5kLWNvbG9yJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy5kb2N1bWVudHM/LmJhY2tncm91bmRDb2xvciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtZG9jdW1lbnRzLWJvcmRlci1yYWRpdXMnLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LmRvY3VtZW50cz8uYm9yZGVyUmFkaXVzLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcblxyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtdXBsb2FkLWJhY2tncm91bmQtY29sb3InLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LnVwbG9hZD8uYmFja2dyb3VuZENvbG9yLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS11cGxvYWQtYm9yZGVyJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJvcmRlciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtdXBsb2FkLWJvcmRlci1yYWRpdXMnLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LnVwbG9hZD8uYm9yZGVyUmFkaXVzLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcblxyXG4gICAgVXRpbHMuc2V0VmFyaWFibGVDc3MoJy0tZmFkLXNpZ25hdHVyZS1mZWEtZS1zaWduYXR1cmUtdXBsb2FkLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy51cGxvYWQ/LmJ1dHRvbj8uYmFja2dyb3VuZENvbG9yLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS11cGxvYWQtYnV0dG9uLWJvcmRlci1yYWRpdXMnLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LnVwbG9hZD8uYnV0dG9uPy5ib3JkZXJSYWRpdXMsIHsgdGFyZ2V0RWxlbWVudCB9KTtcclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLXVwbG9hZC1idXR0b24taG92ZXInLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8uc3R5bGU/LnVwbG9hZD8uYnV0dG9uPy5ob3ZlciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG5cclxuICAgIFV0aWxzLnNldFZhcmlhYmxlQ3NzKCctLWZhZC1zaWduYXR1cmUtZmVhLWUtc2lnbmF0dXJlLWZpbGUtYm9yZGVyLXJhZGl1cycsIHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5zdHlsZT8uZmlsZT8uYm9yZGVyUmFkaXVzLCB7IHRhcmdldEVsZW1lbnQgfSk7XHJcbiAgICBVdGlscy5zZXRWYXJpYWJsZUNzcygnLS1mYWQtc2lnbmF0dXJlLWZlYS1lLXNpZ25hdHVyZS1maWxlLWltZy1iYWNrZ3JvdW5kLWNvbG9yJywgdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LnN0eWxlPy5maWxlPy5pbWc/LmJhY2tncm91bmRDb2xvciwgeyB0YXJnZXRFbGVtZW50IH0pO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NvbXBvbmVudFwiPlxyXG4gIDxkaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA+IDFcIiBjbGFzcz1cImZhZC1wb3J0YWwtdGl0bGUtYm9sZFwiPnt7IGRvY3VtZW50UGx1cmFsVGl0bGUgfX08L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkb2N1bWVudHMubGVuZ3RoID09PSAxXCIgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlLWJvbGRcIj57eyBkb2N1bWVudFNpbmd1bGFyVGl0bGUgfX08L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWRvY3VtZW50IGZhZC1wb3J0YWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpIG9mIGRvY3VtZW50c1wiIGNsYXNzPVwiZG9jdW1lbnRcIj5cclxuICAgICAgICA8ZGl2Pnt7IGkuZG9jLm5hbWUgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzIGZhZC1wb3J0YWwtY29udGVudC1ib2xkXCI+e3sgaS5hcHByb3ZlZCA/IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy5zdGF0dXM/LmFwcHJvdmVkIDogIGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy5zdGF0dXM/LnJlamVjdGVkIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2VzXCI+e3sgaS5kb2MucGFnZXMgfX0ge3sgaS5kb2MucGFnZXMgPiAxID8gY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnBhZ2VzPy5wbHVyYWwgOiBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8ucGFnZXM/LnNpbmd1bGFyIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWxsSXNSZWplY3RlZCgpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC10aXRsZS1ib2xkXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy50aXRsZSB9fTwvZGl2PlxyXG5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItaW5zdHJ1Y3Rpb24tZmlsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LmNlcj8ubGFiZWwgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY2VyPy52YWx1ZVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IHNlbGVjdC1maWxlXCIgKGNsaWNrKT1cIm9wZW5GaWxlUGlja2VyKGZpbGVDZXJJbnB1dClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnVwbG9hZCB9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIiFjZXI/LnZhbHVlXCJcclxuICAgICAgICBjbGFzcz1cImNvbnRhaW5lci11cGxvYWRcIlxyXG4gICAgICAgIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcihmaWxlQ2VySW5wdXQpXCJcclxuICAgICAgICBkcmFnRHJvcERvY3VtZW50XHJcbiAgICAgICAgW2Zvcm1hdExpc3RdPVwiZm9ybWF0Q2VyTGlzdFwiXHJcbiAgICAgICAgW2FjY2VwdE11bHRpcGxlRmlsZXNdPVwiZmFsc2VcIlxyXG4gICAgICAgIChvbmZpbGVkcm9wcGVkKT1cIm9uZmlsZWRyb3BwZWQoJGV2ZW50LCAnY2VyJylcIlxyXG4gICAgICAgIChvbmVycm9yKT1cIm9uZXJyb3JEaXJlY3RpdmUoJGV2ZW50LCAnY2VyJylcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IGluc3RydWN0aW9uXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5jZXI/Lmluc3RydWN0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkIHVwbG9hZC1idG5cIj5cclxuICAgICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lIFtzcmNdPVwidXBsb2FkSW1nXCI+PC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICAgICAgPHNwYW4+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5jZXI/LnVwbG9hZCB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY2VyPy52YWx1ZVwiIGNsYXNzPVwiY29udGFpbmVyLWZpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtaW1nXCI+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiZmlsZUltZ1wiIGFsdD1cIlwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIj57eyBjZXI/LnZhbHVlLm5hbWUgfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIuY2VyXCIgI2ZpbGVDZXJJbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQsICdjZXInKVwiPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1pbnN0cnVjdGlvbi1maWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudFwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8ua2V5Py5sYWJlbCB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJrZXk/LnZhbHVlXCIgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQgc2VsZWN0LWZpbGVcIiAoY2xpY2spPVwib3BlbkZpbGVQaWNrZXIoZmlsZUtleUlucHV0KVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8udXBsb2FkIH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiIWtleT8udmFsdWVcIlxyXG4gICAgICAgIGNsYXNzPVwiY29udGFpbmVyLXVwbG9hZFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWxlUGlja2VyKGZpbGVLZXlJbnB1dClcIlxyXG4gICAgICAgIGRyYWdEcm9wRG9jdW1lbnRcclxuICAgICAgICBbZm9ybWF0TGlzdF09XCJmb3JtYXRLZXlMaXN0XCJcclxuICAgICAgICBbYWNjZXB0TXVsdGlwbGVGaWxlc109XCJmYWxzZVwiXHJcbiAgICAgICAgKG9uZmlsZWRyb3BwZWQpPVwib25maWxlZHJvcHBlZCgkZXZlbnQsICdrZXknKVwiXHJcbiAgICAgICAgKG9uZXJyb3IpPVwib25lcnJvckRpcmVjdGl2ZSgkZXZlbnQsICdrZXknKVwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250ZW50IGluc3RydWN0aW9uXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5rZXk/Lmluc3RydWN0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkIHVwbG9hZC1idG5cIj5cclxuICAgICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lIFtzcmNdPVwidXBsb2FkSW1nXCI+PC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICAgICAgPHNwYW4+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5rZXk/LnVwbG9hZCB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwia2V5Py52YWx1ZVwiIGNsYXNzPVwiY29udGFpbmVyLWZpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtaW1nXCI+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiZmlsZUltZ1wiIGFsdD1cIlwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIj57eyBrZXk/LnZhbHVlLm5hbWUgfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIua2V5XCIgI2ZpbGVLZXlJbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQsICdrZXknKVwiPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGFpbmVyLWlucHV0XCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudFwiIGZvcj1cIlwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8ucGFzc3dvcmQ/LmxhYmVsIH19PC9sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXBhc3N3b3JkXCI+XHJcbiAgICAgICAgPGlucHV0IFt0eXBlXT1cInBhc3N3b3JkSW5wdXRUeXBlXCIgKGlucHV0KT1cInNhdmVQYXNzd29yZCgkZXZlbnQpXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIi8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudC1ib2xkIHBhc3N3b3JkLXNob3dcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXNzd29yZElucHV0VHlwZSA9PT0gJ3RleHQnXCIgKGNsaWNrKT1cImNoYW5nZVBhc3dvcmRJbnB1dFR5cGUoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZVNpZ25hdHVyZT8ucGFzc3dvcmQ/LmhpZGUgfX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXNzd29yZElucHV0VHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiIChjbGljayk9XCJjaGFuZ2VQYXN3b3JkSW5wdXRUeXBlKClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnBhc3N3b3JkPy5zaG93IH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWZhZC1wb3J0YWwtc2hhcmVkLWZvcm0tZXJyb3JzIFtmb3JtRGF0YV09XCJwYXNzd29yZCFcIiBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uLmZvcm1FcnJvcnM/LmNvbmZpZ3VyYXRpb24hXCI+PC9uZy1mYWQtcG9ydGFsLXNoYXJlZC1mb3JtLWVycm9ycz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxkaXY+PC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQgY29udGFpbmVyLWNvbmZpcm1cIj5cclxuICAgIDxkaXYgKm5nSWY9XCIhYWxsSXNSZWplY3RlZCgpXCIgKGNsaWNrKT1cImlzVmFsaWRhdGVkID0gIWlzVmFsaWRhdGVkXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG5nLWZhZC1pbWFnZS1pbmxpbmUgKm5nSWY9XCJpc1ZhbGlkYXRlZFwiIFtzcmNdPVwiY2hlY2tPbkltZ1wiPjwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSAqbmdJZj1cIiFpc1ZhbGlkYXRlZFwiIFtzcmNdPVwiY2hlY2tPZmZJbWdcIj48L25nLWZhZC1pbWFnZS1pbmxpbmU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA9PT0gMVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8udmFsaWRhdGU/LnNpbmd1bGFyIH19PC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJkb2N1bWVudHMubGVuZ3RoID4gMVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8udmFsaWRhdGU/LnBsdXJhbCB9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdj48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAhYWxsSXNSZWplY3RlZCgpXCIgY2xhc3M9XCJmYWQtcG9ydGFsLXByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWQgfHwgIWlzVmFsaWRhdGVkXCIgKGNsaWNrKT1cIm9uU2lnbkRvY3VtZW50cygpXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5zaWduPy5idXR0b24/LnNpZ24/LnNpbmd1bGFyIH19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA+IDEgJiYgIWFsbElzUmVqZWN0ZWQoKVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1wcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkIHx8ICFpc1ZhbGlkYXRlZFwiIChjbGljayk9XCJvblNpZ25Eb2N1bWVudHMoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8uYnV0dG9uPy5zaWduPy5wbHVyYWwgfX08L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkb2N1bWVudHMubGVuZ3RoID09PSAxICYmIGFsbElzUmVqZWN0ZWQoKVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uU2lnbkRvY3VtZW50cygpXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5zaWduPy5idXR0b24/LnJlamVjdD8uc2luZ3VsYXIgfX08L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkb2N1bWVudHMubGVuZ3RoID4gMSAmJiBhbGxJc1JlamVjdGVkKClcIiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIChjbGljayk9XCJvblNpZ25Eb2N1bWVudHMoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8uYnV0dG9uPy5yZWplY3Q/LnBsdXJhbCB9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -692,10 +692,6 @@ class UploadESignatureComponent {
692
692
  this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_DOCUMENTS, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_DOCUMENTS), 'ng-fad-signature-fea-upload-e-signature'));
693
693
  return false;
694
694
  }
695
- if (!this.signerId) {
696
- this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_SIGNER_ID, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_SIGNER_ID), 'ng-fad-signature-fea-upload-e-signature'));
697
- return false;
698
- }
699
695
  if (!this.rfc) {
700
696
  this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_RFC, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_RFC), 'ng-fad-signature-fea-upload-e-signature'));
701
697
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"fad-producto-portal-ng-fad-signature-fea.mjs","sources":["../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/document-approval-list/document-approval-lis-tconfiguration.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/generic-error-fea/configuration-generic-error-fea.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/upload-e-signature/configuration-upload-e-signature.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/validate-rfc/configuration-validate-rfc.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/validate-signature/validate-signature.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/pdf-viewer-fea/pdf-viewer-fea-configuration.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/document-approval-list/document-approval-list-error-code.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/document-approval-list/document-approval-list-error-description.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/generic-error-fea/generic-error-fea-error-code.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/generic-error-fea/generic-error-fea-error-description.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/upload-e-signature/upload-e-signature-error-code.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/upload-e-signature/upload-e-signature-error-description.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/validate-rfc/validate-rfc-error-code.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/validate-rfc/validate-rfc-error-description.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/validate-signature/validate-signature-error-code.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/validate-signature/validate-signature-error-description.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/pdf-viewer-fea/pdf-viewer-fea.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/pdf-viewer-fea/pdf-viewer-fea.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/validate-rfc/validate-rfc.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/validate-rfc/validate-rfc.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/document-approval-list/document-approval-list.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/document-approval-list/document-approval-list.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/upload-e-signature/upload-e-signature.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/upload-e-signature/upload-e-signature.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/generic-error-fea/generic-error-fea.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/generic-error-fea/generic-error-fea.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/validate-signature/validate-signature.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/validate-signature/validate-signature.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/signature-summary/signature-summary-configuration.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/signature-summary/signature-summary.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/signature-summary/signature-summary.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/ng-fad-signature-fea.module.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/public-api.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/fad-producto-portal-ng-fad-signature-fea.ts"],"sourcesContent":["import { IDocumentApprovalListConfiguration } from \"../../../models\";\r\n\r\nexport const DOCUMENT_APPROVAL_LIST_DEFAULT: IDocumentApprovalListConfiguration = {\r\n\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n sendTo: 'Enviado por',\r\n seeDocument: 'Ver documento',\r\n hideDocument: 'Ocultar documento',\r\n download:'Descargar',\r\n pages: 'Páginas'\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/document-approval-list/',\r\n }\r\n};\r\n","import { IGenericErrorFeaConfiguration } from \"../../../models\";\r\n\r\nexport const GENERIC_ERROR_FEA_CONFIGURATION_DEFAULT: IGenericErrorFeaConfiguration = {\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n title: 'Aviso',\r\n instruction: 'No existe un documento que corresponda a este URL (la dirección web). Si copiaste y pegaste la dirección, es posible que hayas cometido un error. Asegúrate de que no sobren o falten caracteres e intenta nuevamente.'\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/generic-error-fea/',\r\n }\r\n};\r\n","import { IUploadESignatureConfiguration } from \"../../../models\";\r\n\r\nexport const UPLOAD_E_SIGNATURE_CONFIGURATION_DEFAULT: IUploadESignatureConfiguration = {\r\n services: {\r\n reject: { loader: true, error: true },\r\n sign: { loader: true, error: true }\r\n },\r\n credentials: {\r\n key: 'JJQUfgm0i5MJ70NI',\r\n iv: 'uxQKO3FiCiht0uVU'\r\n },\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n documents: {\r\n backgroundColor: '#f5f5f5',\r\n borderRadius: '15px'\r\n },\r\n upload: {\r\n backgroundColor: '#f4f6fa',\r\n borderRadius: '10px',\r\n border: '2px dashed var(--fad-portal-common-legends-tertiary)',\r\n button: {\r\n backgroundColor: '#e3e7f0',\r\n borderRadius: '50px',\r\n hover: '#cbd7f5'\r\n }\r\n },\r\n file: {\r\n borderRadius: '10px',\r\n img: {\r\n backgroundColor: '#f5f5f5'\r\n }\r\n }\r\n },\r\n legends: {\r\n documents: {\r\n pages: {\r\n singular: 'Página',\r\n plural: 'Páginas'\r\n },\r\n status: {\r\n approved: 'Aprobado',\r\n rejected: 'Rechazado'\r\n },\r\n title: {\r\n plural: 'Documentos para enviar (#TOTAL_DOCS)',\r\n singular: 'Documento #STATUS_DOC para firma',\r\n approved: 'aprobado',\r\n rejected: 'rechazado'\r\n }\r\n },\r\n eSignature: {\r\n cer: {\r\n instruction: 'Selecciona o arrastra el archivo .CER',\r\n label: 'Certificado .CER',\r\n upload: 'Subir .CER'\r\n },\r\n key: {\r\n instruction: 'Selecciona o arrastra el archivo .KEY',\r\n label: 'Llave privada .KEY',\r\n upload: 'Subir .KEY'\r\n },\r\n password: {\r\n hide: 'OCULTAR',\r\n label: 'Ingresa la contraseña de tu e.firma',\r\n show: 'MOSTRAR'\r\n },\r\n title: 'Ingresa tu e.firma para firmar los documentos',\r\n upload: 'Seleccionar otro archivo'\r\n },\r\n sign: {\r\n button: {\r\n reject: {\r\n plural: 'Rechazar documentos',\r\n singular: 'Rechazar documento'\r\n },\r\n sign: {\r\n plural: 'Firmar documentos',\r\n singular: 'Firmar documento'\r\n }\r\n },\r\n validate: {\r\n plural: 'Valido que he leído y he aceptado firmar los documentos',\r\n singular: 'Valido que he leído y he aceptado firmar el documento'\r\n }\r\n }\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/upload-e-signature/',\r\n }\r\n};\r\n","import { IValidateRfcConfiguration } from \"../../../models\";\r\n\r\nexport const SIGNATURE_FEA_CONFIGURATION_DEFAULT: IValidateRfcConfiguration = {\r\n\r\n maxCharacters: 13,\r\n regexRFC: '^[A-ZÑ&]{3,4}[0-9]{6}[A-V1-9][A-Z1-9][0-9A]$',\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n title: 'Código de validación',\r\n description: 'Ingresa tu RFC para comenzar la firma',\r\n buttonLegend: 'Validar'\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/validate-rfc/',\r\n }\r\n};\r\n","import { IValidateSignatureConfiguration } from \"../../../models\";\r\n\r\nexport const VALIDATE_SIGNATURE_CONFIGURATION_DEFAULT: IValidateSignatureConfiguration = {\r\n services: {\r\n signerStatusFea: { loader: true, error: true }\r\n },\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/validate-signature/',\r\n }\r\n};\r\n","import { IPdfViewerFeaConfiguration } from \"../../../models\";\r\n\r\nexport const PDF_VIEWER_FEA_DEFAULT: IPdfViewerFeaConfiguration = {\r\n\r\n pdfMini:{\r\n configuration:{\r\n scrollIntoView: true\r\n }\r\n },\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n \r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/pdf-viewer-fea/',\r\n }\r\n};\r\n","export enum DocumentApprovalListErrorCode {\r\n \r\n SERVICE = -1,\r\n HTTP = -2,\r\n ERROR_PDF = -3,\r\n\r\n}\r\n","import { DocumentApprovalListErrorCode } from \"./document-approval-list-error-code\";\r\n\r\nexport const getDocumentApprovalListErrorDescription = (code: DocumentApprovalListErrorCode) => {\r\n switch (code) {\r\n case -1:\r\n return \"Service error\";\r\n case -2:\r\n return \"HTTP error\";\r\n case -3:\r\n return \"PDF error\";\r\n default:\r\n return 'Unknown error';\r\n }\r\n};\r\n","export enum GenericErrorFeaErrorCode {\r\n}\r\n","import { GenericErrorFeaErrorCode } from \"./generic-error-fea-error-code\";\r\n\r\nexport const getGenericErrorFeaErrorDescription = (code: GenericErrorFeaErrorCode) => {\r\n switch (code) {\r\n default:\r\n return 'Unknown error';\r\n }\r\n};\r\n","export enum UploadESignatureErrorCode {\r\n SERVICE = -1,\r\n HTTP = -2,\r\n NO_DOCUMENTS = -3,\r\n FORMAT_CER = -4,\r\n FORMAT_KEY = -5,\r\n MULTIPLE_FILES = -6,\r\n ERROR_BASE_64 = -7,\r\n NO_SIGNER_ID = -8,\r\n NO_RFC = -9,\r\n PASSWORD_ERROR = -10,\r\n}\r\n","import { UploadESignatureErrorCode } from \"./upload-e-signature-error-code\";\r\n\r\nexport const getUploadESignatureErrorDescription = (code:UploadESignatureErrorCode) => {\r\n switch (code) {\r\n case -1:\r\n return \"Service error\";\r\n case -2:\r\n return \"HTTP error\";\r\n case -3:\r\n return \"Los documentos a procesar son requeridos\";\r\n case -4:\r\n return \"El formato del archivo seleccionado no es .cer\";\r\n case -5:\r\n return \"El formato del archivo seleccionado no es .key\";\r\n case -6:\r\n return \"Solo puedes seleccionar un archivo\";\r\n case -7:\r\n return \"Error al convertir el archivo a base 64\";\r\n case -8:\r\n return \"El ID del firmante es requerido\";\r\n case -9:\r\n return \"El RFC del firmante es requerido\";\r\n case -10:\r\n return \"La contraseña es incorrecta\";\r\n default:\r\n return 'Unknown error';\r\n }\r\n};\r\n","export enum ValidateRFCErrorCode {\r\n \r\n SERVICE = -1,\r\n HTTP = -2,\r\n REQUISITION_ID = -3,\r\n SIGNER_ID = -4,\r\n TICKET = -5,\r\n\r\n}\r\n","import { ValidateRFCErrorCode } from \"./validate-rfc-error-code\";\r\n\r\nexport const getValidateRFCErrorDescription = (code: ValidateRFCErrorCode) => {\r\n switch (code) {\r\n case -1:\r\n return \"Service error\";\r\n case -2:\r\n return \"HTTP error\";\r\n case -3:\r\n return \"There is not requisitionId\";\r\n case -4:\r\n return \"There is not signerId\";\r\n case -5:\r\n return \"There is not Ticket\";\r\n default:\r\n return 'Unknown error';\r\n }\r\n};\r\n","export enum ValidateSignatureErrorCode {\r\n SERVICE = -1,\r\n HTTP = -2,\r\n NO_REQUISITION_ID = -3,\r\n NO_SIGNER_ID = -4,\r\n NO_TICKET = -5,\r\n}\r\n","import { ValidateSignatureErrorCode } from \"./validate-signature-error-code\";\r\n\r\nexport const getValidateSignatureErrorDescription = (code: ValidateSignatureErrorCode) => {\r\n switch (code) {\r\n case -1:\r\n return \"Service error\";\r\n case -2:\r\n return \"HTTP error\";\r\n case -2:\r\n return \"Requisition ID is required\";\r\n case -4:\r\n return \"Signer ID is required\";\r\n case -5:\r\n return \"Ticket is required\";\r\n default:\r\n return 'Unknown error';\r\n }\r\n};\r\n","import { ChangeDetectorRef, Component, Input, ViewChild } from '@angular/core';\r\nimport { NgFadPdfReaderService, ResponseSuccess } from '@fad-producto/ng-fad-pdf-reader';\r\nimport { GeneralPdfViewerComponent as GeneralPdfViewerComponentModule } from '@fad-producto-portal/ng-fad-viewer'\r\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\r\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\r\nimport { PDF_VIEWER_FEA_DEFAULT } from '../../constants';\r\n\r\n@Component({\r\n selector: 'ng-fad-signature-fea-pdf-viewer-fea',\r\n templateUrl: './pdf-viewer-fea.component.html',\r\n styleUrls: ['./pdf-viewer-fea.component.scss'],\r\n providers: [NgFadPdfReaderService]\r\n})\r\nexport class PdfViewerFeaComponent {\r\n\r\n @Input() configuration!: string;\r\n @Input() file!: string\r\n @Input() index!: number;\r\n @Input() id!: string;\r\n\r\n pages: ResponseSuccess[] = [];\r\n page: number = 1;\r\n miniViewConfig = { scrollIntoView: false };\r\n height: number = 1000;\r\n @ViewChild(GeneralPdfViewerComponentModule) generalPdfViewerComponent!: GeneralPdfViewerComponentModule;\r\n\r\n constructor(private pdfService: NgFadPdfReaderService,private cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n if (this.file) {\r\n this.initializePdf(this.file);\r\n }\r\n }\r\n\r\n initializePdf(pdfBase64: string) {\r\n this.pdfService.initialize(pdfBase64, `pdf-${this.index}`);\r\n\r\n this.pdfService.pages.subscribe((res) => {\r\n if (res) {\r\n this.pages = [...this.pages, res];\r\n }\r\n });\r\n }\r\n\r\n onPageChange(page: number) {\r\n this.page = page;\r\n }\r\n\r\n scrollToPage(page: number) {\r\n this.generalPdfViewerComponent.scrollToPage(page);\r\n }\r\n\r\n onLoadPage(data: ResponseSuccess) {\r\n if (data.page === 1) {\r\n const containerElement = document.getElementById(this.id) as HTMLElement;\r\n if (!containerElement) {\r\n return;\r\n }\r\n const observer = new MutationObserver(() => {\r\n const viewerElement = containerElement.querySelector(`#fad-viewer-page-v1-${data.id}-1`) as HTMLElement;\r\n\r\n if (viewerElement) {\r\n observer.disconnect();\r\n const newHeight = viewerElement.clientHeight + 30;\r\n\r\n if (this.height !== newHeight) {\r\n this.height = newHeight;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n });\r\n observer.observe(containerElement, { childList: true, subtree: true });\r\n }\r\n }\r\n\r\n setCustomizationStyle(targetElement = document.documentElement): void {\r\n this.configuration = Utils.mergeConfiguration(\r\n new Configuration(),\r\n PDF_VIEWER_FEA_DEFAULT,\r\n this.configuration\r\n );\r\n }\r\n\r\n\r\n}\r\n","<div class=\"pdf-viewer\" [id]=\"id\" [style.height.px]=\"height\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pages\"\r\n (onpagechange)=\"onPageChange($event)\"\r\n (onloadpage)=\"onLoadPage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniViewConfig\"\r\n [pages]=\"pages\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\"\r\n >\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n</div>","import { Component, ElementRef, EventEmitter, Input, Output, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { IValidateRfcConfiguration } from '../../models';\r\nimport { getValidateRFCErrorDescription, SIGNATURE_FEA_CONFIGURATION_DEFAULT, ValidateRFCErrorCode } from '../../constants';\r\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\r\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { FadService, ResponseData, ValidateRFC } from '@fad-producto-portal/ng-fad-services';\r\nimport { ResponseError } from '@fad-producto-portal/ng-fad-shared';\r\nimport { finalize } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ng-fad-signature-fea-validate-rfc',\r\n templateUrl: './validate-rfc.component.html',\r\n styleUrls: ['./validate-rfc.component.scss']\r\n})\r\nexport class ValidateRfcComponent implements OnInit {\r\n\r\n @Input() configuration!: IValidateRfcConfiguration;\r\n @Input() ticket!: string;\r\n @Output() onerror = new EventEmitter<ResponseError>();\r\n @Output() oncomplete = new EventEmitter<ResponseData<ValidateRFC>>();\r\n @Output() onloader = new EventEmitter<boolean>();\r\n validationForm!: FormGroup;\r\n showComponent: boolean = true;\r\n \r\n constructor(private fb: FormBuilder, private hostContext: ElementRef,private route: ActivatedRoute, private fadService: FadService) {}\r\n\r\n ngOnInit() {\r\n this.setCustomizationStyle(this.hostContext.nativeElement);\r\n this.showComponent = this.validateData();\r\n this.initializeForm();\r\n\r\n }\r\n\r\n initializeForm(): void {\r\n const maxCharacters = this.configuration?.maxCharacters || 13;\r\n const rfcRegex = new RegExp(this.configuration?.regexRFC!);\r\n\r\n this.validationForm = this.fb.group({\r\n code: ['', [\r\n Validators.required,\r\n Validators.minLength(maxCharacters),\r\n Validators.maxLength(maxCharacters),\r\n Validators.pattern(rfcRegex)\r\n ]]\r\n });\r\n }\r\n\r\n onSubmit(): void {\r\n this.validateRFC();\r\n }\r\n\r\n setCustomizationStyle(targetElement = document.documentElement): void {\r\n this.configuration = Utils.mergeConfiguration(\r\n new Configuration(),\r\n SIGNATURE_FEA_CONFIGURATION_DEFAULT,\r\n this.configuration\r\n );\r\n }\r\n\r\n validateData() {\r\n if(!this.ticket) {\r\n this.onerror.emit(new ResponseError(ValidateRFCErrorCode.REQUISITION_ID, getValidateRFCErrorDescription(ValidateRFCErrorCode.REQUISITION_ID) , 'ng-fad-portal-signature-fea-validate-rfc'));\r\n return false;\r\n }\r\n \r\n return true;\r\n }\r\n\r\n validateRFC(){\r\n if( this.validationForm.valid ){\r\n console.error(\"Validar rfc \");\r\n\r\n const validateReq = {\r\n ticket: this.ticket,\r\n rfc: this.codeControl?.value\r\n };\r\n\r\n this.fadService.validateRfc(validateReq)\r\n .pipe(finalize(() => this.onloader.emit(false))) \r\n .subscribe({\r\n next: (response) => {\r\n if( response.success ){\r\n this.oncomplete.emit(response);\r\n }else{\r\n this.onerror.emit(new ResponseError(ValidateRFCErrorCode.SERVICE, response.error, 'ng-fad-portal-signature-fea-validate-rfc'));\r\n }\r\n },\r\n error: (error) => {\r\n this.onerror.emit(new ResponseError(ValidateRFCErrorCode.HTTP, error.error, 'ng-fad-portal-signature-fea-validate-rfc'));\r\n }\r\n });\r\n }\r\n }\r\n\r\n onInputChange(event: any){\r\n const inputValue = event.target.value;\r\n this.validationForm.controls['code'].setValue(inputValue.toUpperCase(), { emitEvent: false });\r\n }\r\n\r\n get codeControl() {\r\n return this.validationForm.get('code') ?? null;\r\n }\r\n}\r\n","\r\n <div class=\"validation-container fad-container\" *ngIf=\"showComponent\">\r\n <div class=\"title\">{{ configuration.customization?.moduleCustomization?.legends?.title }}</div>\r\n <div class=\"fad-portal-subtitle\">{{ configuration.customization?.moduleCustomization?.legends?.description }}</div>\r\n <form [formGroup]=\"validationForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"fad-portal-container-input\">\r\n <input id=\"code\" type=\"text\" formControlName=\"code\" (input)=\"onInputChange($event)\" maxlength=\"{{ configuration.maxCharacters || 13 }}\" />\r\n </div>\r\n <ng-fad-portal-shared-form-errors \r\n [formData]=\"codeControl!\" \r\n [configuration]=\"configuration.formErrors?.configuration!\">\r\n </ng-fad-portal-shared-form-errors>\r\n \r\n <button type=\"submit\" class=\"fad-portal-primary\" [disabled]=\"validationForm.invalid\">\r\n {{ configuration.customization?.moduleCustomization?.legends?.buttonLegend }}\r\n </button>\r\n </form>\r\n </div>\r\n\r\n\r\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\nimport { DocumentApprovalFea, IDocumentApprovalListConfiguration } from '../../models';\nimport { DOCUMENT_APPROVAL_LIST_DEFAULT, getDocumentApprovalListErrorDescription } from '../../constants';\nimport { FadService, RequisitionsFea, ResponseData, RequisitionFeaData, DocumentFea } from '@fad-producto-portal/ng-fad-services';\nimport { ActivatedRoute } from '@angular/router';\nimport { GeneralPdfViewerComponent as GeneralPdfViewerComponentModule, IPdfMiniViewConfiguration } from '@fad-producto-portal/ng-fad-viewer'\nimport { finalize, Subscription } from 'rxjs';\nimport { NgFadPdfReaderService, ResponseSuccess } from '@fad-producto/ng-fad-pdf-reader';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ResponseError, SharedUtils } from '@fad-producto-portal/ng-fad-shared';\nimport { DocumentApprovalListErrorCode } from '../../constants';\n\n@Component({\n selector: 'ng-fad-signature-fea-document-approval-list',\n templateUrl: './document-approval-list.component.html',\n styleUrls: ['./document-approval-list.component.scss'],\n providers: [NgFadPdfReaderService]\n})\nexport class DocumentApprovalListComponent {\n \n @Input() configuration!: IDocumentApprovalListConfiguration;\n @Input() rfc!: string;\n @Output() onloader = new EventEmitter<boolean>();\n @Output() onevent = new EventEmitter<DocumentApprovalFea[]>();\n @Output() onerror: EventEmitter<ResponseError> = new EventEmitter();\n pagesMap: Map<string, ResponseSuccess[]> = new Map();\n requisitionsFea: RequisitionFeaData[] = [];\n documentsApprovalList: DocumentApprovalFea[] = [];\n approveAll: boolean = false;\n \n images = {\n inactive:{\n reject: '',\n approve: ''\n },\n active:{\n reject: '',\n approve: '' \n }\n }\n\n \n\n constructor( private hostContext: ElementRef, private fad: FadService,private cdr: ChangeDetectorRef,private pdfService: NgFadPdfReaderService ) {}\n \n \n ngOnInit() {\n console.log(this.configuration,this.rfc)\n this.setCustomizationStyle(this.hostContext.nativeElement);\n if (this.configuration?.pathDependencies?.imageDirectory) {\n this.images.inactive.reject = this.configuration.pathDependencies?.images?.inactiveReject ?? `${this.configuration.pathDependencies.imageDirectory}/inactiveReject.png`;\n this.images.inactive.approve = this.configuration.pathDependencies?.images?.inactiveApprove ?? `${this.configuration.pathDependencies.imageDirectory}/inactiveApprove.png`;\n this.images.active.reject = this.configuration.pathDependencies?.images?.activeReject ?? `${this.configuration.pathDependencies.imageDirectory}/activeReject.png`;\n this.images.active.approve = this.configuration.pathDependencies?.images?.activeApprove ?? `${this.configuration.pathDependencies.imageDirectory}/activeApprove.png`;\n this.cdr.detectChanges();\n }\n\n \n this.getRequisitionsRfc();\n }\n\n getRequisitionsRfc() {\n this.onloader.emit(true); \n \n this.fad.getRequisitionsRfc(this.rfc)\n .pipe(finalize(() => this.onloader.emit(false))) \n .subscribe({\n next: (res) => {\n if (res.success) { \n this.requisitionsFea = res.data.requisitions;\n this.documentsApprovalList = this.requisitionsFea.flatMap(requisition => \n requisition.documents.map(doc => ({\n doc: doc,\n id: doc.documentId,\n idRequisition: requisition.requisitionId,\n approved: undefined,\n isVisible: false\n }))\n );\n if (this.documentsApprovalList.length === 1) {\n this.loadSingleDocument(this.documentsApprovalList[0]);\n \n }\n\n this.cdr.detectChanges();\n } else {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.SERVICE,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n },\n error: (error: HttpErrorResponse) => {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.HTTP,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n });\n }\n\n loadSingleDocument(singleDocument: DocumentApprovalFea){\n singleDocument.isVisible = true;\n\n this.fad.getDocumentFea(singleDocument.id!, { loader: true, error: true })\n .pipe(finalize(() => this.onloader.emit(false)))\n .subscribe({\n next: (res) => {\n \n if (singleDocument.doc) {\n singleDocument.doc.file = \"data:application/pdf;base64,\" + res.data.file;\n this.cdr.detectChanges(); \n }\n },\n error: () => {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.ERROR_PDF,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.ERROR_PDF),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n });\n }\n\n toggleApproval(document: DocumentApprovalFea) {\n document.approved = document.approved === true ? undefined : true;\n this.updateApproveAllState();\n }\n \n toggleRejection(document: DocumentApprovalFea) {\n document.approved = document.approved === false ? undefined : false;\n this.updateApproveAllState();\n }\n\n updateApproveAllState() {\n this.approveAll = this.documentsApprovalList.every(doc => doc.approved === true);\n }\n\n approveAllDocuments() {\n this.approveAll = !this.approveAll;\n this.documentsApprovalList.forEach(doc => doc.approved = this.approveAll ? true : undefined);\n }\n\n getApprovedCount(): number {\n return this.documentsApprovalList.filter(doc => doc.approved === true).length;\n }\n\n getRejectedCount(): number {\n return this.documentsApprovalList.filter(doc => doc.approved === false).length;\n }\n\n emitApprovedDocuments() {\n const approvedDocuments = this.documentsApprovalList.filter(doc => doc.approved !== undefined);\n console.log(approvedDocuments);\n this.onevent.emit(approvedDocuments);\n }\n \n seeDocumentFea(document: DocumentApprovalFea) {\n document.isVisible = !document.isVisible;\n\n if (document.isVisible && !document.doc?.file) {\n this.onloader.emit(true);\n this.fad.getDocumentFea(document.id!, { loader: true, error: true })\n .pipe(finalize(() => this.onloader.emit(false)))\n .subscribe({\n next: (res) => {\n if (document.doc) {\n document.doc.file = \"data:application/pdf;base64,\" + res.data.file; \n } else {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.SERVICE,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n },\n error: () => {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.HTTP,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n });\n }\n}\n\n downloadDocumentFea(document: DocumentApprovalFea) {\n this.onloader.emit(true); \n this.fad.getDocumentFea(document.id!)\n .pipe(finalize(() => this.onloader.emit(false))) \n .subscribe({\n next: async (res) => {\n if (res.success && res.data.file) {\n const byteCharacters = atob(res.data.file);\n const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i));\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: 'application/pdf' });\n await SharedUtils.downloadFile(blob,document.doc?.name!).then(res=>{\n\n }).catch(error=>{\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.ERROR_PDF,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.ERROR_PDF),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n })\n\n } else {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.SERVICE,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n },\n error: (error: HttpErrorResponse) => {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.HTTP,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n });\n }\n \n\n getDocumentId(id: string){\n return \"pdf\"+id!.replace(/-/g, '');\n }\n setCustomizationStyle(targetElement = document.documentElement): void {\n this.configuration = Utils.mergeConfiguration(\n new Configuration(),\n DOCUMENT_APPROVAL_LIST_DEFAULT,\n this.configuration\n );\n }\n}\n","<ng-container *ngIf=\"requisitionsFea && requisitionsFea.length > 0\">\r\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\r\n <div class=\"fad-portal-content\" >\r\n <div class=\"header\" >\r\n <div>\r\n <div class=\"fad-portal-title\">\r\n {{ requisition.name }} ({{requisition.documents.length}})\r\n </div>\r\n <div class=\"info\">\r\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\r\n </div>\r\n <div class=\"info\">\r\n {{ requisition.sendByEmail }}\r\n </div>\r\n </div>\r\n <div class=\"requisition-id\">\r\n <div class=\"fad-portal-content-bold\">ID {{ requisition.requisitionId }}</div>\r\n </div>\r\n </div>\r\n <div class=\"documents-container\">\r\n <ng-container *ngFor=\"let document of documentsApprovalList; let i = index\">\r\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\r\n <div class=\"document\" >\r\n <div class=\"information\" >\r\n <div class=\"document-name fad-portal-content-bold\" >\r\n {{ document.doc?.name }}\r\n </div>\r\n <div class=\"validate\">\r\n \r\n <ng-fad-image-inline\r\n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\r\n (click)=\"toggleRejection(document)\">\r\n </ng-fad-image-inline>\r\n \r\n \r\n <ng-fad-image-inline\r\n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\r\n (click)=\"toggleApproval(document)\">\r\n </ng-fad-image-inline>\r\n </div>\r\n \r\n </div>\r\n <div class=\"actions\">\r\n <div>\r\n <div class=\"fad-portal-content-bold\" (click)=\"seeDocumentFea(document)\">\r\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\r\n </div>\r\n <div class=\"fad-portal-content-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\r\n </div>\r\n <div>\r\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\r\n </div>\r\n </div>\r\n \r\n <ng-fad-signature-fea-pdf-viewer-fea\r\n *ngIf=\"document.isVisible && document.doc?.file\"\r\n [file]=\"document.doc?.file\"\r\n [index]=\"i\"\r\n [id]=\"getDocumentId(document.id!)\"\r\n >\r\n </ng-fad-signature-fea-pdf-viewer-fea>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <div class=\"fad-portal-content selector-document\">\r\n <div class=\"document-status-bar\">\r\n \r\n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\r\n Aprueba los documentos para firmarlos con tu e.firma\r\n </div>\r\n \r\n \r\n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\r\n <div class=\"approve-all\">\r\n <ng-fad-image-inline\r\n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\r\n (click)=\"approveAllDocuments()\">\r\n </ng-fad-image-inline>\r\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\r\n </div>\r\n \r\n \r\n <div class=\"document-counts\">\r\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n \r\n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </ng-container>\r\n ","import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\r\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\r\nimport { IUploadESignatureConfiguration, UploadESignatureComplete } from '../../models';\r\nimport { getUploadESignatureErrorDescription, UPLOAD_E_SIGNATURE_CONFIGURATION_DEFAULT, UploadESignatureErrorCode } from '../../constants';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ResponseError, SharedUtils } from '@fad-producto-portal/ng-fad-shared';\r\nimport { FadService, MifielService, SignatureFeaRequest, SignInternalFeaRequest } from '@fad-producto-portal/ng-fad-services';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { finalize } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ng-fad-signature-fea-upload-e-signature',\r\n templateUrl: './upload-e-signature.component.html',\r\n styleUrls: ['./upload-e-signature.component.scss']\r\n})\r\nexport class UploadESignatureComponent implements OnInit {\r\n @Input() configuration!: IUploadESignatureConfiguration;\r\n @Input() documents: SignInternalFeaRequest[] = [];\r\n @Input() signerId!: string;\r\n @Input() rfc!: string;\r\n @Output() onerror = new EventEmitter<ResponseError>();\r\n @Output() onloader = new EventEmitter<boolean>();\r\n @Output() oncomplete = new EventEmitter<null | UploadESignatureComplete>();\r\n uploadImg!: string;\r\n checkOnImg!: string;\r\n checkOffImg!: string;\r\n fileImg!: string;\r\n formatCerList = ['cer'];\r\n formatKeyList = ['key'];\r\n form!: FormGroup;\r\n passwordInputType = 'password';\r\n documentPluralTitle!: string;\r\n documentSingularTitle!: string;\r\n isValidated = false;\r\n showComponent = true;\r\n\r\n constructor(private hostContext: ElementRef, private fb: FormBuilder,\r\n private fad: FadService, private mifiel: MifielService) {}\r\n\r\n ngOnInit(): void {\r\n this.setCustomizationStyle(this.hostContext.nativeElement);\r\n\r\n this.uploadImg = this.configuration.pathDependencies?.images?.upload || `${this.configuration.pathDependencies?.imageDirectory}upload.svg`;\r\n this.checkOnImg = this.configuration.pathDependencies?.images?.checkOn || `${this.configuration.pathDependencies?.imageDirectory}check-on.svg`;\r\n this.checkOffImg = this.configuration.pathDependencies?.images?.checkOff || `${this.configuration.pathDependencies?.imageDirectory}check-off.svg`;\r\n this.fileImg = this.configuration.pathDependencies?.images?.file || `${this.configuration.pathDependencies?.imageDirectory}file.svg`;\r\n\r\n this.showComponent = this.validateData();\r\n if (this.showComponent) {\r\n this.documentPluralTitle = this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.plural?.replace('#TOTAL_DOCS', this.documents?.length.toString())!; // poner longitud\r\n if (this.documents?.length === 1) {\r\n const status = this.documents[0].approved ? this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.approved! : this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.rejected!;\r\n this.documentSingularTitle = this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.singular?.replace('#STATUS_DOC', status)!; // poner longitud\r\n }\r\n\r\n this.initForm();\r\n }\r\n }\r\n\r\n validateData() {\r\n if(!this.documents || this.documents.length < 1) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_DOCUMENTS, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_DOCUMENTS), 'ng-fad-signature-fea-upload-e-signature'));\r\n return false;\r\n }\r\n\r\n if(!this.signerId) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_SIGNER_ID, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_SIGNER_ID), 'ng-fad-signature-fea-upload-e-signature'));\r\n return false;\r\n }\r\n\r\n if(!this.rfc) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_RFC, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_RFC), 'ng-fad-signature-fea-upload-e-signature'));\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n initForm() {\r\n this.form = this.fb.group({\r\n cer: [null, [Validators.required]],\r\n key: [null, [Validators.required]],\r\n password: [null, [Validators.required]]\r\n });\r\n }\r\n\r\n get cer() {\r\n return this.form.get('cer');\r\n }\r\n\r\n get key() {\r\n return this.form.get('key');\r\n }\r\n\r\n get password() {\r\n return this.form.get('password');\r\n }\r\n\r\n openFilePicker(fileInput: HTMLInputElement) {\r\n fileInput.click();\r\n }\r\n\r\n onFileChange(event: any, type: string) {\r\n const file = event.target.files[0];\r\n if (!file) return;\r\n\r\n if (event.target.files.length > 1) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.MULTIPLE_FILES, getUploadESignatureErrorDescription(UploadESignatureErrorCode.MULTIPLE_FILES), 'ng-fad-signature-fea-upload-e-signature'));\r\n return;\r\n }\r\n\r\n if (type === 'cer' && !/\\.cer$/.test(file.name)) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_CER, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_CER), 'ng-fad-signature-fea-upload-e-signature'));\r\n return;\r\n }\r\n\r\n if (type === 'key' && !/\\.key$/.test(file.name)) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_KEY, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_KEY), 'ng-fad-signature-fea-upload-e-signature'));\r\n return;\r\n }\r\n\r\n type === 'cer' ? this.cer?.setValue(file) : this.key?.setValue(file);\r\n }\r\n\r\n onfiledropped(files: FileList, type: string) {\r\n const file = files[0];\r\n type === 'cer' ? this.cer?.setValue(file) : this.key?.setValue(file);\r\n }\r\n\r\n onerrorDirective(event: ResponseError, type: string) {\r\n if (event.code === -1) this.onerror.emit(new ResponseError(UploadESignatureErrorCode.MULTIPLE_FILES, getUploadESignatureErrorDescription(UploadESignatureErrorCode.MULTIPLE_FILES), 'ng-fad-signature-fea-upload-e-signature'));\r\n if (event.code === -2 && type === 'cer') this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_CER, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_CER), 'ng-fad-signature-fea-upload-e-signature'));\r\n if (event.code === -2 && type === 'key') this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_KEY, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_KEY), 'ng-fad-signature-fea-upload-e-signature'));\r\n }\r\n\r\n changePaswordInputType() {\r\n this.passwordInputType = this.passwordInputType === 'text' ? 'password' : 'text';\r\n }\r\n\r\n savePassword(value: Event) {\r\n const inputElement = value.target as HTMLInputElement;\r\n this.password?.setValue(inputElement.value);\r\n }\r\n\r\n allIsRejected() {\r\n return this.documents.every(doc => doc.approved === false);\r\n }\r\n\r\n async onSignDocuments() {\r\n const aprovedDocuments = this.documents.filter((doc) => doc.approved);\r\n const rejectedDocuments = this.documents.filter((doc) => !doc.approved);\r\n let cer: null | UploadESignatureComplete = null;\r\n\r\n if (aprovedDocuments.length > 0) {\r\n const response = await this.signDocuments();\r\n if (!response) return;\r\n cer = response;\r\n }\r\n\r\n if (rejectedDocuments.length > 0) {\r\n const response = await this.rejectDocuments();\r\n if (!response) return;\r\n }\r\n\r\n this.oncomplete.emit(cer);\r\n\r\n }\r\n\r\n async signDocuments(): Promise<null | UploadESignatureComplete> {\r\n return new Promise(async (resolve, reject) => {\r\n this.onloader.emit(true);\r\n const cer = await this.getBase64File(this.cer?.value);\r\n this.onloader.emit(false);\r\n if (!cer) reject(null);\r\n\r\n this.onloader.emit(true);\r\n const key = await this.getBase64File(this.key?.value);\r\n this.onloader.emit(false);\r\n if (!key) reject(null);\r\n\r\n const aprrovedDocuments = this.documents.filter((doc) => doc.approved);\r\n\r\n const data: SignatureFeaRequest = {\r\n cer: cer!.split(',')[1],\r\n key: key!.split(',')[1],\r\n password: this.password?.value,\r\n documents: aprrovedDocuments,\r\n signerId: this.rfc\r\n }\r\n\r\n this.onloader.emit(true);\r\n const body = await this.mifiel.getSignBody(data);\r\n this.onloader.emit(false);\r\n if (!body) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.PASSWORD_ERROR, getUploadESignatureErrorDescription(UploadESignatureErrorCode.PASSWORD_ERROR), 'ng-fad-signature-fea-upload-e-signature'));\r\n return;\r\n }\r\n\r\n this.onloader.emit(true);\r\n this.fad.signFea(body!, this.configuration.credentials?.key!, this.configuration.credentials?.iv!, this.configuration.services?.sign!).pipe(\r\n finalize(() => {\r\n this.onloader.emit(false);\r\n })\r\n ).subscribe({\r\n next: (res) => {\r\n if (res.success) {\r\n const certificate = this.mifiel.parseCertificate(data.cer);\r\n\r\n const cer: UploadESignatureComplete = {\r\n cer: certificate!\r\n }\r\n\r\n resolve(cer);\r\n } else {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.SERVICE,res.error, 'ng-fad-signature-fea-upload-e-signature'));\r\n reject(null);\r\n }\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.HTTP, error.error, 'ng-fad-signature-fea-upload-e-signature'));\r\n reject(null);\r\n },\r\n });\r\n\r\n })\r\n }\r\n\r\n rejectDocuments(): Promise<boolean> {\r\n return new Promise((resolve, reject) => {\r\n const rejectedDocuments = this.documents.filter((doc) => !doc.approved);\r\n\r\n const body: SignatureFeaRequest = {\r\n cer: '',\r\n key: '',\r\n password: '',\r\n documents: rejectedDocuments.map(res => {\r\n return {\r\n id: res.id,\r\n idRequisition: res.idRequisition,\r\n }\r\n }),\r\n signerId: this.signerId\r\n }\r\n\r\n this.onloader.emit(true);\r\n\r\n this.fad.rejectFea(body, this.configuration.credentials?.key!, this.configuration.credentials?.iv!, this.configuration.services?.reject!).pipe(\r\n finalize(() => {\r\n this.onloader.emit(false);\r\n })\r\n ).subscribe({\r\n next: (res) => {\r\n if (res.success) {\r\n resolve(true);\r\n } else {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.SERVICE,res.error, 'ng-fad-signature-fea-upload-e-signature'));\r\n reject(false);\r\n }\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.HTTP, error.error, 'ng-fad-signature-fea-upload-e-signature'));\r\n reject(false);\r\n },\r\n });\r\n })\r\n }\r\n\r\n async getBase64File(file: File) {\r\n const data = await SharedUtils.fileToBase64(file).then(base64 => base64).catch(error => null);\r\n if (data) return data as string;\r\n else {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.ERROR_BASE_64, getUploadESignatureErrorDescription(UploadESignatureErrorCode.ERROR_BASE_64), 'ng-fad-signature-fea-upload-e-signature'));\r\n return null;\r\n }\r\n }\r\n\r\n setCustomizationStyle(targetElement = document.documentElement): void {\r\n this.configuration = Utils.mergeConfiguration(new Configuration(), UPLOAD_E_SIGNATURE_CONFIGURATION_DEFAULT, this.configuration);\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-documents-background-color', this.configuration.customization?.moduleCustomization?.style?.documents?.backgroundColor, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-documents-border-radius', this.configuration.customization?.moduleCustomization?.style?.documents?.borderRadius, { targetElement });\r\n\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-background-color', this.configuration.customization?.moduleCustomization?.style?.upload?.backgroundColor, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-border', this.configuration.customization?.moduleCustomization?.style?.upload?.border, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-border-radius', this.configuration.customization?.moduleCustomization?.style?.upload?.borderRadius, { targetElement });\r\n\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-button-background-color', this.configuration.customization?.moduleCustomization?.style?.upload?.button?.backgroundColor, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-button-border-radius', this.configuration.customization?.moduleCustomization?.style?.upload?.button?.borderRadius, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-button-hover', this.configuration.customization?.moduleCustomization?.style?.upload?.button?.hover, { targetElement });\r\n\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-file-border-radius', this.configuration.customization?.moduleCustomization?.style?.file?.borderRadius, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-file-img-background-color', this.configuration.customization?.moduleCustomization?.style?.file?.img?.backgroundColor, { targetElement });\r\n }\r\n}\r\n","<ng-container *ngIf=\"showComponent\">\r\n <div>\r\n <div *ngIf=\"documents.length > 1\" class=\"fad-portal-title-bold\">{{ documentPluralTitle }}</div>\r\n <div *ngIf=\"documents.length === 1\" class=\"fad-portal-title-bold\">{{ documentSingularTitle }}</div>\r\n\r\n <div class=\"container-document fad-portal-content\">\r\n <div *ngFor=\"let i of documents\" class=\"document\">\r\n <div>{{ i.doc.name }}</div>\r\n <div class=\"status fad-portal-content-bold\">{{ i.approved ? configuration.customization?.moduleCustomization?.legends?.documents?.status?.approved : configuration.customization?.moduleCustomization?.legends?.documents?.status?.rejected }}</div>\r\n <div class=\"pages\">{{ i.doc.pages }} {{ i.doc.pages > 1 ? configuration.customization?.moduleCustomization?.legends?.documents?.pages?.plural : configuration.customization?.moduleCustomization?.legends?.documents?.pages?.singular }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!allIsRejected()\">\r\n <div class=\"fad-portal-title-bold\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.title }}</div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.label }}</div>\r\n <div *ngIf=\"cer?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileCerInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!cer?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileCerInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatCerList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'cer')\"\r\n (onerror)=\"onerrorDirective($event, 'cer')\">\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cer?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ cer?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".cer\" #fileCerInput style=\"display: none\" (change)=\"onFileChange($event, 'cer')\">\r\n </div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.label }}</div>\r\n <div *ngIf=\"key?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileKeyInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!key?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileKeyInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatKeyList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'key')\"\r\n (onerror)=\"onerrorDirective($event, 'key')\">\r\n\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"key?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ key?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".key\" #fileKeyInput style=\"display: none\" (change)=\"onFileChange($event, 'key')\">\r\n </div>\r\n\r\n <div class=\"fad-portal-container-input\" [formGroup]=\"form\">\r\n <label class=\"fad-portal-content\" for=\"\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.label }}</label>\r\n <div class=\"input-password\">\r\n <input [type]=\"passwordInputType\" (input)=\"savePassword($event)\" formControlName=\"password\"/>\r\n <div class=\"fad-portal-content-bold password-show\">\r\n <div *ngIf=\"passwordInputType === 'text'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.hide }}</div>\r\n <div *ngIf=\"passwordInputType === 'password'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.show }}</div>\r\n </div>\r\n <ng-fad-portal-shared-form-errors [formData]=\"password!\" [configuration]=\"configuration.formErrors?.configuration!\"></ng-fad-portal-shared-form-errors>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <div></div>\r\n\r\n <div class=\"fad-portal-content container-confirm\">\r\n <div *ngIf=\"!allIsRejected()\" (click)=\"isValidated = !isValidated\">\r\n <div>\r\n <ng-fad-image-inline *ngIf=\"isValidated\" [src]=\"checkOnImg\"></ng-fad-image-inline>\r\n <ng-fad-image-inline *ngIf=\"!isValidated\" [src]=\"checkOffImg\"></ng-fad-image-inline>\r\n </div>\r\n <div *ngIf=\"documents.length === 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.singular }}</div>\r\n <div *ngIf=\"documents.length > 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.plural }}</div>\r\n </div>\r\n\r\n <div></div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.plural }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.plural }}</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { GENERIC_ERROR_FEA_CONFIGURATION_DEFAULT } from '../../constants';\r\nimport { IGenericErrorFeaConfiguration } from '../../models';\r\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\r\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\r\n\r\n@Component({\r\n selector: 'ng-fad-signature-fea-generic-error-fea',\r\n templateUrl: './generic-error-fea.component.html',\r\n styleUrls: ['./generic-error-fea.component.scss']\r\n})\r\nexport class GenericErrorFeaComponent implements OnInit {\r\n @Input() configuration!: IGenericErrorFeaConfiguration;\r\n @Input() title!: string;\r\n @Input() instruction!: string;\r\n errorIgm!: string;\r\n\r\n ngOnInit(): void {\r\n this.setCustomizationStyle();\r\n this.errorIgm = this.configuration.pathDependencies?.images?.error || `${this.configuration.pathDependencies?.imageDirectory}error.svg`;\r\n }\r\n\r\n setCustomizationStyle(targetElement = document.documentElement): void {\r\n this.configuration = Utils.mergeConfiguration(new Configuration(), GENERIC_ERROR_FEA_CONFIGURATION_DEFAULT, this.configuration);\r\n }\r\n}\r\n","<ng-fad-image-inline [src]=\"errorIgm\"></ng-fad-image-inline>\r\n<div class=\"fad-portal-title-bold\">{{ title ? title : configuration.customization?.moduleCustomization?.legends?.title }}</div>\r\n<div class=\"fad-portal-content\">{{ instruction ? instruction : configuration.customization?.moduleCustomization?.legends?.instruction }}</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { IValidateSignatureConfiguration } from '../../models';\r\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\r\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\r\nimport { getValidateSignatureErrorDescription, VALIDATE_SIGNATURE_CONFIGURATION_DEFAULT, ValidateSignatureErrorCode } from '../../constants';\r\nimport { FadService } from '@fad-producto-portal/ng-fad-services';\r\nimport { finalize } from 'rxjs';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ResponseError } from '@fad-producto-portal/ng-fad-shared';\r\n\r\n@Component({\r\n selector: 'ng-fad-signature-fea-validate-signature',\r\n templateUrl: './validate-signature.component.html',\r\n styleUrls: ['./validate-signature.component.scss']\r\n})\r\nexport class ValidateSignatureComponent {\r\n @Input() configuration!: IValidateSignatureConfiguration;\r\n @Input() ticket!: string;\r\n @Output() onloader = new EventEmitter<boolean>();\r\n @Output() onerror = new EventEmitter<ResponseError>();\r\n @Output() oncomplete = new EventEmitter<string>();\r\n @Output() onsigned = new EventEmitter<string>();\r\n\r\n constructor(private fad: FadService) { }\r\n\r\n ngOnInit(): void {\r\n this.setCustomizationStyle();\r\n const canContinue = this.validateData();\r\n if (canContinue) this.getSignerStatusFea();\r\n }\r\n\r\n validateData() {\r\n if (!this.ticket) {\r\n this.onerror.emit(new ResponseError(ValidateSignatureErrorCode.NO_TICKET, getValidateSignatureErrorDescription(ValidateSignatureErrorCode.NO_TICKET), 'ng-fad-signature-fea-validate-signature'));\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n getSignerStatusFea() {\r\n this.onloader.emit(true);\r\n this.fad.getSignerStatusByTicket(this.ticket, this.configuration.services?.signerStatusFea)\r\n .pipe(finalize(() => this.onloader.emit(false)))\r\n .subscribe({\r\n next: (res) => {\r\n if (res.success) {\r\n res.data === 'IN_PROGRESS' ? this.oncomplete.emit(res.data) : this.onsigned.emit(res.data);\r\n } else {\r\n this.onerror.emit(new ResponseError(ValidateSignatureErrorCode.SERVICE, res.error, 'ng-fad-signature-fea-validate-signature'));\r\n }\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n this.onerror.emit(new ResponseError(ValidateSignatureErrorCode.HTTP, error.error, 'ng-fad-signature-fea-validate-signature'));\r\n }\r\n })\r\n }\r\n\r\n setCustomizationStyle(targetElement = document.documentElement): void {\r\n this.configuration = Utils.mergeConfiguration(new Configuration(), VALIDATE_SIGNATURE_CONFIGURATION_DEFAULT, this.configuration);\r\n }\r\n}\r\n","","import { IDocumentApprovalListConfiguration, ISignatureSummaryConfiguration } from \"../../../models\";\r\n\r\nexport const SIGNATURE_SUMMARY_DEFAULT: ISignatureSummaryConfiguration = {\r\ndateFormat: 'es-MX',\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n signed:\"Documentos firmados\",\r\n rejected: \"Documentos rechazados\",\r\n legend: \"Te hemos enviado el resumen del proceso y el documento firmado a tu correo electrónico\",\r\n documentRejected: \"Documento rechazado\"\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/signature-summary/',\r\n }\r\n};\r\n","import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';\nimport { DocumentApprovalFea, ISignatureSummaryConfiguration } from '../../models';\nimport { SIGNATURE_SUMMARY_DEFAULT } from '../../constants/configuration/signature-summary/signature-summary-configuration.const';\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\n\n@Component({\n selector: 'ng-fad-signature-fea-signature-summary',\n templateUrl: './signature-summary.component.html',\n styleUrls: ['./signature-summary.component.scss']\n})\nexport class SignatureSummaryComponent {\n\n @Input() documentRequest!: DocumentApprovalFea[];\n @Input() configuration!: ISignatureSummaryConfiguration;\n @Output() oncomplete = new EventEmitter<any>();\n\n images = {\n reject: '',\n send: ''\n }\n signedCount = 0;\n rejectedCount = 0;\n isAllDocumentsRejected = true;\n currentDate: string = '';\n id = '';\n pdfsName = '';\n constructor( private hostContext: ElementRef ) {}\n\n\n ngOnInit() {\n console.log(this.documentRequest)\n this.setCustomizationStyle(this.hostContext.nativeElement);\n if (this.configuration?.pathDependencies?.imageDirectory) {\n this.images.reject = this.configuration.pathDependencies?.images?.reject ?? `${this.configuration.pathDependencies.imageDirectory}/rejected.svg`;\n this.images.send = this.configuration.pathDependencies?.images?.send ?? `${this.configuration.pathDependencies.imageDirectory}/send.svg`;\n \n }\n this.updateDocumentCounts();\n this.getPdfNames();\n this.setCurrentDate();\n }\n\n setCurrentDate() {\n const now = new Date();\n\n let hours = now.getHours();\n const minutes = now.getMinutes();\n const amPm = hours >= 12 ? 'PM' : 'AM';\n \n hours = hours % 12 || 12; \n \n const formattedMinutes = minutes < 10 ? '0' + minutes : minutes;\n this.currentDate = `${now.toLocaleDateString(this.configuration.dateFormat)} | ${hours}:${formattedMinutes} ${amPm}`;\n }\n \n\n updateDocumentCounts() {\n // Contar documentos firmados (approved: true)\n this.documentRequest.forEach((doc) =>{\n this.id= doc.id!;\n if(doc.approved){\n this.signedCount += 1;\n }else{\n this.rejectedCount += 1;\n }\n })\n console.log(this.documentRequest, this.signedCount,this.rejectedCount)\n if(this.signedCount > 0){\n this.isAllDocumentsRejected = false\n }else{\n this.isAllDocumentsRejected = true\n }\n \n }\n\n getPdfNames(){\n let currentFlag = '';\n let previewFlag = '';\n this.documentRequest.forEach((doc) =>{\n if(this.pdfsName === ''){\n this.pdfsName = doc.doc?.name.replace('.pdf','')!;\n currentFlag = doc.idRequisition!\n previewFlag = doc.idRequisition!\n }\n currentFlag = doc.idRequisition!;\n if(currentFlag !== previewFlag){\n this.pdfsName+= ','+doc.doc?.name.replace('.pdf','')!;\n currentFlag = doc.idRequisition!\n previewFlag = doc.idRequisition!\n }\n \n });\n }\n \n\n setCustomizationStyle(targetElement = document.documentElement): void {\n this.configuration = Utils.mergeConfiguration(\n new Configuration(),\n SIGNATURE_SUMMARY_DEFAULT,\n this.configuration\n );\n }\n\n}\n","<div class=\"fad-portal-content\">\n \n <ng-container *ngIf=\"!isAllDocumentsRejected\" >\n <ng-fad-image-inline\n [src]=\"images.send\"\n >\n </ng-fad-image-inline>\n <div class=\"fad-portal-title-bold\">\n {{pdfsName}}\n </div>\n <div class=\"fad-portal-content-bold date\">{{ currentDate }}</div>\n <div class=\"summary\">\n <div class=\"fad-portal-content-bold signeds\">\n <div>{{configuration.customization?.moduleCustomization?.legends?.signed}}</div>\n <div>{{signedCount}}</div>\n </div>\n <div class=\"line\">\n\n </div>\n <div class=\"fad-portal-content-bold rejecteds\">\n <div>{{configuration.customization?.moduleCustomization?.legends?.rejected}}</div>\n <div>{{rejectedCount}}</div>\n </div>\n </div>\n <div class=\"legends\">\n {{configuration.customization?.moduleCustomization?.legends?.legend}}\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAllDocumentsRejected\" >\n <ng-fad-image-inline\n [src]=\"images.reject\"\n >\n </ng-fad-image-inline>\n <div class=\"document-rejected\"> {{configuration.customization?.moduleCustomization?.legends?.documentRejected}} </div>\n <div class=\"fad-portal-title-bold title-document\">\n {{pdfsName}}\n </div>\n <div class=\"id-requisition\">\n ID {{id}} | {{ currentDate }}\n </div>\n </ng-container>\n \n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { NgFadSharedModule } from '@fad-producto-portal/ng-fad-shared';\r\nimport { NgFadImageInlineModule } from '@fad-producto/ng-fad-image-inline';\r\nimport { NgFadViewerModule } from '@fad-producto-portal/ng-fad-viewer';\r\nimport { PdfViewerFeaComponent } from './components/pdf-viewer-fea/pdf-viewer-fea.component';\r\n\r\n// components\r\nimport { ValidateRfcComponent } from './components/validate-rfc/validate-rfc.component';\r\nimport { DocumentApprovalListComponent } from './components/document-approval-list/document-approval-list.component';\r\nimport { UploadESignatureComponent } from './components/upload-e-signature/upload-e-signature.component';\r\nimport { GenericErrorFeaComponent } from './components/generic-error-fea/generic-error-fea.component';\r\nimport { ValidateSignatureComponent } from './components/validate-signature/validate-signature.component';\r\nimport { SignatureSummaryComponent } from './components/signature-summary/signature-summary.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ValidateRfcComponent,\r\n DocumentApprovalListComponent,\r\n UploadESignatureComponent,\r\n PdfViewerFeaComponent,\r\n GenericErrorFeaComponent,\r\n ValidateSignatureComponent,\r\n SignatureSummaryComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n NgFadSharedModule,\r\n NgFadImageInlineModule,\r\n NgFadViewerModule, \r\n ],\r\n exports: [\r\n ValidateRfcComponent,\r\n DocumentApprovalListComponent,\r\n UploadESignatureComponent,\r\n PdfViewerFeaComponent,\r\n GenericErrorFeaComponent,\r\n ValidateSignatureComponent,\r\n SignatureSummaryComponent\r\n ]\r\n})\r\nexport class NgFadSignatureFeaModule { }\r\n","/*\r\n * Public API Surface of ng-fad-signature-fea\r\n */\r\n\r\nexport * from './lib/ng-fad-signature-fea.module';\r\n\r\n// constants\r\nexport * from './lib/constants/index';\r\n\r\n// models\r\nexport * from './lib/models/index';\r\n\r\n// components\r\nexport * from './lib/components/validate-rfc/validate-rfc.component';\r\nexport * from './lib/components/document-approval-list/document-approval-list.component';\r\nexport * from './lib/components/upload-e-signature/upload-e-signature.component';\r\nexport * from './lib/components/pdf-viewer-fea/pdf-viewer-fea.component';\r\nexport * from './lib/components/generic-error-fea/generic-error-fea.component';\r\nexport *from './lib/components/validate-signature/validate-signature.component';\r\nexport * from './lib/components/signature-summary/signature-summary.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["GeneralPdfViewerComponentModule","i1","i2","i3","i4","i5","i5.PdfViewerFeaComponent"],"mappings":"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"}
1
+ {"version":3,"file":"fad-producto-portal-ng-fad-signature-fea.mjs","sources":["../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/document-approval-list/document-approval-lis-tconfiguration.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/generic-error-fea/configuration-generic-error-fea.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/upload-e-signature/configuration-upload-e-signature.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/validate-rfc/configuration-validate-rfc.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/validate-signature/validate-signature.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/pdf-viewer-fea/pdf-viewer-fea-configuration.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/document-approval-list/document-approval-list-error-code.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/document-approval-list/document-approval-list-error-description.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/generic-error-fea/generic-error-fea-error-code.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/generic-error-fea/generic-error-fea-error-description.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/upload-e-signature/upload-e-signature-error-code.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/upload-e-signature/upload-e-signature-error-description.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/validate-rfc/validate-rfc-error-code.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/validate-rfc/validate-rfc-error-description.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/validate-signature/validate-signature-error-code.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/errors/validate-signature/validate-signature-error-description.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/pdf-viewer-fea/pdf-viewer-fea.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/pdf-viewer-fea/pdf-viewer-fea.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/validate-rfc/validate-rfc.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/validate-rfc/validate-rfc.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/document-approval-list/document-approval-list.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/document-approval-list/document-approval-list.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/upload-e-signature/upload-e-signature.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/upload-e-signature/upload-e-signature.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/generic-error-fea/generic-error-fea.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/generic-error-fea/generic-error-fea.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/validate-signature/validate-signature.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/validate-signature/validate-signature.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/constants/configuration/signature-summary/signature-summary-configuration.const.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/signature-summary/signature-summary.component.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/components/signature-summary/signature-summary.component.html","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/lib/ng-fad-signature-fea.module.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/public-api.ts","../../../../projects/fad-producto-portal/ng-fad-signature-fea/src/fad-producto-portal-ng-fad-signature-fea.ts"],"sourcesContent":["import { IDocumentApprovalListConfiguration } from \"../../../models\";\r\n\r\nexport const DOCUMENT_APPROVAL_LIST_DEFAULT: IDocumentApprovalListConfiguration = {\r\n\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n sendTo: 'Enviado por',\r\n seeDocument: 'Ver documento',\r\n hideDocument: 'Ocultar documento',\r\n download:'Descargar',\r\n pages: 'Páginas'\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/document-approval-list/',\r\n }\r\n};\r\n","import { IGenericErrorFeaConfiguration } from \"../../../models\";\r\n\r\nexport const GENERIC_ERROR_FEA_CONFIGURATION_DEFAULT: IGenericErrorFeaConfiguration = {\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n title: 'Aviso',\r\n instruction: 'No existe un documento que corresponda a este URL (la dirección web). Si copiaste y pegaste la dirección, es posible que hayas cometido un error. Asegúrate de que no sobren o falten caracteres e intenta nuevamente.'\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/generic-error-fea/',\r\n }\r\n};\r\n","import { IUploadESignatureConfiguration } from \"../../../models\";\r\n\r\nexport const UPLOAD_E_SIGNATURE_CONFIGURATION_DEFAULT: IUploadESignatureConfiguration = {\r\n services: {\r\n reject: { loader: true, error: true },\r\n sign: { loader: true, error: true }\r\n },\r\n credentials: {\r\n key: 'JJQUfgm0i5MJ70NI',\r\n iv: 'uxQKO3FiCiht0uVU'\r\n },\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n documents: {\r\n backgroundColor: '#f5f5f5',\r\n borderRadius: '15px'\r\n },\r\n upload: {\r\n backgroundColor: '#f4f6fa',\r\n borderRadius: '10px',\r\n border: '2px dashed var(--fad-portal-common-legends-tertiary)',\r\n button: {\r\n backgroundColor: '#e3e7f0',\r\n borderRadius: '50px',\r\n hover: '#cbd7f5'\r\n }\r\n },\r\n file: {\r\n borderRadius: '10px',\r\n img: {\r\n backgroundColor: '#f5f5f5'\r\n }\r\n }\r\n },\r\n legends: {\r\n documents: {\r\n pages: {\r\n singular: 'Página',\r\n plural: 'Páginas'\r\n },\r\n status: {\r\n approved: 'Aprobado',\r\n rejected: 'Rechazado'\r\n },\r\n title: {\r\n plural: 'Documentos para enviar (#TOTAL_DOCS)',\r\n singular: 'Documento #STATUS_DOC para firma',\r\n approved: 'aprobado',\r\n rejected: 'rechazado'\r\n }\r\n },\r\n eSignature: {\r\n cer: {\r\n instruction: 'Selecciona o arrastra el archivo .CER',\r\n label: 'Certificado .CER',\r\n upload: 'Subir .CER'\r\n },\r\n key: {\r\n instruction: 'Selecciona o arrastra el archivo .KEY',\r\n label: 'Llave privada .KEY',\r\n upload: 'Subir .KEY'\r\n },\r\n password: {\r\n hide: 'OCULTAR',\r\n label: 'Ingresa la contraseña de tu e.firma',\r\n show: 'MOSTRAR'\r\n },\r\n title: 'Ingresa tu e.firma para firmar los documentos',\r\n upload: 'Seleccionar otro archivo'\r\n },\r\n sign: {\r\n button: {\r\n reject: {\r\n plural: 'Rechazar documentos',\r\n singular: 'Rechazar documento'\r\n },\r\n sign: {\r\n plural: 'Firmar documentos',\r\n singular: 'Firmar documento'\r\n }\r\n },\r\n validate: {\r\n plural: 'Valido que he leído y he aceptado firmar los documentos',\r\n singular: 'Valido que he leído y he aceptado firmar el documento'\r\n }\r\n }\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/upload-e-signature/',\r\n }\r\n};\r\n","import { IValidateRfcConfiguration } from \"../../../models\";\r\n\r\nexport const SIGNATURE_FEA_CONFIGURATION_DEFAULT: IValidateRfcConfiguration = {\r\n\r\n maxCharacters: 13,\r\n regexRFC: '^[A-ZÑ&]{3,4}[0-9]{6}[A-V1-9][A-Z1-9][0-9A]$',\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n title: 'Código de validación',\r\n description: 'Ingresa tu RFC para comenzar la firma',\r\n buttonLegend: 'Validar'\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/validate-rfc/',\r\n }\r\n};\r\n","import { IValidateSignatureConfiguration } from \"../../../models\";\r\n\r\nexport const VALIDATE_SIGNATURE_CONFIGURATION_DEFAULT: IValidateSignatureConfiguration = {\r\n services: {\r\n signerStatusFea: { loader: true, error: true }\r\n },\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/validate-signature/',\r\n }\r\n};\r\n","import { IPdfViewerFeaConfiguration } from \"../../../models\";\r\n\r\nexport const PDF_VIEWER_FEA_DEFAULT: IPdfViewerFeaConfiguration = {\r\n\r\n pdfMini:{\r\n configuration:{\r\n scrollIntoView: true\r\n }\r\n },\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n \r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/pdf-viewer-fea/',\r\n }\r\n};\r\n","export enum DocumentApprovalListErrorCode {\r\n \r\n SERVICE = -1,\r\n HTTP = -2,\r\n ERROR_PDF = -3,\r\n\r\n}\r\n","import { DocumentApprovalListErrorCode } from \"./document-approval-list-error-code\";\r\n\r\nexport const getDocumentApprovalListErrorDescription = (code: DocumentApprovalListErrorCode) => {\r\n switch (code) {\r\n case -1:\r\n return \"Service error\";\r\n case -2:\r\n return \"HTTP error\";\r\n case -3:\r\n return \"PDF error\";\r\n default:\r\n return 'Unknown error';\r\n }\r\n};\r\n","export enum GenericErrorFeaErrorCode {\r\n}\r\n","import { GenericErrorFeaErrorCode } from \"./generic-error-fea-error-code\";\r\n\r\nexport const getGenericErrorFeaErrorDescription = (code: GenericErrorFeaErrorCode) => {\r\n switch (code) {\r\n default:\r\n return 'Unknown error';\r\n }\r\n};\r\n","export enum UploadESignatureErrorCode {\r\n SERVICE = -1,\r\n HTTP = -2,\r\n NO_DOCUMENTS = -3,\r\n FORMAT_CER = -4,\r\n FORMAT_KEY = -5,\r\n MULTIPLE_FILES = -6,\r\n ERROR_BASE_64 = -7,\r\n NO_SIGNER_ID = -8,\r\n NO_RFC = -9,\r\n PASSWORD_ERROR = -10,\r\n}\r\n","import { UploadESignatureErrorCode } from \"./upload-e-signature-error-code\";\r\n\r\nexport const getUploadESignatureErrorDescription = (code:UploadESignatureErrorCode) => {\r\n switch (code) {\r\n case -1:\r\n return \"Service error\";\r\n case -2:\r\n return \"HTTP error\";\r\n case -3:\r\n return \"Los documentos a procesar son requeridos\";\r\n case -4:\r\n return \"El formato del archivo seleccionado no es .cer\";\r\n case -5:\r\n return \"El formato del archivo seleccionado no es .key\";\r\n case -6:\r\n return \"Solo puedes seleccionar un archivo\";\r\n case -7:\r\n return \"Error al convertir el archivo a base 64\";\r\n case -8:\r\n return \"El ID del firmante es requerido\";\r\n case -9:\r\n return \"El RFC del firmante es requerido\";\r\n case -10:\r\n return \"La contraseña es incorrecta\";\r\n default:\r\n return 'Unknown error';\r\n }\r\n};\r\n","export enum ValidateRFCErrorCode {\r\n \r\n SERVICE = -1,\r\n HTTP = -2,\r\n REQUISITION_ID = -3,\r\n SIGNER_ID = -4,\r\n TICKET = -5,\r\n\r\n}\r\n","import { ValidateRFCErrorCode } from \"./validate-rfc-error-code\";\r\n\r\nexport const getValidateRFCErrorDescription = (code: ValidateRFCErrorCode) => {\r\n switch (code) {\r\n case -1:\r\n return \"Service error\";\r\n case -2:\r\n return \"HTTP error\";\r\n case -3:\r\n return \"There is not requisitionId\";\r\n case -4:\r\n return \"There is not signerId\";\r\n case -5:\r\n return \"There is not Ticket\";\r\n default:\r\n return 'Unknown error';\r\n }\r\n};\r\n","export enum ValidateSignatureErrorCode {\r\n SERVICE = -1,\r\n HTTP = -2,\r\n NO_REQUISITION_ID = -3,\r\n NO_SIGNER_ID = -4,\r\n NO_TICKET = -5,\r\n}\r\n","import { ValidateSignatureErrorCode } from \"./validate-signature-error-code\";\r\n\r\nexport const getValidateSignatureErrorDescription = (code: ValidateSignatureErrorCode) => {\r\n switch (code) {\r\n case -1:\r\n return \"Service error\";\r\n case -2:\r\n return \"HTTP error\";\r\n case -2:\r\n return \"Requisition ID is required\";\r\n case -4:\r\n return \"Signer ID is required\";\r\n case -5:\r\n return \"Ticket is required\";\r\n default:\r\n return 'Unknown error';\r\n }\r\n};\r\n","import { ChangeDetectorRef, Component, Input, ViewChild } from '@angular/core';\r\nimport { NgFadPdfReaderService, ResponseSuccess } from '@fad-producto/ng-fad-pdf-reader';\r\nimport { GeneralPdfViewerComponent as GeneralPdfViewerComponentModule } from '@fad-producto-portal/ng-fad-viewer'\r\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\r\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\r\nimport { PDF_VIEWER_FEA_DEFAULT } from '../../constants';\r\n\r\n@Component({\r\n selector: 'ng-fad-signature-fea-pdf-viewer-fea',\r\n templateUrl: './pdf-viewer-fea.component.html',\r\n styleUrls: ['./pdf-viewer-fea.component.scss'],\r\n providers: [NgFadPdfReaderService]\r\n})\r\nexport class PdfViewerFeaComponent {\r\n\r\n @Input() configuration!: string;\r\n @Input() file!: string\r\n @Input() index!: number;\r\n @Input() id!: string;\r\n\r\n pages: ResponseSuccess[] = [];\r\n page: number = 1;\r\n miniViewConfig = { scrollIntoView: false };\r\n height: number = 1000;\r\n @ViewChild(GeneralPdfViewerComponentModule) generalPdfViewerComponent!: GeneralPdfViewerComponentModule;\r\n\r\n constructor(private pdfService: NgFadPdfReaderService,private cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n if (this.file) {\r\n this.initializePdf(this.file);\r\n }\r\n }\r\n\r\n initializePdf(pdfBase64: string) {\r\n this.pdfService.initialize(pdfBase64, `pdf-${this.index}`);\r\n\r\n this.pdfService.pages.subscribe((res) => {\r\n if (res) {\r\n this.pages = [...this.pages, res];\r\n }\r\n });\r\n }\r\n\r\n onPageChange(page: number) {\r\n this.page = page;\r\n }\r\n\r\n scrollToPage(page: number) {\r\n this.generalPdfViewerComponent.scrollToPage(page);\r\n }\r\n\r\n onLoadPage(data: ResponseSuccess) {\r\n if (data.page === 1) {\r\n const containerElement = document.getElementById(this.id) as HTMLElement;\r\n if (!containerElement) {\r\n return;\r\n }\r\n const observer = new MutationObserver(() => {\r\n const viewerElement = containerElement.querySelector(`#fad-viewer-page-v1-${data.id}-1`) as HTMLElement;\r\n\r\n if (viewerElement) {\r\n observer.disconnect();\r\n const newHeight = viewerElement.clientHeight + 30;\r\n\r\n if (this.height !== newHeight) {\r\n this.height = newHeight;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n });\r\n observer.observe(containerElement, { childList: true, subtree: true });\r\n }\r\n }\r\n\r\n setCustomizationStyle(targetElement = document.documentElement): void {\r\n this.configuration = Utils.mergeConfiguration(\r\n new Configuration(),\r\n PDF_VIEWER_FEA_DEFAULT,\r\n this.configuration\r\n );\r\n }\r\n\r\n\r\n}\r\n","<div class=\"pdf-viewer\" [id]=\"id\" [style.height.px]=\"height\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pages\"\r\n (onpagechange)=\"onPageChange($event)\"\r\n (onloadpage)=\"onLoadPage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniViewConfig\"\r\n [pages]=\"pages\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\"\r\n >\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n</div>","import { Component, ElementRef, EventEmitter, Input, Output, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { IValidateRfcConfiguration } from '../../models';\r\nimport { getValidateRFCErrorDescription, SIGNATURE_FEA_CONFIGURATION_DEFAULT, ValidateRFCErrorCode } from '../../constants';\r\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\r\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { FadService, ResponseData, ValidateRFC } from '@fad-producto-portal/ng-fad-services';\r\nimport { ResponseError } from '@fad-producto-portal/ng-fad-shared';\r\nimport { finalize } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ng-fad-signature-fea-validate-rfc',\r\n templateUrl: './validate-rfc.component.html',\r\n styleUrls: ['./validate-rfc.component.scss']\r\n})\r\nexport class ValidateRfcComponent implements OnInit {\r\n\r\n @Input() configuration!: IValidateRfcConfiguration;\r\n @Input() ticket!: string;\r\n @Output() onerror = new EventEmitter<ResponseError>();\r\n @Output() oncomplete = new EventEmitter<ResponseData<ValidateRFC>>();\r\n @Output() onloader = new EventEmitter<boolean>();\r\n validationForm!: FormGroup;\r\n showComponent: boolean = true;\r\n \r\n constructor(private fb: FormBuilder, private hostContext: ElementRef,private route: ActivatedRoute, private fadService: FadService) {}\r\n\r\n ngOnInit() {\r\n this.setCustomizationStyle(this.hostContext.nativeElement);\r\n this.showComponent = this.validateData();\r\n this.initializeForm();\r\n\r\n }\r\n\r\n initializeForm(): void {\r\n const maxCharacters = this.configuration?.maxCharacters || 13;\r\n const rfcRegex = new RegExp(this.configuration?.regexRFC!);\r\n\r\n this.validationForm = this.fb.group({\r\n code: ['', [\r\n Validators.required,\r\n Validators.minLength(maxCharacters),\r\n Validators.maxLength(maxCharacters),\r\n Validators.pattern(rfcRegex)\r\n ]]\r\n });\r\n }\r\n\r\n onSubmit(): void {\r\n this.validateRFC();\r\n }\r\n\r\n setCustomizationStyle(targetElement = document.documentElement): void {\r\n this.configuration = Utils.mergeConfiguration(\r\n new Configuration(),\r\n SIGNATURE_FEA_CONFIGURATION_DEFAULT,\r\n this.configuration\r\n );\r\n }\r\n\r\n validateData() {\r\n if(!this.ticket) {\r\n this.onerror.emit(new ResponseError(ValidateRFCErrorCode.REQUISITION_ID, getValidateRFCErrorDescription(ValidateRFCErrorCode.REQUISITION_ID) , 'ng-fad-portal-signature-fea-validate-rfc'));\r\n return false;\r\n }\r\n \r\n return true;\r\n }\r\n\r\n validateRFC(){\r\n if( this.validationForm.valid ){\r\n console.error(\"Validar rfc \");\r\n\r\n const validateReq = {\r\n ticket: this.ticket,\r\n rfc: this.codeControl?.value\r\n };\r\n\r\n this.fadService.validateRfc(validateReq)\r\n .pipe(finalize(() => this.onloader.emit(false))) \r\n .subscribe({\r\n next: (response) => {\r\n if( response.success ){\r\n this.oncomplete.emit(response);\r\n }else{\r\n this.onerror.emit(new ResponseError(ValidateRFCErrorCode.SERVICE, response.error, 'ng-fad-portal-signature-fea-validate-rfc'));\r\n }\r\n },\r\n error: (error) => {\r\n this.onerror.emit(new ResponseError(ValidateRFCErrorCode.HTTP, error.error, 'ng-fad-portal-signature-fea-validate-rfc'));\r\n }\r\n });\r\n }\r\n }\r\n\r\n onInputChange(event: any){\r\n const inputValue = event.target.value;\r\n this.validationForm.controls['code'].setValue(inputValue.toUpperCase(), { emitEvent: false });\r\n }\r\n\r\n get codeControl() {\r\n return this.validationForm.get('code') ?? null;\r\n }\r\n}\r\n","\r\n <div class=\"validation-container fad-container\" *ngIf=\"showComponent\">\r\n <div class=\"title\">{{ configuration.customization?.moduleCustomization?.legends?.title }}</div>\r\n <div class=\"fad-portal-subtitle\">{{ configuration.customization?.moduleCustomization?.legends?.description }}</div>\r\n <form [formGroup]=\"validationForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"fad-portal-container-input\">\r\n <input id=\"code\" type=\"text\" formControlName=\"code\" (input)=\"onInputChange($event)\" maxlength=\"{{ configuration.maxCharacters || 13 }}\" />\r\n </div>\r\n <ng-fad-portal-shared-form-errors \r\n [formData]=\"codeControl!\" \r\n [configuration]=\"configuration.formErrors?.configuration!\">\r\n </ng-fad-portal-shared-form-errors>\r\n \r\n <button type=\"submit\" class=\"fad-portal-primary\" [disabled]=\"validationForm.invalid\">\r\n {{ configuration.customization?.moduleCustomization?.legends?.buttonLegend }}\r\n </button>\r\n </form>\r\n </div>\r\n\r\n\r\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\nimport { DocumentApprovalFea, IDocumentApprovalListConfiguration } from '../../models';\nimport { DOCUMENT_APPROVAL_LIST_DEFAULT, getDocumentApprovalListErrorDescription } from '../../constants';\nimport { FadService, RequisitionsFea, ResponseData, RequisitionFeaData, DocumentFea } from '@fad-producto-portal/ng-fad-services';\nimport { ActivatedRoute } from '@angular/router';\nimport { GeneralPdfViewerComponent as GeneralPdfViewerComponentModule, IPdfMiniViewConfiguration } from '@fad-producto-portal/ng-fad-viewer'\nimport { finalize, Subscription } from 'rxjs';\nimport { NgFadPdfReaderService, ResponseSuccess } from '@fad-producto/ng-fad-pdf-reader';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ResponseError, SharedUtils } from '@fad-producto-portal/ng-fad-shared';\nimport { DocumentApprovalListErrorCode } from '../../constants';\n\n@Component({\n selector: 'ng-fad-signature-fea-document-approval-list',\n templateUrl: './document-approval-list.component.html',\n styleUrls: ['./document-approval-list.component.scss'],\n providers: [NgFadPdfReaderService]\n})\nexport class DocumentApprovalListComponent {\n \n @Input() configuration!: IDocumentApprovalListConfiguration;\n @Input() rfc!: string;\n @Output() onloader = new EventEmitter<boolean>();\n @Output() onevent = new EventEmitter<DocumentApprovalFea[]>();\n @Output() onerror: EventEmitter<ResponseError> = new EventEmitter();\n pagesMap: Map<string, ResponseSuccess[]> = new Map();\n requisitionsFea: RequisitionFeaData[] = [];\n documentsApprovalList: DocumentApprovalFea[] = [];\n approveAll: boolean = false;\n \n images = {\n inactive:{\n reject: '',\n approve: ''\n },\n active:{\n reject: '',\n approve: '' \n }\n }\n\n \n\n constructor( private hostContext: ElementRef, private fad: FadService,private cdr: ChangeDetectorRef,private pdfService: NgFadPdfReaderService ) {}\n \n \n ngOnInit() {\n console.log(this.configuration,this.rfc)\n this.setCustomizationStyle(this.hostContext.nativeElement);\n if (this.configuration?.pathDependencies?.imageDirectory) {\n this.images.inactive.reject = this.configuration.pathDependencies?.images?.inactiveReject ?? `${this.configuration.pathDependencies.imageDirectory}/inactiveReject.png`;\n this.images.inactive.approve = this.configuration.pathDependencies?.images?.inactiveApprove ?? `${this.configuration.pathDependencies.imageDirectory}/inactiveApprove.png`;\n this.images.active.reject = this.configuration.pathDependencies?.images?.activeReject ?? `${this.configuration.pathDependencies.imageDirectory}/activeReject.png`;\n this.images.active.approve = this.configuration.pathDependencies?.images?.activeApprove ?? `${this.configuration.pathDependencies.imageDirectory}/activeApprove.png`;\n this.cdr.detectChanges();\n }\n\n \n this.getRequisitionsRfc();\n }\n\n getRequisitionsRfc() {\n this.onloader.emit(true); \n \n this.fad.getRequisitionsRfc(this.rfc)\n .pipe(finalize(() => this.onloader.emit(false))) \n .subscribe({\n next: (res) => {\n if (res.success) { \n this.requisitionsFea = res.data.requisitions;\n this.documentsApprovalList = this.requisitionsFea.flatMap(requisition => \n requisition.documents.map(doc => ({\n doc: doc,\n id: doc.documentId,\n idRequisition: requisition.requisitionId,\n approved: undefined,\n isVisible: false\n }))\n );\n if (this.documentsApprovalList.length === 1) {\n this.loadSingleDocument(this.documentsApprovalList[0]);\n \n }\n\n this.cdr.detectChanges();\n } else {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.SERVICE,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n },\n error: (error: HttpErrorResponse) => {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.HTTP,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n });\n }\n\n loadSingleDocument(singleDocument: DocumentApprovalFea){\n singleDocument.isVisible = true;\n\n this.fad.getDocumentFea(singleDocument.id!, { loader: true, error: true })\n .pipe(finalize(() => this.onloader.emit(false)))\n .subscribe({\n next: (res) => {\n \n if (singleDocument.doc) {\n singleDocument.doc.file = \"data:application/pdf;base64,\" + res.data.file;\n this.cdr.detectChanges(); \n }\n },\n error: () => {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.ERROR_PDF,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.ERROR_PDF),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n });\n }\n\n toggleApproval(document: DocumentApprovalFea) {\n document.approved = document.approved === true ? undefined : true;\n this.updateApproveAllState();\n }\n \n toggleRejection(document: DocumentApprovalFea) {\n document.approved = document.approved === false ? undefined : false;\n this.updateApproveAllState();\n }\n\n updateApproveAllState() {\n this.approveAll = this.documentsApprovalList.every(doc => doc.approved === true);\n }\n\n approveAllDocuments() {\n this.approveAll = !this.approveAll;\n this.documentsApprovalList.forEach(doc => doc.approved = this.approveAll ? true : undefined);\n }\n\n getApprovedCount(): number {\n return this.documentsApprovalList.filter(doc => doc.approved === true).length;\n }\n\n getRejectedCount(): number {\n return this.documentsApprovalList.filter(doc => doc.approved === false).length;\n }\n\n emitApprovedDocuments() {\n const approvedDocuments = this.documentsApprovalList.filter(doc => doc.approved !== undefined);\n console.log(approvedDocuments);\n this.onevent.emit(approvedDocuments);\n }\n \n seeDocumentFea(document: DocumentApprovalFea) {\n document.isVisible = !document.isVisible;\n\n if (document.isVisible && !document.doc?.file) {\n this.onloader.emit(true);\n this.fad.getDocumentFea(document.id!, { loader: true, error: true })\n .pipe(finalize(() => this.onloader.emit(false)))\n .subscribe({\n next: (res) => {\n if (document.doc) {\n document.doc.file = \"data:application/pdf;base64,\" + res.data.file; \n } else {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.SERVICE,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n },\n error: () => {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.HTTP,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n });\n }\n}\n\n downloadDocumentFea(document: DocumentApprovalFea) {\n this.onloader.emit(true); \n this.fad.getDocumentFea(document.id!)\n .pipe(finalize(() => this.onloader.emit(false))) \n .subscribe({\n next: async (res) => {\n if (res.success && res.data.file) {\n const byteCharacters = atob(res.data.file);\n const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i));\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: 'application/pdf' });\n await SharedUtils.downloadFile(blob,document.doc?.name!).then(res=>{\n\n }).catch(error=>{\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.ERROR_PDF,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.ERROR_PDF),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n })\n\n } else {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.SERVICE,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n },\n error: (error: HttpErrorResponse) => {\n this.onerror.emit(new ResponseError(\n DocumentApprovalListErrorCode.HTTP,\n getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP),\n 'ng-fad-portal-signature-fea-document-approval-list'\n ));\n }\n });\n }\n \n\n getDocumentId(id: string){\n return \"pdf\"+id!.replace(/-/g, '');\n }\n setCustomizationStyle(targetElement = document.documentElement): void {\n this.configuration = Utils.mergeConfiguration(\n new Configuration(),\n DOCUMENT_APPROVAL_LIST_DEFAULT,\n this.configuration\n );\n }\n}\n","<ng-container *ngIf=\"requisitionsFea && requisitionsFea.length > 0\">\r\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\r\n <div class=\"fad-portal-content\" >\r\n <div class=\"header\" >\r\n <div>\r\n <div class=\"fad-portal-title\">\r\n {{ requisition.name }} ({{requisition.documents.length}})\r\n </div>\r\n <div class=\"info\">\r\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\r\n </div>\r\n <div class=\"info\">\r\n {{ requisition.sendByEmail }}\r\n </div>\r\n </div>\r\n <div class=\"requisition-id\">\r\n <div class=\"fad-portal-content-bold\">ID {{ requisition.requisitionId }}</div>\r\n </div>\r\n </div>\r\n <div class=\"documents-container\">\r\n <ng-container *ngFor=\"let document of documentsApprovalList; let i = index\">\r\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\r\n <div class=\"document\" >\r\n <div class=\"information\" >\r\n <div class=\"document-name fad-portal-content-bold\" >\r\n {{ document.doc?.name }}\r\n </div>\r\n <div class=\"validate\">\r\n \r\n <ng-fad-image-inline\r\n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\r\n (click)=\"toggleRejection(document)\">\r\n </ng-fad-image-inline>\r\n \r\n \r\n <ng-fad-image-inline\r\n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\r\n (click)=\"toggleApproval(document)\">\r\n </ng-fad-image-inline>\r\n </div>\r\n \r\n </div>\r\n <div class=\"actions\">\r\n <div>\r\n <div class=\"fad-portal-content-bold\" (click)=\"seeDocumentFea(document)\">\r\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\r\n </div>\r\n <div class=\"fad-portal-content-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\r\n </div>\r\n <div>\r\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\r\n </div>\r\n </div>\r\n \r\n <ng-fad-signature-fea-pdf-viewer-fea\r\n *ngIf=\"document.isVisible && document.doc?.file\"\r\n [file]=\"document.doc?.file\"\r\n [index]=\"i\"\r\n [id]=\"getDocumentId(document.id!)\"\r\n >\r\n </ng-fad-signature-fea-pdf-viewer-fea>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <div class=\"fad-portal-content selector-document\">\r\n <div class=\"document-status-bar\">\r\n \r\n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\r\n Aprueba los documentos para firmarlos con tu e.firma\r\n </div>\r\n \r\n \r\n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\r\n <div class=\"approve-all\">\r\n <ng-fad-image-inline\r\n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\r\n (click)=\"approveAllDocuments()\">\r\n </ng-fad-image-inline>\r\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\r\n </div>\r\n \r\n \r\n <div class=\"document-counts\">\r\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n \r\n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </ng-container>\r\n ","import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\r\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\r\nimport { IUploadESignatureConfiguration, UploadESignatureComplete } from '../../models';\r\nimport { getUploadESignatureErrorDescription, UPLOAD_E_SIGNATURE_CONFIGURATION_DEFAULT, UploadESignatureErrorCode } from '../../constants';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ResponseError, SharedUtils } from '@fad-producto-portal/ng-fad-shared';\r\nimport { FadService, MifielService, SignatureFeaRequest, SignInternalFeaRequest } from '@fad-producto-portal/ng-fad-services';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { finalize } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ng-fad-signature-fea-upload-e-signature',\r\n templateUrl: './upload-e-signature.component.html',\r\n styleUrls: ['./upload-e-signature.component.scss']\r\n})\r\nexport class UploadESignatureComponent implements OnInit {\r\n @Input() configuration!: IUploadESignatureConfiguration;\r\n @Input() documents: SignInternalFeaRequest[] = [];\r\n @Input() signerId!: string;\r\n @Input() rfc!: string;\r\n @Output() onerror = new EventEmitter<ResponseError>();\r\n @Output() onloader = new EventEmitter<boolean>();\r\n @Output() oncomplete = new EventEmitter<null | UploadESignatureComplete>();\r\n uploadImg!: string;\r\n checkOnImg!: string;\r\n checkOffImg!: string;\r\n fileImg!: string;\r\n formatCerList = ['cer'];\r\n formatKeyList = ['key'];\r\n form!: FormGroup;\r\n passwordInputType = 'password';\r\n documentPluralTitle!: string;\r\n documentSingularTitle!: string;\r\n isValidated = false;\r\n showComponent = true;\r\n\r\n constructor(private hostContext: ElementRef, private fb: FormBuilder,\r\n private fad: FadService, private mifiel: MifielService) {}\r\n\r\n ngOnInit(): void {\r\n this.setCustomizationStyle(this.hostContext.nativeElement);\r\n\r\n this.uploadImg = this.configuration.pathDependencies?.images?.upload || `${this.configuration.pathDependencies?.imageDirectory}upload.svg`;\r\n this.checkOnImg = this.configuration.pathDependencies?.images?.checkOn || `${this.configuration.pathDependencies?.imageDirectory}check-on.svg`;\r\n this.checkOffImg = this.configuration.pathDependencies?.images?.checkOff || `${this.configuration.pathDependencies?.imageDirectory}check-off.svg`;\r\n this.fileImg = this.configuration.pathDependencies?.images?.file || `${this.configuration.pathDependencies?.imageDirectory}file.svg`;\r\n\r\n this.showComponent = this.validateData();\r\n if (this.showComponent) {\r\n this.documentPluralTitle = this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.plural?.replace('#TOTAL_DOCS', this.documents?.length.toString())!; // poner longitud\r\n if (this.documents?.length === 1) {\r\n const status = this.documents[0].approved ? this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.approved! : this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.rejected!;\r\n this.documentSingularTitle = this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.singular?.replace('#STATUS_DOC', status)!; // poner longitud\r\n }\r\n\r\n this.initForm();\r\n }\r\n }\r\n\r\n validateData() {\r\n if(!this.documents || this.documents.length < 1) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_DOCUMENTS, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_DOCUMENTS), 'ng-fad-signature-fea-upload-e-signature'));\r\n return false;\r\n }\r\n\r\n if(!this.rfc) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_RFC, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_RFC), 'ng-fad-signature-fea-upload-e-signature'));\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n initForm() {\r\n this.form = this.fb.group({\r\n cer: [null, [Validators.required]],\r\n key: [null, [Validators.required]],\r\n password: [null, [Validators.required]]\r\n });\r\n }\r\n\r\n get cer() {\r\n return this.form.get('cer');\r\n }\r\n\r\n get key() {\r\n return this.form.get('key');\r\n }\r\n\r\n get password() {\r\n return this.form.get('password');\r\n }\r\n\r\n openFilePicker(fileInput: HTMLInputElement) {\r\n fileInput.click();\r\n }\r\n\r\n onFileChange(event: any, type: string) {\r\n const file = event.target.files[0];\r\n if (!file) return;\r\n\r\n if (event.target.files.length > 1) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.MULTIPLE_FILES, getUploadESignatureErrorDescription(UploadESignatureErrorCode.MULTIPLE_FILES), 'ng-fad-signature-fea-upload-e-signature'));\r\n return;\r\n }\r\n\r\n if (type === 'cer' && !/\\.cer$/.test(file.name)) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_CER, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_CER), 'ng-fad-signature-fea-upload-e-signature'));\r\n return;\r\n }\r\n\r\n if (type === 'key' && !/\\.key$/.test(file.name)) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_KEY, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_KEY), 'ng-fad-signature-fea-upload-e-signature'));\r\n return;\r\n }\r\n\r\n type === 'cer' ? this.cer?.setValue(file) : this.key?.setValue(file);\r\n }\r\n\r\n onfiledropped(files: FileList, type: string) {\r\n const file = files[0];\r\n type === 'cer' ? this.cer?.setValue(file) : this.key?.setValue(file);\r\n }\r\n\r\n onerrorDirective(event: ResponseError, type: string) {\r\n if (event.code === -1) this.onerror.emit(new ResponseError(UploadESignatureErrorCode.MULTIPLE_FILES, getUploadESignatureErrorDescription(UploadESignatureErrorCode.MULTIPLE_FILES), 'ng-fad-signature-fea-upload-e-signature'));\r\n if (event.code === -2 && type === 'cer') this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_CER, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_CER), 'ng-fad-signature-fea-upload-e-signature'));\r\n if (event.code === -2 && type === 'key') this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_KEY, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_KEY), 'ng-fad-signature-fea-upload-e-signature'));\r\n }\r\n\r\n changePaswordInputType() {\r\n this.passwordInputType = this.passwordInputType === 'text' ? 'password' : 'text';\r\n }\r\n\r\n savePassword(value: Event) {\r\n const inputElement = value.target as HTMLInputElement;\r\n this.password?.setValue(inputElement.value);\r\n }\r\n\r\n allIsRejected() {\r\n return this.documents.every(doc => doc.approved === false);\r\n }\r\n\r\n async onSignDocuments() {\r\n const aprovedDocuments = this.documents.filter((doc) => doc.approved);\r\n const rejectedDocuments = this.documents.filter((doc) => !doc.approved);\r\n let cer: null | UploadESignatureComplete = null;\r\n\r\n if (aprovedDocuments.length > 0) {\r\n const response = await this.signDocuments();\r\n if (!response) return;\r\n cer = response;\r\n }\r\n\r\n if (rejectedDocuments.length > 0) {\r\n const response = await this.rejectDocuments();\r\n if (!response) return;\r\n }\r\n\r\n this.oncomplete.emit(cer);\r\n\r\n }\r\n\r\n async signDocuments(): Promise<null | UploadESignatureComplete> {\r\n return new Promise(async (resolve, reject) => {\r\n this.onloader.emit(true);\r\n const cer = await this.getBase64File(this.cer?.value);\r\n this.onloader.emit(false);\r\n if (!cer) reject(null);\r\n\r\n this.onloader.emit(true);\r\n const key = await this.getBase64File(this.key?.value);\r\n this.onloader.emit(false);\r\n if (!key) reject(null);\r\n\r\n const aprrovedDocuments = this.documents.filter((doc) => doc.approved);\r\n\r\n const data: SignatureFeaRequest = {\r\n cer: cer!.split(',')[1],\r\n key: key!.split(',')[1],\r\n password: this.password?.value,\r\n documents: aprrovedDocuments,\r\n signerId: this.rfc\r\n }\r\n\r\n this.onloader.emit(true);\r\n const body = await this.mifiel.getSignBody(data);\r\n this.onloader.emit(false);\r\n if (!body) {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.PASSWORD_ERROR, getUploadESignatureErrorDescription(UploadESignatureErrorCode.PASSWORD_ERROR), 'ng-fad-signature-fea-upload-e-signature'));\r\n return;\r\n }\r\n\r\n this.onloader.emit(true);\r\n this.fad.signFea(body!, this.configuration.credentials?.key!, this.configuration.credentials?.iv!, this.configuration.services?.sign!).pipe(\r\n finalize(() => {\r\n this.onloader.emit(false);\r\n })\r\n ).subscribe({\r\n next: (res) => {\r\n if (res.success) {\r\n const certificate = this.mifiel.parseCertificate(data.cer);\r\n\r\n const cer: UploadESignatureComplete = {\r\n cer: certificate!\r\n }\r\n\r\n resolve(cer);\r\n } else {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.SERVICE,res.error, 'ng-fad-signature-fea-upload-e-signature'));\r\n reject(null);\r\n }\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.HTTP, error.error, 'ng-fad-signature-fea-upload-e-signature'));\r\n reject(null);\r\n },\r\n });\r\n\r\n })\r\n }\r\n\r\n rejectDocuments(): Promise<boolean> {\r\n return new Promise((resolve, reject) => {\r\n const rejectedDocuments = this.documents.filter((doc) => !doc.approved);\r\n\r\n const body: SignatureFeaRequest = {\r\n cer: '',\r\n key: '',\r\n password: '',\r\n documents: rejectedDocuments.map(res => {\r\n return {\r\n id: res.id,\r\n idRequisition: res.idRequisition,\r\n }\r\n }),\r\n signerId: this.signerId\r\n }\r\n\r\n this.onloader.emit(true);\r\n\r\n this.fad.rejectFea(body, this.configuration.credentials?.key!, this.configuration.credentials?.iv!, this.configuration.services?.reject!).pipe(\r\n finalize(() => {\r\n this.onloader.emit(false);\r\n })\r\n ).subscribe({\r\n next: (res) => {\r\n if (res.success) {\r\n resolve(true);\r\n } else {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.SERVICE,res.error, 'ng-fad-signature-fea-upload-e-signature'));\r\n reject(false);\r\n }\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.HTTP, error.error, 'ng-fad-signature-fea-upload-e-signature'));\r\n reject(false);\r\n },\r\n });\r\n })\r\n }\r\n\r\n async getBase64File(file: File) {\r\n const data = await SharedUtils.fileToBase64(file).then(base64 => base64).catch(error => null);\r\n if (data) return data as string;\r\n else {\r\n this.onerror.emit(new ResponseError(UploadESignatureErrorCode.ERROR_BASE_64, getUploadESignatureErrorDescription(UploadESignatureErrorCode.ERROR_BASE_64), 'ng-fad-signature-fea-upload-e-signature'));\r\n return null;\r\n }\r\n }\r\n\r\n setCustomizationStyle(targetElement = document.documentElement): void {\r\n this.configuration = Utils.mergeConfiguration(new Configuration(), UPLOAD_E_SIGNATURE_CONFIGURATION_DEFAULT, this.configuration);\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-documents-background-color', this.configuration.customization?.moduleCustomization?.style?.documents?.backgroundColor, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-documents-border-radius', this.configuration.customization?.moduleCustomization?.style?.documents?.borderRadius, { targetElement });\r\n\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-background-color', this.configuration.customization?.moduleCustomization?.style?.upload?.backgroundColor, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-border', this.configuration.customization?.moduleCustomization?.style?.upload?.border, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-border-radius', this.configuration.customization?.moduleCustomization?.style?.upload?.borderRadius, { targetElement });\r\n\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-button-background-color', this.configuration.customization?.moduleCustomization?.style?.upload?.button?.backgroundColor, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-button-border-radius', this.configuration.customization?.moduleCustomization?.style?.upload?.button?.borderRadius, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-upload-button-hover', this.configuration.customization?.moduleCustomization?.style?.upload?.button?.hover, { targetElement });\r\n\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-file-border-radius', this.configuration.customization?.moduleCustomization?.style?.file?.borderRadius, { targetElement });\r\n Utils.setVariableCss('--fad-signature-fea-e-signature-file-img-background-color', this.configuration.customization?.moduleCustomization?.style?.file?.img?.backgroundColor, { targetElement });\r\n }\r\n}\r\n","<ng-container *ngIf=\"showComponent\">\r\n <div>\r\n <div *ngIf=\"documents.length > 1\" class=\"fad-portal-title-bold\">{{ documentPluralTitle }}</div>\r\n <div *ngIf=\"documents.length === 1\" class=\"fad-portal-title-bold\">{{ documentSingularTitle }}</div>\r\n\r\n <div class=\"container-document fad-portal-content\">\r\n <div *ngFor=\"let i of documents\" class=\"document\">\r\n <div>{{ i.doc.name }}</div>\r\n <div class=\"status fad-portal-content-bold\">{{ i.approved ? configuration.customization?.moduleCustomization?.legends?.documents?.status?.approved : configuration.customization?.moduleCustomization?.legends?.documents?.status?.rejected }}</div>\r\n <div class=\"pages\">{{ i.doc.pages }} {{ i.doc.pages > 1 ? configuration.customization?.moduleCustomization?.legends?.documents?.pages?.plural : configuration.customization?.moduleCustomization?.legends?.documents?.pages?.singular }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!allIsRejected()\">\r\n <div class=\"fad-portal-title-bold\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.title }}</div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.label }}</div>\r\n <div *ngIf=\"cer?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileCerInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!cer?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileCerInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatCerList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'cer')\"\r\n (onerror)=\"onerrorDirective($event, 'cer')\">\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.cer?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cer?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ cer?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".cer\" #fileCerInput style=\"display: none\" (change)=\"onFileChange($event, 'cer')\">\r\n </div>\r\n\r\n <div>\r\n <div class=\"container-instruction-file\">\r\n <div class=\"fad-portal-content\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.label }}</div>\r\n <div *ngIf=\"key?.value\" class=\"fad-portal-content select-file\" (click)=\"openFilePicker(fileKeyInput)\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.upload }}</div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"!key?.value\"\r\n class=\"container-upload\"\r\n (click)=\"openFilePicker(fileKeyInput)\"\r\n dragDropDocument\r\n [formatList]=\"formatKeyList\"\r\n [acceptMultipleFiles]=\"false\"\r\n (onfiledropped)=\"onfiledropped($event, 'key')\"\r\n (onerror)=\"onerrorDirective($event, 'key')\">\r\n\r\n <div class=\"fad-portal-content instruction\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.instruction }}</div>\r\n <div class=\"fad-portal-content-bold upload-btn\">\r\n <ng-fad-image-inline [src]=\"uploadImg\"></ng-fad-image-inline>\r\n <span>{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.key?.upload }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"key?.value\" class=\"container-file\">\r\n <div class=\"document-img\">\r\n <img [src]=\"fileImg\" alt=\"\">\r\n </div>\r\n <div class=\"fad-portal-content\">{{ key?.value.name }}</div>\r\n </div>\r\n\r\n <input type=\"file\" accept=\".key\" #fileKeyInput style=\"display: none\" (change)=\"onFileChange($event, 'key')\">\r\n </div>\r\n\r\n <div class=\"fad-portal-container-input\" [formGroup]=\"form\">\r\n <label class=\"fad-portal-content\" for=\"\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.label }}</label>\r\n <div class=\"input-password\">\r\n <input [type]=\"passwordInputType\" (input)=\"savePassword($event)\" formControlName=\"password\"/>\r\n <div class=\"fad-portal-content-bold password-show\">\r\n <div *ngIf=\"passwordInputType === 'text'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.hide }}</div>\r\n <div *ngIf=\"passwordInputType === 'password'\" (click)=\"changePaswordInputType()\">{{ configuration.customization?.moduleCustomization?.legends?.eSignature?.password?.show }}</div>\r\n </div>\r\n <ng-fad-portal-shared-form-errors [formData]=\"password!\" [configuration]=\"configuration.formErrors?.configuration!\"></ng-fad-portal-shared-form-errors>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <div></div>\r\n\r\n <div class=\"fad-portal-content container-confirm\">\r\n <div *ngIf=\"!allIsRejected()\" (click)=\"isValidated = !isValidated\">\r\n <div>\r\n <ng-fad-image-inline *ngIf=\"isValidated\" [src]=\"checkOnImg\"></ng-fad-image-inline>\r\n <ng-fad-image-inline *ngIf=\"!isValidated\" [src]=\"checkOffImg\"></ng-fad-image-inline>\r\n </div>\r\n <div *ngIf=\"documents.length === 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.singular }}</div>\r\n <div *ngIf=\"documents.length > 1\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.validate?.plural }}</div>\r\n </div>\r\n\r\n <div></div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && !allIsRejected()\" class=\"fad-portal-primary\" [disabled]=\"!form.valid || !isValidated\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.plural }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onSignDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.plural }}</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { GENERIC_ERROR_FEA_CONFIGURATION_DEFAULT } from '../../constants';\r\nimport { IGenericErrorFeaConfiguration } from '../../models';\r\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\r\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\r\n\r\n@Component({\r\n selector: 'ng-fad-signature-fea-generic-error-fea',\r\n templateUrl: './generic-error-fea.component.html',\r\n styleUrls: ['./generic-error-fea.component.scss']\r\n})\r\nexport class GenericErrorFeaComponent implements OnInit {\r\n @Input() configuration!: IGenericErrorFeaConfiguration;\r\n @Input() title!: string;\r\n @Input() instruction!: string;\r\n errorIgm!: string;\r\n\r\n ngOnInit(): void {\r\n this.setCustomizationStyle();\r\n this.errorIgm = this.configuration.pathDependencies?.images?.error || `${this.configuration.pathDependencies?.imageDirectory}error.svg`;\r\n }\r\n\r\n setCustomizationStyle(targetElement = document.documentElement): void {\r\n this.configuration = Utils.mergeConfiguration(new Configuration(), GENERIC_ERROR_FEA_CONFIGURATION_DEFAULT, this.configuration);\r\n }\r\n}\r\n","<ng-fad-image-inline [src]=\"errorIgm\"></ng-fad-image-inline>\r\n<div class=\"fad-portal-title-bold\">{{ title ? title : configuration.customization?.moduleCustomization?.legends?.title }}</div>\r\n<div class=\"fad-portal-content\">{{ instruction ? instruction : configuration.customization?.moduleCustomization?.legends?.instruction }}</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { IValidateSignatureConfiguration } from '../../models';\r\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\r\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\r\nimport { getValidateSignatureErrorDescription, VALIDATE_SIGNATURE_CONFIGURATION_DEFAULT, ValidateSignatureErrorCode } from '../../constants';\r\nimport { FadService } from '@fad-producto-portal/ng-fad-services';\r\nimport { finalize } from 'rxjs';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ResponseError } from '@fad-producto-portal/ng-fad-shared';\r\n\r\n@Component({\r\n selector: 'ng-fad-signature-fea-validate-signature',\r\n templateUrl: './validate-signature.component.html',\r\n styleUrls: ['./validate-signature.component.scss']\r\n})\r\nexport class ValidateSignatureComponent {\r\n @Input() configuration!: IValidateSignatureConfiguration;\r\n @Input() ticket!: string;\r\n @Output() onloader = new EventEmitter<boolean>();\r\n @Output() onerror = new EventEmitter<ResponseError>();\r\n @Output() oncomplete = new EventEmitter<string>();\r\n @Output() onsigned = new EventEmitter<string>();\r\n\r\n constructor(private fad: FadService) { }\r\n\r\n ngOnInit(): void {\r\n this.setCustomizationStyle();\r\n const canContinue = this.validateData();\r\n if (canContinue) this.getSignerStatusFea();\r\n }\r\n\r\n validateData() {\r\n if (!this.ticket) {\r\n this.onerror.emit(new ResponseError(ValidateSignatureErrorCode.NO_TICKET, getValidateSignatureErrorDescription(ValidateSignatureErrorCode.NO_TICKET), 'ng-fad-signature-fea-validate-signature'));\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n getSignerStatusFea() {\r\n this.onloader.emit(true);\r\n this.fad.getSignerStatusByTicket(this.ticket, this.configuration.services?.signerStatusFea)\r\n .pipe(finalize(() => this.onloader.emit(false)))\r\n .subscribe({\r\n next: (res) => {\r\n if (res.success) {\r\n res.data === 'IN_PROGRESS' ? this.oncomplete.emit(res.data) : this.onsigned.emit(res.data);\r\n } else {\r\n this.onerror.emit(new ResponseError(ValidateSignatureErrorCode.SERVICE, res.error, 'ng-fad-signature-fea-validate-signature'));\r\n }\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n this.onerror.emit(new ResponseError(ValidateSignatureErrorCode.HTTP, error.error, 'ng-fad-signature-fea-validate-signature'));\r\n }\r\n })\r\n }\r\n\r\n setCustomizationStyle(targetElement = document.documentElement): void {\r\n this.configuration = Utils.mergeConfiguration(new Configuration(), VALIDATE_SIGNATURE_CONFIGURATION_DEFAULT, this.configuration);\r\n }\r\n}\r\n","","import { IDocumentApprovalListConfiguration, ISignatureSummaryConfiguration } from \"../../../models\";\r\n\r\nexport const SIGNATURE_SUMMARY_DEFAULT: ISignatureSummaryConfiguration = {\r\ndateFormat: 'es-MX',\r\n customization: {\r\n moduleCustomization: {\r\n style: {\r\n },\r\n legends: {\r\n signed:\"Documentos firmados\",\r\n rejected: \"Documentos rechazados\",\r\n legend: \"Te hemos enviado el resumen del proceso y el documento firmado a tu correo electrónico\",\r\n documentRejected: \"Documento rechazado\"\r\n }\r\n }\r\n },\r\n pathDependencies: {\r\n imageDirectory: 'assets/images/fad-signature-fea/signature-summary/',\r\n }\r\n};\r\n","import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';\nimport { DocumentApprovalFea, ISignatureSummaryConfiguration } from '../../models';\nimport { SIGNATURE_SUMMARY_DEFAULT } from '../../constants/configuration/signature-summary/signature-summary-configuration.const';\nimport { Configuration } from '@fad-producto-portal/fad-common/models/core';\nimport { Utils } from '@fad-producto-portal/fad-common/utils/utils';\n\n@Component({\n selector: 'ng-fad-signature-fea-signature-summary',\n templateUrl: './signature-summary.component.html',\n styleUrls: ['./signature-summary.component.scss']\n})\nexport class SignatureSummaryComponent {\n\n @Input() documentRequest!: DocumentApprovalFea[];\n @Input() configuration!: ISignatureSummaryConfiguration;\n @Output() oncomplete = new EventEmitter<any>();\n\n images = {\n reject: '',\n send: ''\n }\n signedCount = 0;\n rejectedCount = 0;\n isAllDocumentsRejected = true;\n currentDate: string = '';\n id = '';\n pdfsName = '';\n constructor( private hostContext: ElementRef ) {}\n\n\n ngOnInit() {\n console.log(this.documentRequest)\n this.setCustomizationStyle(this.hostContext.nativeElement);\n if (this.configuration?.pathDependencies?.imageDirectory) {\n this.images.reject = this.configuration.pathDependencies?.images?.reject ?? `${this.configuration.pathDependencies.imageDirectory}/rejected.svg`;\n this.images.send = this.configuration.pathDependencies?.images?.send ?? `${this.configuration.pathDependencies.imageDirectory}/send.svg`;\n \n }\n this.updateDocumentCounts();\n this.getPdfNames();\n this.setCurrentDate();\n }\n\n setCurrentDate() {\n const now = new Date();\n\n let hours = now.getHours();\n const minutes = now.getMinutes();\n const amPm = hours >= 12 ? 'PM' : 'AM';\n \n hours = hours % 12 || 12; \n \n const formattedMinutes = minutes < 10 ? '0' + minutes : minutes;\n this.currentDate = `${now.toLocaleDateString(this.configuration.dateFormat)} | ${hours}:${formattedMinutes} ${amPm}`;\n }\n \n\n updateDocumentCounts() {\n // Contar documentos firmados (approved: true)\n this.documentRequest.forEach((doc) =>{\n this.id= doc.id!;\n if(doc.approved){\n this.signedCount += 1;\n }else{\n this.rejectedCount += 1;\n }\n })\n console.log(this.documentRequest, this.signedCount,this.rejectedCount)\n if(this.signedCount > 0){\n this.isAllDocumentsRejected = false\n }else{\n this.isAllDocumentsRejected = true\n }\n \n }\n\n getPdfNames(){\n let currentFlag = '';\n let previewFlag = '';\n this.documentRequest.forEach((doc) =>{\n if(this.pdfsName === ''){\n this.pdfsName = doc.doc?.name.replace('.pdf','')!;\n currentFlag = doc.idRequisition!\n previewFlag = doc.idRequisition!\n }\n currentFlag = doc.idRequisition!;\n if(currentFlag !== previewFlag){\n this.pdfsName+= ','+doc.doc?.name.replace('.pdf','')!;\n currentFlag = doc.idRequisition!\n previewFlag = doc.idRequisition!\n }\n \n });\n }\n \n\n setCustomizationStyle(targetElement = document.documentElement): void {\n this.configuration = Utils.mergeConfiguration(\n new Configuration(),\n SIGNATURE_SUMMARY_DEFAULT,\n this.configuration\n );\n }\n\n}\n","<div class=\"fad-portal-content\">\n \n <ng-container *ngIf=\"!isAllDocumentsRejected\" >\n <ng-fad-image-inline\n [src]=\"images.send\"\n >\n </ng-fad-image-inline>\n <div class=\"fad-portal-title-bold\">\n {{pdfsName}}\n </div>\n <div class=\"fad-portal-content-bold date\">{{ currentDate }}</div>\n <div class=\"summary\">\n <div class=\"fad-portal-content-bold signeds\">\n <div>{{configuration.customization?.moduleCustomization?.legends?.signed}}</div>\n <div>{{signedCount}}</div>\n </div>\n <div class=\"line\">\n\n </div>\n <div class=\"fad-portal-content-bold rejecteds\">\n <div>{{configuration.customization?.moduleCustomization?.legends?.rejected}}</div>\n <div>{{rejectedCount}}</div>\n </div>\n </div>\n <div class=\"legends\">\n {{configuration.customization?.moduleCustomization?.legends?.legend}}\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAllDocumentsRejected\" >\n <ng-fad-image-inline\n [src]=\"images.reject\"\n >\n </ng-fad-image-inline>\n <div class=\"document-rejected\"> {{configuration.customization?.moduleCustomization?.legends?.documentRejected}} </div>\n <div class=\"fad-portal-title-bold title-document\">\n {{pdfsName}}\n </div>\n <div class=\"id-requisition\">\n ID {{id}} | {{ currentDate }}\n </div>\n </ng-container>\n \n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { NgFadSharedModule } from '@fad-producto-portal/ng-fad-shared';\r\nimport { NgFadImageInlineModule } from '@fad-producto/ng-fad-image-inline';\r\nimport { NgFadViewerModule } from '@fad-producto-portal/ng-fad-viewer';\r\nimport { PdfViewerFeaComponent } from './components/pdf-viewer-fea/pdf-viewer-fea.component';\r\n\r\n// components\r\nimport { ValidateRfcComponent } from './components/validate-rfc/validate-rfc.component';\r\nimport { DocumentApprovalListComponent } from './components/document-approval-list/document-approval-list.component';\r\nimport { UploadESignatureComponent } from './components/upload-e-signature/upload-e-signature.component';\r\nimport { GenericErrorFeaComponent } from './components/generic-error-fea/generic-error-fea.component';\r\nimport { ValidateSignatureComponent } from './components/validate-signature/validate-signature.component';\r\nimport { SignatureSummaryComponent } from './components/signature-summary/signature-summary.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ValidateRfcComponent,\r\n DocumentApprovalListComponent,\r\n UploadESignatureComponent,\r\n PdfViewerFeaComponent,\r\n GenericErrorFeaComponent,\r\n ValidateSignatureComponent,\r\n SignatureSummaryComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n NgFadSharedModule,\r\n NgFadImageInlineModule,\r\n NgFadViewerModule, \r\n ],\r\n exports: [\r\n ValidateRfcComponent,\r\n DocumentApprovalListComponent,\r\n UploadESignatureComponent,\r\n PdfViewerFeaComponent,\r\n GenericErrorFeaComponent,\r\n ValidateSignatureComponent,\r\n SignatureSummaryComponent\r\n ]\r\n})\r\nexport class NgFadSignatureFeaModule { }\r\n","/*\r\n * Public API Surface of ng-fad-signature-fea\r\n */\r\n\r\nexport * from './lib/ng-fad-signature-fea.module';\r\n\r\n// constants\r\nexport * from './lib/constants/index';\r\n\r\n// models\r\nexport * from './lib/models/index';\r\n\r\n// components\r\nexport * from './lib/components/validate-rfc/validate-rfc.component';\r\nexport * from './lib/components/document-approval-list/document-approval-list.component';\r\nexport * from './lib/components/upload-e-signature/upload-e-signature.component';\r\nexport * from './lib/components/pdf-viewer-fea/pdf-viewer-fea.component';\r\nexport * from './lib/components/generic-error-fea/generic-error-fea.component';\r\nexport *from './lib/components/validate-signature/validate-signature.component';\r\nexport * from './lib/components/signature-summary/signature-summary.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["GeneralPdfViewerComponentModule","i1","i2","i3","i4","i5","i5.PdfViewerFeaComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fad-producto-portal/ng-fad-signature-fea",
3
- "version": "1.0.0-alpha.10",
3
+ "version": "1.0.0-alpha.11",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.2.0",
6
6
  "@angular/core": "^16.2.0"