tuain-ng-forms-lib 12.0.1 → 12.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/tuain-ng-forms-lib.umd.js +214 -279
- package/bundles/tuain-ng-forms-lib.umd.js.map +1 -1
- package/esm2015/lib/classes/forms/field.js +7 -6
- package/esm2015/lib/classes/forms/form.constants.js +3 -1
- package/esm2015/lib/classes/forms/form.js +2 -3
- package/esm2015/lib/components/elements/field.component.js +12 -40
- package/esm2015/lib/components/forms/basic-form.js +10 -46
- package/esm2015/lib/services/form-manager.service.js +1 -3
- package/fesm2015/tuain-ng-forms-lib.js +29 -94
- package/fesm2015/tuain-ng-forms-lib.js.map +1 -1
- package/lib/classes/forms/field.d.ts +1 -0
- package/lib/classes/forms/form.constants.d.ts +2 -0
- package/lib/components/elements/field.component.d.ts +0 -1
- package/lib/components/forms/basic-form.d.ts +1 -13
- package/lib/services/form-manager.service.d.ts +0 -2
- package/package.json +1 -1
- package/tuain-ng-forms-lib.metadata.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Subject } from 'rxjs';
|
|
2
|
-
import { elementTypes } from './form.constants';
|
|
2
|
+
import { elementTypes, NO_ERROR } from './form.constants';
|
|
3
3
|
import { FormElement } from './element';
|
|
4
4
|
import { formatCurrency } from '../utilities';
|
|
5
5
|
const UNDEFINED = 'undefined';
|
|
@@ -142,10 +142,11 @@ export class FieldDescriptor extends FormElement {
|
|
|
142
142
|
clean() { this.setValue(this.defaultValue || ''); }
|
|
143
143
|
get backend() { return this.validateOnServer; }
|
|
144
144
|
setEditable(editable = true) { (editable) ? this.enable() : this.disable(); }
|
|
145
|
-
hasError() { return this.errorCode !==
|
|
145
|
+
hasError() { return this.errorCode !== NO_ERROR; }
|
|
146
|
+
resetError() { (this.errorCode !== NO_ERROR) && this.setError(NO_ERROR, null); }
|
|
146
147
|
setError(code, message, type = DEFAULT_ERROR_TYPE) {
|
|
147
|
-
this.setAttr(fldAttr.errorCode, code !== null && code !== void 0 ? code :
|
|
148
|
-
this.setAttr(fldAttr.errorType, (this.errorCode ===
|
|
148
|
+
this.setAttr(fldAttr.errorCode, code !== null && code !== void 0 ? code : NO_ERROR);
|
|
149
|
+
this.setAttr(fldAttr.errorType, (this.errorCode === NO_ERROR) ? '' : type);
|
|
149
150
|
this.setAttr(fldAttr.errorMessage, message !== null && message !== void 0 ? message : '');
|
|
150
151
|
}
|
|
151
152
|
getError() { return { type: this.errorType, code: this.errorCode, message: this.errorMessage }; }
|
|
@@ -199,7 +200,7 @@ export class FieldDescriptor extends FormElement {
|
|
|
199
200
|
(attrName === this._formConfig.apifieldattrs.info) && this.setAttr(fldAttr.info, fld.info);
|
|
200
201
|
(attrName === this._formConfig.apifieldattrs.editable) && this.setEditable(fld.editable);
|
|
201
202
|
(attrName === this._formConfig.apifieldattrs.title) && this.setLabel(fld.fieldTitle.toString());
|
|
202
|
-
(attrName === this._formConfig.apifieldattrs.value) && (this.setValue(fld.
|
|
203
|
+
(attrName === this._formConfig.apifieldattrs.value) && (this.setValue(fld.fieldValue) && this.setChanged(false));
|
|
203
204
|
(attrName === this._formConfig.apifieldattrs.options) && this.setFieldOptions(fld.fieldOptions);
|
|
204
205
|
(attrName === this._formConfig.apifieldattrs.captureType) && this.setAttr(fldAttr.captureType, fld.captureType || 'INPUT');
|
|
205
206
|
(attrName === this._formConfig.apifieldattrs.type) && this.setFieldType(fld.fieldTypeCode);
|
|
@@ -337,4 +338,4 @@ export class FieldDescriptor extends FormElement {
|
|
|
337
338
|
return true;
|
|
338
339
|
}
|
|
339
340
|
}
|
|
340
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFFOUIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFFakMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLE9BQU8sR0FBRztJQUNkLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyxLQUFLLEVBQUUsYUFBYTtJQUNwQixRQUFRLEVBQUUsV0FBVztJQUNyQixRQUFRLEVBQUUsV0FBVztJQUNyQixTQUFTLEVBQUUsWUFBWTtJQUN2QixZQUFZLEVBQUUsZUFBZTtJQUM3QixxQkFBcUIsRUFBRSx3QkFBd0I7SUFDL0MsSUFBSSxFQUFFLFdBQVc7SUFDakIsSUFBSSxFQUFFLFdBQVc7SUFDakIsWUFBWSxFQUFFLGNBQWM7SUFDNUIsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxnQkFBZ0IsRUFBRSxrQkFBa0I7SUFDcEMsWUFBWSxFQUFFLGNBQWM7SUFDNUIsUUFBUSxFQUFFLGVBQWU7SUFDekIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsV0FBVyxF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QyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDL0MsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxXQUFXLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUMvQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRO2dCQUN2QyxhQUFhLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDakQsTUFBTTtZQUNSO2dCQUNFLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLE1BQU07U0FDVDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxhQUFhLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcyB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgZm9ybWF0Q3VycmVuY3kgfSBmcm9tICcuLi91dGlsaXRpZXMnO1xuXG5jb25zdCBVTkRFRklORUQgPSAndW5kZWZpbmVkJztcblxuY29uc3QgREVGQVVMVF9FUlJPUl9UWVBFID0gJ2Vycm9yJztcbmNvbnN0IERFRkFVTFRfQ0FQVFVSRV9UWVBFID0gJ0lOUFVUJztcbmNvbnN0IERFRkFVTFRfQUxJR05NRU5UID0gJ2xlZnQnO1xuXG5jb25zdCBTVERfTUFYX0xFTkdUSCA9IDUwO1xuY29uc3QgQklHX01BWF9MRU5HVEggPSA1MDA7XG5cbmNvbnN0IGZsZEF0dHIgPSB7XG4gIHZhbGlkYXRlT25TZXJ2ZXI6ICd2YWxpZGF0ZU9uU2VydmVyJyxcbiAgdmFsdWU6ICdfZmllbGRWYWx1ZScsXG4gIG1pblZhbHVlOiAnX21pblZhbHVlJyxcbiAgbWF4VmFsdWU6ICdfbWF4VmFsdWUnLFxuICBtYXhMZW5ndGg6ICdfbWF4TGVuZ3RoJyxcbiAgb25WYWxpZGF0aW9uOiAnX29uVmFsaWRhdGlvbicsXG4gIGludHJpbnNpY0Vycm9yTWVzc2FnZTogJ19pbnRyaW5zaWNFcnJvck1lc3NhZ2UnLFxuICBjb2RlOiAnZmllbGRDb2RlJyxcbiAgaW5mbzogJ2ZpZWxkSW5mbycsXG4gIGRlZmF1bHRWYWx1ZTogJ2RlZmF1bHRWYWx1ZScsXG4gIGRlZmF1bHRFZGl0YWJsZTogJ2RlZmF1bHRFZGl0YWJsZScsXG4gIGN1c3RvbUF0dHJpYnV0ZXM6ICdjdXN0b21BdHRyaWJ1dGVzJyxcbiAgdmlzaWJsZUxhYmVsOiAndmlzaWJsZUxhYmVsJyxcbiAgcmVxdWlyZWQ6ICdmaWVsZFJlcXVpcmVkJyxcbiAgaGFzQ2hhbmdlZDogJ2hhc0NoYW5nZWQnLFxuICBvdXRwdXRPbmx5OiAnb3V0cHV0T25seScsXG4gIGNhcHR1cmVUeXBlOiAnY2FwdHVyZVR5cGUnLFxuICB0aXRsZTogJ2ZpZWxkVGl0bGUnLFxuICB0eXBlOiAnZmllbGRUeXBlJyxcbiAgYWxpZ25tZW50OiAnZmllbGRBbGlnbm1lbnQnLFxuICBmb3JtYXQ6ICdmaWVsZEZvcm1hdCcsXG4gIGV4dGVybmFsVmFsdWU6ICdleHRlcm5hbFZhbHVlJyxcbiAgdG9vbHRpcFRleHQ6ICd0b29sdGlwVGV4dCcsXG4gIGVycm9yVHlwZTogJ2Vycm9yVHlwZScsXG4gIGVycm9yQ29kZTogJ2Vycm9yQ29kZScsXG4gIGVycm9yTWVzc2FnZTogJ2Vycm9yTWVzc2FnZScsXG4gIG9wdGlvbnM6ICdmaWVsZE9wdGlvbnMnLFxufTtcblxuZXhwb3J0IGNsYXNzIEZpZWxkRGVzY3JpcHRvciBleHRlbmRzIEZvcm1FbGVtZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGlvbkZpbmlzaCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGlvblBhcnRpYWwgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RldGFpbFJlcXVlc3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F0dHJpYnV0ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICBwcml2YXRlIHZhbGlkYXRlT25TZXJ2ZXI6IGJvb2xlYW47XG5cbiAgX2ZpZWxkVmFsdWU6IGFueTtcbiAgX21pblZhbHVlOiBhbnk7XG4gIF9tYXhWYWx1ZTogYW55O1xuICBfbWF4TGVuZ3RoOiBudW1iZXI7XG4gIF9vblZhbGlkYXRpb246IGJvb2xlYW47XG4gIF9pbnRyaW5zaWNFcnJvck1lc3NhZ2U6IHN0cmluZztcblxuICBmaWVsZENvZGU6IHN0cmluZztcbiAgZmllbGRJbmZvOiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICBkZWZhdWx0RWRpdGFibGU6IGJvb2xlYW47XG4gIGN1c3RvbUF0dHJpYnV0ZXM6IGFueTtcblxuICB2aXNpYmxlTGFiZWw6IGJvb2xlYW47XG4gIGZpZWxkUmVxdWlyZWQ6IGJvb2xlYW47XG4gIGhhc0NoYW5nZWQ6IGJvb2xlYW47XG4gIG91dHB1dE9ubHk6IGJvb2xlYW47XG4gIGNhcHR1cmVUeXBlOiBzdHJpbmc7XG4gIGZpZWxkVGl0bGU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG4gIGZpZWxkQWxpZ25tZW50OiBzdHJpbmc7XG4gIGZpZWxkRm9ybWF0OiBSZWdFeHA7XG4gIGV4dGVybmFsVmFsdWU6IGFueTtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcblxuICBlcnJvclR5cGU6IHN0cmluZztcbiAgZXJyb3JDb2RlOiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGZpZWxkT3B0aW9uczoge1xuICAgIGZpZWxkT3B0aW9uVmFsdWU6IHN0cmluZztcbiAgICBmaWVsZE9wdGlvbklkOiBzdHJpbmc7XG4gIH1bXTtcblxuICBjb25zdHJ1Y3RvcihpbnB1dEZpZWxkUmVjZWl2ZWQsIGZvcm1Db25maWcpIHtcbiAgICBzdXBlcihpbnB1dEZpZWxkUmVjZWl2ZWQsIGZvcm1Db25maWcpO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMuZmllbGQ7XG4gICAgY29uc3QgZmxkID0gKGlucHV0RmllbGRSZWNlaXZlZCkgPyBpbnB1dEZpZWxkUmVjZWl2ZWQgOiB7fTtcblxuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmNvZGUsIGZsZC5maWVsZENvZGUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnRpdGxlLCBmbGQuZmllbGRUaXRsZSA/PyB0aGlzLmZpZWxkQ29kZSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuY2FwdHVyZVR5cGUsIGZsZC5jYXB0dXJlVHlwZSA/PyBERUZBVUxUX0NBUFRVUkVfVFlQRSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZGVmYXVsdFZhbHVlLCBmbGQuZGVmYXVsdFZhbHVlID8/IG51bGwpO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV0gIT0gbnVsbClcbiAgICAgID8gdGhpcy5fZm9ybUNvbmZpZy50YWJsZUZpZWxkU3R5bGVzW3RoaXMuZmllbGRUeXBlXVsndGV4dC1hbGlnbiddIDogREVGQVVMVF9BTElHTk1FTlQ7XG4gICAgY29uc3QgZmllbGRBbGlnbm1lbnQgPSAoZmxkLmFsaWdubWVudCAhPSBudWxsKSA/IGZsZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmFsaWdubWVudCwgZmllbGRBbGlnbm1lbnQpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmluZm8sIGZsZC5pbmZvIHx8ICcnKTtcbiAgICBsZXQgZmllbGRGb3JtYXQ7XG4gICAgdHJ5IHtcbiAgICAgIGZpZWxkRm9ybWF0ID0gKGZsZC5mb3JtYXQpID8gbmV3IFJlZ0V4cChmbGQuZm9ybWF0KSA6IG51bGw7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZmllbGRGb3JtYXQgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5mb3JtYXQsIGZpZWxkRm9ybWF0KTtcblxuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbGlkYXRlT25TZXJ2ZXIsIGZsZC5zZXJ2ZXJBY3Rpb24gPz8gZmFsc2UpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmN1c3RvbUF0dHJpYnV0ZXMsIGZsZC5jdXN0b21BdHRyaWJ1dGVzID8/IHt9KTtcblxuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnRvb2x0aXBUZXh0LCBmbGQudG9vbHRpcCB8fCAnJyk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZGVmYXVsdEVkaXRhYmxlLCB0aGlzLmVuYWJsZWQpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnJlcXVpcmVkLCBmbGQucmVxdWlyZWQgPz8gZmFsc2UpO1xuICAgIHRoaXMuc2V0RXJyb3IoZmxkLmVycm9yQ29kZSwgZmxkLmVycm9yTWVzc2FnZSwgZmxkLmVycm9yVHlwZSA/PyBERUZBVUxUX0VSUk9SX1RZUEUpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm91dHB1dE9ubHksIGZsZC5vdXRwdXRPbmx5ID8/IGZhbHNlKTtcbiAgICBjb25zdCBtYXhMZW5ndGggPSBmbGQubWF4TGVuZ3RoID8/ICh0aGlzLmNhcHR1cmVUeXBlID09PSAnVEVYVEFSRUEnID8gQklHX01BWF9MRU5HVEggOiBTVERfTUFYX0xFTkdUSCk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCBtYXhMZW5ndGgpO1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmludHJpbnNpY0Vycm9yTWVzc2FnZSwgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVFcnJNc2dbdGhpcy5maWVsZFR5cGVdID8/IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlRXJyTXNnLkRFRkFVTFQpO1xuXG4gICAgdGhpcy5zZXRGaWVsZFR5cGUoZmxkLmZpZWxkVHlwZUNvZGUpO1xuICAgIHRoaXMuc2V0RWRpdGFibGUoZmxkLmVkaXRhYmxlID8/IHRydWUpO1xuICAgIHRoaXMuc2V0VmlzaWJsZUxhYmVsKGZsZC52aXNpYmxlTGFiZWwgPz8gdHJ1ZSk7XG4gICAgdGhpcy5zZXRWaXNpYmlsaXR5KGZsZC52aXNpYmxlKTtcbiAgICB0aGlzLnNldEZpZWxkT3B0aW9ucyhmbGQuZmllbGRPcHRpb25zKTtcbiAgICB0aGlzLnNldFZhbHVlKGZsZC5maWVsZFZhbHVlIHx8IHRoaXMuZGVmYXVsdFZhbHVlIHx8ICcnKTtcbiAgfVxuXG4gIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5maWVsZENvZGU7IH1cbiAgZ2V0IGVkaXRpb25GaW5pc2goKSB7IHJldHVybiB0aGlzLl9lZGl0aW9uRmluaXNoOyB9XG4gIGdldCBhdHRyaWJ1dGVDaGFuZ2UoKSB7IHJldHVybiB0aGlzLl9hdHRyaWJ1dGVDaGFuZ2U7IH1cblxuICBnZXQgZWRpdGlvblBhcnRpYWwoKSB7IHJldHVybiB0aGlzLl9lZGl0aW9uUGFydGlhbDsgfVxuICBnZXQgZGV0YWlsUmVxdWVzdCgpIHsgcmV0dXJuIHRoaXMuX2RldGFpbFJlcXVlc3Q7IH1cblxuICBnZXQgdmFsaWRhdGluZygpIHsgcmV0dXJuIHRoaXMuX29uVmFsaWRhdGlvbjsgfVxuICBzZXQgdmFsaWRhdGluZyhpc1ZhbGlkYXRpbmc6IGJvb2xlYW4pIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIub25WYWxpZGF0aW9uLCBpc1ZhbGlkYXRpbmcpOyB9XG5cbiAgc2V0SW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci5pbnRyaW5zaWNFcnJvck1lc3NhZ2UsIG1lc3NhZ2UpOyB9XG4gIHNldCBpbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuc2V0SW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2UpOyB9XG5cbiAgZ2V0IGZpZWxkVmFsdWUoKSB7IHJldHVybiB0aGlzLmdldFZhbHVlKCk7IH1cbiAgZ2V0IHJlcXVpcmVkKCkgeyByZXR1cm4gdGhpcy5maWVsZFJlcXVpcmVkOyB9XG4gIHNldCByZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci5yZXF1aXJlZCwgcmVxdWlyZWQgPz8gZmFsc2UpOyB9XG4gIGdldCBtYXhMZW5ndGgoKSB7IHJldHVybiAodGhpcy5fbWF4TGVuZ3RoID4gMCkgPyB0aGlzLl9tYXhMZW5ndGgudG9TdHJpbmcoKSA6ICcnOyB9XG4gIHNldCBtYXhMZW5ndGgocmVxdWlyZWRNYXhMZW5ndGg6IGFueSkge1xuICAgIGlmICh0eXBlb2YgcmVxdWlyZWRNYXhMZW5ndGggPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5tYXhMZW5ndGgsIHBhcnNlSW50KHJlcXVpcmVkTWF4TGVuZ3RoLCAxMCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlcXVpcmVkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCByZXF1aXJlZE1heExlbmd0aCk7XG4gICAgfVxuICB9XG4gIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTsgfVxuICBzZXQgdmFsdWUobmV3VmFsdWUpIHsgdGhpcy5zZXRWYWx1ZShuZXdWYWx1ZSk7IH1cblxuICBub3RpZnlFZGl0aW9uUGFydGlhbCgpIHtcbiAgICBjb25zdCBpbnRyaW5zaWNWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLl9lZGl0aW9uUGFydGlhbC5uZXh0KHsgY29kZTogdGhpcy5maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBub3RpZnlFZGl0aW9uRmluaXNoKCkge1xuICAgIGxldCBpbnRyaW5zaWNWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICBjb25zdCBmaWVsZERlZmF1bHRGb3JtYXQgPSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXNQYXR0ZXJucz8uW3RoaXMuZmllbGRUeXBlXSA/PyBudWxsO1xuICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgaWYgKGZpZWxkVmFsdWUgJiYgKGZpZWxkRGVmYXVsdEZvcm1hdCB8fCB0aGlzLmZpZWxkRm9ybWF0KSkge1xuICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9IChmaWVsZERlZmF1bHRGb3JtYXQ/LnRlc3QoZmllbGRWYWx1ZSkgPz8gdHJ1ZSlcbiAgICAgICAgJiYgKHRoaXMuZmllbGRGb3JtYXQ/LnRlc3QoZmllbGRWYWx1ZSkgPz8gdHJ1ZSk7XG4gICAgICBpZiAoIWludHJpbnNpY1ZhbGlkYXRpb24pIHtcbiAgICAgICAgdGhpcy5zZXRFcnJvcignOTknLCB0aGlzLl9pbnRyaW5zaWNFcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9lZGl0aW9uRmluaXNoLm5leHQoeyBjb2RlOiB0aGlzLmZpZWxkQ29kZSwgaW50cmluc2ljVmFsaWRhdGlvbiB9KTtcbiAgfVxuXG4gIHNldEF0dHIobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpc1tuYW1lXSA9IHZhbHVlO1xuICAgIGlmICh0aGlzLl9mb3JtQ29uZmlnLm1vbml0b3JlZEZpZWxkQXR0cmlidXRlcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgdGhpcy5fYXR0cmlidXRlQ2hhbmdlLm5leHQoeyBuYW1lLCB2YWx1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBub3RpZnlFZGl0aW9uRGV0YWlsUmVxdWVzdCgpIHtcbiAgICB0aGlzLl9kZXRhaWxSZXF1ZXN0Lm5leHQodGhpcy5maWVsZENvZGUpO1xuICB9XG5cbiAgZ2V0Q3VzdG9tQXR0cmlidXRlKG5hbWUpIHsgcmV0dXJuIHRoaXMuY3VzdG9tQXR0cmlidXRlcz8uW25hbWVdID8/IG51bGw7IH1cblxuICBzZXRWaXNpYmxlTGFiZWwodmlzaWJsZUxhYmVsOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLnZpc2libGVMYWJlbCwgdmlzaWJsZUxhYmVsKTsgfVxuICBzaG93TGFiZWwoKSB7IHRoaXMuc2V0VmlzaWJsZUxhYmVsKHRydWUpOyB9XG4gIGhpZGVMYWJlbCgpIHsgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmFsc2UpOyB9XG5cbiAgc2V0Q2hhbmdlZChoYXNDaGFuZ2VkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLmhhc0NoYW5nZWQsIGhhc0NoYW5nZWQpOyB9XG4gIGNoYW5nZWQoKSB7IHRoaXMuc2V0Q2hhbmdlZCh0cnVlKTsgfVxuXG4gIGdldFJhd1ZhbHVlKCkgeyByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTsgfVxuICBzZXRMYWJlbChsYWJlbCkgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci50aXRsZSwgbGFiZWwpOyB9XG4gIGNsZWFuKCkgeyB0aGlzLnNldFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlIHx8ICcnKTsgfVxuICBnZXQgYmFja2VuZCgpIHsgcmV0dXJuIHRoaXMudmFsaWRhdGVPblNlcnZlcjsgfVxuXG4gIHNldEVkaXRhYmxlKGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZSkgeyAoZWRpdGFibGUpID8gdGhpcy5lbmFibGUoKSA6IHRoaXMuZGlzYWJsZSgpOyB9XG5cbiAgaGFzRXJyb3IoKSB7IHJldHVybiB0aGlzLmVycm9yQ29kZSAhPT0gJzAwJzsgfVxuXG4gIHNldEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSBERUZBVUxUX0VSUk9SX1RZUEUpIHtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvckNvZGUsIGNvZGUgPz8gJzAwJyk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZXJyb3JUeXBlLCAodGhpcy5lcnJvckNvZGUgPT09ICcwMCcpID8gJycgOiB0eXBlKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvck1lc3NhZ2UsIG1lc3NhZ2UgPz8gJycpO1xuICB9XG5cbiAgZ2V0RXJyb3IoKSB7IHJldHVybiB7IHR5cGU6IHRoaXMuZXJyb3JUeXBlLCBjb2RlOiB0aGlzLmVycm9yQ29kZSwgbWVzc2FnZTogdGhpcy5lcnJvck1lc3NhZ2UgfTsgfVxuICBnZXQgZXJyb3IoKSB7IHJldHVybiB0aGlzLmdldEVycm9yKCk7IH1cbiAgc2V0IGVycm9yKGVycm9yT2JqKSB7IHRoaXMuc2V0RXJyb3IoZXJyb3JPYmouY29kZSwgZXJyb3JPYmoubWVzc2FnZSwgZXJyb3JPYmoudHlwZSA/PyBERUZBVUxUX0VSUk9SX1RZUEUpIH1cblxuICBnZXRFcnJvckNvZGUoKSB7IHJldHVybiB0aGlzLmdldEVycm9yKCkuY29kZTsgfVxuICBzZXRFcnJvckNvZGUoY29kZSkgeyB0aGlzLnNldEVycm9yKGNvZGUsIHRoaXMuZXJyb3JNZXNzYWdlKTsgfVxuICBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiB0aGlzLmdldEVycm9yKCkubWVzc2FnZTsgfVxuICBzZXRFcnJvck1lc3NhZ2UobXNnKSB7IHRoaXMuc2V0RXJyb3IodGhpcy5lcnJvckNvZGUsIG1zZyk7IH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGZpZWxkQ3VycmVudFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkQ3VycmVudFZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5IHx8IHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMucGhvbmUpXG4gICAgICAmJiBBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSAmJiBmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgcmV0dXJuIGZpZWxkQ3VycmVudFZhbHVlID09PSAnJztcbiAgfVxuXG4gIGdldFZhbHVlKCkge1xuICAgIHN3aXRjaCAodGhpcy5maWVsZFR5cGUpIHtcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW46XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlID8/IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrOlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZSA/PyBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jdXJyZW5jeTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWUucmVwbGFjZSgnLCcsICcnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcihmbGQpIHtcbiAgICBjb25zdCBmaWVsZEtleXMgPSBPYmplY3Qua2V5cyhmbGQpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBhdHRyTmFtZSA9IGZpZWxkS2V5c1tpbmRleF07XG4gICAgICBjb25zdCBhdHRyVmFsdWUgPSBmbGRbYXR0ck5hbWVdO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMudmlzaWJsZSkgJiYgdGhpcy5zZXRWaXNpYmlsaXR5KGF0dHJWYWx1ZSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpZmllbGRhdHRycy5sYWJlbFZpc2libGUpICYmIHRoaXMuc2V0VmlzaWJsZUxhYmVsKGZsZC52aXNpYmxlTGFiZWwpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMucmVxdWlyZWQpICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLnJlcXVpcmVkLCBmbGQucmVxdWlyZWQgPz8gZmFsc2UpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMuZXJyb3JDb2RlKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvckNvZGUsIGZsZC5lcnJvckNvZGUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMuZXJyb3JNZXNzYWdlKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvck1lc3NhZ2UsIGZsZC5lcnJvck1lc3NhZ2UpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMudG9vbHRpcCkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIudG9vbHRpcFRleHQsIGZsZC50b29sdGlwKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlmaWVsZGF0dHJzLmluZm8pICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLmluZm8sIGZsZC5pbmZvKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlmaWVsZGF0dHJzLmVkaXRhYmxlKSAmJiB0aGlzLnNldEVkaXRhYmxlKGZsZC5lZGl0YWJsZSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpZmllbGRhdHRycy50aXRsZSkgJiYgdGhpcy5zZXRMYWJlbChmbGQuZmllbGRUaXRsZS50b1N0cmluZygpKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlmaWVsZGF0dHJzLnZhbHVlKSAmJiAodGhpcy5zZXRWYWx1ZShmbGQuX2ZpZWxkVmFsdWUpICYmIHRoaXMuc2V0Q2hhbmdlZChmYWxzZSkpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMub3B0aW9ucykgJiYgdGhpcy5zZXRGaWVsZE9wdGlvbnMoZmxkLmZpZWxkT3B0aW9ucyk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpZmllbGRhdHRycy5jYXB0dXJlVHlwZSkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIuY2FwdHVyZVR5cGUsIGZsZC5jYXB0dXJlVHlwZSB8fCAnSU5QVVQnKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlmaWVsZGF0dHJzLnR5cGUpICYmIHRoaXMuc2V0RmllbGRUeXBlKGZsZC5maWVsZFR5cGVDb2RlKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlmaWVsZGF0dHJzLm1heExlbmd0aCkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4TGVuZ3RoLCBmbGQubWF4TGVuZ3RoKTtcbiAgICB9XG4gIH1cblxuICBzZXRGaWVsZFR5cGUoaW5wdXRGaWVsZFR5cGUpIHtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci50eXBlLCBpbnB1dEZpZWxkVHlwZSk7XG4gIH1cblxuICBmb3JtYXQoKSB7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY3VycmVuY3kpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbHVlLCBmb3JtYXRDdXJyZW5jeSh0aGlzLl9maWVsZFZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TWluVmFsdWUobWluVmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlXG4gICAgICAmJiB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1pblZhbHVlLCBtaW5WYWx1ZSk7XG4gICAgICBpZiAoIW1pblZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNaW5WYWx1ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtaW5EYXRlID0gbmV3IERhdGUobWluVmFsdWUpO1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUobWluRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0TWF4VmFsdWUobWF4VmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlXG4gICAgICAmJiB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heFZhbHVlLCBtYXhWYWx1ZSk7XG4gICAgICBpZiAoIW1heFZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNYXhWYWx1ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXhEYXRlID0gbmV3IERhdGUobWF4VmFsdWUpO1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUobWF4RGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0RmllbGRPcHRpb25zKCkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZmllbGRPcHRpb25zKSk7XG4gIH1cblxuICBzZXRGaWVsZE9wdGlvbnMobmV3T3B0aW9ucykge1xuICAgIGlmICgodGhpcy5jYXB0dXJlVHlwZSAhPT0gJ0xJU1QnICYmIHRoaXMuY2FwdHVyZVR5cGUgIT09ICdSQURJTycpXG4gICAgICB8fCB0eXBlb2YgbmV3T3B0aW9ucyA9PT0gVU5ERUZJTkVEIHx8ICFuZXdPcHRpb25zXG4gICAgICB8fCAhQXJyYXkuaXNBcnJheShuZXdPcHRpb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAob3B0aW9uID0+IHtcbiAgICAgIGlmIChvcHRpb24udGV4dCAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi50ZXh0ICE9PSBudWxsXG4gICAgICAgICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyBmaWVsZE9wdGlvblZhbHVlOiBvcHRpb24udGV4dCwgZmllbGRPcHRpb25JZDogb3B0aW9uLnZhbHVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyAuLi5vcHRpb24gfTtcbiAgICB9KTtcbiAgICBmaWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIub3B0aW9ucywgZmllbGRPcHRpb25zKTtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSAmJiB0aGlzLndpZGdldCkge1xuICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0Py5yZWZlcmVzaENvbnRlbnQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZpZWxkVmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5ICYmIEFycmF5LmlzQXJyYXkodGhpcy5fZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuX2ZpZWxkVmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5maWVsZE9wdGlvbnMuZmluZChvcHQgPT4gb3B0LmZpZWxkT3B0aW9uSWQgPT09IGl0ZW0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbHVlLCBmaWVsZFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuZmllbGRPcHRpb25zXG4gICAgICAgICAgLmZpbmQoaXRlbSA9PiBpdGVtLmZpZWxkT3B0aW9uSWQgPT09IHRoaXMuX2ZpZWxkVmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkUmVxdWlyZWQgJiYgdGhpcy5maWVsZE9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZmllbGRPcHRpb25zWzBdLmZpZWxkT3B0aW9uSWQpO1xuICAgICAgaWYgKHRoaXMud2lkZ2V0Py5vbkNoYW5nZUNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy53aWRnZXQ/Lm9uQ2hhbmdlQ29udGVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFZhbHVlKG5ld1ZhbHVlLCB3aWRnZXRVcGRhdGUgPSB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gVU5ERUZJTkVEIHx8IG5ld1ZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IG5ld0ZpbmFsVmFsdWU7XG4gICAgc3dpdGNoICh0aGlzLmZpZWxkVHlwZSkge1xuICAgICAgY2FzZSAnQk9PTEVBTic6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW46XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gISFuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheTpcbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBudWxsIHx8IG5ld1ZhbHVlID09PSAnJykge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBbXTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIChuZXdWYWx1ZSkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLm1hcDpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICBpZiAobmV3RmluYWxWYWx1ZSAmJiB0aGlzLndpZGdldCAmJiB3aWRnZXRVcGRhdGUpIHtcbiAgICAgICAgICBjb25zdCBsYXRpdHVkZSA9IHBhcnNlRmxvYXQobmV3RmluYWxWYWx1ZVswXSk7XG4gICAgICAgICAgY29uc3QgbG9uZ2l0dWRlID0gcGFyc2VGbG9hdChuZXdGaW5hbFZhbHVlWzFdKTtcbiAgICAgICAgICB0aGlzLndpZGdldD8uc2V0TG9jYXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jdXJyZW5jeTpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IGZvcm1hdEN1cnJlbmN5KHRoaXMuX2ZpZWxkVmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWVsZFZhbHVlICE9PSBuZXdGaW5hbFZhbHVlKSB7XG4gICAgICB0aGlzLnNldENoYW5nZWQodHJ1ZSk7XG4gICAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci52YWx1ZSwgbmV3RmluYWxWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBRTlCLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0FBQ25DLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDO0FBRWpDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUM7QUFFM0IsTUFBTSxPQUFPLEdBQUc7SUFDZCxnQkFBZ0IsRUFBRSxrQkFBa0I7SUFDcEMsS0FBSyxFQUFFLGFBQWE7SUFDcEIsUUFBUSxFQUFFLFdBQVc7SUFDckIsUUFBUSxFQUFFLFdBQVc7SUFDckIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsWUFBWSxFQUFFLGVBQWU7SUFDN0IscUJBQXFCLEVBQUUsd0JBQXdCO0lBQy9DLElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSxXQUFXO0lBQ2pCLFlBQVksRUFBRSxjQUFjO0lBQzVCLGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLFlBQVksRUFBRSxjQUFjO0lBQzVCLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFVBQVUsRUFBRSxZQUFZO0lB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QUFJLENBQUMsTUFBTSxJQUFJLFlBQVksRUFBRTtvQkFDaEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUTtnQkFDdkMsYUFBYSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pELE1BQU07WUFDUjtnQkFDRSxhQUFhLEdBQUcsUUFBUSxDQUFDO2dCQUN6QixNQUFNO1NBQ1Q7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssYUFBYSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBlbGVtZW50VHlwZXMsIE5PX0VSUk9SIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudCB9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gJy4uL3V0aWxpdGllcyc7XG5cbmNvbnN0IFVOREVGSU5FRCA9ICd1bmRlZmluZWQnO1xuXG5jb25zdCBERUZBVUxUX0VSUk9SX1RZUEUgPSAnZXJyb3InO1xuY29uc3QgREVGQVVMVF9DQVBUVVJFX1RZUEUgPSAnSU5QVVQnO1xuY29uc3QgREVGQVVMVF9BTElHTk1FTlQgPSAnbGVmdCc7XG5cbmNvbnN0IFNURF9NQVhfTEVOR1RIID0gNTA7XG5jb25zdCBCSUdfTUFYX0xFTkdUSCA9IDUwMDtcblxuY29uc3QgZmxkQXR0ciA9IHtcbiAgdmFsaWRhdGVPblNlcnZlcjogJ3ZhbGlkYXRlT25TZXJ2ZXInLFxuICB2YWx1ZTogJ19maWVsZFZhbHVlJyxcbiAgbWluVmFsdWU6ICdfbWluVmFsdWUnLFxuICBtYXhWYWx1ZTogJ19tYXhWYWx1ZScsXG4gIG1heExlbmd0aDogJ19tYXhMZW5ndGgnLFxuICBvblZhbGlkYXRpb246ICdfb25WYWxpZGF0aW9uJyxcbiAgaW50cmluc2ljRXJyb3JNZXNzYWdlOiAnX2ludHJpbnNpY0Vycm9yTWVzc2FnZScsXG4gIGNvZGU6ICdmaWVsZENvZGUnLFxuICBpbmZvOiAnZmllbGRJbmZvJyxcbiAgZGVmYXVsdFZhbHVlOiAnZGVmYXVsdFZhbHVlJyxcbiAgZGVmYXVsdEVkaXRhYmxlOiAnZGVmYXVsdEVkaXRhYmxlJyxcbiAgY3VzdG9tQXR0cmlidXRlczogJ2N1c3RvbUF0dHJpYnV0ZXMnLFxuICB2aXNpYmxlTGFiZWw6ICd2aXNpYmxlTGFiZWwnLFxuICByZXF1aXJlZDogJ2ZpZWxkUmVxdWlyZWQnLFxuICBoYXNDaGFuZ2VkOiAnaGFzQ2hhbmdlZCcsXG4gIG91dHB1dE9ubHk6ICdvdXRwdXRPbmx5JyxcbiAgY2FwdHVyZVR5cGU6ICdjYXB0dXJlVHlwZScsXG4gIHRpdGxlOiAnZmllbGRUaXRsZScsXG4gIHR5cGU6ICdmaWVsZFR5cGUnLFxuICBhbGlnbm1lbnQ6ICdmaWVsZEFsaWdubWVudCcsXG4gIGZvcm1hdDogJ2ZpZWxkRm9ybWF0JyxcbiAgZXh0ZXJuYWxWYWx1ZTogJ2V4dGVybmFsVmFsdWUnLFxuICB0b29sdGlwVGV4dDogJ3Rvb2x0aXBUZXh0JyxcbiAgZXJyb3JUeXBlOiAnZXJyb3JUeXBlJyxcbiAgZXJyb3JDb2RlOiAnZXJyb3JDb2RlJyxcbiAgZXJyb3JNZXNzYWdlOiAnZXJyb3JNZXNzYWdlJyxcbiAgb3B0aW9uczogJ2ZpZWxkT3B0aW9ucycsXG59O1xuXG5leHBvcnQgY2xhc3MgRmllbGREZXNjcmlwdG9yIGV4dGVuZHMgRm9ybUVsZW1lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0aW9uRmluaXNoID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0aW9uUGFydGlhbCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGV0YWlsUmVxdWVzdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXR0cmlidXRlQ2hhbmdlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIHByaXZhdGUgdmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbjtcblxuICBfZmllbGRWYWx1ZTogYW55O1xuICBfbWluVmFsdWU6IGFueTtcbiAgX21heFZhbHVlOiBhbnk7XG4gIF9tYXhMZW5ndGg6IG51bWJlcjtcbiAgX29uVmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgX2ludHJpbnNpY0Vycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGZpZWxkQ29kZTogc3RyaW5nO1xuICBmaWVsZEluZm86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG4gIGRlZmF1bHRFZGl0YWJsZTogYm9vbGVhbjtcbiAgY3VzdG9tQXR0cmlidXRlczogYW55O1xuXG4gIHZpc2libGVMYWJlbDogYm9vbGVhbjtcbiAgZmllbGRSZXF1aXJlZDogYm9vbGVhbjtcbiAgaGFzQ2hhbmdlZDogYm9vbGVhbjtcbiAgb3V0cHV0T25seTogYm9vbGVhbjtcbiAgY2FwdHVyZVR5cGU6IHN0cmluZztcbiAgZmllbGRUaXRsZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbiAgZmllbGRBbGlnbm1lbnQ6IHN0cmluZztcbiAgZmllbGRGb3JtYXQ6IFJlZ0V4cDtcbiAgZXh0ZXJuYWxWYWx1ZTogYW55O1xuICB0b29sdGlwVGV4dDogc3RyaW5nO1xuXG4gIGVycm9yVHlwZTogc3RyaW5nO1xuICBlcnJvckNvZGU6IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgZmllbGRPcHRpb25zOiB7XG4gICAgZmllbGRPcHRpb25WYWx1ZTogc3RyaW5nO1xuICAgIGZpZWxkT3B0aW9uSWQ6IHN0cmluZztcbiAgfVtdO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0RmllbGRSZWNlaXZlZCwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGlucHV0RmllbGRSZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9IGVsZW1lbnRUeXBlcy5maWVsZDtcbiAgICBjb25zdCBmbGQgPSAoaW5wdXRGaWVsZFJlY2VpdmVkKSA/IGlucHV0RmllbGRSZWNlaXZlZCA6IHt9O1xuXG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuY29kZSwgZmxkLmZpZWxkQ29kZSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudGl0bGUsIGZsZC5maWVsZFRpdGxlID8/IHRoaXMuZmllbGRDb2RlKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5jYXB0dXJlVHlwZSwgZmxkLmNhcHR1cmVUeXBlID8/IERFRkFVTFRfQ0FQVFVSRV9UWVBFKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5kZWZhdWx0VmFsdWUsIGZsZC5kZWZhdWx0VmFsdWUgPz8gbnVsbCk7XG4gICAgY29uc3QgZGVmYXVsdFR5cGVBbGlnbm1lbnQgPSAodGhpcy5fZm9ybUNvbmZpZy50YWJsZUZpZWxkU3R5bGVzW3RoaXMuZmllbGRUeXBlXSAhPSBudWxsKVxuICAgICAgPyB0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdWyd0ZXh0LWFsaWduJ10gOiBERUZBVUxUX0FMSUdOTUVOVDtcbiAgICBjb25zdCBmaWVsZEFsaWdubWVudCA9IChmbGQuYWxpZ25tZW50ICE9IG51bGwpID8gZmxkLmFsaWdubWVudC50b0xvd2VyQ2FzZSgpIDogZGVmYXVsdFR5cGVBbGlnbm1lbnQ7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuYWxpZ25tZW50LCBmaWVsZEFsaWdubWVudCk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuaW5mbywgZmxkLmluZm8gfHwgJycpO1xuICAgIGxldCBmaWVsZEZvcm1hdDtcbiAgICB0cnkge1xuICAgICAgZmllbGRGb3JtYXQgPSAoZmxkLmZvcm1hdCkgPyBuZXcgUmVnRXhwKGZsZC5mb3JtYXQpIDogbnVsbDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBmaWVsZEZvcm1hdCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLmZvcm1hdCwgZmllbGRGb3JtYXQpO1xuXG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudmFsaWRhdGVPblNlcnZlciwgZmxkLnNlcnZlckFjdGlvbiA/PyBmYWxzZSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuY3VzdG9tQXR0cmlidXRlcywgZmxkLmN1c3RvbUF0dHJpYnV0ZXMgPz8ge30pO1xuXG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudG9vbHRpcFRleHQsIGZsZC50b29sdGlwIHx8ICcnKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5kZWZhdWx0RWRpdGFibGUsIHRoaXMuZW5hYmxlZCk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIucmVxdWlyZWQsIGZsZC5yZXF1aXJlZCA/PyBmYWxzZSk7XG4gICAgdGhpcy5zZXRFcnJvcihmbGQuZXJyb3JDb2RlLCBmbGQuZXJyb3JNZXNzYWdlLCBmbGQuZXJyb3JUeXBlID8/IERFRkFVTFRfRVJST1JfVFlQRSk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIub3V0cHV0T25seSwgZmxkLm91dHB1dE9ubHkgPz8gZmFsc2UpO1xuICAgIGNvbnN0IG1heExlbmd0aCA9IGZsZC5tYXhMZW5ndGggPz8gKHRoaXMuY2FwdHVyZVR5cGUgPT09ICdURVhUQVJFQScgPyBCSUdfTUFYX0xFTkdUSCA6IFNURF9NQVhfTEVOR1RIKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5tYXhMZW5ndGgsIG1heExlbmd0aCk7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuaW50cmluc2ljRXJyb3JNZXNzYWdlLCB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZUVyck1zZ1t0aGlzLmZpZWxkVHlwZV0gPz8gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVFcnJNc2cuREVGQVVMVCk7XG5cbiAgICB0aGlzLnNldEZpZWxkVHlwZShmbGQuZmllbGRUeXBlQ29kZSk7XG4gICAgdGhpcy5zZXRFZGl0YWJsZShmbGQuZWRpdGFibGUgPz8gdHJ1ZSk7XG4gICAgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmxkLnZpc2libGVMYWJlbCA/PyB0cnVlKTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkoZmxkLnZpc2libGUpO1xuICAgIHRoaXMuc2V0RmllbGRPcHRpb25zKGZsZC5maWVsZE9wdGlvbnMpO1xuICAgIHRoaXMuc2V0VmFsdWUoZmxkLmZpZWxkVmFsdWUgfHwgdGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLmZpZWxkQ29kZTsgfVxuICBnZXQgZWRpdGlvbkZpbmlzaCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25GaW5pc2g7IH1cbiAgZ2V0IGF0dHJpYnV0ZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZUNoYW5nZTsgfVxuXG4gIGdldCBlZGl0aW9uUGFydGlhbCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25QYXJ0aWFsOyB9XG4gIGdldCBkZXRhaWxSZXF1ZXN0KCkgeyByZXR1cm4gdGhpcy5fZGV0YWlsUmVxdWVzdDsgfVxuXG4gIGdldCB2YWxpZGF0aW5nKCkgeyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIHNldCB2YWxpZGF0aW5nKGlzVmFsaWRhdGluZzogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoZmxkQXR0ci5vblZhbGlkYXRpb24sIGlzVmFsaWRhdGluZyk7IH1cblxuICBzZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLmludHJpbnNpY0Vycm9yTWVzc2FnZSwgbWVzc2FnZSk7IH1cbiAgc2V0IGludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5zZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZSk7IH1cblxuICBnZXQgZmllbGRWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTsgfVxuICBnZXQgcmVxdWlyZWQoKSB7IHJldHVybiB0aGlzLmZpZWxkUmVxdWlyZWQ7IH1cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLnJlcXVpcmVkLCByZXF1aXJlZCA/PyBmYWxzZSk7IH1cbiAgZ2V0IG1heExlbmd0aCgpIHsgcmV0dXJuICh0aGlzLl9tYXhMZW5ndGggPiAwKSA/IHRoaXMuX21heExlbmd0aC50b1N0cmluZygpIDogJyc7IH1cbiAgc2V0IG1heExlbmd0aChyZXF1aXJlZE1heExlbmd0aDogYW55KSB7XG4gICAgaWYgKHR5cGVvZiByZXF1aXJlZE1heExlbmd0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLm1heExlbmd0aCwgcGFyc2VJbnQocmVxdWlyZWRNYXhMZW5ndGgsIDEwKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVxdWlyZWRNYXhMZW5ndGggPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5tYXhMZW5ndGgsIHJlcXVpcmVkTWF4TGVuZ3RoKTtcbiAgICB9XG4gIH1cbiAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOyB9XG4gIHNldCB2YWx1ZShuZXdWYWx1ZSkgeyB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlKTsgfVxuXG4gIG5vdGlmeUVkaXRpb25QYXJ0aWFsKCkge1xuICAgIGNvbnN0IGludHJpbnNpY1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgIHRoaXMuX2VkaXRpb25QYXJ0aWFsLm5leHQoeyBjb2RlOiB0aGlzLmZpZWxkQ29kZSwgaW50cmluc2ljVmFsaWRhdGlvbiB9KTtcbiAgfVxuXG4gIG5vdGlmeUVkaXRpb25GaW5pc2goKSB7XG4gICAgbGV0IGludHJpbnNpY1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgIGNvbnN0IGZpZWxkRGVmYXVsdEZvcm1hdCA9IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlc1BhdHRlcm5zPy5bdGhpcy5maWVsZFR5cGVdID8/IG51bGw7XG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBpZiAoZmllbGRWYWx1ZSAmJiAoZmllbGREZWZhdWx0Rm9ybWF0IHx8IHRoaXMuZmllbGRGb3JtYXQpKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gKGZpZWxkRGVmYXVsdEZvcm1hdD8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKVxuICAgICAgICAmJiAodGhpcy5maWVsZEZvcm1hdD8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKTtcbiAgICAgIGlmICghaW50cmluc2ljVmFsaWRhdGlvbikge1xuICAgICAgICB0aGlzLnNldEVycm9yKCc5OScsIHRoaXMuX2ludHJpbnNpY0Vycm9yTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2VkaXRpb25GaW5pc2gubmV4dCh7IGNvZGU6IHRoaXMuZmllbGRDb2RlLCBpbnRyaW5zaWNWYWxpZGF0aW9uIH0pO1xuICB9XG5cbiAgc2V0QXR0cihuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzW25hbWVdID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuX2Zvcm1Db25maWcubW9uaXRvcmVkRmllbGRBdHRyaWJ1dGVzLmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICB0aGlzLl9hdHRyaWJ1dGVDaGFuZ2UubmV4dCh7IG5hbWUsIHZhbHVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5vdGlmeUVkaXRpb25EZXRhaWxSZXF1ZXN0KCkge1xuICAgIHRoaXMuX2RldGFpbFJlcXVlc3QubmV4dCh0aGlzLmZpZWxkQ29kZSk7XG4gIH1cblxuICBnZXRDdXN0b21BdHRyaWJ1dGUobmFtZSkgeyByZXR1cm4gdGhpcy5jdXN0b21BdHRyaWJ1dGVzPy5bbmFtZV0gPz8gbnVsbDsgfVxuXG4gIHNldFZpc2libGVMYWJlbCh2aXNpYmxlTGFiZWw6IGJvb2xlYW4pIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIudmlzaWJsZUxhYmVsLCB2aXNpYmxlTGFiZWwpOyB9XG4gIHNob3dMYWJlbCgpIHsgdGhpcy5zZXRWaXNpYmxlTGFiZWwodHJ1ZSk7IH1cbiAgaGlkZUxhYmVsKCkgeyB0aGlzLnNldFZpc2libGVMYWJlbChmYWxzZSk7IH1cblxuICBzZXRDaGFuZ2VkKGhhc0NoYW5nZWQ6IGJvb2xlYW4pIHsgdGhpcy5zZXRBdHRyKGZsZEF0dHIuaGFzQ2hhbmdlZCwgaGFzQ2hhbmdlZCk7IH1cbiAgY2hhbmdlZCgpIHsgdGhpcy5zZXRDaGFuZ2VkKHRydWUpOyB9XG5cbiAgZ2V0UmF3VmFsdWUoKSB7IHJldHVybiB0aGlzLl9maWVsZFZhbHVlOyB9XG4gIHNldExhYmVsKGxhYmVsKSB7IHRoaXMuc2V0QXR0cihmbGRBdHRyLnRpdGxlLCBsYWJlbCk7IH1cbiAgY2xlYW4oKSB7IHRoaXMuc2V0VmFsdWUodGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpOyB9XG4gIGdldCBiYWNrZW5kKCkgeyByZXR1cm4gdGhpcy52YWxpZGF0ZU9uU2VydmVyOyB9XG5cbiAgc2V0RWRpdGFibGUoZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlKSB7IChlZGl0YWJsZSkgPyB0aGlzLmVuYWJsZSgpIDogdGhpcy5kaXNhYmxlKCk7IH1cblxuICBoYXNFcnJvcigpIHsgcmV0dXJuIHRoaXMuZXJyb3JDb2RlICE9PSBOT19FUlJPUjsgfVxuICByZXNldEVycm9yKCkgeyAodGhpcy5lcnJvckNvZGUgIT09IE5PX0VSUk9SKSAmJiB0aGlzLnNldEVycm9yKE5PX0VSUk9SLCBudWxsKTsgfVxuICBzZXRFcnJvcihjb2RlLCBtZXNzYWdlLCB0eXBlID0gREVGQVVMVF9FUlJPUl9UWVBFKSB7XG4gICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIuZXJyb3JDb2RlLCBjb2RlID8/IE5PX0VSUk9SKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvclR5cGUsICh0aGlzLmVycm9yQ29kZSA9PT0gTk9fRVJST1IpID8gJycgOiB0eXBlKTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvck1lc3NhZ2UsIG1lc3NhZ2UgPz8gJycpO1xuICB9XG5cbiAgZ2V0RXJyb3IoKSB7IHJldHVybiB7IHR5cGU6IHRoaXMuZXJyb3JUeXBlLCBjb2RlOiB0aGlzLmVycm9yQ29kZSwgbWVzc2FnZTogdGhpcy5lcnJvck1lc3NhZ2UgfTsgfVxuICBnZXQgZXJyb3IoKSB7IHJldHVybiB0aGlzLmdldEVycm9yKCk7IH1cbiAgc2V0IGVycm9yKGVycm9yT2JqKSB7IHRoaXMuc2V0RXJyb3IoZXJyb3JPYmouY29kZSwgZXJyb3JPYmoubWVzc2FnZSwgZXJyb3JPYmoudHlwZSA/PyBERUZBVUxUX0VSUk9SX1RZUEUpIH1cblxuICBnZXRFcnJvckNvZGUoKSB7IHJldHVybiB0aGlzLmdldEVycm9yKCkuY29kZTsgfVxuICBzZXRFcnJvckNvZGUoY29kZSkgeyB0aGlzLnNldEVycm9yKGNvZGUsIHRoaXMuZXJyb3JNZXNzYWdlKTsgfVxuICBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiB0aGlzLmdldEVycm9yKCkubWVzc2FnZTsgfVxuICBzZXRFcnJvck1lc3NhZ2UobXNnKSB7IHRoaXMuc2V0RXJyb3IodGhpcy5lcnJvckNvZGUsIG1zZyk7IH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGZpZWxkQ3VycmVudFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkQ3VycmVudFZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5IHx8IHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMucGhvbmUpXG4gICAgICAmJiBBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSAmJiBmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgcmV0dXJuIGZpZWxkQ3VycmVudFZhbHVlID09PSAnJztcbiAgfVxuXG4gIGdldFZhbHVlKCkge1xuICAgIHN3aXRjaCAodGhpcy5maWVsZFR5cGUpIHtcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmJvb2xlYW46XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlID8/IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmNoZWNrOlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZSA/PyBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jdXJyZW5jeTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWUucmVwbGFjZSgnLCcsICcnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcihmbGQpIHtcbiAgICBjb25zdCBmaWVsZEtleXMgPSBPYmplY3Qua2V5cyhmbGQpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBhdHRyTmFtZSA9IGZpZWxkS2V5c1tpbmRleF07XG4gICAgICBjb25zdCBhdHRyVmFsdWUgPSBmbGRbYXR0ck5hbWVdO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMudmlzaWJsZSkgJiYgdGhpcy5zZXRWaXNpYmlsaXR5KGF0dHJWYWx1ZSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpZmllbGRhdHRycy5sYWJlbFZpc2libGUpICYmIHRoaXMuc2V0VmlzaWJsZUxhYmVsKGZsZC52aXNpYmxlTGFiZWwpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMucmVxdWlyZWQpICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLnJlcXVpcmVkLCBmbGQucmVxdWlyZWQgPz8gZmFsc2UpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMuZXJyb3JDb2RlKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvckNvZGUsIGZsZC5lcnJvckNvZGUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMuZXJyb3JNZXNzYWdlKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5lcnJvck1lc3NhZ2UsIGZsZC5lcnJvck1lc3NhZ2UpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMudG9vbHRpcCkgJiYgdGhpcy5zZXRBdHRyKGZsZEF0dHIudG9vbHRpcFRleHQsIGZsZC50b29sdGlwKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlmaWVsZGF0dHJzLmluZm8pICYmIHRoaXMuc2V0QXR0cihmbGRBdHRyLmluZm8sIGZsZC5pbmZvKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlmaWVsZGF0dHJzLmVkaXRhYmxlKSAmJiB0aGlzLnNldEVkaXRhYmxlKGZsZC5lZGl0YWJsZSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpZmllbGRhdHRycy50aXRsZSkgJiYgdGhpcy5zZXRMYWJlbChmbGQuZmllbGRUaXRsZS50b1N0cmluZygpKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlmaWVsZGF0dHJzLnZhbHVlKSAmJiAodGhpcy5zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSkgJiYgdGhpcy5zZXRDaGFuZ2VkKGZhbHNlKSk7XG4gICAgICAoYXR0ck5hbWUgPT09IHRoaXMuX2Zvcm1Db25maWcuYXBpZmllbGRhdHRycy5vcHRpb25zKSAmJiB0aGlzLnNldEZpZWxkT3B0aW9ucyhmbGQuZmllbGRPcHRpb25zKTtcbiAgICAgIChhdHRyTmFtZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5hcGlmaWVsZGF0dHJzLmNhcHR1cmVUeXBlKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5jYXB0dXJlVHlwZSwgZmxkLmNhcHR1cmVUeXBlIHx8ICdJTlBVVCcpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMudHlwZSkgJiYgdGhpcy5zZXRGaWVsZFR5cGUoZmxkLmZpZWxkVHlwZUNvZGUpO1xuICAgICAgKGF0dHJOYW1lID09PSB0aGlzLl9mb3JtQ29uZmlnLmFwaWZpZWxkYXR0cnMubWF4TGVuZ3RoKSAmJiB0aGlzLnNldEF0dHIoZmxkQXR0ci5tYXhMZW5ndGgsIGZsZC5tYXhMZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpZWxkVHlwZShpbnB1dEZpZWxkVHlwZSkge1xuICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnR5cGUsIGlucHV0RmllbGRUeXBlKTtcbiAgfVxuXG4gIGZvcm1hdCgpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jdXJyZW5jeSkge1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudmFsdWUsIGZvcm1hdEN1cnJlbmN5KHRoaXMuX2ZpZWxkVmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBzZXRNaW5WYWx1ZShtaW5WYWx1ZSkge1xuICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmRhdGVcbiAgICAgICYmIHRoaXMud2lkZ2V0Py5zZXRNaW5WYWx1ZSkge1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWluVmFsdWUsIG1pblZhbHVlKTtcbiAgICAgIGlmICghbWluVmFsdWUpIHtcbiAgICAgICAgdGhpcy53aWRnZXQ/LnNldE1pblZhbHVlKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1pbkRhdGUgPSBuZXcgRGF0ZShtaW5WYWx1ZSk7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNaW5WYWx1ZShtaW5EYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRNYXhWYWx1ZShtYXhWYWx1ZSkge1xuICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmRhdGVcbiAgICAgICYmIHRoaXMud2lkZ2V0Py5zZXRNYXhWYWx1ZSkge1xuICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIubWF4VmFsdWUsIG1heFZhbHVlKTtcbiAgICAgIGlmICghbWF4VmFsdWUpIHtcbiAgICAgICAgdGhpcy53aWRnZXQ/LnNldE1heFZhbHVlKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1heERhdGUgPSBuZXcgRGF0ZShtYXhWYWx1ZSk7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNYXhWYWx1ZShtYXhEYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRGaWVsZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWVsZE9wdGlvbnMpKTtcbiAgfVxuXG4gIHNldEZpZWxkT3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gICAgaWYgKCh0aGlzLmNhcHR1cmVUeXBlICE9PSAnTElTVCcgJiYgdGhpcy5jYXB0dXJlVHlwZSAhPT0gJ1JBRElPJylcbiAgICAgIHx8IHR5cGVvZiBuZXdPcHRpb25zID09PSBVTkRFRklORUQgfHwgIW5ld09wdGlvbnNcbiAgICAgIHx8ICFBcnJheS5pc0FycmF5KG5ld09wdGlvbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBmaWVsZE9wdGlvbnMgPSBuZXdPcHRpb25zLm1hcChvcHRpb24gPT4ge1xuICAgICAgaWYgKG9wdGlvbi50ZXh0ICE9PSB1bmRlZmluZWQgJiYgb3B0aW9uLnRleHQgIT09IG51bGxcbiAgICAgICAgJiYgb3B0aW9uLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgb3B0aW9uLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7IGZpZWxkT3B0aW9uVmFsdWU6IG9wdGlvbi50ZXh0LCBmaWVsZE9wdGlvbklkOiBvcHRpb24udmFsdWUgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IC4uLm9wdGlvbiB9O1xuICAgIH0pO1xuICAgIGZpZWxkT3B0aW9ucyA9IChmaWVsZE9wdGlvbnMgJiYgQXJyYXkuaXNBcnJheShmaWVsZE9wdGlvbnMpXG4gICAgICAmJiBmaWVsZE9wdGlvbnMubGVuZ3RoID4gMCkgPyBmaWVsZE9wdGlvbnMgOiBbXTtcbiAgICB0aGlzLnNldEF0dHIoZmxkQXR0ci5vcHRpb25zLCBmaWVsZE9wdGlvbnMpO1xuICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5ICYmIHRoaXMud2lkZ2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy53aWRnZXQ/LnJlZmVyZXNoQ29udGVudCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYXJyYXkgJiYgQXJyYXkuaXNBcnJheSh0aGlzLl9maWVsZFZhbHVlKSkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5fZmllbGRWYWx1ZT8uZmlsdGVyKGl0ZW0gPT5cbiAgICAgICAgICB0aGlzLmZpZWxkT3B0aW9ucy5maW5kKG9wdCA9PiBvcHQuZmllbGRPcHRpb25JZCA9PT0gaXRlbSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyKGZsZEF0dHIudmFsdWUsIGZpZWxkVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsSW5PcHRpb25zID0gdGhpcy5maWVsZE9wdGlvbnNcbiAgICAgICAgICAuZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fZmllbGRWYWx1ZSk7XG4gICAgICAgIGlmICghdmFsSW5PcHRpb25zKSB7XG4gICAgICAgICAgdGhpcy5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZmllbGRSZXF1aXJlZCAmJiB0aGlzLmZpZWxkT3B0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5maWVsZE9wdGlvbnNbMF0uZmllbGRPcHRpb25JZCk7XG4gICAgICBpZiAodGhpcy53aWRnZXQ/Lm9uQ2hhbmdlQ29udGVudCkge1xuICAgICAgICB0aGlzLndpZGdldD8ub25DaGFuZ2VDb250ZW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0VmFsdWUobmV3VmFsdWUsIHdpZGdldFVwZGF0ZSA9IHRydWUpIHtcbiAgICBpZiAodHlwZW9mIG5ld1ZhbHVlID09PSBVTkRFRklORUQgfHwgbmV3VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgbmV3RmluYWxWYWx1ZTtcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRUeXBlKSB7XG4gICAgICBjYXNlICdCT09MRUFOJzpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9ICEhbmV3VmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYm9vbGVhbjpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9ICEhbmV3VmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY2hlY2s6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5OlxuICAgICAgICBpZiAobmV3VmFsdWUgPT09IG51bGwgfHwgbmV3VmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgbmV3RmluYWxWYWx1ZSA9IFtdO1xuICAgICAgICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgKG5ld1ZhbHVlKSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMubWFwOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIGlmIChuZXdGaW5hbFZhbHVlICYmIHRoaXMud2lkZ2V0ICYmIHdpZGdldFVwZGF0ZSkge1xuICAgICAgICAgIGNvbnN0IGxhdGl0dWRlID0gcGFyc2VGbG9hdChuZXdGaW5hbFZhbHVlWzBdKTtcbiAgICAgICAgICBjb25zdCBsb25naXR1ZGUgPSBwYXJzZUZsb2F0KG5ld0ZpbmFsVmFsdWVbMV0pO1xuICAgICAgICAgIHRoaXMud2lkZ2V0Py5zZXRMb2NhdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmN1cnJlbmN5OlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gZm9ybWF0Q3VycmVuY3kodGhpcy5fZmllbGRWYWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZpZWxkVmFsdWUgIT09IG5ld0ZpbmFsVmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0Q2hhbmdlZCh0cnVlKTtcbiAgICAgIHRoaXMuc2V0QXR0cihmbGRBdHRyLnZhbHVlLCBuZXdGaW5hbFZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export const NO_ERROR = '00';
|
|
2
|
+
export const HEADER = 'HEADER';
|
|
1
3
|
export const elementTypes = {
|
|
2
4
|
action: 'ACTION',
|
|
3
5
|
field: 'FIELD',
|
|
@@ -20,4 +22,4 @@ export const operators = {
|
|
|
20
22
|
NOT_CONTENT: 'No Contiene',
|
|
21
23
|
BETWEEN: 'Entre',
|
|
22
24
|
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2Zvcm0uY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDN0IsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsWUFBWSxFQUFFLGNBQWM7SUFDNUIsUUFBUSxFQUFFLFVBQVU7Q0FDckIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixDQUFDLEVBQUUsR0FBRztJQUNOLENBQUMsRUFBRSxHQUFHO0lBQ04sRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsTUFBTSxFQUFFLElBQUk7SUFDWixPQUFPLEVBQUUsVUFBVTtJQUNuQixXQUFXLEVBQUUsYUFBYTtJQUMxQixPQUFPLEVBQUUsT0FBTztDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IE5PX0VSUk9SID0gJzAwJztcbmV4cG9ydCBjb25zdCBIRUFERVIgPSAnSEVBREVSJztcblxuZXhwb3J0IGNvbnN0IGVsZW1lbnRUeXBlcyA9IHtcbiAgYWN0aW9uOiAnQUNUSU9OJyxcbiAgZmllbGQ6ICdGSUVMRCcsXG4gIHRhYmxlOiAnVEFCTEUnLFxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1BY3Rpb25zID0ge1xuICB0YWJsZUFjdGlvbjogJ1RBQkxFQUNUSU9OJyxcbiAgZ2V0RGF0YTogJ0dFVERBVEEnLFxuICBnZXRUYWJsZURhdGE6ICdHRVRUQUJMRURBVEEnLFxuICB2YWxpZGF0ZTogJ1ZBTElEQVRFJyxcbn07XG5cbmV4cG9ydCBjb25zdCBvcGVyYXRvcnMgPSB7XG4gIEc6ICc+JyxcbiAgTDogJzwnLFxuICBHRTogJz49JyxcbiAgTEU6ICc8PScsXG4gIEVROiAnPT0nLFxuICBOT1RfRVE6ICchPScsXG4gIENPTlRFTlQ6ICdDb250aWVuZScsXG4gIE5PVF9DT05URU5UOiAnTm8gQ29udGllbmUnLFxuICBCRVRXRUVOOiAnRW50cmUnLFxufTtcbiJdfQ==
|
|
@@ -2,8 +2,7 @@ import { RecordFormSection } from './section';
|
|
|
2
2
|
import { FormAction } from './action';
|
|
3
3
|
import { FieldDescriptor } from './field';
|
|
4
4
|
import { RecordTable } from './table/table';
|
|
5
|
-
|
|
6
|
-
const NO_ERROR = '00';
|
|
5
|
+
import { NO_ERROR, HEADER } from './form.constants';
|
|
7
6
|
export class FormStructureAndData {
|
|
8
7
|
constructor(definitionReceived, formConfig) {
|
|
9
8
|
this._fieldsObj = {};
|
|
@@ -567,4 +566,4 @@ export class FormStructureAndData {
|
|
|
567
566
|
return formData;
|
|
568
567
|
}
|
|
569
568
|
}
|
|
570
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQWF0QixNQUFNLE9BQU8sb0JBQW9CO0lBaUIvQixZQUFZLGtCQUFrQixFQUFFLFVBQVU7UUFWbEMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUd0QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsV0FBVyxFQUFFLEVBQUU7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QUUsZUFBZSxDQUFDLGFBQWE7d0JBQ3ZDLFlBQVksRUFBRSxFQUFFO3FCQUNqQixDQUFDO29CQUNGLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNqQzthQUNGO1NBQ0Y7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0IsS0FBSyxNQUFNLGVBQWUsSUFBSSxNQUFNLEVBQUU7Z0JBQ3BDLE1BQU0sU0FBUyxHQUFHO29CQUNoQixTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVM7b0JBQ3BDLE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTztvQkFDaEMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxXQUFXO29CQUN4QyxhQUFhLEVBQUUsZUFBZSxDQUFDLGFBQWE7b0JBQzVDLGNBQWMsRUFBRSxlQUFlLENBQUMsY0FBYztvQkFDOUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxhQUFhO29CQUM1QyxhQUFhLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxVQUFVO29CQUNqRCxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVM7aUJBQ3BELENBQUM7Z0JBQ0YsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDakM7U0FDRjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlY29yZEZvcm1TZWN0aW9uIH0gZnJvbSAnLi9zZWN0aW9uJztcbmltcG9ydCB7IEZvcm1BY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XG5pbXBvcnQgeyBGaWVsZERlc2NyaXB0b3IgfSBmcm9tICcuL2ZpZWxkJztcbmltcG9ydCB7IFJlY29yZFRhYmxlIH0gZnJvbSAnLi90YWJsZS90YWJsZSc7XG5cbmNvbnN0IEhFQURFUiA9ICdIRUFERVInO1xuY29uc3QgTk9fRVJST1IgPSAnMDAnO1xuaW50ZXJmYWNlIFRyYW5zaXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBkZXN0aW5hdGlvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3RhdGVGbG93IHtcbiAgZGVmYXVsdFN0YXRlOiBzdHJpbmc7XG4gIHN0YXRlczogc3RyaW5nW107XG4gIHRyYW5zaXRpb25zOiBUcmFuc2l0aW9uW107XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtU3RydWN0dXJlQW5kRGF0YSB7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIF9uYW1lOiBzdHJpbmc7XG4gIF9mb3JtQ29uZmlnOiBhbnk7XG4gIHByaXZhdGUgX3RpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3N0YXRlRmxvdzogU3RhdGVGbG93O1xuICBwcml2YXRlIF9maWVsZHM6IEZpZWxkRGVzY3JpcHRvcltdO1xuICBwcml2YXRlIF9maWVsZHNPYmogPSB7fTtcbiAgcHJpdmF0ZSBfYWN0aW9uczogRm9ybUFjdGlvbltdO1xuICBwcml2YXRlIF9hY3Rpb25zT2JqID0ge307XG4gIHByaXZhdGUgX3RhYmxlczogUmVjb3JkVGFibGVbXTtcbiAgcHJpdmF0ZSBfdGFibGVPYmogPSB7fTtcbiAgcHJpdmF0ZSBfc2VjdGlvbnM6IFJlY29yZEZvcm1TZWN0aW9uW107XG4gIHByaXZhdGUgX3NlY3Rpb25zT2JqID0ge307XG4gIHByaXZhdGUgX2ltbXV0YWJsZURhdGEgPSB7fTtcbiAgcHJpdmF0ZSBfZXh0cmFJbmZvID0ge307XG5cbiAgY29uc3RydWN0b3IoZGVmaW5pdGlvblJlY2VpdmVkLCBmb3JtQ29uZmlnKSB7XG4gICAgdGhpcy5fZm9ybUNvbmZpZyA9IGZvcm1Db25maWc7XG4gICAgdGhpcy5zdGF0ZSA9ICcnO1xuICAgIHRoaXMuX2FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLl9maWVsZHMgPSBbXTtcbiAgICB0aGlzLl90YWJsZXMgPSBbXTtcbiAgICB0aGlzLl9zZWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuX3N0YXRlRmxvdyA9IHtcbiAgICAgIGRlZmF1bHRTdGF0ZTogJycsXG4gICAgICBzdGF0ZXM6IFtdLFxuICAgICAgdHJhbnNpdGlvbnM6IFtdLFxuICAgIH07XG4gICAgaWYgKCFkZWZpbml0aW9uUmVjZWl2ZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5fbmFtZSA9IChkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybSAmJiBkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybS5mb3JtQ29kZSlcbiAgICAgID8gZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybUNvZGUgOiB0aGlzLl9uYW1lO1xuICAgIHRoaXMuX3RpdGxlID0gKGRlZmluaXRpb25SZWNlaXZlZC5mb3JtICYmIGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1UaXRsZSlcbiAgICAgID8gZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybVRpdGxlIDogJyc7XG4gICAgdGhpcy5zZXRTdGF0ZUZsb3coZGVmaW5pdGlvblJlY2VpdmVkPy5zdGF0ZXMsIGRlZmluaXRpb25SZWNlaXZlZD8udHJhbnNpdGlvbnMsXG4gICAgICBkZWZpbml0aW9uUmVjZWl2ZWQ/LmRlZmF1bHRTdGF0ZSk7XG4gICAgdGhpcy5pbW11dGFibGVEYXRhID0gZGVmaW5pdGlvblJlY2VpdmVkLmltbXV0YWJsZURhdGE7XG4gICAgdGhpcy5leHRyYUluZm8gPSBkZWZpbml0aW9uUmVjZWl2ZWQuZXh0cmFJbmZvO1xuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtQWN0aW9ucyA9IGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi5hY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICAgIGVuYWJsZWRTdGF0ZXMgPSBbLi4udmlzaWJsZVN0YXRlc107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uUmVjZWl2ZWQgb2YgZm9ybUFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsQWN0aW9uID0gbmV3IEZvcm1BY3Rpb24oYWN0aW9uUmVjZWl2ZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICBjb25zdCBnbG9iYWxBY3Rpb25Db2RlID0gZ2xvYmFsQWN0aW9uLmFjdGlvbkNvZGU7XG4gICAgICAgIGlmIChnbG9iYWxBY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5fYWN0aW9ucy5wdXNoKGdsb2JhbEFjdGlvbik7XG4gICAgICAgICAgdGhpcy5fYWN0aW9uc09ialtnbG9iYWxBY3Rpb25Db2RlXSA9IGdsb2JhbEFjdGlvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQuZmllbGRzKSB7XG4gICAgICBjb25zdCBmb3JtRmllbGRzID0gZGVmaW5pdGlvblJlY2VpdmVkLmZpZWxkcy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcyB8fCBvYmpEZWYuZWRpdGFibGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLmZpZWxkTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkUmVjZWl2ZWQgb2YgZm9ybUZpZWxkcykge1xuICAgICAgICBjb25zdCBmaWVsZFRvQWRkID0gbmV3IEZpZWxkRGVzY3JpcHRvcihmaWVsZFJlY2VpdmVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgY29uc3QgZmllbGRDb2RlID0gZmllbGRUb0FkZC5maWVsZENvZGU7XG4gICAgICAgIGlmIChmaWVsZENvZGUpIHtcbiAgICAgICAgICB0aGlzLl9maWVsZHMucHVzaChmaWVsZFRvQWRkKTtcbiAgICAgICAgICB0aGlzLl9maWVsZHNPYmpbZmllbGRDb2RlXSA9IGZpZWxkVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLnRhYmxlcykge1xuICAgICAgY29uc3QgdGFibGVzID0gZGVmaW5pdGlvblJlY2VpdmVkLnRhYmxlcy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcyB8fCBvYmpEZWYuZWRpdGFibGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLnRhYmxlTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcyB8fCB2aXNpYmxlU3RhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSB0aGlzLl9mb3JtQ29uZmlnLmRlZmF1bHRTdGF0ZUZsb3cuc3RhdGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHRhYmxlUmVjZWl2ZWQgb2YgdGFibGVzKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlVG9BZGQgPSBuZXcgUmVjb3JkVGFibGUodGFibGVSZWNlaXZlZCwgdGhpcy5fZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IHRhYmxlQ29kZSA9IHRhYmxlVG9BZGQudGFibGVDb2RlO1xuICAgICAgICBpZiAodGFibGVDb2RlKSB7XG4gICAgICAgICAgdGhpcy5fdGFibGVzLnB1c2godGFibGVUb0FkZCk7XG4gICAgICAgICAgdGhpcy5fdGFibGVPYmpbdGFibGVDb2RlXSA9IHRhYmxlVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLnNlY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtU2VjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuc2VjdGlvbnMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLnNlY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHNlY3Rpb25SZWNlaXZlZCBvZiBmb3JtU2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc2VjdGlvblRvQWRkID0gbmV3IFJlY29yZEZvcm1TZWN0aW9uKHNlY3Rpb25SZWNlaXZlZCwgdGhpcyk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25Db2RlID0gc2VjdGlvblRvQWRkLnNlY3Rpb25Db2RlO1xuICAgICAgICBpZiAoc2VjdGlvbkNvZGUpIHtcbiAgICAgICAgICB0aGlzLl9zZWN0aW9ucy5wdXNoKHNlY3Rpb25Ub0FkZCk7XG4gICAgICAgICAgdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdID0gc2VjdGlvblRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0IGltbXV0YWJsZURhdGEoaW1tdXRhYmxlRGF0YSkgeyBPYmplY3QuYXNzaWduKHRoaXMuX2ltbXV0YWJsZURhdGEsIGltbXV0YWJsZURhdGEpOyB9XG4gIHNldCBleHRyYUluZm8oZXh0cmFJbmZvKSB7IE9iamVjdC5hc3NpZ24odGhpcy5fZXh0cmFJbmZvLCBleHRyYUluZm8pOyB9XG5cbiAgZ2V0IGRlZmF1bHRTdGF0ZSgpIHsgcmV0dXJuIHRoaXMuX3N0YXRlRmxvdy5kZWZhdWx0U3RhdGU7IH1cbiAgZ2V0IHRpdGxlKCkgeyByZXR1cm4gdGhpcy5fdGl0bGU7IH1cbiAgc2V0IHRpdGxlKHRpdGxlKSB7IHRoaXMuX3RpdGxlID0gdGl0bGU7IH1cbiAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9XG4gIHNldCBuYW1lKG5hbWUpIHsgdGhpcy5fbmFtZSA9IG5hbWU7IH1cblxuICBjaGFuZ2VTdGF0ZShuZXdTdGF0ZSkge1xuICAgIGlmICghbmV3U3RhdGUgfHwgIXRoaXMuc3VwcG9ydFN0YXRlKG5ld1N0YXRlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc3RhdGUpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHJhbnNpdGlvblRvQ2hhbmdlID0gdGhpcy5fc3RhdGVGbG93LnRyYW5zaXRpb25zLmZpbmQodHJucyA9PlxuICAgICAgICB0cm5zLnNvdXJjZSA9PT0gdGhpcy5zdGF0ZSAmJiB0cm5zLmRlc3RpbmF0aW9uID09PSBuZXdTdGF0ZSk7XG4gICAgICBpZiAodHJhbnNpdGlvblRvQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLnN0YXRlID09PSBuZXdTdGF0ZSk7XG4gIH1cblxuICBzZXRTdGF0ZUZsb3coc3RhdGVzPywgdHJhbnNpdGlvbnM/LCBkZWZhdWx0U3RhdGU/KSB7XG4gICAgaWYgKCFzdGF0ZXMgfHwgIXRyYW5zaXRpb25zKSB7XG4gICAgICB0aGlzLl9zdGF0ZUZsb3cgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2Zvcm1Db25maWcuZGVmYXVsdFN0YXRlRmxvdykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzID0gc3RhdGVzO1xuICAgIHRoaXMuX3N0YXRlRmxvdy5kZWZhdWx0U3RhdGUgPSBkZWZhdWx0U3RhdGUgfHwgdGhpcy5fc3RhdGVGbG93LnN0YXRlc1swXTtcbiAgICB0aGlzLl9zdGF0ZUZsb3cudHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9ucy5tYXAodHJhbnNpdGlvbiA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gdHJhbnNpdGlvbi5uYW1lO1xuICAgICAgY29uc3Qgc291cmNlID0gKHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXMuaW5jbHVkZXModHJhbnNpdGlvbi5zb3VyY2UpKSA/IHRyYW5zaXRpb24uc291cmNlIDogJyc7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbiA9ICh0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzLmluY2x1ZGVzKHRyYW5zaXRpb24uZGVzdGluYXRpb24pKSA/IHRyYW5zaXRpb24uZGVzdGluYXRpb24gOiAnJztcbiAgICAgIHJldHVybiB7IG5hbWUsIHNvdXJjZSwgZGVzdGluYXRpb24gfTtcbiAgICB9KS5maWx0ZXIoaXRlbSA9PiBpdGVtLm5hbWUgJiYgaXRlbS5zb3VyY2UgJiYgaXRlbS5kZXN0aW5hdGlvbik7XG4gIH1cblxuICBzdXBwb3J0U3RhdGUoc3RhdGUpIHsgcmV0dXJuIHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXM/LmluY2x1ZGVzKHN0YXRlKTsgfVxuICBzdXBwb3J0TW9kZShzdGF0ZSkgeyByZXR1cm4gdGhpcy5zdXBwb3J0U3RhdGUoc3RhdGUpOyB9XG5cblxuICBnZXQgaW1tdXRhYmxlRGF0YSgpIHtcbiAgICBjb25zdCBkYXRhID0ge307XG4gICAgY29uc3Qgb2JqZWN0TmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLl9pbW11dGFibGVEYXRhKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb2JqZWN0TmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBuYW1lID0gb2JqZWN0TmFtZXNbaW5kZXhdO1xuICAgICAgZGF0YVtuYW1lXSA9IHRoaXMuZ2V0SW1tdXRhYmxlRWxlbWVudChuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRJbW11dGFibGVFbGVtZW50KG5hbWUpIHsgcmV0dXJuIHRoaXMuX2ltbXV0YWJsZURhdGE/LltuYW1lXT8udmFsdWUgPz8gbnVsbDsgfVxuICBnZXRFeHRyYUluZm8obmFtZSkgeyByZXR1cm4gdGhpcy5fZXh0cmFJbmZvPy5bbmFtZV0/LnZhbHVlID8/IG51bGw7IH1cblxuICBnZXQgZXh0cmFJbmZvKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICBjb25zdCBvYmplY3ROYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuX2V4dHJhSW5mbyk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG9iamVjdE5hbWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgbmFtZSA9IG9iamVjdE5hbWVzW2luZGV4XTtcbiAgICAgIGRhdGFbbmFtZV0gPSB0aGlzLmdldEV4dHJhSW5mbyhuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7IHJldHVybiB0aGlzLl9maWVsZHM7IH1cblxuICBnZXRTdGF0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXM7XG4gIH1cblxuICBnZXRGaWVsZE5hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLmZpZWxkQ29kZSk7XG4gIH1cblxuICBnZXRBY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zO1xuICB9XG5cbiAgZ2V0SGVhZGVyQWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5maWx0ZXIoYWN0aW9uSXRlbSA9PiBhY3Rpb25JdGVtLmxvY2F0aW9uID09PSBIRUFERVIpO1xuICB9XG5cbiAgZ2V0RmllbGRPYmplY3QoZWxlbWVudElkKSB7XG4gICAgcmV0dXJuICh0aGlzLl9maWVsZHNPYmogJiYgZWxlbWVudElkICYmIHRoaXMuX2ZpZWxkc09ialtlbGVtZW50SWRdKVxuICAgICAgPyB0aGlzLl9maWVsZHNPYmpbZWxlbWVudElkXSA6IG51bGw7XG4gIH1cblxuICBnZXRUYWJsZU9iamVjdChlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gKHRoaXMuX3RhYmxlT2JqICYmIGVsZW1lbnRJZCAmJiB0aGlzLl90YWJsZU9ialtlbGVtZW50SWRdKVxuICAgICAgPyB0aGlzLl90YWJsZU9ialtlbGVtZW50SWRdIDogbnVsbDtcbiAgfVxuXG4gIGdldEFjdGlvbk9iamVjdChlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gKHRoaXMuX2FjdGlvbnNPYmogJiYgZWxlbWVudElkICYmIHRoaXMuX2FjdGlvbnNPYmpbZWxlbWVudElkXSlcbiAgICAgID8gdGhpcy5fYWN0aW9uc09ialtlbGVtZW50SWRdIDogbnVsbDtcbiAgfVxuXG4gIGdldFN1YlNlY3Rpb24oc2VjdGlvbkNvZGUsIHN1YnNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbiA9ICh0aGlzLl9zZWN0aW9uc09iaiAmJiB0aGlzLl9zZWN0aW9uc09ialtzZWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX3NlY3Rpb25zT2JqW3NlY3Rpb25Db2RlXSA6IG51bGw7XG4gICAgcmV0dXJuIChzZWN0aW9uKSA/IHNlY3Rpb24uZ2V0U3Vic2VjdGlvbihzdWJzZWN0aW9uQ29kZSkgOiBudWxsO1xuICB9XG5cbiAgZ2V0U2VjdGlvbihzZWN0aW9uQ29kZSkge1xuICAgIHJldHVybiAodGhpcy5fc2VjdGlvbnNPYmogJiYgdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdKVxuICAgICAgPyB0aGlzLl9zZWN0aW9uc09ialtzZWN0aW9uQ29kZV0gOiBudWxsO1xuICB9XG4gIHNlY3Rpb25zKCkgeyByZXR1cm4gdGhpcy5nZXRTZWN0aW9ucygpOyB9XG4gIHNlY3Rpb25UaXRsZXMoKSB7IHJldHVybiB0aGlzLmdldFNlY3Rpb25zVGl0bGVzKCk7IH1cblxuICBnZXRTZWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnM7XG4gIH1cblxuICBudW1TZWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0U2VjdGlvbnNUaXRsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zLm1hcChmb3JtU2VjdGlvbiA9PiBmb3JtU2VjdGlvbi5zZWN0aW9uVGl0bGUpO1xuICB9XG5cbiAgZ2V0U2VjdGlvbk9iamVjdChlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gKHRoaXMuX3NlY3Rpb25zT2JqICYmIGVsZW1lbnRJZCAmJiB0aGlzLl9zZWN0aW9uc09ialtlbGVtZW50SWRdKVxuICAgICAgPyB0aGlzLl9zZWN0aW9uc09ialtlbGVtZW50SWRdIDogbnVsbDtcbiAgfVxuICB0YWJsZXMoKSB7IHJldHVybiB0aGlzLmdldFRhYmxlcygpOyB9XG5cbiAgZ2V0VGFibGVzKCkge1xuICAgIHJldHVybiB0aGlzLl90YWJsZXM7XG4gIH1cblxuICBjbGVhbkRhdGEoKSB7XG4gICAgaWYgKHRoaXMuX2ZpZWxkcykge1xuICAgICAgZm9yIChjb25zdCByZWNvcmRGaWVsZCBvZiB0aGlzLl9maWVsZHMpIHtcbiAgICAgICAgcmVjb3JkRmllbGQuc2V0VmFsdWUocmVjb3JkRmllbGQuZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuX3RhYmxlcykge1xuICAgICAgZm9yIChjb25zdCBmb3JtVGFibGUgb2YgdGhpcy5fdGFibGVzKSB7XG4gICAgICAgIGZvcm1UYWJsZS5jbGVhbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNob3dTZWN0aW9uKHNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3Quc2hvdygpIDogbnVsbDtcbiAgfVxuXG4gIGhpZGVTZWN0aW9uKHNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuaGlkZSgpIDogbnVsbDtcbiAgfVxuXG4gIGFjdGl2ZVNlY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aXZlU2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zLmZpbmQoc2VjdGlvbk9iaiA9PiBzZWN0aW9uT2JqLmFjdGl2ZSk7XG4gICAgcmV0dXJuIGFjdGl2ZVNlY3Rpb24uc2VjdGlvbkNvZGU7XG4gIH1cblxuICBhY3RpdmF0ZVNlY3Rpb24oc2VjdGlvbkNvZGUpIHtcbiAgICB0aGlzLl9zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb25PYmogPT4ge1xuICAgICAgaWYgKHNlY3Rpb25PYmopIHsgc2VjdGlvbk9iai5pbmFjdGl2YXRlKCk7IH1cbiAgICB9KTtcbiAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5hY3RpdmF0ZSgpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dTZWN0aW9ucyhzZWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBzZWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShzZWN0aW9uQXJyYXkpKSA/IHNlY3Rpb25BcnJheSA6IFtzZWN0aW9uQXJyYXldO1xuICAgIHNlY3Rpb25OYW1lcy5mb3JFYWNoKHNlY3Rpb25Db2RlID0+IHRoaXMuc2hvd1NlY3Rpb24oc2VjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGhpZGVTZWN0aW9ucyhzZWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBzZWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShzZWN0aW9uQXJyYXkpKSA/IHNlY3Rpb25BcnJheSA6IFtzZWN0aW9uQXJyYXldO1xuICAgIHNlY3Rpb25OYW1lcy5mb3JFYWNoKHNlY3Rpb25Db2RlID0+IHRoaXMuaGlkZVNlY3Rpb24oc2VjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIHNob3dTdWJTZWN0aW9uKHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgIGNvbnN0IHN1YlNlY3Rpb25PYmplY3QgPSAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmdldFN1YnNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIDogbnVsbDtcbiAgICByZXR1cm4gKHN1YlNlY3Rpb25PYmplY3QpID8gc3ViU2VjdGlvbk9iamVjdC5zaG93KCkgOiBudWxsO1xuICB9XG5cbiAgaGlkZVN1YlNlY3Rpb24oc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuZ2V0U3Vic2VjdGlvbihzdWJTZWN0aW9uQ29kZSkgOiBudWxsO1xuICAgIHJldHVybiAoc3ViU2VjdGlvbk9iamVjdCkgPyBzdWJTZWN0aW9uT2JqZWN0LmhpZGUoKSA6IG51bGw7XG4gIH1cblxuICBzaG93U3ViU2VjdGlvbnMoc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25BcnJheSkge1xuICAgIGlmIChzdWJTZWN0aW9uQXJyYXkgJiYgc3ViU2VjdGlvbkFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uQ29kZSBvZiBzdWJTZWN0aW9uQXJyYXkpIHtcbiAgICAgICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuZ2V0U3Vic2VjdGlvbihzdWJTZWN0aW9uQ29kZSkgOiBudWxsO1xuICAgICAgICBpZiAoc3ViU2VjdGlvbk9iamVjdCkgeyBzdWJTZWN0aW9uT2JqZWN0LnNob3coKTsgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhpZGVTdWJTZWN0aW9ucyhzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkFycmF5KSB7XG4gICAgaWYgKHN1YlNlY3Rpb25BcnJheSAmJiBzdWJTZWN0aW9uQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgICBmb3IgKGNvbnN0IHN1YlNlY3Rpb25Db2RlIG9mIHN1YlNlY3Rpb25BcnJheSkge1xuICAgICAgICBjb25zdCBzdWJTZWN0aW9uT2JqZWN0ID0gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5nZXRTdWJzZWN0aW9uKHN1YlNlY3Rpb25Db2RlKSA6IG51bGw7XG4gICAgICAgIGlmIChzdWJTZWN0aW9uT2JqZWN0KSB7IHN1YlNlY3Rpb25PYmplY3QuaGlkZSgpOyB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvd0FjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgYWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRBY3Rpb25PYmplY3QoYWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChhY3Rpb25PYmplY3QpID8gYWN0aW9uT2JqZWN0LnNob3coKSA6IG51bGw7XG4gIH1cblxuICBoaWRlQWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBhY3Rpb25PYmplY3QgPSB0aGlzLmdldEFjdGlvbk9iamVjdChhY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKGFjdGlvbk9iamVjdCkgPyBhY3Rpb25PYmplY3QuaGlkZSgpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dBY3Rpb25zKGFjdGlvbkFycmF5KSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShhY3Rpb25BcnJheSkpID8gYWN0aW9uQXJyYXkgOiBbYWN0aW9uQXJyYXldO1xuICAgIGFjdGlvbk5hbWVzLmZvckVhY2goYWN0aW9uQ29kZSA9PiB0aGlzLnNob3dBY3Rpb24oYWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgaGlkZUFjdGlvbnMoYWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBhY3Rpb25OYW1lcyA9IChBcnJheS5pc0FycmF5KGFjdGlvbkFycmF5KSkgPyBhY3Rpb25BcnJheSA6IFthY3Rpb25BcnJheV07XG4gICAgYWN0aW9uTmFtZXMuZm9yRWFjaChhY3Rpb25Db2RlID0+IHRoaXMuaGlkZUFjdGlvbihhY3Rpb25Db2RlKSk7XG4gIH1cblxuICBlbmFibGVBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IGFjdGlvbk9iamVjdCA9IHRoaXMuZ2V0QWN0aW9uT2JqZWN0KGFjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoYWN0aW9uT2JqZWN0KSA/IGFjdGlvbk9iamVjdC5lbmFibGUoKSA6IG51bGw7XG4gIH1cblxuICBkaXNhYmxlQWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBhY3Rpb25PYmplY3QgPSB0aGlzLmdldEFjdGlvbk9iamVjdChhY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKGFjdGlvbk9iamVjdCkgPyBhY3Rpb25PYmplY3QuZGlzYWJsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGVuYWJsZUFjdGlvbnMoYWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBhY3Rpb25OYW1lcyA9IChBcnJheS5pc0FycmF5KGFjdGlvbkFycmF5KSkgPyBhY3Rpb25BcnJheSA6IFthY3Rpb25BcnJheV07XG4gICAgYWN0aW9uTmFtZXMuZm9yRWFjaChhY3Rpb25Db2RlID0+IHRoaXMuZW5hYmxlQWN0aW9uKGFjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGRpc2FibGVBY3Rpb25zKGFjdGlvbkFycmF5KSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShhY3Rpb25BcnJheSkpID8gYWN0aW9uQXJyYXkgOiBbYWN0aW9uQXJyYXldO1xuICAgIGFjdGlvbk5hbWVzLmZvckVhY2goYWN0aW9uQ29kZSA9PiB0aGlzLmRpc2FibGVBY3Rpb24oYWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgZW5hYmxlRmllbGQoZmllbGRDb2RlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5lbmFibGUoKSA6IG51bGw7XG4gIH1cblxuICBkaXNhYmxlRmllbGQoZmllbGRDb2RlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5kaXNhYmxlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0RmllbGRWYWx1ZShmaWVsZENvZGUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LmdldFZhbHVlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0RmllbGRzVmFsdWVzKGZpZWxkQ29kZXNBcnJheSkge1xuICAgIGlmICghZmllbGRDb2Rlc0FycmF5IHx8ICFBcnJheS5pc0FycmF5KGZpZWxkQ29kZXNBcnJheSkgfHwgZmllbGRDb2Rlc0FycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdE9iamVjdCA9IHt9O1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZENvZGVzQXJyYXkubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBmaWVsZENvZGUgPSBmaWVsZENvZGVzQXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKGZpZWxkQ29kZSkge1xuICAgICAgICByZXN1bHRPYmplY3RbZmllbGRDb2RlXSA9IHRoaXMuX2ZpZWxkc09iaj8uW2ZpZWxkQ29kZV0/LmdldFZhbHVlKCkgPz8gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdE9iamVjdDtcbiAgfVxuXG4gIGdldEZpZWxkT3B0aW9ucyhmaWVsZENvZGUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LmdldEZpZWxkT3B0aW9ucygpIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkVmFsdWUoZmllbGRDb2RlLCBmaWVsZFZhbHVlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5zZXRWYWx1ZShmaWVsZFZhbHVlKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSAnZXJyb3InKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGNvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3Quc2V0RXJyb3IoY29kZSwgbWVzc2FnZSwgdHlwZSkgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRJbnRyaW5zaWNFcnJvck1lc3NhZ2UoY29kZSwgbWVzc2FnZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChjb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LnNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZFJlcXVpcmVkKGZpZWxkQ29kZSwgcmVxdWlyZWQpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LnJlcXVpcmVkID0gcmVxdWlyZWQgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRFcnJvck1lc3NhZ2UoZmllbGRDb2RlLCBlcnJvck1lc3NhZ2UpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LnNldEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkT3B0aW9ucyhmaWVsZENvZGUsIG9wdGlvbnNBcnJheSwgaWRBdHRyaWJ1dGUsIG5hbWVBdHRyaWJ1dGUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICBpZiAoZmllbGRPYmplY3QgJiYgb3B0aW9uc0FycmF5ICYmIG9wdGlvbnNBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWVsZE9wdGlvbnMgPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgb3B0aW9uSXRlbSBvZiBvcHRpb25zQXJyYXkpIHtcbiAgICAgICAgY29uc3QgZmllbGRPcHRpb24gPSB7XG4gICAgICAgICAgZmllbGRPcHRpb25JZDogb3B0aW9uSXRlbVtpZEF0dHJpYnV0ZV0sXG4gICAgICAgICAgZmllbGRPcHRpb25WYWx1ZTogb3B0aW9uSXRlbVtuYW1lQXR0cmlidXRlXVxuICAgICAgICB9O1xuICAgICAgICBmaWVsZE9wdGlvbnMucHVzaChmaWVsZE9wdGlvbik7XG4gICAgICB9XG4gICAgICBmaWVsZE9iamVjdC5zZXRGaWVsZE9wdGlvbnMoZmllbGRPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWVsZFNldChmaWx0ZXJGdW5jLCBmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICBsZXQgZmllbGRVbml2ZXJzZSA9IG51bGw7XG4gICAgaWYgKGZpZWxkQXJyYXkgJiYgQXJyYXkuaXNBcnJheShmaWVsZEFycmF5KSAmJiBmaWVsZEFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGZpZWxkVW5pdmVyc2UgPSBmaWVsZEFycmF5O1xuICAgIH0gZWxzZSBpZiAoc2VjdGlvbkNvZGUgJiYgIXN1YlNlY3Rpb25Db2RlKSB7XG4gICAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICAgIGZpZWxkVW5pdmVyc2UgPSBzZWN0aW9uT2JqZWN0Py5nZXRGaWVsZE5hbWVzKCk7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9uQ29kZSAmJiBzdWJTZWN0aW9uQ29kZSkge1xuICAgICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U3ViU2VjdGlvbihzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICAgICAgZmllbGRVbml2ZXJzZSA9IHN1YlNlY3Rpb25PYmplY3Q/LmdldEZpZWxkTmFtZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGRVbml2ZXJzZSA9IHRoaXMuZ2V0RmllbGROYW1lcygpO1xuICAgIH1cbiAgICBpZiAoIWZpbHRlckZ1bmMpIHtcbiAgICAgIHJldHVybiBmaWVsZFVuaXZlcnNlO1xuICAgIH1cbiAgICByZXR1cm4gZmllbGRVbml2ZXJzZS5maWx0ZXIoZmxkID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmbGQpO1xuICAgICAgcmV0dXJuIChmaWVsZE9iamVjdCAmJiBmaWx0ZXJGdW5jKGZpZWxkT2JqZWN0KSk7XG4gICAgfSk7XG4gIH1cblxuICBhcHBseVByb2Nlc3NUb0ZpZWxkU2V0KHByb2Nlc3NGdW5jLCBmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICBjb25zdCBmaWVsZFVuaXZlcnNlID0gdGhpcy5nZXRGaWVsZFNldChudWxsLCBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICAgIGxldCBmaWVsZFNldFNpemUgPSAwO1xuICAgIGlmIChmaWVsZFVuaXZlcnNlICYmIHByb2Nlc3NGdW5jKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkQ29kZSBvZiBmaWVsZFVuaXZlcnNlKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgICAgICBpZiAoZmllbGRPYmplY3QpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvY2Vzc0Z1bmMoZmllbGRPYmplY3QpO1xuICAgICAgICAgICAgZmllbGRTZXRTaXplICs9IDE7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEVycm9yIHByb2Nlc2FuZG8gZnVuY2lvbiBlbiBjYW1wbyAke2ZpZWxkT2JqZWN0fTogJHtlfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmllbGRTZXRTaXplO1xuICB9XG5cbiAgc2hvd0ZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuc2hvdygpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGhpZGVGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLmhpZGUoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBzaG93TGFiZWxGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLnNob3dMYWJsZWwoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBoaWRlTGFiZWxGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLmhpZGVMYWJlbCgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuICAvLyBQYXJhIGRlcHJlY2FyXG4gIGVuYWJsZUVkaXRGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlRmllbGRzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cbiAgLy8gUGFyYSBkZXByZWNhclxuICBkaXNhYmxlRWRpdEZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlRmllbGRzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBlbmFibGVGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLmVuYWJsZSgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGRpc2FibGVGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLmRpc2FibGUoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBjbGVhbkZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZpZWxkT2JqZWN0ID0+IHtcbiAgICAgIGZpZWxkT2JqZWN0LmNsZWFuKCcnKTtcbiAgICAgIGZpZWxkT2JqZWN0LnNldEVycm9yTWVzc2FnZSgnJyk7XG4gICAgfSwgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGdldFJlcXVpcmVkRmllbGRzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IGZsZC5maWVsZFJlcXVpcmVkLCBmaWVsZEFycmF5LFxuICAgICAgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGdldFJlcXVpcmVkRW1wdHlGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IGZsZC5maWVsZFJlcXVpcmVkICYmIGZsZC5pc0VtcHR5KCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZ2V0Q2hhbmdlZEZpZWxkcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiAhZmxkLm91dHB1dE9ubHkgJiYgZmxkLmhhc0NoYW5nZWQoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBnZXRGaWVsZHNXaXRoVmFsaWRhdGlvbklzc3VlcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQuZXJyb3JDb2RlICE9PSBOT19FUlJPUixcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICB0YWdGaWVsZHNXaXRoRXJyb3IoZXJyb3JNZXNzYWdlLCBmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZpZWxkT2JqZWN0ID0+IHtcbiAgICAgIGZpZWxkT2JqZWN0LnNldEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpO1xuICAgIH0sIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBjbGVhbkVycm9yRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHRoaXMudGFnRmllbGRzV2l0aEVycm9yKCcnLCBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgdGFnRW1wdHlSZXF1aXJlZEZpZWxkcyhlcnJvck1lc3NhZ2UsIGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIGNvbnN0IHBlbmRpbmdGaWVsZHMgPSB0aGlzLmdldFJlcXVpcmVkRW1wdHlGaWVsZHMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgICBpZiAocGVuZGluZ0ZpZWxkcyAmJiBwZW5kaW5nRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGFnRmllbGRzV2l0aEVycm9yKGVycm9yTWVzc2FnZSwgcGVuZGluZ0ZpZWxkcyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2xlYW5UYWJsZSh0YWJsZUNvZGUpIHtcbiAgICBjb25zdCB0YWJsZU9iamVjdCA9IHRoaXMuZ2V0VGFibGVPYmplY3QodGFibGVDb2RlKTtcbiAgICByZXR1cm4gKHRhYmxlT2JqZWN0KSA/IHRhYmxlT2JqZWN0LmNsZWFuKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0VGFibGVSZWNvcmQodGFibGVDb2RlLCByZWNvcmRJZCkge1xuICAgIGNvbnN0IHRhYmxlT2JqZWN0ID0gdGhpcy5nZXRUYWJsZU9iamVjdCh0YWJsZUNvZGUpO1xuICAgIHJldHVybiAodGFibGVPYmplY3QpID8gdGFibGVPYmplY3QuZ2V0VGFibGVSZWNvcmQocmVjb3JkSWQpIDogbnVsbDtcbiAgfVxuXG4gIGhpZGVUYWJsZSh0YWJsZUNvZGUpIHtcbiAgICBjb25zdCB0YWJsZU9iamVjdCA9IHRoaXMuZ2V0VGFibGVPYmplY3QodGFibGVDb2RlKTtcbiAgICByZXR1cm4gKHRhYmxlT2JqZWN0KSA/IHRhYmxlT2JqZWN0LmhpZGUoKSA6IG51bGw7XG4gIH1cblxuICBzaG93VGFibGUodGFibGVDb2RlKSB7XG4gICAgY29uc3QgdGFibGVPYmplY3QgPSB0aGlzLmdldFRhYmxlT2JqZWN0KHRhYmxlQ29kZSk7XG4gICAgcmV0dXJuICh0YWJsZU9iamVjdCkgPyB0YWJsZU9iamVjdC5zaG93KCkgOiBudWxsO1xuICB9XG5cbiAgc2hvd1RhYmxlcyh0YWJsZUFycmF5KSB7XG4gICAgY29uc3QgdGFibGVOYW1lcyA9IChBcnJheS5pc0FycmF5KHRhYmxlQXJyYXkpKSA/IHRhYmxlQXJyYXkgOiBbdGFibGVBcnJheV07XG4gICAgdGFibGVOYW1lcy5mb3JFYWNoKHRhYmxlQ29kZSA9PiB0aGlzLnNob3dUYWJsZSh0YWJsZUNvZGUpKTtcbiAgfVxuXG4gIGhpZGVUYWJsZXModGFibGVBcnJheSkge1xuICAgIGNvbnN0IHRhYmxlTmFtZXMgPSAoQXJyYXkuaXNBcnJheSh0YWJsZUFycmF5KSkgPyB0YWJsZUFycmF5IDogW3RhYmxlQXJyYXldO1xuICAgIHRhYmxlTmFtZXMuZm9yRWFjaCh0YWJsZUNvZGUgPT4gdGhpcy5oaWRlVGFibGUodGFibGVDb2RlKSk7XG4gIH1cblxuICAvKiogcGF5bG9hZCBwYXJhIHNlcnZpY2lvcyBUdWFpbiAqL1xuICBnZXRQYXlsb2FkKCkge1xuICAgIGNvbnN0IGZvcm1EYXRhID0ge1xuICAgICAgZmllbGRzOiBbXSxcbiAgICAgIHRhYmxlczogW10sXG4gICAgfTtcbiAgICBjb25zdCBmb3JtRmllbGRzID0gdGhpcy5nZXRGaWVsZHMoKTtcbiAgICBpZiAoZm9ybUZpZWxkcyAmJiBmb3JtRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmllbGREZXNjcmlwdG9yIG9mIGZvcm1GaWVsZHMpIHtcbiAgICAgICAgaWYgKCFmaWVsZERlc2NyaXB0b3Iub3V0cHV0T25seSkge1xuICAgICAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IHtcbiAgICAgICAgICAgIGZpZWxkQ29kZTogZmllbGREZXNjcmlwdG9yLmZpZWxkQ29kZSxcbiAgICAgICAgICAgIGZpZWxkVmFsdWU6IGZpZWxkRGVzY3JpcHRvci5nZXRWYWx1ZSgpLFxuICAgICAgICAgICAgZWRpdGFibGU6ICFmaWVsZERlc2NyaXB0b3IuZGlzYWJsZWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmaWVsZERlc2NyaXB0b3IudmlzaWJsZSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmaWVsZERlc2NyaXB0b3IuZmllbGRSZXF1aXJlZCxcbiAgICAgICAgICAgIGZpZWxkT3B0aW9uczogJycsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBmb3JtRGF0YS5maWVsZHMucHVzaChmb3JtRmllbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHRhYmxlcyA9IHRoaXMuZ2V0VGFibGVzKCk7XG4gICAgaWYgKHRhYmxlcyAmJiB0YWJsZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCB0YWJsZURlc2NyaXB0b3Igb2YgdGFibGVzKSB7XG4gICAgICAgIGNvbnN0IGZvcm1UYWJsZSA9IHtcbiAgICAgICAgICB0YWJsZUNvZGU6IHRhYmxlRGVzY3JpcHRvci50YWJsZUNvZGUsXG4gICAgICAgICAgdmlzaWJsZTogdGFibGVEZXNjcmlwdG9yLnZpc2libGUsXG4gICAgICAgICAgY3VycmVudFBhZ2U6IHRhYmxlRGVzY3JpcHRvci5jdXJyZW50UGFnZSxcbiAgICAgICAgICByZXF1ZXN0ZWRQYWdlOiB0YWJsZURlc2NyaXB0b3IucmVxdWVzdGVkUGFnZSxcbiAgICAgICAgICByZWNvcmRzUGVyUGFnZTogdGFibGVEZXNjcmlwdG9yLnJlY29yZHNQZXJQYWdlLFxuICAgICAgICAgIGN1cnJlbnRGaWx0ZXI6IHRhYmxlRGVzY3JpcHRvci5jdXJyZW50RmlsdGVyLFxuICAgICAgICAgIHNvcnRpbmdDb2x1bW46IHRhYmxlRGVzY3JpcHRvci5zb3J0aW5nLmNvbHVtbk5hbWUsXG4gICAgICAgICAgc29ydGluZ0RpcmVjdGlvbjogdGFibGVEZXNjcmlwdG9yLnNvcnRpbmcuZGlyZWN0aW9uLFxuICAgICAgICB9O1xuICAgICAgICBmb3JtRGF0YS50YWJsZXMucHVzaChmb3JtVGFibGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cbn1cbiJdfQ==
|
|
569
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQWNwRCxNQUFNLE9BQU8sb0JBQW9CO0lBaUIvQixZQUFZLGtCQUFrQixFQUFFLFVBQVU7UUFWbEMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUd0QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsV0FBVyxFQUFFLEVBQUU7U0FDaEIsQ0FB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QUFDLGFBQWE7d0JBQ3ZDLFlBQVksRUFBRSxFQUFFO3FCQUNqQixDQUFDO29CQUNGLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNqQzthQUNGO1NBQ0Y7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0IsS0FBSyxNQUFNLGVBQWUsSUFBSSxNQUFNLEVBQUU7Z0JBQ3BDLE1BQU0sU0FBUyxHQUFHO29CQUNoQixTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVM7b0JBQ3BDLE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTztvQkFDaEMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxXQUFXO29CQUN4QyxhQUFhLEVBQUUsZUFBZSxDQUFDLGFBQWE7b0JBQzVDLGNBQWMsRUFBRSxlQUFlLENBQUMsY0FBYztvQkFDOUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxhQUFhO29CQUM1QyxhQUFhLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxVQUFVO29CQUNqRCxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVM7aUJBQ3BELENBQUM7Z0JBQ0YsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDakM7U0FDRjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlY29yZEZvcm1TZWN0aW9uIH0gZnJvbSAnLi9zZWN0aW9uJztcbmltcG9ydCB7IEZvcm1BY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XG5pbXBvcnQgeyBGaWVsZERlc2NyaXB0b3IgfSBmcm9tICcuL2ZpZWxkJztcbmltcG9ydCB7IFJlY29yZFRhYmxlIH0gZnJvbSAnLi90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBOT19FUlJPUiwgSEVBREVSIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5cbmludGVyZmFjZSBUcmFuc2l0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGVzdGluYXRpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN0YXRlRmxvdyB7XG4gIGRlZmF1bHRTdGF0ZTogc3RyaW5nO1xuICBzdGF0ZXM6IHN0cmluZ1tdO1xuICB0cmFuc2l0aW9uczogVHJhbnNpdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgRm9ybVN0cnVjdHVyZUFuZERhdGEge1xuICBzdGF0ZTogc3RyaW5nO1xuICBfbmFtZTogc3RyaW5nO1xuICBfZm9ybUNvbmZpZzogYW55O1xuICBwcml2YXRlIF90aXRsZTogc3RyaW5nO1xuICBwcml2YXRlIF9zdGF0ZUZsb3c6IFN0YXRlRmxvdztcbiAgcHJpdmF0ZSBfZmllbGRzOiBGaWVsZERlc2NyaXB0b3JbXTtcbiAgcHJpdmF0ZSBfZmllbGRzT2JqID0ge307XG4gIHByaXZhdGUgX2FjdGlvbnM6IEZvcm1BY3Rpb25bXTtcbiAgcHJpdmF0ZSBfYWN0aW9uc09iaiA9IHt9O1xuICBwcml2YXRlIF90YWJsZXM6IFJlY29yZFRhYmxlW107XG4gIHByaXZhdGUgX3RhYmxlT2JqID0ge307XG4gIHByaXZhdGUgX3NlY3Rpb25zOiBSZWNvcmRGb3JtU2VjdGlvbltdO1xuICBwcml2YXRlIF9zZWN0aW9uc09iaiA9IHt9O1xuICBwcml2YXRlIF9pbW11dGFibGVEYXRhID0ge307XG4gIHByaXZhdGUgX2V4dHJhSW5mbyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGRlZmluaXRpb25SZWNlaXZlZCwgZm9ybUNvbmZpZykge1xuICAgIHRoaXMuX2Zvcm1Db25maWcgPSBmb3JtQ29uZmlnO1xuICAgIHRoaXMuc3RhdGUgPSAnJztcbiAgICB0aGlzLl9hY3Rpb25zID0gW107XG4gICAgdGhpcy5fZmllbGRzID0gW107XG4gICAgdGhpcy5fdGFibGVzID0gW107XG4gICAgdGhpcy5fc2VjdGlvbnMgPSBbXTtcbiAgICB0aGlzLl9zdGF0ZUZsb3cgPSB7XG4gICAgICBkZWZhdWx0U3RhdGU6ICcnLFxuICAgICAgc3RhdGVzOiBbXSxcbiAgICAgIHRyYW5zaXRpb25zOiBbXSxcbiAgICB9O1xuICAgIGlmICghZGVmaW5pdGlvblJlY2VpdmVkKSB7IHJldHVybjsgfVxuICAgIHRoaXMuX25hbWUgPSAoZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0gJiYgZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybUNvZGUpXG4gICAgICA/IGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1Db2RlIDogdGhpcy5fbmFtZTtcbiAgICB0aGlzLl90aXRsZSA9IChkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybSAmJiBkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybS5mb3JtVGl0bGUpXG4gICAgICA/IGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1UaXRsZSA6ICcnO1xuICAgIHRoaXMuc2V0U3RhdGVGbG93KGRlZmluaXRpb25SZWNlaXZlZD8uc3RhdGVzLCBkZWZpbml0aW9uUmVjZWl2ZWQ/LnRyYW5zaXRpb25zLFxuICAgICAgZGVmaW5pdGlvblJlY2VpdmVkPy5kZWZhdWx0U3RhdGUpO1xuICAgIHRoaXMuaW1tdXRhYmxlRGF0YSA9IGRlZmluaXRpb25SZWNlaXZlZC5pbW11dGFibGVEYXRhO1xuICAgIHRoaXMuZXh0cmFJbmZvID0gZGVmaW5pdGlvblJlY2VpdmVkLmV4dHJhSW5mbztcblxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQuYWN0aW9ucykge1xuICAgICAgY29uc3QgZm9ybUFjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuYWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvblJlY2VpdmVkIG9mIGZvcm1BY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IGdsb2JhbEFjdGlvbiA9IG5ldyBGb3JtQWN0aW9uKGFjdGlvblJlY2VpdmVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgY29uc3QgZ2xvYmFsQWN0aW9uQ29kZSA9IGdsb2JhbEFjdGlvbi5hY3Rpb25Db2RlO1xuICAgICAgICBpZiAoZ2xvYmFsQWN0aW9uQ29kZSkge1xuICAgICAgICAgIHRoaXMuX2FjdGlvbnMucHVzaChnbG9iYWxBY3Rpb24pO1xuICAgICAgICAgIHRoaXMuX2FjdGlvbnNPYmpbZ2xvYmFsQWN0aW9uQ29kZV0gPSBnbG9iYWxBY3Rpb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgY29uc3QgZm9ybUZpZWxkcyA9IGRlZmluaXRpb25SZWNlaXZlZC5maWVsZHMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXMgfHwgb2JqRGVmLmVkaXRhYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi5maWVsZE1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IFsuLi52aXNpYmxlU3RhdGVzXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBmaWVsZFJlY2VpdmVkIG9mIGZvcm1GaWVsZHMpIHtcbiAgICAgICAgY29uc3QgZmllbGRUb0FkZCA9IG5ldyBGaWVsZERlc2NyaXB0b3IoZmllbGRSZWNlaXZlZCwgdGhpcy5fZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGZpZWxkQ29kZSA9IGZpZWxkVG9BZGQuZmllbGRDb2RlO1xuICAgICAgICBpZiAoZmllbGRDb2RlKSB7XG4gICAgICAgICAgdGhpcy5fZmllbGRzLnB1c2goZmllbGRUb0FkZCk7XG4gICAgICAgICAgdGhpcy5fZmllbGRzT2JqW2ZpZWxkQ29kZV0gPSBmaWVsZFRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMpIHtcbiAgICAgIGNvbnN0IHRhYmxlcyA9IGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXMgfHwgb2JqRGVmLmVkaXRhYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi50YWJsZU1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IFsuLi52aXNpYmxlU3RhdGVzXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMgfHwgdmlzaWJsZVN0YXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gdGhpcy5fZm9ybUNvbmZpZy5kZWZhdWx0U3RhdGVGbG93LnN0YXRlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCB0YWJsZVJlY2VpdmVkIG9mIHRhYmxlcykge1xuICAgICAgICBjb25zdCB0YWJsZVRvQWRkID0gbmV3IFJlY29yZFRhYmxlKHRhYmxlUmVjZWl2ZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICBjb25zdCB0YWJsZUNvZGUgPSB0YWJsZVRvQWRkLnRhYmxlQ29kZTtcbiAgICAgICAgaWYgKHRhYmxlQ29kZSkge1xuICAgICAgICAgIHRoaXMuX3RhYmxlcy5wdXNoKHRhYmxlVG9BZGQpO1xuICAgICAgICAgIHRoaXMuX3RhYmxlT2JqW3RhYmxlQ29kZV0gPSB0YWJsZVRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5zZWN0aW9ucykge1xuICAgICAgY29uc3QgZm9ybVNlY3Rpb25zID0gZGVmaW5pdGlvblJlY2VpdmVkLnNlY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi5zZWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBzZWN0aW9uUmVjZWl2ZWQgb2YgZm9ybVNlY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25Ub0FkZCA9IG5ldyBSZWNvcmRGb3JtU2VjdGlvbihzZWN0aW9uUmVjZWl2ZWQsIHRoaXMpO1xuICAgICAgICBjb25zdCBzZWN0aW9uQ29kZSA9IHNlY3Rpb25Ub0FkZC5zZWN0aW9uQ29kZTtcbiAgICAgICAgaWYgKHNlY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5fc2VjdGlvbnMucHVzaChzZWN0aW9uVG9BZGQpO1xuICAgICAgICAgIHRoaXMuX3NlY3Rpb25zT2JqW3NlY3Rpb25Db2RlXSA9IHNlY3Rpb25Ub0FkZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldCBpbW11dGFibGVEYXRhKGltbXV0YWJsZURhdGEpIHsgT2JqZWN0LmFzc2lnbih0aGlzLl9pbW11dGFibGVEYXRhLCBpbW11dGFibGVEYXRhKTsgfVxuICBzZXQgZXh0cmFJbmZvKGV4dHJhSW5mbykgeyBPYmplY3QuYXNzaWduKHRoaXMuX2V4dHJhSW5mbywgZXh0cmFJbmZvKTsgfVxuXG4gIGdldCBkZWZhdWx0U3RhdGUoKSB7IHJldHVybiB0aGlzLl9zdGF0ZUZsb3cuZGVmYXVsdFN0YXRlOyB9XG4gIGdldCB0aXRsZSgpIHsgcmV0dXJuIHRoaXMuX3RpdGxlOyB9XG4gIHNldCB0aXRsZSh0aXRsZSkgeyB0aGlzLl90aXRsZSA9IHRpdGxlOyB9XG4gIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfVxuICBzZXQgbmFtZShuYW1lKSB7IHRoaXMuX25hbWUgPSBuYW1lOyB9XG5cbiAgY2hhbmdlU3RhdGUobmV3U3RhdGUpIHtcbiAgICBpZiAoIW5ld1N0YXRlIHx8ICF0aGlzLnN1cHBvcnRTdGF0ZShuZXdTdGF0ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRyYW5zaXRpb25Ub0NoYW5nZSA9IHRoaXMuX3N0YXRlRmxvdy50cmFuc2l0aW9ucy5maW5kKHRybnMgPT5cbiAgICAgICAgdHJucy5zb3VyY2UgPT09IHRoaXMuc3RhdGUgJiYgdHJucy5kZXN0aW5hdGlvbiA9PT0gbmV3U3RhdGUpO1xuICAgICAgaWYgKHRyYW5zaXRpb25Ub0NoYW5nZSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5zdGF0ZSA9PT0gbmV3U3RhdGUpO1xuICB9XG5cbiAgc2V0U3RhdGVGbG93KHN0YXRlcz8sIHRyYW5zaXRpb25zPywgZGVmYXVsdFN0YXRlPykge1xuICAgIGlmICghc3RhdGVzIHx8ICF0cmFuc2l0aW9ucykge1xuICAgICAgdGhpcy5fc3RhdGVGbG93ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9mb3JtQ29uZmlnLmRlZmF1bHRTdGF0ZUZsb3cpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc3RhdGVGbG93LnN0YXRlcyA9IHN0YXRlcztcbiAgICB0aGlzLl9zdGF0ZUZsb3cuZGVmYXVsdFN0YXRlID0gZGVmYXVsdFN0YXRlIHx8IHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXNbMF07XG4gICAgdGhpcy5fc3RhdGVGbG93LnRyYW5zaXRpb25zID0gdHJhbnNpdGlvbnMubWFwKHRyYW5zaXRpb24gPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IHRyYW5zaXRpb24ubmFtZTtcbiAgICAgIGNvbnN0IHNvdXJjZSA9ICh0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzLmluY2x1ZGVzKHRyYW5zaXRpb24uc291cmNlKSkgPyB0cmFuc2l0aW9uLnNvdXJjZSA6ICcnO1xuICAgICAgY29uc3QgZGVzdGluYXRpb24gPSAodGhpcy5fc3RhdGVGbG93LnN0YXRlcy5pbmNsdWRlcyh0cmFuc2l0aW9uLmRlc3RpbmF0aW9uKSkgPyB0cmFuc2l0aW9uLmRlc3RpbmF0aW9uIDogJyc7XG4gICAgICByZXR1cm4geyBuYW1lLCBzb3VyY2UsIGRlc3RpbmF0aW9uIH07XG4gICAgfSkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5uYW1lICYmIGl0ZW0uc291cmNlICYmIGl0ZW0uZGVzdGluYXRpb24pO1xuICB9XG5cbiAgc3VwcG9ydFN0YXRlKHN0YXRlKSB7IHJldHVybiB0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzPy5pbmNsdWRlcyhzdGF0ZSk7IH1cbiAgc3VwcG9ydE1vZGUoc3RhdGUpIHsgcmV0dXJuIHRoaXMuc3VwcG9ydFN0YXRlKHN0YXRlKTsgfVxuXG5cbiAgZ2V0IGltbXV0YWJsZURhdGEoKSB7XG4gICAgY29uc3QgZGF0YSA9IHt9O1xuICAgIGNvbnN0IG9iamVjdE5hbWVzID0gT2JqZWN0LmtleXModGhpcy5faW1tdXRhYmxlRGF0YSk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG9iamVjdE5hbWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgbmFtZSA9IG9iamVjdE5hbWVzW2luZGV4XTtcbiAgICAgIGRhdGFbbmFtZV0gPSB0aGlzLmdldEltbXV0YWJsZUVsZW1lbnQobmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0SW1tdXRhYmxlRWxlbWVudChuYW1lKSB7IHJldHVybiB0aGlzLl9pbW11dGFibGVEYXRhPy5bbmFtZV0/LnZhbHVlID8/IG51bGw7IH1cbiAgZ2V0RXh0cmFJbmZvKG5hbWUpIHsgcmV0dXJuIHRoaXMuX2V4dHJhSW5mbz8uW25hbWVdPy52YWx1ZSA/PyBudWxsOyB9XG5cbiAgZ2V0IGV4dHJhSW5mbygpIHtcbiAgICBjb25zdCBkYXRhID0ge307XG4gICAgY29uc3Qgb2JqZWN0TmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLl9leHRyYUluZm8pO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBvYmplY3ROYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBvYmplY3ROYW1lc1tpbmRleF07XG4gICAgICBkYXRhW25hbWVdID0gdGhpcy5nZXRFeHRyYUluZm8obmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0RmllbGRzKCkgeyByZXR1cm4gdGhpcy5fZmllbGRzOyB9XG5cbiAgZ2V0U3RhdGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzO1xuICB9XG5cbiAgZ2V0RmllbGROYW1lcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5maWVsZENvZGUpO1xuICB9XG5cbiAgZ2V0QWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgfVxuXG4gIGdldEhlYWRlckFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuZmlsdGVyKGFjdGlvbkl0ZW0gPT4gYWN0aW9uSXRlbS5sb2NhdGlvbiA9PT0gSEVBREVSKTtcbiAgfVxuXG4gIGdldEZpZWxkT2JqZWN0KGVsZW1lbnRJZCkge1xuICAgIHJldHVybiAodGhpcy5fZmllbGRzT2JqICYmIGVsZW1lbnRJZCAmJiB0aGlzLl9maWVsZHNPYmpbZWxlbWVudElkXSlcbiAgICAgID8gdGhpcy5fZmllbGRzT2JqW2VsZW1lbnRJZF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0VGFibGVPYmplY3QoZWxlbWVudElkKSB7XG4gICAgcmV0dXJuICh0aGlzLl90YWJsZU9iaiAmJiBlbGVtZW50SWQgJiYgdGhpcy5fdGFibGVPYmpbZWxlbWVudElkXSlcbiAgICAgID8gdGhpcy5fdGFibGVPYmpbZWxlbWVudElkXSA6IG51bGw7XG4gIH1cblxuICBnZXRBY3Rpb25PYmplY3QoZWxlbWVudElkKSB7XG4gICAgcmV0dXJuICh0aGlzLl9hY3Rpb25zT2JqICYmIGVsZW1lbnRJZCAmJiB0aGlzLl9hY3Rpb25zT2JqW2VsZW1lbnRJZF0pXG4gICAgICA/IHRoaXMuX2FjdGlvbnNPYmpbZWxlbWVudElkXSA6IG51bGw7XG4gIH1cblxuICBnZXRTdWJTZWN0aW9uKHNlY3Rpb25Db2RlLCBzdWJzZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb24gPSAodGhpcy5fc2VjdGlvbnNPYmogJiYgdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdKVxuICAgICAgPyB0aGlzLl9zZWN0aW9uc09ialtzZWN0aW9uQ29kZV0gOiBudWxsO1xuICAgIHJldHVybiAoc2VjdGlvbikgPyBzZWN0aW9uLmdldFN1YnNlY3Rpb24oc3Vic2VjdGlvbkNvZGUpIDogbnVsbDtcbiAgfVxuXG4gIGdldFNlY3Rpb24oc2VjdGlvbkNvZGUpIHtcbiAgICByZXR1cm4gKHRoaXMuX3NlY3Rpb25zT2JqICYmIHRoaXMuX3NlY3Rpb25zT2JqW3NlY3Rpb25Db2RlXSlcbiAgICAgID8gdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdIDogbnVsbDtcbiAgfVxuICBzZWN0aW9ucygpIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbnMoKTsgfVxuICBzZWN0aW9uVGl0bGVzKCkgeyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uc1RpdGxlcygpOyB9XG5cbiAgZ2V0U2VjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zO1xuICB9XG5cbiAgbnVtU2VjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zLmxlbmd0aDtcbiAgfVxuXG4gIGdldFNlY3Rpb25zVGl0bGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5tYXAoZm9ybVNlY3Rpb24gPT4gZm9ybVNlY3Rpb24uc2VjdGlvblRpdGxlKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25PYmplY3QoZWxlbWVudElkKSB7XG4gICAgcmV0dXJuICh0aGlzLl9zZWN0aW9uc09iaiAmJiBlbGVtZW50SWQgJiYgdGhpcy5fc2VjdGlvbnNPYmpbZWxlbWVudElkXSlcbiAgICAgID8gdGhpcy5fc2VjdGlvbnNPYmpbZWxlbWVudElkXSA6IG51bGw7XG4gIH1cbiAgdGFibGVzKCkgeyByZXR1cm4gdGhpcy5nZXRUYWJsZXMoKTsgfVxuXG4gIGdldFRhYmxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGVzO1xuICB9XG5cbiAgY2xlYW5EYXRhKCkge1xuICAgIGlmICh0aGlzLl9maWVsZHMpIHtcbiAgICAgIGZvciAoY29uc3QgcmVjb3JkRmllbGQgb2YgdGhpcy5fZmllbGRzKSB7XG4gICAgICAgIHJlY29yZEZpZWxkLnNldFZhbHVlKHJlY29yZEZpZWxkLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLl90YWJsZXMpIHtcbiAgICAgIGZvciAoY29uc3QgZm9ybVRhYmxlIG9mIHRoaXMuX3RhYmxlcykge1xuICAgICAgICBmb3JtVGFibGUuY2xlYW4oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzaG93U2VjdGlvbihzZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LnNob3coKSA6IG51bGw7XG4gIH1cblxuICBoaWRlU2VjdGlvbihzZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmhpZGUoKSA6IG51bGw7XG4gIH1cblxuICBhY3RpdmVTZWN0aW9uKCkge1xuICAgIGNvbnN0IGFjdGl2ZVNlY3Rpb24gPSB0aGlzLl9zZWN0aW9ucy5maW5kKHNlY3Rpb25PYmogPT4gc2VjdGlvbk9iai5hY3RpdmUpO1xuICAgIHJldHVybiBhY3RpdmVTZWN0aW9uLnNlY3Rpb25Db2RlO1xuICB9XG5cbiAgYWN0aXZhdGVTZWN0aW9uKHNlY3Rpb25Db2RlKSB7XG4gICAgdGhpcy5fc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uT2JqID0+IHtcbiAgICAgIGlmIChzZWN0aW9uT2JqKSB7IHNlY3Rpb25PYmouaW5hY3RpdmF0ZSgpOyB9XG4gICAgfSk7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuYWN0aXZhdGUoKSA6IG51bGw7XG4gIH1cblxuICBzaG93U2VjdGlvbnMoc2VjdGlvbkFycmF5KSB7XG4gICAgY29uc3Qgc2VjdGlvbk5hbWVzID0gKEFycmF5LmlzQXJyYXkoc2VjdGlvbkFycmF5KSkgPyBzZWN0aW9uQXJyYXkgOiBbc2VjdGlvbkFycmF5XTtcbiAgICBzZWN0aW9uTmFtZXMuZm9yRWFjaChzZWN0aW9uQ29kZSA9PiB0aGlzLnNob3dTZWN0aW9uKHNlY3Rpb25Db2RlKSk7XG4gIH1cblxuICBoaWRlU2VjdGlvbnMoc2VjdGlvbkFycmF5KSB7XG4gICAgY29uc3Qgc2VjdGlvbk5hbWVzID0gKEFycmF5LmlzQXJyYXkoc2VjdGlvbkFycmF5KSkgPyBzZWN0aW9uQXJyYXkgOiBbc2VjdGlvbkFycmF5XTtcbiAgICBzZWN0aW9uTmFtZXMuZm9yRWFjaChzZWN0aW9uQ29kZSA9PiB0aGlzLmhpZGVTZWN0aW9uKHNlY3Rpb25Db2RlKSk7XG4gIH1cblxuICBzaG93U3ViU2VjdGlvbihzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICBjb25zdCBzdWJTZWN0aW9uT2JqZWN0ID0gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5nZXRTdWJzZWN0aW9uKHN1YlNlY3Rpb25Db2RlKSA6IG51bGw7XG4gICAgcmV0dXJuIChzdWJTZWN0aW9uT2JqZWN0KSA/IHN1YlNlY3Rpb25PYmplY3Quc2hvdygpIDogbnVsbDtcbiAgfVxuXG4gIGhpZGVTdWJTZWN0aW9uKHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgIGNvbnN0IHN1YlNlY3Rpb25PYmplY3QgPSAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmdldFN1YnNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIDogbnVsbDtcbiAgICByZXR1cm4gKHN1YlNlY3Rpb25PYmplY3QpID8gc3ViU2VjdGlvbk9iamVjdC5oaWRlKCkgOiBudWxsO1xuICB9XG5cbiAgc2hvd1N1YlNlY3Rpb25zKHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQXJyYXkpIHtcbiAgICBpZiAoc3ViU2VjdGlvbkFycmF5ICYmIHN1YlNlY3Rpb25BcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbkNvZGUgb2Ygc3ViU2VjdGlvbkFycmF5KSB7XG4gICAgICAgIGNvbnN0IHN1YlNlY3Rpb25PYmplY3QgPSAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmdldFN1YnNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIDogbnVsbDtcbiAgICAgICAgaWYgKHN1YlNlY3Rpb25PYmplY3QpIHsgc3ViU2VjdGlvbk9iamVjdC5zaG93KCk7IH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoaWRlU3ViU2VjdGlvbnMoc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25BcnJheSkge1xuICAgIGlmIChzdWJTZWN0aW9uQXJyYXkgJiYgc3ViU2VjdGlvbkFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uQ29kZSBvZiBzdWJTZWN0aW9uQXJyYXkpIHtcbiAgICAgICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuZ2V0U3Vic2VjdGlvbihzdWJTZWN0aW9uQ29kZSkgOiBudWxsO1xuICAgICAgICBpZiAoc3ViU2VjdGlvbk9iamVjdCkgeyBzdWJTZWN0aW9uT2JqZWN0LmhpZGUoKTsgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNob3dBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IGFjdGlvbk9iamVjdCA9IHRoaXMuZ2V0QWN0aW9uT2JqZWN0KGFjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoYWN0aW9uT2JqZWN0KSA/IGFjdGlvbk9iamVjdC5zaG93KCkgOiBudWxsO1xuICB9XG5cbiAgaGlkZUFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgYWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRBY3Rpb25PYmplY3QoYWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChhY3Rpb25PYmplY3QpID8gYWN0aW9uT2JqZWN0LmhpZGUoKSA6IG51bGw7XG4gIH1cblxuICBzaG93QWN0aW9ucyhhY3Rpb25BcnJheSkge1xuICAgIGNvbnN0IGFjdGlvbk5hbWVzID0gKEFycmF5LmlzQXJyYXkoYWN0aW9uQXJyYXkpKSA/IGFjdGlvbkFycmF5IDogW2FjdGlvbkFycmF5XTtcbiAgICBhY3Rpb25OYW1lcy5mb3JFYWNoKGFjdGlvbkNvZGUgPT4gdGhpcy5zaG93QWN0aW9uKGFjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGhpZGVBY3Rpb25zKGFjdGlvbkFycmF5KSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShhY3Rpb25BcnJheSkpID8gYWN0aW9uQXJyYXkgOiBbYWN0aW9uQXJyYXldO1xuICAgIGFjdGlvbk5hbWVzLmZvckVhY2goYWN0aW9uQ29kZSA9PiB0aGlzLmhpZGVBY3Rpb24oYWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgZW5hYmxlQWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBhY3Rpb25PYmplY3QgPSB0aGlzLmdldEFjdGlvbk9iamVjdChhY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKGFjdGlvbk9iamVjdCkgPyBhY3Rpb25PYmplY3QuZW5hYmxlKCkgOiBudWxsO1xuICB9XG5cbiAgZGlzYWJsZUFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgYWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRBY3Rpb25PYmplY3QoYWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChhY3Rpb25PYmplY3QpID8gYWN0aW9uT2JqZWN0LmRpc2FibGUoKSA6IG51bGw7XG4gIH1cblxuICBlbmFibGVBY3Rpb25zKGFjdGlvbkFycmF5KSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShhY3Rpb25BcnJheSkpID8gYWN0aW9uQXJyYXkgOiBbYWN0aW9uQXJyYXldO1xuICAgIGFjdGlvbk5hbWVzLmZvckVhY2goYWN0aW9uQ29kZSA9PiB0aGlzLmVuYWJsZUFjdGlvbihhY3Rpb25Db2RlKSk7XG4gIH1cblxuICBkaXNhYmxlQWN0aW9ucyhhY3Rpb25BcnJheSkge1xuICAgIGNvbnN0IGFjdGlvbk5hbWVzID0gKEFycmF5LmlzQXJyYXkoYWN0aW9uQXJyYXkpKSA/IGFjdGlvbkFycmF5IDogW2FjdGlvbkFycmF5XTtcbiAgICBhY3Rpb25OYW1lcy5mb3JFYWNoKGFjdGlvbkNvZGUgPT4gdGhpcy5kaXNhYmxlQWN0aW9uKGFjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGVuYWJsZUZpZWxkKGZpZWxkQ29kZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3QuZW5hYmxlKCkgOiBudWxsO1xuICB9XG5cbiAgZGlzYWJsZUZpZWxkKGZpZWxkQ29kZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3QuZGlzYWJsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldEZpZWxkVmFsdWUoZmllbGRDb2RlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5nZXRWYWx1ZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldEZpZWxkc1ZhbHVlcyhmaWVsZENvZGVzQXJyYXkpIHtcbiAgICBpZiAoIWZpZWxkQ29kZXNBcnJheSB8fCAhQXJyYXkuaXNBcnJheShmaWVsZENvZGVzQXJyYXkpIHx8IGZpZWxkQ29kZXNBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHRPYmplY3QgPSB7fTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRDb2Rlc0FycmF5Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgZmllbGRDb2RlID0gZmllbGRDb2Rlc0FycmF5W2luZGV4XTtcbiAgICAgIGlmIChmaWVsZENvZGUpIHtcbiAgICAgICAgcmVzdWx0T2JqZWN0W2ZpZWxkQ29kZV0gPSB0aGlzLl9maWVsZHNPYmo/LltmaWVsZENvZGVdPy5nZXRWYWx1ZSgpID8/IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRPYmplY3Q7XG4gIH1cblxuICBnZXRGaWVsZE9wdGlvbnMoZmllbGRDb2RlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5nZXRGaWVsZE9wdGlvbnMoKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZFZhbHVlKGZpZWxkQ29kZSwgZmllbGRWYWx1ZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3Quc2V0VmFsdWUoZmllbGRWYWx1ZSkgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRFcnJvcihjb2RlLCBtZXNzYWdlLCB0eXBlID0gJ2Vycm9yJykge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChjb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LnNldEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUpIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkSW50cmluc2ljRXJyb3JNZXNzYWdlKGNvZGUsIG1lc3NhZ2UpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoY29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5zZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZSkgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRSZXF1aXJlZChmaWVsZENvZGUsIHJlcXVpcmVkKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5yZXF1aXJlZCA9IHJlcXVpcmVkIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkRXJyb3JNZXNzYWdlKGZpZWxkQ29kZSwgZXJyb3JNZXNzYWdlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5zZXRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZE9wdGlvbnMoZmllbGRDb2RlLCBvcHRpb25zQXJyYXksIGlkQXR0cmlidXRlLCBuYW1lQXR0cmlidXRlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgaWYgKGZpZWxkT2JqZWN0ICYmIG9wdGlvbnNBcnJheSAmJiBvcHRpb25zQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmllbGRPcHRpb25zID0gW107XG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbkl0ZW0gb2Ygb3B0aW9uc0FycmF5KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkT3B0aW9uID0ge1xuICAgICAgICAgIGZpZWxkT3B0aW9uSWQ6IG9wdGlvbkl0ZW1baWRBdHRyaWJ1dGVdLFxuICAgICAgICAgIGZpZWxkT3B0aW9uVmFsdWU6IG9wdGlvbkl0ZW1bbmFtZUF0dHJpYnV0ZV1cbiAgICAgICAgfTtcbiAgICAgICAgZmllbGRPcHRpb25zLnB1c2goZmllbGRPcHRpb24pO1xuICAgICAgfVxuICAgICAgZmllbGRPYmplY3Quc2V0RmllbGRPcHRpb25zKGZpZWxkT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmllbGRTZXQoZmlsdGVyRnVuYywgZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgbGV0IGZpZWxkVW5pdmVyc2UgPSBudWxsO1xuICAgIGlmIChmaWVsZEFycmF5ICYmIEFycmF5LmlzQXJyYXkoZmllbGRBcnJheSkgJiYgZmllbGRBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICBmaWVsZFVuaXZlcnNlID0gZmllbGRBcnJheTtcbiAgICB9IGVsc2UgaWYgKHNlY3Rpb25Db2RlICYmICFzdWJTZWN0aW9uQ29kZSkge1xuICAgICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgICBmaWVsZFVuaXZlcnNlID0gc2VjdGlvbk9iamVjdD8uZ2V0RmllbGROYW1lcygpO1xuICAgIH0gZWxzZSBpZiAoc2VjdGlvbkNvZGUgJiYgc3ViU2VjdGlvbkNvZGUpIHtcbiAgICAgIGNvbnN0IHN1YlNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFN1YlNlY3Rpb24oc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgICAgIGZpZWxkVW5pdmVyc2UgPSBzdWJTZWN0aW9uT2JqZWN0Py5nZXRGaWVsZE5hbWVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkVW5pdmVyc2UgPSB0aGlzLmdldEZpZWxkTmFtZXMoKTtcbiAgICB9XG4gICAgaWYgKCFmaWx0ZXJGdW5jKSB7XG4gICAgICByZXR1cm4gZmllbGRVbml2ZXJzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkVW5pdmVyc2UuZmlsdGVyKGZsZCA9PiB7XG4gICAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmxkKTtcbiAgICAgIHJldHVybiAoZmllbGRPYmplY3QgJiYgZmlsdGVyRnVuYyhmaWVsZE9iamVjdCkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXBwbHlQcm9jZXNzVG9GaWVsZFNldChwcm9jZXNzRnVuYywgZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgY29uc3QgZmllbGRVbml2ZXJzZSA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgICBsZXQgZmllbGRTZXRTaXplID0gMDtcbiAgICBpZiAoZmllbGRVbml2ZXJzZSAmJiBwcm9jZXNzRnVuYykge1xuICAgICAgZm9yIChjb25zdCBmaWVsZENvZGUgb2YgZmllbGRVbml2ZXJzZSkge1xuICAgICAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICAgICAgaWYgKGZpZWxkT2JqZWN0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHByb2Nlc3NGdW5jKGZpZWxkT2JqZWN0KTtcbiAgICAgICAgICAgIGZpZWxkU2V0U2l6ZSArPSAxO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBFcnJvciBwcm9jZXNhbmRvIGZ1bmNpb24gZW4gY2FtcG8gJHtmaWVsZE9iamVjdH06ICR7ZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkU2V0U2l6ZTtcbiAgfVxuXG4gIHNob3dGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLnNob3coKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBoaWRlRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5oaWRlKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgc2hvd0xhYmVsRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5zaG93TGFibGVsKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgaGlkZUxhYmVsRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5oaWRlTGFiZWwoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cbiAgLy8gUGFyYSBkZXByZWNhclxuICBlbmFibGVFZGl0RmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZUZpZWxkcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG4gIC8vIFBhcmEgZGVwcmVjYXJcbiAgZGlzYWJsZUVkaXRGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZUZpZWxkcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZW5hYmxlRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5lbmFibGUoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBkaXNhYmxlRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5kaXNhYmxlKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgY2xlYW5GaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmaWVsZE9iamVjdCA9PiB7XG4gICAgICBmaWVsZE9iamVjdC5jbGVhbignJyk7XG4gICAgICBmaWVsZE9iamVjdC5zZXRFcnJvck1lc3NhZ2UoJycpO1xuICAgIH0sIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBnZXRSZXF1aXJlZEZpZWxkcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQuZmllbGRSZXF1aXJlZCwgZmllbGRBcnJheSxcbiAgICAgIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBnZXRSZXF1aXJlZEVtcHR5RmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQuZmllbGRSZXF1aXJlZCAmJiBmbGQuaXNFbXB0eSgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGdldENoYW5nZWRGaWVsZHMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gIWZsZC5vdXRwdXRPbmx5ICYmIGZsZC5oYXNDaGFuZ2VkKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZ2V0RmllbGRzV2l0aFZhbGlkYXRpb25Jc3N1ZXMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkLmVycm9yQ29kZSAhPT0gTk9fRVJST1IsXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgdGFnRmllbGRzV2l0aEVycm9yKGVycm9yTWVzc2FnZSwgZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmaWVsZE9iamVjdCA9PiB7XG4gICAgICBmaWVsZE9iamVjdC5zZXRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTtcbiAgICB9LCBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgY2xlYW5FcnJvckZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICB0aGlzLnRhZ0ZpZWxkc1dpdGhFcnJvcignJywgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIHRhZ0VtcHR5UmVxdWlyZWRGaWVsZHMoZXJyb3JNZXNzYWdlLCBmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICBjb25zdCBwZW5kaW5nRmllbGRzID0gdGhpcy5nZXRSZXF1aXJlZEVtcHR5RmllbGRzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gICAgaWYgKHBlbmRpbmdGaWVsZHMgJiYgcGVuZGluZ0ZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRhZ0ZpZWxkc1dpdGhFcnJvcihlcnJvck1lc3NhZ2UsIHBlbmRpbmdGaWVsZHMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNsZWFuVGFibGUodGFibGVDb2RlKSB7XG4gICAgY29uc3QgdGFibGVPYmplY3QgPSB0aGlzLmdldFRhYmxlT2JqZWN0KHRhYmxlQ29kZSk7XG4gICAgcmV0dXJuICh0YWJsZU9iamVjdCkgPyB0YWJsZU9iamVjdC5jbGVhbigpIDogbnVsbDtcbiAgfVxuXG4gIGdldFRhYmxlUmVjb3JkKHRhYmxlQ29kZSwgcmVjb3JkSWQpIHtcbiAgICBjb25zdCB0YWJsZU9iamVjdCA9IHRoaXMuZ2V0VGFibGVPYmplY3QodGFibGVDb2RlKTtcbiAgICByZXR1cm4gKHRhYmxlT2JqZWN0KSA/IHRhYmxlT2JqZWN0LmdldFRhYmxlUmVjb3JkKHJlY29yZElkKSA6IG51bGw7XG4gIH1cblxuICBoaWRlVGFibGUodGFibGVDb2RlKSB7XG4gICAgY29uc3QgdGFibGVPYmplY3QgPSB0aGlzLmdldFRhYmxlT2JqZWN0KHRhYmxlQ29kZSk7XG4gICAgcmV0dXJuICh0YWJsZU9iamVjdCkgPyB0YWJsZU9iamVjdC5oaWRlKCkgOiBudWxsO1xuICB9XG5cbiAgc2hvd1RhYmxlKHRhYmxlQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlT2JqZWN0ID0gdGhpcy5nZXRUYWJsZU9iamVjdCh0YWJsZUNvZGUpO1xuICAgIHJldHVybiAodGFibGVPYmplY3QpID8gdGFibGVPYmplY3Quc2hvdygpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dUYWJsZXModGFibGVBcnJheSkge1xuICAgIGNvbnN0IHRhYmxlTmFtZXMgPSAoQXJyYXkuaXNBcnJheSh0YWJsZUFycmF5KSkgPyB0YWJsZUFycmF5IDogW3RhYmxlQXJyYXldO1xuICAgIHRhYmxlTmFtZXMuZm9yRWFjaCh0YWJsZUNvZGUgPT4gdGhpcy5zaG93VGFibGUodGFibGVDb2RlKSk7XG4gIH1cblxuICBoaWRlVGFibGVzKHRhYmxlQXJyYXkpIHtcbiAgICBjb25zdCB0YWJsZU5hbWVzID0gKEFycmF5LmlzQXJyYXkodGFibGVBcnJheSkpID8gdGFibGVBcnJheSA6IFt0YWJsZUFycmF5XTtcbiAgICB0YWJsZU5hbWVzLmZvckVhY2godGFibGVDb2RlID0+IHRoaXMuaGlkZVRhYmxlKHRhYmxlQ29kZSkpO1xuICB9XG5cbiAgLyoqIHBheWxvYWQgcGFyYSBzZXJ2aWNpb3MgVHVhaW4gKi9cbiAgZ2V0UGF5bG9hZCgpIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IHtcbiAgICAgIGZpZWxkczogW10sXG4gICAgICB0YWJsZXM6IFtdLFxuICAgIH07XG4gICAgY29uc3QgZm9ybUZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKCk7XG4gICAgaWYgKGZvcm1GaWVsZHMgJiYgZm9ybUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkRGVzY3JpcHRvciBvZiBmb3JtRmllbGRzKSB7XG4gICAgICAgIGlmICghZmllbGREZXNjcmlwdG9yLm91dHB1dE9ubHkpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRmllbGQgPSB7XG4gICAgICAgICAgICBmaWVsZENvZGU6IGZpZWxkRGVzY3JpcHRvci5maWVsZENvZGUsXG4gICAgICAgICAgICBmaWVsZFZhbHVlOiBmaWVsZERlc2NyaXB0b3IuZ2V0VmFsdWUoKSxcbiAgICAgICAgICAgIGVkaXRhYmxlOiAhZmllbGREZXNjcmlwdG9yLmRpc2FibGVkLFxuICAgICAgICAgICAgdmlzaWJsZTogZmllbGREZXNjcmlwdG9yLnZpc2libGUsXG4gICAgICAgICAgICByZXF1aXJlZDogZmllbGREZXNjcmlwdG9yLmZpZWxkUmVxdWlyZWQsXG4gICAgICAgICAgICBmaWVsZE9wdGlvbnM6ICcnLFxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9ybURhdGEuZmllbGRzLnB1c2goZm9ybUZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB0YWJsZXMgPSB0aGlzLmdldFRhYmxlcygpO1xuICAgIGlmICh0YWJsZXMgJiYgdGFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgdGFibGVEZXNjcmlwdG9yIG9mIHRhYmxlcykge1xuICAgICAgICBjb25zdCBmb3JtVGFibGUgPSB7XG4gICAgICAgICAgdGFibGVDb2RlOiB0YWJsZURlc2NyaXB0b3IudGFibGVDb2RlLFxuICAgICAgICAgIHZpc2libGU6IHRhYmxlRGVzY3JpcHRvci52aXNpYmxlLFxuICAgICAgICAgIGN1cnJlbnRQYWdlOiB0YWJsZURlc2NyaXB0b3IuY3VycmVudFBhZ2UsXG4gICAgICAgICAgcmVxdWVzdGVkUGFnZTogdGFibGVEZXNjcmlwdG9yLnJlcXVlc3RlZFBhZ2UsXG4gICAgICAgICAgcmVjb3Jkc1BlclBhZ2U6IHRhYmxlRGVzY3JpcHRvci5yZWNvcmRzUGVyUGFnZSxcbiAgICAgICAgICBjdXJyZW50RmlsdGVyOiB0YWJsZURlc2NyaXB0b3IuY3VycmVudEZpbHRlcixcbiAgICAgICAgICBzb3J0aW5nQ29sdW1uOiB0YWJsZURlc2NyaXB0b3Iuc29ydGluZy5jb2x1bW5OYW1lLFxuICAgICAgICAgIHNvcnRpbmdEaXJlY3Rpb246IHRhYmxlRGVzY3JpcHRvci5zb3J0aW5nLmRpcmVjdGlvbixcbiAgICAgICAgfTtcbiAgICAgICAgZm9ybURhdGEudGFibGVzLnB1c2goZm9ybVRhYmxlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xuICB9XG59XG4iXX0=
|