tuain-ng-forms-lib 0.12.21 → 0.12.22

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.
@@ -17,8 +17,6 @@ const FIELD_ERR_MSG = 'errorMessage';
17
17
  const FIELD_TOOLTIP = 'tooltipText';
18
18
  const FIELD_INFO = 'info';
19
19
  const FIELD_EDITABLE = 'editable';
20
- const EMAIL_FORMAT = '^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$';
21
- // Norbey ".+@([\da-z\.-]+)\.([a-z\.]{2,6})"
22
20
  const FIELD_TYPES = {
23
21
  array: 'ARRAY',
24
22
  check: 'CHECK',
@@ -44,6 +42,9 @@ const FIELD_TYPES = {
44
42
  email: 'EMAIL',
45
43
  phone: 'PHONE',
46
44
  };
45
+ const FIELD_TYPES_FORMATS = {
46
+ EMAIL: '^\\w+([\\.-]?\\w+)@\\w+([\\.-]?\\w+)(\\.\\w{2,3})+$',
47
+ };
47
48
  const STD_MAX_LENGTH = 50;
48
49
  const BIG_MAX_LENGTH = 500;
49
50
  export class FieldDescriptor extends FormElement {
@@ -66,7 +67,7 @@ export class FieldDescriptor extends FormElement {
66
67
  const defaultTypeAlignment = (tableFieldStyles[this.fieldType] != null) ? tableFieldStyles[this.fieldType]['text-align'] : 'left';
67
68
  this.fieldAlignment = (fieldReceived.alignment != null) ? fieldReceived.alignment.toLowerCase() : defaultTypeAlignment;
68
69
  this.fieldInfo = fieldReceived.info || '';
69
- this.fieldFormat = fieldReceived.format || '';
70
+ this.fieldFormat = fieldReceived.format || null;
70
71
  this.validateOnServer = (_c = fieldReceived === null || fieldReceived === void 0 ? void 0 : fieldReceived.serverAction) !== null && _c !== void 0 ? _c : false;
71
72
  this.customAttributes = (_d = fieldReceived === null || fieldReceived === void 0 ? void 0 : fieldReceived.customAttributes) !== null && _d !== void 0 ? _d : null;
72
73
  this.setVisibility(fieldReceived.visible);
@@ -109,17 +110,17 @@ export class FieldDescriptor extends FormElement {
109
110
  this._editionPartial.next({ code: this.fieldCode, intrinsicValidation });
110
111
  }
111
112
  notifyEditionFinish() {
113
+ var _a, _b;
112
114
  let intrinsicValidation = true;
113
- const fieldExpression = (this.fieldType === FIELD_TYPES.email) ? EMAIL_FORMAT : this.fieldFormat;
114
- const fieldFormat = new RegExp(fieldExpression);
115
+ const fieldDefaultFormat = (FIELD_TYPES_FORMATS === null || FIELD_TYPES_FORMATS === void 0 ? void 0 : FIELD_TYPES_FORMATS[this.fieldType])
116
+ ? new RegExp(FIELD_TYPES_FORMATS === null || FIELD_TYPES_FORMATS === void 0 ? void 0 : FIELD_TYPES_FORMATS[this.fieldType]) : null;
117
+ const fieldFormat = (this.fieldFormat) ? new RegExp(this.fieldFormat) : null;
115
118
  const fieldValue = this.getValue();
116
- if (fieldValue && fieldFormat) {
117
- intrinsicValidation = fieldFormat.test(fieldValue);
119
+ if (fieldValue && (fieldDefaultFormat || fieldFormat)) {
120
+ intrinsicValidation = ((_a = fieldDefaultFormat === null || fieldDefaultFormat === void 0 ? void 0 : fieldDefaultFormat.test(fieldValue)) !== null && _a !== void 0 ? _a : true)
121
+ && ((_b = fieldFormat === null || fieldFormat === void 0 ? void 0 : fieldFormat.test(fieldValue)) !== null && _b !== void 0 ? _b : true);
118
122
  if (!intrinsicValidation) {
119
- const message = (this.fieldType === FIELD_TYPES.email)
120
- ? `El valor de ${this.fieldTitle} no corresponde a un correo válido`
121
- : `El valor de ${this.fieldTitle} no se ajusta al formato establecido`;
122
- this.setError('99', message);
123
+ this.setError('99', this._intrinsicErrorMessage);
123
124
  }
124
125
  }
125
126
  this._editionFinish.next({ code: this.fieldCode, intrinsicValidation });
@@ -350,4 +351,4 @@ export class FieldDescriptor extends FormElement {
350
351
  }
351
352
  }
352
353
  }
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUU5QixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFDakMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0FBQ3JDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQztBQUNqQyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztBQUN6QyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUM7QUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7QUFDckMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDO0FBQzNDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUNsQyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDbkMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0FBQ3JDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQztBQUNwQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFDMUIsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDO0FBRWxDLE1BQU0sWUFBWSxHQUFHLCtDQUErQyxDQUFDO0FBQ3JFLDRDQUE0QztBQUU1QyxNQUFNLFdBQVcsR0FBRztJQUNsQixLQUFLLEVBQUUsT0FBTztJ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QUNyQztxQkFBTTtvQkFDTCxhQUFhLEdBQUcsUUFBUSxDQUFDO2lCQUMxQjtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxrQkFBa0IsQ0FBQyxhQUFhO2dCQUNuQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2dCQUN6QixJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFlBQVksRUFBRTtvQkFDaEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssa0JBQWtCLENBQUMsa0JBQWtCO2dCQUN4QyxhQUFhLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDakQsTUFBTTtZQUNSO2dCQUNFLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLE1BQU07U0FDVDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxhQUFhLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUM7U0FDbEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb21wb25lbnRDb25zdGFudHMsIHRhYmxlRmllbGRTdHlsZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSAnLi4vdXRpbGl0aWVzJztcblxuY29uc3QgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IEZJRUxEX1ZBTFVFID0gJ2ZpZWxkVmFsdWUnO1xuY29uc3QgRklFTERfT1BUSU9OUyA9ICdmaWVsZE9wdGlvbnMnO1xuY29uc3QgRklFTERfVElUTEUgPSAnZmllbGRUaXRsZSc7XG5jb25zdCBGSUVMRF9DQVBUVVJFX1RZUEUgPSAnY2FwdHVyZVR5cGUnO1xuY29uc3QgRklFTERfVFlQRSA9ICdmaWVsZFR5cGVDb2RlJztcbmNvbnN0IEZJRUxEX01BWF9MRU5HVEggPSAnbWF4TGVuZ3RoJztcbmNvbnN0IEZJRUxEX1ZJU0lCTEUgPSAndmlzaWJsZSc7XG5jb25zdCBGSUVMRF9MQUJFTF9WSVNJQkxFID0gJ3Zpc2libGVMYWJlbCc7XG5jb25zdCBGSUVMRF9SRVFVSVJFRCA9ICdyZXF1aXJlZCc7XG5jb25zdCBGSUVMRF9FUlJfQ09ERSA9ICdlcnJvckNvZGUnO1xuY29uc3QgRklFTERfRVJSX01TRyA9ICdlcnJvck1lc3NhZ2UnO1xuY29uc3QgRklFTERfVE9PTFRJUCA9ICd0b29sdGlwVGV4dCc7XG5jb25zdCBGSUVMRF9JTkZPID0gJ2luZm8nO1xuY29uc3QgRklFTERfRURJVEFCTEUgPSAnZWRpdGFibGUnO1xuXG5jb25zdCBFTUFJTF9GT1JNQVQgPSAnXlxcdysoW1xcLi1dP1xcdyspKkBcXHcrKFtcXC4tXT9cXHcrKSooXFwuXFx3ezIsM30pKyQnO1xuLy8gTm9yYmV5IFwiLitAKFtcXGRhLXpcXC4tXSspXFwuKFthLXpcXC5dezIsNn0pXCJcblxuY29uc3QgRklFTERfVFlQRVMgPSB7XG4gIGFycmF5OiAnQVJSQVknLFxuICBjaGVjazogJ0NIRUNLJyxcbiAgZGF0ZTogJ0RBVEUnLFxuICBkYXRlcmFuZ2U6ICdEQVRFUkFOR0UnLFxuICB0aW1lOiAnVElNRScsXG4gIHRpbWVyYW5nZTogJ1RJTUVSQU5HRScsXG4gIG1hcDogJ01BUCcsXG4gIG51bWJlcjogJ05VTUJFUicsXG4gIGRlY2ltYWw6ICdERUNJTUFMJyxcbiAgY3VycmVuY3k6ICdDVVJSRU5DWScsXG4gIHNlbGVjdDogJ1NFTEVDVCcsXG4gIHR5cGVhaGVhZDogJ1RZUEVBSEVBRCcsXG4gIHRleHQ6ICdURVhUJyxcbiAgcGFzc3dvcmQ6ICdQQVNTV09SRCcsXG4gIGxhYmVsOiAnTEFCRUwnLFxuICBodG1sOiAnSFRNTCcsXG4gIHRpdGxlOiAnVElUTEUnLFxuICBtZXNzYWdlOiAnTUVTU0FHRScsXG4gIGxpbms6ICdMSU5LJyxcbiAgd2FybmluZzogJ1dBUk5JTkcnLFxuICBhdmF0YXI6ICdBVkFUQVInLFxuICBlbWFpbDogJ0VNQUlMJyxcbiAgcGhvbmU6ICdQSE9ORScsXG59O1xuXG5jb25zdCBTVERfTUFYX0xFTkdUSCA9IDUwO1xuY29uc3QgQklHX01BWF9MRU5HVEggPSA1MDA7XG5cbmV4cG9ydCBjbGFzcyBGaWVsZERlc2NyaXB0b3IgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25QYXJ0aWFsID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXRhaWxSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIF9maWVsZFZhbHVlOiBhbnk7XG4gIGhhc0NoYW5nZWQ6IGJvb2xlYW47XG4gIG91dHB1dE9ubHk6IGJvb2xlYW47XG4gIF9taW5WYWx1ZTogYW55O1xuICBfbWF4VmFsdWU6IGFueTtcbiAgX21heExlbmd0aDogbnVtYmVyO1xuICBfb25WYWxpZGF0aW9uOiBib29sZWFuO1xuICBfaW50cmluc2ljRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgZmllbGRDb2RlOiBzdHJpbmc7XG4gIGNhcHR1cmVUeXBlOiBzdHJpbmc7XG4gIGZpZWxkVGl0bGU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG4gIGZpZWxkQWxpZ25tZW50OiBzdHJpbmc7XG4gIGZpZWxkRm9ybWF0OiBzdHJpbmc7XG4gIGV4dGVybmFsVmFsdWU6IGFueTtcbiAgZmllbGRJbmZvOiBzdHJpbmc7XG4gIHRvb2x0aXBUZXh0OiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgZXJyb3JUeXBlOiBzdHJpbmc7XG4gIGVycm9yQ29kZTogc3RyaW5nO1xuICBjdXN0b21BdHRyaWJ1dGVzOiBhbnk7XG5cbiAgdmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbjtcbiAgdmlzaWJsZUxhYmVsOiBib29sZWFuO1xuICBkZWZhdWx0RWRpdGFibGU6IGJvb2xlYW47XG4gIGZpZWxkUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgZmllbGRPcHRpb25zOiB7XG4gICAgZmllbGRPcHRpb25WYWx1ZTogc3RyaW5nO1xuICAgIGZpZWxkT3B0aW9uSWQ6IHN0cmluZztcbiAgfVtdO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0RmllbGRSZWNlaXZlZCkge1xuICAgIHN1cGVyKGlucHV0RmllbGRSZWNlaXZlZCk7XG4gICAgdGhpcy50eXBlID0gY29tcG9uZW50Q29uc3RhbnRzLkVMRU1FTlRUWVBFX0ZJRUxEO1xuXG4gICAgY29uc3QgZmllbGRSZWNlaXZlZCA9IChpbnB1dEZpZWxkUmVjZWl2ZWQpID8gaW5wdXRGaWVsZFJlY2VpdmVkIDoge307XG4gICAgdGhpcy5zZXRFZGl0YWJsZShmaWVsZFJlY2VpdmVkPy5lZGl0YWJsZSA/PyB0cnVlKTtcbiAgICB0aGlzLmZpZWxkQ29kZSA9IGZpZWxkUmVjZWl2ZWQuZmllbGRDb2RlO1xuICAgIHRoaXMuZmllbGRUaXRsZSA9IGZpZWxkUmVjZWl2ZWQuZmllbGRUaXRsZSB8fCB0aGlzLmZpZWxkQ29kZTtcbiAgICB0aGlzLmNhcHR1cmVUeXBlID0gZmllbGRSZWNlaXZlZC5jYXB0dXJlVHlwZSB8fCAnSU5QVVQnO1xuICAgIHRoaXMuc2V0RmllbGRUeXBlKGZpZWxkUmVjZWl2ZWQuZmllbGRUeXBlQ29kZSk7XG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBmaWVsZFJlY2VpdmVkLmRlZmF1bHRWYWx1ZSB8fCBudWxsO1xuICAgIHRoaXMuX21heExlbmd0aCA9IGZpZWxkUmVjZWl2ZWQubWF4TGVuZ3RoID8/ICggdGhpcy5jYXB0dXJlVHlwZSA9PT0gJ1RFWFRBUkVBJyA/IEJJR19NQVhfTEVOR1RIIDogU1REX01BWF9MRU5HVEgpO1xuXG4gICAgdGhpcy5zZXRWYWx1ZShmaWVsZFJlY2VpdmVkLmZpZWxkVmFsdWUgfHwgdGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdICE9IG51bGwpID8gdGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV1bJ3RleHQtYWxpZ24nXSA6ICdsZWZ0JztcbiAgICB0aGlzLmZpZWxkQWxpZ25tZW50ID0gKGZpZWxkUmVjZWl2ZWQuYWxpZ25tZW50ICE9IG51bGwpID8gZmllbGRSZWNlaXZlZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgIHRoaXMuZmllbGRJbmZvID0gZmllbGRSZWNlaXZlZC5pbmZvIHx8ICcnO1xuICAgIHRoaXMuZmllbGRGb3JtYXQgPSBmaWVsZFJlY2VpdmVkLmZvcm1hdCB8fCAnJztcbiAgICB0aGlzLnZhbGlkYXRlT25TZXJ2ZXIgPSBmaWVsZFJlY2VpdmVkPy5zZXJ2ZXJBY3Rpb24gPz8gZmFsc2U7XG4gICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0gZmllbGRSZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcyA/PyBudWxsO1xuXG4gICAgdGhpcy5zZXRWaXNpYmlsaXR5KGZpZWxkUmVjZWl2ZWQudmlzaWJsZSk7XG4gICAgdGhpcy52aXNpYmxlTGFiZWwgPSBmaWVsZFJlY2VpdmVkPy52aXNpYmxlTGFiZWwgPz8gdHJ1ZTtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gZmllbGRSZWNlaXZlZC50b29sdGlwIHx8ICcnO1xuICAgIHRoaXMuZGVmYXVsdEVkaXRhYmxlID0gdGhpcy5lbmFibGVkO1xuICAgIHRoaXMuZmllbGRSZXF1aXJlZCA9IGZpZWxkUmVjZWl2ZWQ/LnJlcXVpcmVkID8/IGZhbHNlO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZmllbGRSZWNlaXZlZC5lcnJvck1lc3NhZ2UgfHwgJyc7XG4gICAgdGhpcy5lcnJvckNvZGUgPSBmaWVsZFJlY2VpdmVkLmVycm9yQ29kZSA/PyAnMDAnO1xuICAgIHRoaXMub3V0cHV0T25seSA9IGZpZWxkUmVjZWl2ZWQ/Lm91dHB1dE9ubHkgPz8gZmFsc2U7XG4gICAgdGhpcy5zZXRGaWVsZE9wdGlvbnMoZmllbGRSZWNlaXZlZC5maWVsZE9wdGlvbnMpO1xuXG4gICAgdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlID0gKHRoaXMuZmllbGRUeXBlID09PSBGSUVMRF9UWVBFUy5lbWFpbClcbiAgICAgID8gYEVsIHZhbG9yIGRlICR7dGhpcy5maWVsZFRpdGxlfSBubyBjb3JyZXNwb25kZSBhIHVuIGNvcnJlbyB2w6FsaWRvYFxuICAgICAgOiBgRWwgdmFsb3IgZGUgJHt0aGlzLmZpZWxkVGl0bGV9IG5vIHNlIGFqdXN0YSBhbCBmb3JtYXRvIGVzdGFibGVjaWRvYDtcbiAgfVxuXG4gIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5maWVsZENvZGU7IH1cbiAgZ2V0IGVkaXRpb25GaW5pc2goKSB7IHJldHVybiB0aGlzLl9lZGl0aW9uRmluaXNoOyB9XG4gIGdldCBlZGl0aW9uUGFydGlhbCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25QYXJ0aWFsOyB9XG4gIGdldCBkZXRhaWxSZXF1ZXN0KCkgeyByZXR1cm4gdGhpcy5fZGV0YWlsUmVxdWVzdDsgfVxuXG4gIGdldCB2YWxpZGF0aW5nKCkgeyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIHNldCB2YWxpZGF0aW5nKGlzVmFsaWRhdGluZzogYm9vbGVhbikgeyB0aGlzLl9vblZhbGlkYXRpb24gPSBpc1ZhbGlkYXRpbmc7IH1cblxuICBzZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuX2ludHJpbnNpY0Vycm9yTWVzc2FnZSA9IG1lc3NhZ2U7IH1cbiAgc2V0IGludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5zZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZSk7IH1cblxuICBnZXQgZmllbGRWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTsgfVxuICBnZXQgcmVxdWlyZWQoKSB7IHJldHVybiB0aGlzLmZpZWxkUmVxdWlyZWQ7IH1cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMuZmllbGRSZXF1aXJlZCA9IHJlcXVpcmVkID8/IGZhbHNlOyB9XG4gIGdldCBtYXhMZW5ndGgoKSB7IHJldHVybiAodGhpcy5fbWF4TGVuZ3RoID4gMCkgPyB0aGlzLl9tYXhMZW5ndGgudG9TdHJpbmcoKSA6ICcnOyB9XG4gIHNldCBtYXhMZW5ndGgocmVxdWlyZWRNYXhMZW5ndGg6IGFueSkge1xuICAgIGlmICh0eXBlb2YgcmVxdWlyZWRNYXhMZW5ndGggPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9tYXhMZW5ndGggPSBwYXJzZUludChyZXF1aXJlZE1heExlbmd0aCwgMTApO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlcXVpcmVkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5fbWF4TGVuZ3RoID0gcmVxdWlyZWRNYXhMZW5ndGg7XG4gICAgfVxuICB9XG4gIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTsgfVxuICBzZXQgdmFsdWUobmV3VmFsdWUpIHsgdGhpcy5zZXRWYWx1ZShuZXdWYWx1ZSk7IH1cblxuICBub3RpZnlFZGl0aW9uUGFydGlhbCgpIHtcbiAgICBjb25zdCBpbnRyaW5zaWNWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLl9lZGl0aW9uUGFydGlhbC5uZXh0KHsgY29kZTogdGhpcy5maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBub3RpZnlFZGl0aW9uRmluaXNoKCkge1xuICAgIGxldCBpbnRyaW5zaWNWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICBjb25zdCBmaWVsZEV4cHJlc3Npb24gPSAodGhpcy5maWVsZFR5cGUgPT09IEZJRUxEX1RZUEVTLmVtYWlsKSA/IEVNQUlMX0ZPUk1BVCA6IHRoaXMuZmllbGRGb3JtYXQ7XG4gICAgY29uc3QgZmllbGRGb3JtYXQgPSBuZXcgUmVnRXhwKGZpZWxkRXhwcmVzc2lvbik7XG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBpZiAoZmllbGRWYWx1ZSAmJiBmaWVsZEZvcm1hdCkge1xuICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9IGZpZWxkRm9ybWF0LnRlc3QoZmllbGRWYWx1ZSk7XG4gICAgICBpZiAoIWludHJpbnNpY1ZhbGlkYXRpb24pIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9ICh0aGlzLmZpZWxkVHlwZSA9PT0gRklFTERfVFlQRVMuZW1haWwpXG4gICAgICAgICAgPyBgRWwgdmFsb3IgZGUgJHt0aGlzLmZpZWxkVGl0bGV9IG5vIGNvcnJlc3BvbmRlIGEgdW4gY29ycmVvIHbDoWxpZG9gXG4gICAgICAgICAgOiBgRWwgdmFsb3IgZGUgJHt0aGlzLmZpZWxkVGl0bGV9IG5vIHNlIGFqdXN0YSBhbCBmb3JtYXRvIGVzdGFibGVjaWRvYFxuICAgICAgICB0aGlzLnNldEVycm9yKCc5OScsIG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9lZGl0aW9uRmluaXNoLm5leHQoeyBjb2RlOiB0aGlzLmZpZWxkQ29kZSwgaW50cmluc2ljVmFsaWRhdGlvbiB9KTtcbiAgfVxuXG4gIG5vdGlmeUVkaXRpb25EZXRhaWxSZXF1ZXN0KCkge1xuICAgIHRoaXMuX2RldGFpbFJlcXVlc3QubmV4dCh0aGlzLmZpZWxkQ29kZSk7XG4gIH1cblxuICBzaG93TGFiZWwoKSB7IHRoaXMudmlzaWJsZUxhYmVsID0gdHJ1ZTsgfVxuICBoaWRlTGFiZWwoKSB7IHRoaXMudmlzaWJsZUxhYmVsID0gZmFsc2U7IH1cbiAgY2hhbmdlZCgpIHsgdGhpcy5oYXNDaGFuZ2VkID0gdHJ1ZTsgfVxuICBnZXRSYXdWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7IH1cbiAgc2V0TGFiZWwobGFiZWwpIHsgdGhpcy5maWVsZFRpdGxlID0gbGFiZWw7IH1cbiAgY2xlYW4oKSB7IHRoaXMuc2V0VmFsdWUodGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpOyB9XG4gIGdldCBiYWNrZW5kKCkgeyByZXR1cm4gdGhpcy52YWxpZGF0ZU9uU2VydmVyOyB9XG5cbiAgc2V0VmlzaWJsZUxhYmVsKHZpc2libGVMYWJlbDogYm9vbGVhbikgeyB0aGlzLnZpc2libGVMYWJlbCA9IHZpc2libGVMYWJlbDsgfVxuICBzZXRFZGl0YWJsZShlZGl0YWJsZTogYm9vbGVhbiA9IHRydWUpIHsgKGVkaXRhYmxlKSA/IHRoaXMuZW5hYmxlKCkgOiB0aGlzLmRpc2FibGUoKTsgfVxuXG4gIHNldEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSAnZXJyb3InKSB7XG4gICAgdGhpcy5lcnJvclR5cGUgPSAoY29kZSA9PT0gJzAwJykgPyAnJyA6IHR5cGU7XG4gICAgdGhpcy5lcnJvckNvZGUgPSBjb2RlO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbWVzc2FnZTtcbiAgfVxuXG4gIGdldEVycm9yKCkgeyByZXR1cm4geyB0eXBlOiB0aGlzLmVycm9yVHlwZSwgY29kZTogdGhpcy5lcnJvckNvZGUsIG1lc3NhZ2U6IHRoaXMuZXJyb3JNZXNzYWdlIH07IH1cbiAgZ2V0IGVycm9yKCkgeyByZXR1cm4gdGhpcy5nZXRFcnJvcigpOyB9XG4gIHNldCBlcnJvcihlcnJvck9iaikgeyB0aGlzLnNldEVycm9yKGVycm9yT2JqLmNvZGUsIGVycm9yT2JqLm1lc3NhZ2UsIGVycm9yT2JqLnR5cGUpIH1cblxuICBnZXRFcnJvckNvZGUoKSB7IHJldHVybiB0aGlzLmdldEVycm9yKCkuY29kZTsgfVxuICBzZXRFcnJvckNvZGUoY29kZSkgeyB0aGlzLnNldEVycm9yKGNvZGUsIHRoaXMuZXJyb3JNZXNzYWdlKTsgfVxuICBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiB0aGlzLmdldEVycm9yKCkubWVzc2FnZTsgfVxuICBzZXRFcnJvck1lc3NhZ2UobXNnKSB7IHRoaXMuc2V0RXJyb3IodGhpcy5lcnJvckNvZGUsIG1zZyk7IH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGZpZWxkQ3VycmVudFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkQ3VycmVudFZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCh0aGlzLmZpZWxkVHlwZSA9PT0gRklFTERfVFlQRVMuYXJyYXkgfHwgdGhpcy5maWVsZFR5cGUgPT09IEZJRUxEX1RZUEVTLnBob25lKVxuICAgICAgJiYgQXJyYXkuaXNBcnJheShmaWVsZEN1cnJlbnRWYWx1ZSkgJiYgZmllbGRDdXJyZW50VmFsdWUubGVuZ3RoID09PSAwICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICByZXR1cm4gZmllbGRDdXJyZW50VmFsdWUgPT09ICcnOyBcbiAgfVxuXG4gIGdldFZhbHVlKCkge1xuICAgIHN3aXRjaCAodGhpcy5maWVsZFR5cGUpIHtcbiAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9DSEVDSzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWUgPz8gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0NVUlJFTkNZOlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZS5yZXBsYWNlKCcsJywgJycpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB1cGRhdGVGcm9tU2VydmVyKGZsZCkge1xuICAgIGlmIChGSUVMRF9WSVNJQkxFIGluIGZsZCkge1xuICAgICAgdGhpcy5zZXRWaXNpYmlsaXR5KGZsZC52aXNpYmxlKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX0xBQkVMX1ZJU0lCTEUgaW4gZmxkKSB7XG4gICAgICB0aGlzLnNldFZpc2libGVMYWJlbChmbGQudmlzaWJsZUxhYmVsKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX1JFUVVJUkVEIGluIGZsZCkge1xuICAgICAgdGhpcy5maWVsZFJlcXVpcmVkID0gZmxkLnJlcXVpcmVkID8/IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoRklFTERfRVJSX0NPREUgaW4gZmxkKSB7XG4gICAgICAodGhpcy5lcnJvckNvZGUgPSBmbGQuZXJyb3JDb2RlKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX0VSUl9NU0cgaW4gZmxkKSB7XG4gICAgICAodGhpcy5lcnJvck1lc3NhZ2UgPSBmbGQuZXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX1RPT0xUSVAgaW4gZmxkKSB7XG4gICAgICAodGhpcy50b29sdGlwVGV4dCA9IGZsZC50b29sdGlwKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX0lORk8gaW4gZmxkKSB7XG4gICAgICAodGhpcy5maWVsZEluZm8gPSBmbGQuaW5mbyk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9FRElUQUJMRSBpbiBmbGQpIHtcbiAgICAgIHRoaXMuc2V0RWRpdGFibGUoZmxkLmVkaXRhYmxlKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX1RJVExFIGluIGZsZCkge1xuICAgICAgdGhpcy5zZXRMYWJlbChmbGQuZmllbGRUaXRsZS50b1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX1ZBTFVFIGluIGZsZCkge1xuICAgICAgdGhpcy5oYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICB0aGlzLnNldFZhbHVlKGZsZC5maWVsZFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX09QVElPTlMgaW4gZmxkKSB7XG4gICAgICB0aGlzLnNldEZpZWxkT3B0aW9ucyhmbGQuZmllbGRPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX0NBUFRVUkVfVFlQRSBpbiBmbGQpIHtcbiAgICAgIHRoaXMuY2FwdHVyZVR5cGUgPSBmbGQuY2FwdHVyZVR5cGUgfHwgJ0lOUFVUJztcbiAgICB9XG4gICAgaWYgKEZJRUxEX1RZUEUgaW4gZmxkKSB7XG4gICAgICB0aGlzLnNldEZpZWxkVHlwZShmbGQuZmllbGRUeXBlQ29kZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9NQVhfTEVOR1RIIGluIGZsZCkge1xuICAgICAgdGhpcy5tYXhMZW5ndGggPSBmbGQubWF4TGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpZWxkVHlwZShpbnB1dEZpZWxkVHlwZSkge1xuICAgIHRoaXMuZmllbGRUeXBlID0gaW5wdXRGaWVsZFR5cGU7XG4gICAgLyoqXG4gICAgICogIFNlIGVsaW1pbmEgbGEgdmFsaWRhY2nDs24gZGUgcXVlIHNlYSB1biB0aXBvIGNvbm9jaWRvXG4gICAgICogIHRoaXMuZmllbGRUeXBlID0gKGlucHV0RmllbGRUeXBlICYmIEZJRUxEVFlQRVMuaW5jbHVkZXMoaW5wdXRGaWVsZFR5cGUpKVxuICAgICAqICAgPyBpbnB1dEZpZWxkVHlwZSA6IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfVEVYVDtcbiAgICAgKi9cbiAgfVxuXG4gIGZvcm1hdCgpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQ1VSUkVOQ1kpIHtcbiAgICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSBmb3JtYXRDdXJyZW5jeSh0aGlzLl9maWVsZFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBzZXRNaW5WYWx1ZShtaW5WYWx1ZSkge1xuICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9EQVRFXG4gICAgICAmJiB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUpIHtcbiAgICAgIHRoaXMuX21pblZhbHVlID0gbWluVmFsdWU7XG4gICAgICBpZiAoIW1pblZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNaW5WYWx1ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtaW5EYXRlID0gbmV3IERhdGUobWluVmFsdWUpO1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUobWluRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0TWF4VmFsdWUobWF4VmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfREFURVxuICAgICAgJiYgdGhpcy53aWRnZXQ/LnNldE1heFZhbHVlKSB7XG4gICAgICB0aGlzLl9tYXhWYWx1ZSA9IG1heFZhbHVlO1xuICAgICAgaWYgKCFtYXhWYWx1ZSkge1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IG5ldyBEYXRlKG1heFZhbHVlKTtcbiAgICAgICAgdGhpcy53aWRnZXQ/LnNldE1heFZhbHVlKG1heERhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEZpZWxkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpZWxkT3B0aW9ucykpO1xuICB9XG5cbiAgc2V0RmllbGRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgICBpZiAoKHRoaXMuY2FwdHVyZVR5cGUgIT09ICdMSVNUJyAmJiB0aGlzLmNhcHR1cmVUeXBlICE9PSAnUkFESU8nKVxuICAgICAgfHwgdHlwZW9mIG5ld09wdGlvbnMgPT09IFVOREVGSU5FRCB8fCAhbmV3T3B0aW9uc1xuICAgICAgfHwgIUFycmF5LmlzQXJyYXkobmV3T3B0aW9ucykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAob3B0aW9uID0+IHtcbiAgICAgIGlmIChvcHRpb24udGV4dCAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi50ZXh0ICE9PSBudWxsXG4gICAgICAgICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyBmaWVsZE9wdGlvblZhbHVlOiBvcHRpb24udGV4dCwgZmllbGRPcHRpb25JZDogb3B0aW9uLnZhbHVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyAuLi5vcHRpb24gfTtcbiAgICB9KTtcbiAgICB0aGlzLmZpZWxkT3B0aW9ucyA9IChmaWVsZE9wdGlvbnMgJiYgQXJyYXkuaXNBcnJheShmaWVsZE9wdGlvbnMpXG4gICAgICAmJiBmaWVsZE9wdGlvbnMubGVuZ3RoID4gMCkgPyBmaWVsZE9wdGlvbnMgOiBbXTtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQVJSQVkgJiYgdGhpcy53aWRnZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLndpZGdldD8ucmVmZXJlc2hDb250ZW50KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWVsZFZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQVJSQVkgJiYgQXJyYXkuaXNBcnJheSh0aGlzLl9maWVsZFZhbHVlKSkge1xuICAgICAgICB0aGlzLl9maWVsZFZhbHVlID0gdGhpcy5fZmllbGRWYWx1ZT8uZmlsdGVyKGl0ZW0gPT5cbiAgICAgICAgICB0aGlzLmZpZWxkT3B0aW9ucy5maW5kKG9wdCA9PiBvcHQuZmllbGRPcHRpb25JZCA9PT0gaXRlbSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuZmllbGRPcHRpb25zXG4gICAgICAgICAgLmZpbmQoaXRlbSA9PiBpdGVtLmZpZWxkT3B0aW9uSWQgPT09IHRoaXMuX2ZpZWxkVmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkUmVxdWlyZWQgJiYgdGhpcy5maWVsZE9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZmllbGRPcHRpb25zWzBdLmZpZWxkT3B0aW9uSWQpO1xuICAgICAgaWYgKHRoaXMud2lkZ2V0Py5vbkNoYW5nZUNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy53aWRnZXQ/Lm9uQ2hhbmdlQ29udGVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFZhbHVlKG5ld1ZhbHVlLCB3aWRnZXRVcGRhdGUgPSB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gVU5ERUZJTkVEIHx8IG5ld1ZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBuZXdGaW5hbFZhbHVlO1xuICAgIHN3aXRjaCAodGhpcy5maWVsZFR5cGUpIHtcbiAgICAgIGNhc2UgJ0JPT0xFQU4nOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gISFuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQ0hFQ0s6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9BUlJBWTpcbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBudWxsIHx8IG5ld1ZhbHVlID09PSAnJykge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBbXTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIChuZXdWYWx1ZSkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9NQVA6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgaWYgKG5ld0ZpbmFsVmFsdWUgJiYgdGhpcy53aWRnZXQgJiYgd2lkZ2V0VXBkYXRlKSB7XG4gICAgICAgICAgY29uc3QgbGF0aXR1ZGUgPSBwYXJzZUZsb2F0KG5ld0ZpbmFsVmFsdWVbMF0pO1xuICAgICAgICAgIGNvbnN0IGxvbmdpdHVkZSA9IHBhcnNlRmxvYXQobmV3RmluYWxWYWx1ZVsxXSk7XG4gICAgICAgICAgdGhpcy53aWRnZXQ/LnNldExvY2F0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0NVUlJFTkNZOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gZm9ybWF0Q3VycmVuY3kodGhpcy5fZmllbGRWYWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZpZWxkVmFsdWUgIT09IG5ld0ZpbmFsVmFsdWUpIHtcbiAgICAgIHRoaXMuaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICB0aGlzLl9maWVsZFZhbHVlID0gbmV3RmluYWxWYWx1ZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUU5QixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFDakMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0FBQ3JDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQztBQUNqQyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztBQUN6QyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUM7QUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7QUFDckMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDO0FBQzNDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUNsQyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDbkMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0FBQ3JDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQztBQUNwQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFDMUIsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDO0FBRWxDLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLEtBQUssRUFBRSxPQUFPO0lBQ2QsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLFNB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LENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLEVBQUU7d0JBQ2xDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ2hDO29CQUNELGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNyQztxQkFBTTtvQkFDTCxhQUFhLEdBQUcsUUFBUSxDQUFDO2lCQUMxQjtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxrQkFBa0IsQ0FBQyxhQUFhO2dCQUNuQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2dCQUN6QixJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFlBQVksRUFBRTtvQkFDaEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssa0JBQWtCLENBQUMsa0JBQWtCO2dCQUN4QyxhQUFhLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDakQsTUFBTTtZQUNSO2dCQUNFLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLE1BQU07U0FDVDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxhQUFhLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUM7U0FDbEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb21wb25lbnRDb25zdGFudHMsIHRhYmxlRmllbGRTdHlsZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSAnLi4vdXRpbGl0aWVzJztcblxuY29uc3QgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IEZJRUxEX1ZBTFVFID0gJ2ZpZWxkVmFsdWUnO1xuY29uc3QgRklFTERfT1BUSU9OUyA9ICdmaWVsZE9wdGlvbnMnO1xuY29uc3QgRklFTERfVElUTEUgPSAnZmllbGRUaXRsZSc7XG5jb25zdCBGSUVMRF9DQVBUVVJFX1RZUEUgPSAnY2FwdHVyZVR5cGUnO1xuY29uc3QgRklFTERfVFlQRSA9ICdmaWVsZFR5cGVDb2RlJztcbmNvbnN0IEZJRUxEX01BWF9MRU5HVEggPSAnbWF4TGVuZ3RoJztcbmNvbnN0IEZJRUxEX1ZJU0lCTEUgPSAndmlzaWJsZSc7XG5jb25zdCBGSUVMRF9MQUJFTF9WSVNJQkxFID0gJ3Zpc2libGVMYWJlbCc7XG5jb25zdCBGSUVMRF9SRVFVSVJFRCA9ICdyZXF1aXJlZCc7XG5jb25zdCBGSUVMRF9FUlJfQ09ERSA9ICdlcnJvckNvZGUnO1xuY29uc3QgRklFTERfRVJSX01TRyA9ICdlcnJvck1lc3NhZ2UnO1xuY29uc3QgRklFTERfVE9PTFRJUCA9ICd0b29sdGlwVGV4dCc7XG5jb25zdCBGSUVMRF9JTkZPID0gJ2luZm8nO1xuY29uc3QgRklFTERfRURJVEFCTEUgPSAnZWRpdGFibGUnO1xuXG5jb25zdCBGSUVMRF9UWVBFUyA9IHtcbiAgYXJyYXk6ICdBUlJBWScsXG4gIGNoZWNrOiAnQ0hFQ0snLFxuICBkYXRlOiAnREFURScsXG4gIGRhdGVyYW5nZTogJ0RBVEVSQU5HRScsXG4gIHRpbWU6ICdUSU1FJyxcbiAgdGltZXJhbmdlOiAnVElNRVJBTkdFJyxcbiAgbWFwOiAnTUFQJyxcbiAgbnVtYmVyOiAnTlVNQkVSJyxcbiAgZGVjaW1hbDogJ0RFQ0lNQUwnLFxuICBjdXJyZW5jeTogJ0NVUlJFTkNZJyxcbiAgc2VsZWN0OiAnU0VMRUNUJyxcbiAgdHlwZWFoZWFkOiAnVFlQRUFIRUFEJyxcbiAgdGV4dDogJ1RFWFQnLFxuICBwYXNzd29yZDogJ1BBU1NXT1JEJyxcbiAgbGFiZWw6ICdMQUJFTCcsXG4gIGh0bWw6ICdIVE1MJyxcbiAgdGl0bGU6ICdUSVRMRScsXG4gIG1lc3NhZ2U6ICdNRVNTQUdFJyxcbiAgbGluazogJ0xJTksnLFxuICB3YXJuaW5nOiAnV0FSTklORycsXG4gIGF2YXRhcjogJ0FWQVRBUicsXG4gIGVtYWlsOiAnRU1BSUwnLFxuICBwaG9uZTogJ1BIT05FJyxcbn07XG5cbmNvbnN0IEZJRUxEX1RZUEVTX0ZPUk1BVFMgPSB7XG4gIEVNQUlMOiAnXlxcXFx3KyhbXFxcXC4tXT9cXFxcdyspQFxcXFx3KyhbXFxcXC4tXT9cXFxcdyspKFxcXFwuXFxcXHd7MiwzfSkrJCcsXG59O1xuXG5jb25zdCBTVERfTUFYX0xFTkdUSCA9IDUwO1xuY29uc3QgQklHX01BWF9MRU5HVEggPSA1MDA7XG5cbmV4cG9ydCBjbGFzcyBGaWVsZERlc2NyaXB0b3IgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25QYXJ0aWFsID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXRhaWxSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIF9maWVsZFZhbHVlOiBhbnk7XG4gIGhhc0NoYW5nZWQ6IGJvb2xlYW47XG4gIG91dHB1dE9ubHk6IGJvb2xlYW47XG4gIF9taW5WYWx1ZTogYW55O1xuICBfbWF4VmFsdWU6IGFueTtcbiAgX21heExlbmd0aDogbnVtYmVyO1xuICBfb25WYWxpZGF0aW9uOiBib29sZWFuO1xuICBfaW50cmluc2ljRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgZmllbGRDb2RlOiBzdHJpbmc7XG4gIGNhcHR1cmVUeXBlOiBzdHJpbmc7XG4gIGZpZWxkVGl0bGU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG4gIGZpZWxkQWxpZ25tZW50OiBzdHJpbmc7XG4gIGZpZWxkRm9ybWF0OiBzdHJpbmc7XG4gIGV4dGVybmFsVmFsdWU6IGFueTtcbiAgZmllbGRJbmZvOiBzdHJpbmc7XG4gIHRvb2x0aXBUZXh0OiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgZXJyb3JUeXBlOiBzdHJpbmc7XG4gIGVycm9yQ29kZTogc3RyaW5nO1xuICBjdXN0b21BdHRyaWJ1dGVzOiBhbnk7XG5cbiAgdmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbjtcbiAgdmlzaWJsZUxhYmVsOiBib29sZWFuO1xuICBkZWZhdWx0RWRpdGFibGU6IGJvb2xlYW47XG4gIGZpZWxkUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgZmllbGRPcHRpb25zOiB7XG4gICAgZmllbGRPcHRpb25WYWx1ZTogc3RyaW5nO1xuICAgIGZpZWxkT3B0aW9uSWQ6IHN0cmluZztcbiAgfVtdO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0RmllbGRSZWNlaXZlZCkge1xuICAgIHN1cGVyKGlucHV0RmllbGRSZWNlaXZlZCk7XG4gICAgdGhpcy50eXBlID0gY29tcG9uZW50Q29uc3RhbnRzLkVMRU1FTlRUWVBFX0ZJRUxEO1xuXG4gICAgY29uc3QgZmllbGRSZWNlaXZlZCA9IChpbnB1dEZpZWxkUmVjZWl2ZWQpID8gaW5wdXRGaWVsZFJlY2VpdmVkIDoge307XG4gICAgdGhpcy5zZXRFZGl0YWJsZShmaWVsZFJlY2VpdmVkPy5lZGl0YWJsZSA/PyB0cnVlKTtcbiAgICB0aGlzLmZpZWxkQ29kZSA9IGZpZWxkUmVjZWl2ZWQuZmllbGRDb2RlO1xuICAgIHRoaXMuZmllbGRUaXRsZSA9IGZpZWxkUmVjZWl2ZWQuZmllbGRUaXRsZSB8fCB0aGlzLmZpZWxkQ29kZTtcbiAgICB0aGlzLmNhcHR1cmVUeXBlID0gZmllbGRSZWNlaXZlZC5jYXB0dXJlVHlwZSB8fCAnSU5QVVQnO1xuICAgIHRoaXMuc2V0RmllbGRUeXBlKGZpZWxkUmVjZWl2ZWQuZmllbGRUeXBlQ29kZSk7XG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBmaWVsZFJlY2VpdmVkLmRlZmF1bHRWYWx1ZSB8fCBudWxsO1xuICAgIHRoaXMuX21heExlbmd0aCA9IGZpZWxkUmVjZWl2ZWQubWF4TGVuZ3RoID8/ICggdGhpcy5jYXB0dXJlVHlwZSA9PT0gJ1RFWFRBUkVBJyA/IEJJR19NQVhfTEVOR1RIIDogU1REX01BWF9MRU5HVEgpO1xuXG4gICAgdGhpcy5zZXRWYWx1ZShmaWVsZFJlY2VpdmVkLmZpZWxkVmFsdWUgfHwgdGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdICE9IG51bGwpID8gdGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV1bJ3RleHQtYWxpZ24nXSA6ICdsZWZ0JztcbiAgICB0aGlzLmZpZWxkQWxpZ25tZW50ID0gKGZpZWxkUmVjZWl2ZWQuYWxpZ25tZW50ICE9IG51bGwpID8gZmllbGRSZWNlaXZlZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgIHRoaXMuZmllbGRJbmZvID0gZmllbGRSZWNlaXZlZC5pbmZvIHx8ICcnO1xuICAgIHRoaXMuZmllbGRGb3JtYXQgPSBmaWVsZFJlY2VpdmVkLmZvcm1hdCB8fCBudWxsO1xuICAgIHRoaXMudmFsaWRhdGVPblNlcnZlciA9IGZpZWxkUmVjZWl2ZWQ/LnNlcnZlckFjdGlvbiA/PyBmYWxzZTtcbiAgICB0aGlzLmN1c3RvbUF0dHJpYnV0ZXMgPSBmaWVsZFJlY2VpdmVkPy5jdXN0b21BdHRyaWJ1dGVzID8/IG51bGw7XG5cbiAgICB0aGlzLnNldFZpc2liaWxpdHkoZmllbGRSZWNlaXZlZC52aXNpYmxlKTtcbiAgICB0aGlzLnZpc2libGVMYWJlbCA9IGZpZWxkUmVjZWl2ZWQ/LnZpc2libGVMYWJlbCA/PyB0cnVlO1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSBmaWVsZFJlY2VpdmVkLnRvb2x0aXAgfHwgJyc7XG4gICAgdGhpcy5kZWZhdWx0RWRpdGFibGUgPSB0aGlzLmVuYWJsZWQ7XG4gICAgdGhpcy5maWVsZFJlcXVpcmVkID0gZmllbGRSZWNlaXZlZD8ucmVxdWlyZWQgPz8gZmFsc2U7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmaWVsZFJlY2VpdmVkLmVycm9yTWVzc2FnZSB8fCAnJztcbiAgICB0aGlzLmVycm9yQ29kZSA9IGZpZWxkUmVjZWl2ZWQuZXJyb3JDb2RlID8/ICcwMCc7XG4gICAgdGhpcy5vdXRwdXRPbmx5ID0gZmllbGRSZWNlaXZlZD8ub3V0cHV0T25seSA/PyBmYWxzZTtcbiAgICB0aGlzLnNldEZpZWxkT3B0aW9ucyhmaWVsZFJlY2VpdmVkLmZpZWxkT3B0aW9ucyk7XG5cbiAgICB0aGlzLl9pbnRyaW5zaWNFcnJvck1lc3NhZ2UgPSAodGhpcy5maWVsZFR5cGUgPT09IEZJRUxEX1RZUEVTLmVtYWlsKVxuICAgICAgPyBgRWwgdmFsb3IgZGUgJHt0aGlzLmZpZWxkVGl0bGV9IG5vIGNvcnJlc3BvbmRlIGEgdW4gY29ycmVvIHbDoWxpZG9gXG4gICAgICA6IGBFbCB2YWxvciBkZSAke3RoaXMuZmllbGRUaXRsZX0gbm8gc2UgYWp1c3RhIGFsIGZvcm1hdG8gZXN0YWJsZWNpZG9gO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLmZpZWxkQ29kZTsgfVxuICBnZXQgZWRpdGlvbkZpbmlzaCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25GaW5pc2g7IH1cbiAgZ2V0IGVkaXRpb25QYXJ0aWFsKCkgeyByZXR1cm4gdGhpcy5fZWRpdGlvblBhcnRpYWw7IH1cbiAgZ2V0IGRldGFpbFJlcXVlc3QoKSB7IHJldHVybiB0aGlzLl9kZXRhaWxSZXF1ZXN0OyB9XG5cbiAgZ2V0IHZhbGlkYXRpbmcoKSB7IHJldHVybiB0aGlzLl9vblZhbGlkYXRpb247IH1cbiAgc2V0IHZhbGlkYXRpbmcoaXNWYWxpZGF0aW5nOiBib29sZWFuKSB7IHRoaXMuX29uVmFsaWRhdGlvbiA9IGlzVmFsaWRhdGluZzsgfVxuXG4gIHNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlID0gbWVzc2FnZTsgfVxuICBzZXQgaW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykgeyB0aGlzLnNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlKTsgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkgeyByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOyB9XG4gIGdldCByZXF1aXJlZCgpIHsgcmV0dXJuIHRoaXMuZmllbGRSZXF1aXJlZDsgfVxuICBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHsgdGhpcy5maWVsZFJlcXVpcmVkID0gcmVxdWlyZWQgPz8gZmFsc2U7IH1cbiAgZ2V0IG1heExlbmd0aCgpIHsgcmV0dXJuICh0aGlzLl9tYXhMZW5ndGggPiAwKSA/IHRoaXMuX21heExlbmd0aC50b1N0cmluZygpIDogJyc7IH1cbiAgc2V0IG1heExlbmd0aChyZXF1aXJlZE1heExlbmd0aDogYW55KSB7XG4gICAgaWYgKHR5cGVvZiByZXF1aXJlZE1heExlbmd0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX21heExlbmd0aCA9IHBhcnNlSW50KHJlcXVpcmVkTWF4TGVuZ3RoLCAxMCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVxdWlyZWRNYXhMZW5ndGggPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl9tYXhMZW5ndGggPSByZXF1aXJlZE1heExlbmd0aDtcbiAgICB9XG4gIH1cbiAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOyB9XG4gIHNldCB2YWx1ZShuZXdWYWx1ZSkgeyB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlKTsgfVxuXG4gIG5vdGlmeUVkaXRpb25QYXJ0aWFsKCkge1xuICAgIGNvbnN0IGludHJpbnNpY1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgIHRoaXMuX2VkaXRpb25QYXJ0aWFsLm5leHQoeyBjb2RlOiB0aGlzLmZpZWxkQ29kZSwgaW50cmluc2ljVmFsaWRhdGlvbiB9KTtcbiAgfVxuXG4gIG5vdGlmeUVkaXRpb25GaW5pc2goKSB7XG4gICAgbGV0IGludHJpbnNpY1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgIGNvbnN0IGZpZWxkRGVmYXVsdEZvcm1hdCA9IEZJRUxEX1RZUEVTX0ZPUk1BVFM/Llt0aGlzLmZpZWxkVHlwZV1cbiAgICAgID8gbmV3IFJlZ0V4cChGSUVMRF9UWVBFU19GT1JNQVRTPy5bdGhpcy5maWVsZFR5cGVdKSA6IG51bGw7XG4gICAgY29uc3QgZmllbGRGb3JtYXQgPSAodGhpcy5maWVsZEZvcm1hdCkgPyBuZXcgUmVnRXhwKHRoaXMuZmllbGRGb3JtYXQpIDogbnVsbDtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZFZhbHVlICYmIChmaWVsZERlZmF1bHRGb3JtYXQgfHwgZmllbGRGb3JtYXQpKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gKGZpZWxkRGVmYXVsdEZvcm1hdD8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKSBcbiAgICAgICAgJiYgKGZpZWxkRm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpO1xuICAgICAgaWYgKCFpbnRyaW5zaWNWYWxpZGF0aW9uKSB7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZWRpdGlvbkZpbmlzaC5uZXh0KHsgY29kZTogdGhpcy5maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBub3RpZnlFZGl0aW9uRGV0YWlsUmVxdWVzdCgpIHtcbiAgICB0aGlzLl9kZXRhaWxSZXF1ZXN0Lm5leHQodGhpcy5maWVsZENvZGUpO1xuICB9XG5cbiAgc2hvd0xhYmVsKCkgeyB0aGlzLnZpc2libGVMYWJlbCA9IHRydWU7IH1cbiAgaGlkZUxhYmVsKCkgeyB0aGlzLnZpc2libGVMYWJlbCA9IGZhbHNlOyB9XG4gIGNoYW5nZWQoKSB7IHRoaXMuaGFzQ2hhbmdlZCA9IHRydWU7IH1cbiAgZ2V0UmF3VmFsdWUoKSB7IHJldHVybiB0aGlzLl9maWVsZFZhbHVlOyB9XG4gIHNldExhYmVsKGxhYmVsKSB7IHRoaXMuZmllbGRUaXRsZSA9IGxhYmVsOyB9XG4gIGNsZWFuKCkgeyB0aGlzLnNldFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlIHx8ICcnKTsgfVxuICBnZXQgYmFja2VuZCgpIHsgcmV0dXJuIHRoaXMudmFsaWRhdGVPblNlcnZlcjsgfVxuXG4gIHNldFZpc2libGVMYWJlbCh2aXNpYmxlTGFiZWw6IGJvb2xlYW4pIHsgdGhpcy52aXNpYmxlTGFiZWwgPSB2aXNpYmxlTGFiZWw7IH1cbiAgc2V0RWRpdGFibGUoZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlKSB7IChlZGl0YWJsZSkgPyB0aGlzLmVuYWJsZSgpIDogdGhpcy5kaXNhYmxlKCk7IH1cblxuICBzZXRFcnJvcihjb2RlLCBtZXNzYWdlLCB0eXBlID0gJ2Vycm9yJykge1xuICAgIHRoaXMuZXJyb3JUeXBlID0gKGNvZGUgPT09ICcwMCcpID8gJycgOiB0eXBlO1xuICAgIHRoaXMuZXJyb3JDb2RlID0gY29kZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7XG4gIH1cblxuICBnZXRFcnJvcigpIHsgcmV0dXJuIHsgdHlwZTogdGhpcy5lcnJvclR5cGUsIGNvZGU6IHRoaXMuZXJyb3JDb2RlLCBtZXNzYWdlOiB0aGlzLmVycm9yTWVzc2FnZSB9OyB9XG4gIGdldCBlcnJvcigpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKTsgfVxuICBzZXQgZXJyb3IoZXJyb3JPYmopIHsgdGhpcy5zZXRFcnJvcihlcnJvck9iai5jb2RlLCBlcnJvck9iai5tZXNzYWdlLCBlcnJvck9iai50eXBlKSB9XG5cbiAgZ2V0RXJyb3JDb2RlKCkgeyByZXR1cm4gdGhpcy5nZXRFcnJvcigpLmNvZGU7IH1cbiAgc2V0RXJyb3JDb2RlKGNvZGUpIHsgdGhpcy5zZXRFcnJvcihjb2RlLCB0aGlzLmVycm9yTWVzc2FnZSk7IH1cbiAgZ2V0RXJyb3JNZXNzYWdlKCkgeyByZXR1cm4gdGhpcy5nZXRFcnJvcigpLm1lc3NhZ2U7IH1cbiAgc2V0RXJyb3JNZXNzYWdlKG1zZykgeyB0aGlzLnNldEVycm9yKHRoaXMuZXJyb3JDb2RlLCBtc2cpOyB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICBjb25zdCBmaWVsZEN1cnJlbnRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBpZiAoZmllbGRDdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICgodGhpcy5maWVsZFR5cGUgPT09IEZJRUxEX1RZUEVTLmFycmF5IHx8IHRoaXMuZmllbGRUeXBlID09PSBGSUVMRF9UWVBFUy5waG9uZSlcbiAgICAgICYmIEFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpICYmIGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCA9PT0gMCApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgcmV0dXJuIGZpZWxkQ3VycmVudFZhbHVlID09PSAnJzsgXG4gIH1cblxuICBnZXRWYWx1ZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRUeXBlKSB7XG4gICAgICBjYXNlIGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQ0hFQ0s6XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlID8/IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9DVVJSRU5DWTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWUucmVwbGFjZSgnLCcsICcnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcihmbGQpIHtcbiAgICBpZiAoRklFTERfVklTSUJMRSBpbiBmbGQpIHtcbiAgICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmbGQudmlzaWJsZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9MQUJFTF9WSVNJQkxFIGluIGZsZCkge1xuICAgICAgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmxkLnZpc2libGVMYWJlbCk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9SRVFVSVJFRCBpbiBmbGQpIHtcbiAgICAgIHRoaXMuZmllbGRSZXF1aXJlZCA9IGZsZC5yZXF1aXJlZCA/PyBmYWxzZTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX0VSUl9DT0RFIGluIGZsZCkge1xuICAgICAgKHRoaXMuZXJyb3JDb2RlID0gZmxkLmVycm9yQ29kZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9FUlJfTVNHIGluIGZsZCkge1xuICAgICAgKHRoaXMuZXJyb3JNZXNzYWdlID0gZmxkLmVycm9yTWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9UT09MVElQIGluIGZsZCkge1xuICAgICAgKHRoaXMudG9vbHRpcFRleHQgPSBmbGQudG9vbHRpcCk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9JTkZPIGluIGZsZCkge1xuICAgICAgKHRoaXMuZmllbGRJbmZvID0gZmxkLmluZm8pO1xuICAgIH1cbiAgICBpZiAoRklFTERfRURJVEFCTEUgaW4gZmxkKSB7XG4gICAgICB0aGlzLnNldEVkaXRhYmxlKGZsZC5lZGl0YWJsZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9USVRMRSBpbiBmbGQpIHtcbiAgICAgIHRoaXMuc2V0TGFiZWwoZmxkLmZpZWxkVGl0bGUudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9WQUxVRSBpbiBmbGQpIHtcbiAgICAgIHRoaXMuaGFzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9PUFRJT05TIGluIGZsZCkge1xuICAgICAgdGhpcy5zZXRGaWVsZE9wdGlvbnMoZmxkLmZpZWxkT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9DQVBUVVJFX1RZUEUgaW4gZmxkKSB7XG4gICAgICB0aGlzLmNhcHR1cmVUeXBlID0gZmxkLmNhcHR1cmVUeXBlIHx8ICdJTlBVVCc7XG4gICAgfVxuICAgIGlmIChGSUVMRF9UWVBFIGluIGZsZCkge1xuICAgICAgdGhpcy5zZXRGaWVsZFR5cGUoZmxkLmZpZWxkVHlwZUNvZGUpO1xuICAgIH1cbiAgICBpZiAoRklFTERfTUFYX0xFTkdUSCBpbiBmbGQpIHtcbiAgICAgIHRoaXMubWF4TGVuZ3RoID0gZmxkLm1heExlbmd0aDtcbiAgICB9XG4gIH1cblxuICBzZXRGaWVsZFR5cGUoaW5wdXRGaWVsZFR5cGUpIHtcbiAgICB0aGlzLmZpZWxkVHlwZSA9IGlucHV0RmllbGRUeXBlO1xuICAgIC8qKlxuICAgICAqICBTZSBlbGltaW5hIGxhIHZhbGlkYWNpw7NuIGRlIHF1ZSBzZWEgdW4gdGlwbyBjb25vY2lkb1xuICAgICAqICB0aGlzLmZpZWxkVHlwZSA9IChpbnB1dEZpZWxkVHlwZSAmJiBGSUVMRFRZUEVTLmluY2x1ZGVzKGlucHV0RmllbGRUeXBlKSlcbiAgICAgKiAgID8gaW5wdXRGaWVsZFR5cGUgOiBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX1RFWFQ7XG4gICAgICovXG4gIH1cblxuICBmb3JtYXQoKSB7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0NVUlJFTkNZKSB7XG4gICAgICB0aGlzLl9maWVsZFZhbHVlID0gZm9ybWF0Q3VycmVuY3kodGhpcy5fZmllbGRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TWluVmFsdWUobWluVmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfREFURVxuICAgICAgJiYgdGhpcy53aWRnZXQ/LnNldE1pblZhbHVlKSB7XG4gICAgICB0aGlzLl9taW5WYWx1ZSA9IG1pblZhbHVlO1xuICAgICAgaWYgKCFtaW5WYWx1ZSkge1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWluRGF0ZSA9IG5ldyBEYXRlKG1pblZhbHVlKTtcbiAgICAgICAgdGhpcy53aWRnZXQ/LnNldE1pblZhbHVlKG1pbkRhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldE1heFZhbHVlKG1heFZhbHVlKSB7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0RBVEVcbiAgICAgICYmIHRoaXMud2lkZ2V0Py5zZXRNYXhWYWx1ZSkge1xuICAgICAgdGhpcy5fbWF4VmFsdWUgPSBtYXhWYWx1ZTtcbiAgICAgIGlmICghbWF4VmFsdWUpIHtcbiAgICAgICAgdGhpcy53aWRnZXQ/LnNldE1heFZhbHVlKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1heERhdGUgPSBuZXcgRGF0ZShtYXhWYWx1ZSk7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNYXhWYWx1ZShtYXhEYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRGaWVsZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWVsZE9wdGlvbnMpKTtcbiAgfVxuXG4gIHNldEZpZWxkT3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gICAgaWYgKCh0aGlzLmNhcHR1cmVUeXBlICE9PSAnTElTVCcgJiYgdGhpcy5jYXB0dXJlVHlwZSAhPT0gJ1JBRElPJylcbiAgICAgIHx8IHR5cGVvZiBuZXdPcHRpb25zID09PSBVTkRFRklORUQgfHwgIW5ld09wdGlvbnNcbiAgICAgIHx8ICFBcnJheS5pc0FycmF5KG5ld09wdGlvbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkT3B0aW9ucyA9IG5ld09wdGlvbnMubWFwKG9wdGlvbiA9PiB7XG4gICAgICBpZiAob3B0aW9uLnRleHQgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udGV4dCAhPT0gbnVsbFxuICAgICAgICAmJiBvcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGRPcHRpb25WYWx1ZTogb3B0aW9uLnRleHQsIGZpZWxkT3B0aW9uSWQ6IG9wdGlvbi52YWx1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgLi4ub3B0aW9uIH07XG4gICAgfSk7XG4gICAgdGhpcy5maWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0FSUkFZICYmIHRoaXMud2lkZ2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy53aWRnZXQ/LnJlZmVyZXNoQ29udGVudCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0FSUkFZICYmIEFycmF5LmlzQXJyYXkodGhpcy5fZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgdGhpcy5fZmllbGRWYWx1ZSA9IHRoaXMuX2ZpZWxkVmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5maWVsZE9wdGlvbnMuZmluZChvcHQgPT4gb3B0LmZpZWxkT3B0aW9uSWQgPT09IGl0ZW0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB2YWxJbk9wdGlvbnMgPSB0aGlzLmZpZWxkT3B0aW9uc1xuICAgICAgICAgIC5maW5kKGl0ZW0gPT4gaXRlbS5maWVsZE9wdGlvbklkID09PSB0aGlzLl9maWVsZFZhbHVlKTtcbiAgICAgICAgaWYgKCF2YWxJbk9wdGlvbnMpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5maWVsZFJlcXVpcmVkICYmIHRoaXMuZmllbGRPcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLmZpZWxkT3B0aW9uc1swXS5maWVsZE9wdGlvbklkKTtcbiAgICAgIGlmICh0aGlzLndpZGdldD8ub25DaGFuZ2VDb250ZW50KSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5vbkNoYW5nZUNvbnRlbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRWYWx1ZShuZXdWYWx1ZSwgd2lkZ2V0VXBkYXRlID0gdHJ1ZSkge1xuICAgIGlmICh0eXBlb2YgbmV3VmFsdWUgPT09IFVOREVGSU5FRCB8fCBuZXdWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbmV3RmluYWxWYWx1ZTtcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRUeXBlKSB7XG4gICAgICBjYXNlICdCT09MRUFOJzpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9ICEhbmV3VmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0NIRUNLOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gISFuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQVJSQVk6XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCB8fCBuZXdWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICBuZXdGaW5hbFZhbHVlID0gW107XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkobmV3VmFsdWUpKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiAobmV3VmFsdWUpICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBuZXdWYWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfTUFQOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIGlmIChuZXdGaW5hbFZhbHVlICYmIHRoaXMud2lkZ2V0ICYmIHdpZGdldFVwZGF0ZSkge1xuICAgICAgICAgIGNvbnN0IGxhdGl0dWRlID0gcGFyc2VGbG9hdChuZXdGaW5hbFZhbHVlWzBdKTtcbiAgICAgICAgICBjb25zdCBsb25naXR1ZGUgPSBwYXJzZUZsb2F0KG5ld0ZpbmFsVmFsdWVbMV0pO1xuICAgICAgICAgIHRoaXMud2lkZ2V0Py5zZXRMb2NhdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9DVVJSRU5DWTpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IGZvcm1hdEN1cnJlbmN5KHRoaXMuX2ZpZWxkVmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWVsZFZhbHVlICE9PSBuZXdGaW5hbFZhbHVlKSB7XG4gICAgICB0aGlzLmhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fZmllbGRWYWx1ZSA9IG5ld0ZpbmFsVmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1349,8 +1349,6 @@ const FIELD_ERR_MSG = 'errorMessage';
1349
1349
  const FIELD_TOOLTIP = 'tooltipText';
1350
1350
  const FIELD_INFO = 'info';
1351
1351
  const FIELD_EDITABLE = 'editable';
1352
- const EMAIL_FORMAT = '^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$';
1353
- // Norbey ".+@([\da-z\.-]+)\.([a-z\.]{2,6})"
1354
1352
  const FIELD_TYPES = {
1355
1353
  array: 'ARRAY',
1356
1354
  check: 'CHECK',
@@ -1376,6 +1374,9 @@ const FIELD_TYPES = {
1376
1374
  email: 'EMAIL',
1377
1375
  phone: 'PHONE',
1378
1376
  };
1377
+ const FIELD_TYPES_FORMATS = {
1378
+ EMAIL: '^\\w+([\\.-]?\\w+)@\\w+([\\.-]?\\w+)(\\.\\w{2,3})+$',
1379
+ };
1379
1380
  const STD_MAX_LENGTH = 50;
1380
1381
  const BIG_MAX_LENGTH = 500;
1381
1382
  class FieldDescriptor extends FormElement {
@@ -1398,7 +1399,7 @@ class FieldDescriptor extends FormElement {
1398
1399
  const defaultTypeAlignment = (tableFieldStyles[this.fieldType] != null) ? tableFieldStyles[this.fieldType]['text-align'] : 'left';
1399
1400
  this.fieldAlignment = (fieldReceived.alignment != null) ? fieldReceived.alignment.toLowerCase() : defaultTypeAlignment;
1400
1401
  this.fieldInfo = fieldReceived.info || '';
1401
- this.fieldFormat = fieldReceived.format || '';
1402
+ this.fieldFormat = fieldReceived.format || null;
1402
1403
  this.validateOnServer = (_c = fieldReceived === null || fieldReceived === void 0 ? void 0 : fieldReceived.serverAction) !== null && _c !== void 0 ? _c : false;
1403
1404
  this.customAttributes = (_d = fieldReceived === null || fieldReceived === void 0 ? void 0 : fieldReceived.customAttributes) !== null && _d !== void 0 ? _d : null;
1404
1405
  this.setVisibility(fieldReceived.visible);
@@ -1441,17 +1442,17 @@ class FieldDescriptor extends FormElement {
1441
1442
  this._editionPartial.next({ code: this.fieldCode, intrinsicValidation });
1442
1443
  }
1443
1444
  notifyEditionFinish() {
1445
+ var _a, _b;
1444
1446
  let intrinsicValidation = true;
1445
- const fieldExpression = (this.fieldType === FIELD_TYPES.email) ? EMAIL_FORMAT : this.fieldFormat;
1446
- const fieldFormat = new RegExp(fieldExpression);
1447
+ const fieldDefaultFormat = (FIELD_TYPES_FORMATS === null || FIELD_TYPES_FORMATS === void 0 ? void 0 : FIELD_TYPES_FORMATS[this.fieldType])
1448
+ ? new RegExp(FIELD_TYPES_FORMATS === null || FIELD_TYPES_FORMATS === void 0 ? void 0 : FIELD_TYPES_FORMATS[this.fieldType]) : null;
1449
+ const fieldFormat = (this.fieldFormat) ? new RegExp(this.fieldFormat) : null;
1447
1450
  const fieldValue = this.getValue();
1448
- if (fieldValue && fieldFormat) {
1449
- intrinsicValidation = fieldFormat.test(fieldValue);
1451
+ if (fieldValue && (fieldDefaultFormat || fieldFormat)) {
1452
+ intrinsicValidation = ((_a = fieldDefaultFormat === null || fieldDefaultFormat === void 0 ? void 0 : fieldDefaultFormat.test(fieldValue)) !== null && _a !== void 0 ? _a : true)
1453
+ && ((_b = fieldFormat === null || fieldFormat === void 0 ? void 0 : fieldFormat.test(fieldValue)) !== null && _b !== void 0 ? _b : true);
1450
1454
  if (!intrinsicValidation) {
1451
- const message = (this.fieldType === FIELD_TYPES.email)
1452
- ? `El valor de ${this.fieldTitle} no corresponde a un correo válido`
1453
- : `El valor de ${this.fieldTitle} no se ajusta al formato establecido`;
1454
- this.setError('99', message);
1455
+ this.setError('99', this._intrinsicErrorMessage);
1455
1456
  }
1456
1457
  }
1457
1458
  this._editionFinish.next({ code: this.fieldCode, intrinsicValidation });