@gravitee/ui-particles-angular 12.0.0 → 12.0.1-fix-json-schema-aa9bfa4

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.
@@ -1428,7 +1428,7 @@
1428
1428
  </symbol>
1429
1429
  <symbol fill="none" viewBox="0 0 24 24" id="product-cloud">
1430
1430
  <g>
1431
- <path stroke="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M6.85988 8.00979C6.74074 8.00329 6.62076 8 6.5 8C2.91015 8 0 10.9101 0 14.5C0 17.9216 2.64378 20.7447 6 21H20C22.2822 20.5367 24 18.419 24 16C24 13.9495 22.7657 12.1873 20.9995 11.4158C20.9544 7.31248 17.614 4 13.5 4C10.618 4 8.11568 5.62555 6.85988 8.00979ZM19.3063 19L19.6021 18.94C20.9706 18.6622 22 17.449 22 16C22 14.7728 21.2629 13.7133 20.199 13.2486L19.0139 12.731L18.9997 11.4378C18.9666 8.42918 16.5168 6 13.5 6C11.3893 6 9.55301 7.18833 8.62943 8.94183L8.03167 10.0767L6.7509 10.0068C6.66804 10.0023 6.58439 10 6.5 10C4.01472 10 2 12.0147 2 14.5C2 16.8679 3.8302 18.8102 6.1517 18.9868L6.32501 19H19.3063Z" fill="white"/>
1431
+ <path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M6.85988 8.00979C6.74074 8.00329 6.62076 8 6.5 8C2.91015 8 0 10.9101 0 14.5C0 17.9216 2.64378 20.7447 6 21H20C22.2822 20.5367 24 18.419 24 16C24 13.9495 22.7657 12.1873 20.9995 11.4158C20.9544 7.31248 17.614 4 13.5 4C10.618 4 8.11568 5.62555 6.85988 8.00979ZM19.3063 19L19.6021 18.94C20.9706 18.6622 22 17.449 22 16C22 14.7728 21.2629 13.7133 20.199 13.2486L19.0139 12.731L18.9997 11.4378C18.9666 8.42918 16.5168 6 13.5 6C11.3893 6 9.55301 7.18833 8.62943 8.94183L8.03167 10.0767L6.7509 10.0068C6.66804 10.0023 6.58439 10 6.5 10C4.01472 10 2 12.0147 2 14.5C2 16.8679 3.8302 18.8102 6.1517 18.9868L6.32501 19H19.3063Z"/>
1432
1432
  </g>
1433
1433
  </symbol>
1434
1434
  <symbol fill="none" viewBox="0 0 24 24" id="prohibition">
@@ -13,9 +13,9 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Component, EventEmitter, Host, HostBinding, Input, Optional, Output, } from '@angular/core';
16
+ import { ChangeDetectionStrategy, Component, EventEmitter, Host, HostBinding, Input, Optional, Output, } from '@angular/core';
17
17
  import { UntypedFormGroup } from '@angular/forms';
18
- import { cloneDeep, isEmpty, isObject } from 'lodash';
18
+ import { cloneDeep, isEmpty, isEqual, isObject } from 'lodash';
19
19
  import { debounceTime, delay, distinctUntilChanged, filter, map, startWith, take, takeUntil, tap } from 'rxjs/operators';
20
20
  import { merge, ReplaySubject, Subject } from 'rxjs';
21
21
  import { GIO_FORM_FOCUS_INVALID_IGNORE_SELECTOR } from '../gio-form-focus-first-invalid/gio-form-focus-first-invalid-ignore.directive';
@@ -95,12 +95,16 @@ export class GioFormJsonSchemaComponent {
95
95
  this.ngControl?.control?.addAsyncValidators(() => {
96
96
  return this.isValid$.pipe(take(1), map(isValid => (isValid ? null : { invalid: true })), takeUntil(this.unsubscribe$));
97
97
  });
98
- // Init control value with default value without emit event
99
- this.formGroup.valueChanges.pipe(take(1), takeUntil(this.unsubscribe$)).subscribe(value => {
98
+ // Sync control value with default value (without emit event) as long as the component is not ready
99
+ // When formly is initialised, it emits several values as it builds up step by step.
100
+ this.formGroup.valueChanges
101
+ .pipe(distinctUntilChanged(isEqual), tap(value => {
100
102
  this.ngControl?.control?.reset(value, { emitEvent: false });
101
103
  this.changeDetectorRef.markForCheck();
102
104
  this.changeDetectorRef.detectChanges();
103
- });
105
+ }), takeUntil(this.ready), takeUntil(this.unsubscribe$))
106
+ .subscribe();
107
+ // Avoid ExpressionChangedAfterItHasBeenCheckedError on project
104
108
  this.changeDetectorRef.markForCheck();
105
109
  this.changeDetectorRef.detectChanges();
106
110
  // Subscribe to state changes to manage touches, status and value
@@ -181,11 +185,11 @@ export class GioFormJsonSchemaComponent {
181
185
  this.stateChanges$.next();
182
186
  }
183
187
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioFormJsonSchemaComponent, deps: [{ token: i1.GioFormlyJsonSchemaService }, { token: i0.ElementRef }, { token: i2.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i3.NgControl, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
184
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: { jsonSchema: "jsonSchema", options: "options" }, outputs: { ready: "ready" }, host: { properties: { "attr.gioFormFocusInvalidIgnore": "this.gioFormFocusInvalidIgnore" } }, usesOnChanges: true, ngImport: i0, template: `<formly-form *ngIf="formGroup" [fields]="fields" [options]="options" [form]="formGroup" [model]="model"></formly-form>`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }] }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: { jsonSchema: "jsonSchema", options: "options" }, outputs: { ready: "ready" }, host: { properties: { "attr.gioFormFocusInvalidIgnore": "this.gioFormFocusInvalidIgnore" } }, usesOnChanges: true, ngImport: i0, template: `<formly-form *ngIf="formGroup" [fields]="fields" [options]="options" [form]="formGroup" [model]="model"></formly-form>`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
185
189
  }
