@dignite-ng/expand.dynamic-form 3.1.0 → 3.1.2

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.
@@ -82,9 +82,9 @@ export class TreeControlComponent {
82
82
  return result;
83
83
  }
84
84
  ngOnDestroy() {
85
- //Called once, before the instance is destroyed.
86
- //Add 'implements OnDestroy' to the class.
87
- this.extraProperties.removeControl(this._fields.field.name);
85
+ if (this.extraProperties && this._fields?.field?.name) {
86
+ this.extraProperties.removeControl(this._fields.field.name);
87
+ }
88
88
  }
89
89
  /**点击展开树节点图标触发 */
90
90
  nzExpandChange(event) {
@@ -269,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
269
269
  type: ViewChild,
270
270
  args: ['submitclick', { static: true }]
271
271
  }] } });
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS90cmVlL3RyZWUtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vdHJlZS90cmVlLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFPcEUsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUVuQyxZQUFZO1FBQ1osWUFBTyxHQUFRLEVBQUUsQ0FBQztRQVlsQix3QkFBd0I7UUFDeEIsY0FBUyxHQUFNLEVBQUUsQ0FBQztRQWtCVixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFVeEMsc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBOEMxQixZQUFZO1FBQ2QsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUVsQixZQUFZO1FBQ1osbUJBQWMsR0FBVSxFQUFFLENBQUM7SUE5RlcsQ0FBQztJQUl2QyxJQUNXLE1BQU0sQ0FBQyxDQUFNO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFJRCxJQUNXLGVBQWUsQ0FBQyxDQUFNO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUdELElBQ1csUUFBUSxDQUFDLENBQU07UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFJRCxJQUNXLE1BQU0sQ0FBQyxDQUFNO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBR0QsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsaUJBQWlCLENBQWMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsWUFBWTtJQUNaLEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsV0FBVztZQUNyQyxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUdELFNBQVM7UUFDUCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3RDLE1BQU0sZUFBZSxHQUFVLEVBQUUsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzFCLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7WUFDOUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDM0QsSUFBSSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFFRCx1QkFBdUI7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHlCQUF5QjtnQkFDekIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDckUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHNDQUFzQztJQUM5Qix5QkFBeUIsQ0FBQyxXQUFrQjtRQUNsRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDbEIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNqQixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLO2dCQUNuQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDekYsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxXQUFXO1FBQ1QsZ0RBQWdEO1FBQ2hELDBDQUEwQztRQUMxQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBUUQsaUJBQWlCO0lBQ2pCLGNBQWMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDekMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7YUFBTSxDQUFDO1lBQ04sY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztJQUNkLGlCQUFpQixDQUFDLEtBQVUsRUFBRSxJQUFTO1FBQ3JDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvRCxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO1FBRTNDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdEQsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGlCQUFpQjtJQUNULGVBQWUsQ0FBQyxLQUFZO1FBQ2xDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUI7SUFDVCxjQUFjLENBQUMsS0FBWSxFQUFFLFNBQWlCLEVBQUUsT0FBZ0I7UUFDdEUsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO2dCQUN6QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNwRixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsb0JBQW9CO0lBQ1osa0JBQWtCLENBQUMsUUFBZSxFQUFFLE9BQWdCO1FBQzFELEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7WUFDN0IsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7WUFDMUIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhO0lBQ0wscUJBQXFCLENBQUMsS0FBWSxFQUFFLFNBQWlCLEVBQUUsU0FBYyxJQUFJO1FBQy9FLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JELENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEYsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVc7SUFDSCxlQUFlO1FBQ3JCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELG1CQUFtQjtJQUNYLGVBQWUsQ0FBQyxLQUFZO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixrQkFBa0IsQ0FBQyxJQUFTO1FBQzFCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUMzQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsb0JBQW9CO0lBQ1osa0JBQWtCLENBQUMsUUFBZTtRQUN4QyxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNwQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDdEUsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQjtJQUNULGFBQWEsQ0FBQyxLQUFZLEVBQUUsR0FBVztRQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3JELElBQUksS0FBSztvQkFBRSxPQUFPLEtBQUssQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlDQUFpQztJQUN6Qix5QkFBeUIsQ0FBQyxZQUFzQjtRQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVELDZCQUE2QjtJQUNyQixrQkFBa0IsQ0FBQyxLQUFZLEVBQUUsU0FBaUIsRUFBRSxPQUFnQjtRQUMxRSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3hGLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDM0YsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQTBCLEVBQUUsRUFBRTtZQUNoRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLEtBQUssTUFBTSxDQUFDO1lBQzdFLFFBQVEsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FqUlUsb0JBQW9CO2tHQUFwQixvQkFBb0IsMlJDVGpDLHFzR0FrRE87OzJGRHpDTSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCO2dGQVVoQixNQUFNO3NCQURoQixLQUFLO2dCQVFLLGVBQWU7c0JBRHpCLEtBQUs7Z0JBT0ssUUFBUTtzQkFEbEIsS0FBSztnQkFRSyxNQUFNO3NCQURoQixLQUFLO2dCQUtzQyxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RmLXRyZWUtY29udHJvbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RyZWUtY29udHJvbC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyZWVDb250cm9sQ29tcG9uZW50ICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHt9XHJcblxyXG4gIC8qKuWtl+autemFjee9ruWIl+ihqCAqL1xyXG4gIF9maWVsZHM6IGFueSA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmaWVsZHModjogYW55KSB7XHJcbiAgICB0aGlzLl9maWVsZHMgPSB2O1xyXG4gIH1cclxuXHJcbiAgLyoq54i257qn5a2X5q615ZCN56ew77yM55So5LqO5Li66KGo5Y2V6K6+572u5o6n5Lu26LWL5YC8ICovXHJcbiAgX3BhcmVudEZpbGVkTmFtZTogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBwYXJlbnRGaWxlZE5hbWUodjogYW55KSB7XHJcbiAgICB0aGlzLl9wYXJlbnRGaWxlZE5hbWUgPSB2O1xyXG4gIH1cclxuICAvKirniLbnuqflrZfmrrXlkI3np7DvvIznlKjkuo7kuLrooajljZXorr7nva7mjqfku7botYvlgLwgKi9cclxuICBfc2VsZWN0ZWQ6IGFueT1bXTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWQodjogYW55KSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHZ8fFtdO1xyXG4gIH1cclxuXHJcbiAgLyoq6KGo5Y2V5a6e5L2TICovXHJcbiAgX2VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBlbnRpdHkodjogYW55KSB7XHJcbiAgICB0aGlzLl9lbnRpdHkgPSB2O1xyXG4gICAgdGhpcy5kYXRhTG9hZGVkKCk7XHJcbiAgfVxyXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGdldCBleHRyYVByb3BlcnRpZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW50aXR5Py5nZXQoJ2V4dHJhUHJvcGVydGllcycpIGFzIEZvcm1Hcm91cDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIC8qKuaVsOaNruWKoOi9veWujOaIkCAqL1xyXG4gIGFzeW5jIGRhdGFMb2FkZWQoKSB7XHJcbiAgICBpZiAodGhpcy5fZmllbGRzICYmIHRoaXMuX2VudGl0eSkge1xyXG4gICAgICBhd2FpdCB0aGlzLkFmdGVySW5pdCgpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IC8vIOaJi+WKqOinpuWPkeWPmOabtOajgOa1i1xyXG4gICAgICB0aGlzLnN1Ym1pdGNsaWNrPy5uYXRpdmVFbGVtZW50Py5jbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybUNvbmZpZ3VyYXRpb246IGFueSA9ICcnO1xyXG4gIEFmdGVySW5pdCgpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xyXG4gICAgICBjb25zdCBWYWxpZGF0b3JzQXJyYXk6IGFueVtdID0gW107XHJcbiAgICAgIGlmICh0aGlzLl9maWVsZHMucmVxdWlyZWQpIHtcclxuICAgICAgICBWYWxpZGF0b3JzQXJyYXkucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm1Db25maWd1cmF0aW9uID0gdGhpcy5fZmllbGRzLmZpZWxkLmZvcm1Db25maWd1cmF0aW9uO1xyXG4gICAgICBjb25zdCB0cmVlTm9kZXMgPSB0aGlzLmZvcm1Db25maWd1cmF0aW9uWydUcmVlVmlldy5Ob2RlcyddO1xyXG4gICAgICBpZiAodHJlZU5vZGVzPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLm5vZGVzID0gdGhpcy5jb252ZXJ0VHJlZU9wdGlvbnNUb05vZGVzKHRyZWVOb2Rlcyk7XHJcbiAgICAgIH1cclxuICAgICBcclxuICAgICAgLy8g5aaC5p6c5rKh5pyJ6aKE6K6+5YC877yM5LuO6IqC54K55Lit6I635Y+W6buY6K6k6YCJ5Lit55qE5YC8XHJcbiAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWQgfHwgdGhpcy5fc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0aGlzLmdldFNlbGVjdGVkS2V5cyh0aGlzLm5vZGVzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyDmnInpooTorr7lgLzml7bvvIzlkIzmraXmm7TmlrAgbm9kZXMg55qE6YCJ5Lit54q25oCBXHJcbiAgICAgICAgdGhpcy5zeW5jTm9kZXNGcm9tU2VsZWN0ZWRLZXlzKHRoaXMuX3NlbGVjdGVkKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgY29uc3QgbmV3Q29udHJvbCA9IHRoaXMuZmIuY29udHJvbCh0aGlzLl9zZWxlY3RlZCwgVmFsaWRhdG9yc0FycmF5KTtcclxuICAgICAgdGhpcy5leHRyYVByb3BlcnRpZXMuc2V0Q29udHJvbCh0aGlzLl9maWVsZHMuZmllbGQubmFtZSwgbmV3Q29udHJvbCk7XHJcbiAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKuWwhiBUcmVlT3B0aW9ucyDmlbDmja7nu5PmnoTovazmjaLkuLogbm9kZXMg5pWw5o2u57uT5p6EICovXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VHJlZU9wdGlvbnNUb05vZGVzKHRyZWVPcHRpb25zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgdHJlZU9wdGlvbnMpIHtcclxuICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBvcHRpb24uVGV4dCxcclxuICAgICAgICBrZXk6IG9wdGlvbi5WYWx1ZSxcclxuICAgICAgICBpc0NoZWNrZWQ6IG9wdGlvbi5TZWxlY3RlZCA/PyBmYWxzZSxcclxuICAgICAgICBjaGlsZHJlbjogb3B0aW9uLkNoaWxkcmVuPy5sZW5ndGggPyB0aGlzLmNvbnZlcnRUcmVlT3B0aW9uc1RvTm9kZXMob3B0aW9uLkNoaWxkcmVuKSA6IFtdLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy9DYWxsZWQgb25jZSwgYmVmb3JlIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXHJcbiAgICAvL0FkZCAnaW1wbGVtZW50cyBPbkRlc3Ryb3knIHRvIHRoZSBjbGFzcy5cclxuICAgIHRoaXMuZXh0cmFQcm9wZXJ0aWVzLnJlbW92ZUNvbnRyb2wodGhpcy5fZmllbGRzLmZpZWxkLm5hbWUpO1xyXG4gIH1cclxuXHJcbiAgICAvKip0cmVl5pWw5o2uICovXHJcbiAgbm9kZXM6IGFueVtdID0gW107XHJcblxyXG4gIC8qKuW3suWxleW8gOeahOiKgueCuSAqL1xyXG4gIGFuRXhwYW5kZWROb2RlOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvKirngrnlh7vlsZXlvIDmoJHoioLngrnlm77moIfop6blj5EgKi9cclxuICBuekV4cGFuZENoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBsZXQgYW5FeHBhbmRlZE5vZGUgPSB0aGlzLmFuRXhwYW5kZWROb2RlO1xyXG4gICAgaWYgKGFuRXhwYW5kZWROb2RlLmluY2x1ZGVzKGV2ZW50Lm5vZGUua2V5KSkge1xyXG4gICAgICBhbkV4cGFuZGVkTm9kZSA9IGFuRXhwYW5kZWROb2RlLmZpbHRlcihrZXkgPT4ga2V5ICE9PSBldmVudC5ub2RlLmtleSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhbkV4cGFuZGVkTm9kZS5wdXNoKGV2ZW50Lm5vZGUua2V5KTtcclxuICAgIH1cclxuICAgIHRoaXMuYW5FeHBhbmRlZE5vZGUgPSBhbkV4cGFuZGVkTm9kZTtcclxuICB9XHJcblxyXG4gIC8qKuWIh+aNouiKgueCuemAieS4reeKtuaAgSAqL1xyXG4gIHRvZ2dsZU5vZGVDaGVja2VkKGV2ZW50OiBhbnksIG5vZGU6IGFueSkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gdGhpcy5mb3JtQ29uZmlndXJhdGlvblsnVHJlZVZpZXcuTXVsdGlwbGUnXTtcclxuICAgIGNvbnN0IG5ld0NoZWNrZWQgPSAhbm9kZS5vcmlnaW4/LmlzQ2hlY2tlZDtcclxuICAgIFxyXG4gICAgaWYgKCFpc011bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJBbGxDaGVja2VkKHRoaXMubm9kZXMpO1xyXG4gICAgICBpZiAobmV3Q2hlY2tlZCkge1xyXG4gICAgICAgIHRoaXMuc2V0Tm9kZUNoZWNrZWRPbmx5KHRoaXMubm9kZXMsIG5vZGUua2V5LCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXROb2RlQ2hlY2tlZCh0aGlzLm5vZGVzLCBub2RlLmtleSwgbmV3Q2hlY2tlZCk7XHJcbiAgICAgIGlmIChuZXdDaGVja2VkKSB7XHJcbiAgICAgICAgdGhpcy5zZXRQYXJlbnROb2Rlc0NoZWNrZWQodGhpcy5ub2Rlcywgbm9kZS5rZXkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMubm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm1WYWx1ZSgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoq5riF6Zmk5omA5pyJ6IqC54K555qE6YCJ5Lit54q25oCBICovXHJcbiAgcHJpdmF0ZSBjbGVhckFsbENoZWNrZWQobm9kZXM6IGFueVtdKSB7XHJcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgbm9kZS5pc0NoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuY2xlYXJBbGxDaGVja2VkKG5vZGUuY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKirorr7nva7mjIflrproioLngrnnmoTpgInkuK3nirbmgIEgKi9cclxuICBwcml2YXRlIHNldE5vZGVDaGVja2VkKG5vZGVzOiBhbnlbXSwgdGFyZ2V0S2V5OiBzdHJpbmcsIGNoZWNrZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG4gICAgICBpZiAobm9kZS5rZXkgPT09IHRhcmdldEtleSkge1xyXG4gICAgICAgIG5vZGUuaXNDaGVja2VkID0gY2hlY2tlZDtcclxuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnNldENoaWxkcmVuQ2hlY2tlZChub2RlLmNoaWxkcmVuLCBjaGVja2VkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCAmJiB0aGlzLnNldE5vZGVDaGVja2VkKG5vZGUuY2hpbGRyZW4sIHRhcmdldEtleSwgY2hlY2tlZCkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoq6YCS5b2S6K6+572u5omA5pyJ5a2Q6IqC54K555qE6YCJ5Lit54q25oCBICovXHJcbiAgcHJpdmF0ZSBzZXRDaGlsZHJlbkNoZWNrZWQoY2hpbGRyZW46IGFueVtdLCBjaGVja2VkOiBib29sZWFuKSB7XHJcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgIGNoaWxkLmlzQ2hlY2tlZCA9IGNoZWNrZWQ7XHJcbiAgICAgIGlmIChjaGlsZC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRDaGlsZHJlbkNoZWNrZWQoY2hpbGQuY2hpbGRyZW4sIGNoZWNrZWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKirpgInkuK3miYDmnInniLboioLngrkgKi9cclxuICBwcml2YXRlIHNldFBhcmVudE5vZGVzQ2hlY2tlZChub2RlczogYW55W10sIHRhcmdldEtleTogc3RyaW5nLCBwYXJlbnQ6IGFueSA9IG51bGwpOiBib29sZWFuIHtcclxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG4gICAgICBpZiAobm9kZS5rZXkgPT09IHRhcmdldEtleSkge1xyXG4gICAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAgIHBhcmVudC5pc0NoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zZXRQYXJlbnROb2Rlc0NoZWNrZWQodGhpcy5ub2RlcywgcGFyZW50LmtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuPy5sZW5ndGggJiYgdGhpcy5zZXRQYXJlbnROb2Rlc0NoZWNrZWQobm9kZS5jaGlsZHJlbiwgdGFyZ2V0S2V5LCBub2RlKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKirmm7TmlrDooajljZXlgLwgKi9cclxuICBwcml2YXRlIHVwZGF0ZUZvcm1WYWx1ZSgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkS2V5cyA9IHRoaXMuZ2V0U2VsZWN0ZWRLZXlzKHRoaXMubm9kZXMpO1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZXh0cmFQcm9wZXJ0aWVzLmdldCh0aGlzLl9maWVsZHMuZmllbGQubmFtZSk7XHJcbiAgICBjb250cm9sPy5zZXRWYWx1ZShzZWxlY3RlZEtleXMpO1xyXG4gIH1cclxuXHJcbiAgLyoq6I635Y+W5omA5pyJ6YCJ5Lit6IqC54K555qEIGtleSAqL1xyXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRLZXlzKG5vZGVzOiBhbnlbXSk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGtleXMgPSBbXTtcclxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG4gICAgICBpZiAobm9kZS5pc0NoZWNrZWQpIHtcclxuICAgICAgICBrZXlzLnB1c2gobm9kZS5rZXkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBrZXlzLnB1c2goLi4udGhpcy5nZXRTZWxlY3RlZEtleXMobm9kZS5jaGlsZHJlbikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5cztcclxuICB9XHJcblxyXG4gIC8qKuWIpOaWreiKgueCueeahOWtkOiKgueCueaYr+WQpuacieiiq+mAieS4reeahCAqL1xyXG4gIGhhc0NoaWxkcmVuQ2hlY2tlZChub2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChub2RlLm9yaWdpbj8uaXNDaGVja2VkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9yaWdpbk5vZGUgPSB0aGlzLmZpbmROb2RlQnlLZXkodGhpcy5ub2Rlcywgbm9kZS5rZXkpO1xyXG4gICAgaWYgKCFvcmlnaW5Ob2RlPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmhhc0FueUNoaWxkQ2hlY2tlZChvcmlnaW5Ob2RlLmNoaWxkcmVuKTtcclxuICB9XHJcblxyXG4gIC8qKumAkuW9kuajgOafpeWtkOiKgueCueaYr+WQpuacieiiq+mAieS4reeahCAqL1xyXG4gIHByaXZhdGUgaGFzQW55Q2hpbGRDaGVja2VkKGNoaWxkcmVuOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xyXG4gICAgICBpZiAoY2hpbGQuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuPy5sZW5ndGggJiYgdGhpcy5oYXNBbnlDaGlsZENoZWNrZWQoY2hpbGQuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKuagueaNriBrZXkg5p+l5om+6IqC54K5ICovXHJcbiAgcHJpdmF0ZSBmaW5kTm9kZUJ5S2V5KG5vZGVzOiBhbnlbXSwga2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcbiAgICAgIGlmIChub2RlLmtleSA9PT0ga2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kTm9kZUJ5S2V5KG5vZGUuY2hpbGRyZW4sIGtleSk7XHJcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoq5qC55o2u6aKE6K6+55qEIGtleXMg5ZCM5q2l5pu05pawIG5vZGVzIOeahOmAieS4reeKtuaAgSAqL1xyXG4gIHByaXZhdGUgc3luY05vZGVzRnJvbVNlbGVjdGVkS2V5cyhzZWxlY3RlZEtleXM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLmNsZWFyQWxsQ2hlY2tlZCh0aGlzLm5vZGVzKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIHNlbGVjdGVkS2V5cykge1xyXG4gICAgICB0aGlzLnNldE5vZGVDaGVja2VkT25seSh0aGlzLm5vZGVzLCBrZXksIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoq5LuF6K6+572u5oyH5a6a6IqC54K555qE6YCJ5Lit54q25oCB77yM5LiN5b2x5ZON5a2Q6IqC54K55ZKM54i26IqC54K5ICovXHJcbiAgcHJpdmF0ZSBzZXROb2RlQ2hlY2tlZE9ubHkobm9kZXM6IGFueVtdLCB0YXJnZXRLZXk6IHN0cmluZywgY2hlY2tlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcbiAgICAgIGlmIChub2RlLmtleSA9PT0gdGFyZ2V0S2V5KSB7XHJcbiAgICAgICAgbm9kZS5pc0NoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuPy5sZW5ndGggJiYgdGhpcy5zZXROb2RlQ2hlY2tlZE9ubHkobm9kZS5jaGlsZHJlbiwgdGFyZ2V0S2V5LCBjaGVja2VkKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICBjb25zdCBjaGVja2JveGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdW2RhdGEtaW5kZXRlcm1pbmF0ZV0nKTtcclxuICAgIGNoZWNrYm94ZXMuZm9yRWFjaCgoY2hlY2tib3g6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXRlcm1pbmF0ZSA9IGNoZWNrYm94LmdldEF0dHJpYnV0ZSgnZGF0YS1pbmRldGVybWluYXRlJykgPT09ICd0cnVlJztcclxuICAgICAgY2hlY2tib3guaW5kZXRlcm1pbmF0ZSA9IGluZGV0ZXJtaW5hdGU7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJfZW50aXR5XCI+XHJcbiAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJleHRyYVByb3BlcnRpZXNcIiBjbGFzcz1cInNlbGVjdGNvbnRyb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgKm5nSWY9XCJfZmllbGRzLmRpc3BsYXlOYW1lXCI+e3sgX2ZpZWxkcy5kaXNwbGF5TmFtZSB9fTwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICA8YWJwLXRyZWUgW25vZGVzXT1cIm5vZGVzXCIgKG56RXhwYW5kQ2hhbmdlKT1cIm56RXhwYW5kQ2hhbmdlKCRldmVudClcIiBbZXhwYW5kZWRLZXlzXT1cImFuRXhwYW5kZWROb2RlXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZSAjbWVudSBsZXQtbm9kZT5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2suc3RvcCk9XCJlZGl0SXRlbUJ0bihub2RlKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiBtZS0xIGZhIGZhLXBlbmNpbFwiPjwvaT57eydBYnBVOjpFZGl0JyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrLnN0b3ApPVwiY3JlYXRlQ2hpbGRJdGVtQnRuKG5vZGUpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIG1lLTEgZmEgZmEtcGx1c1wiPjwvaT57eydBYnBEeW5hbWljRm9ybTo6QWRkU3ViTWVudUl0ZW0nIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2suc3RvcCk9XCJkZWxldGVNZW51SXRlbUJ0bihub2RlKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiBtZS0xIGZhIGZhLXJlbW92ZVwiPjwvaT57eydBYnBVOjpEZWxldGUnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGFicFRyZWVOb2RlVGVtcGxhdGUgbGV0LW5vZGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlTm9kZUNoZWNrZWQoJGV2ZW50LCBub2RlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgI2NoZWNrYm94IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cIm5vZGUub3JpZ2luPy5pc0NoZWNrZWRcIiBbYXR0ci5kYXRhLWluZGV0ZXJtaW5hdGVdPVwiaGFzQ2hpbGRyZW5DaGVja2VkKG5vZGUpXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tub2RlLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgYWJwVHJlZUV4cGFuZGVkSWNvblRlbXBsYXRlIGxldC1ub2RlIGxldC1vcmlnaW49XCJvcmlnaW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIiAqbmdJZj1cIm5vZGUuY2hpbGRyZW4ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vZGUuaXNFeHBhbmRlZCA/IG1pbnVzSWNvbiA6IHBsdXNJY29uXCI+PC9uZy1jb250YWluZXI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21pbnVzSWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuNSAwYzYuMzQ3IDAgMTEuNSA1LjE1MyAxMS41IDExLjVzLTUuMTUzIDExLjUtMTEuNSAxMS41LTExLjUtNS4xNTMtMTEuNS0xMS41IDUuMTUzLTExLjUgMTEuNS0xMS41em0wIDFjNS43OTUgMCAxMC41IDQuNzA1IDEwLjUgMTAuNXMtNC43MDUgMTAuNS0xMC41IDEwLjUtMTAuNS00LjcwNS0xMC41LTEwLjUgNC43MDUtMTAuNSAxMC41LTEwLjV6bS02LjUgMTBoMTN2MWgtMTN2LTF6XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwbHVzSWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuNSAwYzYuMzQ3IDAgMTEuNSA1LjE1MyAxMS41IDExLjVzLTUuMTUzIDExLjUtMTEuNSAxMS41LTExLjUtNS4xNTMtMTEuNS0xMS41IDUuMTUzLTExLjUgMTEuNS0xMS41em0wIDFjNS43OTUgMCAxMC41IDQuNzA1IDEwLjUgMTAuNXMtNC43MDUgMTAuNS0xMC41IDEwLjUtMTAuNS00LjcwNS0xMC41LTEwLjUgNC43MDUtMTAuNSAxMC41LTEwLjV6bS41IDEwaDZ2MWgtNnY2aC0xdi02aC02di0xaDZ2LTZoMXY2elwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2FicC10cmVlPlxyXG5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxyXG48L2Zvcm0+Il19
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS90cmVlL3RyZWUtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vdHJlZS90cmVlLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFPcEUsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUVuQyxZQUFZO1FBQ1osWUFBTyxHQUFRLEVBQUUsQ0FBQztRQVlsQix3QkFBd0I7UUFDeEIsY0FBUyxHQUFNLEVBQUUsQ0FBQztRQWtCVixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFVeEMsc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBOEMxQixZQUFZO1FBQ2QsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUVsQixZQUFZO1FBQ1osbUJBQWMsR0FBVSxFQUFFLENBQUM7SUE5RlcsQ0FBQztJQUl2QyxJQUNXLE1BQU0sQ0FBQyxDQUFNO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFJRCxJQUNXLGVBQWUsQ0FBQyxDQUFNO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENB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QyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FqUlUsb0JBQW9CO2tHQUFwQixvQkFBb0IsMlJDVGpDLHFzR0FrRE87OzJGRHpDTSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCO2dGQVVoQixNQUFNO3NCQURoQixLQUFLO2dCQVFLLGVBQWU7c0JBRHpCLEtBQUs7Z0JBT0ssUUFBUTtzQkFEbEIsS0FBSztnQkFRSyxNQUFNO3NCQURoQixLQUFLO2dCQUtzQyxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RmLXRyZWUtY29udHJvbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RyZWUtY29udHJvbC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyZWVDb250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge31cclxuXHJcbiAgLyoq5a2X5q616YWN572u5YiX6KGoICovXHJcbiAgX2ZpZWxkczogYW55ID0gJyc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGZpZWxkcyh2OiBhbnkpIHtcclxuICAgIHRoaXMuX2ZpZWxkcyA9IHY7XHJcbiAgfVxyXG5cclxuICAvKirniLbnuqflrZfmrrXlkI3np7DvvIznlKjkuo7kuLrooajljZXorr7nva7mjqfku7botYvlgLwgKi9cclxuICBfcGFyZW50RmlsZWROYW1lOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHBhcmVudEZpbGVkTmFtZSh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3BhcmVudEZpbGVkTmFtZSA9IHY7XHJcbiAgfVxyXG4gIC8qKueItue6p+Wtl+auteWQjeensO+8jOeUqOS6juS4uuihqOWNleiuvue9ruaOp+S7tui1i+WAvCAqL1xyXG4gIF9zZWxlY3RlZDogYW55PVtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZWxlY3RlZCh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkID0gdnx8W107XHJcbiAgfVxyXG5cclxuICAvKirooajljZXlrp7kvZMgKi9cclxuICBfZW50aXR5OiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGVudGl0eSh2OiBhbnkpIHtcclxuICAgIHRoaXMuX2VudGl0eSA9IHY7XHJcbiAgICB0aGlzLmRhdGFMb2FkZWQoKTtcclxuICB9XHJcbiAgQFZpZXdDaGlsZCgnc3VibWl0Y2xpY2snLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJtaXRjbGljazogRWxlbWVudFJlZjtcclxuXHJcbiAgZ2V0IGV4dHJhUHJvcGVydGllcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9lbnRpdHk/LmdldCgnZXh0cmFQcm9wZXJ0aWVzJykgYXMgRm9ybUdyb3VwO1xyXG4gIH1cclxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgLyoq5pWw5o2u5Yqg6L295a6M5oiQICovXHJcbiAgYXN5bmMgZGF0YUxvYWRlZCgpIHtcclxuICAgIGlmICh0aGlzLl9maWVsZHMgJiYgdGhpcy5fZW50aXR5KSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuQWZ0ZXJJbml0KCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8g5omL5Yqo6Kem5Y+R5Y+Y5pu05qOA5rWLXHJcbiAgICAgIHRoaXMuc3VibWl0Y2xpY2s/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtQ29uZmlndXJhdGlvbjogYW55ID0gJyc7XHJcbiAgQWZ0ZXJJbml0KCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XHJcbiAgICAgIGNvbnN0IFZhbGlkYXRvcnNBcnJheTogYW55W10gPSBbXTtcclxuICAgICAgaWYgKHRoaXMuX2ZpZWxkcy5yZXF1aXJlZCkge1xyXG4gICAgICAgIFZhbGlkYXRvcnNBcnJheS5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24gPSB0aGlzLl9maWVsZHMuZmllbGQuZm9ybUNvbmZpZ3VyYXRpb247XHJcbiAgICAgIGNvbnN0IHRyZWVOb2RlcyA9IHRoaXMuZm9ybUNvbmZpZ3VyYXRpb25bJ1RyZWVWaWV3Lk5vZGVzJ107XHJcbiAgICAgIGlmICh0cmVlTm9kZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMubm9kZXMgPSB0aGlzLmNvbnZlcnRUcmVlT3B0aW9uc1RvTm9kZXModHJlZU5vZGVzKTtcclxuICAgICAgfVxyXG4gICAgIFxyXG4gICAgICAvLyDlpoLmnpzmsqHmnInpooTorr7lgLzvvIzku47oioLngrnkuK3ojrflj5bpu5jorqTpgInkuK3nmoTlgLxcclxuICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZCB8fCB0aGlzLl9zZWxlY3RlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHRoaXMuZ2V0U2VsZWN0ZWRLZXlzKHRoaXMubm9kZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIOaciemihOiuvuWAvOaXtu+8jOWQjOatpeabtOaWsCBub2RlcyDnmoTpgInkuK3nirbmgIFcclxuICAgICAgICB0aGlzLnN5bmNOb2Rlc0Zyb21TZWxlY3RlZEtleXModGhpcy5fc2VsZWN0ZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBuZXdDb250cm9sID0gdGhpcy5mYi5jb250cm9sKHRoaXMuX3NlbGVjdGVkLCBWYWxpZGF0b3JzQXJyYXkpO1xyXG4gICAgICB0aGlzLmV4dHJhUHJvcGVydGllcy5zZXRDb250cm9sKHRoaXMuX2ZpZWxkcy5maWVsZC5uYW1lLCBuZXdDb250cm9sKTtcclxuICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoq5bCGIFRyZWVPcHRpb25zIOaVsOaNrue7k+aehOi9rOaNouS4uiBub2RlcyDmlbDmja7nu5PmnoQgKi9cclxuICBwcml2YXRlIGNvbnZlcnRUcmVlT3B0aW9uc1RvTm9kZXModHJlZU9wdGlvbnM6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gW107XHJcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0cmVlT3B0aW9ucykge1xyXG4gICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IG9wdGlvbi5UZXh0LFxyXG4gICAgICAgIGtleTogb3B0aW9uLlZhbHVlLFxyXG4gICAgICAgIGlzQ2hlY2tlZDogb3B0aW9uLlNlbGVjdGVkID8/IGZhbHNlLFxyXG4gICAgICAgIGNoaWxkcmVuOiBvcHRpb24uQ2hpbGRyZW4/Lmxlbmd0aCA/IHRoaXMuY29udmVydFRyZWVPcHRpb25zVG9Ob2RlcyhvcHRpb24uQ2hpbGRyZW4pIDogW10sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5leHRyYVByb3BlcnRpZXMgJiYgdGhpcy5fZmllbGRzPy5maWVsZD8ubmFtZSkge1xyXG4gICAgICB0aGlzLmV4dHJhUHJvcGVydGllcy5yZW1vdmVDb250cm9sKHRoaXMuX2ZpZWxkcy5maWVsZC5uYW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICAgLyoqdHJlZeaVsOaNriAqL1xyXG4gIG5vZGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvKirlt7LlsZXlvIDnmoToioLngrkgKi9cclxuICBhbkV4cGFuZGVkTm9kZTogYW55W10gPSBbXTtcclxuXHJcbiAgLyoq54K55Ye75bGV5byA5qCR6IqC54K55Zu+5qCH6Kem5Y+RICovXHJcbiAgbnpFeHBhbmRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IGFuRXhwYW5kZWROb2RlID0gdGhpcy5hbkV4cGFuZGVkTm9kZTtcclxuICAgIGlmIChhbkV4cGFuZGVkTm9kZS5pbmNsdWRlcyhldmVudC5ub2RlLmtleSkpIHtcclxuICAgICAgYW5FeHBhbmRlZE5vZGUgPSBhbkV4cGFuZGVkTm9kZS5maWx0ZXIoa2V5ID0+IGtleSAhPT0gZXZlbnQubm9kZS5rZXkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYW5FeHBhbmRlZE5vZGUucHVzaChldmVudC5ub2RlLmtleSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFuRXhwYW5kZWROb2RlID0gYW5FeHBhbmRlZE5vZGU7XHJcbiAgfVxyXG5cclxuICAvKirliIfmjaLoioLngrnpgInkuK3nirbmgIEgKi9cclxuICB0b2dnbGVOb2RlQ2hlY2tlZChldmVudDogYW55LCBub2RlOiBhbnkpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IHRoaXMuZm9ybUNvbmZpZ3VyYXRpb25bJ1RyZWVWaWV3Lk11bHRpcGxlJ107XHJcbiAgICBjb25zdCBuZXdDaGVja2VkID0gIW5vZGUub3JpZ2luPy5pc0NoZWNrZWQ7XHJcbiAgICBcclxuICAgIGlmICghaXNNdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmNsZWFyQWxsQ2hlY2tlZCh0aGlzLm5vZGVzKTtcclxuICAgICAgaWYgKG5ld0NoZWNrZWQpIHtcclxuICAgICAgICB0aGlzLnNldE5vZGVDaGVja2VkT25seSh0aGlzLm5vZGVzLCBub2RlLmtleSwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0Tm9kZUNoZWNrZWQodGhpcy5ub2Rlcywgbm9kZS5rZXksIG5ld0NoZWNrZWQpO1xyXG4gICAgICBpZiAobmV3Q2hlY2tlZCkge1xyXG4gICAgICAgIHRoaXMuc2V0UGFyZW50Tm9kZXNDaGVja2VkKHRoaXMubm9kZXMsIG5vZGUua2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtVmFsdWUoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKua4hemZpOaJgOacieiKgueCueeahOmAieS4reeKtuaAgSAqL1xyXG4gIHByaXZhdGUgY2xlYXJBbGxDaGVja2VkKG5vZGVzOiBhbnlbXSkge1xyXG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcbiAgICAgIG5vZGUuaXNDaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmNsZWFyQWxsQ2hlY2tlZChub2RlLmNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoq6K6+572u5oyH5a6a6IqC54K555qE6YCJ5Lit54q25oCBICovXHJcbiAgcHJpdmF0ZSBzZXROb2RlQ2hlY2tlZChub2RlczogYW55W10sIHRhcmdldEtleTogc3RyaW5nLCBjaGVja2VkOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgaWYgKG5vZGUua2V5ID09PSB0YXJnZXRLZXkpIHtcclxuICAgICAgICBub2RlLmlzQ2hlY2tlZCA9IGNoZWNrZWQ7XHJcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5zZXRDaGlsZHJlbkNoZWNrZWQobm9kZS5jaGlsZHJlbiwgY2hlY2tlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuPy5sZW5ndGggJiYgdGhpcy5zZXROb2RlQ2hlY2tlZChub2RlLmNoaWxkcmVuLCB0YXJnZXRLZXksIGNoZWNrZWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKumAkuW9kuiuvue9ruaJgOacieWtkOiKgueCueeahOmAieS4reeKtuaAgSAqL1xyXG4gIHByaXZhdGUgc2V0Q2hpbGRyZW5DaGVja2VkKGNoaWxkcmVuOiBhbnlbXSwgY2hlY2tlZDogYm9vbGVhbikge1xyXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xyXG4gICAgICBjaGlsZC5pc0NoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgICBpZiAoY2hpbGQuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuc2V0Q2hpbGRyZW5DaGVja2VkKGNoaWxkLmNoaWxkcmVuLCBjaGVja2VkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoq6YCJ5Lit5omA5pyJ54i26IqC54K5ICovXHJcbiAgcHJpdmF0ZSBzZXRQYXJlbnROb2Rlc0NoZWNrZWQobm9kZXM6IGFueVtdLCB0YXJnZXRLZXk6IHN0cmluZywgcGFyZW50OiBhbnkgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgaWYgKG5vZGUua2V5ID09PSB0YXJnZXRLZXkpIHtcclxuICAgICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgICBwYXJlbnQuaXNDaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2V0UGFyZW50Tm9kZXNDaGVja2VkKHRoaXMubm9kZXMsIHBhcmVudC5rZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobm9kZS5jaGlsZHJlbj8ubGVuZ3RoICYmIHRoaXMuc2V0UGFyZW50Tm9kZXNDaGVja2VkKG5vZGUuY2hpbGRyZW4sIHRhcmdldEtleSwgbm9kZSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoq5pu05paw6KGo5Y2V5YC8ICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtVmFsdWUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEtleXMgPSB0aGlzLmdldFNlbGVjdGVkS2V5cyh0aGlzLm5vZGVzKTtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmV4dHJhUHJvcGVydGllcy5nZXQodGhpcy5fZmllbGRzLmZpZWxkLm5hbWUpO1xyXG4gICAgY29udHJvbD8uc2V0VmFsdWUoc2VsZWN0ZWRLZXlzKTtcclxuICB9XHJcblxyXG4gIC8qKuiOt+WPluaJgOaciemAieS4reiKgueCueeahCBrZXkgKi9cclxuICBwcml2YXRlIGdldFNlbGVjdGVkS2V5cyhub2RlczogYW55W10pOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBrZXlzID0gW107XHJcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgaWYgKG5vZGUuaXNDaGVja2VkKSB7XHJcbiAgICAgICAga2V5cy5wdXNoKG5vZGUua2V5KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobm9kZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAga2V5cy5wdXNoKC4uLnRoaXMuZ2V0U2VsZWN0ZWRLZXlzKG5vZGUuY2hpbGRyZW4pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleXM7XHJcbiAgfVxyXG5cclxuICAvKirliKTmlq3oioLngrnnmoTlrZDoioLngrnmmK/lkKbmnInooqvpgInkuK3nmoQgKi9cclxuICBoYXNDaGlsZHJlbkNoZWNrZWQobm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAobm9kZS5vcmlnaW4/LmlzQ2hlY2tlZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcmlnaW5Ob2RlID0gdGhpcy5maW5kTm9kZUJ5S2V5KHRoaXMubm9kZXMsIG5vZGUua2V5KTtcclxuICAgIGlmICghb3JpZ2luTm9kZT8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5oYXNBbnlDaGlsZENoZWNrZWQob3JpZ2luTm9kZS5jaGlsZHJlbik7XHJcbiAgfVxyXG5cclxuICAvKirpgJLlvZLmo4Dmn6XlrZDoioLngrnmmK/lkKbmnInooqvpgInkuK3nmoQgKi9cclxuICBwcml2YXRlIGhhc0FueUNoaWxkQ2hlY2tlZChjaGlsZHJlbjogYW55W10pOiBib29sZWFuIHtcclxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgaWYgKGNoaWxkLmlzQ2hlY2tlZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjaGlsZC5jaGlsZHJlbj8ubGVuZ3RoICYmIHRoaXMuaGFzQW55Q2hpbGRDaGVja2VkKGNoaWxkLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKirmoLnmja4ga2V5IOafpeaJvuiKgueCuSAqL1xyXG4gIHByaXZhdGUgZmluZE5vZGVCeUtleShub2RlczogYW55W10sIGtleTogc3RyaW5nKTogYW55IHtcclxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG4gICAgICBpZiAobm9kZS5rZXkgPT09IGtleSkge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZE5vZGVCeUtleShub2RlLmNoaWxkcmVuLCBrZXkpO1xyXG4gICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKuagueaNrumihOiuvueahCBrZXlzIOWQjOatpeabtOaWsCBub2RlcyDnmoTpgInkuK3nirbmgIEgKi9cclxuICBwcml2YXRlIHN5bmNOb2Rlc0Zyb21TZWxlY3RlZEtleXMoc2VsZWN0ZWRLZXlzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5jbGVhckFsbENoZWNrZWQodGhpcy5ub2Rlcyk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzZWxlY3RlZEtleXMpIHtcclxuICAgICAgdGhpcy5zZXROb2RlQ2hlY2tlZE9ubHkodGhpcy5ub2Rlcywga2V5LCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKuS7heiuvue9ruaMh+WumuiKgueCueeahOmAieS4reeKtuaAge+8jOS4jeW9seWTjeWtkOiKgueCueWSjOeItuiKgueCuSAqL1xyXG4gIHByaXZhdGUgc2V0Tm9kZUNoZWNrZWRPbmx5KG5vZGVzOiBhbnlbXSwgdGFyZ2V0S2V5OiBzdHJpbmcsIGNoZWNrZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG4gICAgICBpZiAobm9kZS5rZXkgPT09IHRhcmdldEtleSkge1xyXG4gICAgICAgIG5vZGUuaXNDaGVja2VkID0gY2hlY2tlZDtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobm9kZS5jaGlsZHJlbj8ubGVuZ3RoICYmIHRoaXMuc2V0Tm9kZUNoZWNrZWRPbmx5KG5vZGUuY2hpbGRyZW4sIHRhcmdldEtleSwgY2hlY2tlZCkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgY29uc3QgY2hlY2tib3hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXVtkYXRhLWluZGV0ZXJtaW5hdGVdJyk7XHJcbiAgICBjaGVja2JveGVzLmZvckVhY2goKGNoZWNrYm94OiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGluZGV0ZXJtaW5hdGUgPSBjaGVja2JveC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5kZXRlcm1pbmF0ZScpID09PSAndHJ1ZSc7XHJcbiAgICAgIGNoZWNrYm94LmluZGV0ZXJtaW5hdGUgPSBpbmRldGVybWluYXRlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiX2VudGl0eVwiPlxyXG4gICAgPGRpdiBmb3JtR3JvdXBOYW1lPVwiZXh0cmFQcm9wZXJ0aWVzXCIgY2xhc3M9XCJzZWxlY3Rjb250cm9sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiICpuZ0lmPVwiX2ZpZWxkcy5kaXNwbGF5TmFtZVwiPnt7IF9maWVsZHMuZGlzcGxheU5hbWUgfX08L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgPGFicC10cmVlIFtub2Rlc109XCJub2Rlc1wiIChuekV4cGFuZENoYW5nZSk9XCJuekV4cGFuZENoYW5nZSgkZXZlbnQpXCIgW2V4cGFuZGVkS2V5c109XCJhbkV4cGFuZGVkTm9kZVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8bmctdGVtcGxhdGUgI21lbnUgbGV0LW5vZGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrLnN0b3ApPVwiZWRpdEl0ZW1CdG4obm9kZSlcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIgbWUtMSBmYSBmYS1wZW5jaWxcIj48L2k+e3snQWJwVTo6RWRpdCcgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljay5zdG9wKT1cImNyZWF0ZUNoaWxkSXRlbUJ0bihub2RlKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiBtZS0xIGZhIGZhLXBsdXNcIj48L2k+e3snQWJwRHluYW1pY0Zvcm06OkFkZFN1Yk1lbnVJdGVtJyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrLnN0b3ApPVwiZGVsZXRlTWVudUl0ZW1CdG4obm9kZSlcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIgbWUtMSBmYSBmYS1yZW1vdmVcIj48L2k+e3snQWJwVTo6RGVsZXRlJyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBhYnBUcmVlTm9kZVRlbXBsYXRlIGxldC1ub2RlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZU5vZGVDaGVja2VkKCRldmVudCwgbm9kZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICNjaGVja2JveCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJub2RlLm9yaWdpbj8uaXNDaGVja2VkXCIgW2F0dHIuZGF0YS1pbmRldGVybWluYXRlXT1cImhhc0NoaWxkcmVuQ2hlY2tlZChub2RlKVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bm9kZS50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGFicFRyZWVFeHBhbmRlZEljb25UZW1wbGF0ZSBsZXQtbm9kZSBsZXQtb3JpZ2luPVwib3JpZ2luXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCJub2RlLmNoaWxkcmVuLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlLmlzRXhwYW5kZWQgPyBtaW51c0ljb24gOiBwbHVzSWNvblwiPjwvbmctY29udGFpbmVyPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtaW51c0ljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjUgMGM2LjM0NyAwIDExLjUgNS4xNTMgMTEuNSAxMS41cy01LjE1MyAxMS41LTExLjUgMTEuNS0xMS41LTUuMTUzLTExLjUtMTEuNSA1LjE1My0xMS41IDExLjUtMTEuNXptMCAxYzUuNzk1IDAgMTAuNSA0LjcwNSAxMC41IDEwLjVzLTQuNzA1IDEwLjUtMTAuNSAxMC41LTEwLjUtNC43MDUtMTAuNS0xMC41IDQuNzA1LTEwLjUgMTAuNS0xMC41em0tNi41IDEwaDEzdjFoLTEzdi0xelwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGx1c0ljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjUgMGM2LjM0NyAwIDExLjUgNS4xNTMgMTEuNSAxMS41cy01LjE1MyAxMS41LTExLjUgMTEuNS0xMS41LTUuMTUzLTExLjUtMTEuNSA1LjE1My0xMS41IDExLjUtMTEuNXptMCAxYzUuNzk1IDAgMTAuNSA0LjcwNSAxMC41IDEwLjVzLTQuNzA1IDEwLjUtMTAuNSAxMC41LTEwLjUtNC43MDUtMTAuNS0xMC41IDQuNzA1LTEwLjUgMTAuNS0xMC41em0uNSAxMGg2djFoLTZ2NmgtMXYtNmgtNnYtMWg2di02aDF2NnpcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9hYnAtdHJlZT5cclxuXHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiICNzdWJtaXRjbGljaz48L2J1dHRvbj5cclxuPC9mb3JtPiJdfQ==
@@ -44,20 +44,13 @@ export class TreeSearchComponent {
44
44
  const ValidatorsArray = [];
45
45
  this.formConfiguration = this._fields.field.formConfiguration;
46
46
  const isMultiple = this.formConfiguration['TreeView.Multiple'];
47
- const selectValue = isMultiple ? [] : [];
47
+ const selectValue = isMultiple ? [] : null;
48
48
  const treeOptions = this.formConfiguration['TreeView.Nodes'];
49
49
  if (treeOptions?.length) {
50
- for (const element of treeOptions) {
51
- for (const key in element) {
52
- const item = element[key];
53
- const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);
54
- element[capitalizedKey] = item;
55
- }
56
- }
57
50
  this.nodes = this.convertTreeOptionsToNodes(treeOptions);
58
51
  }
