@sumaris-net/ngx-components 2.4.32 → 2.4.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/doc/changelog.md CHANGED
@@ -588,3 +588,6 @@ Observables: function `waitFor()`, `waitForTrue()`, `watForFalse()`, `firstNotNi
588
588
 
589
589
  # 2.4.31
590
590
  - [enh] Add JsonUtils.parseFile()
591
+
592
+ # 2.4.33
593
+ - [enh] Add AppPropertiesForm.length
@@ -69,7 +69,7 @@ export class AppEntityEditorModal extends AppTabEditor {
69
69
  return !this._enabled;
70
70
  }
71
71
  get isOnFieldMode() {
72
- return this.settings.isOnFieldMode(this._usageMode);
72
+ return this.settings.isOnFieldMode(this.usageMode);
73
73
  }
74
74
  get saving() {
75
75
  return this.savingSubject.value;
@@ -91,6 +91,7 @@ export class AppEntityEditorModal extends AppTabEditor {
91
91
  ngOnInit() {
92
92
  // Default values
93
93
  this.mobile = isNotNil(this.mobile) ? this.mobile : this.settings.mobile;
94
+ this.usageMode = this.usageMode || this.settings.usageMode;
94
95
  super.ngOnInit();
95
96
  // Register forms
96
97
  this.registerForms();
@@ -416,4 +417,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
416
417
  }], disabled: [{
417
418
  type: Input
418
419
  }] } });
419
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWVkaXRvci1tb2RhbC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2VudGl0eS9lbnRpdHktZWRpdG9yLW1vZGFsLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFZLEtBQUssRUFBcUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUMsZUFBZSxFQUFFLGVBQWUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBSTNFLE9BQU8sRUFBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFFekUsT0FBTyxFQUFDLFlBQVksRUFBaUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUV2RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBb0I1QyxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsbUJBQW1CO0NBRW5FO0FBRUQsV0FBVztBQUVYLGtFQUFrRTtBQUNsRSxNQUFNLE9BQWdCLG9CQUtwQixTQUFRLFlBQW1CO0lBMkUzQixZQUNFLFFBQWtCLEVBQ1IsUUFBb0IsRUFDbEIsT0FBVztRQUV2QixLQUFLLENBQUMsSUFBSSxFQUNSLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQ3BCLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQzdCLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFDOUIsT0FBTyxDQUFDLENBQUM7UUFQRCxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBaEV2QixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRTdELFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBT3RCLGVBQVUsR0FBVyxJQUFJLENBQUM7UUErRGpDLE9BQU8sR0FBTTtZQUNYLGtCQUFrQjtZQUNsQixVQUFVLEVBQUUsRUFBRTtZQUVkLG9CQUFvQjtZQUNwQixHQUFHLE9BQU87U0FDWCxDQUFDO1FBRUYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxDQUFDLDJDQUEyQztRQUNwRixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNqQixNQUFNLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRTtTQUM5QixDQUFDO1FBRUYsb0JBQW9CO1FBQ3BCLHVDQUF1QztJQUN6QyxDQUFDO0lBbEZELElBQWEsS0FBSyxDQUFDLEtBQWM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRDs7T0FFRztJQUNILElBQWEsU0FBUyxDQUFDLEtBQWM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELElBQWEsUUFBUSxDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBOEI7UUFDekMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUs7Z0JBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUE4QjtRQUN4QyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtZQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSztnQkFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBbUNELFFBQVE7UUFFTixpQkFBaUI7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUV6RSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixVQUFVO1FBQ1YsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVsQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxvQkFBb0I7WUFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO2FBRUk7WUFDSCx1Q0FBdUM7WUFDdkMsSUFBSSxDQUFDLG9CQUFvQixDQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7aUJBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3ZCLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDN0MsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3pDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM1QjthQUNJO1lBQ0gscUZBQXFGO1lBQ3JGLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBcUI7UUFDNUIscUJBQXFCO1FBQ3JCLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFekQsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEM7UUFDRCxPQUFNLEdBQUcsRUFBRTtZQUNULElBQUksR0FBRyxLQUFLLFdBQVc7Z0JBQUUsT0FBTztZQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7U0FDM0I7Z0JBQ087WUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUE4QjtRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBYyxFQUFFLElBR2hDO1FBRUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sRUFBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBQyxDQUFDO1FBRTlGLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUxQixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUzQixvQkFBb0I7WUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxJQUFPLEVBQUUsSUFBaUQ7UUFDeEUsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQjthQUNJO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVuQixzQkFBc0I7WUFDdEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQW1CO1FBRXBDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDaEQsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFrQjtRQUM1QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxNQUFNLGVBQWUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFL0YsaUJBQWlCO1lBQ2pCLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzdELE9BQU87YUFDUjtZQUVELGtDQUFrQztZQUNsQyxJQUFJLGVBQWUsS0FBSyxJQUFJLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsT0FBTzthQUNSO1NBQ0Y7UUFFRCxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFtQixFQUFFLElBQVU7UUFDeEMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsOENBQThDLENBQUMsQ0FBQztZQUNoRixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztZQUM5RCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsK0JBQStCO1FBQy9CLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFOUIsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUV4QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLENBQUM7UUFFbEUsSUFBSTtZQUNGLDBCQUEwQjtZQUMxQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBRXpCLFlBQVk7WUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRWxDLG9CQUFvQjtZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUV0QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsZ0NBQWdDO1lBQ3BELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFZCxPQUFPLEtBQUssQ0FBQztTQUNkO2dCQUFTO1lBQ1IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQjtRQUN6QixvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFFZixtQ0FBbUM7WUFDbkMsTUFBTSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFMUMsMENBQTBDO1lBQzFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzNCLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBRUQsbUJBQW1CO1NBQ3BCO1FBRUQsK0JBQStCO1FBQy9CLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sU0FBUyxDQUFDO1NBQzlCO1FBRUQsdUJBQXVCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFtQjtRQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEtBQUssQ0FBQztRQUU5QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUk7WUFFRixvQ0FBb0M7WUFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFckQsaUJBQWlCO2dCQUNqQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUM7b0JBQUUsT0FBTztnQkFFL0QsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2lCQUNuRDthQUNGO1lBRUQscUNBQXFDO2lCQUNoQztnQkFDSCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLDZDQUE2QyxDQUFDLENBQUM7aUJBQ2hGO2dCQUVELE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQzthQUNuRDtTQUNGO1FBQ0QsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLE9BQU87Z0JBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQTRCO1FBQ3JDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSztnQkFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQWlDLEVBQUUsSUFBdUQ7UUFDakcsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2pDO2FBQ0ksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3JDO2FBQ0k7WUFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2xFLElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUU1RSxvREFBb0Q7WUFDcEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQztnQkFDckUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFpQjtnQkFDdkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3hCLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsZUFBZSxJQUFJLGVBQWUsQ0FBQztnQkFDMUQsV0FBVyxJQUFJLHNCQUFzQixRQUFRLFlBQVksYUFBYSxJQUFJLENBQUM7Z0JBQzNFLFdBQVcsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ2xHLFdBQVcsSUFBSSxVQUFVLENBQUM7YUFDM0I7WUFDRCxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFjRCw2QkFBNkI7SUFFbkIsZ0JBQWdCLENBQUMsSUFBcUI7UUFDOUMsT0FBTyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFUyxLQUFLLENBQUMsUUFBUTtRQUN0QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTdDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFRO1FBQ2xDLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUN6QixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVTLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBaUI7UUFDM0MsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCw2QkFBNkI7SUFFN0I7O09BRUc7SUFDSyxtQkFBbUI7UUFDekIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDdkQsSUFBSSxlQUFlLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLGVBQWUsRUFBRTtZQUN2RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7O2tIQXJlbUIsb0JBQW9CO3NHQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFGekMsU0FBUzs7MEJBcUZMLFFBQVE7NENBN0RGLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBaUJPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sUUFBUTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FsZXJ0Q29udHJvbGxlciwgTW9kYWxDb250cm9sbGVyfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xvY2FsU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7RW50aXR5fSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtVc2FnZU1vZGV9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGVsL3NldHRpbmdzLm1vZGVsJztcbmltcG9ydCB7Rm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FwcFRhYkVkaXRvciwgQXBwVGFiRWRpdG9yT3B0aW9uc30gZnJvbSAnLi9lZGl0b3IuY2xhc3MnO1xuaW1wb3J0IHtBcHBGb3JtVXRpbHN9IGZyb20gJy4uL2Zvcm0udXRpbHMnO1xuaW1wb3J0IHtBbGVydHN9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9hbGVydHMnO1xuaW1wb3J0IHtFcnJvckNvZGVzfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lcnJvcnMnO1xuaW1wb3J0IHtpc05pbCwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFua30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0RhdGVGb3JtYXRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcGlwZXMvZGF0ZS1mb3JtYXQucGlwZSc7XG5pbXBvcnQge0Vudmlyb25tZW50LCBFTlZJUk9OTUVOVH0gZnJvbSAnLi4vLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7d2FpdEZvckZhbHNlLCBXYWl0Rm9yT3B0aW9uc30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL29ic2VydmFibGVzJztcbmltcG9ydCB7Rm9ybUVycm9yVHJhbnNsYXRvcn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3ZhbGlkYXRvci9mb3JtLWVycm9yLWFkYXB0ZXIuY2xhc3MnO1xuaW1wb3J0IHtBcHBFcnJvcldpdGhEZXRhaWxzfSBmcm9tICcuL2VudGl0eS1lZGl0b3IuY2xhc3MnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIElFbnRpdHlFZGl0b3JNb2RhbE9wdGlvbnM8XG4gIFQgZXh0ZW5kcyBFbnRpdHk8VCwgSUQ+ICA9IEVudGl0eTxhbnksIGFueT4sXG4gIElEID0gbnVtYmVyPiB7XG5cbiAgLy8gRGF0YVxuICBpc05ldzogYm9vbGVhbjtcbiAgZGF0YTogVDtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgb25BZnRlck1vZGFsSW5pdD86IDxNIGV4dGVuZHMgQXBwRW50aXR5RWRpdG9yTW9kYWw8VCwgSUQ+Pihtb2RhbDogTSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIG9uRGVsZXRlPzogKGV2ZW50OiBFdmVudCwgZGF0YTogVCkgPT4gUHJvbWlzZTxib29sZWFuPjtcblxuICB1c2FnZU1vZGU6IFVzYWdlTW9kZTtcbiAgbW9iaWxlOiBib29sZWFuO1xuICBpMThuU3VmZml4Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRW50aXR5RWRpdG9yTW9kYWxPcHRpb25zIGV4dGVuZHMgQXBwVGFiRWRpdG9yT3B0aW9ucyB7XG4gIGkxOG5QcmVmaXg/OiBzdHJpbmc7XG59XG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcEVudGl0eUVkaXRvck1vZGFsPFxuICBUIGV4dGVuZHMgRW50aXR5PFQsIElEPixcbiAgSUQgPSBudW1iZXIsXG4gIE8gZXh0ZW5kcyBBcHBFbnRpdHlFZGl0b3JNb2RhbE9wdGlvbnMgPSBBcHBFbnRpdHlFZGl0b3JNb2RhbE9wdGlvbnNcbiAgPlxuICBleHRlbmRzIEFwcFRhYkVkaXRvcjxULCBJRD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgSUVudGl0eUVkaXRvck1vZGFsT3B0aW9uczxULCBJRD4ge1xuXG4gIHByaXZhdGUgX3VzYWdlTW9kZTogVXNhZ2VNb2RlO1xuICBwcm90ZWN0ZWQgX2xvZ1ByZWZpeDtcbiAgcHJvdGVjdGVkIF9pc05ldzogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0ZUZvcm1hdDogRGF0ZUZvcm1hdFNlcnZpY2U7XG4gIHByb3RlY3RlZCByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZXR0aW5nczogTG9jYWxTZXR0aW5nc1NlcnZpY2U7XG4gIHByb3RlY3RlZCByZWFkb25seSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIGVycm9yVHJhbnNsYXRvcjogRm9ybUVycm9yVHJhbnNsYXRvcjtcblxuICByZWFkb25seSBzYXZpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgJHRpdGxlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIEBJbnB1dCgpIGRhdGE6IFQ7XG4gIEBJbnB1dCgpIG1vYmlsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgdXNhZ2VNb2RlOiBVc2FnZU1vZGU7XG4gIEBJbnB1dCgpIG9uQWZ0ZXJNb2RhbEluaXQ6IDxNIGV4dGVuZHMgQXBwRW50aXR5RWRpdG9yTW9kYWw8VCwgSUQ+Pihtb2RhbDogTSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIEBJbnB1dCgpIG9uRGVsZXRlOiAoZXZlbnQ6IEV2ZW50LCBkYXRhOiBUKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBASW5wdXQoKSBpMThuU3VmZml4OiBzdHJpbmcgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHNldCBpc05ldyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzTmV3ID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaXNOZXcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTm90TmlsKHRoaXMuX2lzTmV3KSA/IHRoaXMuX2lzTmV3IDogaXNOaWwodGhpcy5kYXRhPy5pZCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzTmV3IGluc3RlYWRcbiAgICovXG4gIGdldCBpc05ld0RhdGEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNOZXc7XG4gIH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBpc05ldyBpbnN0ZWFkXG4gICAqL1xuICBASW5wdXQoKSBzZXQgaXNOZXdEYXRhKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc05ldyA9IHZhbHVlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9ICF2YWx1ZTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNPbkZpZWxkTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5pc09uRmllbGRNb2RlKHRoaXMuX3VzYWdlTW9kZSk7XG4gIH1cblxuICBnZXQgc2F2aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNhdmluZ1N1YmplY3QudmFsdWU7XG4gIH1cblxuICBtYXJrQXNTYXZpbmcob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXtcbiAgICBpZiAodGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLnNhdmluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzU2F2ZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXtcbiAgICBpZiAodGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5zYXZpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBkYXRhVHlwZTogbmV3KCkgPT4gVCxcbiAgICBAT3B0aW9uYWwoKSBvcHRpb25zPzogT1xuICApIHtcbiAgICBzdXBlcihudWxsLFxuICAgICAgaW5qZWN0b3IuZ2V0KFJvdXRlciksXG4gICAgICBpbmplY3Rvci5nZXQoQWxlcnRDb250cm9sbGVyKSxcbiAgICAgIGluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKSxcbiAgICAgIG9wdGlvbnMpO1xuICAgIG9wdGlvbnMgPSA8Tz57XG4gICAgICAvLyBEZWZhdWx0IG9wdGlvbnNcbiAgICAgIGkxOG5QcmVmaXg6ICcnLFxuXG4gICAgICAvLyBPdmVycmlkZSBkZWZhdWx0c1xuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG5cbiAgICB0aGlzLnF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWUgPSB1bmRlZmluZWQ7IC8vIEltcG9ydGFudDogYXZvaWQgcXVlcnkgcGFyYW1ldGVyIGNoYW5nZWRcbiAgICB0aGlzLnNldHRpbmdzID0gaW5qZWN0b3IuZ2V0KExvY2FsU2V0dGluZ3NTZXJ2aWNlKTtcbiAgICB0aGlzLmVycm9yVHJhbnNsYXRvciA9IGluamVjdG9yLmdldChGb3JtRXJyb3JUcmFuc2xhdG9yKTtcbiAgICB0aGlzLmNkID0gaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSBpbmplY3Rvci5nZXQoRGF0ZUZvcm1hdFNlcnZpY2UpO1xuICAgIHRoaXMubW9kYWxDdHJsID0gaW5qZWN0b3IuZ2V0KE1vZGFsQ29udHJvbGxlcik7XG4gICAgdGhpcy5pMThuQ29udGV4dCA9IHtcbiAgICAgIHByZWZpeDogb3B0aW9ucy5pMThuUHJlZml4LFxuICAgICAgc3VmZml4OiB0aGlzLmkxOG5TdWZmaXggfHwgJydcbiAgICB9O1xuXG4gICAgLy8gRk9SIERFViBPTkxZIC0tLS1cbiAgICAvL3RoaXMuZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgLy8gRGVmYXVsdCB2YWx1ZXNcbiAgICB0aGlzLm1vYmlsZSA9IGlzTm90TmlsKHRoaXMubW9iaWxlKSA/IHRoaXMubW9iaWxlIDogdGhpcy5zZXR0aW5ncy5tb2JpbGU7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gUmVnaXN0ZXIgZm9ybXNcbiAgICB0aGlzLnJlZ2lzdGVyRm9ybXMoKTtcblxuICAgIC8vIERpc2FibGVcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICBpZiAodGhpcy5pc05ldykge1xuICAgICAgLy8gVXBkYXRlIHRoZSB0aXRsZS5cbiAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgIC8vIFVwZGF0ZSB0aXRsZSBlYWNoIHRpbWUgdmFsdWUgY2hhbmdlc1xuICAgICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNTApKVxuICAgICAgICAgIC5zdWJzY3JpYmUoanNvbiA9PiB0aGlzLnVwZGF0ZVRpdGxlKGpzb24pKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG5cbiAgICBpZiAodGhpcy5vbkFmdGVyTW9kYWxJbml0KSB7XG4gICAgICBQcm9taXNlLnJlc29sdmUodGhpcy5vbkFmdGVyTW9kYWxJbml0KHRoaXMpKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLmxvYWQoKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gVXNlIGEgdGltZW91dCB0byBhdm9pZCBlcnJvciAnTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yJ1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWQoKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLiR0aXRsZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuJHRpdGxlLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zYXZpbmdTdWJqZWN0LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB3YWl0SWRsZShvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBXYWl0IGVuZCBvZiBzYXZpbmdcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybiB3YWl0Rm9yRmFsc2UodGhpcy5zYXZpbmdTdWJqZWN0KTtcblxuICAgIHJldHVybiBzdXBlci53YWl0SWRsZShvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5tYXJrQXNSZWFkeSgpO1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmlldyh0aGlzLmRhdGEpO1xuICAgIH1cbiAgICBjYXRjaChlcnIpIHtcbiAgICAgIGlmIChlcnIgPT09ICdDQU5DRUxMRUQnKSByZXR1cm47XG4gICAgICB0aGlzLnNldEVycm9yKGVycik7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSAwO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgdW5sb2FkKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGltcGxlbWVudGVkIG9uIG1vZGFsXCIpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVmlldyhkYXRhOiBUIHwgbnVsbCwgb3B0cz86IHtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICAgIG9wZW5UYWJJbmRleD86IG51bWJlcjtcbiAgfSk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG5cbiAgICBpZiAoIXRoaXMuZGF0YSkgdGhyb3cge2NvZGU6IEVycm9yQ29kZXMuREFUQV9OT1RfRk9VTkRfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5EQVRBX05PX0ZPVU5EJ307XG5cbiAgICBhd2FpdCB0aGlzLnNldFZhbHVlKGRhdGEpO1xuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgdGhpcy5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgIHRoaXMudXBkYXRlVmlld1N0YXRlKGRhdGEpO1xuXG4gICAgICAvLyBVcGRhdGUgdGhlIHRpdGxlLlxuICAgICAgdGhpcy51cGRhdGVUaXRsZShkYXRhKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgc3RhdGVcbiAgICovXG4gIHVwZGF0ZVZpZXdTdGF0ZShkYXRhOiBULCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuaXNOZXcgfHwgdGhpcy5lbmFibGVkKSB7XG4gICAgICB0aGlzLmVuYWJsZShvcHRzKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmRpc2FibGUob3B0cyk7XG5cbiAgICAgIC8vIEFsbG93IHRvIHNvcnQgdGFibGVcbiAgICAgIHRoaXMudGFibGVzPy5mb3JFYWNoKHQgPT4gdC5lbmFibGVTb3J0KCkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVBbmRDbG9zZShldmVudD86IEV2ZW50fEV2ZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5zYXZlQW5kR2V0RGF0YUlmVmFsaWQoKTtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhkYXRhKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhc3luYyBjbG9zZShldmVudDogRXZlbnR8RXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5kaXJ0eSkge1xuICAgICAgY29uc3Qgc2F2ZUJlZm9yZUxlYXZlID0gYXdhaXQgQWxlcnRzLmFza1NhdmVCZWZvcmVMZWF2ZSh0aGlzLmFsZXJ0Q3RybCwgdGhpcy50cmFuc2xhdGUsIGV2ZW50KTtcblxuICAgICAgLy8gVXNlciBjYW5jZWxsZWRcbiAgICAgIGlmIChpc05pbChzYXZlQmVmb3JlTGVhdmUpIHx8IGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBJcyB1c2VyIGNvbmZpcm06IGNsb3NlIG5vcm1hbGx5XG4gICAgICBpZiAoc2F2ZUJlZm9yZUxlYXZlID09PSB0cnVlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUFuZENsb3NlKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IHRoaXMubW9kYWxDdHJsLmRpc21pc3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSBlZGl0b3IsIGJ5IGNhbGxpbmcgdGhlIGRhdGFTZXJ2aWNlLnNhdmUoKS5cbiAgICogRW5zdXJlIHRoYXQgZWRpdG9yIGlmIHZhbGlkLiBJZiBub3QsIGRpc3BsYXkgYW4gZXJyb3JcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICBhc3luYyBzYXZlKGV2ZW50PzogRXZlbnR8RXZlbnQsIG9wdHM/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5sb2FkaW5nIHx8IHRoaXMuc2F2aW5nIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgJ1NraXAgc2F2ZTogbW9kYWwgaXMgYnVzeSAobG9hZGluZyBvciBzYXZpbmcpJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5kaXJ0eSkge1xuICAgICAgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnU2tpcCBzYXZlOiBtb2RhbCBub3QgZGlydHknKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFdhaXQgZW5kIG9mIGFzeW5jIHZhbGlkYXRpb25cbiAgICBhd2FpdCB0aGlzLndhaXRXaGlsZVBlbmRpbmcoKTtcblxuICAgIC8vIElmIGludmFsaWRcbiAgICBpZiAodGhpcy5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmxvZ0Zvcm1FcnJvcnMoKTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoJ0NPTU1PTi5GT1JNLkhBU19FUlJPUicpO1xuICAgICAgdGhpcy5vcGVuRmlyc3RJbnZhbGlkVGFiKCk7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQoKTtcblxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMubWFya0FzU2F2aW5nKCk7XG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnU2F2aW5nIGRhdGEuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBTYXZlIGFsbCBkaXJ0eSBjaGlsZHJlblxuICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCB0aGlzLnNhdmVEaXJ0eUNoaWxkcmVuKCk7XG4gICAgICBpZiAoIXNhdmVkKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIEZpbGwgZGF0YVxuICAgICAgdGhpcy5kYXRhID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpO1xuXG4gICAgICAvLyBNYXJrIGFzIHN1Ym1pdHRlZFxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoZXJyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7IC8vIFNjcm9sbCB0byB0b3AgKHRvIHNob3cgZXJyb3IpXG4gICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLmVuYWJsZSgpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubWFya0FzU2F2ZWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBkYXRhIChpZiBkaXJ0eSBhbmQgdmFsaWQpLCBhbmQgcmV0dXJuIGl0LiBPdGhlcndpc2UsIHJldHVybiBuaWwgdmFsdWUuXG4gICAqL1xuICBhc3luYyBzYXZlQW5kR2V0RGF0YUlmVmFsaWQoKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gRm9ybSBpcyBub3QgdmFsaWRcbiAgICBpZiAoIXRoaXMudmFsaWQpIHtcblxuICAgICAgLy8gTWFrZSBzdXJlIHZhbGlkYXRpb24gaXMgZmluaXNoZWRcbiAgICAgIGF3YWl0IEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKHRoaXMpO1xuXG4gICAgICAvLyBJZiBpbnZhbGlkOiBPcGVuIHRoZSBmaXJzdCB0YWIgaW4gZXJyb3JcbiAgICAgIGlmICh0aGlzLmludmFsaWQpIHtcbiAgICAgICAgdGhpcy5vcGVuRmlyc3RJbnZhbGlkVGFiKCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIENvbnRpbnVlICh2YWxpZClcbiAgICB9XG5cbiAgICAvLyBGb3JtIGlzIHZhbGlkLCBidXQgbm90IHNhdmVkXG4gICAgaWYgKHRoaXMuZGlydHkpIHtcbiAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgdGhpcy5zYXZlKG5ldyBFdmVudCgnc2F2ZScpKTtcbiAgICAgIGlmICghc2F2ZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gVmFsaWQgYW5kIHNhdmVkIGRhdGFcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGV2ZW50PzogRXZlbnR8RXZlbnQpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nIHx8IHRoaXMuc2F2aW5nKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLm1hcmtBc1NhdmluZygpO1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICAgIHRyeSB7XG5cbiAgICAgIC8vIERlbGVnYXRlIGRlbGV0aW9uIHRvIG1vZGFsIGNhbGxlclxuICAgICAgaWYgKHRoaXMub25EZWxldGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5vbkRlbGV0ZShldmVudCwgdGhpcy5kYXRhKTtcblxuICAgICAgICAvLyBVc2VyIGNhbmNlbGxlZFxuICAgICAgICBpZiAoaXNOaWwocmVzdWx0KSB8fCAoZXZlbnQgJiYgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkpIHJldHVybjtcblxuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyh0aGlzLmRhdGEsICdkZWxldGUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBPciBkaXNtaXNzLCB3aXRoIHRoZSByb2xlICdkZWxldGUnXG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOZXcpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHRoaXMuX2xvZ1ByZWZpeCArIFwiVHJ5aW5nIHRvIGRlbGV0ZSBhIG5ldyBkYXRhLiBNYWtlIG5vIHNlbnNlIVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5kYXRhLCAnZGVsZXRlJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoZXJyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgICB0aGlzLm1hcmtBc1NhdmVkKCk7XG4gICAgICBpZiAodGhpcy5lbmFibGVkKSB0aGlzLmVuYWJsZSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0RXJyb3Iob3B0cz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSkge1xuICAgIGlmIChpc05vdE5pbE9yQmxhbmsodGhpcy5lcnJvcikpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBzZXRFcnJvcihlcnI6IHN0cmluZyB8IEFwcEVycm9yV2l0aERldGFpbHMsIG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbjsgZGV0YWlsc0Nzc0NsYXNzPzogc3RyaW5nO30pIHtcbiAgICBpZiAoIWVycikge1xuICAgICAgc3VwZXIuc2V0RXJyb3IodW5kZWZpbmVkLCBvcHRzKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tlbnRpdHktZWRpdG9yXSBFcnJvcjogJyArIChlcnIgfHwgJycpKTtcbiAgICAgIHN1cGVyLnNldEVycm9yKGVyciBhcyBzdHJpbmcsIG9wdHMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tlbnRpdHktZWRpdG9yXSBFcnJvcjogJyArIGVyci5tZXNzYWdlIHx8ICcnLCBlcnIpO1xuICAgICAgbGV0IHVzZXJNZXNzYWdlID0gZXJyLm1lc3NhZ2UgJiYgdGhpcy50cmFuc2xhdGUuaW5zdGFudChlcnIubWVzc2FnZSkgfHwgZXJyO1xuXG4gICAgICAvLyBBZGQgZGV0YWlscyBlcnJvciAoaWYgYW55KSB1bmRlciB0aGUgbWFpbiBtZXNzYWdlXG4gICAgICBjb25zdCBkZXRhaWxNZXNzYWdlID0gKCFlcnIuZGV0YWlscyB8fCB0eXBlb2YgZXJyLmRldGFpbHMgPT09ICdzdHJpbmcnKVxuICAgICAgICA/IGVyci5kZXRhaWxzIGFzIHN0cmluZ1xuICAgICAgICA6IGVyci5kZXRhaWxzLm1lc3NhZ2U7XG4gICAgICBpZiAoaXNOb3ROaWxPckJsYW5rKGRldGFpbE1lc3NhZ2UpKSB7XG4gICAgICAgIGNvbnN0IGNzc0NsYXNzID0gb3B0cz8uZGV0YWlsc0Nzc0NsYXNzIHx8ICdlcnJvci1kZXRhaWxzJztcbiAgICAgICAgdXNlck1lc3NhZ2UgKz0gYDxici8+PHNtYWxsIGNsYXNzPVwiJHtjc3NDbGFzc31cIiB0aXRsZT1cIiR7ZGV0YWlsTWVzc2FnZX1cIj5gO1xuICAgICAgICB1c2VyTWVzc2FnZSArPSBkZXRhaWxNZXNzYWdlLmxlbmd0aCA8IDcwID8gZGV0YWlsTWVzc2FnZSA6IGRldGFpbE1lc3NhZ2Uuc3Vic3RyaW5nKDAsIDY3KSArICcuLi4nO1xuICAgICAgICB1c2VyTWVzc2FnZSArPSAnPC9zbWFsbD4nO1xuICAgICAgfVxuICAgICAgc3VwZXIuc2V0RXJyb3IodXNlck1lc3NhZ2UsIG9wdHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBhYnN0cmFjdCBtZXRob2RzICh0byBvdmVycmlkZSkgLS0gKi9cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVnaXN0ZXJGb3JtcygpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjb21wdXRlVGl0bGUoZGF0YTogVCk6IFByb21pc2U8c3RyaW5nPjtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0VmFsdWUoZGF0YTogVCk6IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgZm9ybSgpOiBGb3JtR3JvdXA7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEZpcnN0SW52YWxpZFRhYkluZGV4KCk6IG51bWJlcjtcblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCB3YWl0V2hpbGVQZW5kaW5nKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBBcHBGb3JtVXRpbHMud2FpdFdoaWxlUGVuZGluZyh0aGlzLCBvcHRzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRWYWx1ZSgpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBqc29uID0gYXdhaXQgdGhpcy5nZXRKc29uVmFsdWVUb1NhdmUoKTtcblxuICAgIGNvbnN0IHJlcyA9IG5ldyB0aGlzLmRhdGFUeXBlKCk7XG4gICAgcmVzLmZyb21PYmplY3QoanNvbik7XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEpzb25WYWx1ZVRvU2F2ZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5mb3JtLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlIHRoZSB0aXRsZVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHVwZGF0ZVRpdGxlKGRhdGE/OiBUKSB7XG4gICAgZGF0YSA9IGRhdGEgfHwgdGhpcy5kYXRhO1xuICAgIGNvbnN0IHRpdGxlID0gYXdhaXQgdGhpcy5jb21wdXRlVGl0bGUoZGF0YSk7XG4gICAgdGhpcy4kdGl0bGUubmV4dCh0aXRsZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2Nyb2xsVG9Ub3AoZHVyYXRpb24/OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250ZW50LnNjcm9sbFRvVG9wKGR1cmF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2Q/Lm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyogLS0gcHJpdmF0ZSBmdW5jdGlvbnMgLS0gKi9cblxuICAvKipcbiAgICogT3BlbiB0aGUgZmlyc3QgdGFiIHRoYXQgaXMgaW52YWxpZFxuICAgKi9cbiAgcHJpdmF0ZSBvcGVuRmlyc3RJbnZhbGlkVGFiKCkge1xuICAgIGNvbnN0IGludmFsaWRUYWJJbmRleCA9IHRoaXMuZ2V0Rmlyc3RJbnZhbGlkVGFiSW5kZXgoKTtcbiAgICBpZiAoaW52YWxpZFRhYkluZGV4ICE9PSAtMSAmJiB0aGlzLnNlbGVjdGVkVGFiSW5kZXggIT09IGludmFsaWRUYWJJbmRleCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gaW52YWxpZFRhYkluZGV4O1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxufVxuIl19
420
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWVkaXRvci1tb2RhbC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2VudGl0eS9lbnRpdHktZWRpdG9yLW1vZGFsLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFZLEtBQUssRUFBcUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUMsZUFBZSxFQUFFLGVBQWUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBSTNFLE9BQU8sRUFBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFFekUsT0FBTyxFQUFDLFlBQVksRUFBaUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUV2RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0s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IEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXIsIE1vZGFsQ29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtMb2NhbFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge0VudGl0eX0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7VXNhZ2VNb2RlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RlbC9zZXR0aW5ncy5tb2RlbCc7XG5pbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBcHBUYWJFZGl0b3IsIEFwcFRhYkVkaXRvck9wdGlvbnN9IGZyb20gJy4vZWRpdG9yLmNsYXNzJztcbmltcG9ydCB7QXBwRm9ybVV0aWxzfSBmcm9tICcuLi9mb3JtLnV0aWxzJztcbmltcG9ydCB7QWxlcnRzfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvYWxlcnRzJztcbmltcG9ydCB7RXJyb3JDb2Rlc30gZnJvbSAnLi4vLi4vc2VydmljZXMvZXJyb3JzJztcbmltcG9ydCB7aXNOaWwsIGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmt9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtEYXRlRm9ybWF0U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3BpcGVzL2RhdGUtZm9ybWF0LnBpcGUnO1xuaW1wb3J0IHtFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge3dhaXRGb3JGYWxzZSwgV2FpdEZvck9wdGlvbnN9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge0Zvcm1FcnJvclRyYW5zbGF0b3J9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC92YWxpZGF0b3IvZm9ybS1lcnJvci1hZGFwdGVyLmNsYXNzJztcbmltcG9ydCB7QXBwRXJyb3JXaXRoRGV0YWlsc30gZnJvbSAnLi9lbnRpdHktZWRpdG9yLmNsYXNzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBJRW50aXR5RWRpdG9yTW9kYWxPcHRpb25zPFxuICBUIGV4dGVuZHMgRW50aXR5PFQsIElEPiAgPSBFbnRpdHk8YW55LCBhbnk+LFxuICBJRCA9IG51bWJlcj4ge1xuXG4gIC8vIERhdGFcbiAgaXNOZXc6IGJvb2xlYW47XG4gIGRhdGE6IFQ7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIG9uQWZ0ZXJNb2RhbEluaXQ/OiA8TSBleHRlbmRzIEFwcEVudGl0eUVkaXRvck1vZGFsPFQsIElEPj4obW9kYWw6IE0pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBvbkRlbGV0ZT86IChldmVudDogRXZlbnQsIGRhdGE6IFQpID0+IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgdXNhZ2VNb2RlOiBVc2FnZU1vZGU7XG4gIG1vYmlsZTogYm9vbGVhbjtcbiAgaTE4blN1ZmZpeD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEFwcEVudGl0eUVkaXRvck1vZGFsT3B0aW9ucyBleHRlbmRzIEFwcFRhYkVkaXRvck9wdGlvbnMge1xuICBpMThuUHJlZml4Pzogc3RyaW5nO1xufVxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBFbnRpdHlFZGl0b3JNb2RhbDxcbiAgVCBleHRlbmRzIEVudGl0eTxULCBJRD4sXG4gIElEID0gbnVtYmVyLFxuICBPIGV4dGVuZHMgQXBwRW50aXR5RWRpdG9yTW9kYWxPcHRpb25zID0gQXBwRW50aXR5RWRpdG9yTW9kYWxPcHRpb25zXG4gID5cbiAgZXh0ZW5kcyBBcHBUYWJFZGl0b3I8VCwgSUQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIElFbnRpdHlFZGl0b3JNb2RhbE9wdGlvbnM8VCwgSUQ+IHtcblxuICBwcm90ZWN0ZWQgX2xvZ1ByZWZpeDtcbiAgcHJvdGVjdGVkIF9pc05ldzogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0ZUZvcm1hdDogRGF0ZUZvcm1hdFNlcnZpY2U7XG4gIHByb3RlY3RlZCByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZXR0aW5nczogTG9jYWxTZXR0aW5nc1NlcnZpY2U7XG4gIHByb3RlY3RlZCByZWFkb25seSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIGVycm9yVHJhbnNsYXRvcjogRm9ybUVycm9yVHJhbnNsYXRvcjtcblxuICByZWFkb25seSBzYXZpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgJHRpdGxlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIEBJbnB1dCgpIGRhdGE6IFQ7XG4gIEBJbnB1dCgpIG1vYmlsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgdXNhZ2VNb2RlOiBVc2FnZU1vZGU7XG4gIEBJbnB1dCgpIG9uQWZ0ZXJNb2RhbEluaXQ6IDxNIGV4dGVuZHMgQXBwRW50aXR5RWRpdG9yTW9kYWw8VCwgSUQ+Pihtb2RhbDogTSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIEBJbnB1dCgpIG9uRGVsZXRlOiAoZXZlbnQ6IEV2ZW50LCBkYXRhOiBUKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBASW5wdXQoKSBpMThuU3VmZml4OiBzdHJpbmcgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHNldCBpc05ldyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzTmV3ID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaXNOZXcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTm90TmlsKHRoaXMuX2lzTmV3KSA/IHRoaXMuX2lzTmV3IDogaXNOaWwodGhpcy5kYXRhPy5pZCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzTmV3IGluc3RlYWRcbiAgICovXG4gIGdldCBpc05ld0RhdGEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNOZXc7XG4gIH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBpc05ldyBpbnN0ZWFkXG4gICAqL1xuICBASW5wdXQoKSBzZXQgaXNOZXdEYXRhKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc05ldyA9IHZhbHVlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9ICF2YWx1ZTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNPbkZpZWxkTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5pc09uRmllbGRNb2RlKHRoaXMudXNhZ2VNb2RlKTtcbiAgfVxuXG4gIGdldCBzYXZpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2F2aW5nU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIG1hcmtBc1NhdmluZyhvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe1xuICAgIGlmICh0aGlzLnNhdmluZ1N1YmplY3QudmFsdWUgIT09IHRydWUpIHtcbiAgICAgIHRoaXMuc2F2aW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBtYXJrQXNTYXZlZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe1xuICAgIGlmICh0aGlzLnNhdmluZ1N1YmplY3QudmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNhdmluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGRhdGFUeXBlOiBuZXcoKSA9PiBULFxuICAgIEBPcHRpb25hbCgpIG9wdGlvbnM/OiBPXG4gICkge1xuICAgIHN1cGVyKG51bGwsXG4gICAgICBpbmplY3Rvci5nZXQoUm91dGVyKSxcbiAgICAgIGluamVjdG9yLmdldChBbGVydENvbnRyb2xsZXIpLFxuICAgICAgaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpLFxuICAgICAgb3B0aW9ucyk7XG4gICAgb3B0aW9ucyA9IDxPPntcbiAgICAgIC8vIERlZmF1bHQgb3B0aW9uc1xuICAgICAgaTE4blByZWZpeDogJycsXG5cbiAgICAgIC8vIE92ZXJyaWRlIGRlZmF1bHRzXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcblxuICAgIHRoaXMucXVlcnlUYWJJbmRleFBhcmFtTmFtZSA9IHVuZGVmaW5lZDsgLy8gSW1wb3J0YW50OiBhdm9pZCBxdWVyeSBwYXJhbWV0ZXIgY2hhbmdlZFxuICAgIHRoaXMuc2V0dGluZ3MgPSBpbmplY3Rvci5nZXQoTG9jYWxTZXR0aW5nc1NlcnZpY2UpO1xuICAgIHRoaXMuZXJyb3JUcmFuc2xhdG9yID0gaW5qZWN0b3IuZ2V0KEZvcm1FcnJvclRyYW5zbGF0b3IpO1xuICAgIHRoaXMuY2QgPSBpbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHRoaXMuZGF0ZUZvcm1hdCA9IGluamVjdG9yLmdldChEYXRlRm9ybWF0U2VydmljZSk7XG4gICAgdGhpcy5tb2RhbEN0cmwgPSBpbmplY3Rvci5nZXQoTW9kYWxDb250cm9sbGVyKTtcbiAgICB0aGlzLmkxOG5Db250ZXh0ID0ge1xuICAgICAgcHJlZml4OiBvcHRpb25zLmkxOG5QcmVmaXgsXG4gICAgICBzdWZmaXg6IHRoaXMuaTE4blN1ZmZpeCB8fCAnJ1xuICAgIH07XG5cbiAgICAvLyBGT1IgREVWIE9OTFkgLS0tLVxuICAgIC8vdGhpcy5kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICAvLyBEZWZhdWx0IHZhbHVlc1xuICAgIHRoaXMubW9iaWxlID0gaXNOb3ROaWwodGhpcy5tb2JpbGUpID8gdGhpcy5tb2JpbGUgOiB0aGlzLnNldHRpbmdzLm1vYmlsZTtcbiAgICB0aGlzLnVzYWdlTW9kZSA9IHRoaXMudXNhZ2VNb2RlIHx8IHRoaXMuc2V0dGluZ3MudXNhZ2VNb2RlO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIFJlZ2lzdGVyIGZvcm1zXG4gICAgdGhpcy5yZWdpc3RlckZvcm1zKCk7XG5cbiAgICAvLyBEaXNhYmxlXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgaWYgKHRoaXMuaXNOZXcpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgdGl0bGUuXG4gICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7XG4gICAgfVxuXG4gICAgZWxzZSB7XG4gICAgICAvLyBVcGRhdGUgdGl0bGUgZWFjaCB0aW1lIHZhbHVlIGNoYW5nZXNcbiAgICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjUwKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKGpzb24gPT4gdGhpcy51cGRhdGVUaXRsZShqc29uKSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgaWYgKHRoaXMub25BZnRlck1vZGFsSW5pdCkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKHRoaXMub25BZnRlck1vZGFsSW5pdCh0aGlzKSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5sb2FkKCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFVzZSBhIHRpbWVvdXQgdG8gYXZvaWQgZXJyb3IgJ05HMDEwMDogRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcidcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5sb2FkKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy4kdGl0bGUuY29tcGxldGUoKTtcbiAgICB0aGlzLiR0aXRsZS51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2F2aW5nU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gV2FpdCBlbmQgb2Ygc2F2aW5nXG4gICAgaWYgKHRoaXMuc2F2aW5nKSByZXR1cm4gd2FpdEZvckZhbHNlKHRoaXMuc2F2aW5nU3ViamVjdCk7XG5cbiAgICByZXR1cm4gc3VwZXIud2FpdElkbGUob3B0cyk7XG4gIH1cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMubWFya0FzUmVhZHkoKTtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZpZXcodGhpcy5kYXRhKTtcbiAgICB9XG4gICAgY2F0Y2goZXJyKSB7XG4gICAgICBpZiAoZXJyID09PSAnQ0FOQ0VMTEVEJykgcmV0dXJuO1xuICAgICAgdGhpcy5zZXRFcnJvcihlcnIpO1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5kaXJ0eSkge1xuICAgICAgcmV0dXJuIHRoaXMubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHVubG9hZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBpbXBsZW1lbnRlZCBvbiBtb2RhbFwiKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVZpZXcoZGF0YTogVCB8IG51bGwsIG9wdHM/OiB7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICBvcGVuVGFiSW5kZXg/OiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcblxuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuXG4gICAgaWYgKCF0aGlzLmRhdGEpIHRocm93IHtjb2RlOiBFcnJvckNvZGVzLkRBVEFfTk9UX0ZPVU5EX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuREFUQV9OT19GT1VORCd9O1xuXG4gICAgYXdhaXQgdGhpcy5zZXRWYWx1ZShkYXRhKTtcblxuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHRoaXMubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdTdGF0ZShkYXRhKTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSB0aXRsZS5cbiAgICAgIHRoaXMudXBkYXRlVGl0bGUoZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIHN0YXRlXG4gICAqL1xuICB1cGRhdGVWaWV3U3RhdGUoZGF0YTogVCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIGlmICh0aGlzLmlzTmV3IHx8IHRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5lbmFibGUob3B0cyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5kaXNhYmxlKG9wdHMpO1xuXG4gICAgICAvLyBBbGxvdyB0byBzb3J0IHRhYmxlXG4gICAgICB0aGlzLnRhYmxlcz8uZm9yRWFjaCh0ID0+IHQuZW5hYmxlU29ydCgpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlQW5kQ2xvc2UoZXZlbnQ/OiBFdmVudHxFdmVudCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuc2F2ZUFuZEdldERhdGFJZlZhbGlkKCk7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3MoZGF0YSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoZXZlbnQ6IEV2ZW50fEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZGlydHkpIHtcbiAgICAgIGNvbnN0IHNhdmVCZWZvcmVMZWF2ZSA9IGF3YWl0IEFsZXJ0cy5hc2tTYXZlQmVmb3JlTGVhdmUodGhpcy5hbGVydEN0cmwsIHRoaXMudHJhbnNsYXRlLCBldmVudCk7XG5cbiAgICAgIC8vIFVzZXIgY2FuY2VsbGVkXG4gICAgICBpZiAoaXNOaWwoc2F2ZUJlZm9yZUxlYXZlKSB8fCBldmVudCAmJiBldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSXMgdXNlciBjb25maXJtOiBjbG9zZSBub3JtYWxseVxuICAgICAgaWYgKHNhdmVCZWZvcmVMZWF2ZSA9PT0gdHJ1ZSkge1xuICAgICAgICBhd2FpdCB0aGlzLnNhdmVBbmRDbG9zZShldmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgZWRpdG9yLCBieSBjYWxsaW5nIHRoZSBkYXRhU2VydmljZS5zYXZlKCkuXG4gICAqIEVuc3VyZSB0aGF0IGVkaXRvciBpZiB2YWxpZC4gSWYgbm90LCBkaXNwbGF5IGFuIGVycm9yXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgc2F2ZShldmVudD86IEV2ZW50fEV2ZW50LCBvcHRzPzogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMubG9hZGluZyB8fCB0aGlzLnNhdmluZyB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArICdTa2lwIHNhdmU6IG1vZGFsIGlzIGJ1c3kgKGxvYWRpbmcgb3Igc2F2aW5nKScpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZGlydHkpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgJ1NraXAgc2F2ZTogbW9kYWwgbm90IGRpcnR5Jyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBXYWl0IGVuZCBvZiBhc3luYyB2YWxpZGF0aW9uXG4gICAgYXdhaXQgdGhpcy53YWl0V2hpbGVQZW5kaW5nKCk7XG5cbiAgICAvLyBJZiBpbnZhbGlkXG4gICAgaWYgKHRoaXMuaW52YWxpZCkge1xuICAgICAgdGhpcy5sb2dGb3JtRXJyb3JzKCk7XG4gICAgICB0aGlzLnNldEVycm9yKCdDT01NT04uRk9STS5IQVNfRVJST1InKTtcbiAgICAgIHRoaXMub3BlbkZpcnN0SW52YWxpZFRhYigpO1xuICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLm1hcmtBc1NhdmluZygpO1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuXG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgJ1NhdmluZyBkYXRhLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gU2F2ZSBhbGwgZGlydHkgY2hpbGRyZW5cbiAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgdGhpcy5zYXZlRGlydHlDaGlsZHJlbigpO1xuICAgICAgaWYgKCFzYXZlZCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBGaWxsIGRhdGFcbiAgICAgIHRoaXMuZGF0YSA9IGF3YWl0IHRoaXMuZ2V0VmFsdWUoKTtcblxuICAgICAgLy8gTWFyayBhcyBzdWJtaXR0ZWRcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICB0aGlzLnNldEVycm9yKGVycik7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSAwO1xuICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpOyAvLyBTY3JvbGwgdG8gdG9wICh0byBzaG93IGVycm9yKVxuICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgdGhpcy5lbmFibGUoKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm1hcmtBc1NhdmVkKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgZGF0YSAoaWYgZGlydHkgYW5kIHZhbGlkKSwgYW5kIHJldHVybiBpdC4gT3RoZXJ3aXNlLCByZXR1cm4gbmlsIHZhbHVlLlxuICAgKi9cbiAgYXN5bmMgc2F2ZUFuZEdldERhdGFJZlZhbGlkKCk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIC8vIEZvcm0gaXMgbm90IHZhbGlkXG4gICAgaWYgKCF0aGlzLnZhbGlkKSB7XG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB2YWxpZGF0aW9uIGlzIGZpbmlzaGVkXG4gICAgICBhd2FpdCBBcHBGb3JtVXRpbHMud2FpdFdoaWxlUGVuZGluZyh0aGlzKTtcblxuICAgICAgLy8gSWYgaW52YWxpZDogT3BlbiB0aGUgZmlyc3QgdGFiIGluIGVycm9yXG4gICAgICBpZiAodGhpcy5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMub3BlbkZpcnN0SW52YWxpZFRhYigpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBDb250aW51ZSAodmFsaWQpXG4gICAgfVxuXG4gICAgLy8gRm9ybSBpcyB2YWxpZCwgYnV0IG5vdCBzYXZlZFxuICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICBjb25zdCBzYXZlZCA9IGF3YWl0IHRoaXMuc2F2ZShuZXcgRXZlbnQoJ3NhdmUnKSk7XG4gICAgICBpZiAoIXNhdmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFZhbGlkIGFuZCBzYXZlZCBkYXRhXG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShldmVudD86IEV2ZW50fEV2ZW50KSB7XG4gICAgaWYgKHRoaXMubG9hZGluZyB8fCB0aGlzLnNhdmluZykgcmV0dXJuIGZhbHNlO1xuXG4gICAgdGhpcy5tYXJrQXNTYXZpbmcoKTtcbiAgICB0aGlzLnJlc2V0RXJyb3IoKTtcbiAgICB0cnkge1xuXG4gICAgICAvLyBEZWxlZ2F0ZSBkZWxldGlvbiB0byBtb2RhbCBjYWxsZXJcbiAgICAgIGlmICh0aGlzLm9uRGVsZXRlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMub25EZWxldGUoZXZlbnQsIHRoaXMuZGF0YSk7XG5cbiAgICAgICAgLy8gVXNlciBjYW5jZWxsZWRcbiAgICAgICAgaWYgKGlzTmlsKHJlc3VsdCkgfHwgKGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5kYXRhLCAnZGVsZXRlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT3IgZGlzbWlzcywgd2l0aCB0aGUgcm9sZSAnZGVsZXRlJ1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmlzTmV3KSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcih0aGlzLl9sb2dQcmVmaXggKyBcIlRyeWluZyB0byBkZWxldGUgYSBuZXcgZGF0YS4gTWFrZSBubyBzZW5zZSFcIik7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKHRoaXMuZGF0YSwgJ2RlbGV0ZScpO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICB0aGlzLnNldEVycm9yKGVycik7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSAwO1xuICAgICAgdGhpcy5tYXJrQXNTYXZlZCgpO1xuICAgICAgaWYgKHRoaXMuZW5hYmxlZCkgdGhpcy5lbmFibGUoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXNldEVycm9yKG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbn0pIHtcbiAgICBpZiAoaXNOb3ROaWxPckJsYW5rKHRoaXMuZXJyb3IpKSB7XG4gICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RXJyb3IoZXJyOiBzdHJpbmcgfCBBcHBFcnJvcldpdGhEZXRhaWxzLCBvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW47IGRldGFpbHNDc3NDbGFzcz86IHN0cmluZzt9KSB7XG4gICAgaWYgKCFlcnIpIHtcbiAgICAgIHN1cGVyLnNldEVycm9yKHVuZGVmaW5lZCwgb3B0cyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbZW50aXR5LWVkaXRvcl0gRXJyb3I6ICcgKyAoZXJyIHx8ICcnKSk7XG4gICAgICBzdXBlci5zZXRFcnJvcihlcnIgYXMgc3RyaW5nLCBvcHRzKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbZW50aXR5LWVkaXRvcl0gRXJyb3I6ICcgKyBlcnIubWVzc2FnZSB8fCAnJywgZXJyKTtcbiAgICAgIGxldCB1c2VyTWVzc2FnZSA9IGVyci5tZXNzYWdlICYmIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZXJyLm1lc3NhZ2UpIHx8IGVycjtcblxuICAgICAgLy8gQWRkIGRldGFpbHMgZXJyb3IgKGlmIGFueSkgdW5kZXIgdGhlIG1haW4gbWVzc2FnZVxuICAgICAgY29uc3QgZGV0YWlsTWVzc2FnZSA9ICghZXJyLmRldGFpbHMgfHwgdHlwZW9mIGVyci5kZXRhaWxzID09PSAnc3RyaW5nJylcbiAgICAgICAgPyBlcnIuZGV0YWlscyBhcyBzdHJpbmdcbiAgICAgICAgOiBlcnIuZGV0YWlscy5tZXNzYWdlO1xuICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayhkZXRhaWxNZXNzYWdlKSkge1xuICAgICAgICBjb25zdCBjc3NDbGFzcyA9IG9wdHM/LmRldGFpbHNDc3NDbGFzcyB8fCAnZXJyb3ItZGV0YWlscyc7XG4gICAgICAgIHVzZXJNZXNzYWdlICs9IGA8YnIvPjxzbWFsbCBjbGFzcz1cIiR7Y3NzQ2xhc3N9XCIgdGl0bGU9XCIke2RldGFpbE1lc3NhZ2V9XCI+YDtcbiAgICAgICAgdXNlck1lc3NhZ2UgKz0gZGV0YWlsTWVzc2FnZS5sZW5ndGggPCA3MCA/IGRldGFpbE1lc3NhZ2UgOiBkZXRhaWxNZXNzYWdlLnN1YnN0cmluZygwLCA2NykgKyAnLi4uJztcbiAgICAgICAgdXNlck1lc3NhZ2UgKz0gJzwvc21hbGw+JztcbiAgICAgIH1cbiAgICAgIHN1cGVyLnNldEVycm9yKHVzZXJNZXNzYWdlLCBvcHRzKTtcbiAgICB9XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgYWJzdHJhY3QgbWV0aG9kcyAodG8gb3ZlcnJpZGUpIC0tICovXG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlZ2lzdGVyRm9ybXMoKTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29tcHV0ZVRpdGxlKGRhdGE6IFQpOiBQcm9taXNlPHN0cmluZz47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFZhbHVlKGRhdGE6IFQpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IGZvcm0oKTogRm9ybUdyb3VwO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRGaXJzdEludmFsaWRUYWJJbmRleCgpOiBudW1iZXI7XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgd2FpdFdoaWxlUGVuZGluZyhvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gQXBwRm9ybVV0aWxzLndhaXRXaGlsZVBlbmRpbmcodGhpcywgb3B0cyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0VmFsdWUoKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QganNvbiA9IGF3YWl0IHRoaXMuZ2V0SnNvblZhbHVlVG9TYXZlKCk7XG5cbiAgICBjb25zdCByZXMgPSBuZXcgdGhpcy5kYXRhVHlwZSgpO1xuICAgIHJlcy5mcm9tT2JqZWN0KGpzb24pO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRKc29uVmFsdWVUb1NhdmUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZm9ybS52YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgdGl0bGVcbiAgICpcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyB1cGRhdGVUaXRsZShkYXRhPzogVCkge1xuICAgIGRhdGEgPSBkYXRhIHx8IHRoaXMuZGF0YTtcbiAgICBjb25zdCB0aXRsZSA9IGF3YWl0IHRoaXMuY29tcHV0ZVRpdGxlKGRhdGEpO1xuICAgIHRoaXMuJHRpdGxlLm5leHQodGl0bGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNjcm9sbFRvVG9wKGR1cmF0aW9uPzogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5zY3JvbGxUb1RvcChkdXJhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkPy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qIC0tIHByaXZhdGUgZnVuY3Rpb25zIC0tICovXG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIGZpcnN0IHRhYiB0aGF0IGlzIGludmFsaWRcbiAgICovXG4gIHByaXZhdGUgb3BlbkZpcnN0SW52YWxpZFRhYigpIHtcbiAgICBjb25zdCBpbnZhbGlkVGFiSW5kZXggPSB0aGlzLmdldEZpcnN0SW52YWxpZFRhYkluZGV4KCk7XG4gICAgaWYgKGludmFsaWRUYWJJbmRleCAhPT0gLTEgJiYgdGhpcy5zZWxlY3RlZFRhYkluZGV4ICE9PSBpbnZhbGlkVGFiSW5kZXgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IGludmFsaWRUYWJJbmRleDtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -39,6 +39,9 @@ export class AppPropertiesForm extends AppForm {
39
39
  get value() {
40
40
  return this.formArray.value;
41
41
  }
42
+ get length() {
43
+ return this.formArray?.length || 0;
44
+ }
42
45
  get fieldForms() {
43
46
  return this.formArray.controls;
44
47
  }
@@ -126,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
126
129
  }], chipColor: [{
127
130
  type: Input
128
131
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vcHJvcGVydGllcy9wcm9wZXJ0aWVzLmZvcm0udHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Byb3BlcnRpZXMuZm9ybS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFZLEtBQUssRUFBVSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdkgsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRTlELE9BQU8sRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFJOUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUMsZUFBZSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUV0RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVd2RCxNQUFNLE9BQU8saUJBQWdDLFNBQVEsT0FBWTtJQXdCL0QsWUFDRSxRQUFrQixFQUNSLFdBQStCLEVBQy9CLFdBQWdDLEVBQ2hDLFFBQThCLEVBQzlCLEVBQXFCLEVBQ3JCLFNBQTRCLEVBQ2xCLFlBQWdDO1FBRXBELEtBQUssQ0FBQyxRQUFRLEVBQ1osSUFBSSxDQUFDLENBQUM7UUFSRSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQXFCO1FBQ2hDLGFBQVEsR0FBUixRQUFRLENBQXNCO1FBQzlCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQTdCdEQsd0JBQW1CLEdBQTJCLEVBQUUs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bnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RW50aXR5VXRpbHN9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge0Zvcm1GaWVsZERlZmluaXRpb24sIEZvcm1GaWVsZERlZmluaXRpb25NYXB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7aXNFbXB0eUFycmF5LCBpc05pbH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0RhdGVBZGFwdGVyLCBUaGVtZVBhbGV0dGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtNb21lbnR9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge0xvY2FsU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7QXBwRm9ybX0gZnJvbSAnLi4vZm9ybS5jbGFzcyc7XG5pbXBvcnQge0Zvcm1BcnJheUhlbHBlciwgRm9ybUFycmF5SGVscGVyT3B0aW9uc30gZnJvbSAnLi4vZm9ybS51dGlscyc7XG5pbXBvcnQge0FwcENvbG9ycywgUHJvcGVydHl9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge1Byb3BlcnR5VmFsaWRhdG9yfSBmcm9tICcuL3Byb3BlcnR5LnZhbGlkYXRvcic7XG5pbXBvcnQge1ByZWRlZmluZWRDb2xvcnN9IGZyb20gJ0Bpb25pYy9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXByb3BlcnRpZXMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAncHJvcGVydGllcy5mb3JtLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge3Byb3ZpZGU6IFByb3BlcnR5VmFsaWRhdG9yLCB1c2VDbGFzczogUHJvcGVydHlWYWxpZGF0b3J9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwUHJvcGVydGllc0Zvcm08VCA9IFByb3BlcnR5PiBleHRlbmRzIEFwcEZvcm08VFtdPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZGVmaW5pdGlvbnNNYXBCeUtleTogRm9ybUZpZWxkRGVmaW5pdGlvbk1hcCA9IHt9O1xuICBkZWZpbml0aW9uc0J5SW5kZXg6IHsgW2luZGV4OiBudW1iZXJdOiBGb3JtRmllbGREZWZpbml0aW9uIH0gPSB7fTtcbiAgaGVscGVyOiBGb3JtQXJyYXlIZWxwZXI8UHJvcGVydHk+O1xuXG4gIEBJbnB1dCgpIGZvcm1BcnJheU5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgZm9ybUFycmF5OiBVbnR5cGVkRm9ybUFycmF5O1xuICBASW5wdXQoKSBvcHRpb25zOiBGb3JtQXJyYXlIZWxwZXJPcHRpb25zO1xuICBASW5wdXQoKSBkZWZpbml0aW9uczogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xuICBASW5wdXQoKSBjaGlwQ29sb3I6IFRoZW1lUGFsZXR0ZSB8IFByZWRlZmluZWRDb2xvcnMgPSAnYWNjZW50JztcblxuICBzZXQgdmFsdWUoZGF0YTogVFtdKSB7XG4gICAgdGhpcy5zZXRWYWx1ZShkYXRhKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLmZvcm1BcnJheS52YWx1ZSBhcyBUW107XG4gIH1cblxuICBnZXQgZmllbGRGb3JtcygpOiBVbnR5cGVkRm9ybUdyb3VwW10ge1xuICAgIHJldHVybiB0aGlzLmZvcm1BcnJheS5jb250cm9scyBhcyBVbnR5cGVkRm9ybUdyb3VwW107XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxNb21lbnQ+LFxuICAgIHByb3RlY3RlZCBzZXR0aW5nczogTG9jYWxTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdG9yOiBQcm9wZXJ0eVZhbGlkYXRvcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cERpcjogRm9ybUdyb3VwRGlyZWN0aXZlXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLFxuICAgICAgbnVsbCk7XG5cbiAgICAvL3RoaXMuZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmIChpc0VtcHR5QXJyYXkodGhpcy5kZWZpbml0aW9ucykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBvciBpbnZhbGlkIGF0dHJpYnV0ZSBcXCdkZWZpbml0aW9uc1xcJycpO1xuICAgIH1cblxuICAgIC8vIEZpbGwgb3B0aW9ucyBtYXBcbiAgICB0aGlzLmRlZmluaXRpb25zTWFwQnlLZXkgPSB7fTtcbiAgICB0aGlzLmRlZmluaXRpb25zLmZvckVhY2gobyA9PiB7XG4gICAgICB0aGlzLmRlZmluaXRpb25zTWFwQnlLZXlbby5rZXldID0gbztcbiAgICB9KTtcblxuICAgIC8vIFJldHJpZXZlIHRoZSBmb3JtXG4gICAgY29uc3QgZm9ybSA9ICh0aGlzLmZvcm1BcnJheSAmJiB0aGlzLmZvcm1BcnJheS5wYXJlbnQgYXMgVW50eXBlZEZvcm1Hcm91cCB8fCB0aGlzLmZvcm1Hcm91cERpciAmJiB0aGlzLmZvcm1Hcm91cERpci5mb3JtIHx8IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe30pKTtcbiAgICB0aGlzLnNldEZvcm0oZm9ybSk7XG5cbiAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMuZm9ybUFycmF5IHx8IHRoaXMuZm9ybUFycmF5TmFtZSAmJiBmb3JtLmdldCh0aGlzLmZvcm1BcnJheU5hbWUpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgdGhpcy5mb3JtQXJyYXlOYW1lID0gdGhpcy5mb3JtQXJyYXlOYW1lIHx8IHRoaXMuZm9ybUFycmF5ICYmIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpLmZpbmQoa2V5ID0+IGZvcm0uZ2V0KGtleSkgPT09IHRoaXMuZm9ybUFycmF5KSB8fCAncHJvcGVydGllcyc7XG4gICAgaWYgKCF0aGlzLmZvcm1BcnJheSkge1xuICAgICAgY29uc29sZS53YXJuKGBNaXNzaW5nIGFycmF5IGNvbnRyb2wgJyR7dGhpcy5mb3JtQXJyYXlOYW1lfScuIFdpbGwgY3JlYXRlIGl0IWApO1xuICAgICAgdGhpcy5mb3JtQXJyYXkgPSB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtdKTtcbiAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKHRoaXMuZm9ybUFycmF5TmFtZSwgdGhpcy5mb3JtQXJyYXkpO1xuICAgIH1cblxuICAgIHRoaXMuaGVscGVyID0gbmV3IEZvcm1BcnJheUhlbHBlcjxQcm9wZXJ0eT4oXG4gICAgICB0aGlzLmZvcm1BcnJheSxcbiAgICAgICh2YWx1ZSkgPT4gdGhpcy52YWxpZGF0b3IuZ2V0Rm9ybUdyb3VwKHZhbHVlKSxcbiAgICAgICh2MSwgdjIpID0+ICghdjEgJiYgIXYyKSB8fCB2MS5rZXkgPT09IHYyLmtleSxcbiAgICAgICh2YWx1ZSkgPT4gaXNOaWwodmFsdWUpIHx8IChpc05pbCh2YWx1ZS5rZXkpICYmIGlzTmlsKHZhbHVlLnZhbHVlKSksXG4gICAgICB0aGlzLm9wdGlvbnNcbiAgICApO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIGdldERlZmluaXRpb25BdChpbmRleDogbnVtYmVyKTogRm9ybUZpZWxkRGVmaW5pdGlvbiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLmRlZmluaXRpb25zQnlJbmRleFtpbmRleF07XG4gICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICBkZWZpbml0aW9uID0gdGhpcy51cGRhdGVEZWZpbml0aW9uQXQoaW5kZXgpO1xuICAgICAgdGhpcy5kZWZpbml0aW9uc0J5SW5kZXhbaW5kZXhdID0gZGVmaW5pdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICB1cGRhdGVEZWZpbml0aW9uQXQoaW5kZXg6IG51bWJlcik6IEZvcm1GaWVsZERlZmluaXRpb24ge1xuICAgIGNvbnN0IGtleSA9ICh0aGlzLmZvcm1BcnJheS5hdChpbmRleCkgYXMgVW50eXBlZEZvcm1Hcm91cCkuY29udHJvbHMua2V5LnZhbHVlO1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBrZXkgJiYgdGhpcy5kZWZpbml0aW9uc01hcEJ5S2V5W2tleV0gfHwgbnVsbDtcbiAgICB0aGlzLmRlZmluaXRpb25zQnlJbmRleFtpbmRleF0gPSBkZWZpbml0aW9uOyAvLyB1cGRhdGUgbWFwIGJ5IGluZGV4XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHJlbW92ZUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmhlbHBlci5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5kZWZpbml0aW9uc0J5SW5kZXggPSB7fTsgLy8gY2xlYXIgbWFwIGJ5IGluZGV4XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGlzVW5rbm93bkZpZWxkKGZpZWxkRm9ybTogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGNvbnN0IGtleUNvbnRyb2wgPSBmaWVsZEZvcm0uZ2V0KCdrZXknKTtcbiAgICBjb25zdCBrZXkgPSBrZXlDb250cm9sICYmIGtleUNvbnRyb2wudmFsdWU7XG4gICAgcmV0dXJuIGtleSAmJiBpc05pbCh0aGlzLmRlZmluaXRpb25zTWFwQnlLZXlba2V5XSk7XG4gIH1cblxuICBzZXRWYWx1ZShkYXRhOiBUW10gfCBhbnkpIHtcbiAgICBpZiAoIWRhdGEpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgLy8gVHJhbnNmb3JtIHByb3BlcnRpZXMgbWFwIGludG8gYXJyYXlcbiAgICBjb25zdCB2YWx1ZXMgPSBFbnRpdHlVdGlscy5nZXRNYXBBc0FycmF5PFQ+KGRhdGEpO1xuICAgIHRoaXMuaGVscGVyLnJlc2l6ZSh2YWx1ZXMubGVuZ3RoKTtcbiAgICB0aGlzLmhlbHBlci5mb3JtQXJyYXkucGF0Y2hWYWx1ZSh2YWx1ZXMsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbn1cblxuIiwiXG48IS0tIFByb3BlcnRpZXMgLS0+XG48Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XG4gIDxpb24tZ3JpZCAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIHByb3BlcnRpZXNTa2VsZXRvblwiXG4gICAgICAgICAgICBmb3JtQXJyYXlOYW1lPVwicHJvcGVydGllc1wiIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiA+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tbm8tcGFkZGluZyBpb24tYWxpZ24tc2VsZi1lbmRcIiBzaXplPVwiMTJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sYmFyLXNwYWNlclwiPjwvc3Bhbj5cblxuICAgICAgICA8IS0tIFNob3cgbW9yZSBvcHRpb25zIC0tPlxuICAgICAgICA8aW9uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCIgKm5nSWY9XCJmb3JtQXJyYXk/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU0VUVElOR1MuQlROX1NIT1dfTU9SRV9IRUxQJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGVscGVyLmFkZCgpXCI+XG4gICAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+Q09NTU9OLkJUTl9TSE9XX01PUkU8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8bWF0LWljb24gc2xvdD1cImVuZFwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZEZvcm0gb2YgZmllbGRGb3JtczsgbGV0IGk9aW5kZXhcIj5cbiAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XG5cbiAgICAgICAgPCEtLSBwcm9wZXJ0eSBrZXkgLS0+XG4gICAgICAgIDxpb24tY29sIHNpemU9XCI2XCIgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwibmV2ZXJcIiAqbmdJZj1cImZpZWxkRm9ybXxmb3JtR2V0Q29udHJvbDona2V5JyBhcyBjb250cm9sXCI+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFVFRJTkdTLlBST1BFUlRZX0tFWSd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwidXBkYXRlRGVmaW5pdGlvbkF0KGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCIyMCtpKjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG5cbiAgICAgICAgICAgICAgPCEtLSBXaGVuIG9wdGlvbidzIGtleSBub3QgYSB3ZWxsIGtub3duIG9wdGlvbiwgYWRkIGl0IGFzIGZpcnN0IHNlbGVjdCBvcHRpb24gLS0+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiaXNVbmtub3duRmllbGQoZmllbGRGb3JtKVwiIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAge3tjb250cm9sLnZhbHVlfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRlZmluaXRpb25zXCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cblxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgIWhlbHBlci5pc0xhc3QoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8IS0tIHByb3BlcnR5IHZhbHVlIC0tPlxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCIgcGFkZGluZy1sZWZ0ID5cbiAgICAgICAgICA8YXBwLWZvcm0tZmllbGQgKm5nSWY9XCJnZXREZWZpbml0aW9uQXQoaSk7IGxldCBkZWZpbml0aW9uOyBlbHNlIHVua25vd25WYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0TGFiZWw9XCJuZXZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZpbml0aW9uXT1cImRlZmluaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmllbGRGb3JtfGZvcm1HZXRDb250cm9sOid2YWx1ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFVFRJTkdTLlBST1BFUlRZX1ZBTFVFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGlwQ29sb3JdPVwiY2hpcENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMjAraSoyICsgMVwiPlxuICAgICAgICAgIDwvYXBwLWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN1bmtub3duVmFsdWU+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cIm5ldmVyXCI+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFVFRJTkdTLlBST1BFUlRZX1ZBTFVFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmllbGRGb3JtfGZvcm1HZXRDb250cm9sOid2YWx1ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIjIwK2kqMiArIDFcIj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCIgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fREVMRVRFJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUF0KGkpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gW2hpZGRlbl09XCIhaGVscGVyLmlzTGFzdChpKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJsaWdodFwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fQUREX1BST1BFUlRZJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhlbHBlci5hZGQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDwvaW9uLXJvdz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9pb24tZ3JpZD5cbjwvZm9ybT5cblxuPG5nLXRlbXBsYXRlICNwcm9wZXJ0aWVzU2tlbGV0b24+XG5cbiAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcGVydHlSb3dTa2VsZXRvblwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eVJvd1NrZWxldG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BlcnR5Um93U2tlbGV0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9pb24tZ3JpZD5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwcm9wZXJ0eVJvd1NrZWxldG9uPlxuXG4gIDxpb24tcm93PlxuICAgIDwhLS0gcHJvcGVydHkga2V5IC0tPlxuICAgIDxpb24tY29sPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuPlxuICAgICAgICA8aW9uLXNrZWxldG9uLXRleHQgYW5pbWF0ZWQgc3R5bGU9XCJ3aWR0aDogNjAlXCI+PC9pb24tc2tlbGV0b24tdGV4dD5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcnJvdy1kcm9wZG93blwiIG1hdFN1ZmZpeD48L2lvbi1pY29uPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2lvbi1jb2w+XG4gICAgPCEtLSB2YWx1ZSAtLT5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IGhpZGRlbj5cbiAgICAgICAgPGlvbi1za2VsZXRvbi10ZXh0IGFuaW1hdGVkIHN0eWxlPVwid2lkdGg6IDYwJVwiPjwvaW9uLXNrZWxldG9uLXRleHQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8IS0tIGJ1dHRvbnMgLS0+XG4gICAgPGlvbi1jb2wgc2l6ZT1cIjJcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG48L25nLXRlbXBsYXRlPlxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vcHJvcGVydGllcy9wcm9wZXJ0aWVzLmZvcm0udHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Byb3BlcnRpZXMuZm9ybS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFZLEtBQUssRUFBVSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdkgsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRTlELE9BQU8sRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFJOUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUMsZUFBZSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUV0RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVd2RCxNQUFNLE9BQU8saUJBQWdDLFNBQVEsT0FBWTtJQTJCL0QsWUFDRSxRQUFrQixFQUNSLFdBQStCLEVBQy9CLFdBQWdDLEVBQ2hDLFFBQThCLEVBQzlCLEVBQXFCLEVBQ3JCLFNBQTRCLEVBQ2xCLFlBQWdDO1FBRXBELEtBQUssQ0FBQyxRQUFRLEVBQ1osSUFBSSxDQUFDLENBQUM7UUFSRSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQXFCO1FBQ2hDLGFBQVEsR0FBUixRQUFRLENBQXNCO1FBQzlCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQWhDdEQsd0JBQW1CLEdBQTJCLEVBQUUsQ0FBQztRQUNqRCx1QkFBa0IsR0FBNkMsRUFBRSxDQUFDO1FBT3pELGNBQVMsR0FBb0MsUUFBUSxDQUFDO1FBNkI3RCx1Q0FBdUM7SUFDekMsQ0FBQztJQTVCRCxJQUFJLEtBQUssQ0FBQyxJQUFTO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFZLENBQUM7SUFDckMsQ0FBQztJQUNELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBOEIsQ0FBQztJQUN2RCxDQUFDO0lBaUJELFFBQVE7UUFDTixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxvQkFBb0I7UUFDcEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBMEIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEosSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQXFCLENBQUM7UUFDMUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksWUFBWSxDQUFDO1FBQ3RKLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLElBQUksQ0FBQyxhQUFhLG9CQUFvQixDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMxRDtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQy9CLElBQUksQ0FBQyxTQUFTLEVBQ2QsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUM3QyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQzdDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO1FBRUYsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQztTQUM3QztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzlCLE1BQU0sR0FBRyxHQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBc0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNoRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsc0JBQXNCO1FBQ25FLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQjtRQUNuRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUEyQjtRQUN4QyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLFVBQVUsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQzNDLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQWU7UUFDdEIsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLENBQUMsT0FBTztRQUUxQixzQ0FBc0M7UUFDdEMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELDZCQUE2QjtJQUVuQixZQUFZO1FBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQzs7K0dBekhVLGlCQUFpQjttR0FBakIsaUJBQWlCLDBMQUpqQjtRQUNULEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBQztLQUMxRCxpRENwQkgsKzZKQWlJQTs0RkQzR2EsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNULEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBQztxQkFDMUQ7OzBCQW9DRSxRQUFROzRDQTVCRixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0VudGl0eVV0aWxzfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtGb3JtRmllbGREZWZpbml0aW9uLCBGb3JtRmllbGREZWZpbml0aW9uTWFwfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQge2lzRW1wdHlBcnJheSwgaXNOaWx9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtEYXRlQWRhcHRlciwgVGhlbWVQYWxldHRlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TW9tZW50fSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtMb2NhbFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge0FwcEZvcm19IGZyb20gJy4uL2Zvcm0uY2xhc3MnO1xuaW1wb3J0IHtGb3JtQXJyYXlIZWxwZXIsIEZvcm1BcnJheUhlbHBlck9wdGlvbnN9IGZyb20gJy4uL2Zvcm0udXRpbHMnO1xuaW1wb3J0IHtBcHBDb2xvcnMsIFByb3BlcnR5fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHtQcm9wZXJ0eVZhbGlkYXRvcn0gZnJvbSAnLi9wcm9wZXJ0eS52YWxpZGF0b3InO1xuaW1wb3J0IHtQcmVkZWZpbmVkQ29sb3JzfSBmcm9tICdAaW9uaWMvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9wZXJ0aWVzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJ3Byb3BlcnRpZXMuZm9ybS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtwcm92aWRlOiBQcm9wZXJ0eVZhbGlkYXRvciwgdXNlQ2xhc3M6IFByb3BlcnR5VmFsaWRhdG9yfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnRpZXNGb3JtPFQgPSBQcm9wZXJ0eT4gZXh0ZW5kcyBBcHBGb3JtPFRbXT4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGRlZmluaXRpb25zTWFwQnlLZXk6IEZvcm1GaWVsZERlZmluaXRpb25NYXAgPSB7fTtcbiAgZGVmaW5pdGlvbnNCeUluZGV4OiB7IFtpbmRleDogbnVtYmVyXTogRm9ybUZpZWxkRGVmaW5pdGlvbiB9ID0ge307XG4gIGhlbHBlcjogRm9ybUFycmF5SGVscGVyPFByb3BlcnR5PjtcblxuICBASW5wdXQoKSBmb3JtQXJyYXlOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZvcm1BcnJheTogVW50eXBlZEZvcm1BcnJheTtcbiAgQElucHV0KCkgb3B0aW9uczogRm9ybUFycmF5SGVscGVyT3B0aW9ucztcbiAgQElucHV0KCkgZGVmaW5pdGlvbnM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgQElucHV0KCkgY2hpcENvbG9yOiBUaGVtZVBhbGV0dGUgfCBQcmVkZWZpbmVkQ29sb3JzID0gJ2FjY2VudCc7XG5cbiAgc2V0IHZhbHVlKGRhdGE6IFRbXSkge1xuICAgIHRoaXMuc2V0VmFsdWUoZGF0YSk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkudmFsdWUgYXMgVFtdO1xuICB9XG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXk/Lmxlbmd0aCB8fCAwO1xuICB9XG5cbiAgZ2V0IGZpZWxkRm9ybXMoKTogVW50eXBlZEZvcm1Hcm91cFtdIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkuY29udHJvbHMgYXMgVW50eXBlZEZvcm1Hcm91cFtdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8TW9tZW50PixcbiAgICBwcm90ZWN0ZWQgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRvcjogUHJvcGVydHlWYWxpZGF0b3IsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHtcbiAgICBzdXBlcihpbmplY3RvcixcbiAgICAgIG51bGwpO1xuXG4gICAgLy90aGlzLmRlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoaXNFbXB0eUFycmF5KHRoaXMuZGVmaW5pdGlvbnMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgb3IgaW52YWxpZCBhdHRyaWJ1dGUgXFwnZGVmaW5pdGlvbnNcXCcnKTtcbiAgICB9XG5cbiAgICAvLyBGaWxsIG9wdGlvbnMgbWFwXG4gICAgdGhpcy5kZWZpbml0aW9uc01hcEJ5S2V5ID0ge307XG4gICAgdGhpcy5kZWZpbml0aW9ucy5mb3JFYWNoKG8gPT4ge1xuICAgICAgdGhpcy5kZWZpbml0aW9uc01hcEJ5S2V5W28ua2V5XSA9IG87XG4gICAgfSk7XG5cbiAgICAvLyBSZXRyaWV2ZSB0aGUgZm9ybVxuICAgIGNvbnN0IGZvcm0gPSAodGhpcy5mb3JtQXJyYXkgJiYgdGhpcy5mb3JtQXJyYXkucGFyZW50IGFzIFVudHlwZWRGb3JtR3JvdXAgfHwgdGhpcy5mb3JtR3JvdXBEaXIgJiYgdGhpcy5mb3JtR3JvdXBEaXIuZm9ybSB8fCB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHt9KSk7XG4gICAgdGhpcy5zZXRGb3JtKGZvcm0pO1xuXG4gICAgdGhpcy5mb3JtQXJyYXkgPSB0aGlzLmZvcm1BcnJheSB8fCB0aGlzLmZvcm1BcnJheU5hbWUgJiYgZm9ybS5nZXQodGhpcy5mb3JtQXJyYXlOYW1lKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgIHRoaXMuZm9ybUFycmF5TmFtZSA9IHRoaXMuZm9ybUFycmF5TmFtZSB8fCB0aGlzLmZvcm1BcnJheSAmJiBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5maW5kKGtleSA9PiBmb3JtLmdldChrZXkpID09PSB0aGlzLmZvcm1BcnJheSkgfHwgJ3Byb3BlcnRpZXMnO1xuICAgIGlmICghdGhpcy5mb3JtQXJyYXkpIHtcbiAgICAgIGNvbnNvbGUud2FybihgTWlzc2luZyBhcnJheSBjb250cm9sICcke3RoaXMuZm9ybUFycmF5TmFtZX0nLiBXaWxsIGNyZWF0ZSBpdCFgKTtcbiAgICAgIHRoaXMuZm9ybUFycmF5ID0gdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSk7XG4gICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCh0aGlzLmZvcm1BcnJheU5hbWUsIHRoaXMuZm9ybUFycmF5KTtcbiAgICB9XG5cbiAgICB0aGlzLmhlbHBlciA9IG5ldyBGb3JtQXJyYXlIZWxwZXI8UHJvcGVydHk+KFxuICAgICAgdGhpcy5mb3JtQXJyYXksXG4gICAgICAodmFsdWUpID0+IHRoaXMudmFsaWRhdG9yLmdldEZvcm1Hcm91cCh2YWx1ZSksXG4gICAgICAodjEsIHYyKSA9PiAoIXYxICYmICF2MikgfHwgdjEua2V5ID09PSB2Mi5rZXksXG4gICAgICAodmFsdWUpID0+IGlzTmlsKHZhbHVlKSB8fCAoaXNOaWwodmFsdWUua2V5KSAmJiBpc05pbCh2YWx1ZS52YWx1ZSkpLFxuICAgICAgdGhpcy5vcHRpb25zXG4gICAgKTtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICBnZXREZWZpbml0aW9uQXQoaW5kZXg6IG51bWJlcik6IEZvcm1GaWVsZERlZmluaXRpb24ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdGhpcy5kZWZpbml0aW9uc0J5SW5kZXhbaW5kZXhdO1xuICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgZGVmaW5pdGlvbiA9IHRoaXMudXBkYXRlRGVmaW5pdGlvbkF0KGluZGV4KTtcbiAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUluZGV4W2luZGV4XSA9IGRlZmluaXRpb247XG4gICAgfVxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgdXBkYXRlRGVmaW5pdGlvbkF0KGluZGV4OiBudW1iZXIpOiBGb3JtRmllbGREZWZpbml0aW9uIHtcbiAgICBjb25zdCBrZXkgPSAodGhpcy5mb3JtQXJyYXkuYXQoaW5kZXgpIGFzIFVudHlwZWRGb3JtR3JvdXApLmNvbnRyb2xzLmtleS52YWx1ZTtcbiAgICBjb25zdCBkZWZpbml0aW9uID0ga2V5ICYmIHRoaXMuZGVmaW5pdGlvbnNNYXBCeUtleVtrZXldIHx8IG51bGw7XG4gICAgdGhpcy5kZWZpbml0aW9uc0J5SW5kZXhbaW5kZXhdID0gZGVmaW5pdGlvbjsgLy8gdXBkYXRlIG1hcCBieSBpbmRleFxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICByZW1vdmVBdChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5oZWxwZXIucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMuZGVmaW5pdGlvbnNCeUluZGV4ID0ge307IC8vIGNsZWFyIG1hcCBieSBpbmRleFxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBpc1Vua25vd25GaWVsZChmaWVsZEZvcm06IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBjb25zdCBrZXlDb250cm9sID0gZmllbGRGb3JtLmdldCgna2V5Jyk7XG4gICAgY29uc3Qga2V5ID0ga2V5Q29udHJvbCAmJiBrZXlDb250cm9sLnZhbHVlO1xuICAgIHJldHVybiBrZXkgJiYgaXNOaWwodGhpcy5kZWZpbml0aW9uc01hcEJ5S2V5W2tleV0pO1xuICB9XG5cbiAgc2V0VmFsdWUoZGF0YTogVFtdIHwgYW55KSB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm47IC8vIFNraXBcblxuICAgIC8vIFRyYW5zZm9ybSBwcm9wZXJ0aWVzIG1hcCBpbnRvIGFycmF5XG4gICAgY29uc3QgdmFsdWVzID0gRW50aXR5VXRpbHMuZ2V0TWFwQXNBcnJheTxUPihkYXRhKTtcbiAgICB0aGlzLmhlbHBlci5yZXNpemUodmFsdWVzLmxlbmd0aCk7XG4gICAgdGhpcy5oZWxwZXIuZm9ybUFycmF5LnBhdGNoVmFsdWUodmFsdWVzLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG59XG5cbiIsIlxuPCEtLSBQcm9wZXJ0aWVzIC0tPlxuPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxuICA8aW9uLWdyaWQgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBwcm9wZXJ0aWVzU2tlbGV0b25cIlxuICAgICAgICAgICAgZm9ybUFycmF5TmFtZT1cInByb3BlcnRpZXNcIiBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCIgPlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmcgaW9uLWFsaWduLXNlbGYtZW5kXCIgc2l6ZT1cIjEyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbGJhci1zcGFjZXJcIj48L3NwYW4+XG5cbiAgICAgICAgPCEtLSBTaG93IG1vcmUgb3B0aW9ucyAtLT5cbiAgICAgICAgPGlvbi1idXR0b24gY29sb3I9XCJsaWdodFwiICpuZ0lmPVwiZm9ybUFycmF5Py5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NFVFRJTkdTLkJUTl9TSE9XX01PUkVfSEVMUCd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhlbHBlci5hZGQoKVwiPlxuICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fU0hPV19NT1JFPC9pb24tbGFiZWw+XG4gICAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJlbmRcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGRGb3JtIG9mIGZpZWxkRm9ybXM7IGxldCBpPWluZGV4XCI+XG4gICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxuXG4gICAgICAgIDwhLS0gcHJvcGVydHkga2V5IC0tPlxuICAgICAgICA8aW9uLWNvbCBzaXplPVwiNlwiIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cIm5ldmVyXCIgKm5nSWY9XCJmaWVsZEZvcm18Zm9ybUdldENvbnRyb2w6J2tleScgYXMgY29udHJvbFwiPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRVRUSU5HUy5QUk9QRVJUWV9LRVknfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInVwZGF0ZURlZmluaXRpb25BdChpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMjAraSoyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuXG4gICAgICAgICAgICAgIDwhLS0gV2hlbiBvcHRpb24ncyBrZXkgbm90IGEgd2VsbCBrbm93biBvcHRpb24sIGFkZCBpdCBhcyBmaXJzdCBzZWxlY3Qgb3B0aW9uIC0tPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImlzVW5rbm93bkZpZWxkKGZpZWxkRm9ybSlcIiBbdmFsdWVdPVwiY29udHJvbC52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7Y29udHJvbC52YWx1ZX19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWZpbml0aW9uc1wiIFt2YWx1ZV09XCJpdGVtLmtleVwiPnt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmICFoZWxwZXIuaXNMYXN0KGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgPCEtLSBwcm9wZXJ0eSB2YWx1ZSAtLT5cbiAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiIHBhZGRpbmctbGVmdCA+XG4gICAgICAgICAgPGFwcC1mb3JtLWZpZWxkICpuZ0lmPVwiZ2V0RGVmaW5pdGlvbkF0KGkpOyBsZXQgZGVmaW5pdGlvbjsgZWxzZSB1bmtub3duVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdExhYmVsPVwibmV2ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmaW5pdGlvbl09XCJkZWZpbml0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpZWxkRm9ybXxmb3JtR2V0Q29udHJvbDondmFsdWUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRVRUSU5HUy5QUk9QRVJUWV9WQUxVRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hpcENvbG9yXT1cImNoaXBDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIjIwK2kqMiArIDFcIj5cbiAgICAgICAgICA8L2FwcC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdW5rbm93blZhbHVlPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGZsb2F0TGFiZWw9XCJuZXZlclwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRVRUSU5HUy5QUk9QRVJUWV9WQUxVRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpZWxkRm9ybXxmb3JtR2V0Q29udHJvbDondmFsdWUnXCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCIyMCtpKjIgKyAxXCI+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJsaWdodFwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDT01NT04uQlROX0RFTEVURSd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVBdChpKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIFtoaWRkZW5dPVwiIWhlbHBlci5pc0xhc3QoaSlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwibGlnaHRcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU0VUVElOR1MuQlROX0FERF9QUk9QRVJUWSd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoZWxwZXIuYWRkKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvaW9uLWdyaWQ+XG48L2Zvcm0+XG5cbjxuZy10ZW1wbGF0ZSAjcHJvcGVydGllc1NrZWxldG9uPlxuXG4gIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BlcnR5Um93U2tlbGV0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcGVydHlSb3dTa2VsZXRvblwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eVJvd1NrZWxldG9uXCI+PC9uZy1jb250YWluZXI+XG4gIDwvaW9uLWdyaWQ+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcHJvcGVydHlSb3dTa2VsZXRvbj5cblxuICA8aW9uLXJvdz5cbiAgICA8IS0tIHByb3BlcnR5IGtleSAtLT5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IGhpZGRlbj5cbiAgICAgICAgPGlvbi1za2VsZXRvbi10ZXh0IGFuaW1hdGVkIHN0eWxlPVwid2lkdGg6IDYwJVwiPjwvaW9uLXNrZWxldG9uLXRleHQ+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctZHJvcGRvd25cIiBtYXRTdWZmaXg+PC9pb24taWNvbj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9pb24tY29sPlxuICAgIDwhLS0gdmFsdWUgLS0+XG4gICAgPGlvbi1jb2w+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBoaWRkZW4+XG4gICAgICAgIDxpb24tc2tlbGV0b24tdGV4dCBhbmltYXRlZCBzdHlsZT1cIndpZHRoOiA2MCVcIj48L2lvbi1za2VsZXRvbi10ZXh0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2lvbi1jb2w+XG4gICAgPCEtLSBidXR0b25zIC0tPlxuICAgIDxpb24tY29sIHNpemU9XCIyXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJsaWdodFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cblxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -73,9 +73,9 @@ export class RegisterConfirmPage {
73
73
  }
74
74
  }
75
75
  RegisterConfirmPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RegisterConfirmPage, deps: [{ token: i1.PlatformService }, { token: i2.AccountService }, { token: i3.ActivatedRoute }, { token: i4.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
76
- RegisterConfirmPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RegisterConfirmPage, selector: "app-register-confirm-page", ngImport: i0, template: "<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\">&nbsp;<br /><br /></p>\n <p class=\"hidden-xs\">&nbsp;</p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n", styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,.bottom-banner,ion-text,ion-card img,ion-card,ion-content{text-align:center;display:inline-block}ion-content{--ion-background-color: transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width: 575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card ion-footer ion-button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width: 767px) and (min-width: 576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width: 768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i6.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i6.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i6.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i6.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i6.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i6.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i6.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i6.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i6.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i6.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "directive", type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
76
+ RegisterConfirmPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RegisterConfirmPage, selector: "app-register-confirm-page", ngImport: i0, template: "<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\">&nbsp;<br /><br /></p>\n <p class=\"hidden-xs\">&nbsp;</p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error ion-text-wrap\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n", styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,.bottom-banner,ion-text,ion-card img,ion-card,ion-content{text-align:center;display:inline-block}ion-content{--ion-background-color: transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width: 575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card ion-footer ion-button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width: 767px) and (min-width: 576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width: 768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i6.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i6.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i6.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i6.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i6.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i6.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i6.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i6.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i6.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i6.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "directive", type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
77
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RegisterConfirmPage, decorators: [{
78
78
  type: Component,
79
- args: [{ selector: 'app-register-confirm-page', template: "<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\">&nbsp;<br /><br /></p>\n <p class=\"hidden-xs\">&nbsp;</p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n", styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,.bottom-banner,ion-text,ion-card img,ion-card,ion-content{text-align:center;display:inline-block}ion-content{--ion-background-color: transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width: 575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card ion-footer ion-button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width: 767px) and (min-width: 576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width: 768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}\n"] }]
79
+ args: [{ selector: 'app-register-confirm-page', template: "<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\">&nbsp;<br /><br /></p>\n <p class=\"hidden-xs\">&nbsp;</p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error ion-text-wrap\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n", styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,.bottom-banner,ion-text,ion-card img,ion-card,ion-content{text-align:center;display:inline-block}ion-content{--ion-background-color: transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width: 575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card ion-footer ion-button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width: 767px) and (min-width: 576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width: 768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}\n"] }]
80
80
  }], ctorParameters: function () { return [{ type: i1.PlatformService }, { type: i2.AccountService }, { type: i3.ActivatedRoute }, { type: i4.ConfigService }]; } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItY29uZmlybS5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3JlZ2lzdGVyL3JlZ2lzdGVyLWNvbmZpcm0ucGFnZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9yZWdpc3Rlci9yZWdpc3Rlci1jb25maXJtLnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7QUFTNUMsTUFBTSxPQUFPLG1CQUFtQjtJQVU5QixZQUNVLFFBQXlCLEVBQ3pCLGNBQThCLEVBQzlCLGNBQThCLEVBQzlCLGFBQTRCO1FBSDVCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFadEMsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBR25DLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFHZixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQVFoQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFeEMsZ0JBQWdCO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FB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TyxHQUFHLEtBQUssQ0FBQztTQUN0QjtJQUVILENBQUM7O2lIQS9FVSxtQkFBbUI7cUdBQW5CLG1CQUFtQixpRUNiaEMseXlEQXVEQTs0RkQxQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QWNjb3VudFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge2dldFJhbmRvbUltYWdlfSBmcm9tICcuLi9ob21lL2hvbWUnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge1BsYXRmb3JtU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yZWdpc3Rlci1jb25maXJtLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJ3JlZ2lzdGVyLWNvbmZpcm0ucGFnZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVnaXN0ZXItY29uZmlybS5wYWdlLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckNvbmZpcm1QYWdlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGlzTG9naW46IGJvb2xlYW47XG4gIGxvYWRpbmcgPSB0cnVlO1xuICBlcnJvcjogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBjb250ZW50U3R5bGUgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlKSB7XG5cbiAgICB0aGlzLnBsYXRmb3JtLnJlYWR5KCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9naW4gPSBhY2NvdW50U2VydmljZS5pc0xvZ2luKCk7XG5cbiAgICAgIC8vIFN1YnNjcmlwdGlvbnNcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dpbi5zdWJzY3JpYmUoYWNjb3VudCA9PiB0aGlzLmlzTG9naW4gPSB0cnVlKSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9nb3V0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmlzTG9naW4gPSBmYWxzZSkpO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcC5zdWJzY3JpYmUocGFyYW1zID0+XG4gICAgICAgIHRoaXMuZG9Db25maXJtKHBhcmFtcy5nZXQoJ2VtYWlsJyksIHBhcmFtcy5nZXQoJ2NvZGUnKSlcbiAgICAgICkpO1xuXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YnNjcmliZShjb25maWcgPT4ge1xuXG4gICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmJhY2tncm91bmRJbWFnZXMgJiYgY29uZmlnLmJhY2tncm91bmRJbWFnZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgYmdJbWFnZSA9IGdldFJhbmRvbUltYWdlKGNvbmZpZy5iYWNrZ3JvdW5kSW1hZ2VzKTtcbiAgICAgICAgICB0aGlzLmNvbnRlbnRTdHlsZSA9IHsnYmFja2dyb3VuZC1pbWFnZSc6IGB1cmwoJHtiZ0ltYWdlfSlgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwcmltYXJ5Q29sb3IgPSBjb25maWcucHJvcGVydGllcyAmJiBjb25maWcucHJvcGVydGllc1snc3VtYXJpcy5jb2xvci5wcmltYXJ5J10gfHwgJyMxNDQzOTEnO1xuICAgICAgICAgIHRoaXMuY29udGVudFN0eWxlID0geydiYWNrZ3JvdW5kLWNvbG9yJzogcHJpbWFyeUNvbG9yfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBhc3luYyBkb0NvbmZpcm0oZW1haWw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbWFpbCA9IGVtYWlsO1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmFjY291bnRTZXJ2aWNlLmlzTG9naW4oKSkge1xuICAgICAgICBjb25zdCBhY2NvdW50ID0gdGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50O1xuICAgICAgICBjb25zdCBlbWFpbEFjY291bnQgPSBhY2NvdW50ICYmIGFjY291bnQuZW1haWw7XG4gICAgICAgIGlmIChlbWFpbCAhPSBlbWFpbEFjY291bnQpIHtcbiAgICAgICAgICAvLyBOb3Qgc2FtZSBlbWFpbCA9PiBsb2dvdXQsIHRoZW4gcmV0cnlcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjY291bnRTZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmRvQ29uZmlybShlbWFpbCwgY29kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2VuZCB0aGUgY29uZmlybWF0aW9uIGNvZGVcbiAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMuYWNjb3VudFNlcnZpY2UuY29uZmlybUVtYWlsKGVtYWlsLCBjb2RlKTtcbiAgICAgIGlmIChjb25maXJtZWQgJiYgdGhpcy5pc0xvZ2luKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWNjb3VudFNlcnZpY2UucmVsb2FkKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIC8vdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoXCIvY29uZmlybS9cIiArIGVtYWlsICsgXCIvXCIpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9yID0gZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycjtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cblxuICB9XG59XG4iLCI8YXBwLXRvb2xiYXIgW3RpdGxlXT1cIidSRUdJU1RFUi5DT05GSVJNRUQuVElUTEUnfHRyYW5zbGF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiPlxuPC9hcHAtdG9vbGJhcj5cblxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJiZy1pbWFnZS1jb3ZlciBjZW50ZXIgaW9uLXBhZGRpbmdcIiBbbmdTdHlsZV09XCJjb250ZW50U3R5bGVcIj5cblxuICA8cCBjbGFzcz1cImhpZGRlbi14cyBpb24tcGFkZGluZ1wiPiZuYnNwOzxiciAvPjxiciAvPjwvcD5cbiAgPHAgY2xhc3M9XCJoaWRkZW4teHNcIj4mbmJzcDs8L3A+XG5cblxuICA8aW9uLWNhcmQ+XG4gICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgICAgPGg0IHRyYW5zbGF0ZT5SRUdJU1RFUi5DT05GSVJNRUQuTE9BRElORzwvaDQ+XG4gICAgICAgICAgPHA+PGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+PC9wPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIGVycm9yIC0tPlxuICAgICAgICA8aW9uLWl0ZW0gKm5nSWY9XCIhbG9hZGluZyAmJiBlcnJvclwiPlxuICAgICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvcnx0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWVycm9yXCI+XG4gICAgICAgIDxoMz5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFya1wiPjwvaW9uLWljb24+XG4gICAgICAgICAgPGIgdHJhbnNsYXRlPlJFR0lTVEVSLkNPTkZJUk1FRC5TVUJfVElUTEU8L2I+XG4gICAgICAgIDwvaDM+XG5cbiAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiJ1JFR0lTVEVSLkNPTkZJUk1FRC5TVUNDRVNTJ3x0cmFuc2xhdGU6IHtlbWFpbDogZW1haWx9XCI+PC9wPlxuICAgICAgICAgIDxwICpuZ0lmPVwiIWlzTG9naW5cIiBbaW5uZXJIVE1MXT1cIidSRUdJU1RFUi5DT05GSVJNRUQuTE9HSU5fSEVMUCd8dHJhbnNsYXRlXCI+PC9wPlxuICAgICAgICA8L2lvbi10ZXh0PlxuXG4gICAgICA8L2Rpdj5cblxuICAgIDwvaW9uLWNhcmQtY29udGVudD5cblxuICAgIDxpb24tZm9vdGVyICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImZ1bGxcIiBjb2xvcj1cInByaW1hcnlcIiBbcm91dGVyTGlua109XCJbJy9hY2NvdW50J11cIiAqbmdJZj1cIiFpc0xvZ2luXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwibG9nLWluXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICAgICAgPHNwYW4gdHJhbnNsYXRlPkFVVEguQlROX0xPR0lOPC9zcGFuPlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJmdWxsXCIgY29sb3I9XCJzZWNvbmRhcnlcIiBbcm91dGVyTGlua109XCJbJy9hY2NvdW50J11cIiAqbmdJZj1cImlzTG9naW5cIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjb250YWN0XCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICAgICAgPHNwYW4gdHJhbnNsYXRlPkhPTUUuQlROX01ZX0FDQ09VTlQ8L3NwYW4+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tZm9vdGVyPlxuICA8L2lvbi1jYXJkPlxuXG48L2lvbi1jb250ZW50PlxuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItY29uZmlybS5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3JlZ2lzdGVyL3JlZ2lzdGVyLWNvbmZpcm0ucGFnZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9yZWdpc3Rlci9yZWdpc3Rlci1jb25maXJtLnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7QUFTNUMsTUFBTSxPQUFPLG1CQUFtQjtJQVU5QixZQUNVLFFBQXlCLEVBQ3pCLGNBQThCLEVBQzlCLGNBQThCLEVBQzlCLGFBQTRCO1FBSDVCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFadEMsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBR25DLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFHZixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQVFoQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFeEMsZ0JBQWdCO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FB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TyxHQUFHLEtBQUssQ0FBQztTQUN0QjtJQUVILENBQUM7O2lIQS9FVSxtQkFBbUI7cUdBQW5CLG1CQUFtQixpRUNiaEMsdXpEQXVEQTs0RkQxQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QWNjb3VudFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge2dldFJhbmRvbUltYWdlfSBmcm9tICcuLi9ob21lL2hvbWUnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge1BsYXRmb3JtU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yZWdpc3Rlci1jb25maXJtLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJ3JlZ2lzdGVyLWNvbmZpcm0ucGFnZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVnaXN0ZXItY29uZmlybS5wYWdlLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckNvbmZpcm1QYWdlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGlzTG9naW46IGJvb2xlYW47XG4gIGxvYWRpbmcgPSB0cnVlO1xuICBlcnJvcjogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBjb250ZW50U3R5bGUgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlKSB7XG5cbiAgICB0aGlzLnBsYXRmb3JtLnJlYWR5KCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9naW4gPSBhY2NvdW50U2VydmljZS5pc0xvZ2luKCk7XG5cbiAgICAgIC8vIFN1YnNjcmlwdGlvbnNcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dpbi5zdWJzY3JpYmUoYWNjb3VudCA9PiB0aGlzLmlzTG9naW4gPSB0cnVlKSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9nb3V0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmlzTG9naW4gPSBmYWxzZSkpO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcC5zdWJzY3JpYmUocGFyYW1zID0+XG4gICAgICAgIHRoaXMuZG9Db25maXJtKHBhcmFtcy5nZXQoJ2VtYWlsJyksIHBhcmFtcy5nZXQoJ2NvZGUnKSlcbiAgICAgICkpO1xuXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YnNjcmliZShjb25maWcgPT4ge1xuXG4gICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmJhY2tncm91bmRJbWFnZXMgJiYgY29uZmlnLmJhY2tncm91bmRJbWFnZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgYmdJbWFnZSA9IGdldFJhbmRvbUltYWdlKGNvbmZpZy5iYWNrZ3JvdW5kSW1hZ2VzKTtcbiAgICAgICAgICB0aGlzLmNvbnRlbnRTdHlsZSA9IHsnYmFja2dyb3VuZC1pbWFnZSc6IGB1cmwoJHtiZ0ltYWdlfSlgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwcmltYXJ5Q29sb3IgPSBjb25maWcucHJvcGVydGllcyAmJiBjb25maWcucHJvcGVydGllc1snc3VtYXJpcy5jb2xvci5wcmltYXJ5J10gfHwgJyMxNDQzOTEnO1xuICAgICAgICAgIHRoaXMuY29udGVudFN0eWxlID0geydiYWNrZ3JvdW5kLWNvbG9yJzogcHJpbWFyeUNvbG9yfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBhc3luYyBkb0NvbmZpcm0oZW1haWw6IHN0cmluZywgY29kZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbWFpbCA9IGVtYWlsO1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmFjY291bnRTZXJ2aWNlLmlzTG9naW4oKSkge1xuICAgICAgICBjb25zdCBhY2NvdW50ID0gdGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50O1xuICAgICAgICBjb25zdCBlbWFpbEFjY291bnQgPSBhY2NvdW50ICYmIGFjY291bnQuZW1haWw7XG4gICAgICAgIGlmIChlbWFpbCAhPSBlbWFpbEFjY291bnQpIHtcbiAgICAgICAgICAvLyBOb3Qgc2FtZSBlbWFpbCA9PiBsb2dvdXQsIHRoZW4gcmV0cnlcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjY291bnRTZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmRvQ29uZmlybShlbWFpbCwgY29kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2VuZCB0aGUgY29uZmlybWF0aW9uIGNvZGVcbiAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMuYWNjb3VudFNlcnZpY2UuY29uZmlybUVtYWlsKGVtYWlsLCBjb2RlKTtcbiAgICAgIGlmIChjb25maXJtZWQgJiYgdGhpcy5pc0xvZ2luKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWNjb3VudFNlcnZpY2UucmVsb2FkKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIC8vdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoXCIvY29uZmlybS9cIiArIGVtYWlsICsgXCIvXCIpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9yID0gZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycjtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cblxuICB9XG59XG4iLCI8YXBwLXRvb2xiYXIgW3RpdGxlXT1cIidSRUdJU1RFUi5DT05GSVJNRUQuVElUTEUnfHRyYW5zbGF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiPlxuPC9hcHAtdG9vbGJhcj5cblxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJiZy1pbWFnZS1jb3ZlciBjZW50ZXIgaW9uLXBhZGRpbmdcIiBbbmdTdHlsZV09XCJjb250ZW50U3R5bGVcIj5cblxuICA8cCBjbGFzcz1cImhpZGRlbi14cyBpb24tcGFkZGluZ1wiPiZuYnNwOzxiciAvPjxiciAvPjwvcD5cbiAgPHAgY2xhc3M9XCJoaWRkZW4teHNcIj4mbmJzcDs8L3A+XG5cblxuICA8aW9uLWNhcmQ+XG4gICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgICAgPGg0IHRyYW5zbGF0ZT5SRUdJU1RFUi5DT05GSVJNRUQuTE9BRElORzwvaDQ+XG4gICAgICAgICAgPHA+PGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+PC9wPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIGVycm9yIC0tPlxuICAgICAgICA8aW9uLWl0ZW0gKm5nSWY9XCIhbG9hZGluZyAmJiBlcnJvclwiPlxuICAgICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yIGlvbi10ZXh0LXdyYXBcIiBbaW5uZXJIVE1MXT1cImVycm9yfHRyYW5zbGF0ZVwiPjwvaW9uLWxhYmVsPlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3JcIj5cbiAgICAgICAgPGgzPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8YiB0cmFuc2xhdGU+UkVHSVNURVIuQ09ORklSTUVELlNVQl9USVRMRTwvYj5cbiAgICAgICAgPC9oMz5cblxuICAgICAgICA8aW9uLXRleHQ+XG4gICAgICAgICAgPHAgW2lubmVySFRNTF09XCInUkVHSVNURVIuQ09ORklSTUVELlNVQ0NFU1MnfHRyYW5zbGF0ZToge2VtYWlsOiBlbWFpbH1cIj48L3A+XG4gICAgICAgICAgPHAgKm5nSWY9XCIhaXNMb2dpblwiIFtpbm5lckhUTUxdPVwiJ1JFR0lTVEVSLkNPTkZJUk1FRC5MT0dJTl9IRUxQJ3x0cmFuc2xhdGVcIj48L3A+XG4gICAgICAgIDwvaW9uLXRleHQ+XG5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9pb24tY2FyZC1jb250ZW50PlxuXG4gICAgPGlvbi1mb290ZXIgKm5nSWY9XCIhbG9hZGluZ1wiPlxuICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiZnVsbFwiIGNvbG9yPVwicHJpbWFyeVwiIFtyb3V0ZXJMaW5rXT1cIlsnL2FjY291bnQnXVwiICpuZ0lmPVwiIWlzTG9naW5cIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJsb2ctaW5cIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxuICAgICAgICA8c3BhbiB0cmFuc2xhdGU+QVVUSC5CVE5fTE9HSU48L3NwYW4+XG4gICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImZ1bGxcIiBjb2xvcj1cInNlY29uZGFyeVwiIFtyb3V0ZXJMaW5rXT1cIlsnL2FjY291bnQnXVwiICpuZ0lmPVwiaXNMb2dpblwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvbnRhY3RcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxuICAgICAgICA8c3BhbiB0cmFuc2xhdGU+SE9NRS5CVE5fTVlfQUNDT1VOVDwvc3Bhbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1mb290ZXI+XG4gIDwvaW9uLWNhcmQ+XG5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
@@ -23616,10 +23616,10 @@ class RegisterConfirmPage {
23616
23616
  }
23617
23617
  }
23618
23618
  RegisterConfirmPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RegisterConfirmPage, deps: [{ token: PlatformService }, { token: AccountService }, { token: i1$6.ActivatedRoute }, { token: ConfigService }], target: i0.ɵɵFactoryTarget.Component });
23619
- RegisterConfirmPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RegisterConfirmPage, selector: "app-register-confirm-page", ngImport: i0, template: "<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\">&nbsp;<br /><br /></p>\n <p class=\"hidden-xs\">&nbsp;</p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n", styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,.bottom-banner,ion-text,ion-card img,ion-card,ion-content{text-align:center;display:inline-block}ion-content{--ion-background-color: transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width: 575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card ion-footer ion-button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width: 767px) and (min-width: 576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width: 768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i1.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "directive", type: i1$2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "directive", type: i1$6.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
23619
+ RegisterConfirmPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: RegisterConfirmPage, selector: "app-register-confirm-page", ngImport: i0, template: "<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\">&nbsp;<br /><br /></p>\n <p class=\"hidden-xs\">&nbsp;</p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error ion-text-wrap\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n", styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,.bottom-banner,ion-text,ion-card img,ion-card,ion-content{text-align:center;display:inline-block}ion-content{--ion-background-color: transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width: 575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card ion-footer ion-button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width: 767px) and (min-width: 576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width: 768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i1.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "directive", type: i1$2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "directive", type: i1$6.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
23620
23620
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RegisterConfirmPage, decorators: [{
23621
23621
  type: Component,
23622
- args: [{ selector: 'app-register-confirm-page', template: "<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\">&nbsp;<br /><br /></p>\n <p class=\"hidden-xs\">&nbsp;</p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n", styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,.bottom-banner,ion-text,ion-card img,ion-card,ion-content{text-align:center;display:inline-block}ion-content{--ion-background-color: transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width: 575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card ion-footer ion-button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width: 767px) and (min-width: 576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width: 768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}\n"] }]
23622
+ args: [{ selector: 'app-register-confirm-page', template: "<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\">&nbsp;<br /><br /></p>\n <p class=\"hidden-xs\">&nbsp;</p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error ion-text-wrap\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n", styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,.bottom-banner,ion-text,ion-card img,ion-card,ion-content{text-align:center;display:inline-block}ion-content{--ion-background-color: transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:#ffffffb3;min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width: 575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card ion-footer ion-button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width: 767px) and (min-width: 576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width: 768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}\n"] }]
23623
23623
  }], ctorParameters: function () { return [{ type: PlatformService }, { type: AccountService }, { type: i1$6.ActivatedRoute }, { type: ConfigService }]; } });
23624
23624
 
23625
23625
  class AppRegisterModule {
@@ -24253,6 +24253,10 @@ class AppPropertiesForm extends AppForm {
24253
24253
  get value() {
24254
24254
  return this.formArray.value;
24255
24255
  }
24256
+ get length() {
24257
+ var _a;
24258
+ return ((_a = this.formArray) === null || _a === void 0 ? void 0 : _a.length) || 0;
24259
+ }
24256
24260
  get fieldForms() {
24257
24261
  return this.formArray.controls;
24258
24262
  }
@@ -29418,7 +29422,7 @@ class AppEntityEditorModal extends AppTabEditor {
29418
29422
  return !this._enabled;
29419
29423
  }
29420
29424
  get isOnFieldMode() {
29421
- return this.settings.isOnFieldMode(this._usageMode);
29425
+ return this.settings.isOnFieldMode(this.usageMode);
29422
29426
  }
29423
29427
  get saving() {
29424
29428
  return this.savingSubject.value;
@@ -29440,6 +29444,7 @@ class AppEntityEditorModal extends AppTabEditor {
29440
29444
  ngOnInit() {
29441
29445
  // Default values
29442
29446
  this.mobile = isNotNil(this.mobile) ? this.mobile : this.settings.mobile;
29447
+ this.usageMode = this.usageMode || this.settings.usageMode;
29443
29448
  super.ngOnInit();
29444
29449
  // Register forms
29445
29450
  this.registerForms();