186
190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioFormJsonSchemaComponent, decorators: [{
187
191
  type: Component,
188
- args: [{ selector: 'gio-form-json-schema', template: `<formly-form *ngIf="formGroup" [fields]="fields" [options]="options" [form]="formGroup" [model]="model"></formly-form>` }]
192
+ args: [{ selector: 'gio-form-json-schema', template: `<formly-form *ngIf="formGroup" [fields]="fields" [options]="options" [form]="formGroup" [model]="model"></formly-form>`, changeDetection: ChangeDetectionStrategy.OnPush }]
189
193
  }], ctorParameters: () => [{ type: i1.GioFormlyJsonSchemaService }, { type: i0.ElementRef }, { type: i2.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: i3.NgControl, decorators: [{
190
194
  type: Host
191
195
  }, {
@@ -200,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
200
204
  }], ready: [{
201
205
  type: Output
202
206
  }] } });
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tanNvbi1zY2hlbWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcGFydGljbGVzLWFuZ3VsYXIvc3JjL2xpYi9naW8tZm9ybS1qc29uLXNjaGVtYS9naW8tZm9ybS1qc29uLXNjaGVtYS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixJQUFJLEVBQ0osV0FBVyxFQUNYLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsZ0JBQWdCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6SCxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHckQsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sK0VBQStFLENBQUM7Ozs7Ozs7QUFVdkksTUFBTSxPQUFPLDBCQUEwQjtJQUM5QixNQUFNLENBQUMsYUFBYSxDQUFDLFVBQXlCO1FBQ25ELE1BQU0sVUFBVSxHQUFHLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQVUsQ0FBQztRQUV2RixPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFF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XG4gKiBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3QsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Hcm91cCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZvcm1PcHRpb25zIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRW1wdHksIGlzT2JqZWN0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGVsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG1lcmdlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5cbmltcG9ydCB7IEdJT19GT1JNX0ZPQ1VTX0lOVkFMSURfSUdOT1JFX1NFTEVDVE9SIH0gZnJvbSAnLi4vZ2lvLWZvcm0tZm9jdXMtZmlyc3QtaW52YWxpZC9naW8tZm9ybS1mb2N1cy1maXJzdC1pbnZhbGlkLWlnbm9yZS5kaXJlY3RpdmUnO1xuXG5pbXBvcnQgeyBHaW9Kc29uU2NoZW1hIH0gZnJvbSAnLi9tb2RlbC9HaW9Kc29uU2NoZW1hJztcbmltcG9ydCB7IEdpb0Zvcm1seUpzb25TY2hlbWFTZXJ2aWNlIH0gZnJvbSAnLi9naW8tZm9ybWx5LWpzb24tc2NoZW1hLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tZm9ybS1qc29uLXNjaGVtYScsXG4gIHRlbXBsYXRlOiBgPGZvcm1seS1mb3JtICpuZ0lmPVwiZm9ybUdyb3VwXCIgW2ZpZWxkc109XCJmaWVsZHNcIiBbb3B0aW9uc109XCJvcHRpb25zXCIgW2Zvcm1dPVwiZm9ybUdyb3VwXCIgW21vZGVsXT1cIm1vZGVsXCI+PC9mb3JtbHktZm9ybT5gLFxuICBzdHlsZVVybHM6IFsnLi9naW8tZm9ybS1qc29uLXNjaGVtYS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Gb3JtSnNvblNjaGVtYUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHN0YXRpYyBpc0Rpc3BsYXlhYmxlKGpzb25TY2hlbWE6IEdpb0pzb25TY2hlbWEpOiBib29sZWFuIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gWydwcm9wZXJ0aWVzJywgJ29uZU9mJywgJ2FueU9mJywgJ2FsbE9mJywgJyRyZWYnLCAnaXRlbXMnXSBhcyBjb25zdDtcblxuICAgIHJldHVybiBpc09iamVjdChqc29uU2NoZW1hKSAmJiBwcm9wZXJ0aWVzLnNvbWUocHJvcGVydHkgPT4gIWlzRW1wdHkoanNvblNjaGVtYVtwcm9wZXJ0eV0pKTtcbiAgfVxuICBwcml2YXRlIHVuc3Vic2NyaWJlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKGBhdHRyLiR7R0lPX0ZPUk1fRk9DVVNfSU5WQUxJRF9JR05PUkVfU0VMRUNUT1J9YClcbiAgcHJpdmF0ZSBnaW9Gb3JtRm9jdXNJbnZhbGlkSWdub3JlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGpzb25TY2hlbWEoanNvblNjaGVtYTogR2lvSnNvblNjaGVtYSkge1xuICAgIGlmIChpc09iamVjdChqc29uU2NoZW1hKSkge1xuICAgICAgdGhpcy5maWVsZHMgPSBbdGhpcy5naW9Gb3JtbHlKc29uU2NoZW1hLnRvRm9ybWx5RmllbGRDb25maWcoanNvblNjaGVtYSldO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge307XG5cbiAgLy8gV2hlbiB0cnVlIHRoZSBmb3JtIGlzIHJlYWR5IGFuZCBjb250cm9sIHN0YXR1cyBhcmUgdXAtdG8tZGF0ZVxuICAvLyBVc2VmdWwgdG8ga25vdyB3aGVuIGluaXRpYWwgY29udHJvbCBzdGF0dXMgY2FuIGJlIHVzZWRcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIGlzUmVhZHkgPSBmYWxzZTtcblxuICBwdWJsaWMgbW9kZWw6IHVua25vd24gPSB7fTtcblxuICBwdWJsaWMgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG5cbiAgcHVibGljIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgX29uQ2hhbmdlOiAodmFsdWU6IHVua25vd24gfCBudWxsKSA9PiB2b2lkID0gKCkgPT4gKHt9KTtcblxuICBwdWJsaWMgX29uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG5cbiAgcHJpdmF0ZSB0b3VjaGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpOyAvLyBXYWl0IEpzb25TY2hlbWEgdG8gYmUgbG9hZGVkIHRvIGNoZWNrIGlmIGl0J3MgdmFsaWRcblxuICBwcml2YXRlIHN0YXRlQ2hhbmdlcyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ2lvRm9ybWx5SnNvblNjaGVtYTogR2lvRm9ybWx5SnNvblNjaGVtYVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZtOiBGb2N1c01vbml0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEhvc3QoKSBAT3B0aW9uYWwoKSBwdWJsaWMgcmVhZG9ubHkgbmdDb250cm9sPzogTmdDb250cm9sLFxuICApIHtcbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICAvLyBTZXR0aW5nIHRoZSB2YWx1ZSBhY2Nlc3NvciBkaXJlY3RseSAoaW5zdGVhZCBvZiB1c2luZ1xuICAgICAgLy8gdGhlIHByb3ZpZGVycyBgTkdfVkFMVUVfQUNDRVNTT1JgKSB0byBhdm9pZCBydW5uaW5nIGludG8gYSBjaXJjdWxhciBpbXBvcnQuXG4gICAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgLy8gV2hlbiB0aGUgdXNlciBpbnRlcmFjdCB3aXRoIHRoZSBmb3JtLCBtYXJrIGl0IGFzIHRvdWNoZWRcbiAgICBmbS5tb25pdG9yKGVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuanNvblNjaGVtYSkge1xuICAgICAgdGhpcy5pc1JlYWR5ID0gZmFsc2U7XG4gICAgICB0aGlzLnJlYWR5Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXaGVuIHRoZSBwYXJlbnQgZm9ybSBpcyB0b3VjaGVkLCBtYXJrIGFsbCB0aGUgc3ViIGZvcm1Hcm91cCBhcyB0b3VjaGVkIGlmIG5vdCBhbHJlYWR5IHRvdWNoZWRcbiAgICBjb25zdCBwYXJlbnRDb250cm9sID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnBhcmVudDtcbiAgICBwYXJlbnRDb250cm9sPy5zdGF0dXNDaGFuZ2VzXG4gICAgICA/LnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiBwYXJlbnRDb250cm9sPy50b3VjaGVkKSxcbiAgICAgICAgZmlsdGVyKHRvdWNoZWQgPT4gdG91Y2hlZCA9PT0gdHJ1ZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzJC5uZXh0KCk7XG4gICAgICB9KTtcbiAgICAvLyBBZGQgYXN5bmMgdmFsaWRhdG9yIHRvIHRoZSBwYXJlbnRcbiAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uYWRkQXN5bmNWYWxpZGF0b3JzKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQkLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcChpc1ZhbGlkID0+IChpc1ZhbGlkID8gbnVsbCA6IHsgaW52YWxpZDogdHJ1ZSB9KSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gSW5pdCBjb250cm9sIHZhbHVlIHdpdGggZGVmYXVsdCB2YWx1ZSB3aXRob3V0IGVtaXQgZXZlbnRcbiAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlKDEpLCB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnJlc2V0KHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byBzdGF0ZSBjaGFuZ2VzIHRvIG1hbmFnZSB0b3VjaGVzLCBzdGF0dXMgYW5kIHZhbHVlXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB7IHN0YXR1cywgdmFsdWUsIHRvdWNoZWQgfSA9IHRoaXMuZm9ybUdyb3VwO1xuICAgICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnVkFMSUQnKSB7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdJTlZBTElEJykge1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodG91Y2hlZCAmJiAhdGhpcy50b3VjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMudG91Y2hlZCkge1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGRlbGF5KDApLFxuICAgICAgICAvLyBLZWVwIGF0IHRoZSBlbmRcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFmdGVyIHRoZSBmaXJzdCBzdGF0ZSBjaGFuZ2UsIHRoZSBmb3JtIGlzIHJlYWR5XG4gICAgICAgIGlmICghdGhpcy5pc1JlYWR5KSB7XG4gICAgICAgICAgdGhpcy5pc1JlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBHcm91cCBhbGwgdmFsdWVDaGFuZ2VzIGV2ZW50cyBlbWl0IGJ5IGZvcm1seSBpbiBhIHNpbmdsZSBvbmVcbiAgICBtZXJnZSh0aGlzLmZvcm1Hcm91cC5zdGF0dXNDaGFuZ2VzLCB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gRm9yY2UgZmlzdCBzdGF0ZUNoYW5nZXMkXG4gICAgICAgIHN0YXJ0V2l0aCh7fSksXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzJC5uZXh0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmZtLnN0b3BNb25pdG9yaW5nKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbCA9IGNsb25lRGVlcCh2YWx1ZSkgPz8ge307XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHVua25vd24gfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCA9PT0gaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlzRGlzYWJsZWQgPyB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSA6IHRoaXMuZm9ybUdyb3VwLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcyQubmV4dCgpO1xuICAgIH0sIDApO1xuXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMkLm5leHQoKTtcbiAgfVxufVxuIl19
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tanNvbi1zY2hlbWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcGFydGljbGVzLWFuZ3VsYXIvc3JjL2xpYi9naW8tZm9ybS1qc29uLXNjaGVtYS9naW8tZm9ybS1qc29uLXNjaGVtYS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osSUFBSSxFQUNKLFdBQVcsRUFDWCxLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGdCQUFnQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pILE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdyRCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQzs7Ozs7OztBQVd2SSxNQUFNLE9BQU8sMEJBQTBCO0lBQzlCLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBeUI7UUFDbkQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBVSxDQUFDO1FBRXZGLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJ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eUI7c0JBRGhDLFdBQVc7dUJBQUMsUUFBUSxzQ0FBc0MsRUFBRTtnQkFJbEQsVUFBVTtzQkFEcEIsS0FBSztnQkFVQyxPQUFPO3NCQURiLEtBQUs7Z0JBTUMsS0FBSztzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3QsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Hcm91cCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZvcm1PcHRpb25zIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRW1wdHksIGlzRXF1YWwsIGlzT2JqZWN0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGVsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG1lcmdlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5cbmltcG9ydCB7IEdJT19GT1JNX0ZPQ1VTX0lOVkFMSURfSUdOT1JFX1NFTEVDVE9SIH0gZnJvbSAnLi4vZ2lvLWZvcm0tZm9jdXMtZmlyc3QtaW52YWxpZC9naW8tZm9ybS1mb2N1cy1maXJzdC1pbnZhbGlkLWlnbm9yZS5kaXJlY3RpdmUnO1xuXG5pbXBvcnQgeyBHaW9Kc29uU2NoZW1hIH0gZnJvbSAnLi9tb2RlbC9HaW9Kc29uU2NoZW1hJztcbmltcG9ydCB7IEdpb0Zvcm1seUpzb25TY2hlbWFTZXJ2aWNlIH0gZnJvbSAnLi9naW8tZm9ybWx5LWpzb24tc2NoZW1hLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tZm9ybS1qc29uLXNjaGVtYScsXG4gIHRlbXBsYXRlOiBgPGZvcm1seS1mb3JtICpuZ0lmPVwiZm9ybUdyb3VwXCIgW2ZpZWxkc109XCJmaWVsZHNcIiBbb3B0aW9uc109XCJvcHRpb25zXCIgW2Zvcm1dPVwiZm9ybUdyb3VwXCIgW21vZGVsXT1cIm1vZGVsXCI+PC9mb3JtbHktZm9ybT5gLFxuICBzdHlsZVVybHM6IFsnLi9naW8tZm9ybS1qc29uLXNjaGVtYS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgR2lvRm9ybUpzb25TY2hlbWFDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBzdGF0aWMgaXNEaXNwbGF5YWJsZShqc29uU2NoZW1hOiBHaW9Kc29uU2NoZW1hKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IFsncHJvcGVydGllcycsICdvbmVPZicsICdhbnlPZicsICdhbGxPZicsICckcmVmJywgJ2l0ZW1zJ10gYXMgY29uc3Q7XG5cbiAgICByZXR1cm4gaXNPYmplY3QoanNvblNjaGVtYSkgJiYgcHJvcGVydGllcy5zb21lKHByb3BlcnR5ID0+ICFpc0VtcHR5KGpzb25TY2hlbWFbcHJvcGVydHldKSk7XG4gIH1cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBIb3N0QmluZGluZyhgYXR0ci4ke0dJT19GT1JNX0ZPQ1VTX0lOVkFMSURfSUdOT1JFX1NFTEVDVE9SfWApXG4gIHByaXZhdGUgZ2lvRm9ybUZvY3VzSW52YWxpZElnbm9yZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBqc29uU2NoZW1hKGpzb25TY2hlbWE6IEdpb0pzb25TY2hlbWEpIHtcbiAgICBpZiAoaXNPYmplY3QoanNvblNjaGVtYSkpIHtcbiAgICAgIHRoaXMuZmllbGRzID0gW3RoaXMuZ2lvRm9ybWx5SnNvblNjaGVtYS50b0Zvcm1seUZpZWxkQ29uZmlnKGpzb25TY2hlbWEpXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHt9O1xuXG4gIC8vIFdoZW4gdHJ1ZSB0aGUgZm9ybSBpcyByZWFkeSBhbmQgY29udHJvbCBzdGF0dXMgYXJlIHVwLXRvLWRhdGVcbiAgLy8gVXNlZnVsIHRvIGtub3cgd2hlbiBpbml0aWFsIGNvbnRyb2wgc3RhdHVzIGNhbiBiZSB1c2VkXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHJpdmF0ZSBpc1JlYWR5ID0gZmFsc2U7XG5cbiAgcHVibGljIG1vZGVsOiB1bmtub3duID0ge307XG5cbiAgcHVibGljIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xuXG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHVibGljIF9vbkNoYW5nZTogKHZhbHVlOiB1bmtub3duIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG5cbiAgcHVibGljIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuXG4gIHByaXZhdGUgdG91Y2hlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgaXNWYWxpZCQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTsgLy8gV2FpdCBKc29uU2NoZW1hIHRvIGJlIGxvYWRlZCB0byBjaGVjayBpZiBpdCdzIHZhbGlkXG5cbiAgcHJpdmF0ZSBzdGF0ZUNoYW5nZXMkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdpb0Zvcm1seUpzb25TY2hlbWE6IEdpb0Zvcm1seUpzb25TY2hlbWFTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmbTogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBIb3N0KCkgQE9wdGlvbmFsKCkgcHVibGljIHJlYWRvbmx5IG5nQ29udHJvbD86IE5nQ29udHJvbCxcbiAgKSB7XG4gICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgYWNjZXNzb3IgZGlyZWN0bHkgKGluc3RlYWQgb2YgdXNpbmdcbiAgICAgIC8vIHRoZSBwcm92aWRlcnMgYE5HX1ZBTFVFX0FDQ0VTU09SYCkgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgY2lyY3VsYXIgaW1wb3J0LlxuICAgICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIC8vIFdoZW4gdGhlIHVzZXIgaW50ZXJhY3Qgd2l0aCB0aGUgZm9ybSwgbWFyayBpdCBhcyB0b3VjaGVkXG4gICAgZm0ubW9uaXRvcihlbFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmpzb25TY2hlbWEpIHtcbiAgICAgIHRoaXMuaXNSZWFkeSA9IGZhbHNlO1xuICAgICAgdGhpcy5yZWFkeS5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gV2hlbiB0aGUgcGFyZW50IGZvcm0gaXMgdG91Y2hlZCwgbWFyayBhbGwgdGhlIHN1YiBmb3JtR3JvdXAgYXMgdG91Y2hlZCBpZiBub3QgYWxyZWFkeSB0b3VjaGVkXG4gICAgY29uc3QgcGFyZW50Q29udHJvbCA9IHRoaXMubmdDb250cm9sPy5jb250cm9sPy5wYXJlbnQ7XG4gICAgcGFyZW50Q29udHJvbD8uc3RhdHVzQ2hhbmdlc1xuICAgICAgPy5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gcGFyZW50Q29udHJvbD8udG91Y2hlZCksXG4gICAgICAgIGZpbHRlcih0b3VjaGVkID0+IHRvdWNoZWQgPT09IHRydWUpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcyQubmV4dCgpO1xuICAgICAgfSk7XG4gICAgLy8gQWRkIGFzeW5jIHZhbGlkYXRvciB0byB0aGUgcGFyZW50XG4gICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LmFkZEFzeW5jVmFsaWRhdG9ycygoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkJC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAoaXNWYWxpZCA9PiAoaXNWYWxpZCA/IG51bGwgOiB7IGludmFsaWQ6IHRydWUgfSkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIFN5bmMgY29udHJvbCB2YWx1ZSB3aXRoIGRlZmF1bHQgdmFsdWUgKHdpdGhvdXQgZW1pdCBldmVudCkgYXMgbG9uZyBhcyB0aGUgY29tcG9uZW50IGlzIG5vdCByZWFkeVxuICAgIC8vIFdoZW4gZm9ybWx5IGlzIGluaXRpYWxpc2VkLCBpdCBlbWl0cyBzZXZlcmFsIHZhbHVlcyBhcyBpdCBidWlsZHMgdXAgc3RlcCBieSBzdGVwLlxuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzRXF1YWwpLFxuICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5yZXNldCh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5yZWFkeSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICAvLyBBdm9pZCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yIG9uIHByb2plY3RcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHN0YXRlIGNoYW5nZXMgdG8gbWFuYWdlIHRvdWNoZXMsIHN0YXR1cyBhbmQgdmFsdWVcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgc3RhdHVzLCB2YWx1ZSwgdG91Y2hlZCB9ID0gdGhpcy5mb3JtR3JvdXA7XG4gICAgICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdWQUxJRCcpIHtcbiAgICAgICAgICAgIHRoaXMuaXNWYWxpZCQubmV4dCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ0lOVkFMSUQnKSB7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0b3VjaGVkICYmICF0aGlzLnRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy50b3VjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICAgIC8vIEtlZXAgYXQgdGhlIGVuZFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IHN0YXRlIGNoYW5nZSwgdGhlIGZvcm0gaXMgcmVhZHlcbiAgICAgICAgaWYgKCF0aGlzLmlzUmVhZHkpIHtcbiAgICAgICAgICB0aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucmVhZHkuZW1pdCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIEdyb3VwIGFsbCB2YWx1ZUNoYW5nZXMgZXZlbnRzIGVtaXQgYnkgZm9ybWx5IGluIGEgc2luZ2xlIG9uZVxuICAgIG1lcmdlKHRoaXMuZm9ybUdyb3VwLnN0YXR1c0NoYW5nZXMsIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcylcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyBGb3JjZSBmaXN0IHN0YXRlQ2hhbmdlcyRcbiAgICAgICAgc3RhcnRXaXRoKHt9KSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMkLm5leHQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZm0uc3RvcE1vbml0b3JpbmcodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsID0gY2xvbmVEZWVwKHZhbHVlKSA/PyB7fTtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogdW5rbm93biB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcHVibGljIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkID09PSBpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaXNEaXNhYmxlZCA/IHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pIDogdGhpcy5mb3JtR3JvdXAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzJC5uZXh0KCk7XG4gICAgfSwgMCk7XG5cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcyQubmV4dCgpO1xuICB9XG59XG4iXX0=
@@ -35,7 +35,7 @@ export class GioLicenseExpirationNotificationComponent {
35
35
  }