59
- this._selected = selectValue;
60
- const newControl = this.fb.control(this._selected, ValidatorsArray);
52
+ const initialValue = this._selected !== undefined ? this._selected : selectValue;
53
+ const newControl = this.fb.control(initialValue, ValidatorsArray);
61
54
  this.extraProperties.setControl(this._fields.field.name, newControl);
62
55
  resolve(true);
63
56
  });
@@ -77,9 +70,9 @@ export class TreeSearchComponent {
77
70
  }
78
71
  }
79
72
  ngOnDestroy() {
80
- //Called once, before the instance is destroyed.
81
- //Add 'implements OnDestroy' to the class.
82
- this.extraProperties.removeControl(this._fields.field.name);
73
+ if (this.extraProperties && this._fields?.field?.name) {
74
+ this.extraProperties.removeControl(this._fields.field.name);
75
+ }
83
76
  }
84
77
  onChange($event) {
85
78
  console.log($event);
@@ -102,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
102
95
  type: ViewChild,
103
96
  args: ['submitclick', { static: true }]
104
97
  }] } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHluYW1pYy1mb3JtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3RyZWUvdHJlZS1zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHluYW1pYy1mb3JtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3RyZWUvdHJlZS1zZWFyY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBT3hELE1BQU0sT0FBTyxtQkFBbUI7SUFDL0IsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFFbEMsWUFBWTtRQUNaLFlBQU8sR0FBUSxFQUFFLENBQUM7UUErQlYsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBVXhDLHNCQUFpQixHQUFRLEVBQUUsQ0FBQztRQWdENUIsVUFBSyxHQUFVLEVBQUUsQ0FBQztJQTVGbUIsQ0FBQztJQUl0QyxJQUNXLE1BQU0sQ0FBQyxDQUFNO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFJRCxJQUNXLGVBQWUsQ0FBQyxDQUFNO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUdELElBQ1csUUFBUSxDQUFDLENBQU07UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUlELElBQ1csTUFB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Q0QsV0FBVyxDQUFDLEtBQUs7UUFDZixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUUsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBQ0QsV0FBVztRQUNULGdEQUFnRDtRQUNoRCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUtELFFBQVEsQ0FBQyxNQUFnQjtRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RCLENBQUM7OEdBakdVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDBSQ1RoQyxtNEVBZ0NPOzsyRkR2Qk0sbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGdCQUFnQjtnRkFVZixNQUFNO3NCQURoQixLQUFLO2dCQVFLLGVBQWU7c0JBRHpCLEtBQUs7Z0JBT0ssUUFBUTtzQkFEbEIsS0FBSztnQkFRSyxNQUFNO3NCQURoQixLQUFLO2dCQUtzQyxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZi10cmVlLXNlYXJjaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdHJlZS1zZWFyY2guY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlU2VhcmNoQ29tcG9uZW50IHtcclxuIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7fVxyXG5cclxuICAvKirlrZfmrrXphY3nva7liJfooaggKi9cclxuICBfZmllbGRzOiBhbnkgPSAnJztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZmllbGRzKHY6IGFueSkge1xyXG4gICAgdGhpcy5fZmllbGRzID0gdjtcclxuICB9XHJcblxyXG4gIC8qKueItue6p+Wtl+auteWQjeensO+8jOeUqOS6juS4uuihqOWNleiuvue9ruaOp+S7tui1i+WAvCAqL1xyXG4gIF9wYXJlbnRGaWxlZE5hbWU6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcGFyZW50RmlsZWROYW1lKHY6IGFueSkge1xyXG4gICAgdGhpcy5fcGFyZW50RmlsZWROYW1lID0gdjtcclxuICB9XHJcbiAgLyoq54i257qn5a2X5q615ZCN56ew77yM55So5LqO5Li66KGo5Y2V6K6+572u5o6n5Lu26LWL5YC8ICovXHJcbiAgX3NlbGVjdGVkOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHY6IGFueSkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWQgPSB2O1xyXG4gIH1cclxuXHJcbiAgLyoq6KGo5Y2V5a6e5L2TICovXHJcbiAgX2VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBlbnRpdHkodjogYW55KSB7XHJcbiAgICB0aGlzLl9lbnRpdHkgPSB2O1xyXG4gICAgdGhpcy5kYXRhTG9hZGVkKCk7XHJcbiAgfVxyXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGdldCBleHRyYVByb3BlcnRpZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW50aXR5Py5nZXQoJ2V4dHJhUHJvcGVydGllcycpIGFzIEZvcm1Hcm91cDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIC8qKuaVsOaNruWKoOi9veWujOaIkCAqL1xyXG4gIGFzeW5jIGRhdGFMb2FkZWQoKSB7XHJcbiAgICBpZiAodGhpcy5fZmllbGRzICYmIHRoaXMuX2VudGl0eSkge1xyXG4gICAgICBhd2FpdCB0aGlzLkFmdGVySW5pdCgpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IC8vIOaJi+WKqOinpuWPkeWPmOabtOajgOa1i1xyXG4gICAgICB0aGlzLnN1Ym1pdGNsaWNrPy5uYXRpdmVFbGVtZW50Py5jbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybUNvbmZpZ3VyYXRpb246IGFueSA9ICcnO1xyXG4gIEFmdGVySW5pdCgpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xyXG4gICAgICBjb25zdCBWYWxpZGF0b3JzQXJyYXk6IGFueVtdID0gW107XHJcbiAgICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24gPSB0aGlzLl9maWVsZHMuZmllbGQuZm9ybUNvbmZpZ3VyYXRpb247XHJcbiAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSB0aGlzLmZvcm1Db25maWd1cmF0aW9uWydUcmVlVmlldy5NdWx0aXBsZSddO1xyXG4gICAgICBjb25zdCBzZWxlY3RWYWx1ZTogYW55ID0gaXNNdWx0aXBsZSA/IFtdIDogW107XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCB0cmVlT3B0aW9ucyA9IHRoaXMuZm9ybUNvbmZpZ3VyYXRpb25bJ1RyZWVWaWV3Lk5vZGVzJ107XHJcbiAgICAgIGlmICh0cmVlT3B0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRyZWVPcHRpb25zKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBlbGVtZW50W2tleV07XHJcbiAgICAgICAgICAgIGNvbnN0IGNhcGl0YWxpemVkS2V5ID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xyXG4gICAgICAgICAgICBlbGVtZW50W2NhcGl0YWxpemVkS2V5XSA9IGl0ZW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZXMgPSB0aGlzLmNvbnZlcnRUcmVlT3B0aW9uc1RvTm9kZXModHJlZU9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xyXG4gICAgICBjb25zdCBuZXdDb250cm9sID0gdGhpcy5mYi5jb250cm9sKHRoaXMuX3NlbGVjdGVkLCBWYWxpZGF0b3JzQXJyYXkpO1xyXG4gICAgICB0aGlzLmV4dHJhUHJvcGVydGllcy5zZXRDb250cm9sKHRoaXMuX2ZpZWxkcy5maWVsZC5uYW1lLCBuZXdDb250cm9sKTtcclxuICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICBwcml2YXRlIGNvbnZlcnRUcmVlT3B0aW9uc1RvTm9kZXModHJlZU9wdGlvbnM6IGFueVtdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRyZWVPcHRpb25zLm1hcChvcHRpb24gPT4gKHtcclxuICAgICAgdGl0bGU6IG9wdGlvbi5UZXh0LFxyXG4gICAgICBrZXk6IG9wdGlvbi5WYWx1ZSxcclxuICAgICAgaXNMZWFmOiAhb3B0aW9uLkNoaWxkcmVuPy5sZW5ndGgsXHJcbiAgICAgIGNoaWxkcmVuOiBvcHRpb24uQ2hpbGRyZW4/Lmxlbmd0aCA/IHRoaXMuY29udmVydFRyZWVPcHRpb25zVG9Ob2RlcyhvcHRpb24uQ2hpbGRyZW4pIDogW11cclxuICAgIH0pKTtcclxuICB9XHJcbiAgY2hhbmdlVmFsdWUoZXZlbnQpIHtcclxuICAgIGNvbnN0IHNlbGVjdHZhbHVlID0gdGhpcy5leHRyYVByb3BlcnRpZXMuZ2V0KHRoaXMuX2ZpZWxkcy5maWVsZC5uYW1lKS52YWx1ZTtcclxuICAgIGlmIChzZWxlY3R2YWx1ZVswXSA9PT0gJycpIHtcclxuICAgICAgdGhpcy5leHRyYVByb3BlcnRpZXMuZ2V0KHRoaXMuX2ZpZWxkcy5maWVsZC5uYW1lKS5zZXRWYWx1ZShbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy9DYWxsZWQgb25jZSwgYmVmb3JlIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXHJcbiAgICAvL0FkZCAnaW1wbGVtZW50cyBPbkRlc3Ryb3knIHRvIHRoZSBjbGFzcy5cclxuICAgIHRoaXMuZXh0cmFQcm9wZXJ0aWVzLnJlbW92ZUNvbnRyb2wodGhpcy5fZmllbGRzLmZpZWxkLm5hbWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIG5vZGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBvbkNoYW5nZSgkZXZlbnQ6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygkZXZlbnQpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cIl9lbnRpdHlcIj5cclxuICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImV4dHJhUHJvcGVydGllc1wiIGNsYXNzPVwic2VsZWN0Y29udHJvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiAqbmdJZj1cIl9maWVsZHMuZGlzcGxheU5hbWVcIj57eyBfZmllbGRzLmRpc3BsYXlOYW1lIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUNvbmZpZ3VyYXRpb25bJ1NlbGVjdC5NdWx0aXBsZSddOyBlbHNlIGVsc2VUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG56LXNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGRpZ25pdGUtZm9ybS1zZWxlY3RcIiBbbnpNYXhUYWdDb3VudF09XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICBuelNob3dTZWFyY2ggbnpNb2RlPVwibXVsdGlwbGVcIiBbbnpQbGFjZUhvbGRlcl09XCJfZmllbGRzLmZpZWxkLmZvcm1Db25maWd1cmF0aW9uWydTZWxlY3QuTnVsbFRleHQnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tfZmllbGRzLmZpZWxkLm5hbWV9fVwiIFtuekRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aF09XCJ0cnVlXCIgW256RHJvcGRvd25DbGFzc05hbWVdPVwiJ2RpZ25pdGUtZm9ybS1zZWxlY3QtZHJvcGRvd24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG56LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfZmllbGRzPy5maWVsZD8uZm9ybUNvbmZpZ3VyYXRpb25bJ1NlbGVjdC5PcHRpb25zJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbnpMYWJlbF09XCJpdGVtLlRleHRcIiBbbnpWYWx1ZV09XCJpdGVtLlZhbHVlXCI+PC9uei1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L256LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgW211bHRpcGxlXT1cImZhbHNlXCIgIFtwbGFjZWhvbGRlcl09XCJmb3JtQ29uZmlndXJhdGlvblsnU2VsZWN0Lk51bGxUZXh0J11cIiAgIGZvcm1Db250cm9sTmFtZT1cInt7X2ZpZWxkcy5maWVsZC5uYW1lfX1cIiAoY2hhbmdlKT1cImNoYW5nZVZhbHVlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCInJ1wiPnt7Zm9ybUNvbmZpZ3VyYXRpb25bJ1NlbGVjdC5OdWxsVGV4dCddfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9maWVsZHM/LmZpZWxkPy5mb3JtQ29uZmlndXJhdGlvblsnU2VsZWN0Lk9wdGlvbnMnXTtsZXQgaSA9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5WYWx1ZVwiPnt7aXRlbS5UZXh0fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8c21hbGwgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1tdXRlZCBkLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX2ZpZWxkcy5maWVsZC5kZXNjcmlwdGlvblwiPnt7X2ZpZWxkcy5maWVsZC5kZXNjcmlwdGlvbn19PC9zbWFsbD4gLS0+XHJcblxyXG4gICAgICAgICAgICA8bnotdHJlZS1zZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBkaWduaXRlLWZvcm0tc2VsZWN0XCIgW256TWF4VGFnQ291bnRdPVwiMVwiXHJcbiAgICAgICAgICAgICAgICBuelNob3dTZWFyY2ggW256TXVsdGlwbGVdPVwiX2ZpZWxkcz8uZmllbGQ/LmZvcm1Db25maWd1cmF0aW9uPy5bJ1RyZWVWaWV3Lk11bHRpcGxlJ10gfHwgZmFsc2VcIiBcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7X2ZpZWxkcy5maWVsZC5uYW1lfX1cIiBbbnpEcm9wZG93bk1hdGNoU2VsZWN0V2lkdGhdPVwidHJ1ZVwiIFxyXG4gICAgICAgICAgICAgICAgW256RHJvcGRvd25DbGFzc05hbWVdPVwiJ2RpZ25pdGUtZm9ybS1zZWxlY3QtZHJvcGRvd24nXCIgW256Tm9kZXNdPVwibm9kZXNcIiBcclxuICAgICAgICAgICAgICAgIG56RGVmYXVsdEV4cGFuZEFsbCAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+PC9uei10cmVlLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjc3VibWl0Y2xpY2s+PC9idXR0b24+XHJcbjwvZm9ybT4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHluYW1pYy1mb3JtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3RyZWUvdHJlZS1zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHluYW1pYy1mb3JtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3RyZWUvdHJlZS1zZWFyY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBT3hELE1BQU0sT0FBTyxtQkFBbUI7SUFDL0IsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFFbEMsWUFBWTtRQUNaLFlBQU8sR0FBUSxFQUFFLENBQUM7UUErQlYsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBVXhDLHNCQUFpQixHQUFRLEVBQUUsQ0FBQztRQXlDNUIsVUFBSyxHQUFVLEVBQUUsQ0FBQztJQXJGbUIsQ0FBQztJQUl0QyxJQUNXLE1BQU0sQ0FBQyxDQUFNO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFJRCxJQUNXLGVBQWUsQ0FBQyxDQUFNO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUdELElBQ1csUUFBUSxDQUFDLENBQU07UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUlELElBQ1csTUFB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QUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBS0QsUUFBUSxDQUFDLE1BQWdCO1FBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEIsQ0FBQzs4R0ExRlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsMFJDVGhDLG00RUFnQ087OzJGRHZCTSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCO2dGQVVmLE1BQU07c0JBRGhCLEtBQUs7Z0JBUUssZUFBZTtzQkFEekIsS0FBSztnQkFPSyxRQUFRO3NCQURsQixLQUFLO2dCQVFLLE1BQU07c0JBRGhCLEtBQUs7Z0JBS3NDLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGYtdHJlZS1zZWFyY2gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RyZWUtc2VhcmNoLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZVNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge31cclxuXHJcbiAgLyoq5a2X5q616YWN572u5YiX6KGoICovXHJcbiAgX2ZpZWxkczogYW55ID0gJyc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGZpZWxkcyh2OiBhbnkpIHtcclxuICAgIHRoaXMuX2ZpZWxkcyA9IHY7XHJcbiAgfVxyXG5cclxuICAvKirniLbnuqflrZfmrrXlkI3np7DvvIznlKjkuo7kuLrooajljZXorr7nva7mjqfku7botYvlgLwgKi9cclxuICBfcGFyZW50RmlsZWROYW1lOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHBhcmVudEZpbGVkTmFtZSh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3BhcmVudEZpbGVkTmFtZSA9IHY7XHJcbiAgfVxyXG4gIC8qKueItue6p+Wtl+auteWQjeensO+8jOeUqOS6juS4uuihqOWNleiuvue9ruaOp+S7tui1i+WAvCAqL1xyXG4gIF9zZWxlY3RlZDogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZWxlY3RlZCh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkID0gdjtcclxuICB9XHJcblxyXG4gIC8qKuihqOWNleWunuS9kyAqL1xyXG4gIF9lbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZW50aXR5KHY6IGFueSkge1xyXG4gICAgdGhpcy5fZW50aXR5ID0gdjtcclxuICAgIHRoaXMuZGF0YUxvYWRlZCgpO1xyXG4gIH1cclxuICBAVmlld0NoaWxkKCdzdWJtaXRjbGljaycsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ym1pdGNsaWNrOiBFbGVtZW50UmVmO1xyXG5cclxuICBnZXQgZXh0cmFQcm9wZXJ0aWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VudGl0eT8uZ2V0KCdleHRyYVByb3BlcnRpZXMnKSBhcyBGb3JtR3JvdXA7XHJcbiAgfVxyXG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICAvKirmlbDmja7liqDovb3lrozmiJAgKi9cclxuICBhc3luYyBkYXRhTG9hZGVkKCkge1xyXG4gICAgaWYgKHRoaXMuX2ZpZWxkcyAmJiB0aGlzLl9lbnRpdHkpIHtcclxuICAgICAgYXdhaXQgdGhpcy5BZnRlckluaXQoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyDmiYvliqjop6blj5Hlj5jmm7Tmo4DmtYtcclxuICAgICAgdGhpcy5zdWJtaXRjbGljaz8ubmF0aXZlRWxlbWVudD8uY2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1Db25maWd1cmF0aW9uOiBhbnkgPSAnJztcclxuICBBZnRlckluaXQoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcclxuICAgICAgY29uc3QgVmFsaWRhdG9yc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgICB0aGlzLmZvcm1Db25maWd1cmF0aW9uID0gdGhpcy5fZmllbGRzLmZpZWxkLmZvcm1Db25maWd1cmF0aW9uO1xyXG4gICAgICBjb25zdCBpc011bHRpcGxlID0gdGhpcy5mb3JtQ29uZmlndXJhdGlvblsnVHJlZVZpZXcuTXVsdGlwbGUnXTtcclxuICAgICAgY29uc3Qgc2VsZWN0VmFsdWU6IGFueSA9IGlzTXVsdGlwbGUgPyBbXSA6IG51bGw7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCB0cmVlT3B0aW9ucyA9IHRoaXMuZm9ybUNvbmZpZ3VyYXRpb25bJ1RyZWVWaWV3Lk5vZGVzJ107XHJcbiAgICAgIGlmICh0cmVlT3B0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlcyA9IHRoaXMuY29udmVydFRyZWVPcHRpb25zVG9Ob2Rlcyh0cmVlT3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMuX3NlbGVjdGVkICE9PSB1bmRlZmluZWQgPyB0aGlzLl9zZWxlY3RlZCA6IHNlbGVjdFZhbHVlO1xyXG4gICAgICBjb25zdCBuZXdDb250cm9sID0gdGhpcy5mYi5jb250cm9sKGluaXRpYWxWYWx1ZSwgVmFsaWRhdG9yc0FycmF5KTtcclxuICAgICAgdGhpcy5leHRyYVByb3BlcnRpZXMuc2V0Q29udHJvbCh0aGlzLl9maWVsZHMuZmllbGQubmFtZSwgbmV3Q29udHJvbCk7XHJcbiAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VHJlZU9wdGlvbnNUb05vZGVzKHRyZWVPcHRpb25zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiB0cmVlT3B0aW9ucy5tYXAob3B0aW9uID0+ICh7XHJcbiAgICAgIHRpdGxlOiBvcHRpb24uVGV4dCxcclxuICAgICAga2V5OiBvcHRpb24uVmFsdWUsXHJcbiAgICAgIGlzTGVhZjogIW9wdGlvbi5DaGlsZHJlbj8ubGVuZ3RoLFxyXG4gICAgICBjaGlsZHJlbjogb3B0aW9uLkNoaWxkcmVuPy5sZW5ndGggPyB0aGlzLmNvbnZlcnRUcmVlT3B0aW9uc1RvTm9kZXMob3B0aW9uLkNoaWxkcmVuKSA6IFtdXHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIGNoYW5nZVZhbHVlKGV2ZW50KSB7XHJcbiAgICBjb25zdCBzZWxlY3R2YWx1ZSA9IHRoaXMuZXh0cmFQcm9wZXJ0aWVzLmdldCh0aGlzLl9maWVsZHMuZmllbGQubmFtZSkudmFsdWU7XHJcbiAgICBpZiAoc2VsZWN0dmFsdWVbMF0gPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuZXh0cmFQcm9wZXJ0aWVzLmdldCh0aGlzLl9maWVsZHMuZmllbGQubmFtZSkuc2V0VmFsdWUoW10pO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmV4dHJhUHJvcGVydGllcyAmJiB0aGlzLl9maWVsZHM/LmZpZWxkPy5uYW1lKSB7XHJcbiAgICAgIHRoaXMuZXh0cmFQcm9wZXJ0aWVzLnJlbW92ZUNvbnRyb2wodGhpcy5fZmllbGRzLmZpZWxkLm5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG5vZGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBvbkNoYW5nZSgkZXZlbnQ6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygkZXZlbnQpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cIl9lbnRpdHlcIj5cclxuICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImV4dHJhUHJvcGVydGllc1wiIGNsYXNzPVwic2VsZWN0Y29udHJvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiAqbmdJZj1cIl9maWVsZHMuZGlzcGxheU5hbWVcIj57eyBfZmllbGRzLmRpc3BsYXlOYW1lIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUNvbmZpZ3VyYXRpb25bJ1NlbGVjdC5NdWx0aXBsZSddOyBlbHNlIGVsc2VUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG56LXNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGRpZ25pdGUtZm9ybS1zZWxlY3RcIiBbbnpNYXhUYWdDb3VudF09XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICBuelNob3dTZWFyY2ggbnpNb2RlPVwibXVsdGlwbGVcIiBbbnpQbGFjZUhvbGRlcl09XCJfZmllbGRzLmZpZWxkLmZvcm1Db25maWd1cmF0aW9uWydTZWxlY3QuTnVsbFRleHQnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tfZmllbGRzLmZpZWxkLm5hbWV9fVwiIFtuekRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aF09XCJ0cnVlXCIgW256RHJvcGRvd25DbGFzc05hbWVdPVwiJ2RpZ25pdGUtZm9ybS1zZWxlY3QtZHJvcGRvd24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG56LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfZmllbGRzPy5maWVsZD8uZm9ybUNvbmZpZ3VyYXRpb25bJ1NlbGVjdC5PcHRpb25zJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbnpMYWJlbF09XCJpdGVtLlRleHRcIiBbbnpWYWx1ZV09XCJpdGVtLlZhbHVlXCI+PC9uei1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L256LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgW211bHRpcGxlXT1cImZhbHNlXCIgIFtwbGFjZWhvbGRlcl09XCJmb3JtQ29uZmlndXJhdGlvblsnU2VsZWN0Lk51bGxUZXh0J11cIiAgIGZvcm1Db250cm9sTmFtZT1cInt7X2ZpZWxkcy5maWVsZC5uYW1lfX1cIiAoY2hhbmdlKT1cImNoYW5nZVZhbHVlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCInJ1wiPnt7Zm9ybUNvbmZpZ3VyYXRpb25bJ1NlbGVjdC5OdWxsVGV4dCddfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9maWVsZHM/LmZpZWxkPy5mb3JtQ29uZmlndXJhdGlvblsnU2VsZWN0Lk9wdGlvbnMnXTtsZXQgaSA9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5WYWx1ZVwiPnt7aXRlbS5UZXh0fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8c21hbGwgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1tdXRlZCBkLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX2ZpZWxkcy5maWVsZC5kZXNjcmlwdGlvblwiPnt7X2ZpZWxkcy5maWVsZC5kZXNjcmlwdGlvbn19PC9zbWFsbD4gLS0+XHJcblxyXG4gICAgICAgICAgICA8bnotdHJlZS1zZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBkaWduaXRlLWZvcm0tc2VsZWN0XCIgW256TWF4VGFnQ291bnRdPVwiMVwiXHJcbiAgICAgICAgICAgICAgICBuelNob3dTZWFyY2ggW256TXVsdGlwbGVdPVwiX2ZpZWxkcz8uZmllbGQ/LmZvcm1Db25maWd1cmF0aW9uPy5bJ1RyZWVWaWV3Lk11bHRpcGxlJ10gfHwgZmFsc2VcIiBcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7X2ZpZWxkcy5maWVsZC5uYW1lfX1cIiBbbnpEcm9wZG93bk1hdGNoU2VsZWN0V2lkdGhdPVwidHJ1ZVwiIFxyXG4gICAgICAgICAgICAgICAgW256RHJvcGRvd25DbGFzc05hbWVdPVwiJ2RpZ25pdGUtZm9ybS1zZWxlY3QtZHJvcGRvd24nXCIgW256Tm9kZXNdPVwibm9kZXNcIiBcclxuICAgICAgICAgICAgICAgIG56RGVmYXVsdEV4cGFuZEFsbCAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+PC9uei10cmVlLXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjc3VibWl0Y2xpY2s+PC9idXR0b24+XHJcbjwvZm9ybT4iXX0=
