@sumaris-net/ngx-components 0.25.8 → 0.25.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sumaris-net.ngx-components.umd.js +45 -29
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/esm2015/src/app/core/services/model/person.model.js +4 -3
- package/esm2015/src/app/shared/material/autocomplete/material.autocomplete.js +10 -3
- package/esm2015/src/app/shared/material/autocomplete/testing/autocomplete.test.js +2 -2
- package/esm2015/src/app/shared/material/datetime/material.datetime.js +12 -7
- package/esm2015/src/app/shared/material/datetime/testing/mat-date-time.test.js +5 -3
- package/esm2015/src/app/shared/material/latlong/material.latlong.js +12 -17
- package/esm2015/src/app/shared/material/latlong/testing/latlong.test.js +2 -2
- package/fesm2015/sumaris-net.ngx-components.js +37 -28
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/shared/material/datetime/material.datetime.d.ts +4 -3
- package/src/app/shared/material/latlong/material.latlong.d.ts +5 -6
- package/src/theme/_ionic.scss +7 -0
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -21,7 +21,8 @@ export class DateTimeTestPage {
|
|
|
21
21
|
this.form = formBuilder.group({
|
|
22
22
|
empty: [null, Validators.required],
|
|
23
23
|
enable: [null, Validators.required],
|
|
24
|
-
disable: [null, Validators.required]
|
|
24
|
+
disable: [null, Validators.required],
|
|
25
|
+
readonly: [null]
|
|
25
26
|
}, {
|
|
26
27
|
validators: SharedFormGroupValidators.dateRange('empty', 'enable')
|
|
27
28
|
});
|
|
@@ -43,6 +44,7 @@ export class DateTimeTestPage {
|
|
|
43
44
|
empty: toDateISOString(now.clone().add(2, 'hours')),
|
|
44
45
|
enable: toDateISOString(now),
|
|
45
46
|
disable: now,
|
|
47
|
+
readonly: now
|
|
46
48
|
};
|
|
47
49
|
this.form.setValue(data);
|
|
48
50
|
this.log('[test-page] Data loaded: ' + JSON.stringify(data));
|
|
@@ -89,7 +91,7 @@ export class DateTimeTestPage {
|
|
|
89
91
|
DateTimeTestPage.decorators = [
|
|
90
92
|
{ type: Component, args: [{
|
|
91
93
|
selector: 'app-data-time-test',
|
|
92
|
-
template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Date/Time field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <!-- debugging memory leak -->\n <ion-row><ion-col><ion-text><h4>Debug memory leak</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col size=\"2\">\n <ion-button *ngIf=\"!memoryTimer\" (click)=\"startMemoryTimer()\">Start timer</ion-button>\n <ion-button *ngIf=\"memoryTimer\" (click)=\"stopMemoryTimer()\">Stop timer</ion-button>\n </ion-col>\n <ion-col size=\"2\">\n <mat-form-field floatLabel=\"never\">\n <input matInput type=\"text\" hidden>\n <mat-checkbox (change)=\"memoryMobile=$event.checked\" [value]=\"memoryMobile\">\n Mobile ?\n </mat-checkbox>\n </mat-form-field>\n </ion-col>\n <ion-col>\n <mat-date-time-field formControlName=\"empty\"\n *ngIf=\"!memoryHide\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"memoryMobile\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-col>\n </ion-row>\n\n <!-- Mobile mode -->\n <ion-row><ion-col><ion-text><h4>Mobile mode</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.empty.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"empty\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n With value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.enable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"enable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.disable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"disable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <!-- debug console -->\n <ion-row>\n <!-- buttons -->\n <ion-col size=\"2\">\n <!-- submit form -->\n <ion-button (click)=\"doSubmit($event)\"\n fill=\"outline\">\n <ion-icon name=\"checkmark\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n\n <!-- clear log -->\n <ion-button (click)=\"clearLogPanel()\"\n fill=\"outline\">\n <ion-icon name=\"trash\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col size=\"10\" *ngIf=\"showLogPanel\">\n <ion-text color=\"primary\">Log:<br/></ion-text>\n <div class=\"ion-padding-start\">\n <ion-text color=\"medium\">\n <small [innerHTML]=\"logContent\"></small>\n </ion-text>\n </div>\n </ion-col>\n </ion-row>\n\n <!-- Desktop mode -->\n <ion-row><ion-col><ion-text><h4>Desktop mode</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.empty.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"empty\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n With value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.enable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"enable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.disable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"disable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n</ion-content>\n"
|
|
94
|
+
template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Date/Time field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <!-- debugging memory leak -->\n <ion-row><ion-col><ion-text><h4>Debug memory leak</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col size=\"2\">\n <ion-button *ngIf=\"!memoryTimer\" (click)=\"startMemoryTimer()\">Start timer</ion-button>\n <ion-button *ngIf=\"memoryTimer\" (click)=\"stopMemoryTimer()\">Stop timer</ion-button>\n </ion-col>\n <ion-col size=\"2\">\n <mat-form-field floatLabel=\"never\">\n <input matInput type=\"text\" hidden>\n <mat-checkbox (change)=\"memoryMobile=$event.checked\" [value]=\"memoryMobile\">\n Mobile ?\n </mat-checkbox>\n </mat-form-field>\n </ion-col>\n <ion-col>\n <mat-date-time-field formControlName=\"empty\"\n *ngIf=\"!memoryHide\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"memoryMobile\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-col>\n </ion-row>\n\n <!-- Mobile mode -->\n <ion-row><ion-col><ion-text><h4>Mobile mode</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.empty.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"empty\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n With value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.enable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"enable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.disable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"disable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <!-- debug console -->\n <ion-row>\n <!-- buttons -->\n <ion-col size=\"2\">\n <!-- submit form -->\n <ion-button (click)=\"doSubmit($event)\"\n fill=\"outline\">\n <ion-icon name=\"checkmark\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n\n <!-- clear log -->\n <ion-button (click)=\"clearLogPanel()\"\n fill=\"outline\">\n <ion-icon name=\"trash\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col size=\"10\" *ngIf=\"showLogPanel\">\n <ion-text color=\"primary\">Log:<br/></ion-text>\n <div class=\"ion-padding-start\">\n <ion-text color=\"medium\">\n <small [innerHTML]=\"logContent\"></small>\n </ion-text>\n </div>\n </ion-col>\n </ion-row>\n\n <!-- Desktop mode -->\n <ion-row><ion-col><ion-text><h4>Desktop mode</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.empty.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"empty\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n With value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.enable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"enable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.disable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"disable\"\n placeholder=\"Date/Time\"\n [required]=\"true\"\n [mobile]=\"false\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Readonly -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly toggle\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.readonly.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n </mat-checkbox>\n\n <mat-date-time-field #readonlyField formControlName=\"readonly\"\n placeholder=\"Date/Time\"\n [readonly]=\"true\"\n [mobile]=\"false\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"calendar-outline\"></ion-icon>\n </mat-date-time-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n</ion-content>\n"
|
|
93
95
|
},] }
|
|
94
96
|
];
|
|
95
97
|
DateTimeTestPage.ctorParameters = () => [
|
|
@@ -97,4 +99,4 @@ DateTimeTestPage.ctorParameters = () => [
|
|
|
97
99
|
{ type: FormBuilder },
|
|
98
100
|
{ type: ChangeDetectorRef }
|
|
99
101
|
];
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LWRhdGUtdGltZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvZGF0ZXRpbWUvdGVzdGluZy9tYXQtZGF0ZS10aW1lLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBMEIsaUJBQWlCLEVBQUUsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBQyxXQUFXLEVBQWEsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxjQUFjLE1BQU0sUUFBUSxDQUFDO0FBR3pDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQztBQU05QixNQUFNLE9BQU8sZ0JBQWdCO0lBWTNCLFlBQ1ksUUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsRUFBcUI7UUFGckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQVpqQyxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFrR3BCLGNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBeEZ6QixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxL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IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7U2hhcmVkRm9ybUdyb3VwVmFsaWRhdG9yc30gZnJvbSAnLi4vLi4vLi4vdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtBcHBGb3JtVXRpbHN9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvZm9ybS9mb3JtLnV0aWxzJztcbmltcG9ydCB7dG9EYXRlSVNPU3RyaW5nfSBmcm9tICcuLi8uLi8uLi9kYXRlcyc7XG5pbXBvcnQgKiBhcyBtb21lbnRJbXBvcnRlZCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IFRpbWVyID0gTm9kZUpTLlRpbWVyO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRJbXBvcnRlZDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRhdGEtdGltZS10ZXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdC1kYXRlLXRpbWUudGVzdC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVRlc3RQYWdlIGltcGxlbWVudHMgT25Jbml0IHtcblxuXG4gIHNob3dMb2dQYW5lbCA9IHRydWU7XG4gIGxvZ0NvbnRlbnQgPSAnJztcblxuICBtZW1vcnlIaWRlID0gZmFsc2U7XG4gIG1lbW9yeU1vYmlsZSA9IHRydWU7XG4gIG1lbW9yeVRpbWVyOiBUaW1lcjtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZW1wdHk6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGVuYWJsZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZGlzYWJsZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcmVhZG9ubHk6IFtudWxsXVxuICAgIH0sIHtcbiAgICAgIHZhbGlkYXRvcnM6IFNoYXJlZEZvcm1Hcm91cFZhbGlkYXRvcnMuZGF0ZVJhbmdlKCdlbXB0eScsICdlbmFibGUnKVxuICAgIH0pO1xuXG4gICAgY29uc3QgZGlzYWJsZUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdkaXNhYmxlJyk7XG4gICAgZGlzYWJsZUNvbnRyb2wuZGlzYWJsZSgpO1xuXG4gICAgLy8gQ29weSB0aGUgJ2VuYWJsZScgdmFsdWUsIGludG8gdGhlIGRpc2FibGUgY29udHJvbFxuICAgIHRoaXMuZm9ybS5nZXQoJ2VuYWJsZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4gZGlzYWJsZUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpKTtcblxuICAgIGNvbnN0IG1vYmlsZSA9IHBsYXRmb3JtLmlzKCdtb2JpbGUnKTtcbiAgICB0aGlzLnNob3dMb2dQYW5lbCA9IHRoaXMuc2hvd0xvZ1BhbmVsIHx8wqBtb2JpbGU7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWREYXRhKCksIDI1MCk7XG5cblxuICB9XG5cbiAgLy8gTG9hZCB0aGUgZm9ybSB3aXRoIGRhdGFcbiAgYXN5bmMgbG9hZERhdGEoKSB7XG4gICAgY29uc3Qgbm93ID0gbW9tZW50KCk7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGVtcHR5OiB0b0RhdGVJU09TdHJpbmcobm93LmNsb25lKCkuYWRkKDIsICdob3VycycpKSxcbiAgICAgIGVuYWJsZTogdG9EYXRlSVNPU3RyaW5nKG5vdyksXG4gICAgICBkaXNhYmxlOiBub3csXG4gICAgICByZWFkb25seTogbm93XG4gICAgfTtcblxuICAgIHRoaXMuZm9ybS5zZXRWYWx1ZShkYXRhKTtcblxuICAgIHRoaXMubG9nKCdbdGVzdC1wYWdlXSBEYXRhIGxvYWRlZDogJyArIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcblxuICAgIHRoaXMuZm9ybS5nZXQoJ2VtcHR5JykudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5sb2coJ1t0ZXN0LXBhZ2VdIFZhbHVlIG7CsDE6ICcgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpKTtcblxuICAgIHRoaXMuZm9ybS5nZXQoJ2VuYWJsZScpLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMubG9nKCdbdGVzdC1wYWdlXSBWYWx1ZSBuwrAyOiAnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpKSk7XG4gIH1cblxuICBkb1N1Ym1pdChldmVudCkge1xuICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5sb2coJ1t0ZXN0LXBhZ2VdIEZvcm0gY29udGVudDogJyArIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS52YWx1ZSkpO1xuICAgIHRoaXMubG9nKCdbdGVzdC1wYWdlXSBGb3JtIHN0YXR1czogJyArIHRoaXMuZm9ybS5zdGF0dXMpO1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5sb2coJ1t0ZXN0LXBhZ2VdIEZvcm0gZXJyb3JzOiAnICsgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmVycm9ycykpO1xuXG4gICAgICAvLyBERUJVR1xuICAgICAgQXBwRm9ybVV0aWxzLmxvZ0Zvcm1FcnJvcnModGhpcy5mb3JtKTtcbiAgICB9XG4gIH1cblxuICBsb2cobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlKTtcblxuICAgIGlmICh0aGlzLnNob3dMb2dQYW5lbCkge1xuICAgICAgdGhpcy5sb2dDb250ZW50ICs9IG1lc3NhZ2UgKyAnPGJyLz4nO1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckxvZ1BhbmVsKCkge1xuICAgIHRoaXMubG9nQ29udGVudCA9ICcnO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBzdGFydE1lbW9yeVRpbWVyKCkge1xuICAgIHRoaXMubWVtb3J5VGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLm1lbW9yeUhpZGUgPSAhdGhpcy5tZW1vcnlIaWRlO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIHN0b3BNZW1vcnlUaW1lcigpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMubWVtb3J5VGltZXIpO1xuICAgIHRoaXMubWVtb3J5VGltZXIgPSBudWxsO1xuICAgIHRoaXMubWVtb3J5SGlkZSA9IGZhbHNlO1xuICB9XG5cbiAgc3RyaW5naWZ5ID0gSlNPTi5zdHJpbmdpZnk7XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuXG59XG5cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Optional, Output, ViewChild
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Optional, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import { Platform } from '@ionic/angular';
|
|
3
3
|
import { FormBuilder, FormGroupDirective, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
|
|
4
4
|
import { TranslateService } from '@ngx-translate/core';
|
|
@@ -37,10 +37,10 @@ export class MatLatLongField {
|
|
|
37
37
|
this._subscription = new Subscription();
|
|
38
38
|
this.disabling = false;
|
|
39
39
|
this.writing = false;
|
|
40
|
+
this._readonly = false;
|
|
40
41
|
this.maxDecimals = LAT_LONG_DEFAULT_MAX_DECIMALS;
|
|
41
42
|
this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
|
|
42
43
|
this.floatLabel = 'auto';
|
|
43
|
-
this.readonly = false;
|
|
44
44
|
this.required = false;
|
|
45
45
|
this.onBlur = new EventEmitter();
|
|
46
46
|
this.onFocus = new EventEmitter();
|
|
@@ -49,6 +49,13 @@ export class MatLatLongField {
|
|
|
49
49
|
get disabled() {
|
|
50
50
|
return this.readonly || this.formControl.disabled;
|
|
51
51
|
}
|
|
52
|
+
set readonly(value) {
|
|
53
|
+
this._readonly = value;
|
|
54
|
+
this.markForCheck();
|
|
55
|
+
}
|
|
56
|
+
get readonly() {
|
|
57
|
+
return this._readonly;
|
|
58
|
+
}
|
|
52
59
|
ngOnInit() {
|
|
53
60
|
this.type = this.type || 'latitude';
|
|
54
61
|
this.pattern = this.pattern || 'DDMM';
|
|
@@ -106,16 +113,6 @@ export class MatLatLongField {
|
|
|
106
113
|
)
|
|
107
114
|
.subscribe((_) => this.markForCheck()));
|
|
108
115
|
}
|
|
109
|
-
ngAfterViewInit() {
|
|
110
|
-
// Inject suffix elements, into the first injection point found
|
|
111
|
-
if (this.suffixDiv) {
|
|
112
|
-
this.suffixInjections.find(item => {
|
|
113
|
-
item.nativeElement.append(this.suffixDiv.nativeElement);
|
|
114
|
-
this.suffixDiv.nativeElement.classList.remove('cdk-visually-hidden');
|
|
115
|
-
return true; // take only the first injection point
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
116
|
ngOnDestroy() {
|
|
120
117
|
this._subscription.unsubscribe();
|
|
121
118
|
}
|
|
@@ -307,7 +304,7 @@ export class MatLatLongField {
|
|
|
307
304
|
MatLatLongField.decorators = [
|
|
308
305
|
{ type: Component, args: [{
|
|
309
306
|
selector: 'mat-latlong-field',
|
|
310
|
-
template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formatFn(value, formatFnOptions)}}</ion-text>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\">\n <ion-col class=\"text ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"formControl.disabled\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label *ngIf=\"placeholder\">{{placeholder}}</mat-label>\n\n <div matPrefix
|
|
307
|
+
template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formatFn(value, formatFnOptions)}}</ion-text>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\">\n <ion-col class=\"text ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"formControl.disabled\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label *ngIf=\"placeholder\">{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput #inputElement\n type=\"text\"\n autocomplete=\"off\"\n [textMask]=\"textMaskConfig\"\n [formControl]=\"textFormControl\"\n [placeholder]=\"inputPlaceholder|translate\"\n (keypress)=\"onKeypress($event)\"\n (keydown.tab)=\"moveCaretToSeparator($event, true)\"\n (keydown.shift.tab)=\"moveCaretToSeparator($event, false)\"\n (focus)=\"_onFocus($event)\"\n (blur)=\"_onBlur($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\">\n\n <div *ngIf=\"!showSignControl\" matSuffix #injectMatSuffix></div>\n\n <!--<div matSuffix *ngIf=\"!showSignControl\"><ng-content select=\"[matSuffix]\"></ng-content></div>-->\n\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\">\n\n <!-- errors -->\n <ng-container *ngIf=\"formControl.touched\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('latitude')\" translate>ERROR.FIELD_NOT_VALID_LATITUDE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('longitude')\" translate>ERROR.FIELD_NOT_VALID_LONGITUDE</mat-error>\n <ng-content select=\"mat-error\"></ng-content>\n </ng-container>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n </mat-form-field>\n </ion-col>\n\n <!-- sign -->\n <ion-col class=\"sign ion-no-padding\" [ngSwitch]=\"type\" *ngIf=\"showSignControl\">\n\n <!-- sign on latitude -->\n <mat-form-field *ngSwitchCase=\"'latitude'\"\n floatLabel=\"never\"\n [class.mat-form-field-invalid]=\"formControl.touched && signFormControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.LAT_LONG.LAT_SIGN_PLACEHOLDER</mat-label>\n <mat-select [formControl]=\"signFormControl\"\n [tabindex]=\"tabindex+1\">\n <mat-option [value]=\"1\">{{'COMMON.LAT_LONG.LAT_SIGN_N'|translate}}</mat-option>\n <mat-option [value]=\"-1\" >{{'COMMON.LAT_LONG.LAT_SIGN_S'|translate}}</mat-option>\n </mat-select>\n\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- sign on longitude -->\n <mat-form-field floatLabel=\"never\"\n *ngSwitchCase=\"'longitude'\"\n [class.mat-form-field-invalid]=\"formControl.touched && signFormControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.LAT_LONG.LONG_SIGN_PLACEHOLDER</mat-label>\n <mat-select [formControl]=\"signFormControl\"\n [tabindex]=\"tabindex+2\">\n <mat-option [value]=\"1\" translate>{{'COMMON.LAT_LONG.LONG_SIGN_E'|translate}}</mat-option>\n <mat-option [value]=\"-1\" translate>{{'COMMON.LAT_LONG.LONG_SIGN_W'|translate}}</mat-option>\n </mat-select>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
|
|
311
308
|
providers: [
|
|
312
309
|
{
|
|
313
310
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -342,9 +339,7 @@ MatLatLongField.propDecorators = {
|
|
|
342
339
|
tabindex: [{ type: Input }],
|
|
343
340
|
onBlur: [{ type: Output }],
|
|
344
341
|
onFocus: [{ type: Output }],
|
|
345
|
-
inputElement: [{ type: ViewChild, args: ['inputElement',] }]
|
|
346
|
-
suffixDiv: [{ type: ViewChild, args: ['suffix', { static: false },] }],
|
|
347
|
-
suffixInjections: [{ type: ViewChildren, args: ['injectMatSuffix',] }]
|
|
342
|
+
inputElement: [{ type: ViewChild, args: ['inputElement',] }]
|
|
348
343
|
};
|
|
349
344
|
export { ɵ0 };
|
|
350
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubGF0bG9uZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBRUwsV0FBVyxFQUVYLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUNMLGNBQWMsRUFDZCxlQUFlLEVBQUUsNkJBQTZCLEVBSTlDLHdCQUF3QixFQUN6QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDL0csT0FBTyxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFekMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsTUFBTSxLQUFLLEdBSVA7SUFDRixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztRQUM1RixJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztRQUMxRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7S0FDbEY7SUFDRCxTQUFTLEVBQUU7UUFDVCxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztRQUM3RixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztRQUMzRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFB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LENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFUCxLQUFLO2FBQ047WUFFRCw0QkFBNEI7aUJBQ3ZCO2dCQUNILFFBQVE7Z0JBQ1IsNkhBQTZIO2dCQUU3SCx1QkFBdUI7Z0JBQ3ZCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN4QjtTQUNGO0lBQ0gsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUEvWUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLDJtSkFBc0M7Z0JBRXRDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixLQUFLLEVBQUUsSUFBSTt3QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztxQkFDL0M7aUJBQ0Y7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUE1RE8sUUFBUTtZQVVSLGdCQUFnQjtZQU50QixXQUFXO1lBbEJYLGlCQUFpQjtZQW9CakIsa0JBQWtCLHVCQXVIZixRQUFROzs7cUJBL0NWLEtBQUs7MEJBTUwsS0FBSzs4QkFFTCxLQUFLOzBCQUVMLEtBQUs7bUJBRUwsS0FBSztzQkFFTCxLQUFLLFNBQUMsZ0JBQWdCOzBCQUV0QixLQUFLOzBCQUVMLEtBQUs7OEJBRUwsS0FBSzt5QkFFTCxLQUFLO3VCQUVMLEtBQUs7dUJBRUwsS0FBSzt1QkFFTCxLQUFLO3FCQUVMLE1BQU07c0JBR04sTUFBTTsyQkFHTixTQUFTLFNBQUMsY0FBYzt3QkFFeEIsU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7K0JBRW5DLFlBQVksU0FBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0Zsb2F0TGFiZWxUeXBlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7U2hhcmVkVmFsaWRhdG9yc30gZnJvbSAnLi4vLi4vdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtcbiAgZm9ybWF0TGF0aXR1ZGUsXG4gIGZvcm1hdExvbmdpdHVkZSwgTEFUX0xPTkdfREVGQVVMVF9NQVhfREVDSU1BTFMsXG4gIExhdExvbmdGb3JtYXRGbixcbiAgTGF0TG9uZ0Zvcm1hdE9wdGlvbnMsXG4gIExhdExvbmdQYXR0ZXJuLFxuICBwYXJzZUxhdGl0dWRlT3JMb25naXR1ZGVcbn0gZnJvbSAnLi9sYXRsb25nLnV0aWxzJztcbmltcG9ydCB7REVGQVVMVF9QTEFDRUhPTERFUl9DSEFSfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7aXNOaWwsIGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmt9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQge2dldENhcmV0UG9zaXRpb24sIG1vdmVJbnB1dENhcmV0VG9TZXBhcmF0b3IsIHNlbGVjdElucHV0Q29udGVudCwgc2VsZWN0SW5wdXRSYW5nZX0gZnJvbSAnLi4vLi4vaW5wdXRzJztcbmltcG9ydCB7bWVyZ2UsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1RleHRNYXNrQ29uZmlnfSBmcm9tICdhbmd1bGFyMi10ZXh0LW1hc2snO1xuaW1wb3J0IHtERUZBVUxUX01BWF9ERUNJTUFMU30gZnJvbSAnLi4vZHVyYXRpb24vZHVyYXRpb24udXRpbHMnO1xuXG5jb25zdCBNQVNLUzoge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgW3BhdHRlcm46IHN0cmluZ106IEFycmF5PHN0cmluZ3xSZWdFeHA+O1xuICB9O1xufSA9IHtcbiAgbGF0aXR1ZGU6IHtcbiAgICBERE1NU1M6IFsnICcsIC9cXGQvLCAvXFxkLywgJ8KwJywgJyAnLCAvXFxkLywgL1xcZC8sICdcXCcnLCAnICcsIC9cXGQvLCAvXFxkLywgJy4nLCAvXFxkLywgL1xcZC8sICdcIiddLFxuICAgIERETU06IFsnICcsIC9cXGQvLCAvXFxkLywgJ8KwJywgJyAnLCAvXFxkLywgL1xcZC8sICcuJywgL1xcZC8sIC9cXGQvLCAvXFxkLywgJ1xcJyddLFxuICAgIEREOiBbL1srLV0vLCAnICcsIC9cXGQvLCAvXFxkLywgJy4nLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkLywgJ8KwJ11cbiAgfSxcbiAgbG9uZ2l0dWRlOiB7XG4gICAgRERNTVNTOiBbL1xcZC8sIC9cXGQvLCAvXFxkLywgJ8KwJywgJyAnLCAvXFxkLywgL1xcZC8sICdcXCcnLCAnICcsIC9cXGQvLCAvXFxkLywgJy4nLCAvXFxkLywgL1xcZC8sICdcIiddLFxuICAgIERETU06IFsvXFxkLywgL1xcZC8sIC9cXGQvLCAnwrAnLCAnICcsIC9cXGQvLCAvXFxkLywgJy4nLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAnXFwnJ10sXG4gICAgREQ6IFsvWystXS8sIC9cXGQvLCAvXFxkLywgL1xcZC8sICcuJywgL1xcZC8sIC9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkLywgL1xcZC8sICfCsCddXG4gIH1cbn07XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtbGF0bG9uZy1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC5sYXRsb25nLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXRlcmlhbC5sYXRsb25nLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hdExhdExvbmdGaWVsZCksXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNYXRMYXRMb25nRmllbGQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByb3RlY3RlZCBkaXNhYmxpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHdyaXRpbmcgPSBmYWxzZTtcblxuICBmb3JtYXRGbjogTGF0TG9uZ0Zvcm1hdEZuO1xuICBmb3JtYXRGbk9wdGlvbnM6IExhdExvbmdGb3JtYXRPcHRpb25zO1xuICB0ZXh0TWFza0NvbmZpZzogVGV4dE1hc2tDb25maWc7XG4gIHRleHRGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIHNpZ25Gb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIG1hc2s6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD4gfCAoKHJhdzogc3RyaW5nKSA9PiBBcnJheTxzdHJpbmcgfCBSZWdFeHA+KSB8IGZhbHNlO1xuICB2YWx1ZTogbnVtYmVyO1xuICBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHNob3dTaWduQ29udHJvbDogYm9vbGVhbjtcblxuICBASW5wdXQoKSBtb2JpbGU6IGJvb2xlYW47XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgfHwgdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHR5cGU6ICdsYXRpdHVkZScgfCAnbG9uZ2l0dWRlJztcblxuICBASW5wdXQoJ2xhdExvbmdQYXR0ZXJuJykgcGF0dGVybjogTGF0TG9uZ1BhdHRlcm47XG5cbiAgQElucHV0KCkgZGVmYXVsdFNpZ246ICctJyB8ICcrJztcblxuICBASW5wdXQoKSBtYXhEZWNpbWFsczogbnVtYmVyID0gTEFUX0xPTkdfREVGQVVMVF9NQVhfREVDSU1BTFM7XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJDaGFyOiBzdHJpbmcgPSBERUZBVUxUX1BMQUNFSE9MREVSX0NIQVI7XG5cbiAgQElucHV0KCkgZmxvYXRMYWJlbDogRmxvYXRMYWJlbFR5cGUgPSAnYXV0byc7XG5cbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXI7XG5cbiAgQE91dHB1dCgpXG4gIG9uQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25Gb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnKSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc3VmZml4Jywge3N0YXRpYzogZmFsc2V9KSBzdWZmaXhEaXY6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZHJlbignaW5qZWN0TWF0U3VmZml4Jykgc3VmZml4SW5qZWN0aW9uczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwRGlyOiBGb3JtR3JvdXBEaXJlY3RpdmVcbiAgKSB7XG4gICAgdGhpcy5tb2JpbGUgPSB0aGlzLnBsYXRmb3JtLmlzKCdtb2JpbGUnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudHlwZSA9IHRoaXMudHlwZSB8fCAnbGF0aXR1ZGUnO1xuICAgIHRoaXMucGF0dGVybiA9IHRoaXMucGF0dGVybiB8fCAnRERNTSc7XG4gICAgdGhpcy5tYXNrID0gTUFTS1NbdGhpcy50eXBlXSAmJiBNQVNLU1t0aGlzLnR5cGVdW3RoaXMucGF0dGVybl07XG4gICAgaWYgKCF0aGlzLm1hc2spIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIHZhbHVlLiBFeHBlY3RlZDogdHlwZTogXFwnbGF0aXR1ZGV8bG9uZ2l0dWRlXFwnIGFuZCBsYXRsb25nUGF0dGVybjogXFwnRER8RERNTXxERE1NU1NcXCcnKTtcbiAgICAgIHRoaXMudHlwZSA9ICdsYXRpdHVkZSc7XG4gICAgICB0aGlzLnBhdHRlcm4gPSAnRERNTSc7XG4gICAgICB0aGlzLm1hc2sgPSBNQVNLU1t0aGlzLnR5cGVdW3RoaXMucGF0dGVybl07XG4gICAgfVxuICAgIGlmICh0aGlzLm1heERlY2ltYWxzKSB7XG4gICAgICBpZiAodGhpcy5tYXhEZWNpbWFscyA8IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBhdHRyaWJ1dGUgXFwnbWF4RGVjaW1hbHNcXCcuIE11c3QgYSBwb3NpdGl2ZSB2YWx1ZS4nKTtcbiAgICAgICAgdGhpcy5tYXhEZWNpbWFscyA9IERFRkFVTFRfTUFYX0RFQ0lNQUxTO1xuICAgICAgfVxuICAgICAgLy8gUmVtb3ZlIG1heCBkZWNpbWFscyBpbiB0aGUgRERNTVNTIGZvcm1hdFxuICAgICAgZWxzZSBpZiAodGhpcy5wYXR0ZXJuID09PSAnREQnKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgSW52YWxpZCBhdHRyaWJ1dGUgJ21heERlY2ltYWxzJyAtIE11c3QgYmUgJzAnIHdoZW4gdXNpbmcgdGhlICdERE1NU1MnIHBhdHRlcm4uYCk7XG4gICAgICAgIHRoaXMubWF4RGVjaW1hbHMgPSA3O1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5wYXR0ZXJuID09PSAnRERNTVNTJykge1xuICAgICAgICBjb25zb2xlLndhcm4oYEludmFsaWQgYXR0cmlidXRlICdtYXhEZWNpbWFscycgLSBNdXN0IGJlICcwJyB3aGVuIHVzaW5nIHRoZSAnRERNTVNTJyBwYXR0ZXJuLmApO1xuICAgICAgICB0aGlzLm1heERlY2ltYWxzID0gMDtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMubWF4RGVjaW1hbHMgIT09IERFRkFVTFRfTUFYX0RFQ0lNQUxTKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgSW52YWxpZCBhdHRyaWJ1dGUgJ21heERlY2ltYWxzJyAtIEV4cGVjdGVkIHZhbHVlOiAke0RFRkFVTFRfTUFYX0RFQ0lNQUxTfS4gT3RoZXIgdmFsdWUgbm90IGltcGxlbWVudGVkLmApO1xuICAgICAgICB0aGlzLm1heERlY2ltYWxzID0gREVGQVVMVF9NQVhfREVDSU1BTFM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zaG93U2lnbkNvbnRyb2wgPSB0aGlzLnBhdHRlcm4gIT09ICdERCc7XG5cbiAgICB0aGlzLmZvcm1hdEZuID0gdGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8gZm9ybWF0TGF0aXR1ZGUgOiBmb3JtYXRMb25naXR1ZGU7XG4gICAgdGhpcy5mb3JtYXRGbk9wdGlvbnMgPSB7cGF0dGVybjogdGhpcy5wYXR0ZXJuLCBtYXhEZWNpbWFsczogdGhpcy5tYXhEZWNpbWFscywgaGlkZVNpZ246IHRoaXMuc2hvd1NpZ25Db250cm9sfTtcblxuICAgIHRoaXMuaW5wdXRQbGFjZWhvbGRlciA9ICdDT01NT04uTEFUX0xPTkcuJyArICh0aGlzLnR5cGUgPT09ICdsb25naXR1ZGUnICYmICdEJyB8fCAnJykgKyB0aGlzLnBhdHRlcm4gKyAnX1BMQUNFSE9MREVSJztcblxuICAgIHRoaXMudGV4dEZvcm1Db250cm9sID0gdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKFxuICAgICAgdGhpcy5yZXF1aXJlZCA/IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtudWxsXVxuICAgICk7XG4gICAgdGhpcy50ZXh0TWFza0NvbmZpZyA9IHttYXNrOiB0aGlzLm1hc2ssIGtlZXBDaGFyUG9zaXRpb25zOiB0cnVlLCBwbGFjZWhvbGRlckNoYXI6IHRoaXMucGxhY2Vob2xkZXJDaGFyfTtcblxuICAgIHRoaXMuc2lnbkZvcm1Db250cm9sID0gdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKFxuICAgICAgdGhpcy5yZXF1aXJlZCA/IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtudWxsXVxuICAgICk7XG5cbiAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbCB8fCB0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLmZvcm1Hcm91cERpciAmJiB0aGlzLmZvcm1Hcm91cERpci5mb3JtLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSBcXCdmb3JtQ29udHJvbFxcJyBvciBcXCdmb3JtQ29udHJvbE5hbWVcXCcgaW4gPG1hdC1sYXRsb25nLWZpZWxkPi4nKTtcblxuICAgIGNvbnN0IGV4aXN0aW5nVmFsaWRhdG9ycyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsaWRhdG9yO1xuICAgIGlmIChleGlzdGluZ1ZhbGlkYXRvcnMpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbXG4gICAgICAgIGV4aXN0aW5nVmFsaWRhdG9ycyxcbiAgICAgICAgdGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8gU2hhcmVkVmFsaWRhdG9ycy5sYXRpdHVkZSA6IFNoYXJlZFZhbGlkYXRvcnMubG9uZ2l0dWRlXG4gICAgICBdKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8gU2hhcmVkVmFsaWRhdG9ycy5sYXRpdHVkZSA6IFNoYXJlZFZhbGlkYXRvcnMubG9uZ2l0dWRlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgbWVyZ2UoXG4gICAgICAgIHRoaXMudGV4dEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcyxcbiAgICAgICAgdGhpcy5zaWduRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHRoaXMub25Gb3JtQ2hhbmdlKHRoaXMudGV4dEZvcm1Db250cm9sLnZhbHVlKSlcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIHN0YXR1cyBjaGFuZ2VzICh3aGVuIGRvbmUgb3V0c2lkZSB0aGUgY29tcG9uZW50ICAtIGUuZy4gd2hlbiBzZXRFcnJvcnMoKSBpcyBjYWxsaW5nIG9uIHRoZSBmb3JtQ29udHJvbClcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoXykgPT4gIXRoaXMucmVhZG9ubHkgJiYgIXRoaXMud3JpdGluZyAmJiAhdGhpcy5kaXNhYmxpbmcpIC8vIFNraXBcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB0aGlzLm1hcmtGb3JDaGVjaygpKVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gSW5qZWN0IHN1ZmZpeCBlbGVtZW50cywgaW50byB0aGUgZmlyc3QgaW5qZWN0aW9uIHBvaW50IGZvdW5kXG4gICAgaWYgKHRoaXMuc3VmZml4RGl2KSB7XG4gICAgICB0aGlzLnN1ZmZpeEluamVjdGlvbnMuZmluZChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5uYXRpdmVFbGVtZW50LmFwcGVuZCh0aGlzLnN1ZmZpeERpdi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5zdWZmaXhEaXYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjZGstdmlzdWFsbHktaGlkZGVuJyk7XG4gICAgICAgIHJldHVybiB0cnVlOyAvLyB0YWtlIG9ubHkgdGhlIGZpcnN0IGluamVjdGlvbiBwb2ludFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMud3JpdGluZykgcmV0dXJuO1xuXG4gICAgdGhpcy52YWx1ZSA9ICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykgPyBwYXJzZUZsb2F0KG9iai5yZXBsYWNlKC8sL2csICcuJykpIDogb2JqO1xuICAgIHRoaXMud3JpdGluZyA9IHRydWU7XG4gICAgY29uc3Qgc3RyVmFsdWUgPSB0aGlzLmZvcm1hdEZuKFxuICAgICAgdGhpcy52YWx1ZSxcbiAgICAgIHtcbiAgICAgICAgLi4udGhpcy5mb3JtYXRGbk9wdGlvbnMsXG4gICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogdGhpcy5wbGFjZWhvbGRlckNoYXJcbiAgICAgIH0pO1xuICAgIGNvbnN0IHNpZ24gPSBpc05vdE5pbCh0aGlzLnZhbHVlKSA/ICh0aGlzLnZhbHVlIDwgMCA/IC0xIDogMSkgOlxuICAgICAgLy8gVXNlIGRlZmF1bHQgc2lnbiwgaWYgYW55XG4gICAgICAodGhpcy5kZWZhdWx0U2lnbiA/ICh0aGlzLmRlZmF1bHRTaWduID09PSAnLScgPyAtMSA6IDEpIDogbnVsbCk7XG5cbiAgICAvLyBERUJVR1xuICAgIC8vIGNvbnNvbGUuZGVidWcoXCJzdHJWYWx1ZTogXCIgKyBzdHJWYWx1ZSlcbiAgICAvLyBjb25zb2xlLmRlYnVnKFwic2lnbjogXCIgKyBzaWduKVxuXG4gICAgdGhpcy50ZXh0Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShzdHJWYWx1ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB0aGlzLnNpZ25Gb3JtQ29udHJvbC5wYXRjaFZhbHVlKHNpZ24sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgdGhpcy53cml0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsaW5nKSByZXR1cm47XG5cbiAgICB0aGlzLmRpc2FibGluZyA9IHRydWU7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudGV4dEZvcm1Db250cm9sLmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLnNpZ25Gb3JtQ29udHJvbC5kaXNhYmxlKHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRleHRGb3JtQ29udHJvbC5lbmFibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLnNpZ25Gb3JtQ29udHJvbC5lbmFibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsaW5nID0gZmFsc2U7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Gb3JtQ2hhbmdlKHN0clZhbHVlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMud3JpdGluZykgcmV0dXJuOyAvLyBTa2lwIGlmIGNhbGwgYnkgc2VsZlxuICAgIHRoaXMud3JpdGluZyA9IHRydWU7XG5cbiAgICBpZiAodGhpcy50ZXh0Rm9ybUNvbnRyb2wuaW52YWxpZCB8fCB0aGlzLnNpZ25Gb3JtQ29udHJvbC5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1BlbmRpbmcoKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0RXJyb3JzKHtcbiAgICAgICAgLi4udGhpcy5mb3JtQ29udHJvbC5lcnJvcnMsXG4gICAgICAgIC4uLnRoaXMudGV4dEZvcm1Db250cm9sLmVycm9ycyxcbiAgICAgICAgLi4udGhpcy5zaWduRm9ybUNvbnRyb2wuZXJyb3JzXG4gICAgICB9KTtcbiAgICAgIHRoaXMud3JpdGluZyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gaXNOb3ROaWxPckJsYW5rKHN0clZhbHVlKSA/IHBhcnNlTGF0aXR1ZGVPckxvbmdpdHVkZShzdHJWYWx1ZSwgdGhpcy5wYXR0ZXJuLCA3IC8qPXByZWNpc2lvbiBvZiB0aGUgY29udmVydGVkIGRvdWJsZSB2YWx1ZSAqLywgdGhpcy5wbGFjZWhvbGRlckNoYXIpIDogbnVsbDtcblxuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKCdwYXJzZWRWYWx1ZT0nLCBwYXJzZWRWYWx1ZSk7XG5cbiAgICBpZiAoaXNOYU4ocGFyc2VkVmFsdWUpKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1BlbmRpbmcoKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0RXJyb3JzKHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJyA/IHtsYXRpdHVkZTogdHJ1ZX0gOiB7bG9uZ2l0dWRlOiB0cnVlfSk7XG4gICAgICB0aGlzLndyaXRpbmcgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2lnbiA9ICh0aGlzLnBhdHRlcm4gPT09ICdERCcpID8gMSAvKmlnbm9yZSBzaWduKi8gOiAodGhpcy5zaWduRm9ybUNvbnRyb2wudmFsdWUgfHwgMSk7XG4gICAgdGhpcy52YWx1ZSA9IGlzTm90TmlsKHBhcnNlZFZhbHVlKSA/IHNpZ24gKiBwYXJzZWRWYWx1ZSA6IG51bGw7XG5cbiAgICAvLyBHZXQgdGhlIG1vZGVsIHZhbHVlXG4gICAgLy9jb25zb2xlLmRlYnVnKFwiW21hdC1sYXRsb25dIFNldHRpbmcgdmFsdWUge1wiICsgdGhpcy52YWx1ZSArIFwifSBwYXJzZWQgZnJvbSB7XCIgKyBzdHJWYWx1ZSArIFwifVwiKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUodGhpcy52YWx1ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB0aGlzLndyaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGNoZWNrSWZUb3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQgfHwgdGhpcy50ZXh0Rm9ybUNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgX29uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcblxuICAgIC8vIEFwcGx5IHRoZSBkZWZhdWx0IHNpZ24sIHdoZW4gcGF0dGVybiBpcyBERCBhbmQgZmllbGQgaXMgZW1wdHlcbiAgICBpZiAoaXNOaWwodGhpcy52YWx1ZSkpIHtcbiAgICAgIGlmICh0aGlzLmRlZmF1bHRTaWduKSB7XG4gICAgICAgIC8vIENvbXB1dGUgdGhlIHRleHQgdmFsdWUsIHVzaW5nIHRoZSBkZWZhdWx0IHNpZ25cbiAgICAgICAgY29uc3QgZGVmYXVsdFNpZ24gPSB0aGlzLmRlZmF1bHRTaWduID09PSAnLScgPyAtMSA6IDE7XG5cbiAgICAgICAgaWYgKHRoaXMucGF0dGVybiA9PT0gJ0REJykge1xuICAgICAgICAgIGxldCB2YWx1ZVN0ciA9IHRoaXMuZm9ybWF0Rm4oZGVmYXVsdFNpZ24sIHsuLi50aGlzLmZvcm1hdEZuT3B0aW9ucywgcGxhY2Vob2xkZXJDaGFyOiB0aGlzLnBsYWNlaG9sZGVyQ2hhcn0pO1xuICAgICAgICAgIHZhbHVlU3RyID0gdmFsdWVTdHIgJiYgdmFsdWVTdHIucmVwbGFjZSgnMScsIHRoaXMucGxhY2Vob2xkZXJDaGFyKTtcblxuICAgICAgICAgIC8vIFdhaXQgZW5kIG9mIGZvY3VzIGFuaW1hdGlvbiAobGFiZWwgc2hvdWxkIG1vdmUgdG8gdG9wKVxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gU2V0IHRoZSB2YWx1ZVxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlU3RyO1xuXG4gICAgICAgICAgICAvLyBNb3ZlIGN1cnNvciBhZnRlciB0aGUgc2lnblxuICAgICAgICAgICAgY29uc3QgY2FyZXRJbmRleCA9ICh0aGlzLnR5cGUgPT09ICdsYXRpdHVkZScpID8gMiA6IDE7XG4gICAgICAgICAgICBzZWxlY3RJbnB1dFJhbmdlKGV2ZW50LnRhcmdldCwgY2FyZXRJbmRleCk7XG4gICAgICAgICAgfSwgMjUwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNpZ25Gb3JtQ29udHJvbC5zZXRWYWx1ZShkZWZhdWx0U2lnbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZWxlY3QgdGhlIGNvbnRlbnQgKGlmIHRoZXJlIGlzIGEgdmFsdWUpXG4gICAgZWxzZSB7XG4gICAgICBzZWxlY3RJbnB1dENvbnRlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIF9vbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy5jaGVja0lmVG91Y2hlZCgpO1xuICAgIGlmICh0b3VjaGVkICYmIGlzTmlsKHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuICAgIHRoaXMub25CbHVyLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgbW92ZUNhcmV0VG9TZXBhcmF0b3IoZXZlbnQ6IGFueSwgZm9yd2FyZDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIC8vIE1vdmUgdG8gdGhlIHNwYWNlIHNlcGFyYXRvclxuICAgIHJldHVybiBtb3ZlSW5wdXRDYXJldFRvU2VwYXJhdG9yKGV2ZW50LCAnICcsIGZvcndhcmQpO1xuICB9XG5cbiAgb25LZXlwcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIE51bWJlciBlbnRlcmVkIG9yIG9uZSBvZiB0aGUgNCBkaXJlY3Rpb24gdXAsIGRvd24sIGxlZnQgYW5kIHJpZ2h0XG4gICAgaWYgKChldmVudC53aGljaCA+PSA0OCAmJiBldmVudC53aGljaCA8PSA1NykgfHwgKGV2ZW50LndoaWNoID49IDM3ICYmIGV2ZW50LndoaWNoIDw9IDQwKSkge1xuICAgICAgLy9jb25zb2xlLmRlYnVnKCdpbnB1dCBudW1iZXIgZW50ZXJlZCA6JyArIGV2ZW50LndoaWNoICsgJyAnICsgZXZlbnQua2V5Q29kZSArICcgJyArIGV2ZW50LmNoYXJDb2RlKTtcbiAgICAgIC8vIE9LXG4gICAgfVxuICAgIC8vIERlY2ltYWwgc2VwYXJhdG9yIGVudGVyZWRcbiAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICcuJyB8fCBldmVudC5rZXkgPT09ICcsJykge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vIGNvbnNvbGUuZGVidWcoJ2lucHV0IGRlY2ltYWwgc2VwYXJhdG9yIGVudGVyZWQgOicgKyBldmVudC5jb2RlKTtcblxuICAgICAgLy8gTW92ZSBjYXJldCBhZnRlciBwb2ludFxuICAgICAgbW92ZUlucHV0Q2FyZXRUb1NlcGFyYXRvcihldmVudCwgJy4nKTtcblxuICAgICAgLy8gT0tcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29tbWFuZCBlbnRlcmVkIChkZWxldGUsIGJhY2tzcGFjZSBvciBvbmUgb2YgdGhlIDQgZGlyZWN0aW9uIHVwLCBkb3duLCBsZWZ0IGFuZCByaWdodClcbiAgICAgIGlmICgoZXZlbnQua2V5Q29kZSA+PSAzNyAmJiBldmVudC5rZXlDb2RlIDw9IDQwKSB8fCBldmVudC5rZXlDb2RlID09IDQ2IHx8IGV2ZW50LndoaWNoID09IDggfHwgZXZlbnQua2V5Q29kZSA9PSA5KSB7XG4gICAgICAgIC8vIERFQlVHXG4gICAgICAgIC8vY29uc29sZS5kZWJ1ZygnaW5wdXQgY29tbWFuZCBlbnRlcmVkOicgKyBldmVudC53aGljaCArICcgJyArIGV2ZW50LmtleUNvZGUgKyAnICcgKyBldmVudC5jaGFyQ29kZSk7XG5cbiAgICAgICAgLy8gT0tcbiAgICAgIH1cbiAgICAgIC8vIFNpZ24gZW50ZXJlZCAoJysnIG9yICctJylcbiAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IDQzIHx8IGV2ZW50LmtleUNvZGUgPT09IDQ1KSB7XG4gICAgICAgIC8vIERFQlVHXG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoJ2lucHV0IHNpZ24gZW50ZXJlZDonICsgZXZlbnQud2hpY2ggKyAnICcgKyBldmVudC5rZXlDb2RlICsgJyAnICsgZXZlbnQuY2hhckNvZGUpO1xuICAgICAgICBjb25zdCBjYXJldFBvc2l0aW9uID0gZ2V0Q2FyZXRQb3NpdGlvbihldmVudC50YXJnZXQpO1xuICAgICAgICBpZiAodGhpcy5wYXR0ZXJuID09PSAnREQnICYmIGNhcmV0UG9zaXRpb24gPiAwKSB7XG4gICAgICAgICAgY29uc3Qgc2lnbiA9IGV2ZW50LmtleTtcbiAgICAgICAgICAvLyBXYWl0IGtleSBhcHBseVxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgIXZhbHVlLnN0YXJ0c1dpdGgoc2lnbikpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gc2lnbiArICh2YWx1ZS5sZW5ndGggPiAxID8gdmFsdWUuc3Vic3RyKDEpIDogJycpO1xuXG4gICAgICAgICAgICAvLyBERUJVR1xuICAgICAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhcInNpZ24gZW50ZXJlZC4gVXBkYXRpbmcgaW5wdXQgdmFsdWUgdG86XCIsIG5ld1ZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgc2VsZWN0SW5wdXRSYW5nZSh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBjYXJldFBvc2l0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9LXG4gICAgICB9XG4gICAgICAvLyBEaXJlY3Rpb24gY2hhciAoY2FwaXRhbGl6ZWQpXG4gICAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICdOJyB8fCBldmVudC5rZXkgPT09ICdTJyB8fCBldmVudC5rZXkgPT09ICdFJyB8fCBldmVudC5rZXkgPT09ICdXJykge1xuICAgICAgICAvLyBERUJVR1xuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKCdpbnB1dCBkaXJlY3Rpb24gZW50ZXJlZDonICsgZXZlbnQud2hpY2ggKyAnICcgKyBldmVudC5rZXlDb2RlICsgJyAnICsgZXZlbnQuY2hhckNvZGUpO1xuXG4gICAgICAgIC8vIE9LXG4gICAgICB9XG4gICAgICAvLyBEaXJlY3Rpb24gY2hhclxuICAgICAgZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnbicgfHwgZXZlbnQua2V5ID09PSAncycgfHwgZXZlbnQua2V5ID09PSAnZScgfHwgZXZlbnQua2V5ID09PSAndycpIHtcbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZygnaW5wdXQgZGlyZWN0aW9uIGVudGVyZWQ6JyArIGV2ZW50LndoaWNoICsgJyAnICsgZXZlbnQua2V5Q29kZSArICcgJyArIGV2ZW50LmNoYXJDb2RlKTtcblxuICAgICAgICAvLyBDYXBpdGFsaXplICh3aXRoIGEgZGVsYXksIHRvIGJlIHN1cmUgdGhlIGtleSBoYXMgYmVlbiBhcHBsaWVkIHRvIGlucHV0IHRleHQpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH0sIDEwKTtcblxuICAgICAgICAvLyBPS1xuICAgICAgfVxuXG4gICAgICAvLyBBbnkgb3RoZXIga2V5Ym9hcmQgZXZlbnRzXG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdpbnB1dCBub3QgbnVtYmVyIGVudGVyZWQgOicgKyBldmVudC53aGljaCArICcgJyArIGV2ZW50LmtleUNvZGUgKyAnICcgKyBldmVudC5jaGFyQ29kZSArICcgJyArIGV2ZW50LmNvZGUgKTtcblxuICAgICAgICAvLyBLTzogY2FuY2VsIHRoZSBldmVudFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuXG4iXX0=
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubGF0bG9uZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqTCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUF1QixXQUFXLEVBQWUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakksT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsNkJBQTZCLEVBQXlELHdCQUF3QixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDaEwsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMvRyxPQUFPLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxNQUFNLEtBQUssR0FJUDtJQUNGLFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQzVGLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1FBQzFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztLQUNsRjtJQUNELFNBQVMsRUFBRTtRQUNULE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQzdGLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1FBQzNFLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztLQUNuRjtDQUNGLENBQUM7QUFFRixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDOztBQWVGLE1BQU0sT0FBTyxlQUFlO0lBK0QxQixZQUNVLFFBQWtCLEVBQ2xCLFNBQTJCLEVBQzNCLFdBQXdCLEVBQ3hCLEVBQXFCLEVBQ1QsWUFBZ0M7UUFKNUMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNULGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQW5FOUMsc0JBQWlCLEdBQXFCLElBQUksQ0FBQztRQUMzQyx1QkFBa0IsR0FBZSxJQUFJLENBQUM7UUFDdEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUUxQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBNkJULGdCQUFXLEdBQVcsNkJBQTZCLENBQUM7UUFFcEQsb0JBQWUsR0FBVyx3QkFBd0IsQ0FBQztRQUVuRCxlQUFVLEdBQW1CLE1BQU0sQ0FBQztRQVdwQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSzFCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBR3hDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBV3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQW5ERCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDcEQsQ0FBQztJQW9CRCxJQUFhLFFBQVEsQ0FBQyxLQUFjO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUF3QkQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHdHQUF3RyxDQUFDLENBQUM7WUFDeEgsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFO2dCQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7Z0JBQzNFLElBQUksQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUM7YUFDekM7WUFDRCwyQ0FBMkM7aUJBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztnQkFDL0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7YUFDdEI7aUJBQ0ksSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtnQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO2dCQUMvRixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQzthQUN0QjtpQkFDSSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssb0JBQW9CLEVBQUU7Z0JBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQUMscURBQXFELG9CQUFvQixnQ0FBZ0MsQ0FBQyxDQUFDO2dCQUN4SCxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDO2FBQ3pDO1NBQ0Y7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDO1FBRTdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1FBQzVFLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBQyxDQUFDO1FBRTlHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztRQUV0SCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3JELENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFDLENBQUM7UUFFeEcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUNyRCxDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBZ0IsQ0FBQztRQUNwSixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRGQUE0RixDQUFDLENBQUM7UUFFckksTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN0RCxJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO2dCQUM3QixrQkFBa0I7Z0JBQ2xCLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVM7YUFDbEYsQ0FBQyxDQUFDO1NBQ0o7YUFDSTtZQUNILElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ25IO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLEtBQUssQ0FDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQ2xDO2FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDbkUsQ0FBQztRQUVGLGlIQUFpSDtRQUNqSCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhO2FBQzNCLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTztTQUMxRTthQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQ3pDLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFRO1FBQ2pCLElBQUksSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRXpCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNsRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUM1QixJQUFJLENBQUMsS0FBSyxrQ0FFTCxJQUFJLENBQUMsZUFBZSxLQUN2QixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsSUFDckMsQ0FBQztRQUNMLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELDJCQUEyQjtZQUMzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEUsUUFBUTtRQUNSLHlDQUF5QztRQUN6QyxpQ0FBaUM7UUFFakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFFM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1NBQ2xFO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxZQUFZLENBQUMsUUFBUTtRQUMzQixJQUFJLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxDQUFDLHVCQUF1QjtRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLCtDQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUM5QixDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsT0FBTztTQUNSO1FBRUQsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsNkNBQTZDLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFL0ssUUFBUTtRQUNSLDZDQUE2QztRQUU3QyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUM1RixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFDRCxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUUvRCxzQkFBc0I7UUFDdEIsa0dBQWtHO1FBQ2xHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUU7WUFDNUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBaUI7UUFFeEIsZ0VBQWdFO1FBQ2hFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLGlEQUFpRDtnQkFDakQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXRELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7b0JBQ3pCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxrQ0FBTSxJQUFJLENBQUMsZUFBZSxLQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxJQUFFLENBQUM7b0JBQzVHLFFBQVEsR0FBRyxRQUFRLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUVuRSx5REFBeUQ7b0JBQ3pELFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ2QsZ0JBQWdCO3dCQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO3dCQUVqRCw2QkFBNkI7d0JBQzdCLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3RELGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7b0JBQzdDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDVDtxQkFDSTtvQkFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDNUM7YUFDRjtTQUNGO1FBRUQsMkNBQTJDO2FBQ3RDO1lBQ0gsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBaUI7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFVLEVBQUUsT0FBZ0I7UUFDL0MsOEJBQThCO1FBQzlCLE9BQU8seUJBQXlCLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQW9CO1FBQzdCLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDeEYscUdBQXFHO1lBQ3JHLEtBQUs7U0FDTjtRQUNELDRCQUE0QjthQUN2QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFO1lBQy9DLFFBQVE7WUFDUixtRUFBbUU7WUFFbkUseUJBQXlCO1lBQ3pCLHlCQUF5QixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUV0QyxLQUFLO1NBQ047YUFBTTtZQUNMLHlGQUF5RjtZQUN6RixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRTtnQkFDakgsUUFBUTtnQkFDUixxR0FBcUc7Z0JBRXJHLEtBQUs7YUFDTjtZQUNELDRCQUE0QjtpQkFDdkIsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRTtnQkFDckQsUUFBUTtnQkFDUixtR0FBbUc7Z0JBQ25HLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFO29CQUM5QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO29CQUN2QixpQkFBaUI7b0JBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztvQkFDcEQsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBRWxFLFFBQVE7d0JBQ1IscUVBQXFFO3dCQUVyRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO3dCQUNqRCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztxQkFDbEU7b0JBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUN4QjtnQkFFRCxLQUFLO2FBQ047WUFDRCwrQkFBK0I7aUJBQzFCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUU7Z0JBQ3pGLFFBQVE7Z0JBQ1Isd0dBQXdHO2dCQUV4RyxLQUFLO2FBQ047WUFDRCxpQkFBaUI7aUJBQ1osSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRTtnQkFDekYsUUFBUTtnQkFDUix3R0FBd0c7Z0JBRXhHLCtFQUErRTtnQkFDL0UsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM5RixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBRVAsS0FBSzthQUNOO1lBRUQsNEJBQTRCO2lCQUN2QjtnQkFDSCxRQUFRO2dCQUNSLDZIQUE2SDtnQkFFN0gsdUJBQXVCO2dCQUN2QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDeEI7U0FDRjtJQUNILENBQUM7SUFFUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQzs7O1lBeFlGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qiw0bUtBQXNDO2dCQUV0QyxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsS0FBSyxFQUFFLElBQUk7d0JBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7cUJBQy9DO2lCQUNGO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBOUNPLFFBQVE7WUFHUixnQkFBZ0I7WUFETSxXQUFXO1lBSFIsaUJBQWlCO1lBR00sa0JBQWtCLHVCQWlIckUsUUFBUTs7O3FCQWxEVixLQUFLOzBCQU1MLEtBQUs7OEJBRUwsS0FBSzswQkFFTCxLQUFLO21CQUVMLEtBQUs7c0JBRUwsS0FBSyxTQUFDLGdCQUFnQjswQkFFdEIsS0FBSzswQkFFTCxLQUFLOzhCQUVMLEtBQUs7eUJBRUwsS0FBSzt1QkFFTCxLQUFLO3VCQVNMLEtBQUs7dUJBRUwsS0FBSztxQkFFTCxNQUFNO3NCQUdOLE1BQU07MkJBR04sU0FBUyxTQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGxhdGZvcm19IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7RmxvYXRMYWJlbFR5cGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtTaGFyZWRWYWxpZGF0b3JzfSBmcm9tICcuLi8uLi92YWxpZGF0b3IvdmFsaWRhdG9ycyc7XG5pbXBvcnQge2Zvcm1hdExhdGl0dWRlLCBmb3JtYXRMb25naXR1ZGUsIExBVF9MT05HX0RFRkFVTFRfTUFYX0RFQ0lNQUxTLCBMYXRMb25nRm9ybWF0Rm4sIExhdExvbmdGb3JtYXRPcHRpb25zLCBMYXRMb25nUGF0dGVybiwgcGFyc2VMYXRpdHVkZU9yTG9uZ2l0dWRlfSBmcm9tICcuL2xhdGxvbmcudXRpbHMnO1xuaW1wb3J0IHtERUZBVUxUX1BMQUNFSE9MREVSX0NIQVJ9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtpc05pbCwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFua30gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7Z2V0Q2FyZXRQb3NpdGlvbiwgbW92ZUlucHV0Q2FyZXRUb1NlcGFyYXRvciwgc2VsZWN0SW5wdXRDb250ZW50LCBzZWxlY3RJbnB1dFJhbmdlfSBmcm9tICcuLi8uLi9pbnB1dHMnO1xuaW1wb3J0IHttZXJnZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7VGV4dE1hc2tDb25maWd9IGZyb20gJ2FuZ3VsYXIyLXRleHQtbWFzayc7XG5pbXBvcnQge0RFRkFVTFRfTUFYX0RFQ0lNQUxTfSBmcm9tICcuLi9kdXJhdGlvbi9kdXJhdGlvbi51dGlscyc7XG5cbmNvbnN0IE1BU0tTOiB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBbcGF0dGVybjogc3RyaW5nXTogQXJyYXk8c3RyaW5nfFJlZ0V4cD47XG4gIH07XG59ID0ge1xuICBsYXRpdHVkZToge1xuICAgIERETU1TUzogWycgJywgL1xcZC8sIC9cXGQvLCAnwrAnLCAnICcsIC9cXGQvLCAvXFxkLywgJ1xcJycsICcgJywgL1xcZC8sIC9cXGQvLCAnLicsIC9cXGQvLCAvXFxkLywgJ1wiJ10sXG4gICAgRERNTTogWycgJywgL1xcZC8sIC9cXGQvLCAnwrAnLCAnICcsIC9cXGQvLCAvXFxkLywgJy4nLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAnXFwnJ10sXG4gICAgREQ6IFsvWystXS8sICcgJywgL1xcZC8sIC9cXGQvLCAnLicsIC9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAnwrAnXVxuICB9LFxuICBsb25naXR1ZGU6IHtcbiAgICBERE1NU1M6IFsvXFxkLywgL1xcZC8sIC9cXGQvLCAnwrAnLCAnICcsIC9cXGQvLCAvXFxkLywgJ1xcJycsICcgJywgL1xcZC8sIC9cXGQvLCAnLicsIC9cXGQvLCAvXFxkLywgJ1wiJ10sXG4gICAgRERNTTogWy9cXGQvLCAvXFxkLywgL1xcZC8sICfCsCcsICcgJywgL1xcZC8sIC9cXGQvLCAnLicsIC9cXGQvLCAvXFxkLywgL1xcZC8sICdcXCcnXSxcbiAgICBERDogWy9bKy1dLywgL1xcZC8sIC9cXGQvLCAvXFxkLywgJy4nLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkLywgL1xcZC8sIC9cXGQvLCAvXFxkLywgJ8KwJ11cbiAgfVxufTtcblxuY29uc3Qgbm9vcCA9ICgpID0+IHtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1sYXRsb25nLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdGVyaWFsLmxhdGxvbmcuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hdGVyaWFsLmxhdGxvbmcuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWF0TGF0TG9uZ0ZpZWxkKSxcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1hdExhdExvbmdGaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJvdGVjdGVkIGRpc2FibGluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgd3JpdGluZyA9IGZhbHNlO1xuXG4gIF9yZWFkb25seSA9IGZhbHNlO1xuICBmb3JtYXRGbjogTGF0TG9uZ0Zvcm1hdEZuO1xuICBmb3JtYXRGbk9wdGlvbnM6IExhdExvbmdGb3JtYXRPcHRpb25zO1xuICB0ZXh0TWFza0NvbmZpZzogVGV4dE1hc2tDb25maWc7XG4gIHRleHRGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIHNpZ25Gb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIG1hc2s6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD4gfCAoKHJhdzogc3RyaW5nKSA9PiBBcnJheTxzdHJpbmcgfCBSZWdFeHA+KSB8IGZhbHNlO1xuICB2YWx1ZTogbnVtYmVyO1xuICBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHNob3dTaWduQ29udHJvbDogYm9vbGVhbjtcblxuICBASW5wdXQoKSBtb2JpbGU6IGJvb2xlYW47XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgfHwgdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHR5cGU6ICdsYXRpdHVkZScgfCAnbG9uZ2l0dWRlJztcblxuICBASW5wdXQoJ2xhdExvbmdQYXR0ZXJuJykgcGF0dGVybjogTGF0TG9uZ1BhdHRlcm47XG5cbiAgQElucHV0KCkgZGVmYXVsdFNpZ246ICctJyB8ICcrJztcblxuICBASW5wdXQoKSBtYXhEZWNpbWFsczogbnVtYmVyID0gTEFUX0xPTkdfREVGQVVMVF9NQVhfREVDSU1BTFM7XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJDaGFyOiBzdHJpbmcgPSBERUZBVUxUX1BMQUNFSE9MREVSX0NIQVI7XG5cbiAgQElucHV0KCkgZmxvYXRMYWJlbDogRmxvYXRMYWJlbFR5cGUgPSAnYXV0byc7XG5cbiAgQElucHV0KCkgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKXtcbiAgICB0aGlzLl9yZWFkb25seSA9IHZhbHVlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICB9XG5cbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKVxuICBvbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uRm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwRGlyOiBGb3JtR3JvdXBEaXJlY3RpdmVcbiAgKSB7XG4gICAgdGhpcy5tb2JpbGUgPSB0aGlzLnBsYXRmb3JtLmlzKCdtb2JpbGUnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudHlwZSA9IHRoaXMudHlwZSB8fCAnbGF0aXR1ZGUnO1xuICAgIHRoaXMucGF0dGVybiA9IHRoaXMucGF0dGVybiB8fCAnRERNTSc7XG4gICAgdGhpcy5tYXNrID0gTUFTS1NbdGhpcy50eXBlXSAmJiBNQVNLU1t0aGlzLnR5cGVdW3RoaXMucGF0dGVybl07XG4gICAgaWYgKCF0aGlzLm1hc2spIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIHZhbHVlLiBFeHBlY3RlZDogdHlwZTogXFwnbGF0aXR1ZGV8bG9uZ2l0dWRlXFwnIGFuZCBsYXRsb25nUGF0dGVybjogXFwnRER8RERNTXxERE1NU1NcXCcnKTtcbiAgICAgIHRoaXMudHlwZSA9ICdsYXRpdHVkZSc7XG4gICAgICB0aGlzLnBhdHRlcm4gPSAnRERNTSc7XG4gICAgICB0aGlzLm1hc2sgPSBNQVNLU1t0aGlzLnR5cGVdW3RoaXMucGF0dGVybl07XG4gICAgfVxuICAgIGlmICh0aGlzLm1heERlY2ltYWxzKSB7XG4gICAgICBpZiAodGhpcy5tYXhEZWNpbWFscyA8IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBhdHRyaWJ1dGUgXFwnbWF4RGVjaW1hbHNcXCcuIE11c3QgYSBwb3NpdGl2ZSB2YWx1ZS4nKTtcbiAgICAgICAgdGhpcy5tYXhEZWNpbWFscyA9IERFRkFVTFRfTUFYX0RFQ0lNQUxTO1xuICAgICAgfVxuICAgICAgLy8gUmVtb3ZlIG1heCBkZWNpbWFscyBpbiB0aGUgRERNTVNTIGZvcm1hdFxuICAgICAgZWxzZSBpZiAodGhpcy5wYXR0ZXJuID09PSAnREQnKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgSW52YWxpZCBhdHRyaWJ1dGUgJ21heERlY2ltYWxzJyAtIE11c3QgYmUgJzAnIHdoZW4gdXNpbmcgdGhlICdERE1NU1MnIHBhdHRlcm4uYCk7XG4gICAgICAgIHRoaXMubWF4RGVjaW1hbHMgPSA3O1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5wYXR0ZXJuID09PSAnRERNTVNTJykge1xuICAgICAgICBjb25zb2xlLndhcm4oYEludmFsaWQgYXR0cmlidXRlICdtYXhEZWNpbWFscycgLSBNdXN0IGJlICcwJyB3aGVuIHVzaW5nIHRoZSAnRERNTVNTJyBwYXR0ZXJuLmApO1xuICAgICAgICB0aGlzLm1heERlY2ltYWxzID0gMDtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMubWF4RGVjaW1hbHMgIT09IERFRkFVTFRfTUFYX0RFQ0lNQUxTKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgSW52YWxpZCBhdHRyaWJ1dGUgJ21heERlY2ltYWxzJyAtIEV4cGVjdGVkIHZhbHVlOiAke0RFRkFVTFRfTUFYX0RFQ0lNQUxTfS4gT3RoZXIgdmFsdWUgbm90IGltcGxlbWVudGVkLmApO1xuICAgICAgICB0aGlzLm1heERlY2ltYWxzID0gREVGQVVMVF9NQVhfREVDSU1BTFM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zaG93U2lnbkNvbnRyb2wgPSB0aGlzLnBhdHRlcm4gIT09ICdERCc7XG5cbiAgICB0aGlzLmZvcm1hdEZuID0gdGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8gZm9ybWF0TGF0aXR1ZGUgOiBmb3JtYXRMb25naXR1ZGU7XG4gICAgdGhpcy5mb3JtYXRGbk9wdGlvbnMgPSB7cGF0dGVybjogdGhpcy5wYXR0ZXJuLCBtYXhEZWNpbWFsczogdGhpcy5tYXhEZWNpbWFscywgaGlkZVNpZ246IHRoaXMuc2hvd1NpZ25Db250cm9sfTtcblxuICAgIHRoaXMuaW5wdXRQbGFjZWhvbGRlciA9ICdDT01NT04uTEFUX0xPTkcuJyArICh0aGlzLnR5cGUgPT09ICdsb25naXR1ZGUnICYmICdEJyB8fCAnJykgKyB0aGlzLnBhdHRlcm4gKyAnX1BMQUNFSE9MREVSJztcblxuICAgIHRoaXMudGV4dEZvcm1Db250cm9sID0gdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKFxuICAgICAgdGhpcy5yZXF1aXJlZCA/IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtudWxsXVxuICAgICk7XG4gICAgdGhpcy50ZXh0TWFza0NvbmZpZyA9IHttYXNrOiB0aGlzLm1hc2ssIGtlZXBDaGFyUG9zaXRpb25zOiB0cnVlLCBwbGFjZWhvbGRlckNoYXI6IHRoaXMucGxhY2Vob2xkZXJDaGFyfTtcblxuICAgIHRoaXMuc2lnbkZvcm1Db250cm9sID0gdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKFxuICAgICAgdGhpcy5yZXF1aXJlZCA/IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtudWxsXVxuICAgICk7XG5cbiAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbCB8fCB0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLmZvcm1Hcm91cERpciAmJiB0aGlzLmZvcm1Hcm91cERpci5mb3JtLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSBcXCdmb3JtQ29udHJvbFxcJyBvciBcXCdmb3JtQ29udHJvbE5hbWVcXCcgaW4gPG1hdC1sYXRsb25nLWZpZWxkPi4nKTtcblxuICAgIGNvbnN0IGV4aXN0aW5nVmFsaWRhdG9ycyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsaWRhdG9yO1xuICAgIGlmIChleGlzdGluZ1ZhbGlkYXRvcnMpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbXG4gICAgICAgIGV4aXN0aW5nVmFsaWRhdG9ycyxcbiAgICAgICAgdGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8gU2hhcmVkVmFsaWRhdG9ycy5sYXRpdHVkZSA6IFNoYXJlZFZhbGlkYXRvcnMubG9uZ2l0dWRlXG4gICAgICBdKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8gU2hhcmVkVmFsaWRhdG9ycy5sYXRpdHVkZSA6IFNoYXJlZFZhbGlkYXRvcnMubG9uZ2l0dWRlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgbWVyZ2UoXG4gICAgICAgIHRoaXMudGV4dEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcyxcbiAgICAgICAgdGhpcy5zaWduRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHRoaXMub25Gb3JtQ2hhbmdlKHRoaXMudGV4dEZvcm1Db250cm9sLnZhbHVlKSlcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIHN0YXR1cyBjaGFuZ2VzICh3aGVuIGRvbmUgb3V0c2lkZSB0aGUgY29tcG9uZW50ICAtIGUuZy4gd2hlbiBzZXRFcnJvcnMoKSBpcyBjYWxsaW5nIG9uIHRoZSBmb3JtQ29udHJvbClcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoXykgPT4gIXRoaXMucmVhZG9ubHkgJiYgIXRoaXMud3JpdGluZyAmJiAhdGhpcy5kaXNhYmxpbmcpIC8vIFNraXBcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB0aGlzLm1hcmtGb3JDaGVjaygpKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53cml0aW5nKSByZXR1cm47XG5cbiAgICB0aGlzLnZhbHVlID0gKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSA/IHBhcnNlRmxvYXQob2JqLnJlcGxhY2UoLywvZywgJy4nKSkgOiBvYmo7XG4gICAgdGhpcy53cml0aW5nID0gdHJ1ZTtcbiAgICBjb25zdCBzdHJWYWx1ZSA9IHRoaXMuZm9ybWF0Rm4oXG4gICAgICB0aGlzLnZhbHVlLFxuICAgICAge1xuICAgICAgICAuLi50aGlzLmZvcm1hdEZuT3B0aW9ucyxcbiAgICAgICAgcGxhY2Vob2xkZXJDaGFyOiB0aGlzLnBsYWNlaG9sZGVyQ2hhclxuICAgICAgfSk7XG4gICAgY29uc3Qgc2lnbiA9IGlzTm90TmlsKHRoaXMudmFsdWUpID8gKHRoaXMudmFsdWUgPCAwID8gLTEgOiAxKSA6XG4gICAgICAvLyBVc2UgZGVmYXVsdCBzaWduLCBpZiBhbnlcbiAgICAgICh0aGlzLmRlZmF1bHRTaWduID8gKHRoaXMuZGVmYXVsdFNpZ24gPT09ICctJyA/IC0xIDogMSkgOiBudWxsKTtcblxuICAgIC8vIERFQlVHXG4gICAgLy8gY29uc29sZS5kZWJ1ZyhcInN0clZhbHVlOiBcIiArIHN0clZhbHVlKVxuICAgIC8vIGNvbnNvbGUuZGVidWcoXCJzaWduOiBcIiArIHNpZ24pXG5cbiAgICB0aGlzLnRleHRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHN0clZhbHVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIHRoaXMuc2lnbkZvcm1Db250cm9sLnBhdGNoVmFsdWUoc2lnbiwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB0aGlzLndyaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxpbmcpIHJldHVybjtcblxuICAgIHRoaXMuZGlzYWJsaW5nID0gdHJ1ZTtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy50ZXh0Rm9ybUNvbnRyb2wuZGlzYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgIHRoaXMuc2lnbkZvcm1Db250cm9sLmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGV4dEZvcm1Db250cm9sLmVuYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgIHRoaXMuc2lnbkZvcm1Db250cm9sLmVuYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG4gICAgdGhpcy5kaXNhYmxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZvcm1DaGFuZ2Uoc3RyVmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53cml0aW5nKSByZXR1cm47IC8vIFNraXAgaWYgY2FsbCBieSBzZWxmXG4gICAgdGhpcy53cml0aW5nID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLnRleHRGb3JtQ29udHJvbC5pbnZhbGlkIHx8IHRoaXMuc2lnbkZvcm1Db250cm9sLmludmFsaWQpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzUGVuZGluZygpO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAuLi50aGlzLmZvcm1Db250cm9sLmVycm9ycyxcbiAgICAgICAgLi4udGhpcy50ZXh0Rm9ybUNvbnRyb2wuZXJyb3JzLFxuICAgICAgICAuLi50aGlzLnNpZ25Gb3JtQ29udHJvbC5lcnJvcnNcbiAgICAgIH0pO1xuICAgICAgdGhpcy53cml0aW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkVmFsdWUgPSBpc05vdE5pbE9yQmxhbmsoc3RyVmFsdWUpID8gcGFyc2VMYXRpdHVkZU9yTG9uZ2l0dWRlKHN0clZhbHVlLCB0aGlzLnBhdHRlcm4sIDcgLyo9cHJlY2lzaW9uIG9mIHRoZSBjb252ZXJ0ZWQgZG91YmxlIHZhbHVlICovLCB0aGlzLnBsYWNlaG9sZGVyQ2hhcikgOiBudWxsO1xuXG4gICAgLy8gREVCVUdcbiAgICAvL2NvbnNvbGUuZGVidWcoJ3BhcnNlZFZhbHVlPScsIHBhcnNlZFZhbHVlKTtcblxuICAgIGlmIChpc05hTihwYXJzZWRWYWx1ZSkpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzUGVuZGluZygpO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRFcnJvcnModGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8ge2xhdGl0dWRlOiB0cnVlfSA6IHtsb25naXR1ZGU6IHRydWV9KTtcbiAgICAgIHRoaXMud3JpdGluZyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzaWduID0gKHRoaXMucGF0dGVybiA9PT0gJ0REJykgPyAxIC8qaWdub3JlIHNpZ24qLyA6ICh0aGlzLnNpZ25Gb3JtQ29udHJvbC52YWx1ZSB8fCAxKTtcbiAgICB0aGlzLnZhbHVlID0gaXNOb3ROaWwocGFyc2VkVmFsdWUpID8gc2lnbiAqIHBhcnNlZFZhbHVlIDogbnVsbDtcblxuICAgIC8vIEdldCB0aGUgbW9kZWwgdmFsdWVcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJbbWF0LWxhdGxvbl0gU2V0dGluZyB2YWx1ZSB7XCIgKyB0aGlzLnZhbHVlICsgXCJ9IHBhcnNlZCBmcm9tIHtcIiArIHN0clZhbHVlICsgXCJ9XCIpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLnZhbHVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIHRoaXMud3JpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgY2hlY2tJZlRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCB8fCB0aGlzLnRleHRGb3JtQ29udHJvbC50b3VjaGVkKSB7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBfb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuXG4gICAgLy8gQXBwbHkgdGhlIGRlZmF1bHQgc2lnbiwgd2hlbiBwYXR0ZXJuIGlzIEREIGFuZCBmaWVsZCBpcyBlbXB0eVxuICAgIGlmIChpc05pbCh0aGlzLnZhbHVlKSkge1xuICAgICAgaWYgKHRoaXMuZGVmYXVsdFNpZ24pIHtcbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgdGV4dCB2YWx1ZSwgdXNpbmcgdGhlIGRlZmF1bHQgc2lnblxuICAgICAgICBjb25zdCBkZWZhdWx0U2lnbiA9IHRoaXMuZGVmYXVsdFNpZ24gPT09ICctJyA/IC0xIDogMTtcblxuICAgICAgICBpZiAodGhpcy5wYXR0ZXJuID09PSAnREQnKSB7XG4gICAgICAgICAgbGV0IHZhbHVlU3RyID0gdGhpcy5mb3JtYXRGbihkZWZhdWx0U2lnbiwgey4uLnRoaXMuZm9ybWF0Rm5PcHRpb25zLCBwbGFjZWhvbGRlckNoYXI6IHRoaXMucGxhY2Vob2xkZXJDaGFyfSk7XG4gICAgICAgICAgdmFsdWVTdHIgPSB2YWx1ZVN0ciAmJiB2YWx1ZVN0ci5yZXBsYWNlKCcxJywgdGhpcy5wbGFjZWhvbGRlckNoYXIpO1xuXG4gICAgICAgICAgLy8gV2FpdCBlbmQgb2YgZm9jdXMgYW5pbWF0aW9uIChsYWJlbCBzaG91bGQgbW92ZSB0byB0b3ApXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBTZXQgdGhlIHZhbHVlXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWVTdHI7XG5cbiAgICAgICAgICAgIC8vIE1vdmUgY3Vyc29yIGFmdGVyIHRoZSBzaWduXG4gICAgICAgICAgICBjb25zdCBjYXJldEluZGV4ID0gKHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJykgPyAyIDogMTtcbiAgICAgICAgICAgIHNlbGVjdElucHV0UmFuZ2UoZXZlbnQudGFyZ2V0LCBjYXJldEluZGV4KTtcbiAgICAgICAgICB9LCAyNTApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2lnbkZvcm1Db250cm9sLnNldFZhbHVlKGRlZmF1bHRTaWduKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlbGVjdCB0aGUgY29udGVudCAoaWYgdGhlcmUgaXMgYSB2YWx1ZSlcbiAgICBlbHNlIHtcbiAgICAgIHNlbGVjdElucHV0Q29udGVudChldmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgX29uQmx1cihldmVudDogRm9jdXNFdmVudCkge1xuICAgIGNvbnN0IHRvdWNoZWQgPSB0aGlzLmNoZWNrSWZUb3VjaGVkKCk7XG4gICAgaWYgKHRvdWNoZWQgJiYgaXNOaWwodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG4gICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gIH1cblxuICBtb3ZlQ2FyZXRUb1NlcGFyYXRvcihldmVudDogYW55LCBmb3J3YXJkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgLy8gTW92ZSB0byB0aGUgc3BhY2Ugc2VwYXJhdG9yXG4gICAgcmV0dXJuIG1vdmVJbnB1dENhcmV0VG9TZXBhcmF0b3IoZXZlbnQsICcgJywgZm9yd2FyZCk7XG4gIH1cblxuICBvbktleXByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gTnVtYmVyIGVudGVyZWQgb3Igb25lIG9mIHRoZSA0IGRpcmVjdGlvbiB1cCwgZG93biwgbGVmdCBhbmQgcmlnaHRcbiAgICBpZiAoKGV2ZW50LndoaWNoID49IDQ4ICYmIGV2ZW50LndoaWNoIDw9IDU3KSB8fCAoZXZlbnQud2hpY2ggPj0gMzcgJiYgZXZlbnQud2hpY2ggPD0gNDApKSB7XG4gICAgICAvL2NvbnNvbGUuZGVidWcoJ2lucHV0IG51bWJlciBlbnRlcmVkIDonICsgZXZlbnQud2hpY2ggKyAnICcgKyBldmVudC5rZXlDb2RlICsgJyAnICsgZXZlbnQuY2hhckNvZGUpO1xuICAgICAgLy8gT0tcbiAgICB9XG4gICAgLy8gRGVjaW1hbCBzZXBhcmF0b3IgZW50ZXJlZFxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJy4nIHx8IGV2ZW50LmtleSA9PT0gJywnKSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy8gY29uc29sZS5kZWJ1ZygnaW5wdXQgZGVjaW1hbCBzZXBhcmF0b3IgZW50ZXJlZCA6JyArIGV2ZW50LmNvZGUpO1xuXG4gICAgICAvLyBNb3ZlIGNhcmV0IGFmdGVyIHBvaW50XG4gICAgICBtb3ZlSW5wdXRDYXJldFRvU2VwYXJhdG9yKGV2ZW50LCAnLicpO1xuXG4gICAgICAvLyBPS1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb21tYW5kIGVudGVyZWQgKGRlbGV0ZSwgYmFja3NwYWNlIG9yIG9uZSBvZiB0aGUgNCBkaXJlY3Rpb24gdXAsIGRvd24sIGxlZnQgYW5kIHJpZ2h0KVxuICAgICAgaWYgKChldmVudC5rZXlDb2RlID49IDM3ICYmIGV2ZW50LmtleUNvZGUgPD0gNDApIHx8IGV2ZW50LmtleUNvZGUgPT0gNDYgfHwgZXZlbnQud2hpY2ggPT0gOCB8fCBldmVudC5rZXlDb2RlID09IDkpIHtcbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdpbnB1dCBjb21tYW5kIGVudGVyZWQ6JyArIGV2ZW50LndoaWNoICsgJyAnICsgZXZlbnQua2V5Q29kZSArICcgJyArIGV2ZW50LmNoYXJDb2RlKTtcblxuICAgICAgICAvLyBPS1xuICAgICAgfVxuICAgICAgLy8gU2lnbiBlbnRlcmVkICgnKycgb3IgJy0nKVxuICAgICAgZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0gNDMgfHwgZXZlbnQua2V5Q29kZSA9PT0gNDUpIHtcbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZygnaW5wdXQgc2lnbiBlbnRlcmVkOicgKyBldmVudC53aGljaCArICcgJyArIGV2ZW50LmtleUNvZGUgKyAnICcgKyBldmVudC5jaGFyQ29kZSk7XG4gICAgICAgIGNvbnN0IGNhcmV0UG9zaXRpb24gPSBnZXRDYXJldFBvc2l0aW9uKGV2ZW50LnRhcmdldCk7XG4gICAgICAgIGlmICh0aGlzLnBhdHRlcm4gPT09ICdERCcgJiYgY2FyZXRQb3NpdGlvbiA+IDApIHtcbiAgICAgICAgICBjb25zdCBzaWduID0gZXZlbnQua2V5O1xuICAgICAgICAgIC8vIFdhaXQga2V5IGFwcGx5XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgIGlmICh2YWx1ZSAmJiAhdmFsdWUuc3RhcnRzV2l0aChzaWduKSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBzaWduICsgKHZhbHVlLmxlbmd0aCA+IDEgPyB2YWx1ZS5zdWJzdHIoMSkgOiAnJyk7XG5cbiAgICAgICAgICAgIC8vIERFQlVHXG4gICAgICAgICAgICAvLyBjb25zb2xlLmRlYnVnKFwic2lnbiBlbnRlcmVkLiBVcGRhdGluZyBpbnB1dCB2YWx1ZSB0bzpcIiwgbmV3VmFsdWUpO1xuXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgICBzZWxlY3RJbnB1dFJhbmdlKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGNhcmV0UG9zaXRpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT0tcbiAgICAgIH1cbiAgICAgIC8vIERpcmVjdGlvbiBjaGFyIChjYXBpdGFsaXplZClcbiAgICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ04nIHx8IGV2ZW50LmtleSA9PT0gJ1MnIHx8IGV2ZW50LmtleSA9PT0gJ0UnIHx8IGV2ZW50LmtleSA9PT0gJ1cnKSB7XG4gICAgICAgIC8vIERFQlVHXG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoJ2lucHV0IGRpcmVjdGlvbiBlbnRlcmVkOicgKyBldmVudC53aGljaCArICcgJyArIGV2ZW50LmtleUNvZGUgKyAnICcgKyBldmVudC5jaGFyQ29kZSk7XG5cbiAgICAgICAgLy8gT0tcbiAgICAgIH1cbiAgICAgIC8vIERpcmVjdGlvbiBjaGFyXG4gICAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICduJyB8fCBldmVudC5rZXkgPT09ICdzJyB8fCBldmVudC5rZXkgPT09ICdlJyB8fCBldmVudC5rZXkgPT09ICd3Jykge1xuICAgICAgICAvLyBERUJVR1xuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKCdpbnB1dCBkaXJlY3Rpb24gZW50ZXJlZDonICsgZXZlbnQud2hpY2ggKyAnICcgKyBldmVudC5rZXlDb2RlICsgJyAnICsgZXZlbnQuY2hhckNvZGUpO1xuXG4gICAgICAgIC8vIENhcGl0YWxpemUgKHdpdGggYSBkZWxheSwgdG8gYmUgc3VyZSB0aGUga2V5IGhhcyBiZWVuIGFwcGxpZWQgdG8gaW5wdXQgdGV4dClcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfSwgMTApO1xuXG4gICAgICAgIC8vIE9LXG4gICAgICB9XG5cbiAgICAgIC8vIEFueSBvdGhlciBrZXlib2FyZCBldmVudHNcbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBERUJVR1xuICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ2lucHV0IG5vdCBudW1iZXIgZW50ZXJlZCA6JyArIGV2ZW50LndoaWNoICsgJyAnICsgZXZlbnQua2V5Q29kZSArICcgJyArIGV2ZW50LmNoYXJDb2RlICsgJyAnICsgZXZlbnQuY29kZSApO1xuXG4gICAgICAgIC8vIEtPOiBjYW5jZWwgdGhlIGV2ZW50XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG5cbiJdfQ==
|
|
@@ -61,10 +61,10 @@ export class LatLongTestPage {
|
|
|
61
61
|
LatLongTestPage.decorators = [
|
|
62
62
|
{ type: Component, args: [{
|
|
63
63
|
selector: 'app-latlong-test',
|
|
64
|
-
template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Lat/Long field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!-- Empty value -->\n <form *ngIf=\"form.get('empty') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row><ion-col><ion-text><h4>Empty, with defaults</h4></ion-text></ion-col></ion-row>\n\n <ion-row >\n\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DD, defaultSign '-'\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMM, defaultSign '+'\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\">\n\n <mat-icon matPrefix >room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Mobile + DDMM -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Mobile=true\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n mobile=\"true\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <form *ngIf=\"form.get('enable') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row><ion-col><ion-text><h4>With value</h4></ion-text></ion-col></ion-row>\n\n <ion-row>\n\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DD\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMM\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMMSS\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Disable -->\n <form *ngIf=\"form.get('disable') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row><ion-col><ion-text><h4>Disabled control</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\">\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly (control is enable)\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field [formControl]=\"form.get('enable.latitude')\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\">\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n </form>\n\n</ion-content>\n"
|
|
64
|
+
template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Lat/Long field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!-- Empty value -->\n <form *ngIf=\"form.get('empty') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row><ion-col><ion-text><h4>Empty, with defaults</h4></ion-text></ion-col></ion-row>\n\n <ion-row >\n\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DD, defaultSign '-'\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMM, defaultSign '+'\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\">\n\n <mat-icon matPrefix >room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Mobile + DDMM -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Mobile=true\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n mobile=\"true\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <form *ngIf=\"form.get('enable') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row><ion-col><ion-text><h4>With value</h4></ion-text></ion-col></ion-row>\n\n <ion-row>\n\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DD\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMM\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMMSS\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Disable -->\n <form *ngIf=\"form.get('disable') as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row><ion-col><ion-text><h4>Disabled control</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\">\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly (control is enable)\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n </mat-checkbox>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field #readonlyField [formControl]=\"form.get('enable.latitude')\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\">\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n </form>\n\n</ion-content>\n"
|
|
65
65
|
},] }
|
|
66
66
|
];
|
|
67
67
|
LatLongTestPage.ctorParameters = () => [
|
|
68
68
|
{ type: FormBuilder }
|
|
69
69
|
];
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG9uZy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbGF0bG9uZy90ZXN0aW5nL2xhdGxvbmcudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFhLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBTy9ELE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQ1ksV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUE4RHBDLGNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBNUR6QixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDNUIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUN0RixTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUN6RixDQUFDO1lBQ0YsTUFBTSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3hCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7Z0JBQzNDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7YUFDOUMsQ0FBQztZQUNGLE9BQU8sRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUN6QixRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO2dCQUMzQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO2FBQzlDLENBQUM7U0FDSCxDQUFDLENBQUM7UUFFSCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTNCLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFNUYsQ0FBQztJQUVELFFBQVE7UUFHTixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCwwQkFBMEI7SUFDcEIsUUFBUTs7WUFDWixNQUFNLElBQUksR0FBRztnQkFDWCxLQUFLLEVBQUU7b0JBQ0wsUUFBUSxFQUFFLElBQUk7b0JBQ2QsU0FBUyxFQUFFLElBQUk7aUJBQ2hCO2dCQUNELE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsSUFBSTtvQkFDZCxTQUFTLEVBQUUsQ0FBQyxDQUFDO2lCQUNkO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxRQUFRLEVBQUUsSUFBSTtvQkFDZCxTQUFTLEVBQUUsQ0FBQyxDQUFDO2lCQUNkO2FBQ0YsQ0FBQztZQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7S0FBQTtJQUVELFFBQVEsQ0FBQyxLQUFLO1FBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYztRQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7WUF0RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLHE0ZEFBa0M7YUFDbkM7OztZQVBPLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtTaGFyZWRWYWxpZGF0b3JzfSBmcm9tICcuLi8uLi8uLi92YWxpZGF0b3IvdmFsaWRhdG9ycyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxhdGxvbmctdGVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXRsb25nLnRlc3QuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTGF0TG9uZ1Rlc3RQYWdlIGltcGxlbWVudHMgT25Jbml0IHtcblxuXG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyXG4gICkge1xuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGVtcHR5OiBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIGxhdGl0dWRlOiBbbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBTaGFyZWRWYWxpZGF0b3JzLmxhdGl0dWRlXSldLFxuICAgICAgICBsb25naXR1ZGU6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFNoYXJlZFZhbGlkYXRvcnMubG9uZ2l0dWRlXSldXG4gICAgICB9KSxcbiAgICAgIGVuYWJsZTogZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBsYXRpdHVkZTogW251bGwsIFNoYXJlZFZhbGlkYXRvcnMubGF0aXR1ZGVdLFxuICAgICAgICBsb25naXR1ZGU6IFtudWxsLCBTaGFyZWRWYWxpZGF0b3JzLmxvbmdpdHVkZV1cbiAgICAgIH0pLFxuICAgICAgZGlzYWJsZTogZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBsYXRpdHVkZTogW251bGwsIFNoYXJlZFZhbGlkYXRvcnMubGF0aXR1ZGVdLFxuICAgICAgICBsb25naXR1ZGU6IFtudWxsLCBTaGFyZWRWYWxpZGF0b3JzLmxvbmdpdHVkZV1cbiAgICAgIH0pXG4gICAgfSk7XG5cbiAgICBjb25zdCBkaXNhYmxlRm9ybUdyb3VwID0gdGhpcy5mb3JtLmdldCgnZGlzYWJsZScpO1xuICAgIGRpc2FibGVGb3JtR3JvdXAuZGlzYWJsZSgpO1xuXG4gICAgLy8gQ29weSBlbmFibGUgdmFsdWUgdG8gZGlzYWJsZSBmb3JtXG4gICAgdGhpcy5mb3JtLmdldCgnZW5hYmxlJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiBkaXNhYmxlRm9ybUdyb3VwLnNldFZhbHVlKHZhbHVlKSk7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubG9hZERhdGEoKSwgMjUwKTtcbiAgfVxuXG4gIC8vIExvYWQgdGhlIGZvcm0gd2l0aCBkYXRhXG4gIGFzeW5jIGxvYWREYXRhKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBlbXB0eToge1xuICAgICAgICBsYXRpdHVkZTogbnVsbCxcbiAgICAgICAgbG9uZ2l0dWRlOiBudWxsXG4gICAgICB9LFxuICAgICAgZW5hYmxlOiB7XG4gICAgICAgIGxhdGl0dWRlOiA1MC4xLFxuICAgICAgICBsb25naXR1ZGU6IC0yXG4gICAgICB9LFxuICAgICAgZGlzYWJsZToge1xuICAgICAgICBsYXRpdHVkZTogNTAuMSxcbiAgICAgICAgbG9uZ2l0dWRlOiAtMlxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtLnNldFZhbHVlKGRhdGEpO1xuICB9XG5cbiAgZG9TdWJtaXQoZXZlbnQpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdWYWxpZGF0ZSBmb3JtOiAnLCB0aGlzLmZvcm0udmFsdWUpO1xuICB9XG5cbiAgZ2VvUG9zaXRpb24oZXZlbnQ6IFVJRXZlbnQpOiBib29sZWFuIHtcbiAgICBjb25zb2xlLmRlYnVnKCdDbGljayBvbiBnZW9Mb2NhdGlvbiBidXR0b24nLCBldmVudCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHJpbmdpZnkgPSBKU09OLnN0cmluZ2lmeTtcblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG5cbn1cblxuIl19
|