36
36
  const date = new Date();
37
37
  const timeRemaining = this.transformDateWithoutHours(this.expirationDate) - this.transformDateWithoutHours(date);
38
- this.daysRemaining = timeRemaining / (1000 * 3600 * 24);
38
+ this.daysRemaining = Math.round(timeRemaining / (1000 * 3600 * 24));
39
39
  if (this.expirationDate.getTime() - date.getTime() < 0) {
40
40
  this.title = 'Your license has expired';
41
41
  this.statusColor = 'red';
@@ -74,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
74
74
  }], inError: [{
75
75
  type: Input
76
76
  }] } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWxpY2Vuc2UtZXhwaXJhdGlvbi1ub3RpZmljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcGFydGljbGVzLWFuZ3VsYXIvc3JjL2xpYi9naW8tbGljZW5zZS1leHBpcmF0aW9uLW5vdGlmaWNhdGlvbi9naW8tbGljZW5zZS1leHBpcmF0aW9uLW5vdGlmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1saWNlbnNlLWV4cGlyYXRpb24tbm90aWZpY2F0aW9uL2dpby1saWNlbnNlLWV4cGlyYXRpb24tbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDOzs7O0FBT25GLE1BQU0sT0FBTyx5Q0FBeUM7SUFMdEQ7UUFVUyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFTeEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxNQUFNLENBQUM7S0FxQzdCO0lBbkNRLFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxvQ0FBb0MsQ0FBQztZQUNsRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDeEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakgsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBMEIsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0NBQWdDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLCtCQUErQixJQUFJLENBQUMsYUFBYSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzNHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVPLHlCQUF5QixDQUFDLElBQVU7UUFDMUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDOzhHQXREVSx5Q0FBeUM7a0dBQXpDLHlDQUF5QyxrUUN0QnRELHV5Q0E2QkE7OzJGRFBhLHlDQUF5QztrQkFMckQsU0FBUzsrQkFDRSxxQ0FBcUM7OEJBTXhDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQUlDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyNCBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1saWNlbnNlLWV4cGlyYXRpb24tbm90aWZpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1saWNlbnNlLWV4cGlyYXRpb24tbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLWxpY2Vuc2UtZXhwaXJhdGlvbi1ub3RpZmljYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvTGljZW5zZUV4cGlyYXRpb25Ob3RpZmljYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBleHBpcmF0aW9uRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0NhbGxUb0FjdGlvbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNhbGxUb0FjdGlvbk1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbGluazogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbkVycm9yID0gZmFsc2U7XG5cbiAgcHVibGljIHRpdGxlID0gJyc7XG4gIHB1YmxpYyBkYXlzUmVtYWluaW5nID0gMDtcbiAgcHVibGljIHN0YXR1c0NvbG9yID0gJ2JsdWUnO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZXhwaXJhdGlvbkRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbkVycm9yKSB7XG4gICAgICB0aGlzLnRpdGxlID0gXCJUaGVyZSdzIGFuIGlzc3VlIHdpdGggeW91ciBsaWNlbnNlXCI7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgdGltZVJlbWFpbmluZyA9IHRoaXMudHJhbnNmb3JtRGF0ZVdpdGhvdXRIb3Vycyh0aGlzLmV4cGlyYXRpb25EYXRlKSAtIHRoaXMudHJhbnNmb3JtRGF0ZVdpdGhvdXRIb3VycyhkYXRlKTtcbiAgICB0aGlzLmRheXNSZW1haW5pbmcgPSB0aW1lUmVtYWluaW5nIC8gKDEwMDAgKiAzNjAwICogMjQpO1xuXG4gICAgaWYgKHRoaXMuZXhwaXJhdGlvbkRhdGUuZ2V0VGltZSgpIC0gZGF0ZS5nZXRUaW1lKCkgPCAwKSB7XG4gICAgICB0aGlzLnRpdGxlID0gJ1lvdXIgbGljZW5zZSBoYXMgZXhwaXJlZCc7XG4gICAgICB0aGlzLnN0YXR1c0NvbG9yID0gJ3JlZCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRheXNSZW1haW5pbmcgPT09IDApIHtcbiAgICAgIHRoaXMudGl0bGUgPSBgWW91ciBsaWNlbnNlIHdpbGwgZXhwaXJlIHRvZGF5YDtcbiAgICAgIHRoaXMuc3RhdHVzQ29sb3IgPSAnb3JhbmdlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50aXRsZSA9IGBZb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgaW4gJHt0aGlzLmRheXNSZW1haW5pbmd9IGRheSR7dGhpcy5kYXlzUmVtYWluaW5nID09PSAxID8gJycgOiAncyd9YDtcbiAgICAgIHRoaXMuc3RhdHVzQ29sb3IgPSB0aGlzLmRheXNSZW1haW5pbmcgPiA1ID8gJ2JsdWUnIDogJ29yYW5nZSc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5leHBpcmF0aW9uRGF0ZSkge1xuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtRGF0ZVdpdGhvdXRIb3VycyhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS50b0RhdGVTdHJpbmcoKSkudmFsdWVPZigpO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjQgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cbjxkaXYgKm5nSWY9XCJleHBpcmF0aW9uRGF0ZSAmJiBkYXlzUmVtYWluaW5nIDw9IDMwXCIgY2xhc3M9XCJzdGF0dXMgbWF0LWVsZXZhdGlvbi16MlwiIHJlbD1cIm5vb3BlbmVyXCI+XG4gIDxkaXYgW25nQ2xhc3NdPVwiJ3N0YXR1c19fdGl0bGUgJyArIHN0YXR1c0NvbG9yXCI+XG4gICAgPGRpdiBjbGFzcz1cInN0YXR1c19fdGl0bGVfX3RleHRcIj5cbiAgICAgIHt7IHRpdGxlIH19XG4gICAgICA8aW1nIHNyYz1cImFzc2V0cy9saWNlbnNlLWV4cGlyYXRpb24tbm90aWZpY2F0aW9uLWJhY2tncm91bmQuc3ZnXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxhICpuZ0lmPVwic2hvd0NhbGxUb0FjdGlvblwiIGNsYXNzPVwic3RhdHVzX19hY3Rpb25cIiBbaHJlZl09XCJsaW5rID8/ICdodHRwczovL3d3dy5ncmF2aXRlZS5pby9jb250YWN0LXVzLWxpY2VuY2UnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgPGRpdiBjbGFzcz1cInN0YXR1c19fYWN0aW9uX190ZXh0XCI+e3sgY2FsbFRvQWN0aW9uTWVzc2FnZSA/PyAnQ29udGFjdCBHcmF2aXRlZScgfX08L2Rpdj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpyaWdodC1jaXJjbGVcIiBjbGFzcz1cInN0YXR1c19fYWN0aW9uX19pY29uXCI+PC9tYXQtaWNvbj5cbiAgPC9hPlxuPC9kaXY+XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWxpY2Vuc2UtZXhwaXJhdGlvbi1ub3RpZmljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcGFydGljbGVzLWFuZ3VsYXIvc3JjL2xpYi9naW8tbGljZW5zZS1leHBpcmF0aW9uLW5vdGlmaWNhdGlvbi9naW8tbGljZW5zZS1leHBpcmF0aW9uLW5vdGlmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1saWNlbnNlLWV4cGlyYXRpb24tbm90aWZpY2F0aW9uL2dpby1saWNlbnNlLWV4cGlyYXRpb24tbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDOzs7O0FBT25GLE1BQU0sT0FBTyx5Q0FBeUM7SUFMdEQ7UUFVUyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFTeEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxNQUFNLENBQUM7S0FxQzdCO0lBbkNRLFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxvQ0FBb0MsQ0FBQztZQUNsRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDeEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakgsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQTBCLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLGdDQUFnQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssR0FBRywrQkFBK0IsSUFBSSxDQUFDLGFBQWEsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMzRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxJQUFVO1FBQzFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakQsQ0FBQzs4R0F0RFUseUNBQXlDO2tHQUF6Qyx5Q0FBeUMsa1FDdEJ0RCx1eUNBNkJBOzsyRkRQYSx5Q0FBeUM7a0JBTHJELFNBQVM7K0JBQ0UscUNBQXFDOzhCQU14QyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjQgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tbGljZW5zZS1leHBpcmF0aW9uLW5vdGlmaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tbGljZW5zZS1leHBpcmF0aW9uLW5vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1saWNlbnNlLWV4cGlyYXRpb24tbm90aWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb0xpY2Vuc2VFeHBpcmF0aW9uTm90aWZpY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgZXhwaXJhdGlvbkRhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dDYWxsVG9BY3Rpb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYWxsVG9BY3Rpb25NZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxpbms6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaW5FcnJvciA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0aXRsZSA9ICcnO1xuICBwdWJsaWMgZGF5c1JlbWFpbmluZyA9IDA7XG4gIHB1YmxpYyBzdGF0dXNDb2xvciA9ICdibHVlJztcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmV4cGlyYXRpb25EYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5FcnJvcikge1xuICAgICAgdGhpcy50aXRsZSA9IFwiVGhlcmUncyBhbiBpc3N1ZSB3aXRoIHlvdXIgbGljZW5zZVwiO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHRpbWVSZW1haW5pbmcgPSB0aGlzLnRyYW5zZm9ybURhdGVXaXRob3V0SG91cnModGhpcy5leHBpcmF0aW9uRGF0ZSkgLSB0aGlzLnRyYW5zZm9ybURhdGVXaXRob3V0SG91cnMoZGF0ZSk7XG4gICAgdGhpcy5kYXlzUmVtYWluaW5nID0gTWF0aC5yb3VuZCh0aW1lUmVtYWluaW5nIC8gKDEwMDAgKiAzNjAwICogMjQpKTtcblxuICAgIGlmICh0aGlzLmV4cGlyYXRpb25EYXRlLmdldFRpbWUoKSAtIGRhdGUuZ2V0VGltZSgpIDwgMCkge1xuICAgICAgdGhpcy50aXRsZSA9ICdZb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQnO1xuICAgICAgdGhpcy5zdGF0dXNDb2xvciA9ICdyZWQnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXlzUmVtYWluaW5nID09PSAwKSB7XG4gICAgICB0aGlzLnRpdGxlID0gYFlvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSB0b2RheWA7XG4gICAgICB0aGlzLnN0YXR1c0NvbG9yID0gJ29yYW5nZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGl0bGUgPSBgWW91ciBsaWNlbnNlIHdpbGwgZXhwaXJlIGluICR7dGhpcy5kYXlzUmVtYWluaW5nfSBkYXkke3RoaXMuZGF5c1JlbWFpbmluZyA9PT0gMSA/ICcnIDogJ3MnfWA7XG4gICAgICB0aGlzLnN0YXR1c0NvbG9yID0gdGhpcy5kYXlzUmVtYWluaW5nID4gNSA/ICdibHVlJyA6ICdvcmFuZ2UnO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZXhwaXJhdGlvbkRhdGUpIHtcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybURhdGVXaXRob3V0SG91cnMoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUudG9EYXRlU3RyaW5nKCkpLnZhbHVlT2YoKTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDI0IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48ZGl2ICpuZ0lmPVwiZXhwaXJhdGlvbkRhdGUgJiYgZGF5c1JlbWFpbmluZyA8PSAzMFwiIGNsYXNzPVwic3RhdHVzIG1hdC1lbGV2YXRpb24tejJcIiByZWw9XCJub29wZW5lclwiPlxuICA8ZGl2IFtuZ0NsYXNzXT1cIidzdGF0dXNfX3RpdGxlICcgKyBzdGF0dXNDb2xvclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNfX3RpdGxlX190ZXh0XCI+XG4gICAgICB7eyB0aXRsZSB9fVxuICAgICAgPGltZyBzcmM9XCJhc3NldHMvbGljZW5zZS1leHBpcmF0aW9uLW5vdGlmaWNhdGlvbi1iYWNrZ3JvdW5kLnN2Z1wiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8YSAqbmdJZj1cInNob3dDYWxsVG9BY3Rpb25cIiBjbGFzcz1cInN0YXR1c19fYWN0aW9uXCIgW2hyZWZdPVwibGluayA/PyAnaHR0cHM6Ly93d3cuZ3Jhdml0ZWUuaW8vY29udGFjdC11cy1saWNlbmNlJ1wiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNfX2FjdGlvbl9fdGV4dFwiPnt7IGNhbGxUb0FjdGlvbk1lc3NhZ2UgPz8gJ0NvbnRhY3QgR3Jhdml0ZWUnIH19PC9kaXY+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86cmlnaHQtY2lyY2xlXCIgY2xhc3M9XCJzdGF0dXNfX2FjdGlvbl9faWNvblwiPjwvbWF0LWljb24+XG4gIDwvYT5cbjwvZGl2PlxuIl19
