@wavemaker/app-ng-runtime 11.15.4-rc.647493 → 11.15.5-rc.253
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/components/base/bundles/index.umd.js +4 -13
- package/components/base/esm2022/utils/widget-utils.mjs +5 -4
- package/components/base/esm2022/widgets/common/base/base.component.mjs +1 -11
- package/components/base/fesm2022/index.mjs +4 -13
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/bundles/index.umd.js +1 -1
- package/components/containers/tabs/esm2022/tabs.animator.mjs +2 -2
- package/components/containers/tabs/fesm2022/index.mjs +1 -1
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/data/form/bundles/index.umd.js +6 -3
- package/components/data/form/esm2022/form.component.mjs +5 -2
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +3 -3
- package/components/data/form/fesm2022/index.mjs +6 -3
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/live-form/live-form.directive.d.ts +1 -1
- package/components/data/list/bundles/index.umd.js +6 -0
- package/components/data/list/esm2022/list.component.mjs +7 -1
- package/components/data/list/fesm2022/index.mjs +6 -0
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/bundles/index.umd.js +45 -7
- package/components/data/pagination/esm2022/pagination.component.mjs +46 -8
- package/components/data/pagination/fesm2022/index.mjs +45 -7
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/pagination.component.d.ts +1 -0
- package/components/data/table/bundles/index.umd.js +228 -20
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +6 -1
- package/components/data/table/esm2022/table-cud.directive.mjs +14 -3
- package/components/data/table/esm2022/table-filter.directive.mjs +6 -1
- package/components/data/table/esm2022/table.component.mjs +206 -19
- package/components/data/table/fesm2022/index.mjs +229 -21
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table.component.d.ts +16 -1
- package/core/bundles/index.umd.js +7 -1
- package/core/esm2022/utils/dom.mjs +4 -2
- package/core/esm2022/utils/utils.mjs +5 -1
- package/core/fesm2022/index.mjs +7 -1
- package/core/fesm2022/index.mjs.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +45 -12
- package/runtime/base/components/app-component/app.component.d.ts +1 -1
- package/runtime/base/esm2022/components/app-component/app.component.mjs +23 -12
- package/runtime/base/esm2022/guards/role.guard.mjs +2 -2
- package/runtime/base/esm2022/services/app.manager.service.mjs +23 -1
- package/runtime/base/fesm2022/index.mjs +45 -12
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/services/app.manager.service.d.ts +5 -0
- package/scripts/datatable/datatable.js +282 -44
- package/transpiler/bundles/index.umd.js +3 -0
- package/transpiler/esm2022/build.mjs +4 -1
- package/transpiler/fesm2022/index.mjs +3 -0
- package/transpiler/fesm2022/index.mjs.map +1 -1
|
@@ -138,7 +138,7 @@ export class LiveFormDirective {
|
|
|
138
138
|
href += '?' + Math.random();
|
|
139
139
|
return href;
|
|
140
140
|
}
|
|
141
|
-
setFormData(dataObj, formFields) {
|
|
141
|
+
setFormData(dataObj, formFields, formData) {
|
|
142
142
|
if (!dataObj) {
|
|
143
143
|
return;
|
|
144
144
|
}
|
|
@@ -154,7 +154,7 @@ export class LiveFormDirective {
|
|
|
154
154
|
field.value = isString(value) ? '' : value;
|
|
155
155
|
}
|
|
156
156
|
else {
|
|
157
|
-
this.form.setFieldValue(field, dataObj);
|
|
157
|
+
this.form.setFieldValue(field, dataObj, formData);
|
|
158
158
|
}
|
|
159
159
|
});
|
|
160
160
|
this.savePrevDataValues();
|
|
@@ -499,4 +499,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
499
499
|
type: HostListener,
|
|
500
500
|
args: ['keydown', ['$event']]
|
|
501
501
|
}] } });
|
|
502
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1mb3JtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL2Zvcm0vc3JjL2xpdmUtZm9ybS9saXZlLWZvcm0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RyxPQUFPLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEwsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVNLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7OztBQUVoRyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLElBQUksSUFBSSxDQUFD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aUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNkLFFBQVEsRUFBRSxjQUFjO2lCQUMzQjs7MEJBYVEsSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDNUIsUUFBUTs7MEJBR1IsU0FBUzsyQkFBQyxZQUFZO3lDQVRVLGdCQUFnQjtzQkFBcEQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdCwgT3B0aW9uYWwsIFNlbGYsIEF0dHJpYnV0ZSwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgJGFwcERpZ2VzdCwgQWJzdHJhY3REaWFsb2dTZXJ2aWNlLCBEYXRhU291cmNlLCBEYXRhVHlwZSwgZGVib3VuY2UsIGdldENsb25lZE9iamVjdCwgZ2V0RmlsZXMsIGdldFZhbGlkRGF0ZU9iamVjdCwgaXNEYXRlVGltZVR5cGUsIGlzRGVmaW5lZCwgaXNFbXB0eU9iamVjdCB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IEFMTEZJRUxEUywgYXBwbHlGaWx0ZXJPbkZpZWxkLCBmZXRjaFJlbGF0ZWRGaWVsZERhdGEsIGdldERpc3RpbmN0VmFsdWVzRm9yRmllbGQsIGlzRGF0YVNldFdpZGdldCwgTGl2ZV9PcGVyYXRpb25zLCBwYXJzZVZhbHVlQnlUeXBlLCBwZXJmb3JtRGF0YU9wZXJhdGlvbiwgVG9EYXRlUGlwZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgTGl2ZVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9saXZlLXRhYmxlJztcblxuaW1wb3J0IHsgcmVnaXN0ZXJMaXZlRm9ybVByb3BzIH0gZnJvbSAnLi4vZm9ybS5wcm9wcyc7XG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtmb3JFYWNoLCBmcm9tUGFpcnMsIGdldCwgaXNFbXB0eSwgaXNFcXVhbCwgaXNTdHJpbmcsIG1hcCwgc29tZSwgc3BsaXR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuY29uc3QgaXNUaW1lVHlwZSA9IGZpZWxkID0+IGZpZWxkLndpZGdldHR5cGUgPT09IERhdGFUeXBlLlRJTUUgfHwgKGZpZWxkLnR5cGUgPT09IERhdGFUeXBlLlRJTUUgJiYgIWZpZWxkLndpZGdldHR5cGUpO1xuY29uc3QgZ2V0VmFsaWRUaW1lID0gdmFsID0+IHtcbiAgICBpZiAodmFsKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSAobmV3IERhdGUoKSkudG9EYXRlU3RyaW5nKCk7XG4gICAgICAgIHJldHVybiAobmV3IERhdGUoYCR7ZGF0ZX0gJHt2YWx9YCkpLmdldFRpbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dtTGl2ZUZvcm1dJ1xufSlcbmV4cG9ydCBjbGFzcyBMaXZlRm9ybURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgc3RhdGljICBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlckxpdmVGb3JtUHJvcHMoKTtcbiAgICBwcml2YXRlIF90cmlnZ2VyZWRCeVVzZXI6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGVib3VuY2VkU2F2ZVByZXZEYXRhVmFsdWVzID0gZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmVQcmV2RGF0YVZhbHVlcygpO1xuICAgIH0sIDI1MCk7XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLl90cmlnZ2VyZWRCeVVzZXIgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAU2VsZigpIEBJbmplY3QoRm9ybUNvbXBvbmVudCkgcHJpdmF0ZSBmb3JtLFxuICAgICAgICBAT3B0aW9uYWwoKSBsaXZlVGFibGU6IExpdmVUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgcHVibGljIGRhdGVQaXBlOiBUb0RhdGVQaXBlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZm9ybWxheW91dCcpIGZvcm1sYXlvdXQ6IHN0cmluZ1xuICAgICkge1xuICAgICAgICAvLyBJZiBwYXJlbnQgbGl2ZSB0YWJsZSBpcyBwcmVzZW50IGFuZCB0aGlzIGZvcm0gaXMgZmlyc3QgY2hpbGQgb2YgbGl2ZSB0YWJsZSwgc2V0IHRoaXMgZm9ybSBpbnN0YW5jZSBvbiBsaXZldGFibGVcbiAgICAgICAgaWYgKGxpdmVUYWJsZSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZvcm0ucGFyZW50Rm9ybSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5fbGl2ZVRhYmxlUGFyZW50ID0gbGl2ZVRhYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5mb3JtLmlzTGF5b3V0RGlhbG9nID0gbGl2ZVRhYmxlLmlzTGF5b3V0RGlhbG9nO1xuICAgICAgICAgICAgbGl2ZVRhYmxlLm9uRm9ybVJlYWR5KHRoaXMuZm9ybSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uaXNMYXlvdXREaWFsb2cgPSBmb3JtbGF5b3V0ID09PSAnZGlhbG9nJztcbiAgICAgICAgfVxuICAgICAgICAvLyBDVUQgb3BlcmF0aW9uc1xuICAgICAgICBmb3JtLmNhbmNlbCA9IHRoaXMuY2FuY2VsLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0ucmVzZXQgPSB0aGlzLnJlc2V0LmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uZGVsZXRlID0gdGhpcy5kZWxldGUuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5zYXZlID0gdGhpcy5zYXZlLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uc2F2ZUFuZE5ldyA9IHRoaXMuc2F2ZUFuZE5ldy5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLnNhdmVBbmRWaWV3ID0gdGhpcy5zYXZlQW5kVmlldy5iaW5kKHRoaXMpO1xuXG4gICAgICAgIGZvcm0uc2V0UHJpbWFyeUtleSA9IHRoaXMuc2V0UHJpbWFyeUtleS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLmNvbnN0cnVjdERhdGFPYmplY3QgPSB0aGlzLmNvbnN0cnVjdERhdGFPYmplY3QuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5jaGFuZ2VEYXRhT2JqZWN0ID0gdGhpcy5zZXRGb3JtRGF0YS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLnNldEZvcm1EYXRhID0gdGhpcy5zZXRGb3JtRGF0YS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLmZpbmRPcGVyYXRpb25UeXBlID0gdGhpcy5maW5kT3BlcmF0aW9uVHlwZS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLmNsZWFyRGF0YSA9IHRoaXMuY2xlYXJEYXRhLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0ub25GaWVsZERlZmF1bHRWYWx1ZUNoYW5nZSA9IHRoaXMub25GaWVsZERlZmF1bHRWYWx1ZUNoYW5nZS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLm9uRGF0YVNvdXJjZUNoYW5nZSA9IHRoaXMub25EYXRhU291cmNlQ2hhbmdlLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0ub25GaWVsZFZhbHVlQ2hhbmdlID0gdGhpcy5vbkZpZWxkVmFsdWVDaGFuZ2UuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5zdWJtaXRGb3JtID0gdGhpcy5zdWJtaXRGb3JtLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uZm9ybV9yZWdpc3RlckZvcm1GaWVsZHMgPSBmb3JtLnJlZ2lzdGVyRm9ybUZpZWxkcztcbiAgICAgICAgZm9ybS5yZWdpc3RlckZvcm1GaWVsZHMgPSB0aGlzLnJlZ2lzdGVyRm9ybUZpZWxkcy5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIC8qXG4gICAgV01TOjE4NTgzXG4gICAgT3ZlcnJpZGluZyAncmVnaXN0ZXJGb3JtRmllbGRzJyBmb3IgbGl2ZUZvcm1zLFxuICAgIE9uIEVhY2ggZmllbGQgYWRkZWQsIGNoZWNrIGlmIHRoZSBkYXRhU291cmNlIGlzIHVwZGF0ZWQgb3Igbm90XG4gICAgaWYgdGhlIGZpZWxkIGlzIGFkZGVkIGFmdGVyIHRoZSBkYXRhU291cmNlIGlzIHVwZGF0ZWQgYXQgTGl2ZUZvcm0sIHJldHJpZ2dlclxuICAgICovXG4gICAgcmVnaXN0ZXJGb3JtRmllbGRzKGZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCBmb3JtRmllbGRzID0gdGhpcy5mb3JtLmdldEZvcm1GaWVsZHMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmZvcm1fcmVnaXN0ZXJGb3JtRmllbGRzKGZvcm1GaWVsZCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0uaXNEYXRhU291cmNlVXBkYXRlZCkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlRmllbGRPbkRhdGFTb3VyY2VDaGFuZ2UoZm9ybUZpZWxkLCBmb3JtRmllbGRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF91cGRhdGVGaWVsZE9uRGF0YVNvdXJjZUNoYW5nZShmaWVsZCwgZm9ybUZpZWxkcykge1xuICAgICAgICBpZiAoIWZpZWxkLmlzRGF0YVNldEJvdW5kICYmIGlzRGF0YVNldFdpZGdldChmaWVsZC53aWRnZXR0eXBlKSkge1xuICAgICAgICAgICAgaWYgKGZpZWxkWydpcy1yZWxhdGVkJ10pIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5pc0RhdGFTZXRCb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgZmV0Y2hSZWxhdGVkRmllbGREYXRhKHRoaXMuZm9ybS5kYXRhc291cmNlLCBmaWVsZC53aWRnZXQsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRlZEZpZWxkOiBmaWVsZC5rZXksXG4gICAgICAgICAgICAgICAgICAgIGRhdGFmaWVsZDogQUxMRklFTERTLFxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6ICd3aWRnZXR0eXBlJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2V0RGlzdGluY3RWYWx1ZXNGb3JGaWVsZCh0aGlzLmZvcm0uZGF0YXNvdXJjZSwgZmllbGQud2lkZ2V0LCB7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldDogJ3dpZGdldHR5cGUnLFxuICAgICAgICAgICAgICAgICAgICBlbmFibGVlbXB0eWZpbHRlcjogdGhpcy5mb3JtLmVuYWJsZWVtcHR5ZmlsdGVyXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYXBwbHlGaWx0ZXJPbkZpZWxkKHRoaXMuZm9ybS5kYXRhc291cmNlLCBmaWVsZC53aWRnZXQsIGZvcm1GaWVsZHMsIGZpZWxkLnZhbHVlLCB7aXNGaXJzdDogdHJ1ZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG9uRGF0YVNvdXJjZUNoYW5nZSgpIHtcbiAgICAgICAgaWYgKGdldCh0aGlzLmZvcm0uZm9ybUZpZWxkcywgJ2xlbmd0aCcpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uaXNEYXRhU291cmNlVXBkYXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybUZpZWxkcyA9IHRoaXMuZm9ybS5nZXRGb3JtRmllbGRzKCk7XG4gICAgICAgIGZvcm1GaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGaWVsZE9uRGF0YVNvdXJjZUNoYW5nZShmaWVsZCwgZm9ybUZpZWxkcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRmllbGREZWZhdWx0VmFsdWVDaGFuZ2UoZmllbGQsIG52KSB7XG4gICAgICAgIC8vIEluIEVkaXQsIGRvICBub3Qgc2V0IGRlZmF1bHQgdmFsdWVzXG4gICAgICAgIGlmICh0aGlzLmZvcm0ub3BlcmF0aW9uVHlwZSA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdmFsdWUgb25seSBpZiBpdCBleGlzdHMuXG4gICAgICAgIGlmIChpc0RlZmluZWQobnYpICYmIG52ICE9PSBudWxsICYmIG52ICE9PSAnJyAmJiBudiAhPT0gJ251bGwnKSB7XG4gICAgICAgICAgICBmaWVsZC52YWx1ZSA9IHBhcnNlVmFsdWVCeVR5cGUobnYsIGZpZWxkLnR5cGUsIGZpZWxkLndpZGdldHR5cGUsIGZpZWxkLnRyYWlsaW5nemVybyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdNUy0yMjQzNDogRm9yIGRlZmF1bHQgdmFsdWUgc2V0IG9uIGluZGl2aWR1YWwgZm9ybSBmaWVsZHMsIGRvIG5vdCBtYXJrIHRoZSBmb3JtIGFzIGRpcnR5LlxuICAgICAgICBpZiAodGhpcy5mb3JtLmRpcnR5ICYmICF0aGlzLl90cmlnZ2VyZWRCeVVzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RlYm91bmNlZFNhdmVQcmV2RGF0YVZhbHVlcygpO1xuICAgIH1cblxuICAgIG9uRmllbGRWYWx1ZUNoYW5nZShmaWVsZCwgbnYpIHtcbiAgICAgICAgYXBwbHlGaWx0ZXJPbkZpZWxkKHRoaXMuZm9ybS5kYXRhc291cmNlLCBmaWVsZC53aWRnZXQsIHRoaXMuZm9ybS5mb3JtRmllbGRzLCBudik7XG4gICAgfVxuXG4gICAgZ2V0QmxvYlVSTChkYXRhT2JqLCBrZXksIHZhbHVlKSB7XG4gICAgICAgIGxldCBocmVmID0gJyc7XG4gICAgICAgIGxldCBwcmltYXJ5S2V5cztcbiAgICAgICAgbGV0IHByaW1hcnlLZXk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICF0aGlzLmZvcm0uZGF0YXNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuIGhyZWY7XG4gICAgICAgIH1cbiAgICAgICAgcHJpbWFyeUtleXMgPSB0aGlzLmZvcm0uZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9QUklNQVJZX0tFWSkgfHwgW107XG4gICAgICAgIHByaW1hcnlLZXkgID0gZGF0YU9ialtwcmltYXJ5S2V5c1swXV07XG4gICAgICAgIGhyZWYgKz0gdGhpcy5mb3JtLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5HRVRfQkxPQl9VUkwsIHtcbiAgICAgICAgICAgIHByaW1hcnlWYWx1ZTogcHJpbWFyeUtleSxcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IGtleVxuICAgICAgICB9KTtcbiAgICAgICAgaHJlZiArPSAnPycgKyBNYXRoLnJhbmRvbSgpO1xuICAgICAgICByZXR1cm4gaHJlZjtcbiAgICB9XG5cbiAgICBzZXRGb3JtRGF0YShkYXRhT2JqLCBmb3JtRmllbGRzPykge1xuICAgICAgICBpZiAoIWRhdGFPYmopIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3JtRmllbGRzID0gZm9ybUZpZWxkcyB8fCB0aGlzLmZvcm0uZm9ybUZpZWxkcztcbiAgICAgICAgZm9ybUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGRhdGFPYmosIGZpZWxkLmtleSB8fCBmaWVsZC5uYW1lKTtcbiAgICAgICAgICAgIGlmIChpc1RpbWVUeXBlKGZpZWxkKSkge1xuICAgICAgICAgICAgICAgIGZpZWxkLnZhbHVlID0gZ2V0VmFsaWRUaW1lKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gRGF0YVR5cGUuQkxPQikge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5yZXNldEZpbGVVcGxvYWRXaWRnZXQoZmllbGQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGZpZWxkLmhyZWYgID0gdGhpcy5nZXRCbG9iVVJMKGRhdGFPYmosIGZpZWxkLmtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGZpZWxkLnZhbHVlID0gaXNTdHJpbmcodmFsdWUpID8gJycgOiB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEZpZWxkVmFsdWUoZmllbGQsIGRhdGFPYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zYXZlUHJldkRhdGFWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnN0cnVjdERhdGFPYmplY3QoKTtcbiAgICB9XG5cbiAgICBvbkRhdGFTb3VyY2VVcGRhdGUocmVzcG9uc2UsIG5ld0Zvcm0sIHVwZGF0ZU1vZGUpIHtcbiAgICAgICAgaWYgKG5ld0Zvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5uZXcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRGb3JtRGF0YShyZXNwb25zZSk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtLmlzVXBkYXRlTW9kZSA9IGlzRGVmaW5lZCh1cGRhdGVNb2RlKSA/IHVwZGF0ZU1vZGUgOiB0cnVlO1xuICAgIH1cblxuICAgIHNhdmVQcmV2Zm9ybUZpZWxkcygpIHtcbiAgICAgICAgdGhpcy5mb3JtLnByZXZmb3JtRmllbGRzID0gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuZm9ybS5mb3JtRmllbGRzLm1hcChmaWVsZCA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICdrZXknOiBmaWVsZC5rZXksXG4gICAgICAgICAgICAgICAgJ3R5cGUnOiBmaWVsZC50eXBlLFxuICAgICAgICAgICAgICAgICd3aWRnZXR0eXBlJzogZmllbGQud2lkZ2V0dHlwZSxcbiAgICAgICAgICAgICAgICAnb3V0cHV0Zm9ybWF0JzogZmllbGQub3V0cHV0Zm9ybWF0LFxuICAgICAgICAgICAgICAgICd2YWx1ZSc6IGZpZWxkLnZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgZ2V0UHJldmZvcm1GaWVsZHMoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5mb3JtRmllbGRzLm1hcChmaWVsZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcmV2RmllbGQgPSB0aGlzLmZvcm0ucHJldmZvcm1GaWVsZHMuZmluZChwRmllbGQgPT4gcEZpZWxkLmtleSA9PT0gZmllbGQua2V5KTtcbiAgICAgICAgICAgIGZpZWxkLnZhbHVlID0gcHJldkZpZWxkLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREYXRhT2JqZWN0KCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtLm9wZXJhdGlvblR5cGUgPT09IExpdmVfT3BlcmF0aW9ucy5JTlNFUlQpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNEZWZpbmVkKHRoaXMuZm9ybS5wcmV2RGF0YU9iamVjdCkgJiYgIWlzRW1wdHlPYmplY3QodGhpcy5mb3JtLnByZXZEYXRhT2JqZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldENsb25lZE9iamVjdCh0aGlzLmZvcm0ucHJldkRhdGFPYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRDbG9uZWRPYmplY3QodGhpcy5mb3JtLmZvcm1kYXRhIHx8IHt9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3REYXRhT2JqZWN0KGlzUHJldmlvdXNEYXRhPykge1xuICAgICAgICBjb25zdCBkYXRhT2JqZWN0ID0gdGhpcy5nZXREYXRhT2JqZWN0KCk7XG4gICAgICAgIGNvbnN0IGZvcm1OYW1lID0gdGhpcy5mb3JtLm5hbWU7XG4gICAgICAgIGxldCBmb3JtRmllbGRzO1xuICAgICAgICBmb3JtRmllbGRzID0gaXNQcmV2aW91c0RhdGEgPyB0aGlzLmZvcm0ucHJldmZvcm1GaWVsZHMgOiB0aGlzLmZvcm0uZ2V0Rm9ybUZpZWxkcygpO1xuICAgICAgICBmb3JtRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGVUaW1lLFxuICAgICAgICAgICAgICAgIGZpZWxkVmFsdWU7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFRhcmdldCA9IHNwbGl0KGZpZWxkLmtleSwgJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkVGFyZ2V0WzBdIHx8IGZpZWxkLmtleTtcblxuICAgICAgICAgICAgLypjb2xsZWN0IHRoZSB2YWx1ZXMgZnJvbSB0aGUgZmllbGRzIGFuZCBjb25zdHJ1Y3QgdGhlIG9iamVjdCovXG4gICAgICAgICAgICAvKkZvcm1hdCB0aGUgb3V0cHV0IG9mIGRhdGUgdGltZSB3aWRnZXRzIHRvIHRoZSBnaXZlbiBvdXRwdXQgZm9ybWF0Ki9cbiAgICAgICAgICAgIGlmICgoZmllbGQud2lkZ2V0dHlwZSAmJiBpc0RhdGVUaW1lVHlwZShmaWVsZC53aWRnZXR0eXBlKSkgfHwgaXNEYXRlVGltZVR5cGUoZmllbGQudHlwZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVRpbWUgPSBnZXRWYWxpZERhdGVPYmplY3QoZmllbGQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQub3V0cHV0Zm9ybWF0ID09PSBEYXRhVHlwZS5USU1FU1RBTVAgfHwgZmllbGQudHlwZSA9PT0gRGF0YVR5cGUuVElNRVNUQU1QKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gZmllbGQudmFsdWUgPyBkYXRlVGltZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQub3V0cHV0Zm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZVRpbWUsIGZpZWxkLm91dHB1dGZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gZmllbGQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gRGF0YVR5cGUuQkxPQikge1xuICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSBnZXRGaWxlcyhmb3JtTmFtZSwgZmllbGROYW1lICsgJ19mb3JtV2lkZ2V0JywgZmllbGQubXVsdGlwbGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSBEYXRhVHlwZS5MSVNUKSB7XG4gICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IGZpZWxkLnZhbHVlIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IChmaWVsZC52YWx1ZSA9PT0gbnVsbCB8fCBmaWVsZC52YWx1ZSA9PT0gJycpID8gdW5kZWZpbmVkIDogZmllbGQudmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaWVsZFRhcmdldC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBkYXRhT2JqZWN0W2ZpZWxkTmFtZV0gPSBmaWVsZFZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhT2JqZWN0W2ZpZWxkTmFtZV0gPSBkYXRhT2JqZWN0W2ZpZWxkTmFtZV0gfHwge307XG4gICAgICAgICAgICAgICAgZGF0YU9iamVjdFtmaWVsZE5hbWVdW2ZpZWxkVGFyZ2V0WzFdXSA9IGZpZWxkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWlzUHJldmlvdXNEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0udXBkYXRlRm9ybURhdGFPdXRwdXQoZGF0YU9iamVjdCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmRhdGFvdXRwdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGFPYmplY3Q7XG4gICAgfVxuXG4gICAgc2V0UHJpbWFyeUtleShmaWVsZE5hbWUpIHtcbiAgICAgICAgLypTdG9yZSB0aGUgcHJpbWFyeSBrZXkgb2YgZGF0YSovXG4gICAgICAgIHRoaXMuZm9ybS5wcmltYXJ5S2V5ID0gdGhpcy5mb3JtLnByaW1hcnlLZXkgfHwgW107XG4gICAgICAgIGlmICh0aGlzLmZvcm0ucHJpbWFyeUtleS5pbmRleE9mKGZpZWxkTmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucHJpbWFyeUtleS5wdXNoKGZpZWxkTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kT3BlcmF0aW9uVHlwZSgpIHtcbiAgICAgICAgbGV0IG9wZXJhdGlvbjtcbiAgICAgICAgbGV0IGlzUHJpbWFyeSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBzb3VyY2VPcGVyYXRpb24gPSB0aGlzLmZvcm0uZGF0YXNvdXJjZSAmJiB0aGlzLmZvcm0uZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9PUEVSQVRJT05fVFlQRSk7XG4gICAgICAgIGlmIChzb3VyY2VPcGVyYXRpb24gJiYgc291cmNlT3BlcmF0aW9uICE9PSAncmVhZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2VPcGVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgLypJZiBPcGVyYXRpb25UeXBlIGlzIG5vdCBzZXQgdGhlbiBiYXNlZCBvbiB0aGUgZm9ybWRhdGEgb2JqZWN0IHJldHVybiB0aGUgb3BlcmF0aW9uIHR5cGUsXG4gICAgICAgICAgICB0aGlzIGNhc2Ugb2NjdXJzIG9ubHkgaWYgdGhlIGZvcm0gaXMgb3V0c2lkZSBhIGxpdmVncmlkKi9cbiAgICAgICAgLypJZiB0aGUgZm9ybWRhdGEgb2JqZWN0IGhhcyBwcmltYXJ5IGtleSB2YWx1ZSB0aGVuIHJldHVybiB1cGRhdGUgZWxzZSBpbnNlcnQqL1xuICAgICAgICBpZiAodGhpcy5mb3JtLnByaW1hcnlLZXkgJiYgIWlzRW1wdHkodGhpcy5mb3JtLmZvcm1kYXRhKSkge1xuICAgICAgICAgICAgLypJZiBvbmx5IG9uZSBjb2x1bW4gaXMgcHJpbWFyeSBrZXkqL1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5wcmltYXJ5S2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm0uZm9ybWRhdGFbdGhpcy5mb3JtLnByaW1hcnlLZXlbMF1dKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IExpdmVfT3BlcmF0aW9ucy5VUERBVEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qSWYgb25seSBubyBjb2x1bW4gaXMgcHJpbWFyeSBrZXkqL1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZvcm0ucHJpbWFyeUtleS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBmb3JFYWNoKHRoaXMuZm9ybS5mb3JtZGF0YSwgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltYXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpc1ByaW1hcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gTGl2ZV9PcGVyYXRpb25zLlVQREFURTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLypJZiBtdWx0aXBsZSBjb2x1bW5zIGFyZSBwcmltYXJ5IGtleSovXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlzUHJpbWFyeSA9IHNvbWUodGhpcy5mb3JtLnByaW1hcnlLZXksIChwcmltYXJ5S2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm0uZm9ybWRhdGFbcHJpbWFyeUtleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzUHJpbWFyeSkge1xuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBMaXZlX09wZXJhdGlvbnMuVVBEQVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3BlcmF0aW9uIHx8IExpdmVfT3BlcmF0aW9ucy5JTlNFUlQ7XG4gICAgfVxuXG4gICAgZ2V0UHJldkRhdGFWYWx1ZXMoKSB7XG4gICAgICAgIGNvbnN0IHByZXZEYXRhVmFsdWVzID0gZnJvbVBhaXJzKG1hcCh0aGlzLmZvcm0ucHJldkRhdGFWYWx1ZXMsIChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gW2l0ZW0ua2V5LCBpdGVtLnZhbHVlXTtcbiAgICAgICAgfSkpOyAvLyBDb252ZXJ0IG9mIGFycmF5IG9mIHZhbHVlcyB0byBhbiBvYmplY3RcbiAgICAgICAgdGhpcy5mb3JtLmZvcm1GaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBmaWVsZC52YWx1ZSA9IHByZXZEYXRhVmFsdWVzW2ZpZWxkLmtleV0gfHwgJyc7XG4gICAgICAgICAgICBmaWVsZC5yZXNldERpc3BsYXlJbnB1dCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByZXZEYXRhVmFsdWVzO1xuICAgIH1cblxuICAgIHNhdmVQcmV2RGF0YVZhbHVlcygpIHtcbiAgICAgICAgdGhpcy5mb3JtLnByZXZEYXRhVmFsdWVzID0gdGhpcy5mb3JtLmZvcm1GaWVsZHMubWFwKChvYmopID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7J2tleSc6IG9iai5rZXksICd2YWx1ZSc6IG9iai52YWx1ZX07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsZWFyRGF0YSgpIHtcbiAgICAgICAgdGhpcy5mb3JtLnRvZ2dsZU1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB0aGlzLmZvcm0uZW1wdHlEYXRhTW9kZWwoKTtcbiAgICB9XG5cbiAgICBzZXRSZWFkb25seUZpZWxkcygpIHtcbiAgICAgICAgdGhpcy5mb3JtLmZvcm1GaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBmaWVsZC5zZXRSZWFkT25seVN0YXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlc2V0KCkge1xuICAgICAgICBsZXQgcHJldkRhdGFWYWx1ZXM7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldEZvcm1TdGF0ZSgpO1xuICAgICAgICBwcmV2RGF0YVZhbHVlcyA9IHRoaXMuZ2V0UHJldkRhdGFWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmZvcm1GaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gRGF0YVR5cGUuQkxPQiB8fCBmaWVsZC53aWRnZXR0eXBlID09PSAndXBsb2FkJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5yZXNldEZpbGVVcGxvYWRXaWRnZXQoZmllbGQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGZpZWxkLmhyZWYgPSB0aGlzLmdldEJsb2JVUkwocHJldkRhdGFWYWx1ZXMsIGZpZWxkLmtleSwgZmllbGQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpPy5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaW52YWxpZCcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnN0cnVjdERhdGFPYmplY3QoKTtcbiAgICB9XG5cbiAgICBjbG9zZURpYWxvZygpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pc0xheW91dERpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsb3NlKHRoaXMuZm9ybS5kaWFsb2dJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5jZWwoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5jbGVhck1lc3NhZ2UoKTtcbiAgICAgICAgdGhpcy5mb3JtLmlzVXBkYXRlTW9kZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgICAvKlNob3cgdGhlIHByZXZpb3VzIHNlbGVjdGVkIGRhdGEqL1xuICAgICAgICBpZiAodGhpcy5mb3JtLmlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0UHJldmZvcm1GaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm0uaXNVcGRhdGVNb2RlID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmZvcm0uX2xpdmVUYWJsZVBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLl9saXZlVGFibGVQYXJlbnQub25DYW5jZWwoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgIFdNUy0xODc1OTogZGlhbG9nIGNsb3NlIGlzIGNhbGxpbmcgdHdpY2UgYW5kIGRpYWxvZyBvbkhpZGRlbiBzdWJzY3JpcHRpb24gaXMgY2FsbGluZyBvbmNlIGZyb20gdGhlIGxpYnJhcnlcbiAgICAgICAgICAgICAgZHVlIHRvIHRoaXMgaWYgd2UgaGF2ZSBhbm90aGVyIGRpYWxvZyBpbnNpZGUgbGl2ZWZvcm0gYW5kIGlmIHdlIGNsaWNrIG9uIGNhbmNlbCBvZiBzZWNvbmQgZGlhbG9nIHRoZSBsaWJyYXJ5XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiBpcyBjYWxsaW5nIGZvciBib3RoIHRoZSBkaWFsb2dzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XG4gICAgICAgIH1cbiAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgIH1cblxuXG5cbiAgICBkZWxldGUoY2FsbEJhY2tGbikge1xuICAgICAgICB0aGlzLmZvcm0ucmVzZXRGb3JtU3RhdGUoKTtcbiAgICAgICAgdGhpcy5mb3JtLm9wZXJhdGlvblR5cGUgPSBMaXZlX09wZXJhdGlvbnMuREVMRVRFO1xuICAgICAgICB0aGlzLmZvcm0ucHJldkRhdGFPYmplY3QgPSBnZXRDbG9uZWRPYmplY3QodGhpcy5mb3JtLmZvcm1kYXRhIHx8IHt9KTtcbiAgICAgICAgdGhpcy5mb3JtLnNhdmUodW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY2FsbEJhY2tGbik7XG4gICAgfVxuXG4gICAgLy8gRnVuY3Rpb24gdXNlIHRvIHNhdmUgdGhlIGZvcm0gYW5kIG9wZW4gbmV3IGZvcm0gYWZ0ZXIgc2F2ZVxuICAgIHNhdmVBbmROZXcoKSB7XG4gICAgICAgIHRoaXMuc2F2ZSh1bmRlZmluZWQsIHRydWUsIHRydWUpO1xuICAgIH1cbiAgICAvLyBGdW5jdGlvbiB1c2UgdG8gc2F2ZSB0aGUgZm9ybSBhbmQgb3BlbiBuZXcgZm9ybSBhZnRlciBzYXZlXG4gICAgc2F2ZUFuZFZpZXcoKSB7XG4gICAgICAgIHRoaXMuc2F2ZSh1bmRlZmluZWQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBzdWJtaXRGb3JtKCRldmVudCkge1xuICAgICAgICB0aGlzLnNhdmUoJGV2ZW50KTtcbiAgICB9XG5cbiAgICBzYXZlKGV2ZW50PywgdXBkYXRlTW9kZT8sIG5ld0Zvcm0/KSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtLmRhdGFzb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZGF0YSwgcHJldkRhdGEsIG9wZXJhdGlvblR5cGUsIGlzVmFsaWQ7XG4gICAgICAgIGNvbnN0IHJlcXVlc3REYXRhOiBhbnkgPSB7fTtcblxuICAgICAgICBvcGVyYXRpb25UeXBlID0gdGhpcy5mb3JtLm9wZXJhdGlvblR5cGUgPSB0aGlzLmZvcm0ub3BlcmF0aW9uVHlwZSB8fCB0aGlzLmZpbmRPcGVyYXRpb25UeXBlKCk7XG5cbiAgICAgICAgLy8gRGlzYWJsZSB0aGUgZm9ybSBzdWJtaXQgaWYgZm9ybSBpcyBpbiBpbnZhbGlkIHN0YXRlLlxuICAgICAgICBpZiAodGhpcy5mb3JtLnZhbGlkYXRlRmllbGRzT25TdWJtaXQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YSA9IGdldENsb25lZE9iamVjdCh0aGlzLmZvcm0uY29uc3RydWN0RGF0YU9iamVjdCgpKTtcbiAgICAgICAgcHJldkRhdGEgPSB0aGlzLmZvcm0ucHJldmZvcm1GaWVsZHMgPyB0aGlzLmZvcm0uY29uc3RydWN0RGF0YU9iamVjdCh0cnVlKSA6IGRhdGE7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlzVmFsaWQgPSB0aGlzLmZvcm0uaW52b2tlRXZlbnRDYWxsYmFjaygnYmVmb3Jlc2VydmljZWNhbGwnLCB7JGV2ZW50OiBldmVudCwgJG9wZXJhdGlvbjogdGhpcy5mb3JtLm9wZXJhdGlvblR5cGUsICRkYXRhOiBkYXRhLCBvcHRpb25zOiByZXF1ZXN0RGF0YX0pO1xuICAgICAgICAgICAgaWYgKGlzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzVmFsaWQgJiYgaXNWYWxpZC5lcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS50b2dnbGVNZXNzYWdlKHRydWUsIGlzVmFsaWQuZXJyb3IsICdlcnJvcicpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgPT09ICdBYm9ydCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBvcGVyYXRpb24gaXMgdXBkYXRlLCBmb3JtIGlzIG5vdCB0b3VjaGVkIGFuZCBjdXJyZW50IGRhdGEgYW5kIHByZXZpb3VzIGRhdGEgaXMgc2FtZSwgU2hvdyBubyBjaGFuZ2VzIGRldGVjdGVkIG1lc3NhZ2VcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5vcGVyYXRpb25UeXBlID09PSBMaXZlX09wZXJhdGlvbnMuVVBEQVRFICYmIHRoaXMuZm9ybS5uZ2Zvcm0gJiYgdGhpcy5mb3JtLm5nZm9ybS5wcmlzdGluZSAmJlxuICAgICAgICAgICAgKHRoaXMuZm9ybS5pc1NlbGVjdGVkICYmIGlzRXF1YWwoZGF0YSwgcHJldkRhdGEpKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnRvZ2dsZU1lc3NhZ2UodHJ1ZSwgdGhpcy5mb3JtLmFwcExvY2FsZS5NRVNTQUdFX05PX0NIQU5HRVMsICdpbmZvJywgJycpO1xuICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVxdWVzdERhdGEucm93ID0gZGF0YTtcbiAgICAgICAgcmVxdWVzdERhdGEudHJhbnNmb3JtID0gdHJ1ZTtcbiAgICAgICAgcmVxdWVzdERhdGEuc2tpcE5vdGlmaWNhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvblR5cGUgPT09IExpdmVfT3BlcmF0aW9ucy5VUERBVEUpIHtcbiAgICAgICAgICAgIHJlcXVlc3REYXRhLnJvd0RhdGEgPSB0aGlzLmZvcm0uZm9ybWRhdGE7XG4gICAgICAgICAgICByZXF1ZXN0RGF0YS5wcmV2RGF0YSA9IHByZXZEYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgcGVyZm9ybURhdGFPcGVyYXRpb24odGhpcy5mb3JtLmRhdGFzb3VyY2UsIHJlcXVlc3REYXRhLCB7XG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiBvcGVyYXRpb25UeXBlXG4gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBvcGVyYXRpb25UeXBlID09PSBMaXZlX09wZXJhdGlvbnMuSU5TRVJUID8gdGhpcy5mb3JtLmluc2VydG1lc3NhZ2UgOiAob3BlcmF0aW9uVHlwZSA9PT0gTGl2ZV9PcGVyYXRpb25zLlVQREFURSA/XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnVwZGF0ZW1lc3NhZ2UgOiB0aGlzLmZvcm0uZGVsZXRlbWVzc2FnZSk7XG4gICAgICAgICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICAgICAgICBpZiAob3BlcmF0aW9uVHlwZSA9PT0gTGl2ZV9PcGVyYXRpb25zLkRFTEVURSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcXVlc3REYXRhLnJvdztcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZW1wdHlEYXRhTW9kZWwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucHJldkRhdGFWYWx1ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXNwb25zZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5mb3JtLm9uU3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS50b2dnbGVNZXNzYWdlKHRydWUsIG1zZywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0uX2xpdmVUYWJsZVBhcmVudCkge1xuICAgICAgICAgICAgICAgIC8vIGhpZ2hsaWdodCB0aGUgY3VycmVudCB1cGRhdGVkIHJvd1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5fbGl2ZVRhYmxlUGFyZW50Lm9uUmVzdWx0KG9wZXJhdGlvblR5cGUsIHJlc3BvbnNlLCBuZXdGb3JtLCB1cGRhdGVNb2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLypnZXQgdXBkYXRlZCBkYXRhIHdpdGhvdXQgcmVmcmVzaGluZyBwYWdlKi9cbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkxJU1RfUkVDT1JEUywge1xuICAgICAgICAgICAgICAgICAgICAnc2tpcFRvZ2dsZVN0YXRlJzogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMub25EYXRhU291cmNlVXBkYXRlKHJlc3BvbnNlLCBuZXdGb3JtLCB1cGRhdGVNb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ3Jlc3VsdCc6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAnc3RhdHVzJzogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybS5vbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnRvZ2dsZU1lc3NhZ2UodHJ1ZSwgZXJyb3IsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAncmVzdWx0JzogZXJyb3IsXG4gICAgICAgICAgICAgICAgJ3N0YXR1cyc6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBmb3JtIHRvIHByaXN0aW5lIHN0YXRlXG4gICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXRGb3JtU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5vblJlc3VsdENiKHJlc3BvbnNlLnJlc3VsdCwgcmVzcG9uc2Uuc3RhdHVzLCBldmVudCk7XG4gICAgICAgIH0pO1xuXG5cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDYW5jZWwgZGVib3VuY2VkIGZ1bmN0aW9uXG4gICAgICAgIGlmICh0aGlzLl9kZWJvdW5jZWRTYXZlUHJldkRhdGFWYWx1ZXMgJiYgKHRoaXMuX2RlYm91bmNlZFNhdmVQcmV2RGF0YVZhbHVlcyBhcyBhbnkpLmNhbmNlbCkge1xuICAgICAgICAgICAgKHRoaXMuX2RlYm91bmNlZFNhdmVQcmV2RGF0YVZhbHVlcyBhcyBhbnkpLmNhbmNlbCgpO1xuICAgICAgICAgICAgdGhpcy5fZGVib3VuY2VkU2F2ZVByZXZEYXRhVmFsdWVzID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgZm9ybSByZWZlcmVuY2VcbiAgICAgICAgdGhpcy5mb3JtID0gbnVsbDtcbiAgICB9XG59XG4iXX0=
|
|
502
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1mb3JtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL2Zvcm0vc3JjL2xpdmUtZm9ybS9saXZlLWZvcm0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RyxPQUFPLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEwsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVNLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7OztBQUVoRyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLElBQUksSUFBSSxDQUFD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MElBSWxCLFlBQVk7bUdBaEJsQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2QsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzswQkFhUSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUM1QixRQUFROzswQkFHUixTQUFTOzJCQUFDLFlBQVk7eUNBVFUsZ0JBQWdCO3NCQUFwRCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0LCBPcHRpb25hbCwgU2VsZiwgQXR0cmlidXRlLCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyAkYXBwRGlnZXN0LCBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsIERhdGFTb3VyY2UsIERhdGFUeXBlLCBkZWJvdW5jZSwgZ2V0Q2xvbmVkT2JqZWN0LCBnZXRGaWxlcywgZ2V0VmFsaWREYXRlT2JqZWN0LCBpc0RhdGVUaW1lVHlwZSwgaXNEZWZpbmVkLCBpc0VtcHR5T2JqZWN0IH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgQUxMRklFTERTLCBhcHBseUZpbHRlck9uRmllbGQsIGZldGNoUmVsYXRlZEZpZWxkRGF0YSwgZ2V0RGlzdGluY3RWYWx1ZXNGb3JGaWVsZCwgaXNEYXRhU2V0V2lkZ2V0LCBMaXZlX09wZXJhdGlvbnMsIHBhcnNlVmFsdWVCeVR5cGUsIHBlcmZvcm1EYXRhT3BlcmF0aW9uLCBUb0RhdGVQaXBlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBMaXZlVGFibGVDb21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL2xpdmUtdGFibGUnO1xuXG5pbXBvcnQgeyByZWdpc3RlckxpdmVGb3JtUHJvcHMgfSBmcm9tICcuLi9mb3JtLnByb3BzJztcbmltcG9ydCB7IEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQge2ZvckVhY2gsIGZyb21QYWlycywgZ2V0LCBpc0VtcHR5LCBpc0VxdWFsLCBpc1N0cmluZywgbWFwLCBzb21lLCBzcGxpdH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5jb25zdCBpc1RpbWVUeXBlID0gZmllbGQgPT4gZmllbGQud2lkZ2V0dHlwZSA9PT0gRGF0YVR5cGUuVElNRSB8fCAoZmllbGQudHlwZSA9PT0gRGF0YVR5cGUuVElNRSAmJiAhZmllbGQud2lkZ2V0dHlwZSk7XG5jb25zdCBnZXRWYWxpZFRpbWUgPSB2YWwgPT4ge1xuICAgIGlmICh2YWwpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IChuZXcgRGF0ZSgpKS50b0RhdGVTdHJpbmcoKTtcbiAgICAgICAgcmV0dXJuIChuZXcgRGF0ZShgJHtkYXRlfSAke3ZhbH1gKSkuZ2V0VGltZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbd21MaXZlRm9ybV0nXG59KVxuZXhwb3J0IGNsYXNzIExpdmVGb3JtRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyTGl2ZUZvcm1Qcm9wcygpO1xuICAgIHByaXZhdGUgX3RyaWdnZXJlZEJ5VXNlcjogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kZWJvdW5jZWRTYXZlUHJldkRhdGFWYWx1ZXMgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2ZVByZXZEYXRhVmFsdWVzKCk7XG4gICAgfSwgMjUwKTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJlZEJ5VXNlciA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKCkgQEluamVjdChGb3JtQ29tcG9uZW50KSBwcml2YXRlIGZvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIGxpdmVUYWJsZTogTGl2ZVRhYmxlQ29tcG9uZW50LFxuICAgICAgICBwdWJsaWMgZGF0ZVBpcGU6IFRvRGF0ZVBpcGUsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAQXR0cmlidXRlKCdmb3JtbGF5b3V0JykgZm9ybWxheW91dDogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIC8vIElmIHBhcmVudCBsaXZlIHRhYmxlIGlzIHByZXNlbnQgYW5kIHRoaXMgZm9ybSBpcyBmaXJzdCBjaGlsZCBvZiBsaXZlIHRhYmxlLCBzZXQgdGhpcyBmb3JtIGluc3RhbmNlIG9uIGxpdmV0YWJsZVxuICAgICAgICBpZiAobGl2ZVRhYmxlKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybS5wYXJlbnRGb3JtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLl9saXZlVGFibGVQYXJlbnQgPSBsaXZlVGFibGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZvcm0uaXNMYXlvdXREaWFsb2cgPSBsaXZlVGFibGUuaXNMYXlvdXREaWFsb2c7XG4gICAgICAgICAgICBsaXZlVGFibGUub25Gb3JtUmVhZHkodGhpcy5mb3JtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5pc0xheW91dERpYWxvZyA9IGZvcm1sYXlvdXQgPT09ICdkaWFsb2cnO1xuICAgICAgICB9XG4gICAgICAgIC8vIENVRCBvcGVyYXRpb25zXG4gICAgICAgIGZvcm0uY2FuY2VsID0gdGhpcy5jYW5jZWwuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5yZXNldCA9IHRoaXMucmVzZXQuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5kZWxldGUgPSB0aGlzLmRlbGV0ZS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLnNhdmUgPSB0aGlzLnNhdmUuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5zYXZlQW5kTmV3ID0gdGhpcy5zYXZlQW5kTmV3LmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uc2F2ZUFuZFZpZXcgPSB0aGlzLnNhdmVBbmRWaWV3LmJpbmQodGhpcyk7XG5cbiAgICAgICAgZm9ybS5zZXRQcmltYXJ5S2V5ID0gdGhpcy5zZXRQcmltYXJ5S2V5LmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uY29uc3RydWN0RGF0YU9iamVjdCA9IHRoaXMuY29uc3RydWN0RGF0YU9iamVjdC5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLmNoYW5nZURhdGFPYmplY3QgPSB0aGlzLnNldEZvcm1EYXRhLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uc2V0Rm9ybURhdGEgPSB0aGlzLnNldEZvcm1EYXRhLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uZmluZE9wZXJhdGlvblR5cGUgPSB0aGlzLmZpbmRPcGVyYXRpb25UeXBlLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0uY2xlYXJEYXRhID0gdGhpcy5jbGVhckRhdGEuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5vbkZpZWxkRGVmYXVsdFZhbHVlQ2hhbmdlID0gdGhpcy5vbkZpZWxkRGVmYXVsdFZhbHVlQ2hhbmdlLmJpbmQodGhpcyk7XG4gICAgICAgIGZvcm0ub25EYXRhU291cmNlQ2hhbmdlID0gdGhpcy5vbkRhdGFTb3VyY2VDaGFuZ2UuYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5vbkZpZWxkVmFsdWVDaGFuZ2UgPSB0aGlzLm9uRmllbGRWYWx1ZUNoYW5nZS5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JtLnN1Ym1pdEZvcm0gPSB0aGlzLnN1Ym1pdEZvcm0uYmluZCh0aGlzKTtcbiAgICAgICAgZm9ybS5mb3JtX3JlZ2lzdGVyRm9ybUZpZWxkcyA9IGZvcm0ucmVnaXN0ZXJGb3JtRmllbGRzO1xuICAgICAgICBmb3JtLnJlZ2lzdGVyRm9ybUZpZWxkcyA9IHRoaXMucmVnaXN0ZXJGb3JtRmllbGRzLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgLypcbiAgICBXTVM6MTg1ODNcbiAgICBPdmVycmlkaW5nICdyZWdpc3RlckZvcm1GaWVsZHMnIGZvciBsaXZlRm9ybXMsXG4gICAgT24gRWFjaCBmaWVsZCBhZGRlZCwgY2hlY2sgaWYgdGhlIGRhdGFTb3VyY2UgaXMgdXBkYXRlZCBvciBub3RcbiAgICBpZiB0aGUgZmllbGQgaXMgYWRkZWQgYWZ0ZXIgdGhlIGRhdGFTb3VyY2UgaXMgdXBkYXRlZCBhdCBMaXZlRm9ybSwgcmV0cmlnZ2VyXG4gICAgKi9cbiAgICByZWdpc3RlckZvcm1GaWVsZHMoZm9ybUZpZWxkKSB7XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmZvcm0uZ2V0Rm9ybUZpZWxkcygpO1xuICAgICAgICB0aGlzLmZvcm0uZm9ybV9yZWdpc3RlckZvcm1GaWVsZHMoZm9ybUZpZWxkKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5pc0RhdGFTb3VyY2VVcGRhdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGaWVsZE9uRGF0YVNvdXJjZUNoYW5nZShmb3JtRmllbGQsIGZvcm1GaWVsZHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3VwZGF0ZUZpZWxkT25EYXRhU291cmNlQ2hhbmdlKGZpZWxkLCBmb3JtRmllbGRzKSB7XG4gICAgICAgIGlmICghZmllbGQuaXNEYXRhU2V0Qm91bmQgJiYgaXNEYXRhU2V0V2lkZ2V0KGZpZWxkLndpZGdldHR5cGUpKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRbJ2lzLXJlbGF0ZWQnXSkge1xuICAgICAgICAgICAgICAgIGZpZWxkLmlzRGF0YVNldEJvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmZXRjaFJlbGF0ZWRGaWVsZERhdGEodGhpcy5mb3JtLmRhdGFzb3VyY2UsIGZpZWxkLndpZGdldCwge1xuICAgICAgICAgICAgICAgICAgICByZWxhdGVkRmllbGQ6IGZpZWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YWZpZWxkOiBBTExGSUVMRFMsXG4gICAgICAgICAgICAgICAgICAgIHdpZGdldDogJ3dpZGdldHR5cGUnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZXREaXN0aW5jdFZhbHVlc0ZvckZpZWxkKHRoaXMuZm9ybS5kYXRhc291cmNlLCBmaWVsZC53aWRnZXQsIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiAnd2lkZ2V0dHlwZScsXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZWVtcHR5ZmlsdGVyOiB0aGlzLmZvcm0uZW5hYmxlZW1wdHlmaWx0ZXJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBhcHBseUZpbHRlck9uRmllbGQodGhpcy5mb3JtLmRhdGFzb3VyY2UsIGZpZWxkLndpZGdldCwgZm9ybUZpZWxkcywgZmllbGQudmFsdWUsIHtpc0ZpcnN0OiB0cnVlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25EYXRhU291cmNlQ2hhbmdlKCkge1xuICAgICAgICBpZiAoZ2V0KHRoaXMuZm9ybS5mb3JtRmllbGRzLCAnbGVuZ3RoJykpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5pc0RhdGFTb3VyY2VVcGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtRmllbGRzID0gdGhpcy5mb3JtLmdldEZvcm1GaWVsZHMoKTtcbiAgICAgICAgZm9ybUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZpZWxkT25EYXRhU291cmNlQ2hhbmdlKGZpZWxkLCBmb3JtRmllbGRzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25GaWVsZERlZmF1bHRWYWx1ZUNoYW5nZShmaWVsZCwgbnYpIHtcbiAgICAgICAgLy8gSW4gRWRpdCwgZG8gIG5vdCBzZXQgZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5vcGVyYXRpb25UeXBlID09PSAndXBkYXRlJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCB2YWx1ZSBvbmx5IGlmIGl0IGV4aXN0cy5cbiAgICAgICAgaWYgKGlzRGVmaW5lZChudikgJiYgbnYgIT09IG51bGwgJiYgbnYgIT09ICcnICYmIG52ICE9PSAnbnVsbCcpIHtcbiAgICAgICAgICAgIGZpZWxkLnZhbHVlID0gcGFyc2VWYWx1ZUJ5VHlwZShudiwgZmllbGQudHlwZSwgZmllbGQud2lkZ2V0dHlwZSwgZmllbGQudHJhaWxpbmd6ZXJvKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV01TLTIyNDM0OiBGb3IgZGVmYXVsdCB2YWx1ZSBzZXQgb24gaW5kaXZpZHVhbCBmb3JtIGZpZWxkcywgZG8gbm90IG1hcmsgdGhlIGZvcm0gYXMgZGlydHkuXG4gICAgICAgIGlmICh0aGlzLmZvcm0uZGlydHkgJiYgIXRoaXMuX3RyaWdnZXJlZEJ5VXNlcikge1xuICAgICAgICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGVib3VuY2VkU2F2ZVByZXZEYXRhVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgb25GaWVsZFZhbHVlQ2hhbmdlKGZpZWxkLCBudikge1xuICAgICAgICBhcHBseUZpbHRlck9uRmllbGQodGhpcy5mb3JtLmRhdGFzb3VyY2UsIGZpZWxkLndpZGdldCwgdGhpcy5mb3JtLmZvcm1GaWVsZHMsIG52KTtcbiAgICB9XG5cbiAgICBnZXRCbG9iVVJMKGRhdGFPYmosIGtleSwgdmFsdWUpIHtcbiAgICAgICAgbGV0IGhyZWYgPSAnJztcbiAgICAgICAgbGV0IHByaW1hcnlLZXlzO1xuICAgICAgICBsZXQgcHJpbWFyeUtleTtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgIXRoaXMuZm9ybS5kYXRhc291cmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gaHJlZjtcbiAgICAgICAgfVxuICAgICAgICBwcmltYXJ5S2V5cyA9IHRoaXMuZm9ybS5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX1BSSU1BUllfS0VZKSB8fCBbXTtcbiAgICAgICAgcHJpbWFyeUtleSAgPSBkYXRhT2JqW3ByaW1hcnlLZXlzWzBdXTtcbiAgICAgICAgaHJlZiArPSB0aGlzLmZvcm0uZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9CTE9CX1VSTCwge1xuICAgICAgICAgICAgcHJpbWFyeVZhbHVlOiBwcmltYXJ5S2V5LFxuICAgICAgICAgICAgY29sdW1uTmFtZToga2V5XG4gICAgICAgIH0pO1xuICAgICAgICBocmVmICs9ICc/JyArIE1hdGgucmFuZG9tKCk7XG4gICAgICAgIHJldHVybiBocmVmO1xuICAgIH1cblxuICAgIHNldEZvcm1EYXRhKGRhdGFPYmosIGZvcm1GaWVsZHM/LCBmb3JtRGF0YT8pIHtcbiAgICAgICAgaWYgKCFkYXRhT2JqKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm9ybUZpZWxkcyA9IGZvcm1GaWVsZHMgfHwgdGhpcy5mb3JtLmZvcm1GaWVsZHM7XG4gICAgICAgIGZvcm1GaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldChkYXRhT2JqLCBmaWVsZC5rZXkgfHwgZmllbGQubmFtZSk7XG4gICAgICAgICAgICBpZiAoaXNUaW1lVHlwZShmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC52YWx1ZSA9IGdldFZhbGlkVGltZSh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT09IERhdGFUeXBlLkJMT0IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXRGaWxlVXBsb2FkV2lkZ2V0KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBmaWVsZC5ocmVmICA9IHRoaXMuZ2V0QmxvYlVSTChkYXRhT2JqLCBmaWVsZC5rZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBmaWVsZC52YWx1ZSA9IGlzU3RyaW5nKHZhbHVlKSA/ICcnIDogdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRGaWVsZFZhbHVlKGZpZWxkLCBkYXRhT2JqLCBmb3JtRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNhdmVQcmV2RGF0YVZhbHVlcygpO1xuICAgICAgICB0aGlzLmZvcm0uY29uc3RydWN0RGF0YU9iamVjdCgpO1xuICAgIH1cblxuICAgIG9uRGF0YVNvdXJjZVVwZGF0ZShyZXNwb25zZSwgbmV3Rm9ybSwgdXBkYXRlTW9kZSkge1xuICAgICAgICBpZiAobmV3Rm9ybSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLm5ldygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnNldEZvcm1EYXRhKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm0uaXNVcGRhdGVNb2RlID0gaXNEZWZpbmVkKHVwZGF0ZU1vZGUpID8gdXBkYXRlTW9kZSA6IHRydWU7XG4gICAgfVxuXG4gICAgc2F2ZVByZXZmb3JtRmllbGRzKCkge1xuICAgICAgICB0aGlzLmZvcm0ucHJldmZvcm1GaWVsZHMgPSBnZXRDbG9uZWRPYmplY3QodGhpcy5mb3JtLmZvcm1GaWVsZHMubWFwKGZpZWxkID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ2tleSc6IGZpZWxkLmtleSxcbiAgICAgICAgICAgICAgICAndHlwZSc6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgICAgICAgJ3dpZGdldHR5cGUnOiBmaWVsZC53aWRnZXR0eXBlLFxuICAgICAgICAgICAgICAgICdvdXRwdXRmb3JtYXQnOiBmaWVsZC5vdXRwdXRmb3JtYXQsXG4gICAgICAgICAgICAgICAgJ3ZhbHVlJzogZmllbGQudmFsdWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBnZXRQcmV2Zm9ybUZpZWxkcygpIHtcbiAgICAgICAgdGhpcy5mb3JtLmZvcm1GaWVsZHMubWFwKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZGaWVsZCA9IHRoaXMuZm9ybS5wcmV2Zm9ybUZpZWxkcy5maW5kKHBGaWVsZCA9PiBwRmllbGQua2V5ID09PSBmaWVsZC5rZXkpO1xuICAgICAgICAgICAgZmllbGQudmFsdWUgPSBwcmV2RmllbGQudmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldERhdGFPYmplY3QoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0ub3BlcmF0aW9uVHlwZSA9PT0gTGl2ZV9PcGVyYXRpb25zLklOU0VSVCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5mb3JtLnByZXZEYXRhT2JqZWN0KSAmJiAhaXNFbXB0eU9iamVjdCh0aGlzLmZvcm0ucHJldkRhdGFPYmplY3QpKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuZm9ybS5wcmV2RGF0YU9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldENsb25lZE9iamVjdCh0aGlzLmZvcm0uZm9ybWRhdGEgfHwge30pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdERhdGFPYmplY3QoaXNQcmV2aW91c0RhdGE/KSB7XG4gICAgICAgIGNvbnN0IGRhdGFPYmplY3QgPSB0aGlzLmdldERhdGFPYmplY3QoKTtcbiAgICAgICAgY29uc3QgZm9ybU5hbWUgPSB0aGlzLmZvcm0ubmFtZTtcbiAgICAgICAgbGV0IGZvcm1GaWVsZHM7XG4gICAgICAgIGZvcm1GaWVsZHMgPSBpc1ByZXZpb3VzRGF0YSA/IHRoaXMuZm9ybS5wcmV2Zm9ybUZpZWxkcyA6IHRoaXMuZm9ybS5nZXRGb3JtRmllbGRzKCk7XG4gICAgICAgIGZvcm1GaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBsZXQgZGF0ZVRpbWUsXG4gICAgICAgICAgICAgICAgZmllbGRWYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVGFyZ2V0ID0gc3BsaXQoZmllbGQua2V5LCAnLicpO1xuICAgICAgICAgICAgY29uc3QgZmllbGROYW1lID0gZmllbGRUYXJnZXRbMF0gfHwgZmllbGQua2V5O1xuXG4gICAgICAgICAgICAvKmNvbGxlY3QgdGhlIHZhbHVlcyBmcm9tIHRoZSBmaWVsZHMgYW5kIGNvbnN0cnVjdCB0aGUgb2JqZWN0Ki9cbiAgICAgICAgICAgIC8qRm9ybWF0IHRoZSBvdXRwdXQgb2YgZGF0ZSB0aW1lIHdpZGdldHMgdG8gdGhlIGdpdmVuIG91dHB1dCBmb3JtYXQqL1xuICAgICAgICAgICAgaWYgKChmaWVsZC53aWRnZXR0eXBlICYmIGlzRGF0ZVRpbWVUeXBlKGZpZWxkLndpZGdldHR5cGUpKSB8fCBpc0RhdGVUaW1lVHlwZShmaWVsZC50eXBlKSkge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVGltZSA9IGdldFZhbGlkRGF0ZU9iamVjdChmaWVsZC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5vdXRwdXRmb3JtYXQgPT09IERhdGFUeXBlLlRJTUVTVEFNUCB8fCBmaWVsZC50eXBlID09PSBEYXRhVHlwZS5USU1FU1RBTVApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSBmaWVsZC52YWx1ZSA/IGRhdGVUaW1lIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5vdXRwdXRmb3JtYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlVGltZSwgZmllbGQub3V0cHV0Zm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSBmaWVsZC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSBEYXRhVHlwZS5CTE9CKSB7XG4gICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IGdldEZpbGVzKGZvcm1OYW1lLCBmaWVsZE5hbWUgKyAnX2Zvcm1XaWRnZXQnLCBmaWVsZC5tdWx0aXBsZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT09IERhdGFUeXBlLkxJU1QpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gZmllbGQudmFsdWUgfHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaWVsZFZhbHVlID0gKGZpZWxkLnZhbHVlID09PSBudWxsIHx8IGZpZWxkLnZhbHVlID09PSAnJykgPyB1bmRlZmluZWQgOiBmaWVsZC52YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkVGFyZ2V0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGRhdGFPYmplY3RbZmllbGROYW1lXSA9IGZpZWxkVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGFPYmplY3RbZmllbGROYW1lXSA9IGRhdGFPYmplY3RbZmllbGROYW1lXSB8fCB7fTtcbiAgICAgICAgICAgICAgICBkYXRhT2JqZWN0W2ZpZWxkTmFtZV1bZmllbGRUYXJnZXRbMV1dID0gZmllbGRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghaXNQcmV2aW91c0RhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS51cGRhdGVGb3JtRGF0YU91dHB1dChkYXRhT2JqZWN0KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm0uZGF0YW91dHB1dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YU9iamVjdDtcbiAgICB9XG5cbiAgICBzZXRQcmltYXJ5S2V5KGZpZWxkTmFtZSkge1xuICAgICAgICAvKlN0b3JlIHRoZSBwcmltYXJ5IGtleSBvZiBkYXRhKi9cbiAgICAgICAgdGhpcy5mb3JtLnByaW1hcnlLZXkgPSB0aGlzLmZvcm0ucHJpbWFyeUtleSB8fCBbXTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5wcmltYXJ5S2V5LmluZGV4T2YoZmllbGROYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5wcmltYXJ5S2V5LnB1c2goZmllbGROYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmRPcGVyYXRpb25UeXBlKCkge1xuICAgICAgICBsZXQgb3BlcmF0aW9uO1xuICAgICAgICBsZXQgaXNQcmltYXJ5ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHNvdXJjZU9wZXJhdGlvbiA9IHRoaXMuZm9ybS5kYXRhc291cmNlICYmIHRoaXMuZm9ybS5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX09QRVJBVElPTl9UWVBFKTtcbiAgICAgICAgaWYgKHNvdXJjZU9wZXJhdGlvbiAmJiBzb3VyY2VPcGVyYXRpb24gIT09ICdyZWFkJykge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZU9wZXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvKklmIE9wZXJhdGlvblR5cGUgaXMgbm90IHNldCB0aGVuIGJhc2VkIG9uIHRoZSBmb3JtZGF0YSBvYmplY3QgcmV0dXJuIHRoZSBvcGVyYXRpb24gdHlwZSxcbiAgICAgICAgICAgIHRoaXMgY2FzZSBvY2N1cnMgb25seSBpZiB0aGUgZm9ybSBpcyBvdXRzaWRlIGEgbGl2ZWdyaWQqL1xuICAgICAgICAvKklmIHRoZSBmb3JtZGF0YSBvYmplY3QgaGFzIHByaW1hcnkga2V5IHZhbHVlIHRoZW4gcmV0dXJuIHVwZGF0ZSBlbHNlIGluc2VydCovXG4gICAgICAgIGlmICh0aGlzLmZvcm0ucHJpbWFyeUtleSAmJiAhaXNFbXB0eSh0aGlzLmZvcm0uZm9ybWRhdGEpKSB7XG4gICAgICAgICAgICAvKklmIG9ubHkgb25lIGNvbHVtbiBpcyBwcmltYXJ5IGtleSovXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtLnByaW1hcnlLZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5mb3JtZGF0YVt0aGlzLmZvcm0ucHJpbWFyeUtleVswXV0pIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gTGl2ZV9PcGVyYXRpb25zLlVQREFURTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLypJZiBvbmx5IG5vIGNvbHVtbiBpcyBwcmltYXJ5IGtleSovXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybS5wcmltYXJ5S2V5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGZvckVhY2godGhpcy5mb3JtLmZvcm1kYXRhLCAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1hcnkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzUHJpbWFyeSkge1xuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBMaXZlX09wZXJhdGlvbnMuVVBEQVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKklmIG11bHRpcGxlIGNvbHVtbnMgYXJlIHByaW1hcnkga2V5Ki9cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXNQcmltYXJ5ID0gc29tZSh0aGlzLmZvcm0ucHJpbWFyeUtleSwgKHByaW1hcnlLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5mb3JtZGF0YVtwcmltYXJ5S2V5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNQcmltYXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IExpdmVfT3BlcmF0aW9ucy5VUERBVEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcGVyYXRpb24gfHwgTGl2ZV9PcGVyYXRpb25zLklOU0VSVDtcbiAgICB9XG5cbiAgICBnZXRQcmV2RGF0YVZhbHVlcygpIHtcbiAgICAgICAgY29uc3QgcHJldkRhdGFWYWx1ZXMgPSBmcm9tUGFpcnMobWFwKHRoaXMuZm9ybS5wcmV2RGF0YVZhbHVlcywgKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBbaXRlbS5rZXksIGl0ZW0udmFsdWVdO1xuICAgICAgICB9KSk7IC8vIENvbnZlcnQgb2YgYXJyYXkgb2YgdmFsdWVzIHRvIGFuIG9iamVjdFxuICAgICAgICB0aGlzLmZvcm0uZm9ybUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGZpZWxkLnZhbHVlID0gcHJldkRhdGFWYWx1ZXNbZmllbGQua2V5XSB8fCAnJztcbiAgICAgICAgICAgIGZpZWxkLnJlc2V0RGlzcGxheUlucHV0KCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJldkRhdGFWYWx1ZXM7XG4gICAgfVxuXG4gICAgc2F2ZVByZXZEYXRhVmFsdWVzKCkge1xuICAgICAgICB0aGlzLmZvcm0ucHJldkRhdGFWYWx1ZXMgPSB0aGlzLmZvcm0uZm9ybUZpZWxkcy5tYXAoKG9iaikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsna2V5Jzogb2JqLmtleSwgJ3ZhbHVlJzogb2JqLnZhbHVlfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xlYXJEYXRhKCkge1xuICAgICAgICB0aGlzLmZvcm0udG9nZ2xlTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZm9ybS5lbXB0eURhdGFNb2RlbCgpO1xuICAgIH1cblxuICAgIHNldFJlYWRvbmx5RmllbGRzKCkge1xuICAgICAgICB0aGlzLmZvcm0uZm9ybUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGZpZWxkLnNldFJlYWRPbmx5U3RhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVzZXQoKSB7XG4gICAgICAgIGxldCBwcmV2RGF0YVZhbHVlcztcbiAgICAgICAgdGhpcy5mb3JtLnJlc2V0Rm9ybVN0YXRlKCk7XG4gICAgICAgIHByZXZEYXRhVmFsdWVzID0gdGhpcy5nZXRQcmV2RGF0YVZhbHVlcygpO1xuICAgICAgICB0aGlzLmZvcm0uZm9ybUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBEYXRhVHlwZS5CTE9CIHx8IGZpZWxkLndpZGdldHR5cGUgPT09ICd1cGxvYWQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnJlc2V0RmlsZVVwbG9hZFdpZGdldChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgZmllbGQuaHJlZiA9IHRoaXMuZ2V0QmxvYlVSTChwcmV2RGF0YVZhbHVlcywgZmllbGQua2V5LCBmaWVsZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWVsZC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk/LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1pbnZhbGlkJyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm0uY29uc3RydWN0RGF0YU9iamVjdCgpO1xuICAgIH1cblxuICAgIGNsb3NlRGlhbG9nKCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtLmlzTGF5b3V0RGlhbG9nKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xvc2UodGhpcy5mb3JtLmRpYWxvZ0lkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5mb3JtLmNsZWFyTWVzc2FnZSgpO1xuICAgICAgICB0aGlzLmZvcm0uaXNVcGRhdGVNb2RlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgICAgIC8qU2hvdyB0aGUgcHJldmlvdXMgc2VsZWN0ZWQgZGF0YSovXG4gICAgICAgIGlmICh0aGlzLmZvcm0uaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRQcmV2Zm9ybUZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybS5pc1VwZGF0ZU1vZGUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5fbGl2ZVRhYmxlUGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uX2xpdmVUYWJsZVBhcmVudC5vbkNhbmNlbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgV01TLTE4NzU5OiBkaWFsb2cgY2xvc2UgaXMgY2FsbGluZyB0d2ljZSBhbmQgZGlhbG9nIG9uSGlkZGVuIHN1YnNjcmlwdGlvbiBpcyBjYWxsaW5nIG9uY2UgZnJvbSB0aGUgbGlicmFyeVxuICAgICAgICAgICAgICBkdWUgdG8gdGhpcyBpZiB3ZSBoYXZlIGFub3RoZXIgZGlhbG9nIGluc2lkZSBsaXZlZm9ybSBhbmQgaWYgd2UgY2xpY2sgb24gY2FuY2VsIG9mIHNlY29uZCBkaWFsb2cgdGhlIGxpYnJhcnlcbiAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uIGlzIGNhbGxpbmcgZm9yIGJvdGggdGhlIGRpYWxvZ3MuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICAgICAgfVxuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuXG5cblxuICAgIGRlbGV0ZShjYWxsQmFja0ZuKSB7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldEZvcm1TdGF0ZSgpO1xuICAgICAgICB0aGlzLmZvcm0ub3BlcmF0aW9uVHlwZSA9IExpdmVfT3BlcmF0aW9ucy5ERUxFVEU7XG4gICAgICAgIHRoaXMuZm9ybS5wcmV2RGF0YU9iamVjdCA9IGdldENsb25lZE9iamVjdCh0aGlzLmZvcm0uZm9ybWRhdGEgfHwge30pO1xuICAgICAgICB0aGlzLmZvcm0uc2F2ZSh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjYWxsQmFja0ZuKTtcbiAgICB9XG5cbiAgICAvLyBGdW5jdGlvbiB1c2UgdG8gc2F2ZSB0aGUgZm9ybSBhbmQgb3BlbiBuZXcgZm9ybSBhZnRlciBzYXZlXG4gICAgc2F2ZUFuZE5ldygpIHtcbiAgICAgICAgdGhpcy5zYXZlKHVuZGVmaW5lZCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuICAgIC8vIEZ1bmN0aW9uIHVzZSB0byBzYXZlIHRoZSBmb3JtIGFuZCBvcGVuIG5ldyBmb3JtIGFmdGVyIHNhdmVcbiAgICBzYXZlQW5kVmlldygpIHtcbiAgICAgICAgdGhpcy5zYXZlKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHN1Ym1pdEZvcm0oJGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2F2ZSgkZXZlbnQpO1xuICAgIH1cblxuICAgIHNhdmUoZXZlbnQ/LCB1cGRhdGVNb2RlPywgbmV3Rm9ybT8pIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0uZGF0YXNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkYXRhLCBwcmV2RGF0YSwgb3BlcmF0aW9uVHlwZSwgaXNWYWxpZDtcbiAgICAgICAgY29uc3QgcmVxdWVzdERhdGE6IGFueSA9IHt9O1xuXG4gICAgICAgIG9wZXJhdGlvblR5cGUgPSB0aGlzLmZvcm0ub3BlcmF0aW9uVHlwZSA9IHRoaXMuZm9ybS5vcGVyYXRpb25UeXBlIHx8IHRoaXMuZmluZE9wZXJhdGlvblR5cGUoKTtcblxuICAgICAgICAvLyBEaXNhYmxlIHRoZSBmb3JtIHN1Ym1pdCBpZiBmb3JtIGlzIGluIGludmFsaWQgc3RhdGUuXG4gICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWRhdGVGaWVsZHNPblN1Ym1pdCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhID0gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuZm9ybS5jb25zdHJ1Y3REYXRhT2JqZWN0KCkpO1xuICAgICAgICBwcmV2RGF0YSA9IHRoaXMuZm9ybS5wcmV2Zm9ybUZpZWxkcyA/IHRoaXMuZm9ybS5jb25zdHJ1Y3REYXRhT2JqZWN0KHRydWUpIDogZGF0YTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaXNWYWxpZCA9IHRoaXMuZm9ybS5pbnZva2VFdmVudENhbGxiYWNrKCdiZWZvcmVzZXJ2aWNlY2FsbCcsIHskZXZlbnQ6IGV2ZW50LCAkb3BlcmF0aW9uOiB0aGlzLmZvcm0ub3BlcmF0aW9uVHlwZSwgJGRhdGE6IGRhdGEsIG9wdGlvbnM6IHJlcXVlc3REYXRhfSk7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNWYWxpZCAmJiBpc1ZhbGlkLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnRvZ2dsZU1lc3NhZ2UodHJ1ZSwgaXNWYWxpZC5lcnJvciwgJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZSA9PT0gJ0Fib3J0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIG9wZXJhdGlvbiBpcyB1cGRhdGUsIGZvcm0gaXMgbm90IHRvdWNoZWQgYW5kIGN1cnJlbnQgZGF0YSBhbmQgcHJldmlvdXMgZGF0YSBpcyBzYW1lLCBTaG93IG5vIGNoYW5nZXMgZGV0ZWN0ZWQgbWVzc2FnZVxuICAgICAgICBpZiAodGhpcy5mb3JtLm9wZXJhdGlvblR5cGUgPT09IExpdmVfT3BlcmF0aW9ucy5VUERBVEUgJiYgdGhpcy5mb3JtLm5nZm9ybSAmJiB0aGlzLmZvcm0ubmdmb3JtLnByaXN0aW5lICYmXG4gICAgICAgICAgICAodGhpcy5mb3JtLmlzU2VsZWN0ZWQgJiYgaXNFcXVhbChkYXRhLCBwcmV2RGF0YSkpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0udG9nZ2xlTWVzc2FnZSh0cnVlLCB0aGlzLmZvcm0uYXBwTG9jYWxlLk1FU1NBR0VfTk9fQ0hBTkdFUywgJ2luZm8nLCAnJyk7XG4gICAgICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0RGF0YS5yb3cgPSBkYXRhO1xuICAgICAgICByZXF1ZXN0RGF0YS50cmFuc2Zvcm0gPSB0cnVlO1xuICAgICAgICByZXF1ZXN0RGF0YS5za2lwTm90aWZpY2F0aW9uID0gdHJ1ZTtcblxuICAgICAgICBpZiAob3BlcmF0aW9uVHlwZSA9PT0gTGl2ZV9PcGVyYXRpb25zLlVQREFURSkge1xuICAgICAgICAgICAgcmVxdWVzdERhdGEucm93RGF0YSA9IHRoaXMuZm9ybS5mb3JtZGF0YTtcbiAgICAgICAgICAgIHJlcXVlc3REYXRhLnByZXZEYXRhID0gcHJldkRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBwZXJmb3JtRGF0YU9wZXJhdGlvbih0aGlzLmZvcm0uZGF0YXNvdXJjZSwgcmVxdWVzdERhdGEsIHtcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6IG9wZXJhdGlvblR5cGVcbiAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IG9wZXJhdGlvblR5cGUgPT09IExpdmVfT3BlcmF0aW9ucy5JTlNFUlQgPyB0aGlzLmZvcm0uaW5zZXJ0bWVzc2FnZSA6IChvcGVyYXRpb25UeXBlID09PSBMaXZlX09wZXJhdGlvbnMuVVBEQVRFID9cbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udXBkYXRlbWVzc2FnZSA6IHRoaXMuZm9ybS5kZWxldGVtZXNzYWdlKTtcbiAgICAgICAgICAgIGxldCByZXN1bHQ7XG5cbiAgICAgICAgICAgIGlmIChvcGVyYXRpb25UeXBlID09PSBMaXZlX09wZXJhdGlvbnMuREVMRVRFKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVxdWVzdERhdGEucm93O1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5lbXB0eURhdGFNb2RlbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wcmV2RGF0YVZhbHVlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmZvcm0ub25TdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnRvZ2dsZU1lc3NhZ2UodHJ1ZSwgbXNnLCAnc3VjY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5fbGl2ZVRhYmxlUGFyZW50KSB7XG4gICAgICAgICAgICAgICAgLy8gaGlnaGxpZ2h0IHRoZSBjdXJyZW50IHVwZGF0ZWQgcm93XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLl9saXZlVGFibGVQYXJlbnQub25SZXN1bHQob3BlcmF0aW9uVHlwZSwgcmVzcG9uc2UsIG5ld0Zvcm0sIHVwZGF0ZU1vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKmdldCB1cGRhdGVkIGRhdGEgd2l0aG91dCByZWZyZXNoaW5nIHBhZ2UqL1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uTElTVF9SRUNPUkRTLCB7XG4gICAgICAgICAgICAgICAgICAgICdza2lwVG9nZ2xlU3RhdGUnOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFTb3VyY2VVcGRhdGUocmVzcG9uc2UsIG5ld0Zvcm0sIHVwZGF0ZU1vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAncmVzdWx0JzogcmVzdWx0LFxuICAgICAgICAgICAgICAgICdzdGF0dXMnOiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5mb3JtLm9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udG9nZ2xlTWVzc2FnZSh0cnVlLCBlcnJvciwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICdyZXN1bHQnOiBlcnJvcixcbiAgICAgICAgICAgICAgICAnc3RhdHVzJzogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgLy8gcmVzZXQgdGhlIGZvcm0gdG8gcHJpc3RpbmUgc3RhdGVcbiAgICAgICAgICAgIHRoaXMuZm9ybS5yZXNldEZvcm1TdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5mb3JtLm9uUmVzdWx0Q2IocmVzcG9uc2UucmVzdWx0LCByZXNwb25zZS5zdGF0dXMsIGV2ZW50KTtcbiAgICAgICAgfSk7XG5cblxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENhbmNlbCBkZWJvdW5jZWQgZnVuY3Rpb25cbiAgICAgICAgaWYgKHRoaXMuX2RlYm91bmNlZFNhdmVQcmV2RGF0YVZhbHVlcyAmJiAodGhpcy5fZGVib3VuY2VkU2F2ZVByZXZEYXRhVmFsdWVzIGFzIGFueSkuY2FuY2VsKSB7XG4gICAgICAgICAgICAodGhpcy5fZGVib3VuY2VkU2F2ZVByZXZEYXRhVmFsdWVzIGFzIGFueSkuY2FuY2VsKCk7XG4gICAgICAgICAgICB0aGlzLl9kZWJvdW5jZWRTYXZlUHJldkRhdGFWYWx1ZXMgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciBmb3JtIHJlZmVyZW5jZVxuICAgICAgICB0aGlzLmZvcm0gPSBudWxsO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -728,7 +728,10 @@ class FormComponent extends StylableComponent {
|
|
|
728
728
|
// as it can contain default value which will again be overridden by undefined.
|
|
729
729
|
const fd = innerFormdata ? innerFormdata : data;
|
|
730
730
|
if (fd) {
|
|
731
|
-
|
|
731
|
+
// Fix for [WMS-31245]: when child form has no formdata and if its field has default value,
|
|
732
|
+
// then use default value instead of parent data
|
|
733
|
+
const isInnerFormField = field.form.parentForm?.name == this.name;
|
|
734
|
+
if (isInnerFormField && isEmpty(innerFormdata)) {
|
|
732
735
|
field.value = field.defaultvalue;
|
|
733
736
|
}
|
|
734
737
|
else if (fd.hasOwnProperty(key)) {
|
|
@@ -2932,7 +2935,7 @@ class LiveFormDirective {
|
|
|
2932
2935
|
href += '?' + Math.random();
|
|
2933
2936
|
return href;
|
|
2934
2937
|
}
|
|
2935
|
-
setFormData(dataObj, formFields) {
|
|
2938
|
+
setFormData(dataObj, formFields, formData) {
|
|
2936
2939
|
if (!dataObj) {
|
|
2937
2940
|
return;
|
|
2938
2941
|
}
|
|
@@ -2948,7 +2951,7 @@ class LiveFormDirective {
|
|
|
2948
2951
|
field.value = isString(value) ? '' : value;
|
|
2949
2952
|
}
|
|
2950
2953
|
else {
|
|
2951
|
-
this.form.setFieldValue(field, dataObj);
|
|
2954
|
+
this.form.setFieldValue(field, dataObj, formData);
|
|
2952
2955
|
}
|
|
2953
2956
|
});
|
|
2954
2957
|
this.savePrevDataValues();
|