tuain-ng-forms-lib 12.0.23 → 12.0.27

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.
@@ -4,7 +4,7 @@ import { FormElement } from './element';
4
4
  const HEADER = 'HEADER';
5
5
  export class FormAction extends FormElement {
6
6
  constructor(actionDefinition, formConfig) {
7
- var _a, _b;
7
+ var _a;
8
8
  super(actionDefinition, formConfig);
9
9
  this._actionActivated = new Subject();
10
10
  this.inProgress = false;
@@ -12,10 +12,9 @@ export class FormAction extends FormElement {
12
12
  this.actionCode = actionDefinition.actionCode ? actionDefinition.actionCode.toString() : '';
13
13
  this.actionName = actionDefinition.actionTitle;
14
14
  this.iconName = actionDefinition.iconName || this.actionCode;
15
- this.location = actionDefinition.position || HEADER;
15
+ this.setCustomAttribute('location', actionDefinition.position || HEADER);
16
16
  this.backend = (_a = actionDefinition === null || actionDefinition === void 0 ? void 0 : actionDefinition.serverAction) !== null && _a !== void 0 ? _a : false;
17
17
  this.newState = actionDefinition === null || actionDefinition === void 0 ? void 0 : actionDefinition.newState;
18
- this.customAttributes = (_b = actionDefinition === null || actionDefinition === void 0 ? void 0 : actionDefinition.customAttributes) !== null && _b !== void 0 ? _b : null;
19
18
  this.restrictedOnField = actionDefinition.fieldRestrictedCode ? actionDefinition.fieldRestrictedCode.toString() : '';
20
19
  this.restrictedOnOperator = actionDefinition.operatorRestricted || '';
21
20
  this.restrictedOnValue = actionDefinition.valueRestricted || '';
@@ -34,4 +33,4 @@ export class FormAction extends FormElement {
34
33
  }
35
34
  setCustomValidation(callback) { this.customValidation = () => callback(); }
36
35
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEIsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBa0J6QyxZQUFZLGdCQUFnQixFQUFFLFVBQVU7O1FBQ3RDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztRQWxCckIscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUUxRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBaUJqQixJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVGLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxnQkFBZ0IsYUFBaEIsZ0JBQWdCLHVCQUFoQixnQkFBZ0IsQ0FBRSxZQUFZLG1DQUFJLEtBQUssQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLFFBQVEsQ0FBQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBQSxnQkFBZ0IsYUFBaEIsZ0JBQWdCLHVCQUFoQixnQkFBZ0IsQ0FBRSxnQkFBZ0IsbUNBQUksSUFBSSxDQUFDO1FBRW5FLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNySCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO1FBQ3RFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUV2RCxLQUFLLEtBQUssSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25DLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFbkMsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRW5FLGdCQUFnQixDQUFDLGNBQWM7UUFDN0IsS0FBSyxNQUFNLFlBQVksSUFBSSxjQUFjLEVBQUU7WUFDekMsSUFBSSxZQUFZLEtBQUssWUFBWSxJQUFJLFlBQVksS0FBSyxVQUFVLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbkQ7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM1RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcyB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuXG5jb25zdCBIRUFERVIgPSAnSEVBREVSJztcblxuZXhwb3J0IGNsYXNzIEZvcm1BY3Rpb24gZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGlvbkFjdGl2YXRlZCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBpblByb2dyZXNzID0gZmFsc2U7XG4gIG5ld1N0YXRlOiBzdHJpbmc7XG4gIGJhY2tlbmQ6IGJvb2xlYW47XG5cbiAgYWN0aW9uQ29kZTogc3RyaW5nO1xuICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gIGljb25OYW1lOiBzdHJpbmc7XG4gIGxvY2F0aW9uOiBzdHJpbmc7XG5cbiAgcmVzdHJpY3RlZE9uRmllbGQ6IHN0cmluZztcbiAgcmVzdHJpY3RlZE9uT3BlcmF0b3I6IHN0cmluZztcbiAgcmVzdHJpY3RlZE9uVmFsdWU6IHN0cmluZztcbiAgY3VzdG9tVmFsaWRhdGlvbjogYW55O1xuICBjdXN0b21BdHRyaWJ1dGVzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoYWN0aW9uRGVmaW5pdGlvbiwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGFjdGlvbkRlZmluaXRpb24sIGZvcm1Db25maWcpO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMuYWN0aW9uO1xuICAgIHRoaXMuYWN0aW9uQ29kZSA9IGFjdGlvbkRlZmluaXRpb24uYWN0aW9uQ29kZSA/IGFjdGlvbkRlZmluaXRpb24uYWN0aW9uQ29kZS50b1N0cmluZygpIDogJyc7XG4gICAgdGhpcy5hY3Rpb25OYW1lID0gYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25UaXRsZTtcbiAgICB0aGlzLmljb25OYW1lID0gYWN0aW9uRGVmaW5pdGlvbi5pY29uTmFtZSB8fCB0aGlzLmFjdGlvbkNvZGU7XG4gICAgdGhpcy5sb2NhdGlvbiA9IGFjdGlvbkRlZmluaXRpb24ucG9zaXRpb24gfHwgSEVBREVSO1xuICAgIHRoaXMuYmFja2VuZCA9IGFjdGlvbkRlZmluaXRpb24/LnNlcnZlckFjdGlvbiA/PyBmYWxzZTtcbiAgICB0aGlzLm5ld1N0YXRlID0gYWN0aW9uRGVmaW5pdGlvbj8ubmV3U3RhdGU7XG4gICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0gYWN0aW9uRGVmaW5pdGlvbj8uY3VzdG9tQXR0cmlidXRlcyA/PyBudWxsO1xuXG4gICAgdGhpcy5yZXN0cmljdGVkT25GaWVsZCA9IGFjdGlvbkRlZmluaXRpb24uZmllbGRSZXN0cmljdGVkQ29kZSA/IGFjdGlvbkRlZmluaXRpb24uZmllbGRSZXN0cmljdGVkQ29kZS50b1N0cmluZygpIDogJyc7XG4gICAgdGhpcy5yZXN0cmljdGVkT25PcGVyYXRvciA9IGFjdGlvbkRlZmluaXRpb24ub3BlcmF0b3JSZXN0cmljdGVkIHx8ICcnO1xuICAgIHRoaXMucmVzdHJpY3RlZE9uVmFsdWUgPSBhY3Rpb25EZWZpbml0aW9uLnZhbHVlUmVzdHJpY3RlZCB8fCAnJztcbiAgICB0aGlzLmN1c3RvbVZhbGlkYXRpb24gPSAoKSA9PiB0cnVlO1xuICB9XG5cbiAgZ2V0IGFjdGlvbkFjdGl2YXRlZCgpIHsgcmV0dXJuIHRoaXMuX2FjdGlvbkFjdGl2YXRlZDsgfVxuXG4gIHN0YXJ0KCkgeyB0aGlzLmluUHJvZ3Jlc3MgPSB0cnVlOyB9XG4gIHN0b3AoKSB7IHRoaXMuaW5Qcm9ncmVzcyA9IGZhbHNlOyB9XG5cbiAgbm90aWZ5QWN0aXZhdGlvbigpIHsgdGhpcy5fYWN0aW9uQWN0aXZhdGVkLm5leHQodGhpcy5hY3Rpb25Db2RlKTsgfVxuXG4gIHVwZGF0ZUZyb21TZXJ2ZXIocmVjZWl2ZWRBY3Rpb24pIHtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiByZWNlaXZlZEFjdGlvbikge1xuICAgICAgaWYgKHByb3BlcnR5TmFtZSAhPT0gJ2FjdGlvbkNvZGUnICYmIHByb3BlcnR5TmFtZSAhPT0gJ2FjdGlvbklkJykge1xuICAgICAgICB0aGlzW3Byb3BlcnR5TmFtZV0gPSByZWNlaXZlZEFjdGlvbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldEN1c3RvbVZhbGlkYXRpb24oY2FsbGJhY2spIHsgdGhpcy5jdXN0b21WYWxpZGF0aW9uID0gKCkgPT4gY2FsbGJhY2soKTsgfVxufVxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEIsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBZ0J6QyxZQUFZLGdCQUFnQixFQUFFLFVBQVU7O1FBQ3RDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztRQWhCckIscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUUxRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBZWpCLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM3RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQUEsZ0JBQWdCLGFBQWhCLGdCQUFnQix1QkFBaEIsZ0JBQWdCLENBQUUsWUFBWSxtQ0FBSSxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsYUFBaEIsZ0JBQWdCLHVCQUFoQixnQkFBZ0IsQ0FBRSxRQUFRLENBQUM7UUFFM0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUM7UUFDdEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBRXZELEtBQUssS0FBSyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkMsSUFBSSxLQUFLLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVuQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkUsZ0JBQWdCLENBQUMsY0FBYztRQUM3QixLQUFLLE1BQU0sWUFBWSxJQUFJLGNBQWMsRUFBRTtZQUN6QyxJQUFJLFlBQVksS0FBSyxZQUFZLElBQUksWUFBWSxLQUFLLFVBQVUsRUFBRTtnQkFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNuRDtTQUNGO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzVFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudCB9IGZyb20gJy4vZWxlbWVudCc7XG5cbmNvbnN0IEhFQURFUiA9ICdIRUFERVInO1xuXG5leHBvcnQgY2xhc3MgRm9ybUFjdGlvbiBleHRlbmRzIEZvcm1FbGVtZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aW9uQWN0aXZhdGVkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIGluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgbmV3U3RhdGU6IHN0cmluZztcbiAgYmFja2VuZDogYm9vbGVhbjtcblxuICBhY3Rpb25Db2RlOiBzdHJpbmc7XG4gIGFjdGlvbk5hbWU6IHN0cmluZztcbiAgaWNvbk5hbWU6IHN0cmluZztcblxuICByZXN0cmljdGVkT25GaWVsZDogc3RyaW5nO1xuICByZXN0cmljdGVkT25PcGVyYXRvcjogc3RyaW5nO1xuICByZXN0cmljdGVkT25WYWx1ZTogc3RyaW5nO1xuICBjdXN0b21WYWxpZGF0aW9uOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoYWN0aW9uRGVmaW5pdGlvbiwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGFjdGlvbkRlZmluaXRpb24sIGZvcm1Db25maWcpO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMuYWN0aW9uO1xuICAgIHRoaXMuYWN0aW9uQ29kZSA9IGFjdGlvbkRlZmluaXRpb24uYWN0aW9uQ29kZSA/IGFjdGlvbkRlZmluaXRpb24uYWN0aW9uQ29kZS50b1N0cmluZygpIDogJyc7XG4gICAgdGhpcy5hY3Rpb25OYW1lID0gYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25UaXRsZTtcbiAgICB0aGlzLmljb25OYW1lID0gYWN0aW9uRGVmaW5pdGlvbi5pY29uTmFtZSB8fCB0aGlzLmFjdGlvbkNvZGU7XG4gICAgdGhpcy5zZXRDdXN0b21BdHRyaWJ1dGUoJ2xvY2F0aW9uJywgYWN0aW9uRGVmaW5pdGlvbi5wb3NpdGlvbiB8fCBIRUFERVIpO1xuICAgIHRoaXMuYmFja2VuZCA9IGFjdGlvbkRlZmluaXRpb24/LnNlcnZlckFjdGlvbiA/PyBmYWxzZTtcbiAgICB0aGlzLm5ld1N0YXRlID0gYWN0aW9uRGVmaW5pdGlvbj8ubmV3U3RhdGU7XG5cbiAgICB0aGlzLnJlc3RyaWN0ZWRPbkZpZWxkID0gYWN0aW9uRGVmaW5pdGlvbi5maWVsZFJlc3RyaWN0ZWRDb2RlID8gYWN0aW9uRGVmaW5pdGlvbi5maWVsZFJlc3RyaWN0ZWRDb2RlLnRvU3RyaW5nKCkgOiAnJztcbiAgICB0aGlzLnJlc3RyaWN0ZWRPbk9wZXJhdG9yID0gYWN0aW9uRGVmaW5pdGlvbi5vcGVyYXRvclJlc3RyaWN0ZWQgfHwgJyc7XG4gICAgdGhpcy5yZXN0cmljdGVkT25WYWx1ZSA9IGFjdGlvbkRlZmluaXRpb24udmFsdWVSZXN0cmljdGVkIHx8ICcnO1xuICAgIHRoaXMuY3VzdG9tVmFsaWRhdGlvbiA9ICgpID0+IHRydWU7XG4gIH1cblxuICBnZXQgYWN0aW9uQWN0aXZhdGVkKCkgeyByZXR1cm4gdGhpcy5fYWN0aW9uQWN0aXZhdGVkOyB9XG5cbiAgc3RhcnQoKSB7IHRoaXMuaW5Qcm9ncmVzcyA9IHRydWU7IH1cbiAgc3RvcCgpIHsgdGhpcy5pblByb2dyZXNzID0gZmFsc2U7IH1cblxuICBub3RpZnlBY3RpdmF0aW9uKCkgeyB0aGlzLl9hY3Rpb25BY3RpdmF0ZWQubmV4dCh0aGlzLmFjdGlvbkNvZGUpOyB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcihyZWNlaXZlZEFjdGlvbikge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIGluIHJlY2VpdmVkQWN0aW9uKSB7XG4gICAgICBpZiAocHJvcGVydHlOYW1lICE9PSAnYWN0aW9uQ29kZScgJiYgcHJvcGVydHlOYW1lICE9PSAnYWN0aW9uSWQnKSB7XG4gICAgICAgIHRoaXNbcHJvcGVydHlOYW1lXSA9IHJlY2VpdmVkQWN0aW9uW3Byb3BlcnR5TmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0Q3VzdG9tVmFsaWRhdGlvbihjYWxsYmFjaykgeyB0aGlzLmN1c3RvbVZhbGlkYXRpb24gPSAoKSA9PiBjYWxsYmFjaygpOyB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { elementTypes } from './form.constants';
2
2
  export class FormElement {
3
3
  constructor(elementDefinition, formConfig) {
4
- var _a, _b;
4
+ var _a, _b, _c;
5
5
  this._formConfig = formConfig;
6
6
  this._isForced = false;
7
7
  this.setVisibleStates(elementDefinition.visibleStates);
@@ -10,7 +10,13 @@ export class FormElement {
10
10
  this.disabled = (_a = elementDefinition === null || elementDefinition === void 0 ? void 0 : elementDefinition.disabled) !== null && _a !== void 0 ? _a : false;
11
11
  this.setVisibility((_b = elementDefinition === null || elementDefinition === void 0 ? void 0 : elementDefinition.visible) !== null && _b !== void 0 ? _b : true);
12
12
  this.widget = null;
13
+ this.customAttributes = (_c = elementDefinition === null || elementDefinition === void 0 ? void 0 : elementDefinition.customAttributes) !== null && _c !== void 0 ? _c : null;
13
14
  }
15
+ getCustomAttribute(name) { var _a, _b; return (_b = (_a = this.customAttributes) === null || _a === void 0 ? void 0 : _a[name]) !== null && _b !== void 0 ? _b : null; }
16
+ setCustomAttribute(name, value) { if (name) {
17
+ this.customAttributes[name] = value;
18
+ } }
19
+ matchAttribute(name, value) { var _a; return ((_a = this.customAttributes) === null || _a === void 0 ? void 0 : _a[name]) === value; }
14
20
  isField() { return this.elementType === elementTypes.field; }
15
21
  isAction() { return this.elementType === elementTypes.action; }
16
22
  isTable() { return this.elementType === elementTypes.table; }
@@ -28,7 +34,13 @@ export class FormElement {
28
34
  }
29
35
  viewOnState(state) { return (this.visibleStates && state) ? this.visibleStates.includes(state) : false; }
30
36
  enabledOnState(state) { return (this.enabledStates && state) ? this.enabledStates.includes(state) : false; }
37
+ /**
38
+ * @deprecated Utilizar viewOnState
39
+ */
31
40
  supportState(state) { return this.viewOnState(state); }
41
+ /**
42
+ * @deprecated Utilizar viewOnState
43
+ */
32
44
  supportMode(state) { return this.viewOnState(state); }
33
45
  get visible() { return (this._isForced) ? this._visibleForced : this._visible; }
34
46
  set visible(visible) { this.setVisibility(visible); }
@@ -63,4 +75,4 @@ export class FormElement {
63
75
  get enabled() { return !this.disabled; }
64
76
  get editable() { return !this.disabled; }
65
77
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsTUFBTSxPQUFPLFdBQVc7SUFXdEIsWUFBWSxpQkFBaUIsRUFBRSxVQUFVOztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxRQUFRLG1DQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQUEsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsT0FBTyxtQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3RCxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFD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LFFBQVEsR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ2hDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsTUFBZ0I7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFnQjtRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuQyxPQUFPLEtBQUssSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRW5DLElBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN4QyxJQUFJLFFBQVEsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Q0FDMUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbGVtZW50VHlwZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmV4cG9ydCBjbGFzcyBGb3JtRWxlbWVudCB7XG4gIHByb3RlY3RlZCBfdmlzaWJsZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF92aXNpYmxlRm9yY2VkOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX2lzRm9yY2VkOiBib29sZWFuO1xuICBfZm9ybUNvbmZpZzogYW55O1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgdmlzaWJsZVN0YXRlczogc3RyaW5nW107XG4gIGVuYWJsZWRTdGF0ZXM6IHN0cmluZ1tdO1xuICB3aWRnZXQ6IGFueTtcbiAgZWxlbWVudFR5cGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50RGVmaW5pdGlvbiwgZm9ybUNvbmZpZykge1xuICAgIHRoaXMuX2Zvcm1Db25maWcgPSBmb3JtQ29uZmlnO1xuICAgIHRoaXMuX2lzRm9yY2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZXRWaXNpYmxlU3RhdGVzKGVsZW1lbnREZWZpbml0aW9uLnZpc2libGVTdGF0ZXMpO1xuICAgIHRoaXMuc2V0RW5hYmxlZFN0YXRlcyhlbGVtZW50RGVmaW5pdGlvbi5lbmFibGVkU3RhdGVzKTtcbiAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGVsZW1lbnREZWZpbml0aW9uPy5kaXNhYmxlZCA/PyBmYWxzZTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkoZWxlbWVudERlZmluaXRpb24/LnZpc2libGUgPz8gdHJ1ZSk7XG4gICAgdGhpcy53aWRnZXQgPSBudWxsO1xuICB9XG5cbiAgaXNGaWVsZCgpIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUgPT09IGVsZW1lbnRUeXBlcy5maWVsZDsgfVxuICBpc0FjdGlvbigpIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUgPT09IGVsZW1lbnRUeXBlcy5hY3Rpb247IH1cbiAgaXNUYWJsZSgpIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUgPT09IGVsZW1lbnRUeXBlcy50YWJsZTsgfVxuXG4gIHNldFZpc2libGVTdGF0ZXMobmV3U3RhdGVzOiBhbnkpIHtcbiAgICBjb25zdCB2aXNpYmxlU3RhdGVzID0gKCFBcnJheS5pc0FycmF5KG5ld1N0YXRlcykgJiYgdHlwZW9mIG5ld1N0YXRlcyA9PT0gJ3N0cmluZycpXG4gICAgICA/IG5ld1N0YXRlcy5zcGxpdCgnLCcpLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKVxuICAgICAgOiBuZXdTdGF0ZXM7XG4gICAgdGhpcy52aXNpYmxlU3RhdGVzID0gKEFycmF5LmlzQXJyYXkodmlzaWJsZVN0YXRlcykpID8gdmlzaWJsZVN0YXRlcyA6IFtdO1xuICB9XG5cbiAgc2V0RW5hYmxlZFN0YXRlcyhuZXdTdGF0ZXM6IGFueSkge1xuICAgIGNvbnN0IGVuYWJsZWRTdGF0ZXMgPSAoIUFycmF5LmlzQXJyYXkobmV3U3RhdGVzKSAmJiB0eXBlb2YgbmV3U3RhdGVzID09PSAnc3RyaW5nJylcbiAgICAgID8gbmV3U3RhdGVzLnNwbGl0KCcsJykubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSkuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApXG4gICAgICA6IG5ld1N0YXRlcztcbiAgICB0aGlzLmVuYWJsZWRTdGF0ZXMgPSAoQXJyYXkuaXNBcnJheShlbmFibGVkU3RhdGVzKSkgPyBlbmFibGVkU3RhdGVzIDogW107XG4gIH1cblxuICB2aWV3T25TdGF0ZShzdGF0ZSkgeyByZXR1cm4gKHRoaXMudmlzaWJsZVN0YXRlcyAmJiBzdGF0ZSkgPyB0aGlzLnZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpIDogZmFsc2U7IH1cbiAgZW5hYmxlZE9uU3RhdGUoc3RhdGUpIHsgcmV0dXJuICh0aGlzLmVuYWJsZWRTdGF0ZXMgJiYgc3RhdGUpID8gdGhpcy5lbmFibGVkU3RhdGVzLmluY2x1ZGVzKHN0YXRlKSA6IGZhbHNlOyB9XG5cbiAgc3VwcG9ydFN0YXRlKHN0YXRlKSB7IHJldHVybiB0aGlzLnZpZXdPblN0YXRlKHN0YXRlKTsgfVxuICBzdXBwb3J0TW9kZShzdGF0ZSkgeyByZXR1cm4gdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7IH1cblxuICBnZXQgdmlzaWJsZSgpIHsgcmV0dXJuICh0aGlzLl9pc0ZvcmNlZCkgPyB0aGlzLl92aXNpYmxlRm9yY2VkIDogdGhpcy5fdmlzaWJsZTsgfVxuICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7IHRoaXMuc2V0VmlzaWJpbGl0eSh2aXNpYmxlKTsgfVxuXG4gIHZpc2libGVPbihzdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGUgJiYgdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBlbmFibGVkT24oc3RhdGUpIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5lbmFibGVkT25TdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBzZXRWaXNpYmlsaXR5KHZpc2libGU6IGJvb2xlYW4sIGZvcmNlZDogYm9vbGVhbiA9IG51bGwpIHtcbiAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZSAmJiB0cnVlO1xuICAgIGlmIChmb3JjZWQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgfVxuICB9XG5cbiAgc2hvdyhmb3JjZWQ/OiBib29sZWFuKSB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IHRydWU7XG4gICAgaWYgKGZvcmNlZCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBoaWRlKGZvcmNlZD86IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7XG4gICAgaWYgKGZvcmNlZCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5faXNGb3JjZWQgPSBmb3JjZWQ7XG4gICAgICB0aGlzLl92aXNpYmxlRm9yY2VkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZW5hYmxlKCkgeyB0aGlzLmRpc2FibGVkID0gZmFsc2U7IH1cbiAgZGlzYWJsZSgpIHsgdGhpcy5kaXNhYmxlZCA9IHRydWU7IH1cblxuICBnZXQgZW5hYmxlZCgpIHsgcmV0dXJuICF0aGlzLmRpc2FibGVkOyB9XG4gIGdldCBlZGl0YWJsZSgpIHsgcmV0dXJuICF0aGlzLmRpc2FibGVkOyB9XG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsTUFBTSxPQUFPLFdBQVc7SUFZdEIsWUFBWSxpQkFBc0IsRUFBRSxVQUFlOztRQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxRQUFRLG1DQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQUEsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsT0FBTyxtQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxnQkFBZ0IsbUNBQUksSUFBSSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFZLGdCQUFZLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxnQkFBZ0IsMENBQUcsSUFBSSxDQUFDLG1DQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUYsa0JBQWtCLENBQUMsSUFBWSxFQUFFLEtBQWEsSUFBVSxJQUFJLElBQUksRUFBRTtRQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7S0FBRSxDQUFDLENBQUM7SUFDNUcsY0FBYyxDQUFDLElBQVksRUFBRSxLQUFhLFlBQWEsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLGdCQUFnQiwwQ0FBRyxJQUFJLENBQUMsTUFBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXhHLE9BQU8sS0FBYyxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxLQUFjLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXRFLGdCQUFnQixDQUFDLFNBQWM7UUFDN0IsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDO1lBQ2hGLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ25GLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDZCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBYztRQUM3QixNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLENBQUM7WUFDaEYsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDbkYsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYSxJQUFhLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxSCxjQUFjLENBQUMsS0FBYSxJQUFhLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUU3SDs7T0FFRztJQUNILFlBQVksQ0FBQyxLQUFhLElBQWEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV4RTs7T0FFRztJQUNILFdBQVcsQ0FBQyxLQUFhLElBQWEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV2RSxJQUFJLE9BQU8sS0FBYyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN6RixJQUFJLE9BQU8sQ0FBQyxPQUFnQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZ0IsRUFBRSxTQUFrQixJQUFJO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxJQUFJLElBQUksQ0FBQztRQUNoQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQWdCO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsTUFBZ0I7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELE1BQU0sS0FBVyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTyxLQUFXLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUV6QyxJQUFJLE9BQU8sS0FBYyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDakQsSUFBSSxRQUFRLEtBQWMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0NBQ25EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnQge1xuICBwcm90ZWN0ZWQgX3Zpc2libGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdmlzaWJsZUZvcmNlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9pc0ZvcmNlZDogYm9vbGVhbjtcbiAgX2Zvcm1Db25maWc6IGFueTtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHZpc2libGVTdGF0ZXM6IHN0cmluZ1tdO1xuICBlbmFibGVkU3RhdGVzOiBzdHJpbmdbXTtcbiAgd2lkZ2V0OiBhbnk7XG4gIGVsZW1lbnRUeXBlOiBzdHJpbmc7XG4gIGN1c3RvbUF0dHJpYnV0ZXM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50RGVmaW5pdGlvbjogYW55LCBmb3JtQ29uZmlnOiBhbnkpIHtcbiAgICB0aGlzLl9mb3JtQ29uZmlnID0gZm9ybUNvbmZpZztcbiAgICB0aGlzLl9pc0ZvcmNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2V0VmlzaWJsZVN0YXRlcyhlbGVtZW50RGVmaW5pdGlvbi52aXNpYmxlU3RhdGVzKTtcbiAgICB0aGlzLnNldEVuYWJsZWRTdGF0ZXMoZWxlbWVudERlZmluaXRpb24uZW5hYmxlZFN0YXRlcyk7XG4gICAgdGhpcy5fdmlzaWJsZUZvcmNlZCA9IGZhbHNlO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBlbGVtZW50RGVmaW5pdGlvbj8uZGlzYWJsZWQgPz8gZmFsc2U7XG4gICAgdGhpcy5zZXRWaXNpYmlsaXR5KGVsZW1lbnREZWZpbml0aW9uPy52aXNpYmxlID8/IHRydWUpO1xuICAgIHRoaXMud2lkZ2V0ID0gbnVsbDtcbiAgICB0aGlzLmN1c3RvbUF0dHJpYnV0ZXMgPSBlbGVtZW50RGVmaW5pdGlvbj8uY3VzdG9tQXR0cmlidXRlcyA/PyBudWxsO1xuICB9XG5cbiAgZ2V0Q3VzdG9tQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7IHJldHVybiB0aGlzLmN1c3RvbUF0dHJpYnV0ZXM/LltuYW1lXSA/PyBudWxsOyB9XG4gIHNldEN1c3RvbUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHsgaWYgKG5hbWUpIHsgdGhpcy5jdXN0b21BdHRyaWJ1dGVzW25hbWVdID0gdmFsdWU7IH0gfVxuICBtYXRjaEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY3VzdG9tQXR0cmlidXRlcz8uW25hbWVdID09PSB2YWx1ZTsgfVxuXG4gIGlzRmllbGQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlID09PSBlbGVtZW50VHlwZXMuZmllbGQ7IH1cbiAgaXNBY3Rpb24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlID09PSBlbGVtZW50VHlwZXMuYWN0aW9uOyB9XG4gIGlzVGFibGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlID09PSBlbGVtZW50VHlwZXMudGFibGU7IH1cblxuICBzZXRWaXNpYmxlU3RhdGVzKG5ld1N0YXRlczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJsZVN0YXRlcyA9ICghQXJyYXkuaXNBcnJheShuZXdTdGF0ZXMpICYmIHR5cGVvZiBuZXdTdGF0ZXMgPT09ICdzdHJpbmcnKVxuICAgICAgPyBuZXdTdGF0ZXMuc3BsaXQoJywnKS5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKS5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMClcbiAgICAgIDogbmV3U3RhdGVzO1xuICAgIHRoaXMudmlzaWJsZVN0YXRlcyA9IChBcnJheS5pc0FycmF5KHZpc2libGVTdGF0ZXMpKSA/IHZpc2libGVTdGF0ZXMgOiBbXTtcbiAgfVxuXG4gIHNldEVuYWJsZWRTdGF0ZXMobmV3U3RhdGVzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkU3RhdGVzID0gKCFBcnJheS5pc0FycmF5KG5ld1N0YXRlcykgJiYgdHlwZW9mIG5ld1N0YXRlcyA9PT0gJ3N0cmluZycpXG4gICAgICA/IG5ld1N0YXRlcy5zcGxpdCgnLCcpLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKVxuICAgICAgOiBuZXdTdGF0ZXM7XG4gICAgdGhpcy5lbmFibGVkU3RhdGVzID0gKEFycmF5LmlzQXJyYXkoZW5hYmxlZFN0YXRlcykpID8gZW5hYmxlZFN0YXRlcyA6IFtdO1xuICB9XG5cbiAgdmlld09uU3RhdGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMudmlzaWJsZVN0YXRlcyAmJiBzdGF0ZSkgPyB0aGlzLnZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpIDogZmFsc2U7IH1cbiAgZW5hYmxlZE9uU3RhdGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMuZW5hYmxlZFN0YXRlcyAmJiBzdGF0ZSkgPyB0aGlzLmVuYWJsZWRTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpIDogZmFsc2U7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXRpbGl6YXIgdmlld09uU3RhdGVcbiAgICovXG4gIHN1cHBvcnRTdGF0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnZpZXdPblN0YXRlKHN0YXRlKTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVdGlsaXphciB2aWV3T25TdGF0ZVxuICAgKi9cbiAgc3VwcG9ydE1vZGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7IH1cblxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLl9pc0ZvcmNlZCkgPyB0aGlzLl92aXNpYmxlRm9yY2VkIDogdGhpcy5fdmlzaWJsZTsgfVxuICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7IHRoaXMuc2V0VmlzaWJpbGl0eSh2aXNpYmxlKTsgfVxuXG4gIHZpc2libGVPbihzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZSAmJiB0aGlzLnZpZXdPblN0YXRlKHN0YXRlKTtcbiAgfVxuXG4gIGVuYWJsZWRPbihzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmIHRoaXMuZW5hYmxlZE9uU3RhdGUoc3RhdGUpO1xuICB9XG5cbiAgc2V0VmlzaWJpbGl0eSh2aXNpYmxlOiBib29sZWFuLCBmb3JjZWQ6IGJvb2xlYW4gPSBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IHZpc2libGUgJiYgdHJ1ZTtcbiAgICBpZiAoZm9yY2VkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2lzRm9yY2VkID0gZm9yY2VkO1xuICAgIH1cbiAgfVxuXG4gIHNob3coZm9yY2VkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX3Zpc2libGUgPSB0cnVlO1xuICAgIGlmIChmb3JjZWQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2lzRm9yY2VkID0gZm9yY2VkO1xuICAgICAgdGhpcy5fdmlzaWJsZUZvcmNlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaGlkZShmb3JjZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlO1xuICAgIGlmIChmb3JjZWQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2lzRm9yY2VkID0gZm9yY2VkO1xuICAgICAgdGhpcy5fdmlzaWJsZUZvcmNlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGVuYWJsZSgpOiB2b2lkIHsgdGhpcy5kaXNhYmxlZCA9IGZhbHNlOyB9XG4gIGRpc2FibGUoKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSB0cnVlOyB9XG5cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5kaXNhYmxlZDsgfVxuICBnZXQgZWRpdGFibGUoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5kaXNhYmxlZDsgfVxufVxuIl19
@@ -1,7 +1,6 @@
1
1
  import { Subject } from 'rxjs';
2
2
  import { elementTypes, NO_ERROR } from './form.constants';
3
3
  import { FormElement } from './element';
4
- import { formatCurrency } from '../utilities';
5
4
  const UNDEFINED = 'undefined';
6
5
  const DEFAULT_ERROR_TYPE = 'error';
7
6
  const DEFAULT_CAPTURE_TYPE = 'INPUT';
@@ -20,7 +19,6 @@ const fldAttr = {
20
19
  info: 'fieldInfo',
21
20
  defaultValue: 'defaultValue',
22
21
  defaultEditable: 'defaultEditable',
23
- customAttributes: 'customAttributes',
24
22
  visibleLabel: 'visibleLabel',
25
23
  required: 'fieldRequired',
26
24
  hasChanged: 'hasChanged',
@@ -39,7 +37,7 @@ const fldAttr = {
39
37
  };
40
38
  export class FieldDescriptor extends FormElement {
41
39
  constructor(inputFieldReceived, formConfig) {
42
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
40
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
43
41
  super(inputFieldReceived, formConfig);
44
42
  this._editionFinish = new Subject();
45
43
  this._editionPartial = new Subject();
@@ -65,18 +63,17 @@ export class FieldDescriptor extends FormElement {
65
63
  }
66
64
  this.setAttr(fldAttr.format, fieldFormat);
67
65
  this.setAttr(fldAttr.validateOnServer, (_d = fld.serverAction) !== null && _d !== void 0 ? _d : false);
68
- this.setAttr(fldAttr.customAttributes, (_e = fld.customAttributes) !== null && _e !== void 0 ? _e : {});
69
66
  this.setAttr(fldAttr.tooltipText, fld.tooltip || '');
70
67
  this.setAttr(fldAttr.defaultEditable, this.enabled);
71
- this.setAttr(fldAttr.required, (_f = fld.required) !== null && _f !== void 0 ? _f : false);
72
- this.setError(fld.errorCode, fld.errorMessage, (_g = fld.errorType) !== null && _g !== void 0 ? _g : DEFAULT_ERROR_TYPE);
73
- this.setAttr(fldAttr.outputOnly, (_h = fld.outputOnly) !== null && _h !== void 0 ? _h : false);
74
- const maxLength = (_j = fld.maxLength) !== null && _j !== void 0 ? _j : (this.captureType === 'TEXTAREA' ? BIG_MAX_LENGTH : STD_MAX_LENGTH);
68
+ this.setAttr(fldAttr.required, (_e = fld.required) !== null && _e !== void 0 ? _e : false);
69
+ this.setError(fld.errorCode, fld.errorMessage, (_f = fld.errorType) !== null && _f !== void 0 ? _f : DEFAULT_ERROR_TYPE);
70
+ this.setAttr(fldAttr.outputOnly, (_g = fld.outputOnly) !== null && _g !== void 0 ? _g : false);
71
+ const maxLength = (_h = fld.maxLength) !== null && _h !== void 0 ? _h : (this.captureType === 'TEXTAREA' ? BIG_MAX_LENGTH : STD_MAX_LENGTH);
75
72
  this.setAttr(fldAttr.maxLength, maxLength);
76
- this.setAttr(fldAttr.intrinsicErrorMessage, (_k = this._formConfig.fieldTypeErrMsg[this.fieldType]) !== null && _k !== void 0 ? _k : this._formConfig.fieldTypeErrMsg.DEFAULT);
73
+ this.setAttr(fldAttr.intrinsicErrorMessage, (_j = this._formConfig.fieldTypeErrMsg[this.fieldType]) !== null && _j !== void 0 ? _j : this._formConfig.fieldTypeErrMsg.DEFAULT);
77
74
  this.setFieldType(fld.fieldTypeCode);
78
- this.setEditable((_l = fld.editable) !== null && _l !== void 0 ? _l : true);
79
- this.setVisibleLabel((_m = fld.visibleLabel) !== null && _m !== void 0 ? _m : true);
75
+ this.setEditable((_k = fld.editable) !== null && _k !== void 0 ? _k : true);
76
+ this.setVisibleLabel((_l = fld.visibleLabel) !== null && _l !== void 0 ? _l : true);
80
77
  this.setVisibility(fld.visible);
81
78
  this.setFieldOptions(fld.fieldOptions);
82
79
  this.setValue(fld.fieldValue || this.defaultValue || '');
@@ -86,11 +83,14 @@ export class FieldDescriptor extends FormElement {
86
83
  get attributeChange() { return this._attributeChange; }
87
84
  get editionPartial() { return this._editionPartial; }
88
85
  get detailRequest() { return this._detailRequest; }
86
+ get info() { return this.fieldInfo; }
89
87
  get validating() { return this._onValidation; }
90
88
  set validating(isValidating) { this.setAttr(fldAttr.onValidation, isValidating); }
91
89
  setIntrinsicErrorMessage(message) { this.setAttr(fldAttr.intrinsicErrorMessage, message); }
92
90
  set intrinsicErrorMessage(message) { this.setIntrinsicErrorMessage(message); }
93
91
  get fieldValue() { return this.getValue(); }
92
+ getRequired() { return this.required; }
93
+ setRequired(required) { this.required = required; }
94
94
  get required() { return this.fieldRequired; }
95
95
  set required(required) { this.setAttr(fldAttr.required, required !== null && required !== void 0 ? required : false); }
96
96
  get maxLength() { return (this._maxLength > 0) ? this._maxLength.toString() : ''; }
@@ -131,7 +131,6 @@ export class FieldDescriptor extends FormElement {
131
131
  notifyEditionDetailRequest() {
132
132
  this._detailRequest.next(this.fieldCode);
133
133
  }
134
- getCustomAttribute(name) { var _a, _b; return (_b = (_a = this.customAttributes) === null || _a === void 0 ? void 0 : _a[name]) !== null && _b !== void 0 ? _b : null; }
135
134
  setVisibleLabel(visibleLabel) { this.setAttr(fldAttr.visibleLabel, visibleLabel); }
136
135
  showLabel() { this.setVisibleLabel(true); }
137
136
  hideLabel() { this.setVisibleLabel(false); }
@@ -139,7 +138,7 @@ export class FieldDescriptor extends FormElement {
139
138
  changed() { this.setChanged(true); }
140
139
  getRawValue() { return this._fieldValue; }
141
140
  setLabel(label) { this.setAttr(fldAttr.title, label); }
142
- clean() { this.setValue(this.defaultValue || ''); }
141
+ clean() { this.setValue(this.defaultValue || ''); this.resetError(); }
143
142
  get backend() { return this.validateOnServer; }
144
143
  setEditable(editable = true) { (editable) ? this.enable() : this.disable(); }
145
144
  hasError() { return this.errorCode !== NO_ERROR; }
@@ -156,6 +155,7 @@ export class FieldDescriptor extends FormElement {
156
155
  setErrorCode(code) { this.setError(code, this.errorMessage); }
157
156
  getErrorMessage() { return this.getError().message; }
158
157
  setErrorMessage(msg) { this.setError(this.errorCode, msg); }
158
+ get empty() { return this.isEmpty(); }
159
159
  isEmpty() {
160
160
  const fieldCurrentValue = this.getValue();
161
161
  if (fieldCurrentValue === undefined || fieldCurrentValue === null) {
@@ -211,11 +211,6 @@ export class FieldDescriptor extends FormElement {
211
211
  setFieldType(inputFieldType) {
212
212
  this.setAttr(fldAttr.type, inputFieldType);
213
213
  }
214
- format() {
215
- if (this.fieldType === this._formConfig.fieldTypes.currency) {
216
- this.setAttr(fldAttr.value, formatCurrency(this._fieldValue));
217
- }
218
- }
219
214
  setMinValue(minValue) {
220
215
  var _a, _b, _c;
221
216
  if (this.fieldType === this._formConfig.fieldTypes.date
@@ -325,9 +320,6 @@ export class FieldDescriptor extends FormElement {
325
320
  (_a = this.widget) === null || _a === void 0 ? void 0 : _a.setLocation(latitude, longitude);
326
321
  }
327
322
  break;
328
- case this._formConfig.fieldTypes.currency:
329
- newFinalValue = formatCurrency(newValue);
330
- break;
331
323
  default:
332
324
  newFinalValue = newValue;
333
325
  break;
@@ -339,4 +331,4 @@ export class FieldDescriptor extends FormElement {
339
331
  return true;
340
332
  }
341
333
  }
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBRTlCLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0FBQ25DLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDO0FBRWpDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUM7QUFFM0IsTUFBTSxPQUFPLEdBQUc7SUFDZCxnQkFBZ0IsRUFBRSxrQkFBa0I7SUFDcEMsS0FBSyxFQUFFLGFBQWE7SUFDcEIsUUFBUSxFQUFFLFdBQVc7SUFDckIsUUFBUSxFQUFFLFdBQVc7SUFDckIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsWUFBWSxFQUFFLGVBQWU7SUFDN0IscUJBQXFCLEVBQUUsd0JBQXdCO0lBQy9DLElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSxXQUFXO0lBQ2pCLFlBQVksRUFBRSxjQUFjO0lBQzVCLGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLFlBQVksRUFBRSxjQUFjO0lBQzVCLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFVBQVUsRUFBRSxZQUFZO0lB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SyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHO2dCQUNsQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2dCQUN6QixJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFlBQVksRUFBRTtvQkFDaEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUTtnQkFDdkMsYUFBYSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekMsTUFBTTtZQUNSO2dCQUNFLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLE1BQU07U0FDVDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxhQUFhLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcywgTk9fRVJST1IgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSAnLi4vdXRpbGl0aWVzJztcblxuY29uc3QgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IERFRkFVTFRfRVJST1JfVFlQRSA9ICdlcnJvcic7XG5jb25zdCBERUZBVUxUX0NBUFRVUkVfVFlQRSA9ICdJTlBVVCc7XG5jb25zdCBERUZBVUxUX0FMSUdOTUVOVCA9ICdsZWZ0JztcblxuY29uc3QgU1REX01BWF9MRU5HVEggPSA1MDtcbmNvbnN0IEJJR19NQVhfTEVOR1RIID0gNTAwO1xuXG5jb25zdCBmbGRBdHRyID0ge1xuICB2YWxpZGF0ZU9uU2VydmVyOiAndmFsaWRhdGVPblNlcnZlcicsXG4gIHZhbHVlOiAnX2ZpZWxkVmFsdWUnLFxuICBtaW5WYWx1ZTogJ19taW5WYWx1ZScsXG4gIG1heFZhbHVlOiAnX21heFZhbHVlJyxcbiAgbWF4TGVuZ3RoOiAnX21heExlbmd0aCcsXG4gIG9uVmFsaWRhdGlvbjogJ19vblZhbGlkYXRpb24nLFxuICBpbnRyaW5zaWNFcnJvck1lc3NhZ2U6ICdfaW50cmluc2ljRXJyb3JNZXNzYWdlJyxcbiAgY29kZTogJ2ZpZWxkQ29kZScsXG4gIGluZm86ICdmaWVsZEluZm8nLFxuICBkZWZhdWx0VmFsdWU6ICdkZWZhdWx0VmFsdWUnLFxuICBkZWZhdWx0RWRpdGFibGU6ICdkZWZhdWx0RWRpdGFibGUnLFxuICBjdXN0b21BdHRyaWJ1dGVzOiAnY3VzdG9tQXR0cmlidXRlcycsXG4gIHZpc2libGVMYWJlbDogJ3Zpc2libGVMYWJlbCcsXG4gIHJlcXVpcmVkOiAnZmllbGRSZXF1aXJlZCcsXG4gIGhhc0NoYW5nZWQ6ICdoYXNDaGFuZ2VkJyxcbiAgb3V0cHV0T25seTogJ291dHB1dE9ubHknLFxuICBjYXB0dXJlVHlwZTogJ2NhcHR1cmVUeXBlJyxcbiAgdGl0bGU6ICdmaWVsZFRpdGxlJyxcbiAgdHlwZTogJ2ZpZWxkVHlwZScsXG4gIGFsaWdubWVudDogJ2ZpZWxkQWxpZ25tZW50JyxcbiAgZm9ybWF0OiAnZmllbGRGb3JtYXQnLFxuICBleHRlcm5hbFZhbHVlOiAnZXh0ZXJuYWxWYWx1ZScsXG4gIHRvb2x0aXBUZXh0OiAndG9vbHRpcFRleHQnLFxuICBlcnJvclR5cGU6ICdlcnJvclR5cGUnLFxuICBlcnJvckNvZGU6ICdlcnJvckNvZGUnLFxuICBlcnJvck1lc3NhZ2U6ICdlcnJvck1lc3NhZ2UnLFxuICBvcHRpb25zOiAnZmllbGRPcHRpb25zJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBGaWVsZERlc2NyaXB0b3IgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25QYXJ0aWFsID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXRhaWxSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdHRyaWJ1dGVDaGFuZ2UgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9uU2VydmVyOiBib29sZWFuO1xuXG4gIF9maWVsZFZhbHVlOiBhbnk7XG4gIF9taW5WYWx1ZTogYW55O1xuICBfbWF4VmFsdWU6IGFueTtcbiAgX21heExlbmd0aDogbnVtYmVyO1xuICBfb25WYWxpZGF0aW9uOiBib29sZWFuO1xuICBfaW50cmluc2ljRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgZmllbGRDb2RlOiBzdHJpbmc7XG4gIGZpZWxkSW5mbzogc3RyaW5nO1xuICBkZWZhdWx0VmFsdWU6IHN0cmluZztcbiAgZGVmYXVsdEVkaXRhYmxlOiBib29sZWFuO1xuICBjdXN0b21BdHRyaWJ1dGVzOiBhbnk7XG5cbiAgdmlzaWJsZUxhYmVsOiBib29sZWFuO1xuICBmaWVsZFJlcXVpcmVkOiBib29sZWFuO1xuICBoYXNDaGFuZ2VkOiBib29sZWFuO1xuICBvdXRwdXRPbmx5OiBib29sZWFuO1xuICBjYXB0dXJlVHlwZTogc3RyaW5nO1xuICBmaWVsZFRpdGxlOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogc3RyaW5nO1xuICBmaWVsZEFsaWdubWVudDogc3RyaW5nO1xuICBmaWVsZEZvcm1hdDogUmVnRXhwO1xuICBleHRlcm5hbFZhbHVlOiBhbnk7XG4gIHRvb2x0aXBUZXh0OiBzdHJpbmc7XG5cbiAgZXJyb3JUeXBlOiBzdHJpbmc7XG4gIGVycm9yQ29kZTogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcblxuICBmaWVsZE9wdGlvbnM6IHtcbiAgICBmaWVsZE9wdGlvblZhbHVlOiBzdHJpbmc7XG4gICAgZmllbGRPcHRpb25JZDogc3RyaW5nO1xuICB9W107XG5cbiAgY29uc3RydWN0b3IoaW5wdXRGaWVsZFJlY2VpdmVkLCBmb3JtQ29uZmlnKSB7XG4gICAgc3VwZXIoaW5wdXRGaWVsZFJlY2VpdmVkLCBmb3JtQ29uZmlnKTtcbiAgICB0aGlzLmVsZW1lbnRUeXBlID0gZWxlbWVudFR5cGVzLmZpZWxkO1xuICAgIGNvbnN0IGZsZCA9IChpbnB1dEZpZWxkUmVjZWl2ZWQpID8gaW5wdXRGaWVsZFJlY2VpdmVkIDoge307XG5cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5jb2RlLCBmbGQuZmllbGRDb2RlKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci50aXRsZSwgZmxkLmZpZWxkVGl0bGUgPz8gdGhpcy5maWVsZENvZGUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmNhcHR1cmVUeXBlLCBmbGQuY2FwdHVyZVR5cGUgPz8gREVGQVVMVF9DQVBUVVJFX1RZUEUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmRlZmF1bHRWYWx1ZSwgZmxkLmRlZmF1bHRWYWx1ZSA/PyBudWxsKTtcbiAgICBjb25zdCBkZWZhdWx0VHlwZUFsaWdubWVudCA9ICh0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdICE9IG51bGwpXG4gICAgICA/IHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV1bJ3RleHQtYWxpZ24nXSA6IERFRkFVTFRfQUxJR05NRU5UO1xuICAgIGNvbnN0IGZpZWxkQWxpZ25tZW50ID0gKGZsZC5hbGlnbm1lbnQgIT0gbnVsbCkgPyBmbGQuYWxpZ25tZW50LnRvTG93ZXJDYXNlKCkgOiBkZWZhdWx0VHlwZUFsaWdubWVudDtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5hbGlnbm1lbnQsIGZpZWxkQWxpZ25tZW50KTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5pbmZvLCBmbGQuaW5mbyB8fCAnJyk7XG4gICAgbGV0IGZpZWxkRm9ybWF0O1xuICAgIHRyeSB7XG4gICAgICBmaWVsZEZvcm1hdCA9IChmbGQuZm9ybWF0KSA/IG5ldyBSZWdFeHAoZmxkLmZvcm1hdCkgOiBudWxsO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGZpZWxkRm9ybWF0ID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZm9ybWF0LCBmaWVsZEZvcm1hdCk7XG5cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci52YWxpZGF0ZU9uU2VydmVyLCBmbGQuc2VydmVyQWN0aW9uID8/IGZhbHNlKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5jdXN0b21BdHRyaWJ1dGVzLCBmbGQuY3VzdG9tQXR0cmlidXRlcyA/PyB7fSk7XG5cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci50b29sdGlwVGV4dCwgZmxkLnRvb2x0aXAgfHwgJycpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmRlZmF1bHRFZGl0YWJsZSwgdGhpcy5lbmFibGVkKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5yZXF1aXJlZCwgZmxkLnJlcXVpcmVkID8/IGZhbHNlKTtcbiAgICB0aGlzLnNldEVycm9yKGZsZC5lcnJvckNvZGUsIGZsZC5lcnJvck1lc3NhZ2UsIGZsZC5lcnJvclR5cGUgPz8gREVGQVVMVF9FUlJPUl9UWVBFKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5vdXRwdXRPbmx5LCBmbGQub3V0cHV0T25seSA/PyBmYWxzZSk7XG4gICAgY29uc3QgbWF4TGVuZ3RoID0gZmxkLm1heExlbmd0aCA/PyAodGhpcy5jYXB0dXJlVHlwZSA9PT0gJ1RFWFRBUkVBJyA/IEJJR19NQVhfTEVOR1RIIDogU1REX01BWF9MRU5HVEgpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heExlbmd0aCwgbWF4TGVuZ3RoKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5pbnRyaW5zaWNFcnJvck1lc3NhZ2UsIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlRXJyTXNnW3RoaXMuZmllbGRUeXBlXSA/PyB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZUVyck1zZy5ERUZBVUxUKTtcblxuICAgIHRoaXMuc2V0RmllbGRUeXBlKGZsZC5maWVsZFR5cGVDb2RlKTtcbiAgICB0aGlzLnNldEVkaXRhYmxlKGZsZC5lZGl0YWJsZSA/PyB0cnVlKTtcbiAgICB0aGlzLnNldFZpc2libGVMYWJlbChmbGQudmlzaWJsZUxhYmVsID8/IHRydWUpO1xuICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmbGQudmlzaWJsZSk7XG4gICAgdGhpcy5zZXRGaWVsZE9wdGlvbnMoZmxkLmZpZWxkT3B0aW9ucyk7XG4gICAgdGhpcy5zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSB8fCB0aGlzLmRlZmF1bHRWYWx1ZSB8fCAnJyk7XG4gIH1cblxuICBnZXQgbmFtZSgpIHsgcmV0dXJuIHRoaXMuZmllbGRDb2RlOyB9XG4gIGdldCBlZGl0aW9uRmluaXNoKCkgeyByZXR1cm4gdGhpcy5fZWRpdGlvbkZpbmlzaDsgfVxuICBnZXQgYXR0cmlidXRlQ2hhbmdlKCkgeyByZXR1cm4gdGhpcy5fYXR0cmlidXRlQ2hhbmdlOyB9XG5cbiAgZ2V0IGVkaXRpb25QYXJ0aWFsKCkgeyByZXR1cm4gdGhpcy5fZWRpdGlvblBhcnRpYWw7IH1cbiAgZ2V0IGRldGFpbFJlcXVlc3QoKSB7IHJldHVybiB0aGlzLl9kZXRhaWxSZXF1ZXN0OyB9XG5cbiAgZ2V0IHZhbGlkYXRpbmcoKSB7IHJldHVybiB0aGlzLl9vblZhbGlkYXRpb247IH1cbiAgc2V0IHZhbGlkYXRpbmcoaXNWYWxpZGF0aW5nOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLm9uVmFsaWRhdGlvbiwgaXNWYWxpZGF0aW5nKTsgfVxuXG4gIHNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIuaW50cmluc2ljRXJyb3JNZXNzYWdlLCBtZXNzYWdlKTsgfVxuICBzZXQgaW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykgeyB0aGlzLnNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlKTsgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkgeyByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOyB9XG4gIGdldCByZXF1aXJlZCgpIHsgcmV0dXJuIHRoaXMuZmllbGRSZXF1aXJlZDsgfVxuICBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIucmVxdWlyZWQsIHJlcXVpcmVkID8/IGZhbHNlKTsgfVxuICBnZXQgbWF4TGVuZ3RoKCkgeyByZXR1cm4gKHRoaXMuX21heExlbmd0aCA+IDApID8gdGhpcy5fbWF4TGVuZ3RoLnRvU3RyaW5nKCkgOiAnJzsgfVxuICBzZXQgbWF4TGVuZ3RoKHJlcXVpcmVkTWF4TGVuZ3RoOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHJlcXVpcmVkTWF4TGVuZ3RoID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCBwYXJzZUludChyZXF1aXJlZE1heExlbmd0aCwgMTApKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXF1aXJlZE1heExlbmd0aCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heExlbmd0aCwgcmVxdWlyZWRNYXhMZW5ndGgpO1xuICAgIH1cbiAgfVxuICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLmdldFZhbHVlKCk7IH1cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7IHRoaXMuc2V0VmFsdWUobmV3VmFsdWUpOyB9XG5cbiAgbm90aWZ5RWRpdGlvblBhcnRpYWwoKSB7XG4gICAgY29uc3QgaW50cmluc2ljVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgdGhpcy5fZWRpdGlvblBhcnRpYWwubmV4dCh7IGNvZGU6IHRoaXMuZmllbGRDb2RlLCBpbnRyaW5zaWNWYWxpZGF0aW9uIH0pO1xuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkZpbmlzaCgpIHtcbiAgICBsZXQgaW50cmluc2ljVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgY29uc3QgZmllbGREZWZhdWx0Rm9ybWF0ID0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzUGF0dGVybnM/Llt0aGlzLmZpZWxkVHlwZV0gPz8gbnVsbDtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZFZhbHVlICYmIChmaWVsZERlZmF1bHRGb3JtYXQgfHwgdGhpcy5maWVsZEZvcm1hdCkpIHtcbiAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSAoZmllbGREZWZhdWx0Rm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpXG4gICAgICAgICYmICh0aGlzLmZpZWxkRm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpO1xuICAgICAgaWYgKCFpbnRyaW5zaWNWYWxpZGF0aW9uKSB7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZWRpdGlvbkZpbmlzaC5uZXh0KHsgY29kZTogdGhpcy5maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBzZXRBdHRyKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNbbmFtZV0gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fZm9ybUNvbmZpZy5tb25pdG9yZWRGaWVsZEF0dHJpYnV0ZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZS5uZXh0KHsgbmFtZSwgdmFsdWUgfSk7XG4gICAgfVxuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkRldGFpbFJlcXVlc3QoKSB7XG4gICAgdGhpcy5fZGV0YWlsUmVxdWVzdC5uZXh0KHRoaXMuZmllbGRDb2RlKTtcbiAgfVxuXG4gIGdldEN1c3RvbUF0dHJpYnV0ZShuYW1lKSB7IHJldHVybiB0aGlzLmN1c3RvbUF0dHJpYnV0ZXM/LltuYW1lXSA/PyBudWxsOyB9XG5cbiAgc2V0VmlzaWJsZUxhYmVsKHZpc2libGVMYWJlbDogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci52aXNpYmxlTGFiZWwsIHZpc2libGVMYWJlbCk7IH1cbiAgc2hvd0xhYmVsKCkgeyB0aGlzLnNldFZpc2libGVMYWJlbCh0cnVlKTsgfVxuICBoaWRlTGFiZWwoKSB7IHRoaXMuc2V0VmlzaWJsZUxhYmVsKGZhbHNlKTsgfVxuXG4gIHNldENoYW5nZWQoaGFzQ2hhbmdlZDogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci5oYXNDaGFuZ2VkLCBoYXNDaGFuZ2VkKTsgfVxuICBjaGFuZ2VkKCkgeyB0aGlzLnNldENoYW5nZWQodHJ1ZSk7IH1cblxuICBnZXRSYXdWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7IH1cbiAgc2V0TGFiZWwobGFiZWwpIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIudGl0bGUsIGxhYmVsKTsgfVxuICBjbGVhbigpIHsgdGhpcy5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSB8fCAnJyk7IH1cbiAgZ2V0IGJhY2tlbmQoKSB7IHJldHVybiB0aGlzLnZhbGlkYXRlT25TZXJ2ZXI7IH1cblxuICBzZXRFZGl0YWJsZShlZGl0YWJsZTogYm9vbGVhbiA9IHRydWUpIHsgKGVkaXRhYmxlKSA/IHRoaXMuZW5hYmxlKCkgOiB0aGlzLmRpc2FibGUoKTsgfVxuXG4gIGhhc0Vycm9yKCkgeyByZXR1cm4gdGhpcy5lcnJvckNvZGUgIT09IE5PX0VSUk9SOyB9XG4gIHJlc2V0RXJyb3IoKSB7ICh0aGlzLmVycm9yQ29kZSAhPT0gTk9fRVJST1IpICYmIHRoaXMuc2V0RXJyb3IoTk9fRVJST1IsIG51bGwpOyB9XG4gIHNldEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSBERUZBVUxUX0VSUk9SX1RZUEUpIHtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvckNvZGUsIGNvZGUgPz8gTk9fRVJST1IpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yVHlwZSwgKHRoaXMuZXJyb3JDb2RlID09PSBOT19FUlJPUikgPyAnJyA6IHR5cGUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yTWVzc2FnZSwgbWVzc2FnZSA/PyAnJyk7XG4gIH1cblxuICBnZXRFcnJvcigpIHsgcmV0dXJuIHsgdHlwZTogdGhpcy5lcnJvclR5cGUsIGNvZGU6IHRoaXMuZXJyb3JDb2RlLCBtZXNzYWdlOiB0aGlzLmVycm9yTWVzc2FnZSB9OyB9XG4gIGdldCBlcnJvcigpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKTsgfVxuICBzZXQgZXJyb3IoZXJyb3JPYmopIHsgdGhpcy5zZXRFcnJvcihlcnJvck9iai5jb2RlLCBlcnJvck9iai5tZXNzYWdlLCBlcnJvck9iai50eXBlID8/IERFRkFVTFRfRVJST1JfVFlQRSkgfVxuXG4gIGdldEVycm9yQ29kZSgpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKS5jb2RlOyB9XG4gIHNldEVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5lcnJvck1lc3NhZ2UpOyB9XG4gIGdldEVycm9yTWVzc2FnZSgpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKS5tZXNzYWdlOyB9XG4gIHNldEVycm9yTWVzc2FnZShtc2cpIHsgdGhpcy5zZXRFcnJvcih0aGlzLmVycm9yQ29kZSwgbXNnKTsgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgZmllbGRDdXJyZW50VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgaWYgKGZpZWxkQ3VycmVudFZhbHVlID09PSB1bmRlZmluZWQgfHwgZmllbGRDdXJyZW50VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoKHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYXJyYXkgfHwgdGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5waG9uZSlcbiAgICAgICYmIEFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpICYmIGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICByZXR1cm4gZmllbGRDdXJyZW50VmFsdWUgPT09ICcnO1xuICB9XG5cbiAgZ2V0VmFsdWUoKSB7XG4gICAgc3dpdGNoICh0aGlzLmZpZWxkVHlwZSkge1xuICAgICAgY2FzZSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYm9vbGVhbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWUgPz8gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY2hlY2s6XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlID8/IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmN1cnJlbmN5OlxuICAgICAgICByZXR1cm4gKHR5cGVvZiB0aGlzLl9maWVsZFZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgICAgICA/IHRoaXMuX2ZpZWxkVmFsdWUucmVwbGFjZSgnLCcsICcnKSA6IHRoaXMuX2ZpZWxkVmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZyb21TZXJ2ZXIoZmxkKSB7XG4gICAgY29uc3QgZmllbGRLZXlzID0gT2JqZWN0LmtleXMoZmxkKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgYXR0ck5hbWUgPSBmaWVsZEtleXNbaW5kZXhdO1xuICAgICAgY29uc3QgYXR0clZhbHVlID0gZmxkW2F0dHJOYW1lXTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnZpc2libGUpICYmIHRoaXMuc2V0VmlzaWJpbGl0eShhdHRyVmFsdWUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMubGFiZWxWaXNpYmxlKSAmJiB0aGlzLnNldFZpc2libGVMYWJlbChmbGQudmlzaWJsZUxhYmVsKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnJlcXVpcmVkKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5yZXF1aXJlZCwgZmxkLnJlcXVpcmVkID8/IGZhbHNlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLmVycm9yQ29kZSkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZXJyb3JDb2RlLCBmbGQuZXJyb3JDb2RlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLmVycm9yTWVzc2FnZSkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZXJyb3JNZXNzYWdlLCBmbGQuZXJyb3JNZXNzYWdlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnRvb2x0aXApICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLnRvb2x0aXBUZXh0LCBmbGQudG9vbHRpcCk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5pbmZvKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5pbmZvLCBmbGQuaW5mbyk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5lZGl0YWJsZSkgJiYgdGhpcy5zZXRFZGl0YWJsZShmbGQuZWRpdGFibGUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMudGl0bGUpICYmIHRoaXMuc2V0TGFiZWwoZmxkLmZpZWxkVGl0bGUudG9TdHJpbmcoKSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy52YWx1ZSkgJiYgKHRoaXMuc2V0VmFsdWUoZmxkLmZpZWxkVmFsdWUpICYmIHRoaXMuc2V0Q2hhbmdlZChmYWxzZSkpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMub3B0aW9ucykgJiYgdGhpcy5zZXRGaWVsZE9wdGlvbnMoZmxkLmZpZWxkT3B0aW9ucyk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5jYXB0dXJlVHlwZSkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuY2FwdHVyZVR5cGUsIGZsZC5jYXB0dXJlVHlwZSB8fCAnSU5QVVQnKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnR5cGUpICYmIHRoaXMuc2V0RmllbGRUeXBlKGZsZC5maWVsZFR5cGVDb2RlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLm1heExlbmd0aCkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCBmbGQubWF4TGVuZ3RoKTtcbiAgICB9XG4gIH1cblxuICBzZXRGaWVsZFR5cGUoaW5wdXRGaWVsZFR5cGUpIHtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci50eXBlLCBpbnB1dEZpZWxkVHlwZSk7XG4gIH1cblxuICBmb3JtYXQoKSB7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY3VycmVuY3kpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbHVlLCBmb3JtYXRDdXJyZW5jeSh0aGlzLl9maWVsZFZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TWluVmFsdWUobWluVmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlXG4gICAgICAmJiB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1pblZhbHVlLCBtaW5WYWx1ZSk7XG4gICAgICBpZiAoIW1pblZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNaW5WYWx1ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtaW5EYXRlID0gbmV3IERhdGUobWluVmFsdWUpO1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUobWluRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0TWF4VmFsdWUobWF4VmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlXG4gICAgICAmJiB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heFZhbHVlLCBtYXhWYWx1ZSk7XG4gICAgICBpZiAoIW1heFZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNYXhWYWx1ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXhEYXRlID0gbmV3IERhdGUobWF4VmFsdWUpO1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUobWF4RGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0RmllbGRPcHRpb25zKCkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZmllbGRPcHRpb25zKSk7XG4gIH1cblxuICBzZXRGaWVsZE9wdGlvbnMobmV3T3B0aW9ucykge1xuICAgIGlmICgodGhpcy5jYXB0dXJlVHlwZSAhPT0gJ0xJU1QnICYmIHRoaXMuY2FwdHVyZVR5cGUgIT09ICdSQURJTycpXG4gICAgICB8fCB0eXBlb2YgbmV3T3B0aW9ucyA9PT0gVU5ERUZJTkVEIHx8ICFuZXdPcHRpb25zXG4gICAgICB8fCAhQXJyYXkuaXNBcnJheShuZXdPcHRpb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAob3B0aW9uID0+IHtcbiAgICAgIGlmIChvcHRpb24udGV4dCAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi50ZXh0ICE9PSBudWxsXG4gICAgICAgICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyBmaWVsZE9wdGlvblZhbHVlOiBvcHRpb24udGV4dCwgZmllbGRPcHRpb25JZDogb3B0aW9uLnZhbHVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyAuLi5vcHRpb24gfTtcbiAgICB9KTtcbiAgICBmaWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIub3B0aW9ucywgZmllbGRPcHRpb25zKTtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSAmJiB0aGlzLndpZGdldCkge1xuICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0Py5yZWZlcmVzaENvbnRlbnQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZpZWxkVmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5ICYmIEFycmF5LmlzQXJyYXkodGhpcy5fZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuX2ZpZWxkVmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5maWVsZE9wdGlvbnMuZmluZChvcHQgPT4gb3B0LmZpZWxkT3B0aW9uSWQgPT09IGl0ZW0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbHVlLCBmaWVsZFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuZmllbGRPcHRpb25zXG4gICAgICAgICAgLmZpbmQoaXRlbSA9PiBpdGVtLmZpZWxkT3B0aW9uSWQgPT09IHRoaXMuX2ZpZWxkVmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkUmVxdWlyZWQgJiYgdGhpcy5maWVsZE9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZmllbGRPcHRpb25zWzBdLmZpZWxkT3B0aW9uSWQpO1xuICAgICAgaWYgKHRoaXMud2lkZ2V0Py5vbkNoYW5nZUNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy53aWRnZXQ/Lm9uQ2hhbmdlQ29udGVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFZhbHVlKG5ld1ZhbHVlLCB3aWRnZXRVcGRhdGUgPSB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gVU5ERUZJTkVEIHx8IG5ld1ZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IG5ld0ZpbmFsVmFsdWU7XG4gICAgc3dpdGNoICh0aGlzLmZpZWxkVHlwZSkge1xuICAgICAgY2FzZSAnQk9PTEVBTic6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW46XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gISFuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheTpcbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBudWxsIHx8IG5ld1ZhbHVlID09PSAnJykge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBbXTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIChuZXdWYWx1ZSkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLm1hcDpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICBpZiAobmV3RmluYWxWYWx1ZSAmJiB0aGlzLndpZGdldCAmJiB3aWRnZXRVcGRhdGUpIHtcbiAgICAgICAgICBjb25zdCBsYXRpdHVkZSA9IHBhcnNlRmxvYXQobmV3RmluYWxWYWx1ZVswXSk7XG4gICAgICAgICAgY29uc3QgbG9uZ2l0dWRlID0gcGFyc2VGbG9hdChuZXdGaW5hbFZhbHVlWzFdKTtcbiAgICAgICAgICB0aGlzLndpZGdldD8uc2V0TG9jYXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jdXJyZW5jeTpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IGZvcm1hdEN1cnJlbmN5KG5ld1ZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRWYWx1ZSAhPT0gbmV3RmluYWxWYWx1ZSkge1xuICAgICAgdGhpcy5zZXRDaGFuZ2VkKHRydWUpO1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudmFsdWUsIG5ld0ZpbmFsVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUU5QixNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztBQUNuQyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztBQUNyQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztBQUVqQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBRTNCLE1BQU0sT0FBTyxHQUFHO0lBQ2QsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLEtBQUssRUFBRSxhQUFhO0lBQ3BCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFlBQVksRUFBRSxlQUFlO0lBQzdCLHFCQUFxQixFQUFFLHdCQUF3QjtJQUMvQyxJQUFJLEVBQUUsV0FBVztJQUNqQixJQUFJLEVBQUUsV0FBVztJQUNqQixZQUFZLEVBQUUsY0FBYztJQUM1QixlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLFlBQVksRUFBRSxjQUFjO0lBQzVCLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLEtBQUssRUFBRSxZQUFZO0lBQ25CLElBQUksRUFBRSxXQUFXO0lBQ2pC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O29CQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTTtZQUNSO2dCQUNFLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLE1BQU07U0FDVDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxhQUFhLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcywgTk9fRVJST1IgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IERFRkFVTFRfRVJST1JfVFlQRSA9ICdlcnJvcic7XG5jb25zdCBERUZBVUxUX0NBUFRVUkVfVFlQRSA9ICdJTlBVVCc7XG5jb25zdCBERUZBVUxUX0FMSUdOTUVOVCA9ICdsZWZ0JztcblxuY29uc3QgU1REX01BWF9MRU5HVEggPSA1MDtcbmNvbnN0IEJJR19NQVhfTEVOR1RIID0gNTAwO1xuXG5jb25zdCBmbGRBdHRyID0ge1xuICB2YWxpZGF0ZU9uU2VydmVyOiAndmFsaWRhdGVPblNlcnZlcicsXG4gIHZhbHVlOiAnX2ZpZWxkVmFsdWUnLFxuICBtaW5WYWx1ZTogJ19taW5WYWx1ZScsXG4gIG1heFZhbHVlOiAnX21heFZhbHVlJyxcbiAgbWF4TGVuZ3RoOiAnX21heExlbmd0aCcsXG4gIG9uVmFsaWRhdGlvbjogJ19vblZhbGlkYXRpb24nLFxuICBpbnRyaW5zaWNFcnJvck1lc3NhZ2U6ICdfaW50cmluc2ljRXJyb3JNZXNzYWdlJyxcbiAgY29kZTogJ2ZpZWxkQ29kZScsXG4gIGluZm86ICdmaWVsZEluZm8nLFxuICBkZWZhdWx0VmFsdWU6ICdkZWZhdWx0VmFsdWUnLFxuICBkZWZhdWx0RWRpdGFibGU6ICdkZWZhdWx0RWRpdGFibGUnLFxuICB2aXNpYmxlTGFiZWw6ICd2aXNpYmxlTGFiZWwnLFxuICByZXF1aXJlZDogJ2ZpZWxkUmVxdWlyZWQnLFxuICBoYXNDaGFuZ2VkOiAnaGFzQ2hhbmdlZCcsXG4gIG91dHB1dE9ubHk6ICdvdXRwdXRPbmx5JyxcbiAgY2FwdHVyZVR5cGU6ICdjYXB0dXJlVHlwZScsXG4gIHRpdGxlOiAnZmllbGRUaXRsZScsXG4gIHR5cGU6ICdmaWVsZFR5cGUnLFxuICBhbGlnbm1lbnQ6ICdmaWVsZEFsaWdubWVudCcsXG4gIGZvcm1hdDogJ2ZpZWxkRm9ybWF0JyxcbiAgZXh0ZXJuYWxWYWx1ZTogJ2V4dGVybmFsVmFsdWUnLFxuICB0b29sdGlwVGV4dDogJ3Rvb2x0aXBUZXh0JyxcbiAgZXJyb3JUeXBlOiAnZXJyb3JUeXBlJyxcbiAgZXJyb3JDb2RlOiAnZXJyb3JDb2RlJyxcbiAgZXJyb3JNZXNzYWdlOiAnZXJyb3JNZXNzYWdlJyxcbiAgb3B0aW9uczogJ2ZpZWxkT3B0aW9ucycsXG59O1xuXG5leHBvcnQgY2xhc3MgRmllbGREZXNjcmlwdG9yIGV4dGVuZHMgRm9ybUVsZW1lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0aW9uRmluaXNoID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0aW9uUGFydGlhbCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGV0YWlsUmVxdWVzdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXR0cmlidXRlQ2hhbmdlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIHByaXZhdGUgdmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbjtcblxuICBfZmllbGRWYWx1ZTogYW55O1xuICBfbWluVmFsdWU6IGFueTtcbiAgX21heFZhbHVlOiBhbnk7XG4gIF9tYXhMZW5ndGg6IG51bWJlcjtcbiAgX29uVmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgX2ludHJpbnNpY0Vycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGZpZWxkQ29kZTogc3RyaW5nO1xuICBmaWVsZEluZm86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gIGRlZmF1bHRFZGl0YWJsZTogYm9vbGVhbjtcblxuICB2aXNpYmxlTGFiZWw6IGJvb2xlYW47XG4gIGZpZWxkUmVxdWlyZWQ6IGJvb2xlYW47XG4gIGhhc0NoYW5nZWQ6IGJvb2xlYW47XG4gIG91dHB1dE9ubHk6IGJvb2xlYW47XG4gIGNhcHR1cmVUeXBlOiBzdHJpbmc7XG4gIGZpZWxkVGl0bGU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG4gIGZpZWxkQWxpZ25tZW50OiBzdHJpbmc7XG4gIGZpZWxkRm9ybWF0OiBSZWdFeHA7XG4gIGV4dGVybmFsVmFsdWU6IGFueTtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcblxuICBlcnJvclR5cGU6IHN0cmluZztcbiAgZXJyb3JDb2RlOiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGZpZWxkT3B0aW9uczoge1xuICAgIGZpZWxkT3B0aW9uVmFsdWU6IHN0cmluZztcbiAgICBmaWVsZE9wdGlvbklkOiBzdHJpbmc7XG4gIH1bXTtcblxuICBjb25zdHJ1Y3RvcihpbnB1dEZpZWxkUmVjZWl2ZWQsIGZvcm1Db25maWcpIHtcbiAgICBzdXBlcihpbnB1dEZpZWxkUmVjZWl2ZWQsIGZvcm1Db25maWcpO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMuZmllbGQ7XG4gICAgY29uc3QgZmxkID0gKGlucHV0RmllbGRSZWNlaXZlZCkgPyBpbnB1dEZpZWxkUmVjZWl2ZWQgOiB7fTtcblxuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmNvZGUsIGZsZC5maWVsZENvZGUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnRpdGxlLCBmbGQuZmllbGRUaXRsZSA/PyB0aGlzLmZpZWxkQ29kZSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuY2FwdHVyZVR5cGUsIGZsZC5jYXB0dXJlVHlwZSA/PyBERUZBVUxUX0NBUFRVUkVfVFlQRSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZGVmYXVsdFZhbHVlLCBmbGQuZGVmYXVsdFZhbHVlID8/IG51bGwpO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV0gIT0gbnVsbClcbiAgICAgID8gdGhpcy5fZm9ybUNvbmZpZy50YWJsZUZpZWxkU3R5bGVzW3RoaXMuZmllbGRUeXBlXVsndGV4dC1hbGlnbiddIDogREVGQVVMVF9BTElHTk1FTlQ7XG4gICAgY29uc3QgZmllbGRBbGlnbm1lbnQgPSAoZmxkLmFsaWdubWVudCAhPSBudWxsKSA/IGZsZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmFsaWdubWVudCwgZmllbGRBbGlnbm1lbnQpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmluZm8sIGZsZC5pbmZvIHx8ICcnKTtcbiAgICBsZXQgZmllbGRGb3JtYXQ7XG4gICAgdHJ5IHtcbiAgICAgIGZpZWxkRm9ybWF0ID0gKGZsZC5mb3JtYXQpID8gbmV3IFJlZ0V4cChmbGQuZm9ybWF0KSA6IG51bGw7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZmllbGRGb3JtYXQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5mb3JtYXQsIGZpZWxkRm9ybWF0KTtcblxuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbGlkYXRlT25TZXJ2ZXIsIGZsZC5zZXJ2ZXJBY3Rpb24gPz8gZmFsc2UpO1xuXG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudG9vbHRpcFRleHQsIGZsZC50b29sdGlwIHx8ICcnKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5kZWZhdWx0RWRpdGFibGUsIHRoaXMuZW5hYmxlZCk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIucmVxdWlyZWQsIGZsZC5yZXF1aXJlZCA/PyBmYWxzZSk7XG4gICAgdGhpcy5zZXRFcnJvcihmbGQuZXJyb3JDb2RlLCBmbGQuZXJyb3JNZXNzYWdlLCBmbGQuZXJyb3JUeXBlID8/IERFRkFVTFRfRVJST1JfVFlQRSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIub3V0cHV0T25seSwgZmxkLm91dHB1dE9ubHkgPz8gZmFsc2UpO1xuICAgIGNvbnN0IG1heExlbmd0aCA9IGZsZC5tYXhMZW5ndGggPz8gKHRoaXMuY2FwdHVyZVR5cGUgPT09ICdURVhUQVJFQScgPyBCSUdfTUFYX0xFTkdUSCA6IFNURF9NQVhfTEVOR1RIKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5tYXhMZW5ndGgsIG1heExlbmd0aCk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuaW50cmluc2ljRXJyb3JNZXNzYWdlLCB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZUVyck1zZ1t0aGlzLmZpZWxkVHlwZV0gPz8gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVFcnJNc2cuREVGQVVMVCk7XG5cbiAgICB0aGlzLnNldEZpZWxkVHlwZShmbGQuZmllbGRUeXBlQ29kZSk7XG4gICAgdGhpcy5zZXRFZGl0YWJsZShmbGQuZWRpdGFibGUgPz8gdHJ1ZSk7XG4gICAgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmxkLnZpc2libGVMYWJlbCA/PyB0cnVlKTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkoZmxkLnZpc2libGUpO1xuICAgIHRoaXMuc2V0RmllbGRPcHRpb25zKGZsZC5maWVsZE9wdGlvbnMpO1xuICAgIHRoaXMuc2V0VmFsdWUoZmxkLmZpZWxkVmFsdWUgfHwgdGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLmZpZWxkQ29kZTsgfVxuICBnZXQgZWRpdGlvbkZpbmlzaCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25GaW5pc2g7IH1cbiAgZ2V0IGF0dHJpYnV0ZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZTsgfVxuXG4gIGdldCBlZGl0aW9uUGFydGlhbCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25QYXJ0aWFsOyB9XG4gIGdldCBkZXRhaWxSZXF1ZXN0KCkgeyByZXR1cm4gdGhpcy5fZGV0YWlsUmVxdWVzdDsgfVxuICBnZXQgaW5mbygpIHsgcmV0dXJuIHRoaXMuZmllbGRJbmZvOyB9XG5cbiAgZ2V0IHZhbGlkYXRpbmcoKSB7IHJldHVybiB0aGlzLl9vblZhbGlkYXRpb247IH1cbiAgc2V0IHZhbGlkYXRpbmcoaXNWYWxpZGF0aW5nOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLm9uVmFsaWRhdGlvbiwgaXNWYWxpZGF0aW5nKTsgfVxuXG4gIHNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIuaW50cmluc2ljRXJyb3JNZXNzYWdlLCBtZXNzYWdlKTsgfVxuICBzZXQgaW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykgeyB0aGlzLnNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlKTsgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkgeyByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOyB9XG5cbiAgZ2V0UmVxdWlyZWQoKSB7IHJldHVybiB0aGlzLnJlcXVpcmVkOyB9XG4gIHNldFJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZDsgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZmllbGRSZXF1aXJlZDsgfVxuICBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIucmVxdWlyZWQsIHJlcXVpcmVkID8/IGZhbHNlKTsgfVxuICBnZXQgbWF4TGVuZ3RoKCkgeyByZXR1cm4gKHRoaXMuX21heExlbmd0aCA+IDApID8gdGhpcy5fbWF4TGVuZ3RoLnRvU3RyaW5nKCkgOiAnJzsgfVxuICBzZXQgbWF4TGVuZ3RoKHJlcXVpcmVkTWF4TGVuZ3RoOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHJlcXVpcmVkTWF4TGVuZ3RoID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCBwYXJzZUludChyZXF1aXJlZE1heExlbmd0aCwgMTApKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXF1aXJlZE1heExlbmd0aCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heExlbmd0aCwgcmVxdWlyZWRNYXhMZW5ndGgpO1xuICAgIH1cbiAgfVxuICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLmdldFZhbHVlKCk7IH1cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7IHRoaXMuc2V0VmFsdWUobmV3VmFsdWUpOyB9XG5cbiAgbm90aWZ5RWRpdGlvblBhcnRpYWwoKSB7XG4gICAgY29uc3QgaW50cmluc2ljVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgdGhpcy5fZWRpdGlvblBhcnRpYWwubmV4dCh7IGNvZGU6IHRoaXMuZmllbGRDb2RlLCBpbnRyaW5zaWNWYWxpZGF0aW9uIH0pO1xuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkZpbmlzaCgpIHtcbiAgICBsZXQgaW50cmluc2ljVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgY29uc3QgZmllbGREZWZhdWx0Rm9ybWF0ID0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzUGF0dGVybnM/Llt0aGlzLmZpZWxkVHlwZV0gPz8gbnVsbDtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZFZhbHVlICYmIChmaWVsZERlZmF1bHRGb3JtYXQgfHwgdGhpcy5maWVsZEZvcm1hdCkpIHtcbiAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSAoZmllbGREZWZhdWx0Rm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpXG4gICAgICAgICYmICh0aGlzLmZpZWxkRm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpO1xuICAgICAgaWYgKCFpbnRyaW5zaWNWYWxpZGF0aW9uKSB7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZWRpdGlvbkZpbmlzaC5uZXh0KHsgY29kZTogdGhpcy5maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBzZXRBdHRyKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNbbmFtZV0gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fZm9ybUNvbmZpZy5tb25pdG9yZWRGaWVsZEF0dHJpYnV0ZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZS5uZXh0KHsgbmFtZSwgdmFsdWUgfSk7XG4gICAgfVxuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkRldGFpbFJlcXVlc3QoKSB7XG4gICAgdGhpcy5fZGV0YWlsUmVxdWVzdC5uZXh0KHRoaXMuZmllbGRDb2RlKTtcbiAgfVxuXG5cblxuICBzZXRWaXNpYmxlTGFiZWwodmlzaWJsZUxhYmVsOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLnZpc2libGVMYWJlbCwgdmlzaWJsZUxhYmVsKTsgfVxuICBzaG93TGFiZWwoKSB7IHRoaXMuc2V0VmlzaWJsZUxhYmVsKHRydWUpOyB9XG4gIGhpZGVMYWJlbCgpIHsgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmFsc2UpOyB9XG5cbiAgc2V0Q2hhbmdlZChoYXNDaGFuZ2VkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLmhhc0NoYW5nZWQsIGhhc0NoYW5nZWQpOyB9XG4gIGNoYW5nZWQoKSB7IHRoaXMuc2V0Q2hhbmdlZCh0cnVlKTsgfVxuXG4gIGdldFJhd1ZhbHVlKCkgeyByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTsgfVxuICBzZXRMYWJlbChsYWJlbCkgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci50aXRsZSwgbGFiZWwpOyB9XG4gIGNsZWFuKCkgeyB0aGlzLnNldFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlIHx8ICcnKTsgdGhpcy5yZXNldEVycm9yKCk7IH1cbiAgZ2V0IGJhY2tlbmQoKSB7IHJldHVybiB0aGlzLnZhbGlkYXRlT25TZXJ2ZXI7IH1cblxuICBzZXRFZGl0YWJsZShlZGl0YWJsZTogYm9vbGVhbiA9IHRydWUpIHsgKGVkaXRhYmxlKSA/IHRoaXMuZW5hYmxlKCkgOiB0aGlzLmRpc2FibGUoKTsgfVxuXG4gIGhhc0Vycm9yKCkgeyByZXR1cm4gdGhpcy5lcnJvckNvZGUgIT09IE5PX0VSUk9SOyB9XG4gIHJlc2V0RXJyb3IoKSB7ICh0aGlzLmVycm9yQ29kZSAhPT0gTk9fRVJST1IpICYmIHRoaXMuc2V0RXJyb3IoTk9fRVJST1IsIG51bGwpOyB9XG4gIHNldEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSBERUZBVUxUX0VSUk9SX1RZUEUpIHtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvckNvZGUsIGNvZGUgPz8gTk9fRVJST1IpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yVHlwZSwgKHRoaXMuZXJyb3JDb2RlID09PSBOT19FUlJPUikgPyAnJyA6IHR5cGUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yTWVzc2FnZSwgbWVzc2FnZSA/PyAnJyk7XG4gIH1cblxuICBnZXRFcnJvcigpIHsgcmV0dXJuIHsgdHlwZTogdGhpcy5lcnJvclR5cGUsIGNvZGU6IHRoaXMuZXJyb3JDb2RlLCBtZXNzYWdlOiB0aGlzLmVycm9yTWVzc2FnZSB9OyB9XG4gIGdldCBlcnJvcigpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKTsgfVxuICBzZXQgZXJyb3IoZXJyb3JPYmopIHsgdGhpcy5zZXRFcnJvcihlcnJvck9iai5jb2RlLCBlcnJvck9iai5tZXNzYWdlLCBlcnJvck9iai50eXBlID8/IERFRkFVTFRfRVJST1JfVFlQRSkgfVxuXG4gIGdldEVycm9yQ29kZSgpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKS5jb2RlOyB9XG4gIHNldEVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5lcnJvck1lc3NhZ2UpOyB9XG4gIGdldEVycm9yTWVzc2FnZSgpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKS5tZXNzYWdlOyB9XG4gIHNldEVycm9yTWVzc2FnZShtc2cpIHsgdGhpcy5zZXRFcnJvcih0aGlzLmVycm9yQ29kZSwgbXNnKTsgfVxuXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuaXNFbXB0eSgpOyB9XG5cbiAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaWVsZEN1cnJlbnRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBpZiAoZmllbGRDdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICgodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSB8fCB0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLnBob25lKVxuICAgICAgJiYgQXJyYXkuaXNBcnJheShmaWVsZEN1cnJlbnRWYWx1ZSkgJiYgZmllbGRDdXJyZW50VmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIHJldHVybiBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gJyc7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBhbnkge1xuICAgIHN3aXRjaCAodGhpcy5maWVsZFR5cGUpIHtcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW46XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlID8/IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrOlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZSA/PyBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jdXJyZW5jeTpcbiAgICAgICAgcmV0dXJuICh0eXBlb2YgdGhpcy5fZmllbGRWYWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgPyB0aGlzLl9maWVsZFZhbHVlLnJlcGxhY2UoJywnLCAnJykgOiB0aGlzLl9maWVsZFZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB1cGRhdGVGcm9tU2VydmVyKGZsZCkge1xuICAgIGNvbnN0IGZpZWxkS2V5cyA9IE9iamVjdC5rZXlzKGZsZCk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZpZWxkS2V5cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGF0dHJOYW1lID0gZmllbGRLZXlzW2luZGV4XTtcbiAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IGZsZFthdHRyTmFtZV07XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy52aXNpYmxlKSAmJiB0aGlzLnNldFZpc2liaWxpdHkoYXR0clZhbHVlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLmxhYmVsVmlzaWJsZSkgJiYgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmxkLnZpc2libGVMYWJlbCk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5yZXF1aXJlZCkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIucmVxdWlyZWQsIGZsZC5yZXF1aXJlZCA/PyBmYWxzZSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5lcnJvckNvZGUpICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yQ29kZSwgZmxkLmVycm9yQ29kZSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5lcnJvck1lc3NhZ2UpICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLmVycm9yTWVzc2FnZSwgZmxkLmVycm9yTWVzc2FnZSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy50b29sdGlwKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci50b29sdGlwVGV4dCwgZmxkLnRvb2x0aXApO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMuaW5mbykgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuaW5mbywgZmxkLmluZm8pO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMuZWRpdGFibGUpICYmIHRoaXMuc2V0RWRpdGFibGUoZmxkLmVkaXRhYmxlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLnRpdGxlKSAmJiB0aGlzLnNldExhYmVsKGZsZC5maWVsZFRpdGxlLnRvU3RyaW5nKCkpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMudmFsdWUpICYmICh0aGlzLnNldFZhbHVlKGZsZC5maWVsZFZhbHVlKSAmJiB0aGlzLnNldENoYW5nZWQoZmFsc2UpKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlGaWVsZEF0dHJzLm9wdGlvbnMpICYmIHRoaXMuc2V0RmllbGRPcHRpb25zKGZsZC5maWVsZE9wdGlvbnMpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaUZpZWxkQXR0cnMuY2FwdHVyZVR5cGUpICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLmNhcHR1cmVUeXBlLCBmbGQuY2FwdHVyZVR5cGUgfHwgJ0lOUFVUJyk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy50eXBlKSAmJiB0aGlzLnNldEZpZWxkVHlwZShmbGQuZmllbGRUeXBlQ29kZSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpRmllbGRBdHRycy5tYXhMZW5ndGgpICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heExlbmd0aCwgZmxkLm1heExlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RmllbGRUeXBlKGlucHV0RmllbGRUeXBlKSB7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudHlwZSwgaW5wdXRGaWVsZFR5cGUpO1xuICB9XG5cbiAgc2V0TWluVmFsdWUobWluVmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlXG4gICAgICAmJiB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1pblZhbHVlLCBtaW5WYWx1ZSk7XG4gICAgICBpZiAoIW1pblZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNaW5WYWx1ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtaW5EYXRlID0gbmV3IERhdGUobWluVmFsdWUpO1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUobWluRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0TWF4VmFsdWUobWF4VmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlXG4gICAgICAmJiB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heFZhbHVlLCBtYXhWYWx1ZSk7XG4gICAgICBpZiAoIW1heFZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNYXhWYWx1ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXhEYXRlID0gbmV3IERhdGUobWF4VmFsdWUpO1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUobWF4RGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0RmllbGRPcHRpb25zKCkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZmllbGRPcHRpb25zKSk7XG4gIH1cblxuICBzZXRGaWVsZE9wdGlvbnMobmV3T3B0aW9ucykge1xuICAgIGlmICgodGhpcy5jYXB0dXJlVHlwZSAhPT0gJ0xJU1QnICYmIHRoaXMuY2FwdHVyZVR5cGUgIT09ICdSQURJTycpXG4gICAgICB8fCB0eXBlb2YgbmV3T3B0aW9ucyA9PT0gVU5ERUZJTkVEIHx8ICFuZXdPcHRpb25zXG4gICAgICB8fCAhQXJyYXkuaXNBcnJheShuZXdPcHRpb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAob3B0aW9uID0+IHtcbiAgICAgIGlmIChvcHRpb24udGV4dCAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi50ZXh0ICE9PSBudWxsXG4gICAgICAgICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyBmaWVsZE9wdGlvblZhbHVlOiBvcHRpb24udGV4dCwgZmllbGRPcHRpb25JZDogb3B0aW9uLnZhbHVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyAuLi5vcHRpb24gfTtcbiAgICB9KTtcbiAgICBmaWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIub3B0aW9ucywgZmllbGRPcHRpb25zKTtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSAmJiB0aGlzLndpZGdldCkge1xuICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0Py5yZWZlcmVzaENvbnRlbnQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZpZWxkVmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5ICYmIEFycmF5LmlzQXJyYXkodGhpcy5fZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuX2ZpZWxkVmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5maWVsZE9wdGlvbnMuZmluZChvcHQgPT4gb3B0LmZpZWxkT3B0aW9uSWQgPT09IGl0ZW0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbHVlLCBmaWVsZFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuZmllbGRPcHRpb25zXG4gICAgICAgICAgLmZpbmQoaXRlbSA9PiBpdGVtLmZpZWxkT3B0aW9uSWQgPT09IHRoaXMuX2ZpZWxkVmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkUmVxdWlyZWQgJiYgdGhpcy5maWVsZE9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZmllbGRPcHRpb25zWzBdLmZpZWxkT3B0aW9uSWQpO1xuICAgICAgaWYgKHRoaXMud2lkZ2V0Py5vbkNoYW5nZUNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy53aWRnZXQ/Lm9uQ2hhbmdlQ29udGVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFZhbHVlKG5ld1ZhbHVlLCB3aWRnZXRVcGRhdGUgPSB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gVU5ERUZJTkVEIHx8IG5ld1ZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IG5ld0ZpbmFsVmFsdWU7XG4gICAgc3dpdGNoICh0aGlzLmZpZWxkVHlwZSkge1xuICAgICAgY2FzZSAnQk9PTEVBTic6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW46XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gISFuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheTpcbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBudWxsIHx8IG5ld1ZhbHVlID09PSAnJykge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBbXTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIChuZXdWYWx1ZSkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLm1hcDpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICBpZiAobmV3RmluYWxWYWx1ZSAmJiB0aGlzLndpZGdldCAmJiB3aWRnZXRVcGRhdGUpIHtcbiAgICAgICAgICBjb25zdCBsYXRpdHVkZSA9IHBhcnNlRmxvYXQobmV3RmluYWxWYWx1ZVswXSk7XG4gICAgICAgICAgY29uc3QgbG9uZ2l0dWRlID0gcGFyc2VGbG9hdChuZXdGaW5hbFZhbHVlWzFdKTtcbiAgICAgICAgICB0aGlzLndpZGdldD8uc2V0TG9jYXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRWYWx1ZSAhPT0gbmV3RmluYWxWYWx1ZSkge1xuICAgICAgdGhpcy5zZXRDaGFuZ2VkKHRydWUpO1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudmFsdWUsIG5ld0ZpbmFsVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19