@@ -12,7 +12,7 @@ import { ComponentHarness, HarnessPredicate, parallel, TestKey } from '@angular/
12
12
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
13
13
  import * as i6$1 from '@angular/material/form-field';
14
14
  import { MatFormFieldControl, MatFormFieldModule, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
15
- import { isEmpty, isString, isObject, toLower, dropRight, isNil, isArray, remove, cloneDeep, uniqueId, set, has, range, some, isEqual, filter as filter$1, intersection } from 'lodash';
15
+ import { isEmpty, isString, isObject, toLower, dropRight, isNil, isArray, remove, isEqual, cloneDeep, uniqueId, set, has, range, some, filter as filter$1, intersection } from 'lodash';
16
16
  import { tap, startWith, switchMap, map, distinctUntilChanged, takeUntil, filter, take, delay, debounceTime, shareReplay, catchError, debounce } from 'rxjs/operators';
17
17
  import * as i1$1 from '@angular/forms';
18
18
  import { FormsModule, UntypedFormArray, UntypedFormGroup, UntypedFormControl, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, ReactiveFormsModule, NgControl, FormControl } from '@angular/forms';
@@ -2477,12 +2477,16 @@ class GioFormJsonSchemaComponent {
2477
2477
  this.ngControl?.control?.addAsyncValidators(() => {
2478
2478
  return this.isValid$.pipe(take(1), map(isValid => (isValid ? null : { invalid: true })), takeUntil(this.unsubscribe$));
2479
2479
  });
2480
- // Init control value with default value without emit event
2481
- this.formGroup.valueChanges.pipe(take(1), takeUntil(this.unsubscribe$)).subscribe(value => {
2480
+ // Sync control value with default value (without emit event) as long as the component is not ready
2481
+ // When formly is initialised, it emits several values as it builds up step by step.
2482
+ this.formGroup.valueChanges
2483
+ .pipe(distinctUntilChanged(isEqual), tap(value => {
2482
2484
  this.ngControl?.control?.reset(value, { emitEvent: false });
2483
2485
  this.changeDetectorRef.markForCheck();
2484
2486
  this.changeDetectorRef.detectChanges();
2485
- });
2487
+ }), takeUntil(this.ready), takeUntil(this.unsubscribe$))
2488
+ .subscribe();
2489
+ // Avoid ExpressionChangedAfterItHasBeenCheckedError on project
2486
2490
  this.changeDetectorRef.markForCheck();
2487
2491
  this.changeDetectorRef.detectChanges();
2488
2492
  // Subscribe to state changes to manage touches, status and value
@@ -2563,11 +2567,11 @@ class GioFormJsonSchemaComponent {
2563
2567
  this.stateChanges$.next();
2564
2568
  }
2565
2569
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioFormJsonSchemaComponent, deps: [{ token: GioFormlyJsonSchemaService }, { token: i0.ElementRef }, { token: i1$2.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i1$1.NgControl, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
2566
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: { jsonSchema: "jsonSchema", options: "options" }, outputs: { ready: "ready" }, host: { properties: { "attr.gioFormFocusInvalidIgnore": "this.gioFormFocusInvalidIgnore" } }, usesOnChanges: true, ngImport: i0, template: `<formly-form *ngIf="formGroup" [fields]="fields" [options]="options" [form]="formGroup" [model]="model"></formly-form>`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$3.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }] }); }
2570
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: { jsonSchema: "jsonSchema", options: "options" }, outputs: { ready: "ready" }, host: { properties: { "attr.gioFormFocusInvalidIgnore": "this.gioFormFocusInvalidIgnore" } }, usesOnChanges: true, ngImport: i0, template: `<formly-form *ngIf="formGroup" [fields]="fields" [options]="options" [form]="formGroup" [model]="model"></formly-form>`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$3.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2567
2571
  }