@@ -15,10 +15,8 @@ export class TreeViewComponent {
15
15
  this._value = v;
16
16
  }
17
17
  async ngAfterContentInit() {
18
- //Called after ngOnInit when the component's or directive's content has been initialized.
19
- //Add 'implements AfterContentInit' to the class.
20
18
  const valueOptions = this._value;
21
- if (this.type && valueOptions) {
19
+ if (this.type && valueOptions !== null && valueOptions !== undefined) {
22
20
  const nodes = this.fields?.field?.formConfiguration?.['TreeView.Nodes'] || [];
23
21
  const findNodeByValue = (nodeList, val) => {
24
22
  for (const node of nodeList) {
@@ -59,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
59
57
  }], value: [{
60
58
  type: Input
61
59
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS90cmVlL3RyZWUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vdHJlZS90cmVlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPakQsTUFBTSxPQUFPLGlCQUFpQjtJQUw5QjtRQU1DLFdBQVc7UUFDVixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBRXBCLGFBQWE7UUFDSixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBTzVCLGVBQWU7UUFDZixXQUFNLEdBQVEsRUFBRSxDQUFDO0tBb0NsQjtJQW5DQyxJQUNXLEtBQUssQ0FBQyxDQUFNO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLHlGQUF5RjtRQUN6RixpREFBaUQ7UUFDakQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUVqQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksWUFBWSxFQUFFLENBQUM7WUFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5RSxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWUsRUFBRSxHQUFRLEVBQU8sRUFBRTtnQkFDekQsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUc7d0JBQUUsT0FBTyxJQUFJLENBQUM7b0JBQzFELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ25DLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ25FLElBQUksS0FBSzs0QkFBRSxPQUFPLEtBQUssQ0FBQztvQkFDMUIsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDO1lBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbEMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDekMsT0FBTyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDO1lBQ3pDLENBQUMsQ0FBQztZQUVGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlELENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBaERVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDBJQ1I5QiwyT0FTQzs7MkZERFksaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWM7OEJBU2YsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUtLLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZi10cmVlLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90cmVlLXZpZXcuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlVmlld0NvbXBvbmVudCB7XHJcbiAvKirlsZXnpLrliJnlhoXlrrkgKi9cclxuICBzaG93VmFsdWU6IGFueSA9ICcnO1xyXG5cclxuICAvKirmmK/lkKbmmL7npLrlho3liJfooaggKi9cclxuICBASW5wdXQoKSBzaG93SW5MaXN0ID0gZmFsc2U7XHJcbiAgLyoq6KGo5Y2V5a2X5q615pWw5o2uICovXHJcbiAgQElucHV0KCkgZmllbGRzOiBhbnk7XHJcblxyXG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xyXG4gIEBJbnB1dCgpIHR5cGU6IGFueTtcclxuXHJcbiAgLyoq6KGo5Y2V5o6n5Lu2VmFsdWUgKi9cclxuICBfdmFsdWU6IGFueSA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCB2YWx1ZSh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3ZhbHVlID0gdjtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vQ2FsbGVkIGFmdGVyIG5nT25Jbml0IHdoZW4gdGhlIGNvbXBvbmVudCdzIG9yIGRpcmVjdGl2ZSdzIGNvbnRlbnQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXHJcbiAgICAvL0FkZCAnaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0JyB0byB0aGUgY2xhc3MuXHJcbiAgICBjb25zdCB2YWx1ZU9wdGlvbnMgPSB0aGlzLl92YWx1ZTtcclxuICAgXHJcbiAgICBpZiAodGhpcy50eXBlICYmIHZhbHVlT3B0aW9ucykge1xyXG4gICAgICBjb25zdCBub2RlcyA9IHRoaXMuZmllbGRzPy5maWVsZD8uZm9ybUNvbmZpZ3VyYXRpb24/LlsnVHJlZVZpZXcuTm9kZXMnXSB8fCBbXTtcclxuICAgICAgY29uc3QgZmluZE5vZGVCeVZhbHVlID0gKG5vZGVMaXN0OiBhbnlbXSwgdmFsOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2RlTGlzdCkge1xyXG4gICAgICAgICAgaWYgKG5vZGUudmFsdWUgPT09IHZhbCB8fCBub2RlLlZhbHVlID09PSB2YWwpIHJldHVybiBub2RlO1xyXG4gICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4gfHwgbm9kZS5DaGlsZHJlbikge1xyXG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IGZpbmROb2RlQnlWYWx1ZShub2RlLmNoaWxkcmVuIHx8IG5vZGUuQ2hpbGRyZW4sIHZhbCk7XHJcbiAgICAgICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIGNvbnN0IGdldFRleHRCeVZhbHVlID0gKHZhbDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IGZpbmROb2RlQnlWYWx1ZShub2RlcywgdmFsKTtcclxuICAgICAgICByZXR1cm4gbm9kZT8udGV4dCB8fCBub2RlPy5UZXh0IHx8IHZhbDtcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlT3B0aW9ucykpIHtcclxuICAgICAgICB0aGlzLnNob3dWYWx1ZSA9IHZhbHVlT3B0aW9ucy5tYXAoZ2V0VGV4dEJ5VmFsdWUpLmpvaW4oJywnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dWYWx1ZSA9IGdldFRleHRCeVZhbHVlKHZhbHVlT3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGlmKHNob3dJbkxpc3Qpe1xyXG57e3Nob3dWYWx1ZX19XHJcbn0gQGVsc2V7XHJcbjxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgKm5nSWY9XCJmaWVsZHMuZGlzcGxheU5hbWVcIj57eyBmaWVsZHMuZGlzcGxheU5hbWUgfX08L2xhYmVsPlxyXG4gICAgPGRpdj5cclxuICAgICAgICB7e3Nob3dWYWx1ZX19XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbn0iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS90cmVlL3RyZWUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9keW5hbWljLWZvcm0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vdHJlZS90cmVlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7O0FBT25FLE1BQU0sT0FBTyxpQkFBaUI7SUFMOUI7UUFNQyxXQUFXO1FBQ1YsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUVwQixhQUFhO1FBQ0osZUFBVSxHQUFHLEtBQUssQ0FBQztRQU81QixlQUFlO1FBQ2YsV0FBTSxHQUFRLEVBQUUsQ0FBQztLQWtDbEI7SUFqQ0MsSUFDVyxLQUFLLENBQUMsQ0FBTTtRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQjtRQUN0QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRWpDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxZQUFZLEtBQUssSUFBSSxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlFLE1BQU0sZUFBZSxHQUFHLENBQUMsUUFBZSxFQUFFLEdBQVEsRUFBTyxFQUFFO2dCQUN6RCxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUM1QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssR0FBRzt3QkFBRSxPQUFPLElBQUksQ0FBQztvQkFDMUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDbkMsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDbkUsSUFBSSxLQUFLOzRCQUFFLE9BQU8sS0FBSyxDQUFDO29CQUMxQixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUM7WUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsQyxNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxPQUFPLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxHQUFHLENBQUM7WUFDekMsQ0FBQyxDQUFDO1lBRUYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0E5Q1UsaUJBQWlCO2tHQUFqQixpQkFBaUIsMElDUjlCLDJPQVNDOzsyRkREWSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzs4QkFTZixVQUFVO3NCQUFsQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0ssS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBBZnRlckNvbnRlbnRJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RmLXRyZWUtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RyZWUtdmlldy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyZWVWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XHJcbiAvKirlsZXnpLrliJnlhoXlrrkgKi9cclxuICBzaG93VmFsdWU6IGFueSA9ICcnO1xyXG5cclxuICAvKirmmK/lkKbmmL7npLrlho3liJfooaggKi9cclxuICBASW5wdXQoKSBzaG93SW5MaXN0ID0gZmFsc2U7XHJcbiAgLyoq6KGo5Y2V5a2X5q615pWw5o2uICovXHJcbiAgQElucHV0KCkgZmllbGRzOiBhbnk7XHJcblxyXG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xyXG4gIEBJbnB1dCgpIHR5cGU6IGFueTtcclxuXHJcbiAgLyoq6KGo5Y2V5o6n5Lu2VmFsdWUgKi9cclxuICBfdmFsdWU6IGFueSA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCB2YWx1ZSh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3ZhbHVlID0gdjtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHZhbHVlT3B0aW9ucyA9IHRoaXMuX3ZhbHVlO1xyXG4gICBcclxuICAgIGlmICh0aGlzLnR5cGUgJiYgdmFsdWVPcHRpb25zICE9PSBudWxsICYmIHZhbHVlT3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5maWVsZHM/LmZpZWxkPy5mb3JtQ29uZmlndXJhdGlvbj8uWydUcmVlVmlldy5Ob2RlcyddIHx8IFtdO1xyXG4gICAgICBjb25zdCBmaW5kTm9kZUJ5VmFsdWUgPSAobm9kZUxpc3Q6IGFueVtdLCB2YWw6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVMaXN0KSB7XHJcbiAgICAgICAgICBpZiAobm9kZS52YWx1ZSA9PT0gdmFsIHx8IG5vZGUuVmFsdWUgPT09IHZhbCkgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbiB8fCBub2RlLkNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gZmluZE5vZGVCeVZhbHVlKG5vZGUuY2hpbGRyZW4gfHwgbm9kZS5DaGlsZHJlbiwgdmFsKTtcclxuICAgICAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgY29uc3QgZ2V0VGV4dEJ5VmFsdWUgPSAodmFsOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBub2RlID0gZmluZE5vZGVCeVZhbHVlKG5vZGVzLCB2YWwpO1xyXG4gICAgICAgIHJldHVybiBub2RlPy50ZXh0IHx8IG5vZGU/LlRleHQgfHwgdmFsO1xyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVPcHRpb25zKSkge1xyXG4gICAgICAgIHRoaXMuc2hvd1ZhbHVlID0gdmFsdWVPcHRpb25zLm1hcChnZXRUZXh0QnlWYWx1ZSkuam9pbignLCcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1ZhbHVlID0gZ2V0VGV4dEJ5VmFsdWUodmFsdWVPcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaWYoc2hvd0luTGlzdCl7XHJcbnt7c2hvd1ZhbHVlfX1cclxufSBAZWxzZXtcclxuPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiAqbmdJZj1cImZpZWxkcy5kaXNwbGF5TmFtZVwiPnt7IGZpZWxkcy5kaXNwbGF5TmFtZSB9fTwvbGFiZWw+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIHt7c2hvd1ZhbHVlfX1cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxufSJdfQ==
@@ -1514,28 +1514,13 @@ class TreeConfigComponent {
1514
1514
  return this.formEntity?.get('formConfiguration');
1515
1515
  }
1516
1516
  get TreeOptions() {
1517
- return this.formConfiguration.controls['TreeView.Nodes'];
1517
+ return this.formConfiguration?.controls['TreeView.Nodes'];
1518
1518
  }
1519
1519
  async dataLoaded() {
1520
1520
  if (this.formEntity && this._type) {
1521
1521
  await this.AfterInit();
1522
1522
  }
1523
1523
  }
1524
- /**增加选项 */
1525
- // addTreeOptions() {
1526
- // this.TreeOptions.push(
1527
- // new FormGroup({
1528
- // Text: new FormControl('', Validators.required),
1529
- // Value: new FormControl('', Validators.required),
1530
- // Selected: new FormControl(false),
1531
- // Children: new FormArray([]),
1532
- // }),
1533
- // );
1534
- // }
1535
- // /**删除某个选项 */
1536
- // deleteTreeOptions(index) {
1537
- // this.TreeOptions.removeAt(index);
1538
- // }
1539
1524
  AfterInit() {
1540
1525
  return new Promise(resolve => {
1541
1526
  this.formEntity?.setControl('formConfiguration', this.fb.group(new TreeConfig()));
@@ -1582,10 +1567,12 @@ class TreeConfigComponent {
1582
1567
  // }
1583
1568
  /**字段标签input失去标点生成字段名字 */
1584
1569
  disPlayNameInputBlur(event) {
1570
+ if (!this.nodeForm)
1571
+ return;
1585
1572
  const value = event.target.value;
1586
1573
  const pinyin = this.toPinyinService.get(value);
1587
1574
  const nameInput = this.nodeForm.get('key');
1588
- if (nameInput.value)
1575
+ if (!nameInput || nameInput.value)
1589
1576
  return;
1590
1577
  nameInput.patchValue(pinyin);
1591
1578
  }
@@ -1600,9 +1587,6 @@ class TreeConfigComponent {
1600
1587
  }
1601
1588
  this.anExpandedNode = anExpandedNode;
1602
1589
  }
1603
- log(v) {
1604
- console.log(v, '111111111');
1605
- }
1606
1590
  /**生成GUID */
1607
1591
  generateGuid() {
1608
1592
  return crypto.randomUUID();
@@ -1653,6 +1637,7 @@ class TreeConfigComponent {
1653
1637
  createOrEditSave() {
1654
1638
  const { value } = this.nodeForm;
1655
1639
  const { selectTree, isCreateChild, nodes, anExpandedNode } = this;
1640
+ const isMultiple = this.formConfiguration.controls['TreeView.Multiple'];
1656
1641
  if (selectTree) {
1657
1642
  if (isCreateChild) {
1658
1643
  // 创建子节点
@@ -1671,6 +1656,11 @@ class TreeConfigComponent {
1671
1656
  // 创建根节点
1672
1657
  nodes.push(value);
1673
1658
  }
1659
+ // 单选模式下,如果当前节点被选中,清除其他节点的选中状态
1660
+ if (!isMultiple.value && value.isChecked) {
1661
+ this.clearAllChecked(nodes);
1662
+ this.setNodeCheckedOnly(nodes, value.key, true);
1663
+ }
1674
1664
  this.nodes = [...nodes];
1675
1665
  this.syncTreeOptionsFromNodes();
1676
1666
  this.cdr.detectChanges();
@@ -1696,7 +1686,6 @@ class TreeConfigComponent {
1696
1686
  for (const node of nodes) {
1697
1687
  if (node.key === targetKey) {
1698
1688
  node.title = updatedData.title;
1699
- node.key = updatedData.key;
1700
1689
  node.isChecked = updatedData.isChecked;
1701
1690
  return true;
1702
1691
  }
@@ -1774,10 +1763,38 @@ class TreeConfigComponent {
1774
1763
  }
1775
1764
  /**设置 */
1776
1765
  toggleMultiple(event) {
1766
+ this.clearAllChecked(this.nodes);
1767
+ return;
1777
1768
  const isMultiple = this.formConfiguration.controls['TreeView.Multiple'];
1778
1769
  if (!isMultiple.value) {
1779
1770
  this.clearAllChecked(this.nodes);
1780
1771
  }
1772
+ else {
1773
+ this.applyMultipleLogic(this.nodes);
1774
+ }
1775
+ this.nodes = [...this.nodes];
1776
+ this.syncTreeOptionsFromNodes();
1777
+ this.cdr.detectChanges();
1778
+ }
1779
+ /**应用多选逻辑:选中的节点同时选中其所有子节点和父节点 */
1780
+ applyMultipleLogic(nodes) {
1781
+ const checkedKeys = [];
1782
+ this.collectCheckedKeys(nodes, checkedKeys);
1783
+ checkedKeys.forEach(key => {
1784
+ this.setNodeChecked(nodes, key, true);
1785
+ this.setParentNodesChecked(nodes, key);
1786
+ });
1787
+ }
1788
+ /**收集所有选中节点的key */
1789
+ collectCheckedKeys(nodes, result) {
1790
+ for (const node of nodes) {
1791
+ if (node.isChecked) {
1792
+ result.push(node.key);
1793
+ }
1794
+ if (node.children?.length) {
1795
+ this.collectCheckedKeys(node.children, result);
1796
+ }
1797
+ }
1781
1798
  }
1782
1799
  /**切换节点选中状态 */
1783
1800
  toggleNodeChecked(event, node) {
@@ -1961,11 +1978,11 @@ class TreeConfigComponent {
1961
1978
  });
1962
1979
  }
1963
1980
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TreeConfigComponent, deps: [{ token: i1.FormBuilder }, { token: i2$1.ToPinyinService }], target: i0.ɵɵFactoryTarget.Component }); }
1964
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TreeConfigComponent, selector: "df-tree-config", inputs: { type: "type", selected: "selected", Entity: "Entity" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }, { propertyName: "nodeModalSubmit", first: true, predicate: ["nodeModalSubmit"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"formEntity\">\r\n <div formGroupName=\"formConfiguration\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'AbpDynamicForm::Nodes' | abpLocalization}}</label>\r\n <button class=\"btn btn-sm btn-dark soft ms-2 float-end\" type=\"button\"\r\n (click.stop)=\"addNodeBtn()\">{{'AbpDynamicForm::AddNode' |\r\n abpLocalization}}</button>\r\n <abp-tree [nodes]=\"nodes\" [checkable]=\"false\" (dropOver)=\"dropOver($event)\"\r\n (nzExpandChange)=\"nzExpandChange($event)\" [expandedKeys]=\"anExpandedNode\" [draggable]=\"true\">\r\n <ng-template #menu let-node>\r\n <button ngbDropdownItem (click.stop)=\"editItemBtn(node)\"><i\r\n class=\" me-1 fa fa-pencil\"></i>{{'AbpU::Edit' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"createChildItemBtn(node)\"><i\r\n class=\" me-1 fa fa-plus\"></i>{{'AbpDynamicForm::AddSubMenuItem' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"deleteMenuItemBtn(node)\"><i\r\n class=\" me-1 fa fa-remove\"></i>{{'AbpU::Delete' |\r\n abpLocalization}}</button>\r\n </ng-template>\r\n <ng-template abpTreeNodeTemplate let-node>\r\n <div (click)=\"toggleNodeChecked($event, node)\">\r\n <input type=\"checkbox\" [checked]=\"node.origin?.isChecked\"\r\n [attr.data-indeterminate]=\"hasChildrenChecked(node)\" class=\"form-check-input me-2\">\r\n {{node.title}}\r\n </div>\r\n </ng-template>\r\n <ng-template abpTreeExpandedIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\" *ngIf=\"node.children.length>0\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"></ng-container></i>\r\n </ng-template>\r\n\r\n <ng-template #minusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\" />\r\n </svg>\r\n </ng-template>\r\n\r\n <ng-template #plusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\" />\r\n </svg>\r\n </ng-template>\r\n </abp-tree>\r\n <div *ngIf=\"nodes.length === 0\" class=\"text-muted mt-2\">{{'AbpDynamicForm::PleaseAddNode' |\r\n abpLocalization}}</div>\r\n <div *ngIf=\"TreeOptions?.errors?.required\" class=\"invalid-feedback \">\r\n {{'AbpValidation::ThisFieldIsRequired.' | abpLocalization: 'Nodes'}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" (change)=\"toggleMultiple($event)\"\r\n formControlName=\"TreeView.Multiple\" id=\"Multiple\">\r\n <label class=\"form-check-label\" for=\"Multiple\">\r\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\r\n #submitclick></button>\r\n </div>\r\n</form>\r\n\r\n\r\n<!-- [options]=\"{ size: CurrentSelectionTableControlName==='Matrix'?'xl':'' ,scrollable:false }\" (visibleChange)=\"tableSelectVisibleChange($event)\"-->\r\n<abp-modal [(visible)]=\"isVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{isCreateChild ? ('AbpDynamicForm::AddSubMenuItem' | abpLocalization) : (selectTree ? ('AbpUi::Edit' |\r\n abpLocalization) : ('Cms::New' | abpLocalization))}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <ng-container *ngIf=\"nodeForm; else loaderRef\">\r\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"nodeForm\" (submit)=\"createOrEditSave()\">\r\n <button type=\"submit\" #nodeModalSubmit style=\"display: none\"></button>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::SelectListItemText' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" [placeholder]=\"\"\r\n (blur)=\"disPlayNameInputBlur($event)\" />\r\n </div>\r\n <!-- <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::SelectListItemValue' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"key\" [placeholder]=\"\" />\r\n </div> -->\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"isChecked\" id=\"isSelected\">\r\n <label class=\"form-check-label\" for=\"isSelected\">\r\n {{'AbpDynamicForm::Selected' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"!nodeForm.valid\"\r\n (abpClick)=\"nodeModalSubmit.nativeElement.click()\">{{'AbpUi::Save' |\r\n abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>", styles: ["input[type=checkbox]:indeterminate{opacity:.5}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i4.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i4.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i3.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i6$1.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i6$1.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6$1.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i7.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "directive", type: i8.TreeNodeTemplateDirective, selector: "[abpTreeNodeTemplate],[abp-tree-node-template]" }, { kind: "directive", type: i8.ExpandedIconTemplateDirective, selector: "[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]" }, { kind: "component", type: i8.TreeComponent, selector: "abp-tree", inputs: ["noAnimation", "draggable", "checkable", "checkStrictly", "checkedKeys", "nodes", "expandedKeys", "selectedNode", "changeCheckboxWithNode", "isNodeSelected", "beforeDrop"], outputs: ["checkedKeysChange", "expandedKeysChange", "selectedNodeChange", "dropOver", "nzExpandChange"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] }); }
1981
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TreeConfigComponent, selector: "df-tree-config", inputs: { type: "type", selected: "selected", Entity: "Entity" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }, { propertyName: "nodeModalSubmit", first: true, predicate: ["nodeModalSubmit"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"formEntity\">\r\n <div formGroupName=\"formConfiguration\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'AbpDynamicForm::Nodes' | abpLocalization}}</label>\r\n <button class=\"btn btn-sm btn-dark soft ms-2 float-end\" type=\"button\"\r\n (click.stop)=\"addNodeBtn()\">{{'AbpDynamicForm::AddNode' |\r\n abpLocalization}}</button>\r\n <abp-tree [nodes]=\"nodes\" [checkable]=\"false\" (dropOver)=\"dropOver($event)\"\r\n (nzExpandChange)=\"nzExpandChange($event)\" [expandedKeys]=\"anExpandedNode\" [draggable]=\"true\">\r\n <ng-template #menu let-node>\r\n <button ngbDropdownItem (click.stop)=\"editItemBtn(node)\"><i\r\n class=\" me-1 fa fa-pencil\"></i>{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"createChildItemBtn(node)\"><i\r\n class=\" me-1 fa fa-plus\"></i>{{'AbpDynamicForm::AddSubNode' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"deleteMenuItemBtn(node)\"><i\r\n class=\" me-1 fa fa-remove\"></i>{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </ng-template>\r\n <ng-template abpTreeNodeTemplate let-node>\r\n <div (click)=\"toggleNodeChecked($event, node)\">\r\n <input type=\"checkbox\" [checked]=\"node.origin?.isChecked\"\r\n [attr.data-indeterminate]=\"hasChildrenChecked(node)\" class=\"form-check-input me-2\">\r\n {{node.title}}\r\n </div>\r\n </ng-template>\r\n <ng-template abpTreeExpandedIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\" *ngIf=\"node.children.length>0\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"></ng-container></i>\r\n </ng-template>\r\n\r\n <ng-template #minusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\" />\r\n </svg>\r\n </ng-template>\r\n\r\n <ng-template #plusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\" />\r\n </svg>\r\n </ng-template>\r\n </abp-tree>\r\n <div *ngIf=\"nodes.length === 0\" class=\"text-muted mt-2\">{{'AbpDynamicForm::PleaseAddNode' |\r\n abpLocalization}}</div>\r\n <div *ngIf=\"TreeOptions?.errors?.required\" class=\"invalid-feedback \">\r\n {{'AbpValidation::ThisFieldIsRequired.' | abpLocalization: 'Nodes'}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" (change)=\"toggleMultiple($event)\"\r\n formControlName=\"TreeView.Multiple\" id=\"Multiple\">\r\n <label class=\"form-check-label\" for=\"Multiple\">\r\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\r\n #submitclick></button>\r\n </div>\r\n</form>\r\n\r\n\r\n<!-- [options]=\"{ size: CurrentSelectionTableControlName==='Matrix'?'xl':'' ,scrollable:false }\" (visibleChange)=\"tableSelectVisibleChange($event)\"-->\r\n<abp-modal [(visible)]=\"isVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{isCreateChild ? ('AbpDynamicForm::AddSubNode' | abpLocalization) : (selectTree ? ('AbpUi::Edit' |\r\n abpLocalization) : ('Cms::New' | abpLocalization))}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <ng-container *ngIf=\"nodeForm; else loaderRef\">\r\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"nodeForm\" (submit)=\"createOrEditSave()\">\r\n <button type=\"submit\" #nodeModalSubmit style=\"display: none\"></button>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::NodeItemText' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" [placeholder]=\"\"\r\n (blur)=\"disPlayNameInputBlur($event)\" />\r\n </div>\r\n <!-- <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::SelectListItemValue' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"key\" [placeholder]=\"\" />\r\n </div> -->\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"isChecked\" id=\"isSelected\">\r\n <label class=\"form-check-label\" for=\"isSelected\">\r\n {{'AbpDynamicForm::Selected' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"!nodeForm.valid\"\r\n (abpClick)=\"nodeModalSubmit.nativeElement.click()\">{{'AbpUi::Save' |\r\n abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>", styles: ["input[type=checkbox]:indeterminate{opacity:.5}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i4.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i4.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i3.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i3.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i6$1.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i6$1.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6$1.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i7.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "directive", type: i8.TreeNodeTemplateDirective, selector: "[abpTreeNodeTemplate],[abp-tree-node-template]" }, { kind: "directive", type: i8.ExpandedIconTemplateDirective, selector: "[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]" }, { kind: "component", type: i8.TreeComponent, selector: "abp-tree", inputs: ["noAnimation", "draggable", "checkable", "checkStrictly", "checkedKeys", "nodes", "expandedKeys", "selectedNode", "changeCheckboxWithNode", "isNodeSelected", "beforeDrop"], outputs: ["checkedKeysChange", "expandedKeysChange", "selectedNodeChange", "dropOver", "nzExpandChange"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] }); }
1965
1982
  }
1966
1983
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TreeConfigComponent, decorators: [{
1967
1984
  type: Component,
1968
- args: [{ selector: 'df-tree-config', template: "<form [formGroup]=\"formEntity\">\r\n <div formGroupName=\"formConfiguration\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'AbpDynamicForm::Nodes' | abpLocalization}}</label>\r\n <button class=\"btn btn-sm btn-dark soft ms-2 float-end\" type=\"button\"\r\n (click.stop)=\"addNodeBtn()\">{{'AbpDynamicForm::AddNode' |\r\n abpLocalization}}</button>\r\n <abp-tree [nodes]=\"nodes\" [checkable]=\"false\" (dropOver)=\"dropOver($event)\"\r\n (nzExpandChange)=\"nzExpandChange($event)\" [expandedKeys]=\"anExpandedNode\" [draggable]=\"true\">\r\n <ng-template #menu let-node>\r\n <button ngbDropdownItem (click.stop)=\"editItemBtn(node)\"><i\r\n class=\" me-1 fa fa-pencil\"></i>{{'AbpU::Edit' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"createChildItemBtn(node)\"><i\r\n class=\" me-1 fa fa-plus\"></i>{{'AbpDynamicForm::AddSubMenuItem' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"deleteMenuItemBtn(node)\"><i\r\n class=\" me-1 fa fa-remove\"></i>{{'AbpU::Delete' |\r\n abpLocalization}}</button>\r\n </ng-template>\r\n <ng-template abpTreeNodeTemplate let-node>\r\n <div (click)=\"toggleNodeChecked($event, node)\">\r\n <input type=\"checkbox\" [checked]=\"node.origin?.isChecked\"\r\n [attr.data-indeterminate]=\"hasChildrenChecked(node)\" class=\"form-check-input me-2\">\r\n {{node.title}}\r\n </div>\r\n </ng-template>\r\n <ng-template abpTreeExpandedIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\" *ngIf=\"node.children.length>0\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"></ng-container></i>\r\n </ng-template>\r\n\r\n <ng-template #minusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\" />\r\n </svg>\r\n </ng-template>\r\n\r\n <ng-template #plusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\" />\r\n </svg>\r\n </ng-template>\r\n </abp-tree>\r\n <div *ngIf=\"nodes.length === 0\" class=\"text-muted mt-2\">{{'AbpDynamicForm::PleaseAddNode' |\r\n abpLocalization}}</div>\r\n <div *ngIf=\"TreeOptions?.errors?.required\" class=\"invalid-feedback \">\r\n {{'AbpValidation::ThisFieldIsRequired.' | abpLocalization: 'Nodes'}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" (change)=\"toggleMultiple($event)\"\r\n formControlName=\"TreeView.Multiple\" id=\"Multiple\">\r\n <label class=\"form-check-label\" for=\"Multiple\">\r\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\r\n #submitclick></button>\r\n </div>\r\n</form>\r\n\r\n\r\n<!-- [options]=\"{ size: CurrentSelectionTableControlName==='Matrix'?'xl':'' ,scrollable:false }\" (visibleChange)=\"tableSelectVisibleChange($event)\"-->\r\n<abp-modal [(visible)]=\"isVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{isCreateChild ? ('AbpDynamicForm::AddSubMenuItem' | abpLocalization) : (selectTree ? ('AbpUi::Edit' |\r\n abpLocalization) : ('Cms::New' | abpLocalization))}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <ng-container *ngIf=\"nodeForm; else loaderRef\">\r\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"nodeForm\" (submit)=\"createOrEditSave()\">\r\n <button type=\"submit\" #nodeModalSubmit style=\"display: none\"></button>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::SelectListItemText' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" [placeholder]=\"\"\r\n (blur)=\"disPlayNameInputBlur($event)\" />\r\n </div>\r\n <!-- <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::SelectListItemValue' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"key\" [placeholder]=\"\" />\r\n </div> -->\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"isChecked\" id=\"isSelected\">\r\n <label class=\"form-check-label\" for=\"isSelected\">\r\n {{'AbpDynamicForm::Selected' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"!nodeForm.valid\"\r\n (abpClick)=\"nodeModalSubmit.nativeElement.click()\">{{'AbpUi::Save' |\r\n abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>", styles: ["input[type=checkbox]:indeterminate{opacity:.5}\n"] }]
1985
+ args: [{ selector: 'df-tree-config', template: "<form [formGroup]=\"formEntity\">\r\n <div formGroupName=\"formConfiguration\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'AbpDynamicForm::Nodes' | abpLocalization}}</label>\r\n <button class=\"btn btn-sm btn-dark soft ms-2 float-end\" type=\"button\"\r\n (click.stop)=\"addNodeBtn()\">{{'AbpDynamicForm::AddNode' |\r\n abpLocalization}}</button>\r\n <abp-tree [nodes]=\"nodes\" [checkable]=\"false\" (dropOver)=\"dropOver($event)\"\r\n (nzExpandChange)=\"nzExpandChange($event)\" [expandedKeys]=\"anExpandedNode\" [draggable]=\"true\">\r\n <ng-template #menu let-node>\r\n <button ngbDropdownItem (click.stop)=\"editItemBtn(node)\"><i\r\n class=\" me-1 fa fa-pencil\"></i>{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"createChildItemBtn(node)\"><i\r\n class=\" me-1 fa fa-plus\"></i>{{'AbpDynamicForm::AddSubNode' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click.stop)=\"deleteMenuItemBtn(node)\"><i\r\n class=\" me-1 fa fa-remove\"></i>{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </ng-template>\r\n <ng-template abpTreeNodeTemplate let-node>\r\n <div (click)=\"toggleNodeChecked($event, node)\">\r\n <input type=\"checkbox\" [checked]=\"node.origin?.isChecked\"\r\n [attr.data-indeterminate]=\"hasChildrenChecked(node)\" class=\"form-check-input me-2\">\r\n {{node.title}}\r\n </div>\r\n </ng-template>\r\n <ng-template abpTreeExpandedIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\" *ngIf=\"node.children.length>0\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"></ng-container></i>\r\n </ng-template>\r\n\r\n <ng-template #minusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\" />\r\n </svg>\r\n </ng-template>\r\n\r\n <ng-template #plusIcon>\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\" clip-rule=\"evenodd\">\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\" />\r\n </svg>\r\n </ng-template>\r\n </abp-tree>\r\n <div *ngIf=\"nodes.length === 0\" class=\"text-muted mt-2\">{{'AbpDynamicForm::PleaseAddNode' |\r\n abpLocalization}}</div>\r\n <div *ngIf=\"TreeOptions?.errors?.required\" class=\"invalid-feedback \">\r\n {{'AbpValidation::ThisFieldIsRequired.' | abpLocalization: 'Nodes'}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" (change)=\"toggleMultiple($event)\"\r\n formControlName=\"TreeView.Multiple\" id=\"Multiple\">\r\n <label class=\"form-check-label\" for=\"Multiple\">\r\n {{'AbpDynamicForm::Multiple' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\r\n #submitclick></button>\r\n </div>\r\n</form>\r\n\r\n\r\n<!-- [options]=\"{ size: CurrentSelectionTableControlName==='Matrix'?'xl':'' ,scrollable:false }\" (visibleChange)=\"tableSelectVisibleChange($event)\"-->\r\n<abp-modal [(visible)]=\"isVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{isCreateChild ? ('AbpDynamicForm::AddSubNode' | abpLocalization) : (selectTree ? ('AbpUi::Edit' |\r\n abpLocalization) : ('Cms::New' | abpLocalization))}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <ng-container *ngIf=\"nodeForm; else loaderRef\">\r\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"nodeForm\" (submit)=\"createOrEditSave()\">\r\n <button type=\"submit\" #nodeModalSubmit style=\"display: none\"></button>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::NodeItemText' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\" [placeholder]=\"\"\r\n (blur)=\"disPlayNameInputBlur($event)\" />\r\n </div>\r\n <!-- <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'AbpDynamicForm::SelectListItemValue' | abpLocalization }}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"key\" [placeholder]=\"\" />\r\n </div> -->\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"isChecked\" id=\"isSelected\">\r\n <label class=\"form-check-label\" for=\"isSelected\">\r\n {{'AbpDynamicForm::Selected' | abpLocalization}}\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"!nodeForm.valid\"\r\n (abpClick)=\"nodeModalSubmit.nativeElement.click()\">{{'AbpUi::Save' |\r\n abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>", styles: ["input[type=checkbox]:indeterminate{opacity:.5}\n"] }]
1969
1986
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2$1.ToPinyinService }], propDecorators: { type: [{
1970
1987
  type: Input
1971
1988
  }], selected: [{
@@ -2057,9 +2074,9 @@ class TreeControlComponent {
2057
2074
  return result;
2058
2075
  }
2059
2076
  ngOnDestroy() {
2060
- //Called once, before the instance is destroyed.
2061
- //Add 'implements OnDestroy' to the class.
2062
- this.extraProperties.removeControl(this._fields.field.name);
2077
+ if (this.extraProperties && this._fields?.field?.name) {
2078
+ this.extraProperties.removeControl(this._fields.field.name);
2079
+ }
2063
2080
  }
2064
2081
  /**点击展开树节点图标触发 */
2065
2082
  nzExpandChange(event) {
@@ -2284,20 +2301,13 @@ class TreeSearchComponent {
2284
2301
  const ValidatorsArray = [];
2285
2302
  this.formConfiguration = this._fields.field.formConfiguration;
2286
2303
  const isMultiple = this.formConfiguration['TreeView.Multiple'];
2287
- const selectValue = isMultiple ? [] : [];
2304
+ const selectValue = isMultiple ? [] : null;
2288
2305
  const treeOptions = this.formConfiguration['TreeView.Nodes'];
2289
2306
  if (treeOptions?.length) {
2290
- for (const element of treeOptions) {
2291
- for (const key in element) {
2292
- const item = element[key];
2293
- const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);
2294
- element[capitalizedKey] = item;
2295
- }
2296
- }
2297
2307
  this.nodes = this.convertTreeOptionsToNodes(treeOptions);
2298
2308
  }
2299
- this._selected = selectValue;
2300
- const newControl = this.fb.control(this._selected, ValidatorsArray);
2309
+ const initialValue = this._selected !== undefined ? this._selected : selectValue;
2310
+ const newControl = this.fb.control(initialValue, ValidatorsArray);
2301
2311
  this.extraProperties.setControl(this._fields.field.name, newControl);
2302
2312
  resolve(true);
2303
2313
  });
@@ -2317,9 +2327,9 @@ class TreeSearchComponent {
2317
2327
  }
2318
2328
  }
2319
2329
  ngOnDestroy() {
2320
- //Called once, before the instance is destroyed.
2321
- //Add 'implements OnDestroy' to the class.
2322
- this.extraProperties.removeControl(this._fields.field.name);
2330
+ if (this.extraProperties && this._fields?.field?.name) {
2331
+ this.extraProperties.removeControl(this._fields.field.name);
2332
+ }
2323
2333
  }
2324
2334
  onChange($event) {
2325
2335
  console.log($event);
@@ -2357,10 +2367,8 @@ class TreeViewComponent {
2357
2367
  this._value = v;
2358
2368
  }
2359
2369
  async ngAfterContentInit() {
2360
- //Called after ngOnInit when the component's or directive's content has been initialized.
2361
- //Add 'implements AfterContentInit' to the class.
2362
2370
  const valueOptions = this._value;
2363
- if (this.type && valueOptions) {
2371
+ if (this.type && valueOptions !== null && valueOptions !== undefined) {
2364
2372
  const nodes = this.fields?.field?.formConfiguration?.['TreeView.Nodes'] || [];
2365
2373
  const findNodeByValue = (nodeList, val) => {
2366
2374
  for (const node of nodeList) {