UNPKG

ngx-material-timepicker

Version:
121 lines 15.7 kB
import * as tslib_1 from "tslib"; import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core'; import { TimePeriod } from '../../models/time-period.enum'; import { TimeUnit } from '../../models/time-unit.enum'; import { DateTime } from 'luxon'; import { disableHours, disableMinutes, getHours, getMinutes } from '../../utils/timepicker-time.utils'; let NgxMaterialTimepickerDialComponent = class NgxMaterialTimepickerDialComponent { constructor() { this.timeUnit = TimeUnit; this.periodChanged = new EventEmitter(); this.timeUnitChanged = new EventEmitter(); this.hourChanged = new EventEmitter(); this.minuteChanged = new EventEmitter(); } ngOnChanges(changes) { if (changes['period'] && changes['period'].currentValue || changes['format'] && changes['format'].currentValue) { const hours = getHours(this.format); this.hours = disableHours(hours, { min: this.minTime, max: this.maxTime, format: this.format, period: this.period }); } if (changes['period'] && changes['period'].currentValue || changes['hour'] && changes['hour'].currentValue) { const minutes = getMinutes(this.minutesGap); this.minutes = disableMinutes(minutes, +this.hour, { min: this.minTime, max: this.maxTime, format: this.format, period: this.period }); } } changeTimeUnit(unit) { this.timeUnitChanged.next(unit); } changePeriod(period) { this.periodChanged.next(period); } changeHour(hour) { this.hourChanged.next(hour); } changeMinute(minute) { this.minuteChanged.next(minute); } showHint() { this.isHintVisible = true; } hideHint() { this.isHintVisible = false; } }; tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", TemplateRef) ], NgxMaterialTimepickerDialComponent.prototype, "editableHintTmpl", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Object) ], NgxMaterialTimepickerDialComponent.prototype, "hour", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Object) ], NgxMaterialTimepickerDialComponent.prototype, "minute", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Number) ], NgxMaterialTimepickerDialComponent.prototype, "format", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", String) ], NgxMaterialTimepickerDialComponent.prototype, "period", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Number) ], NgxMaterialTimepickerDialComponent.prototype, "activeTimeUnit", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", DateTime) ], NgxMaterialTimepickerDialComponent.prototype, "minTime", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", DateTime) ], NgxMaterialTimepickerDialComponent.prototype, "maxTime", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Boolean) ], NgxMaterialTimepickerDialComponent.prototype, "isEditable", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Number) ], NgxMaterialTimepickerDialComponent.prototype, "minutesGap", void 0); tslib_1.__decorate([ Output(), tslib_1.__metadata("design:type", Object) ], NgxMaterialTimepickerDialComponent.prototype, "periodChanged", void 0); tslib_1.__decorate([ Output(), tslib_1.__metadata("design:type", Object) ], NgxMaterialTimepickerDialComponent.prototype, "timeUnitChanged", void 0); tslib_1.__decorate([ Output(), tslib_1.__metadata("design:type", Object) ], NgxMaterialTimepickerDialComponent.prototype, "hourChanged", void 0); tslib_1.__decorate([ Output(), tslib_1.__metadata("design:type", Object) ], NgxMaterialTimepickerDialComponent.prototype, "minuteChanged", void 0); NgxMaterialTimepickerDialComponent = tslib_1.__decorate([ Component({ selector: 'ngx-material-timepicker-dial', template: "<div class=\"timepicker-dial\">\n <div class=\"timepicker-dial__container\">\n <div class=\"timepicker-dial__time\">\n <ngx-material-timepicker-dial-control [timeList]=\"hours\" [time]=\"hour\" [timeUnit]=\"timeUnit.HOUR\"\n [isActive]=\"activeTimeUnit === timeUnit.HOUR\"\n [isEditable]=\"isEditable\"\n (timeUnitChanged)=\"changeTimeUnit($event)\"\n (timeChanged)=\"changeHour($event)\"\n (focused)=\"showHint()\"\n (unfocused)=\"hideHint()\">\n\n </ngx-material-timepicker-dial-control>\n <span>:</span>\n <ngx-material-timepicker-dial-control [timeList]=\"minutes\" [time]=\"minute\" [timeUnit]=\"timeUnit.MINUTE\"\n [isActive]=\"activeTimeUnit === timeUnit.MINUTE\"\n [isEditable]=\"isEditable\"\n [minutesGap]=\"minutesGap\"\n (timeUnitChanged)=\"changeTimeUnit($event)\"\n (timeChanged)=\"changeMinute($event)\"\n (focused)=\"showHint()\"\n (unfocused)=\"hideHint()\">\n\n </ngx-material-timepicker-dial-control>\n </div>\n <ngx-material-timepicker-period class=\"timepicker-dial__period\"\n [ngClass]=\"{'timepicker-dial__period--hidden': format === 24}\"\n [selectedPeriod]=\"period\" [activeTimeUnit]=\"activeTimeUnit\"\n [maxTime]=\"maxTime\" [minTime]=\"minTime\" [format]=\"format\"\n [hours]=\"hours\" [minutes]=\"minutes\" [selectedHour]=\"hour\"\n (periodChanged)=\"changePeriod($event)\"></ngx-material-timepicker-period>\n </div>\n <div *ngIf=\"isEditable\" [ngClass]=\"{'timepicker-dial__hint-container--hidden': !isHintVisible}\">\n <!--suppress HtmlUnknownAttribute -->\n <ng-container *ngTemplateOutlet=\"editableHintTmpl ? editableHintTmpl : editableHintDefault\"></ng-container>\n <ng-template #editableHintDefault>\n <small class=\"timepicker-dial__hint\"> * use arrows (<span>&#8645;</span>) to change the time</small>\n </ng-template>\n </div>\n</div>\n", changeDetection: ChangeDetectionStrategy.OnPush, styles: [".timepicker-dial{text-align:right}.timepicker-dial__container{display:flex;align-items:center;justify-content:flex-end;-webkit-tap-highlight-color:transparent}.timepicker-dial__time{display:flex;align-items:baseline;line-height:normal;font-size:50px;color:rgba(255,255,255,.5);font-family:Roboto,sans-serif}@supports (font-family:var(--primary-font-family)){.timepicker-dial__time{font-family:var(--primary-font-family);color:var(--dial-inactive-color)}}.timepicker-dial__period{display:block;margin-left:10px}.timepicker-dial__hint-container--hidden,.timepicker-dial__period--hidden{visibility:hidden}.timepicker-dial__hint{display:inline-block;font-size:10px;color:#fff}@supports (color:var(--dial-active-color)){.timepicker-dial__hint{color:var(--dial-active-color)}}.timepicker-dial__hint span{font-size:14px}@media (max-device-width:1023px) and (orientation:landscape){.timepicker-dial__container{flex-direction:column}.timepicker-dial__period{margin-left:0}}"] }) ], NgxMaterialTimepickerDialComponent); export { NgxMaterialTimepickerDialComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdGVyaWFsLXRpbWVwaWNrZXItZGlhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtbWF0ZXJpYWwtdGltZXBpY2tlci8iLCJzb3VyY2VzIjpbInNyYy9hcHAvbWF0ZXJpYWwtdGltZXBpY2tlci9jb21wb25lbnRzL3RpbWVwaWNrZXItZGlhbC9uZ3gtbWF0ZXJpYWwtdGltZXBpY2tlci1kaWFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFRdkcsSUFBYSxrQ0FBa0MsR0FBL0MsTUFBYSxrQ0FBa0M7SUFOL0M7UUFRSSxhQUFRLEdBQUcsUUFBUSxDQUFDO1FBa0JWLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUMvQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFDL0MsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNoRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO0lBa0RoRSxDQUFDO0lBaERHLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWTtlQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUN4RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXBDLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDN0IsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3RCLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVk7ZUFDaEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUU7WUFDcEQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUMvQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ2pCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDdEIsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWM7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFrQjtRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQW1CO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBcUI7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7Q0FDSixDQUFBO0FBaEVZO0lBQVIsS0FBSyxFQUFFO3NDQUFtQixXQUFXOzRFQUFPO0FBQ3BDO0lBQVIsS0FBSyxFQUFFOztnRUFBdUI7QUFDdEI7SUFBUixLQUFLLEVBQUU7O2tFQUF5QjtBQUN4QjtJQUFSLEtBQUssRUFBRTs7a0VBQWdCO0FBQ2Y7SUFBUixLQUFLLEVBQUU7O2tFQUFvQjtBQUNuQjtJQUFSLEtBQUssRUFBRTs7MEVBQTBCO0FBQ3pCO0lBQVIsS0FBSyxFQUFFO3NDQUFVLFFBQVE7bUVBQUM7QUFDbEI7SUFBUixLQUFLLEVBQUU7c0NBQVUsUUFBUTttRUFBQztBQUNsQjtJQUFSLEtBQUssRUFBRTs7c0VBQXFCO0FBQ3BCO0lBQVIsS0FBSyxFQUFFOztzRUFBb0I7QUFFbEI7SUFBVCxNQUFNLEVBQUU7O3lFQUFnRDtBQUMvQztJQUFULE1BQU0sRUFBRTs7MkVBQWdEO0FBQy9DO0lBQVQsTUFBTSxFQUFFOzt1RUFBaUQ7QUFDaEQ7SUFBVCxNQUFNLEVBQUU7O3lFQUFtRDtBQXZCbkQsa0NBQWtDO0lBTjlDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSw4QkFBOEI7UUFDeEMsK3JGQUEwRDtRQUUxRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FDbEQsQ0FBQztHQUNXLGtDQUFrQyxDQXlFOUM7U0F6RVksa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaW1lUGVyaW9kIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RpbWUtcGVyaW9kLmVudW0nO1xuaW1wb3J0IHsgVGltZVVuaXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGltZS11bml0LmVudW0nO1xuaW1wb3J0IHsgQ2xvY2tGYWNlVGltZSB9IGZyb20gJy4uLy4uL21vZGVscy9jbG9jay1mYWNlLXRpbWUuaW50ZXJmYWNlJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgZGlzYWJsZUhvdXJzLCBkaXNhYmxlTWludXRlcywgZ2V0SG91cnMsIGdldE1pbnV0ZXMgfSBmcm9tICcuLi8uLi91dGlscy90aW1lcGlja2VyLXRpbWUudXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1tYXRlcmlhbC10aW1lcGlja2VyLWRpYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXItZGlhbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ25neC1tYXRlcmlhbC10aW1lcGlja2VyLWRpYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRlcmlhbFRpbWVwaWNrZXJEaWFsQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICAgIHRpbWVVbml0ID0gVGltZVVuaXQ7XG5cbiAgICBob3VyczogQ2xvY2tGYWNlVGltZVtdO1xuICAgIG1pbnV0ZXM6IENsb2NrRmFjZVRpbWVbXTtcblxuICAgIGlzSGludFZpc2libGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBlZGl0YWJsZUhpbnRUbXBsOiBUZW1wbGF0ZVJlZjxOb2RlPjtcbiAgICBASW5wdXQoKSBob3VyOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KCkgbWludXRlOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KCkgZm9ybWF0OiBudW1iZXI7XG4gICAgQElucHV0KCkgcGVyaW9kOiBUaW1lUGVyaW9kO1xuICAgIEBJbnB1dCgpIGFjdGl2ZVRpbWVVbml0OiBUaW1lVW5pdDtcbiAgICBASW5wdXQoKSBtaW5UaW1lOiBEYXRlVGltZTtcbiAgICBASW5wdXQoKSBtYXhUaW1lOiBEYXRlVGltZTtcbiAgICBASW5wdXQoKSBpc0VkaXRhYmxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG1pbnV0ZXNHYXA6IG51bWJlcjtcblxuICAgIEBPdXRwdXQoKSBwZXJpb2RDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUaW1lUGVyaW9kPigpO1xuICAgIEBPdXRwdXQoKSB0aW1lVW5pdENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRpbWVVbml0PigpO1xuICAgIEBPdXRwdXQoKSBob3VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2xvY2tGYWNlVGltZT4oKTtcbiAgICBAT3V0cHV0KCkgbWludXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2xvY2tGYWNlVGltZT4oKTtcblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3BlcmlvZCddICYmIGNoYW5nZXNbJ3BlcmlvZCddLmN1cnJlbnRWYWx1ZVxuICAgICAgICAgICAgfHwgY2hhbmdlc1snZm9ybWF0J10gJiYgY2hhbmdlc1snZm9ybWF0J10uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBob3VycyA9IGdldEhvdXJzKHRoaXMuZm9ybWF0KTtcblxuICAgICAgICAgICAgdGhpcy5ob3VycyA9IGRpc2FibGVIb3Vycyhob3Vycywge1xuICAgICAgICAgICAgICAgIG1pbjogdGhpcy5taW5UaW1lLFxuICAgICAgICAgICAgICAgIG1heDogdGhpcy5tYXhUaW1lLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5mb3JtYXQsXG4gICAgICAgICAgICAgICAgcGVyaW9kOiB0aGlzLnBlcmlvZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3BlcmlvZCddICYmIGNoYW5nZXNbJ3BlcmlvZCddLmN1cnJlbnRWYWx1ZVxuICAgICAgICAgICAgfHwgY2hhbmdlc1snaG91ciddICYmIGNoYW5nZXNbJ2hvdXInXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBnZXRNaW51dGVzKHRoaXMubWludXRlc0dhcCk7XG5cbiAgICAgICAgICAgIHRoaXMubWludXRlcyA9IGRpc2FibGVNaW51dGVzKG1pbnV0ZXMsICt0aGlzLmhvdXIsIHtcbiAgICAgICAgICAgICAgICBtaW46IHRoaXMubWluVGltZSxcbiAgICAgICAgICAgICAgICBtYXg6IHRoaXMubWF4VGltZSxcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMuZm9ybWF0LFxuICAgICAgICAgICAgICAgIHBlcmlvZDogdGhpcy5wZXJpb2RcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlVGltZVVuaXQodW5pdDogVGltZVVuaXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aW1lVW5pdENoYW5nZWQubmV4dCh1bml0KTtcbiAgICB9XG5cbiAgICBjaGFuZ2VQZXJpb2QocGVyaW9kOiBUaW1lUGVyaW9kKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGVyaW9kQ2hhbmdlZC5uZXh0KHBlcmlvZCk7XG4gICAgfVxuXG4gICAgY2hhbmdlSG91cihob3VyOiBDbG9ja0ZhY2VUaW1lKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG91ckNoYW5nZWQubmV4dChob3VyKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VNaW51dGUobWludXRlOiBDbG9ja0ZhY2VUaW1lKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWludXRlQ2hhbmdlZC5uZXh0KG1pbnV0ZSk7XG4gICAgfVxuXG4gICAgc2hvd0hpbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNIaW50VmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaGlkZUhpbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNIaW50VmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==