2568
2572
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioFormJsonSchemaComponent, decorators: [{
2569
2573
  type: Component,
2570
- args: [{ selector: 'gio-form-json-schema', template: `<formly-form *ngIf="formGroup" [fields]="fields" [options]="options" [form]="formGroup" [model]="model"></formly-form>` }]
2574
+ args: [{ selector: 'gio-form-json-schema', template: `<formly-form *ngIf="formGroup" [fields]="fields" [options]="options" [form]="formGroup" [model]="model"></formly-form>`, changeDetection: ChangeDetectionStrategy.OnPush }]
2571
2575
  }], ctorParameters: () => [{ type: GioFormlyJsonSchemaService }, { type: i0.ElementRef }, { type: i1$2.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: i1$1.NgControl, decorators: [{
2572
2576
  type: Host
2573
2577
  }, {
@@ -4991,7 +4995,7 @@ class GioLicenseExpirationNotificationComponent {
4991
4995
  }
4992
4996
  const date = new Date();
4993
4997
  const timeRemaining = this.transformDateWithoutHours(this.expirationDate) - this.transformDateWithoutHours(date);
4994
- this.daysRemaining = timeRemaining / (1000 * 3600 * 24);
4998
+ this.daysRemaining = Math.round(timeRemaining / (1000 * 3600 * 24));
4995
4999
  if (this.expirationDate.getTime() - date.getTime() < 0) {
4996
5000
  this.title = 'Your license has expired';
4997
5001
  this.statusColor = 'red';