@fad-producto-portal/ng-fad-signature-fea 1.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/assets/images/fad-signature-fea/document-approval-list/activeApprove.png +0 -0
- package/assets/images/fad-signature-fea/document-approval-list/activeReject.png +0 -0
- package/assets/images/fad-signature-fea/document-approval-list/inactiveApprove.png +0 -0
- package/assets/images/fad-signature-fea/document-approval-list/inactiveReject.png +0 -0
- package/assets/images/fad-signature-fea/generic-error-fea/error.svg +41 -0
- package/assets/images/fad-signature-fea/upload-e-signature/check-off.svg +20 -0
- package/assets/images/fad-signature-fea/upload-e-signature/check-on.svg +12 -0
- package/assets/images/fad-signature-fea/upload-e-signature/file.svg +1 -0
- package/assets/images/fad-signature-fea/upload-e-signature/upload.svg +1 -0
- package/esm2022/fad-producto-portal-ng-fad-signature-fea.mjs +5 -0
- package/esm2022/lib/components/document-approval-list/document-approval-list.component.mjs +237 -0
- package/esm2022/lib/components/generic-error-fea/generic-error-fea.component.mjs +28 -0
- package/esm2022/lib/components/upload-e-signature/upload-e-signature.component.mjs +252 -0
- package/esm2022/lib/components/validate-rfc/validate-rfc.component.mjs +91 -0
- package/esm2022/lib/components/validate-signature/validate-signature.component.mjs +76 -0
- package/esm2022/lib/constants/configuration/document-approval-list/document-approval-lis-tconfiguration.const.mjs +18 -0
- package/esm2022/lib/constants/configuration/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/constants/configuration/generic-error-fea/configuration-generic-error-fea.const.mjs +15 -0
- package/esm2022/lib/constants/configuration/generic-error-fea/index.mjs +2 -0
- package/esm2022/lib/constants/configuration/index.mjs +6 -0
- package/esm2022/lib/constants/configuration/upload-e-signature/configuration-upload-e-signature.const.mjs +93 -0
- package/esm2022/lib/constants/configuration/upload-e-signature/index.mjs +2 -0
- package/esm2022/lib/constants/configuration/validate-rfc/configuration-validate-rfc.const.mjs +18 -0
- package/esm2022/lib/constants/configuration/validate-rfc/index.mjs +2 -0
- package/esm2022/lib/constants/configuration/validate-signature/index.mjs +2 -0
- package/esm2022/lib/constants/configuration/validate-signature/validate-signature.const.mjs +15 -0
- package/esm2022/lib/constants/errors/document-approval-list/document-approval-list-error-code.mjs +7 -0
- package/esm2022/lib/constants/errors/document-approval-list/document-approval-list-error-description.mjs +13 -0
- package/esm2022/lib/constants/errors/document-approval-list/index.mjs +3 -0
- package/esm2022/lib/constants/errors/generic-error-fea/generic-error-fea-error-code.mjs +4 -0
- package/esm2022/lib/constants/errors/generic-error-fea/generic-error-fea-error-description.mjs +7 -0
- package/esm2022/lib/constants/errors/generic-error-fea/index.mjs +3 -0
- package/esm2022/lib/constants/errors/index.mjs +6 -0
- package/esm2022/lib/constants/errors/upload-e-signature/index.mjs +3 -0
- package/esm2022/lib/constants/errors/upload-e-signature/upload-e-signature-error-code.mjs +13 -0
- package/esm2022/lib/constants/errors/upload-e-signature/upload-e-signature-error-description.mjs +25 -0
- package/esm2022/lib/constants/errors/validate-rfc/index.mjs +3 -0
- package/esm2022/lib/constants/errors/validate-rfc/validate-rfc-error-code.mjs +6 -0
- package/esm2022/lib/constants/errors/validate-rfc/validate-rfc-error-description.mjs +11 -0
- package/esm2022/lib/constants/errors/validate-signature/index.mjs +3 -0
- package/esm2022/lib/constants/errors/validate-signature/validate-signature-error-code.mjs +8 -0
- package/esm2022/lib/constants/errors/validate-signature/validate-signature-error-description.mjs +15 -0
- package/esm2022/lib/constants/index.mjs +3 -0
- package/esm2022/lib/models/components/document-approval-list/document-approval-fea.interface.mjs +2 -0
- package/esm2022/lib/models/components/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/models/components/index.mjs +3 -0
- package/esm2022/lib/models/components/upload-e-signature/certificate.interface.mjs +2 -0
- package/esm2022/lib/models/components/upload-e-signature/index.mjs +3 -0
- package/esm2022/lib/models/components/upload-e-signature/upload-e-signature-complete.interface.mjs +2 -0
- package/esm2022/lib/models/configuration/document-approval-list/document-approval-list.interface.mjs +2 -0
- package/esm2022/lib/models/configuration/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/models/configuration/generic-error-fea/generic-error-fea-configuration.interface.mjs +2 -0
- package/esm2022/lib/models/configuration/generic-error-fea/index.mjs +2 -0
- package/esm2022/lib/models/configuration/index.mjs +6 -0
- package/esm2022/lib/models/configuration/upload-e-signature/index.mjs +2 -0
- package/esm2022/lib/models/configuration/upload-e-signature/upload-e-signature-configuration.interface.mjs +2 -0
- package/esm2022/lib/models/configuration/validate-rfc/index.mjs +2 -0
- package/esm2022/lib/models/configuration/validate-rfc/validate-rfc-configuration.interface.mjs +2 -0
- package/esm2022/lib/models/configuration/validate-signature/index.mjs +2 -0
- package/esm2022/lib/models/configuration/validate-signature/validate-signature-configuration.interface.mjs +2 -0
- package/esm2022/lib/models/customization/index.mjs +3 -0
- package/esm2022/lib/models/customization/legends/document-approval-list/document-approval-list-legends.interface.mjs +2 -0
- package/esm2022/lib/models/customization/legends/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/models/customization/legends/generic-error-fea/generic-error-fea-legends.interface.mjs +2 -0
- package/esm2022/lib/models/customization/legends/generic-error-fea/index.mjs +2 -0
- package/esm2022/lib/models/customization/legends/index.mjs +6 -0
- package/esm2022/lib/models/customization/legends/upload-e-signature/index.mjs +2 -0
- package/esm2022/lib/models/customization/legends/upload-e-signature/upload-e-signature-legends.interface.mjs +2 -0
- package/esm2022/lib/models/customization/legends/validate-rfc/index.mjs +2 -0
- package/esm2022/lib/models/customization/legends/validate-rfc/validate-rfc-legends.interface.mjs +2 -0
- package/esm2022/lib/models/customization/legends/validate-signature/index.mjs +2 -0
- package/esm2022/lib/models/customization/legends/validate-signature/validate-signature-legends.interface.mjs +2 -0
- package/esm2022/lib/models/customization/style/document-approval-list/document-approval-list-style.interface.mjs +2 -0
- package/esm2022/lib/models/customization/style/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/models/customization/style/generic-error-fea/generic-error-fea-style.interface.mjs +2 -0
- package/esm2022/lib/models/customization/style/generic-error-fea/index.mjs +2 -0
- package/esm2022/lib/models/customization/style/index.mjs +6 -0
- package/esm2022/lib/models/customization/style/upload-e-signature/index.mjs +2 -0
- package/esm2022/lib/models/customization/style/upload-e-signature/upload-e-signature-style.interface.mjs +2 -0
- package/esm2022/lib/models/customization/style/validate-rfc/index.mjs +2 -0
- package/esm2022/lib/models/customization/style/validate-rfc/validate-rfc-style.interface.mjs +2 -0
- package/esm2022/lib/models/customization/style/validate-signature/index.mjs +2 -0
- package/esm2022/lib/models/customization/style/validate-signature/validate-signature-style.interface.mjs +2 -0
- package/esm2022/lib/models/index.mjs +6 -0
- package/esm2022/lib/models/path-dependencies/document-approval-list/document-approval-list-dependencies.interface.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/generic-error-fea/generic-error-fea-dependencies.interface.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/generic-error-fea/index.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/index.mjs +6 -0
- package/esm2022/lib/models/path-dependencies/upload-e-signature/index.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/upload-e-signature/upload-e-signature-dependencies.interface.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/validate-rfc/index.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/validate-rfc/validate-rfc-dependencies.interface.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/validate-signature/index.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/validate-signature/validate-signature-dependencies.interface.mjs +2 -0
- package/esm2022/lib/ng-fad-signature-fea.module.mjs +61 -0
- package/esm2022/public-api.mjs +15 -0
- package/fesm2022/fad-producto-portal-ng-fad-signature-fea.mjs +976 -0
- package/fesm2022/fad-producto-portal-ng-fad-signature-fea.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/document-approval-list/document-approval-list.component.d.ts +62 -0
- package/lib/components/generic-error-fea/generic-error-fea.component.d.ts +13 -0
- package/lib/components/upload-e-signature/upload-e-signature.component.d.ts +52 -0
- package/lib/components/validate-rfc/validate-rfc.component.d.ts +29 -0
- package/lib/components/validate-signature/validate-signature.component.d.ts +22 -0
- package/lib/constants/configuration/document-approval-list/document-approval-lis-tconfiguration.const.d.ts +2 -0
- package/lib/constants/configuration/document-approval-list/index.d.ts +1 -0
- package/lib/constants/configuration/generic-error-fea/configuration-generic-error-fea.const.d.ts +2 -0
- package/lib/constants/configuration/generic-error-fea/index.d.ts +1 -0
- package/lib/constants/configuration/index.d.ts +5 -0
- package/lib/constants/configuration/upload-e-signature/configuration-upload-e-signature.const.d.ts +2 -0
- package/lib/constants/configuration/upload-e-signature/index.d.ts +1 -0
- package/lib/constants/configuration/validate-rfc/configuration-validate-rfc.const.d.ts +2 -0
- package/lib/constants/configuration/validate-rfc/index.d.ts +1 -0
- package/lib/constants/configuration/validate-signature/index.d.ts +1 -0
- package/lib/constants/configuration/validate-signature/validate-signature.const.d.ts +2 -0
- package/lib/constants/errors/document-approval-list/document-approval-list-error-code.d.ts +5 -0
- package/lib/constants/errors/document-approval-list/document-approval-list-error-description.d.ts +2 -0
- package/lib/constants/errors/document-approval-list/index.d.ts +2 -0
- package/lib/constants/errors/generic-error-fea/generic-error-fea-error-code.d.ts +2 -0
- package/lib/constants/errors/generic-error-fea/generic-error-fea-error-description.d.ts +2 -0
- package/lib/constants/errors/generic-error-fea/index.d.ts +2 -0
- package/lib/constants/errors/index.d.ts +5 -0
- package/lib/constants/errors/upload-e-signature/index.d.ts +2 -0
- package/lib/constants/errors/upload-e-signature/upload-e-signature-error-code.d.ts +11 -0
- package/lib/constants/errors/upload-e-signature/upload-e-signature-error-description.d.ts +2 -0
- package/lib/constants/errors/validate-rfc/index.d.ts +2 -0
- package/lib/constants/errors/validate-rfc/validate-rfc-error-code.d.ts +4 -0
- package/lib/constants/errors/validate-rfc/validate-rfc-error-description.d.ts +2 -0
- package/lib/constants/errors/validate-signature/index.d.ts +2 -0
- package/lib/constants/errors/validate-signature/validate-signature-error-code.d.ts +6 -0
- package/lib/constants/errors/validate-signature/validate-signature-error-description.d.ts +2 -0
- package/lib/constants/index.d.ts +2 -0
- package/lib/models/components/document-approval-list/document-approval-fea.interface.d.ts +8 -0
- package/lib/models/components/document-approval-list/index.d.ts +1 -0
- package/lib/models/components/index.d.ts +2 -0
- package/lib/models/components/upload-e-signature/certificate.interface.d.ts +5 -0
- package/lib/models/components/upload-e-signature/index.d.ts +2 -0
- package/lib/models/components/upload-e-signature/upload-e-signature-complete.interface.d.ts +4 -0
- package/lib/models/configuration/document-approval-list/document-approval-list.interface.d.ts +8 -0
- package/lib/models/configuration/document-approval-list/index.d.ts +1 -0
- package/lib/models/configuration/generic-error-fea/generic-error-fea-configuration.interface.d.ts +5 -0
- package/lib/models/configuration/generic-error-fea/index.d.ts +1 -0
- package/lib/models/configuration/index.d.ts +5 -0
- package/lib/models/configuration/upload-e-signature/index.d.ts +1 -0
- package/lib/models/configuration/upload-e-signature/upload-e-signature-configuration.interface.d.ts +14 -0
- package/lib/models/configuration/validate-rfc/index.d.ts +1 -0
- package/lib/models/configuration/validate-rfc/validate-rfc-configuration.interface.d.ts +9 -0
- package/lib/models/configuration/validate-signature/index.d.ts +1 -0
- package/lib/models/configuration/validate-signature/validate-signature-configuration.interface.d.ts +9 -0
- package/lib/models/customization/index.d.ts +2 -0
- package/lib/models/customization/legends/document-approval-list/document-approval-list-legends.interface.d.ts +8 -0
- package/lib/models/customization/legends/document-approval-list/index.d.ts +1 -0
- package/lib/models/customization/legends/generic-error-fea/generic-error-fea-legends.interface.d.ts +5 -0
- package/lib/models/customization/legends/generic-error-fea/index.d.ts +1 -0
- package/lib/models/customization/legends/index.d.ts +5 -0
- package/lib/models/customization/legends/upload-e-signature/index.d.ts +1 -0
- package/lib/models/customization/legends/upload-e-signature/upload-e-signature-legends.interface.d.ts +54 -0
- package/lib/models/customization/legends/validate-rfc/index.d.ts +1 -0
- package/lib/models/customization/legends/validate-rfc/validate-rfc-legends.interface.d.ts +6 -0
- package/lib/models/customization/legends/validate-signature/index.d.ts +1 -0
- package/lib/models/customization/legends/validate-signature/validate-signature-legends.interface.d.ts +3 -0
- package/lib/models/customization/style/document-approval-list/document-approval-list-style.interface.d.ts +2 -0
- package/lib/models/customization/style/document-approval-list/index.d.ts +1 -0
- package/lib/models/customization/style/generic-error-fea/generic-error-fea-style.interface.d.ts +2 -0
- package/lib/models/customization/style/generic-error-fea/index.d.ts +1 -0
- package/lib/models/customization/style/index.d.ts +5 -0
- package/lib/models/customization/style/upload-e-signature/index.d.ts +1 -0
- package/lib/models/customization/style/upload-e-signature/upload-e-signature-style.interface.d.ts +22 -0
- package/lib/models/customization/style/validate-rfc/index.d.ts +1 -0
- package/lib/models/customization/style/validate-rfc/validate-rfc-style.interface.d.ts +2 -0
- package/lib/models/customization/style/validate-signature/index.d.ts +1 -0
- package/lib/models/customization/style/validate-signature/validate-signature-style.interface.d.ts +2 -0
- package/lib/models/index.d.ts +5 -0
- package/lib/models/path-dependencies/document-approval-list/document-approval-list-dependencies.interface.d.ts +9 -0
- package/lib/models/path-dependencies/document-approval-list/index.d.ts +1 -0
- package/lib/models/path-dependencies/generic-error-fea/generic-error-fea-dependencies.interface.d.ts +6 -0
- package/lib/models/path-dependencies/generic-error-fea/index.d.ts +1 -0
- package/lib/models/path-dependencies/index.d.ts +5 -0
- package/lib/models/path-dependencies/upload-e-signature/index.d.ts +1 -0
- package/lib/models/path-dependencies/upload-e-signature/upload-e-signature-dependencies.interface.d.ts +9 -0
- package/lib/models/path-dependencies/validate-rfc/index.d.ts +1 -0
- package/lib/models/path-dependencies/validate-rfc/validate-rfc-dependencies.interface.d.ts +4 -0
- package/lib/models/path-dependencies/validate-signature/index.d.ts +1 -0
- package/lib/models/path-dependencies/validate-signature/validate-signature-dependencies.interface.d.ts +4 -0
- package/lib/ng-fad-signature-fea.module.d.ts +16 -0
- package/package.json +31 -0
- package/public-api.d.ts +8 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Utils } from '@fad-producto-portal/fad-common/utils/utils';
|
|
3
|
+
import { Configuration } from '@fad-producto-portal/fad-common/models/core';
|
|
4
|
+
import { getUploadESignatureErrorDescription, UPLOAD_E_SIGNATURE_CONFIGURATION_DEFAULT, UploadESignatureErrorCode } from '../../constants';
|
|
5
|
+
import { Validators } from '@angular/forms';
|
|
6
|
+
import { ResponseError, SharedUtils } from '@fad-producto-portal/ng-fad-shared';
|
|
7
|
+
import { finalize } from 'rxjs';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
import * as i2 from "@fad-producto-portal/ng-fad-services";
|
|
11
|
+
import * as i3 from "@angular/common";
|
|
12
|
+
import * as i4 from "@fad-producto-portal/ng-fad-shared";
|
|
13
|
+
import * as i5 from "@fad-producto/ng-fad-image-inline";
|
|
14
|
+
export class UploadESignatureComponent {
|
|
15
|
+
constructor(hostContext, fb, fad, mifiel) {
|
|
16
|
+
this.hostContext = hostContext;
|
|
17
|
+
this.fb = fb;
|
|
18
|
+
this.fad = fad;
|
|
19
|
+
this.mifiel = mifiel;
|
|
20
|
+
this.documents = [];
|
|
21
|
+
this.onerror = new EventEmitter();
|
|
22
|
+
this.onloader = new EventEmitter();
|
|
23
|
+
this.oncomplete = new EventEmitter();
|
|
24
|
+
this.formatCerList = ['cer'];
|
|
25
|
+
this.formatKeyList = ['key'];
|
|
26
|
+
this.passwordInputType = 'password';
|
|
27
|
+
this.isValidated = false;
|
|
28
|
+
this.showComponent = true;
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
this.setCustomizationStyle(this.hostContext.nativeElement);
|
|
32
|
+
this.uploadImg = this.configuration.pathDependencies?.images?.upload || `${this.configuration.pathDependencies?.imageDirectory}upload.svg`;
|
|
33
|
+
this.checkOnImg = this.configuration.pathDependencies?.images?.checkOn || `${this.configuration.pathDependencies?.imageDirectory}check-on.svg`;
|
|
34
|
+
this.checkOffImg = this.configuration.pathDependencies?.images?.checkOff || `${this.configuration.pathDependencies?.imageDirectory}check-off.svg`;
|
|
35
|
+
this.fileImg = this.configuration.pathDependencies?.images?.file || `${this.configuration.pathDependencies?.imageDirectory}file.svg`;
|
|
36
|
+
this.showComponent = this.validateData();
|
|
37
|
+
if (this.showComponent) {
|
|
38
|
+
this.documentPluralTitle = this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.plural?.replace('#TOTAL_DOCS', this.documents?.length.toString()); // poner longitud
|
|
39
|
+
if (this.documents?.length === 1) {
|
|
40
|
+
const status = this.documents[0].approved ? this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.approved : this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.rejected;
|
|
41
|
+
this.documentSingularTitle = this.configuration.customization?.moduleCustomization?.legends?.documents?.title?.singular?.replace('#STATUS_DOC', status); // poner longitud
|
|
42
|
+
}
|
|
43
|
+
this.initForm();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
validateData() {
|
|
47
|
+
if (!this.documents || this.documents.length < 1) {
|
|
48
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_DOCUMENTS, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_DOCUMENTS), 'ng-fad-signature-fea-upload-e-signature'));
|
|
49
|
+
return false;
|
|
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
|
+
if (!this.rfc) {
|
|
56
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.NO_RFC, getUploadESignatureErrorDescription(UploadESignatureErrorCode.NO_RFC), 'ng-fad-signature-fea-upload-e-signature'));
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
initForm() {
|
|
62
|
+
this.form = this.fb.group({
|
|
63
|
+
cer: [null, [Validators.required]],
|
|
64
|
+
key: [null, [Validators.required]],
|
|
65
|
+
password: [null, [Validators.required]]
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
get cer() {
|
|
69
|
+
return this.form.get('cer');
|
|
70
|
+
}
|
|
71
|
+
get key() {
|
|
72
|
+
return this.form.get('key');
|
|
73
|
+
}
|
|
74
|
+
get password() {
|
|
75
|
+
return this.form.get('password');
|
|
76
|
+
}
|
|
77
|
+
openFilePicker(fileInput) {
|
|
78
|
+
fileInput.click();
|
|
79
|
+
}
|
|
80
|
+
onFileChange(event, type) {
|
|
81
|
+
const file = event.target.files[0];
|
|
82
|
+
if (!file)
|
|
83
|
+
return;
|
|
84
|
+
if (event.target.files.length > 1) {
|
|
85
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.MULTIPLE_FILES, getUploadESignatureErrorDescription(UploadESignatureErrorCode.MULTIPLE_FILES), 'ng-fad-signature-fea-upload-e-signature'));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (type === 'cer' && !/\.cer$/.test(file.name)) {
|
|
89
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_CER, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_CER), 'ng-fad-signature-fea-upload-e-signature'));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (type === 'key' && !/\.key$/.test(file.name)) {
|
|
93
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_KEY, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_KEY), 'ng-fad-signature-fea-upload-e-signature'));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
type === 'cer' ? this.cer?.setValue(file) : this.key?.setValue(file);
|
|
97
|
+
}
|
|
98
|
+
onfiledropped(files, type) {
|
|
99
|
+
const file = files[0];
|
|
100
|
+
type === 'cer' ? this.cer?.setValue(file) : this.key?.setValue(file);
|
|
101
|
+
}
|
|
102
|
+
onerrorDirective(event, type) {
|
|
103
|
+
if (event.code === -1)
|
|
104
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.MULTIPLE_FILES, getUploadESignatureErrorDescription(UploadESignatureErrorCode.MULTIPLE_FILES), 'ng-fad-signature-fea-upload-e-signature'));
|
|
105
|
+
if (event.code === -2 && type === 'cer')
|
|
106
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_CER, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_CER), 'ng-fad-signature-fea-upload-e-signature'));
|
|
107
|
+
if (event.code === -2 && type === 'key')
|
|
108
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.FORMAT_KEY, getUploadESignatureErrorDescription(UploadESignatureErrorCode.FORMAT_KEY), 'ng-fad-signature-fea-upload-e-signature'));
|
|
109
|
+
}
|
|
110
|
+
changePaswordInputType() {
|
|
111
|
+
this.passwordInputType = this.passwordInputType === 'text' ? 'password' : 'text';
|
|
112
|
+
}
|
|
113
|
+
savePassword(value) {
|
|
114
|
+
const inputElement = value.target;
|
|
115
|
+
this.password?.setValue(inputElement.value);
|
|
116
|
+
}
|
|
117
|
+
allIsRejected() {
|
|
118
|
+
return this.documents.every(doc => doc.approved === false);
|
|
119
|
+
}
|
|
120
|
+
async signDocuments() {
|
|
121
|
+
let canContinue = true;
|
|
122
|
+
const rejectedDocuments = this.documents.filter((doc) => !doc.approved);
|
|
123
|
+
if (rejectedDocuments.length > 0) {
|
|
124
|
+
canContinue = await this.rejectDocuments(true);
|
|
125
|
+
}
|
|
126
|
+
if (!canContinue)
|
|
127
|
+
return;
|
|
128
|
+
this.onloader.emit(true);
|
|
129
|
+
const cer = await this.getBase64File(this.cer?.value);
|
|
130
|
+
this.onloader.emit(false);
|
|
131
|
+
if (!cer)
|
|
132
|
+
return;
|
|
133
|
+
this.onloader.emit(true);
|
|
134
|
+
const key = await this.getBase64File(this.key?.value);
|
|
135
|
+
this.onloader.emit(false);
|
|
136
|
+
if (!key)
|
|
137
|
+
return;
|
|
138
|
+
const aprrovedDocuments = this.documents.filter((doc) => doc.approved);
|
|
139
|
+
const body = {
|
|
140
|
+
cer: cer.split(',')[1],
|
|
141
|
+
key: key.split(',')[1],
|
|
142
|
+
password: this.password?.value,
|
|
143
|
+
documents: aprrovedDocuments,
|
|
144
|
+
signerId: this.rfc
|
|
145
|
+
};
|
|
146
|
+
this.onloader.emit(true);
|
|
147
|
+
this.fad.signFea(body, this.configuration.credentials?.key, this.configuration.credentials?.iv, this.configuration.services?.reject).pipe(finalize(() => {
|
|
148
|
+
this.onloader.emit(false);
|
|
149
|
+
})).subscribe({
|
|
150
|
+
next: (res) => {
|
|
151
|
+
if (res.success) {
|
|
152
|
+
const certificate = this.mifiel.parseCertificate(body.cer);
|
|
153
|
+
const data = {
|
|
154
|
+
cer: certificate
|
|
155
|
+
};
|
|
156
|
+
this.oncomplete.emit(data);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.SERVICE, res.error, 'ng-fad-signature-fea-upload-e-signature'));
|
|
160
|
+
;
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
error: (error) => {
|
|
164
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.HTTP, error.error, 'ng-fad-signature-fea-upload-e-signature'));
|
|
165
|
+
;
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
rejectDocuments(fromSign = false) {
|
|
170
|
+
return new Promise((resolve, reject) => {
|
|
171
|
+
const rejectedDocuments = this.documents.filter((doc) => !doc.approved);
|
|
172
|
+
const body = {
|
|
173
|
+
cer: '',
|
|
174
|
+
key: '',
|
|
175
|
+
password: '',
|
|
176
|
+
documents: rejectedDocuments.map(res => {
|
|
177
|
+
return {
|
|
178
|
+
id: res.id,
|
|
179
|
+
idRequisition: res.idRequisition,
|
|
180
|
+
};
|
|
181
|
+
}),
|
|
182
|
+
signerId: this.signerId
|
|
183
|
+
};
|
|
184
|
+
this.onloader.emit(true);
|
|
185
|
+
this.fad.rejectFea(body, this.configuration.credentials?.key, this.configuration.credentials?.iv, this.configuration.services?.reject).pipe(finalize(() => {
|
|
186
|
+
this.onloader.emit(false);
|
|
187
|
+
})).subscribe({
|
|
188
|
+
next: (res) => {
|
|
189
|
+
if (res.success) {
|
|
190
|
+
if (!fromSign)
|
|
191
|
+
this.oncomplete.emit(null);
|
|
192
|
+
resolve(true);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.SERVICE, res.error, 'ng-fad-signature-fea-upload-e-signature'));
|
|
196
|
+
reject(null);
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
error: (error) => {
|
|
200
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.HTTP, error.error, 'ng-fad-signature-fea-upload-e-signature'));
|
|
201
|
+
reject(null);
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
async onRejectDocument() {
|
|
207
|
+
await this.rejectDocuments();
|
|
208
|
+
}
|
|
209
|
+
async getBase64File(file) {
|
|
210
|
+
const data = await SharedUtils.fileToBase64(file).then(base64 => base64).catch(error => null);
|
|
211
|
+
if (data)
|
|
212
|
+
return data;
|
|
213
|
+
else {
|
|
214
|
+
this.onerror.emit(new ResponseError(UploadESignatureErrorCode.ERROR_BASE_64, getUploadESignatureErrorDescription(UploadESignatureErrorCode.ERROR_BASE_64), 'ng-fad-signature-fea-upload-e-signature'));
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
setCustomizationStyle(targetElement = document.documentElement) {
|
|
219
|
+
this.configuration = Utils.mergeConfiguration(new Configuration(), UPLOAD_E_SIGNATURE_CONFIGURATION_DEFAULT, this.configuration);
|
|
220
|
+
Utils.setVariableCss('--fad-signature-fea-e-signature-documents-background-color', this.configuration.customization?.moduleCustomization?.style?.documents?.backgroundColor, { targetElement });
|
|
221
|
+
Utils.setVariableCss('--fad-signature-fea-e-signature-documents-border-radius', this.configuration.customization?.moduleCustomization?.style?.documents?.borderRadius, { targetElement });
|
|
222
|
+
Utils.setVariableCss('--fad-signature-fea-e-signature-upload-background-color', this.configuration.customization?.moduleCustomization?.style?.upload?.backgroundColor, { targetElement });
|
|
223
|
+
Utils.setVariableCss('--fad-signature-fea-e-signature-upload-border', this.configuration.customization?.moduleCustomization?.style?.upload?.border, { targetElement });
|
|
224
|
+
Utils.setVariableCss('--fad-signature-fea-e-signature-upload-border-radius', this.configuration.customization?.moduleCustomization?.style?.upload?.borderRadius, { targetElement });
|
|
225
|
+
Utils.setVariableCss('--fad-signature-fea-e-signature-upload-button-background-color', this.configuration.customization?.moduleCustomization?.style?.upload?.button?.backgroundColor, { targetElement });
|
|
226
|
+
Utils.setVariableCss('--fad-signature-fea-e-signature-upload-button-border-radius', this.configuration.customization?.moduleCustomization?.style?.upload?.button?.borderRadius, { targetElement });
|
|
227
|
+
Utils.setVariableCss('--fad-signature-fea-e-signature-upload-button-hover', this.configuration.customization?.moduleCustomization?.style?.upload?.button?.hover, { targetElement });
|
|
228
|
+
Utils.setVariableCss('--fad-signature-fea-e-signature-file-border-radius', this.configuration.customization?.moduleCustomization?.style?.file?.borderRadius, { targetElement });
|
|
229
|
+
Utils.setVariableCss('--fad-signature-fea-e-signature-file-img-background-color', this.configuration.customization?.moduleCustomization?.style?.file?.img?.backgroundColor, { targetElement });
|
|
230
|
+
}
|
|
231
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UploadESignatureComponent, deps: [{ token: i0.ElementRef }, { token: i1.FormBuilder }, { token: i2.FadService }, { token: i2.MifielService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
232
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UploadESignatureComponent, selector: "ng-fad-signature-fea-upload-e-signature", inputs: { configuration: "configuration", documents: "documents", signerId: "signerId", rfc: "rfc" }, outputs: { onerror: "onerror", onloader: "onloader", oncomplete: "oncomplete" }, ngImport: i0, template: "<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\">\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)\">\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 </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)=\"signDocuments()\">{{ 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)=\"signDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.plural }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onRejectDocument()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onRejectDocument()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.plural }}</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-md)}:host .container-document{display:flex;flex-direction:column;width:100%;background-color:var(--fad-signature-fea-e-signature-documents-background-color);border-radius:var(--fad-signature-fea-e-signature-documents-border-radius);padding:var(--fad-portal-common-separation-md);box-sizing:border-box;margin-top:var(--fad-portal-common-separation-xs)}:host .container-document .document{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between;border-bottom:1px solid var(--fad-portal-common-border-color);padding:var(--fad-portal-common-separation-md) 0}:host .container-document .document>div{flex:1}:host .container-document .document .status{text-align:center}:host .container-document .document .pages{text-align:end;color:var(--fad-portal-common-legends-secondary)}:host .document:only-child{border-bottom:none!important}:host .container-instruction-file{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between}:host .container-instruction-file .select-file{color:var(--fad-portal-common-primary-color);cursor:pointer}:host .container-upload{width:100%;box-sizing:border-box;border-radius:var(--fad-signature-fea-e-signature-upload-border-radius);border:var(--fad-signature-fea-e-signature-upload-border);padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-xs);display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);align-items:center;justify-content:center;text-align:center;background-color:var(--fad-signature-fea-e-signature-upload-background-color)}:host .container-upload .instruction{color:var(--fad-portal-common-legends-secondary)}:host .container-upload .upload-btn{max-width:90%;width:300px;box-sizing:border-box;background-color:var(--fad-signature-fea-e-signature-upload-button-background-color);border-radius:var(--fad-signature-fea-e-signature-upload-button-border-radius);color:var(--fad-portal-common-legends-tertiary);padding:var(--fad-portal-common-separation-xs);cursor:pointer;transition:all .2s ease-out;display:flex;align-items:center;justify-content:center;text-align:center;gap:var(--fad-portal-common-separation-xs)}:host .container-upload .upload-btn:hover{background-color:var(--fad-signature-fea-e-signature-upload-button-hover)}:host .container-file{display:flex;gap:var(--fad-portal-common-separation-md);align-items:center;padding:var(--fad-portal-common-separation-md);border:2px solid var(--fad-portal-common-successful-color);height:71px;border-radius:var(--fad-signature-fea-e-signature-file-border-radius);margin-top:var(--fad-portal-common-separation-xs)}:host .container-file .document-img{background-color:var(--fad-signature-fea-e-signature-file-img-background-color);width:40px;height:40px;border-radius:100%;display:flex;align-items:center;justify-content:center}:host .container-file .document-img img{width:60%;max-width:100%;max-height:100%}:host .fad-portal-container-input .input-password{position:relative}:host .fad-portal-container-input .input-password input{padding-right:100px}:host .fad-portal-container-input .input-password .password-show{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--fad-portal-common-legends-secondary);cursor:pointer}:host .container-confirm{display:flex;justify-content:space-between;align-items:center;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child{display:flex;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child>div:first-child{width:25px;height:25px}:host .container-confirm .action{max-width:80%;width:400px}:host .container-confirm ng-fad-image-inline{cursor:pointer}@media (max-width: 992px){:host .container-document .document{flex-direction:column;gap:var(--fad-portal-common-separation-xs)}:host .container-document .document .status,:host .container-document .document .pages{text-align:start!important}:host .container-confirm{flex-direction:column}:host .container-confirm .action{max-width:100%;width:100%!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DragDropDocumentDirective, selector: "[dragDropDocument]", inputs: ["formatList", "acceptMultipleFiles"], outputs: ["onfiledropped", "onerror"] }, { kind: "component", type: i5.NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"] }] }); }
|
|
233
|
+
}
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UploadESignatureComponent, decorators: [{
|
|
235
|
+
type: Component,
|
|
236
|
+
args: [{ selector: 'ng-fad-signature-fea-upload-e-signature', template: "<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\">\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)\">\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 </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)=\"signDocuments()\">{{ 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)=\"signDocuments()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.sign?.plural }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length === 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onRejectDocument()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.singular }}</button>\r\n <button type=\"button\" *ngIf=\"documents.length > 1 && allIsRejected()\" class=\"fad-portal-primary\" (click)=\"onRejectDocument()\">{{ configuration.customization?.moduleCustomization?.legends?.sign?.button?.reject?.plural }}</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-md)}:host .container-document{display:flex;flex-direction:column;width:100%;background-color:var(--fad-signature-fea-e-signature-documents-background-color);border-radius:var(--fad-signature-fea-e-signature-documents-border-radius);padding:var(--fad-portal-common-separation-md);box-sizing:border-box;margin-top:var(--fad-portal-common-separation-xs)}:host .container-document .document{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between;border-bottom:1px solid var(--fad-portal-common-border-color);padding:var(--fad-portal-common-separation-md) 0}:host .container-document .document>div{flex:1}:host .container-document .document .status{text-align:center}:host .container-document .document .pages{text-align:end;color:var(--fad-portal-common-legends-secondary)}:host .document:only-child{border-bottom:none!important}:host .container-instruction-file{display:flex;gap:var(--fad-portal-common-separation-md);justify-content:space-between}:host .container-instruction-file .select-file{color:var(--fad-portal-common-primary-color);cursor:pointer}:host .container-upload{width:100%;box-sizing:border-box;border-radius:var(--fad-signature-fea-e-signature-upload-border-radius);border:var(--fad-signature-fea-e-signature-upload-border);padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-xs);display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);align-items:center;justify-content:center;text-align:center;background-color:var(--fad-signature-fea-e-signature-upload-background-color)}:host .container-upload .instruction{color:var(--fad-portal-common-legends-secondary)}:host .container-upload .upload-btn{max-width:90%;width:300px;box-sizing:border-box;background-color:var(--fad-signature-fea-e-signature-upload-button-background-color);border-radius:var(--fad-signature-fea-e-signature-upload-button-border-radius);color:var(--fad-portal-common-legends-tertiary);padding:var(--fad-portal-common-separation-xs);cursor:pointer;transition:all .2s ease-out;display:flex;align-items:center;justify-content:center;text-align:center;gap:var(--fad-portal-common-separation-xs)}:host .container-upload .upload-btn:hover{background-color:var(--fad-signature-fea-e-signature-upload-button-hover)}:host .container-file{display:flex;gap:var(--fad-portal-common-separation-md);align-items:center;padding:var(--fad-portal-common-separation-md);border:2px solid var(--fad-portal-common-successful-color);height:71px;border-radius:var(--fad-signature-fea-e-signature-file-border-radius);margin-top:var(--fad-portal-common-separation-xs)}:host .container-file .document-img{background-color:var(--fad-signature-fea-e-signature-file-img-background-color);width:40px;height:40px;border-radius:100%;display:flex;align-items:center;justify-content:center}:host .container-file .document-img img{width:60%;max-width:100%;max-height:100%}:host .fad-portal-container-input .input-password{position:relative}:host .fad-portal-container-input .input-password input{padding-right:100px}:host .fad-portal-container-input .input-password .password-show{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--fad-portal-common-legends-secondary);cursor:pointer}:host .container-confirm{display:flex;justify-content:space-between;align-items:center;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child{display:flex;gap:var(--fad-portal-common-separation-xs)}:host .container-confirm>div:first-child>div:first-child{width:25px;height:25px}:host .container-confirm .action{max-width:80%;width:400px}:host .container-confirm ng-fad-image-inline{cursor:pointer}@media (max-width: 992px){:host .container-document .document{flex-direction:column;gap:var(--fad-portal-common-separation-xs)}:host .container-document .document .status,:host .container-document .document .pages{text-align:start!important}:host .container-confirm{flex-direction:column}:host .container-confirm .action{max-width:100%;width:100%!important}}\n"] }]
|
|
237
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FormBuilder }, { type: i2.FadService }, { type: i2.MifielService }]; }, propDecorators: { configuration: [{
|
|
238
|
+
type: Input
|
|
239
|
+
}], documents: [{
|
|
240
|
+
type: Input
|
|
241
|
+
}], signerId: [{
|
|
242
|
+
type: Input
|
|
243
|
+
}], rfc: [{
|
|
244
|
+
type: Input
|
|
245
|
+
}], onerror: [{
|
|
246
|
+
type: Output
|
|
247
|
+
}], onloader: [{
|
|
248
|
+
type: Output
|
|
249
|
+
}], oncomplete: [{
|
|
250
|
+
type: Output
|
|
251
|
+
}] } });
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWUtc2lnbmF0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNpZ25hdHVyZS1mZWEvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZC1lLXNpZ25hdHVyZS91cGxvYWQtZS1zaWduYXR1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvdXBsb2FkLWUtc2lnbmF0dXJlL3VwbG9hZC1lLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFNUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLHdDQUF3QyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0ksT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFPaEMsTUFBTSxPQUFPLHlCQUF5QjtJQXFCcEMsWUFBb0IsV0FBdUIsRUFBVSxFQUFlLEVBQzFELEdBQWUsRUFBVSxNQUFxQjtRQURwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDMUQsUUFBRyxH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c0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL2ZhZC1jb21tb24vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi9tb2RlbHMvY29yZSc7XHJcbmltcG9ydCB7IElVcGxvYWRFU2lnbmF0dXJlQ29uZmlndXJhdGlvbiwgVXBsb2FkRVNpZ25hdHVyZUNvbXBsZXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24sIFVQTE9BRF9FX1NJR05BVFVSRV9DT05GSUdVUkFUSU9OX0RFRkFVTFQsIFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSZXNwb25zZUVycm9yLCBTaGFyZWRVdGlscyB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zaGFyZWQnO1xyXG5pbXBvcnQgeyBGYWRTZXJ2aWNlLCBNaWZpZWxTZXJ2aWNlLCBTaWduYXR1cmVGZWFSZXF1ZXN0LCBTaWduSW50ZXJuYWxGZWFSZXF1ZXN0IH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1lLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWUtc2lnbmF0dXJlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZEVTaWduYXR1cmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb24hOiBJVXBsb2FkRVNpZ25hdHVyZUNvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgZG9jdW1lbnRzOiBTaWduSW50ZXJuYWxGZWFSZXF1ZXN0W10gPSBbXTtcclxuICBASW5wdXQoKSBzaWduZXJJZCE6IHN0cmluZztcclxuICBASW5wdXQoKSByZmMhOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIG9uZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPFJlc3BvbnNlRXJyb3I+KCk7XHJcbiAgQE91dHB1dCgpIG9ubG9hZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBvbmNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsIHwgVXBsb2FkRVNpZ25hdHVyZUNvbXBsZXRlPigpO1xyXG4gIHVwbG9hZEltZyE6IHN0cmluZztcclxuICBjaGVja09uSW1nITogc3RyaW5nO1xyXG4gIGNoZWNrT2ZmSW1nITogc3RyaW5nO1xyXG4gIGZpbGVJbWchOiBzdHJpbmc7XHJcbiAgZm9ybWF0Q2VyTGlzdCA9IFsnY2VyJ107XHJcbiAgZm9ybWF0S2V5TGlzdCA9IFsna2V5J107XHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBwYXNzd29yZElucHV0VHlwZSA9ICdwYXNzd29yZCc7XHJcbiAgZG9jdW1lbnRQbHVyYWxUaXRsZSE6IHN0cmluZztcclxuICBkb2N1bWVudFNpbmd1bGFyVGl0bGUhOiBzdHJpbmc7XHJcbiAgaXNWYWxpZGF0ZWQgPSBmYWxzZTtcclxuICBzaG93Q29tcG9uZW50ID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBob3N0Q29udGV4dDogRWxlbWVudFJlZiwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGZhZDogRmFkU2VydmljZSwgcHJpdmF0ZSBtaWZpZWw6IE1pZmllbFNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRDdXN0b21pemF0aW9uU3R5bGUodGhpcy5ob3N0Q29udGV4dC5uYXRpdmVFbGVtZW50KTtcclxuXHJcbiAgICB0aGlzLnVwbG9hZEltZyA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LnVwbG9hZCB8fCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VEaXJlY3Rvcnl9dXBsb2FkLnN2Z2A7XHJcbiAgICB0aGlzLmNoZWNrT25JbWcgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5jaGVja09uIHx8IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeX1jaGVjay1vbi5zdmdgO1xyXG4gICAgdGhpcy5jaGVja09mZkltZyA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LmNoZWNrT2ZmIHx8IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZURpcmVjdG9yeX1jaGVjay1vZmYuc3ZnYDtcclxuICAgIHRoaXMuZmlsZUltZyA9IHRoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzPy5pbWFnZXM/LmZpbGUgfHwgYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlRGlyZWN0b3J5fWZpbGUuc3ZnYDtcclxuXHJcbiAgICB0aGlzLnNob3dDb21wb25lbnQgPSB0aGlzLnZhbGlkYXRlRGF0YSgpO1xyXG4gICAgaWYgKHRoaXMuc2hvd0NvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50UGx1cmFsVGl0bGUgPSB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy50aXRsZT8ucGx1cmFsPy5yZXBsYWNlKCcjVE9UQUxfRE9DUycsIHRoaXMuZG9jdW1lbnRzPy5sZW5ndGgudG9TdHJpbmcoKSkhOyAvLyBwb25lciBsb25naXR1ZFxyXG4gICAgICBpZiAodGhpcy5kb2N1bWVudHM/Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuZG9jdW1lbnRzWzBdLmFwcHJvdmVkID8gdGhpcy5jb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRvY3VtZW50cz8udGl0bGU/LmFwcHJvdmVkISA6IHRoaXMuY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb2N1bWVudHM/LnRpdGxlPy5yZWplY3RlZCE7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFNpbmd1bGFyVGl0bGUgPSB0aGlzLmNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uZG9jdW1lbnRzPy50aXRsZT8uc2luZ3VsYXI/LnJlcGxhY2UoJyNTVEFUVVNfRE9DJywgc3RhdHVzKSE7IC8vIHBvbmVyIGxvbmdpdHVkXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaW5pdEZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRGF0YSgpIHtcclxuICAgIGlmKCF0aGlzLmRvY3VtZW50cyB8fCB0aGlzLmRvY3VtZW50cy5sZW5ndGggPCAxKSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTk9fRE9DVU1FTlRTLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk5PX0RPQ1VNRU5UUyksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZighdGhpcy5zaWduZXJJZCkge1xyXG4gICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk5PX1NJR05FUl9JRCwgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5OT19TSUdORVJfSUQpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIXRoaXMucmZjKSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuTk9fUkZDLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLk5PX1JGQyksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGluaXRGb3JtKCkge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGNlcjogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGtleTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHBhc3N3b3JkOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgY2VyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2NlcicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGtleSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdrZXknKTtcclxuICB9XHJcblxyXG4gIGdldCBwYXNzd29yZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdwYXNzd29yZCcpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZpbGVQaWNrZXIoZmlsZUlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIG9uRmlsZUNoYW5nZShldmVudDogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcbiAgICBpZiAoIWZpbGUpIHJldHVybjtcclxuXHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5NVUxUSVBMRV9GSUxFUywgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5NVUxUSVBMRV9GSUxFUyksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZSA9PT0gJ2NlcicgJiYgIS9cXC5jZXIkLy50ZXN0KGZpbGUubmFtZSkpIHtcclxuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfQ0VSLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9DRVIpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUgPT09ICdrZXknICYmICEvXFwua2V5JC8udGVzdChmaWxlLm5hbWUpKSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0tFWSwgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfS0VZKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGUgPT09ICdjZXInID8gdGhpcy5jZXI/LnNldFZhbHVlKGZpbGUpIDogdGhpcy5rZXk/LnNldFZhbHVlKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgb25maWxlZHJvcHBlZChmaWxlczogRmlsZUxpc3QsIHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmlsZSA9IGZpbGVzWzBdO1xyXG4gICAgdHlwZSA9PT0gJ2NlcicgPyB0aGlzLmNlcj8uc2V0VmFsdWUoZmlsZSkgOiB0aGlzLmtleT8uc2V0VmFsdWUoZmlsZSk7XHJcbiAgfVxyXG5cclxuICBvbmVycm9yRGlyZWN0aXZlKGV2ZW50OiBSZXNwb25zZUVycm9yLCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGlmIChldmVudC5jb2RlID09PSAtMSkgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5NVUxUSVBMRV9GSUxFUywgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5NVUxUSVBMRV9GSUxFUyksICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gLTIgJiYgdHlwZSA9PT0gJ2NlcicpIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuRk9STUFUX0NFUiwgZ2V0VXBsb2FkRVNpZ25hdHVyZUVycm9yRGVzY3JpcHRpb24oVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfQ0VSKSwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXVwbG9hZC1lLXNpZ25hdHVyZScpKTtcclxuICAgIGlmIChldmVudC5jb2RlID09PSAtMiAmJiB0eXBlID09PSAna2V5JykgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVXBsb2FkRVNpZ25hdHVyZUVycm9yQ29kZS5GT1JNQVRfS0VZLCBnZXRVcGxvYWRFU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkZPUk1BVF9LRVkpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFzd29yZElucHV0VHlwZSgpIHtcclxuICAgIHRoaXMucGFzc3dvcmRJbnB1dFR5cGUgPSB0aGlzLnBhc3N3b3JkSW5wdXRUeXBlID09PSAndGV4dCcgPyAncGFzc3dvcmQnIDogJ3RleHQnO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVBhc3N3b3JkKHZhbHVlOiBFdmVudCkge1xyXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdmFsdWUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICB0aGlzLnBhc3N3b3JkPy5zZXRWYWx1ZShpbnB1dEVsZW1lbnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYWxsSXNSZWplY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRvY3VtZW50cy5ldmVyeShkb2MgPT4gZG9jLmFwcHJvdmVkID09PSBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzaWduRG9jdW1lbnRzKCkge1xyXG4gICAgbGV0IGNhbkNvbnRpbnVlOiBib29sZWFuIHwgbnVsbCA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgcmVqZWN0ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50cy5maWx0ZXIoKGRvYykgPT4gIWRvYy5hcHByb3ZlZCk7XHJcbiAgICBpZiAocmVqZWN0ZWREb2N1bWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjYW5Db250aW51ZSA9IGF3YWl0IHRoaXMucmVqZWN0RG9jdW1lbnRzKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghY2FuQ29udGludWUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLm9ubG9hZGVyLmVtaXQodHJ1ZSk7XHJcbiAgICBjb25zdCBjZXIgPSBhd2FpdCB0aGlzLmdldEJhc2U2NEZpbGUodGhpcy5jZXI/LnZhbHVlKTtcclxuICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICBpZiAoIWNlcikgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTtcclxuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZ2V0QmFzZTY0RmlsZSh0aGlzLmtleT8udmFsdWUpO1xyXG4gICAgdGhpcy5vbmxvYWRlci5lbWl0KGZhbHNlKTtcclxuICAgIGlmICgha2V5KSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgYXBycm92ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50cy5maWx0ZXIoKGRvYykgPT4gZG9jLmFwcHJvdmVkKTtcclxuXHJcbiAgICBjb25zdCBib2R5OiBTaWduYXR1cmVGZWFSZXF1ZXN0ID0ge1xyXG4gICAgICBjZXI6IGNlci5zcGxpdCgnLCcpWzFdLFxyXG4gICAgICBrZXk6IGtleS5zcGxpdCgnLCcpWzFdLFxyXG4gICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZD8udmFsdWUsXHJcbiAgICAgIGRvY3VtZW50czogYXBycm92ZWREb2N1bWVudHMsXHJcbiAgICAgIHNpZ25lcklkOiB0aGlzLnJmY1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTtcclxuXHJcbiAgICB0aGlzLmZhZC5zaWduRmVhKGJvZHksIHRoaXMuY29uZmlndXJhdGlvbi5jcmVkZW50aWFscz8ua2V5ISwgdGhpcy5jb25maWd1cmF0aW9uLmNyZWRlbnRpYWxzPy5pdiEsIHRoaXMuY29uZmlndXJhdGlvbi5zZXJ2aWNlcz8ucmVqZWN0ISkucGlwZShcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnN0IGNlcnRpZmljYXRlID0gdGhpcy5taWZpZWwucGFyc2VDZXJ0aWZpY2F0ZShib2R5LmNlcik7XHJcbiAgICAgICAgICBjb25zdCBkYXRhOiBVcGxvYWRFU2lnbmF0dXJlQ29tcGxldGUgPSB7XHJcbiAgICAgICAgICAgIGNlcjogY2VydGlmaWNhdGUhXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5vbmNvbXBsZXRlLmVtaXQoZGF0YSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuU0VSVklDRSxyZXMuZXJyb3IsICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7O1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkhUVFAsIGVycm9yLmVycm9yLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpOztcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHJlamVjdERvY3VtZW50cyhmcm9tU2lnbiA9IGZhbHNlKTogUHJvbWlzZTxib29sZWFuIHwgbnVsbD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgcmVqZWN0ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50cy5maWx0ZXIoKGRvYykgPT4gIWRvYy5hcHByb3ZlZCk7XHJcblxyXG4gICAgICBjb25zdCBib2R5OiBTaWduYXR1cmVGZWFSZXF1ZXN0ID0ge1xyXG4gICAgICAgIGNlcjogJycsXHJcbiAgICAgICAga2V5OiAnJyxcclxuICAgICAgICBwYXNzd29yZDogJycsXHJcbiAgICAgICAgZG9jdW1lbnRzOiByZWplY3RlZERvY3VtZW50cy5tYXAocmVzID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiByZXMuaWQsXHJcbiAgICAgICAgICAgIGlkUmVxdWlzaXRpb246IHJlcy5pZFJlcXVpc2l0aW9uLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHNpZ25lcklkOiB0aGlzLnNpZ25lcklkXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTtcclxuXHJcblxyXG4gICAgICB0aGlzLmZhZC5yZWplY3RGZWEoYm9keSwgdGhpcy5jb25maWd1cmF0aW9uLmNyZWRlbnRpYWxzPy5rZXkhLCB0aGlzLmNvbmZpZ3VyYXRpb24uY3JlZGVudGlhbHM/Lml2ISwgdGhpcy5jb25maWd1cmF0aW9uLnNlcnZpY2VzPy5yZWplY3QhKS5waXBlKFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBpZiAoIWZyb21TaWduKSB0aGlzLm9uY29tcGxldGUuZW1pdChudWxsKTtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFVwbG9hZEVTaWduYXR1cmVFcnJvckNvZGUuU0VSVklDRSxyZXMuZXJyb3IsICduZy1mYWQtc2lnbmF0dXJlLWZlYS11cGxvYWQtZS1zaWduYXR1cmUnKSk7XHJcbiAgICAgICAgICAgIHJlamVjdChudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihVcGxvYWRFU2lnbmF0dXJlRXJyb3JDb2RlLkhUVFAsIGVycm9yLmVycm9yLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdXBsb2FkLWUtc2lnbmF0dXJlJykpO1xyXG4gICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uUmVqZWN0RG9jdW1lbnQoKSB7XHJcbiAgICBhd2FpdCB0aGlzLnJlamVjdERvY3VtZW50cygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0QmFzZTY0RmlsZShmaWxlOiBGaWxlKSB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgU2hhcmVkVXRpbHMuZmlsZVRvQmFzZTY0KGZpbGUpLnRoZW4oYmFzZTY0ID0+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+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLmtleVwiICNmaWxlS2V5SW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCAna2V5JylcIj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRhaW5lci1pbnB1dFwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnRcIiBmb3I9XCJcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnBhc3N3b3JkPy5sYWJlbCB9fTwvbGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1wYXNzd29yZFwiPlxyXG4gICAgICAgIDxpbnB1dCBbdHlwZV09XCJwYXNzd29yZElucHV0VHlwZVwiIChpbnB1dCk9XCJzYXZlUGFzc3dvcmQoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQtYm9sZCBwYXNzd29yZC1zaG93XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFzc3dvcmRJbnB1dFR5cGUgPT09ICd0ZXh0J1wiIChjbGljayk9XCJjaGFuZ2VQYXN3b3JkSW5wdXRUeXBlKClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmVTaWduYXR1cmU/LnBhc3N3b3JkPy5oaWRlIH19PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFzc3dvcmRJbnB1dFR5cGUgPT09ICdwYXNzd29yZCdcIiAoY2xpY2spPVwiY2hhbmdlUGFzd29yZElucHV0VHlwZSgpXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5lU2lnbmF0dXJlPy5wYXNzd29yZD8uc2hvdyB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGRpdj48L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudCBjb250YWluZXItY29uZmlybVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFhbGxJc1JlamVjdGVkKClcIiAoY2xpY2spPVwiaXNWYWxpZGF0ZWQgPSAhaXNWYWxpZGF0ZWRcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSAqbmdJZj1cImlzVmFsaWRhdGVkXCIgW3NyY109XCJjaGVja09uSW1nXCI+PC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICAgIDxuZy1mYWQtaW1hZ2UtaW5saW5lICpuZ0lmPVwiIWlzVmFsaWRhdGVkXCIgW3NyY109XCJjaGVja09mZkltZ1wiPjwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJkb2N1bWVudHMubGVuZ3RoID09PSAxXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5zaWduPy52YWxpZGF0ZT8uc2luZ3VsYXIgfX08L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImRvY3VtZW50cy5sZW5ndGggPiAxXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5zaWduPy52YWxpZGF0ZT8ucGx1cmFsIH19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2PjwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25cIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkb2N1bWVudHMubGVuZ3RoID09PSAxICYmICFhbGxJc1JlamVjdGVkKClcIiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZCB8fCAhaXNWYWxpZGF0ZWRcIiAoY2xpY2spPVwic2lnbkRvY3VtZW50cygpXCI+e3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5zaWduPy5idXR0b24/LnNpZ24/LnNpbmd1bGFyIH19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA+IDEgJiYgIWFsbElzUmVqZWN0ZWQoKVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1wcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkIHx8ICFpc1ZhbGlkYXRlZFwiIChjbGljayk9XCJzaWduRG9jdW1lbnRzKClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNpZ24/LmJ1dHRvbj8uc2lnbj8ucGx1cmFsIH19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZG9jdW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBhbGxJc1JlamVjdGVkKClcIiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIChjbGljayk9XCJvblJlamVjdERvY3VtZW50KClcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNpZ24/LmJ1dHRvbj8ucmVqZWN0Py5zaW5ndWxhciB9fTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRvY3VtZW50cy5sZW5ndGggPiAxICYmIGFsbElzUmVqZWN0ZWQoKVwiIGNsYXNzPVwiZmFkLXBvcnRhbC1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uUmVqZWN0RG9jdW1lbnQoKVwiPnt7IGNvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8uc2lnbj8uYnV0dG9uPy5yZWplY3Q/LnBsdXJhbCB9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { getValidateRFCErrorDescription, SIGNATURE_FEA_CONFIGURATION_DEFAULT, ValidateRFCErrorCode } from '../../constants';
|
|
4
|
+
import { Utils } from '@fad-producto-portal/fad-common/utils/utils';
|
|
5
|
+
import { Configuration } from '@fad-producto-portal/fad-common/models/core';
|
|
6
|
+
import { ResponseError } from '@fad-producto-portal/ng-fad-shared';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/forms";
|
|
9
|
+
import * as i2 from "@angular/router";
|
|
10
|
+
import * as i3 from "@fad-producto-portal/ng-fad-services";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
12
|
+
import * as i5 from "@fad-producto-portal/ng-fad-shared";
|
|
13
|
+
export class ValidateRfcComponent {
|
|
14
|
+
constructor(fb, hostContext, route, fadService) {
|
|
15
|
+
this.fb = fb;
|
|
16
|
+
this.hostContext = hostContext;
|
|
17
|
+
this.route = route;
|
|
18
|
+
this.fadService = fadService;
|
|
19
|
+
this.onerror = new EventEmitter();
|
|
20
|
+
this.onevent = new EventEmitter();
|
|
21
|
+
this.showComponent = true;
|
|
22
|
+
this.requisitionId = '';
|
|
23
|
+
this.signerId = '';
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
this.setCustomizationStyle(this.hostContext.nativeElement);
|
|
27
|
+
this.initializeForm();
|
|
28
|
+
this.route.queryParams.subscribe(params => {
|
|
29
|
+
this.requisitionId = params['req'];
|
|
30
|
+
this.signerId = params['sign'];
|
|
31
|
+
console.log(this.requisitionId, this.signerId);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
initializeForm() {
|
|
35
|
+
const maxCharacters = this.configuration?.maxCharacters || 13;
|
|
36
|
+
const rfcRegex = new RegExp(this.configuration?.regexRFC);
|
|
37
|
+
this.validationForm = this.fb.group({
|
|
38
|
+
code: ['', [
|
|
39
|
+
Validators.required,
|
|
40
|
+
Validators.minLength(maxCharacters),
|
|
41
|
+
Validators.maxLength(maxCharacters),
|
|
42
|
+
Validators.pattern(rfcRegex)
|
|
43
|
+
]]
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
onSubmit() {
|
|
47
|
+
this.validateRFC();
|
|
48
|
+
}
|
|
49
|
+
setCustomizationStyle(targetElement = document.documentElement) {
|
|
50
|
+
this.configuration = Utils.mergeConfiguration(new Configuration(), SIGNATURE_FEA_CONFIGURATION_DEFAULT, this.configuration);
|
|
51
|
+
}
|
|
52
|
+
validateRFC() {
|
|
53
|
+
if (this.validationForm.valid) {
|
|
54
|
+
console.error("Validar rfc ");
|
|
55
|
+
const validateReq = {
|
|
56
|
+
requisitionId: this.requisitionId,
|
|
57
|
+
signerId: this.signerId,
|
|
58
|
+
rfc: this.codeControl?.value
|
|
59
|
+
};
|
|
60
|
+
this.fadService.validateRfc(validateReq).subscribe({
|
|
61
|
+
next: (response) => {
|
|
62
|
+
if (response.success) {
|
|
63
|
+
this.onevent.emit(response);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.onerror.emit(new ResponseError(ValidateRFCErrorCode.SERVICE, getValidateRFCErrorDescription(ValidateRFCErrorCode.SERVICE), 'ng-fad-portal-signature-fea-validate-rfc'));
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
error: (error) => {
|
|
70
|
+
this.onerror.emit(new ResponseError(ValidateRFCErrorCode.HTTP, getValidateRFCErrorDescription(ValidateRFCErrorCode.HTTP), 'ng-fad-portal-signature-fea-validate-rfc'));
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
get codeControl() {
|
|
76
|
+
return this.validationForm.get('code') ?? null;
|
|
77
|
+
}
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidateRfcComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ElementRef }, { token: i2.ActivatedRoute }, { token: i3.FadService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ValidateRfcComponent, selector: "ng-fad-signature-fea-validate-rfc", inputs: { configuration: "configuration" }, outputs: { onerror: "onerror", onevent: "onevent" }, ngImport: i0, template: "<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\" 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", styles: [".validation-container{width:100%;display:flex;flex-direction:column;align-items:start;row-gap:var(--fad-portal-common-separation-md)}@media (max-width: 992px){.validation-container{width:100%;align-items:center}}.validation-container .title{font-family:var(--fad-portal-common-title-font-family);font-size:var(--fad-portal-common-title-font-size)}.validation-container form{display:flex;flex-direction:column;width:100%}.validation-container form .fad-portal-container-input{display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}.validation-container form .error-message{color:var(--fad-portal-common-error-color)}.validation-container form button{margin-top:var(--fad-portal-common-separation-md);cursor:pointer}.validation-container form button:disabled{cursor:auto}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.FormErrorsComponent, selector: "ng-fad-portal-shared-form-errors", inputs: ["configuration", "formData"], outputs: ["onerror"] }] }); }
|
|
80
|
+
}
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidateRfcComponent, decorators: [{
|
|
82
|
+
type: Component,
|
|
83
|
+
args: [{ selector: 'ng-fad-signature-fea-validate-rfc', template: "<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\" 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", styles: [".validation-container{width:100%;display:flex;flex-direction:column;align-items:start;row-gap:var(--fad-portal-common-separation-md)}@media (max-width: 992px){.validation-container{width:100%;align-items:center}}.validation-container .title{font-family:var(--fad-portal-common-title-font-family);font-size:var(--fad-portal-common-title-font-size)}.validation-container form{display:flex;flex-direction:column;width:100%}.validation-container form .fad-portal-container-input{display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}.validation-container form .error-message{color:var(--fad-portal-common-error-color)}.validation-container form button{margin-top:var(--fad-portal-common-separation-md);cursor:pointer}.validation-container form button:disabled{cursor:auto}\n"] }]
|
|
84
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.ElementRef }, { type: i2.ActivatedRoute }, { type: i3.FadService }]; }, propDecorators: { configuration: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], onerror: [{
|
|
87
|
+
type: Output
|
|
88
|
+
}], onevent: [{
|
|
89
|
+
type: Output
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtcmZjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNpZ25hdHVyZS1mZWEvc3JjL2xpYi9jb21wb25lbnRzL3ZhbGlkYXRlLXJmYy92YWxpZGF0ZS1yZmMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvdmFsaWRhdGUtcmZjL3ZhbGlkYXRlLXJmYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLG1DQUFtQyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUc1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7QUFPbkUsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixZQUFvQixFQUFlLEVBQVUsV0FBdUIsRUFBUyxLQUFxQixFQUFVLFVBQXNCO1FBQTlHLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQU54SCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDNUMs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b0IsQ0FBQyxJQUFJLENBQUMsRUFBRSwwQ0FBMEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pLLENBQUM7YUFDRixDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNqRCxDQUFDOytHQTVFVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwwS0NmakMsaStCQWlCQTs7NEZERmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLG1DQUFtQztpTEFNcEMsYUFBYTtzQkFBckIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElWYWxpZGF0ZVJmY0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBnZXRWYWxpZGF0ZVJGQ0Vycm9yRGVzY3JpcHRpb24sIFNJR05BVFVSRV9GRUFfQ09ORklHVVJBVElPTl9ERUZBVUxULCBWYWxpZGF0ZVJGQ0Vycm9yQ29kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGYWRTZXJ2aWNlLCBSZXNwb25zZURhdGEsIFZhbGlkYXRlUkZDIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgUmVzcG9uc2VFcnJvciB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zaGFyZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy1mYWQtc2lnbmF0dXJlLWZlYS12YWxpZGF0ZS1yZmMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92YWxpZGF0ZS1yZmMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ZhbGlkYXRlLXJmYy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0ZVJmY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiBcclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uITogSVZhbGlkYXRlUmZjQ29uZmlndXJhdGlvbjtcclxuICBAT3V0cHV0KCkgb25lcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VFcnJvcj4oKTtcclxuICBAT3V0cHV0KCkgb25ldmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VEYXRhPFZhbGlkYXRlUkZDPj4oKTtcclxuICB2YWxpZGF0aW9uRm9ybSE6IEZvcm1Hcm91cDtcclxuICBzaG93Q29tcG9uZW50OiBib29sZWFuID0gdHJ1ZTtcclxuICByZXF1aXNpdGlvbklkOiBzdHJpbmcgPSAnJztcclxuICBzaWduZXJJZDogc3RyaW5nID0gJyc7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgaG9zdENvbnRleHQ6IEVsZW1lbnRSZWYscHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgZmFkU2VydmljZTogRmFkU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSh0aGlzLmhvc3RDb250ZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG5cclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMucmVxdWlzaXRpb25JZCA9IHBhcmFtc1sncmVxJ107XHJcbiAgICAgIHRoaXMuc2lnbmVySWQgPSBwYXJhbXNbJ3NpZ24nXTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5yZXF1aXNpdGlvbklkLCB0aGlzLnNpZ25lcklkKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVGb3JtKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWF4Q2hhcmFjdGVycyA9IHRoaXMuY29uZmlndXJhdGlvbj8ubWF4Q2hhcmFjdGVycyB8fCAxMztcclxuICAgIGNvbnN0IHJmY1JlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLmNvbmZpZ3VyYXRpb24/LnJlZ2V4UkZDISk7XHJcblxyXG4gICAgdGhpcy52YWxpZGF0aW9uRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBjb2RlOiBbJycsIFtcclxuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKG1heENoYXJhY3RlcnMpLFxyXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKG1heENoYXJhY3RlcnMpLFxyXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihyZmNSZWdleClcclxuICAgICAgXV1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKTogdm9pZCB7XHJcbiAgIHRoaXMudmFsaWRhdGVSRkMoKTtcclxuICB9XHJcblxyXG4gIHNldEN1c3RvbWl6YXRpb25TdHlsZSh0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBVdGlscy5tZXJnZUNvbmZpZ3VyYXRpb24oXHJcbiAgICAgIG5ldyBDb25maWd1cmF0aW9uKCksXHJcbiAgICAgIFNJR05BVFVSRV9GRUFfQ09ORklHVVJBVElPTl9ERUZBVUxULFxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVJGQygpe1xyXG4gICAgICBpZiggdGhpcy52YWxpZGF0aW9uRm9ybS52YWxpZCApe1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJWYWxpZGFyIHJmYyBcIik7XHJcblxyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlUmVxID0ge1xyXG4gICAgICAgICAgcmVxdWlzaXRpb25JZDogdGhpcy5yZXF1aXNpdGlvbklkLFxyXG4gICAgICAgICAgc2lnbmVySWQ6IHRoaXMuc2lnbmVySWQsXHJcbiAgICAgICAgICByZmM6IHRoaXMuY29kZUNvbnRyb2w/LnZhbHVlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5mYWRTZXJ2aWNlLnZhbGlkYXRlUmZjKHZhbGlkYXRlUmVxKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKCByZXNwb25zZS5zdWNjZXNzICl7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmV2ZW50LmVtaXQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihWYWxpZGF0ZVJGQ0Vycm9yQ29kZS5TRVJWSUNFLCBnZXRWYWxpZGF0ZVJGQ0Vycm9yRGVzY3JpcHRpb24oVmFsaWRhdGVSRkNFcnJvckNvZGUuU0VSVklDRSksICduZy1mYWQtcG9ydGFsLXNpZ25hdHVyZS1mZWEtdmFsaWRhdGUtcmZjJykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihWYWxpZGF0ZVJGQ0Vycm9yQ29kZS5IVFRQLCBnZXRWYWxpZGF0ZVJGQ0Vycm9yRGVzY3JpcHRpb24oVmFsaWRhdGVSRkNFcnJvckNvZGUuSFRUUCksICduZy1mYWQtcG9ydGFsLXNpZ25hdHVyZS1mZWEtdmFsaWRhdGUtcmZjJykpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvZGVDb250cm9sKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvbkZvcm0uZ2V0KCdjb2RlJykgPz8gbnVsbDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInZhbGlkYXRpb24tY29udGFpbmVyIGZhZC1jb250YWluZXJcIiAqbmdJZj1cInNob3dDb21wb25lbnRcIj5cclxuICA8ZGl2IGNsYXNzPVwidGl0bGVcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnRpdGxlIH19PC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtc3VidGl0bGVcIj57eyBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LmRlc2NyaXB0aW9uIH19PC9kaXY+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ2YWxpZGF0aW9uRm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1jb250YWluZXItaW5wdXRcIj5cclxuICAgICAgPGlucHV0IGlkPVwiY29kZVwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiY29kZVwiIG1heGxlbmd0aD1cInt7IGNvbmZpZ3VyYXRpb24ubWF4Q2hhcmFjdGVycyB8fCAxMyB9fVwiIC8+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1mYWQtcG9ydGFsLXNoYXJlZC1mb3JtLWVycm9ycyAgICAgICBcclxuICAgICAgW2Zvcm1EYXRhXT1cImNvZGVDb250cm9sIVwiIFxyXG4gICAgICBbY29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uLmZvcm1FcnJvcnM/LmNvbmZpZ3VyYXRpb24hXCI+XHJcbiAgICA8L25nLWZhZC1wb3J0YWwtc2hhcmVkLWZvcm0tZXJyb3JzPlxyXG5cclxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiZmFkLXBvcnRhbC1wcmltYXJ5XCIgW2Rpc2FibGVkXT1cInZhbGlkYXRpb25Gb3JtLmludmFsaWRcIj5cclxuICAgICAge3sgY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5idXR0b25MZWdlbmQgfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZm9ybT5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Utils } from '@fad-producto-portal/fad-common/utils/utils';
|
|
3
|
+
import { Configuration } from '@fad-producto-portal/fad-common/models/core';
|
|
4
|
+
import { getValidateSignatureErrorDescription, VALIDATE_SIGNATURE_CONFIGURATION_DEFAULT, ValidateSignatureErrorCode } from '../../constants';
|
|
5
|
+
import { finalize } from 'rxjs';
|
|
6
|
+
import { ResponseError } from '@fad-producto-portal/ng-fad-shared';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@fad-producto-portal/ng-fad-services";
|
|
9
|
+
export class ValidateSignatureComponent {
|
|
10
|
+
constructor(fad) {
|
|
11
|
+
this.fad = fad;
|
|
12
|
+
this.onloader = new EventEmitter();
|
|
13
|
+
this.onerror = new EventEmitter();
|
|
14
|
+
this.oncomplete = new EventEmitter();
|
|
15
|
+
this.onsigned = new EventEmitter();
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
this.setCustomizationStyle();
|
|
19
|
+
const canContinue = this.validateData();
|
|
20
|
+
if (canContinue)
|
|
21
|
+
this.getSignerStatusFea();
|
|
22
|
+
}
|
|
23
|
+
validateData() {
|
|
24
|
+
if (!this.requisitionId) {
|
|
25
|
+
this.onerror.emit(new ResponseError(ValidateSignatureErrorCode.NO_REQUISITION_ID, getValidateSignatureErrorDescription(ValidateSignatureErrorCode.NO_REQUISITION_ID), 'ng-fad-signature-fea-validate-signature'));
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
if (!this.signerId) {
|
|
29
|
+
this.onerror.emit(new ResponseError(ValidateSignatureErrorCode.NO_SIGNER_ID, getValidateSignatureErrorDescription(ValidateSignatureErrorCode.NO_SIGNER_ID), 'ng-fad-signature-fea-validate-signature'));
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
getSignerStatusFea() {
|
|
35
|
+
this.onloader.emit(true);
|
|
36
|
+
this.fad.getSignerStatusFea(this.requisitionId, this.signerId, this.configuration.services?.signerStatusFea)
|
|
37
|
+
.pipe(finalize(() => this.onloader.emit(false)))
|
|
38
|
+
.subscribe({
|
|
39
|
+
next: (res) => {
|
|
40
|
+
if (res.success) {
|
|
41
|
+
res.data === 'COMPLETED' ? this.onsigned.emit(res.data) : this.oncomplete.emit(res.data);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.onerror.emit(new ResponseError(ValidateSignatureErrorCode.SERVICE, res.error, 'ng-fad-signature-fea-validate-signature'));
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
error: (error) => {
|
|
48
|
+
this.onerror.emit(new ResponseError(ValidateSignatureErrorCode.HTTP, error.error, 'ng-fad-signature-fea-validate-signature'));
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
setCustomizationStyle(targetElement = document.documentElement) {
|
|
53
|
+
this.configuration = Utils.mergeConfiguration(new Configuration(), VALIDATE_SIGNATURE_CONFIGURATION_DEFAULT, this.configuration);
|
|
54
|
+
}
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidateSignatureComponent, deps: [{ token: i1.FadService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ValidateSignatureComponent, selector: "ng-fad-signature-fea-validate-signature", inputs: { configuration: "configuration", signerId: "signerId", requisitionId: "requisitionId" }, outputs: { onloader: "onloader", onerror: "onerror", oncomplete: "oncomplete", onsigned: "onsigned" }, ngImport: i0, template: "", styles: [""] }); }
|
|
57
|
+
}
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidateSignatureComponent, decorators: [{
|
|
59
|
+
type: Component,
|
|
60
|
+
args: [{ selector: 'ng-fad-signature-fea-validate-signature', template: "" }]
|
|
61
|
+
}], ctorParameters: function () { return [{ type: i1.FadService }]; }, propDecorators: { configuration: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], signerId: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], requisitionId: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], onloader: [{
|
|
68
|
+
type: Output
|
|
69
|
+
}], onerror: [{
|
|
70
|
+
type: Output
|
|
71
|
+
}], oncomplete: [{
|
|
72
|
+
type: Output
|
|
73
|
+
}], onsigned: [{
|
|
74
|
+
type: Output
|
|
75
|
+
}] } });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtc2lnbmF0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNpZ25hdHVyZS1mZWEvc3JjL2xpYi9jb21wb25lbnRzL3ZhbGlkYXRlLXNpZ25hdHVyZS92YWxpZGF0ZS1zaWduYXR1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvdmFsaWRhdGUtc2lnbmF0dXJlL3ZhbGlkYXRlLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLHdDQUF3QyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0ksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQU9uRSxNQUFNLE9BQU8sMEJBQTBCO0lBU3JDLFlBQW9CLEdBQWU7UUFBZixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBTHpCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUM1QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxZ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c0JBQWhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElWYWxpZGF0ZVNpZ25hdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcbmltcG9ydCB7IGdldFZhbGlkYXRlU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbiwgVkFMSURBVEVfU0lHTkFUVVJFX0NPTkZJR1VSQVRJT05fREVGQVVMVCwgVmFsaWRhdGVTaWduYXR1cmVFcnJvckNvZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRmFkU2VydmljZSB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBSZXNwb25zZUVycm9yIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLWZhZC1zaWduYXR1cmUtZmVhLXZhbGlkYXRlLXNpZ25hdHVyZScsXG4gIHRlbXBsYXRlVXJsOiAnLi92YWxpZGF0ZS1zaWduYXR1cmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92YWxpZGF0ZS1zaWduYXR1cmUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBWYWxpZGF0ZVNpZ25hdHVyZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb24hOiBJVmFsaWRhdGVTaWduYXR1cmVDb25maWd1cmF0aW9uO1xuICBASW5wdXQoKSBzaWduZXJJZCE6IHN0cmluZztcbiAgQElucHV0KCkgcmVxdWlzaXRpb25JZCE6IHN0cmluZztcbiAgQE91dHB1dCgpIG9ubG9hZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgb25lcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VFcnJvcj4oKTtcbiAgQE91dHB1dCgpIG9uY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9uc2lnbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYWQ6IEZhZFNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Q3VzdG9taXphdGlvblN0eWxlKCk7XG4gICAgY29uc3QgY2FuQ29udGludWUgPSB0aGlzLnZhbGlkYXRlRGF0YSgpO1xuICAgIGlmIChjYW5Db250aW51ZSkgdGhpcy5nZXRTaWduZXJTdGF0dXNGZWEoKTtcbiAgfVxuXG4gIHZhbGlkYXRlRGF0YSgpIHtcbiAgICBpZiAoIXRoaXMucmVxdWlzaXRpb25JZCkge1xuICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVmFsaWRhdGVTaWduYXR1cmVFcnJvckNvZGUuTk9fUkVRVUlTSVRJT05fSUQsIGdldFZhbGlkYXRlU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihWYWxpZGF0ZVNpZ25hdHVyZUVycm9yQ29kZS5OT19SRVFVSVNJVElPTl9JRCksICduZy1mYWQtc2lnbmF0dXJlLWZlYS12YWxpZGF0ZS1zaWduYXR1cmUnKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNpZ25lcklkKSB7XG4gICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihWYWxpZGF0ZVNpZ25hdHVyZUVycm9yQ29kZS5OT19TSUdORVJfSUQsIGdldFZhbGlkYXRlU2lnbmF0dXJlRXJyb3JEZXNjcmlwdGlvbihWYWxpZGF0ZVNpZ25hdHVyZUVycm9yQ29kZS5OT19TSUdORVJfSUQpLCAnbmctZmFkLXNpZ25hdHVyZS1mZWEtdmFsaWRhdGUtc2lnbmF0dXJlJykpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0U2lnbmVyU3RhdHVzRmVhKCkge1xuICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTtcbiAgICB0aGlzLmZhZC5nZXRTaWduZXJTdGF0dXNGZWEodGhpcy5yZXF1aXNpdGlvbklkLCB0aGlzLnNpZ25lcklkLCB0aGlzLmNvbmZpZ3VyYXRpb24uc2VydmljZXM/LnNpZ25lclN0YXR1c0ZlYSlcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSkpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHJlcy5kYXRhID09PSAnQ09NUExFVEVEJyA/IHRoaXMub25zaWduZWQuZW1pdChyZXMuZGF0YSkgOiB0aGlzLm9uY29tcGxldGUuZW1pdChyZXMuZGF0YSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKFZhbGlkYXRlU2lnbmF0dXJlRXJyb3JDb2RlLlNFUlZJQ0UsIHJlcy5lcnJvciwgJ25nLWZhZC1zaWduYXR1cmUtZmVhLXZhbGlkYXRlLXNpZ25hdHVyZScpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoVmFsaWRhdGVTaWduYXR1cmVFcnJvckNvZGUuSFRUUCwgZXJyb3IuZXJyb3IsICduZy1mYWQtc2lnbmF0dXJlLWZlYS12YWxpZGF0ZS1zaWduYXR1cmUnKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBzZXRDdXN0b21pemF0aW9uU3R5bGUodGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IFV0aWxzLm1lcmdlQ29uZmlndXJhdGlvbihuZXcgQ29uZmlndXJhdGlvbigpLCBWQUxJREFURV9TSUdOQVRVUkVfQ09ORklHVVJBVElPTl9ERUZBVUxULCB0aGlzLmNvbmZpZ3VyYXRpb24pO1xuICB9XG59XG4iLCIiXX0=
|