@infordata-web/portal-common-component-lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.
87 lines • 17.6 kB
JavaScript
import { Component, EventEmitter, Input, Output, } from "@angular/core";
import { FormControl, FormGroup } from "@angular/forms";
import { filter, map, shareReplay, startWith, switchMap, } from "rxjs/operators";
import { LocalitaDTO } from "../../models/localita-dto";
import { ComponentOutputStatus } from "../../normalizzazione/component-output-status";
import { MessageService } from "../../services/message.service";
import { TerritorioService } from "../../services/territorio/territorio-service";
export class LocalitaComponent {
constructor(msg, territorio) {
this.msg = msg;
this.territorio = territorio;
this.done = new EventEmitter();
}
ngOnInit() {
this.form = new FormGroup({});
if (!this.localita) {
this.initLocalita();
}
const localitaProvincia = new FormControl({ value: this.localita.provincia, disabled: this.viewOnly }, c => {
if (this.viewOnly)
return {};
return String(c.value).trim().length > 0
? {}
: { required: true };
});
this.form.addControl("localitaProvincia", localitaProvincia);
const localitaComune = new FormControl({ value: this.localita.comune, disabled: this.viewOnly }, c => {
if (this.viewOnly)
return {};
return String(c.value).trim().length > 0
? {}
: { required: true };
});
this.form.addControl("localitaComune", localitaComune);
// if(this.viewCap) {
const localitaCap = new FormControl({ value: this.localita.cap, disabled: this.viewOnly }, c => {
if (this.viewOnly)
return {};
return String(c.value).trim().length > 0
? {}
: { required: true };
});
this.form.addControl("localitaCap", localitaCap);
// }
this.comuni$ = localitaProvincia.valueChanges.pipe(startWith(this.localita.provincia), filter((x) => x), switchMap((value) => this.territorio.getComuni$(value)), shareReplay());
this.cap$ = localitaComune.valueChanges.pipe(startWith(this.localita.comune), filter((comune) => comune != null), switchMap((codiceCatastale) => {
return this.comuni$.pipe(map((comuni) => comuni.filter((comune) => comune.codiceCatastale === codiceCatastale)), filter((comuni) => comuni.length > 0), map((comuni) => comuni[0]), switchMap(comune => this.territorio.getCap$(comune.codiceIstat)));
}));
const changes$ = this.form.valueChanges.pipe(map((_) => {
const localita = new LocalitaDTO();
// if(this.viewCap) {
localita.cap = this.form.controls["localitaCap"].value;
// }
localita.provincia = this.form.controls["localitaProvincia"].value;
localita.comune = this.form.controls["localitaComune"].value;
return ComponentOutputStatus.of(this.form.valid, localita);
}));
this.subscription = changes$.subscribe((_) => this.done.emit(_));
}
initLocalita() {
this.localita = new LocalitaDTO();
}
compareComuni(c1, c2) {
return c1 && c2 ? c1.cop === c2.cop : c1 === c2;
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
}
LocalitaComponent.decorators = [
{ type: Component, args: [{
selector: "lib-localita",
template: "<div [formGroup]=\"form\">\r\n\t<div class=\"row my-2\">\r\n\t\t<div class=\"col-md-4\">\r\n\t\t\t<mat-form-field>\r\n\t\t\t\t<mat-label>{{'required' | traduzione}}{{'provincia' | traduzione}}</mat-label>\r\n\t\t\t\t<mat-select placeholder=\"{{'seleziona' | traduzione}}\" formControlName=\"localitaProvincia\">\r\n\t\t\t\t\t<mat-option *ngFor=\"let provincia of province$ | async\" [value]=\"provincia.sigla\">\r\n\t\t\t\t\t\t{{provincia.denominazione}}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t\t<mat-error *ngIf=\"form.touched && form.controls['localitaProvincia'].invalid\">\r\n\t\t\t\t\t{{\r\n\t\t\t\t\tmsg.produceMessage(\r\n\t\t\t\t\t\"obbligatorio\",\r\n\t\t\t\t\tform.controls[\"localitaProvincia\"]\r\n\t\t\t\t\t) | traduzione\r\n\t\t\t\t\t}}\r\n\t\t\t\t</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<div class=\"col-md-4\">\r\n\t\t\t<mat-form-field>\r\n\t\t\t\t<mat-label>{{'required' | traduzione}}{{'comune' | traduzione}}</mat-label>\r\n\t\t\t\t<mat-select placeholder=\"{{'seleziona' | traduzione}}\" formControlName=\"localitaComune\">\r\n\t\t\t\t\t<mat-option *ngFor=\"let comune of comuni$ | async\" [value]=\"comune.codiceCatastale\">\r\n\t\t\t\t\t\t{{ comune.denominazione }}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t\t<mat-error *ngIf=\"form.touched && form.controls['localitaComune'].invalid\">\r\n\t\t\t\t\t{{\r\n\t\t\t\t\tmsg.produceMessage(\"obbligatorio\", form.controls[\"localitaComune\"]) | traduzione\r\n\t\t\t\t\t}}\r\n\t\t\t\t</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<div class=\"col-md-4\">\r\n\t\t\t<mat-form-field>\r\n\t\t\t\t<mat-select placeholder=\"{{'required' | traduzione}}{{'cap' | traduzione}}\" formControlName=\"localitaCap\">\r\n\t\t\t\t\t<mat-option *ngFor=\"let cap of cap$ | async\" [value]=\"cap\">\r\n\t\t\t\t\t\t{{ cap }}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t\t<mat-error *ngIf=\"form.touched && form.controls['localitaCap'].invalid\">\r\n\t\t\t\t\t{{ msg.produceMessage(\"obbligatorio\", form.controls[\"localitaCap\"]) | traduzione}}\r\n\t\t\t\t</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t</div>\r\n</div>",
styles: [""]
},] }
];
LocalitaComponent.ctorParameters = () => [
{ type: MessageService },
{ type: TerritorioService }
];
LocalitaComponent.propDecorators = {
viewOnly: [{ type: Input }],
localita: [{ type: Input }],
province$: [{ type: Input }],
done: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpdGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItdGVybmkvY29tbW9uLWNvbXBvbmVudC1saWIvcHJvamVjdHMvcG9ydGFsLWNvbW1vbi1jb21wb25lbnQtbGliL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kZXBvc2l0aS9jb21tb24tY29tcG9uZW50L2xvY2FsaXRhL2xvY2FsaXRhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUNOLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEdBQ1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBT2pGLE1BQU0sT0FBTyxpQkFBaUI7SUFzQjdCLFlBQ1MsR0FBbUIsRUFDbkIsVUFBNkI7UUFEN0IsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFWdEMsU0FBSSxHQUFxRCxJQUFJLFlBQVksRUFFdEUsQ0FBQztJQVNBLENBQUM7SUFFTCxRQUFRO1FBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNu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QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsRSxDQUFDO0lBQ0QsWUFBWTtRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEVBQWEsRUFBRSxFQUFhO1FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzs7WUFuSEQsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSxjQUFjO2dCQUN4Qix5b0VBQXdDOzthQUV4Qzs7O1lBUFEsY0FBYztZQUNkLGlCQUFpQjs7O3VCQVd4QixLQUFLO3VCQUdMLEtBQUs7d0JBR0wsS0FBSzttQkFHTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRDb21wb25lbnQsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE9uRGVzdHJveSxcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtcclxuXHRmaWx0ZXIsXHJcblx0bWFwLFxyXG5cdHNoYXJlUmVwbGF5LFxyXG5cdHN0YXJ0V2l0aCxcclxuXHRzd2l0Y2hNYXAsXHJcbn0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IENvbXVuZURUTyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29tdW5lLWR0b1wiO1xyXG5pbXBvcnQgeyBMb2NhbGl0YURUTyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvbG9jYWxpdGEtZHRvXCI7XHJcbmltcG9ydCB7IENvbXVuZSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvcG9ydGFsZS9jb211bmVcIjtcclxuaW1wb3J0IHsgTG9jYWxpdGEgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3BvcnRhbGUvbG9jYWxpdGFcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50T3V0cHV0U3RhdHVzIH0gZnJvbSBcIi4uLy4uL25vcm1hbGl6emF6aW9uZS9jb21wb25lbnQtb3V0cHV0LXN0YXR1c1wiO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVGVycml0b3Jpb1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdGVycml0b3Jpby90ZXJyaXRvcmlvLXNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcImxpYi1sb2NhbGl0YVwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vbG9jYWxpdGEuY29tcG9uZW50Lmh0bWxcIixcclxuXHRzdHlsZVVybHM6IFtcIi4vbG9jYWxpdGEuY29tcG9uZW50LmNzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsaXRhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHRmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0dmlld09ubHk6IGJvb2xlYW47XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0bG9jYWxpdGE6IExvY2FsaXRhRFRPO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdHByb3ZpbmNlJDogT2JzZXJ2YWJsZTxBcnJheTxMb2NhbGl0YT4+O1xyXG5cclxuXHRAT3V0cHV0KClcclxuXHRkb25lOiBFdmVudEVtaXR0ZXI8Q29tcG9uZW50T3V0cHV0U3RhdHVzPExvY2FsaXRhRFRPPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxyXG5cdFx0Q29tcG9uZW50T3V0cHV0U3RhdHVzPExvY2FsaXRhRFRPPlxyXG5cdD4oKTtcclxuXHJcblx0Y29tdW5pJDogT2JzZXJ2YWJsZTxBcnJheTxDb211bmU+PjtcclxuXHRjYXAkOiBPYnNlcnZhYmxlPEFycmF5PHN0cmluZz4+O1xyXG5cdHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgbXNnOiBNZXNzYWdlU2VydmljZSxcclxuXHRcdHByaXZhdGUgdGVycml0b3JpbzogVGVycml0b3Jpb1NlcnZpY2VcclxuXHQpIHsgfVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cdFx0aWYgKCF0aGlzLmxvY2FsaXRhKSB7XHJcblx0XHRcdHRoaXMuaW5pdExvY2FsaXRhKCk7XHJcblx0XHR9XHJcblx0XHRjb25zdCBsb2NhbGl0YVByb3ZpbmNpYSA9IG5ldyBGb3JtQ29udHJvbChcclxuXHRcdFx0eyB2YWx1ZTogdGhpcy5sb2NhbGl0YS5wcm92aW5jaWEsIGRpc2FibGVkOiB0aGlzLnZpZXdPbmx5IH0sIGMgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLnZpZXdPbmx5KSByZXR1cm4ge307XHJcblx0XHRcdFx0cmV0dXJuIFN0cmluZyhjLnZhbHVlKS50cmltKCkubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0PyB7fVxyXG5cdFx0XHRcdFx0OiB7IHJlcXVpcmVkOiB0cnVlIH07XHJcblx0XHRcdH1cclxuXHRcdCk7XHJcblx0XHR0aGlzLmZvcm0uYWRkQ29udHJvbChcImxvY2FsaXRhUHJvdmluY2lhXCIsIGxvY2FsaXRhUHJvdmluY2lhKTtcclxuXHJcblx0XHRjb25zdCBsb2NhbGl0YUNvbXVuZSA9IG5ldyBGb3JtQ29udHJvbChcclxuXHRcdFx0eyB2YWx1ZTogdGhpcy5sb2NhbGl0YS5jb211bmUsIGRpc2FibGVkOiB0aGlzLnZpZXdPbmx5IH0sIGMgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLnZpZXdPbmx5KSByZXR1cm4ge307XHJcblx0XHRcdFx0cmV0dXJuIFN0cmluZyhjLnZhbHVlKS50cmltKCkubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0PyB7fVxyXG5cdFx0XHRcdFx0OiB7IHJlcXVpcmVkOiB0cnVlIH07XHJcblx0XHRcdH1cclxuXHRcdCk7XHJcblx0XHR0aGlzLmZvcm0uYWRkQ29udHJvbChcImxvY2FsaXRhQ29tdW5lXCIsIGxvY2FsaXRhQ29tdW5lKTtcclxuXHJcblx0XHQvLyBpZih0aGlzLnZpZXdDYXApIHtcclxuXHRcdGNvbnN0IGxvY2FsaXRhQ2FwID0gbmV3IEZvcm1Db250cm9sKFxyXG5cdFx0XHR7IHZhbHVlOiB0aGlzLmxvY2FsaXRhLmNhcCwgZGlzYWJsZWQ6IHRoaXMudmlld09ubHkgfSwgYyA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMudmlld09ubHkpIHJldHVybiB7fTtcclxuXHRcdFx0XHRyZXR1cm4gU3RyaW5nKGMudmFsdWUpLnRyaW0oKS5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHQ/IHt9XHJcblx0XHRcdFx0XHQ6IHsgcmVxdWlyZWQ6IHRydWUgfTtcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHRcdHRoaXMuZm9ybS5hZGRDb250cm9sKFwibG9jYWxpdGFDYXBcIiwgbG9jYWxpdGFDYXApO1xyXG5cdFx0Ly8gfVxyXG5cclxuXHRcdHRoaXMuY29tdW5pJCA9IGxvY2FsaXRhUHJvdmluY2lhLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG5cdFx0XHRzdGFydFdpdGgodGhpcy5sb2NhbGl0YS5wcm92aW5jaWEpLFxyXG5cdFx0XHRmaWx0ZXIoKHgpID0+IHgpLFxyXG5cdFx0XHRzd2l0Y2hNYXAoKHZhbHVlKSA9PiB0aGlzLnRlcnJpdG9yaW8uZ2V0Q29tdW5pJCh2YWx1ZSkpLFxyXG5cdFx0XHRzaGFyZVJlcGxheSgpXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuY2FwJCA9IGxvY2FsaXRhQ29tdW5lLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG5cdFx0XHRzdGFydFdpdGgodGhpcy5sb2NhbGl0YS5jb211bmUpLFxyXG5cdFx0XHRmaWx0ZXIoKGNvbXVuZTogc3RyaW5nKSA9PiBjb211bmUgIT0gbnVsbCksXHJcblx0XHRcdHN3aXRjaE1hcCgoY29kaWNlQ2F0YXN0YWxlOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5jb211bmkkLnBpcGUoXHJcblx0XHRcdFx0XHRtYXAoKGNvbXVuaSkgPT4gY29tdW5pLmZpbHRlcigoY29tdW5lKSA9PiBjb211bmUuY29kaWNlQ2F0YXN0YWxlID09PSBjb2RpY2VDYXRhc3RhbGUpKSxcclxuXHRcdFx0XHRcdGZpbHRlcigoY29tdW5pKSA9PiBjb211bmkubGVuZ3RoID4gMCksXHJcblx0XHRcdFx0XHRtYXAoKGNvbXVuaSkgPT4gY29tdW5pWzBdKSxcclxuXHRcdFx0XHRcdHN3aXRjaE1hcChjb211bmUgPT4gdGhpcy50ZXJyaXRvcmlvLmdldENhcCQoY29tdW5lLmNvZGljZUlzdGF0KSlcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHRjb25zdCBjaGFuZ2VzJCA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZShcclxuXHRcdFx0bWFwKChfKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgbG9jYWxpdGEgPSBuZXcgTG9jYWxpdGFEVE8oKTtcclxuXHRcdFx0XHQvLyBpZih0aGlzLnZpZXdDYXApIHtcclxuXHRcdFx0XHRsb2NhbGl0YS5jYXAgPSB0aGlzLmZvcm0uY29udHJvbHNbXCJsb2NhbGl0YUNhcFwiXS52YWx1ZTtcclxuXHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0bG9jYWxpdGEucHJvdmluY2lhID0gdGhpcy5mb3JtLmNvbnRyb2xzW1wibG9jYWxpdGFQcm92aW5jaWFcIl0udmFsdWU7XHJcblx0XHRcdFx0bG9jYWxpdGEuY29tdW5lID0gdGhpcy5mb3JtLmNvbnRyb2xzW1wibG9jYWxpdGFDb211bmVcIl0udmFsdWU7XHJcblx0XHRcdFx0cmV0dXJuIENvbXBvbmVudE91dHB1dFN0YXR1cy5vZih0aGlzLmZvcm0udmFsaWQsIGxvY2FsaXRhKTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0XHRcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbiA9IGNoYW5nZXMkLnN1YnNjcmliZSgoXykgPT4gdGhpcy5kb25lLmVtaXQoXykpO1xyXG5cclxuXHR9XHJcblx0aW5pdExvY2FsaXRhKCkge1xyXG5cdFx0dGhpcy5sb2NhbGl0YSA9IG5ldyBMb2NhbGl0YURUTygpO1xyXG5cdH1cclxuXHJcblx0Y29tcGFyZUNvbXVuaShjMTogQ29tdW5lRFRPLCBjMjogQ29tdW5lRFRPKSB7XHJcblx0XHRyZXR1cm4gYzEgJiYgYzIgPyBjMS5jb3AgPT09IGMyLmNvcCA6IGMxID09PSBjMjtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHR9XHJcbn1cclxuIl19