UNPKG

ngx-doc-viewer

Version:
106 lines 14.3 kB
import { __decorate } from "tslib"; import { Component, Input, NgZone, OnDestroy, OnChanges, SimpleChanges, Output } from '@angular/core'; import { DomSanitizer, SafeResourceUrl, SafeStyle } from '@angular/platform-browser'; import { take } from 'rxjs/operators'; import { interval } from 'rxjs'; import { EventEmitter } from '@angular/core'; var NgxDocViewerComponent = /** @class */ (function () { function NgxDocViewerComponent(domSanitizer, ngZone) { this.domSanitizer = domSanitizer; this.ngZone = ngZone; this.fullUrl = null; this.checkIFrameSubscription = null; this.configuredViewer = 'google'; this.loaded = new EventEmitter(); this.url = ''; this.googleCheckInterval = 3000; } Object.defineProperty(NgxDocViewerComponent.prototype, "viewer", { set: function (viewer) { var v = viewer.toLowerCase().trim(); if (v !== 'google' && v !== 'office') { console.error("Unsupported viewer: '" + viewer + "'. Supported viewers: google, office"); } this.configuredViewer = v; }, enumerable: true, configurable: true }); NgxDocViewerComponent.prototype.ngOnDestroy = function () { if (this.checkIFrameSubscription) { this.checkIFrameSubscription.unsubscribe(); } }; NgxDocViewerComponent.prototype.ngOnChanges = function (changes) { var _this = this; if ((changes.url && changes.url.currentValue !== changes.url.previousValue) || changes.viewer && changes.viewer.currentValue !== changes.viewer.previousValue) { var u = this.url.indexOf('/') ? encodeURIComponent(this.url) : this.url; this.fullUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(this.configuredViewer === 'google' ? "https://docs.google.com/gview?url=" + u + "&embedded=true" : "https://view.officeapps.live.com/op/embed.aspx?src=" + u); // see: https://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives // hack to reload iframe if it's not loaded. // would maybe be better to use view.officeapps.live.com but seems not to work with sas token. if (this.configuredViewer === 'google') { this.ngZone.runOutsideAngular(function () { var iframe = document.querySelector('iframe'); _this.checkIFrame(iframe); // if it's not loaded after the googleIntervalCheck, then open load again. _this.checkIFrameSubscription = interval(_this.googleCheckInterval) .pipe(take(Math.round(_this.googleCheckInterval === 0 ? 0 : 20000 / _this.googleCheckInterval))) .subscribe(function () { if (iframe == null) { iframe = document.querySelector('iframe'); _this.checkIFrame(iframe); } _this.reloadIFrame(iframe); }); }); } } }; NgxDocViewerComponent.prototype.checkIFrame = function (iframe) { var _this = this; if (iframe) { iframe.onload = function () { _this.loaded.emit(null); if (_this.checkIFrameSubscription) { _this.checkIFrameSubscription.unsubscribe(); } }; } }; NgxDocViewerComponent.prototype.reloadIFrame = function (iframe) { if (iframe) { console.log('reloading..'); iframe.src = iframe.src; } }; NgxDocViewerComponent.ctorParameters = function () { return [ { type: DomSanitizer }, { type: NgZone } ]; }; __decorate([ Output() ], NgxDocViewerComponent.prototype, "loaded", void 0); __decorate([ Input() ], NgxDocViewerComponent.prototype, "url", void 0); __decorate([ Input() ], NgxDocViewerComponent.prototype, "googleCheckInterval", void 0); __decorate([ Input() ], NgxDocViewerComponent.prototype, "viewer", null); NgxDocViewerComponent = __decorate([ Component({ selector: 'ngx-doc-viewer', template: "<iframe id=\"iframe\" *ngIf=\"fullUrl\" frameBorder=\"0\" [src]=\"fullUrl\"></iframe> ", styles: [":host {\n display: block;\n }\n iframe {\n width: 100%;\n height: 100%;\n }\n "] }) ], NgxDocViewerComponent); return NgxDocViewerComponent; }()); export { NgxDocViewerComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kb2Mtdmlld2VyLyIsInNvdXJjZXMiOlsiZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFnQixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWM3QztJQUtJLCtCQUFvQixZQUEwQixFQUFVLE1BQWM7UUFBbEQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSi9ELFlBQU8sR0FBb0IsSUFBSSxDQUFDO1FBQy9CLDRCQUF1QixHQUFpQixJQUFJLENBQUM7UUFDN0MscUJBQWdCLEdBQUcsUUFBUSxDQUFDO1FBRzFCLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1Qsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO0lBSHNDLENBQUM7SUFJbEUsc0JBQUkseUNBQU07YUFBVixVQUFXLE1BQWM7WUFDOUIsSUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUNsQyxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUF3QixNQUFNLHlDQUFzQyxDQUFDLENBQUM7YUFDdkY7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7OztPQUFBO0lBRUQsMkNBQVcsR0FBWDtRQUNJLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM5QztJQUNMLENBQUM7SUFFRCwyQ0FBVyxHQUFYLFVBQVksT0FBc0I7UUFBbEMsaUJBNEJDO1FBM0JHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1lBQ3ZFLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDaEYsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUMxRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFLLFFBQVEsQ0FBQyxDQUFDO2dCQUNoRyx1Q0FBcUMsQ0FBQyxtQkFBZ0IsQ0FBQyxDQUFDO2dCQUN4RCx3REFBc0QsQ0FBRyxDQUFDLENBQUM7WUFDL0QsOEhBQThIO1lBQzlILDRDQUE0QztZQUM1Qyw4RkFBOEY7WUFDOUYsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssUUFBUSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO29CQUMxQixJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM5QyxLQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN6QiwwRUFBMEU7b0JBQzFFLEtBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUMsS0FBSSxDQUFDLG1CQUFtQixDQUFDO3lCQUM1RCxJQUFJLENBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSSxDQUFDLG1CQUFtQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQzt5QkFDM0YsU0FBUyxDQUFDO3dCQUNQLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTs0QkFDaEIsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQzFDLEtBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7eUJBQzVCO3dCQUNELEtBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzlCLENBQUMsQ0FBQyxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFDO2FBQ047U0FDSjtJQUNMLENBQUM7SUFDRCwyQ0FBVyxHQUFYLFVBQVksTUFBeUI7UUFBckMsaUJBU0M7UUFSRyxJQUFJLE1BQU0sRUFBRTtZQUNSLE1BQU0sQ0FBQyxNQUFNLEdBQUc7Z0JBQ1osS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSSxDQUFDLHVCQUF1QixFQUFFO29CQUM5QixLQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQzlDO1lBQ0wsQ0FBQyxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsNENBQVksR0FBWixVQUFhLE1BQXlCO1FBQ2xDLElBQUksTUFBTSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMzQixNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDM0I7SUFDTCxDQUFDOztnQkEvRGlDLFlBQVk7Z0JBQWtCLE1BQU07O0lBQzVEO1FBQVQsTUFBTSxFQUFFO3lEQUFnRDtJQUNoRDtRQUFSLEtBQUssRUFBRTtzREFBVTtJQUNUO1FBQVIsS0FBSyxFQUFFO3NFQUE0QjtJQUMzQjtRQUFSLEtBQUssRUFBRTt1REFNUDtJQWZRLHFCQUFxQjtRQVpqQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFFBQVEsRUFBRSx3RkFBZ0Y7cUJBQ2pGLGlIQU9SO1NBQ0osQ0FBQztPQUNXLHFCQUFxQixDQXFFakM7SUFBRCw0QkFBQztDQUFBLEFBckVELElBcUVDO1NBckVZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCwgU2FmZVN0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbmd4LWRvYy12aWV3ZXInLFxyXG4gICAgdGVtcGxhdGU6IGA8aWZyYW1lIGlkPVwiaWZyYW1lXCIgKm5nSWY9XCJmdWxsVXJsXCIgZnJhbWVCb3JkZXI9XCIwXCIgW3NyY109XCJmdWxsVXJsXCI+PC9pZnJhbWU+IGAsXHJcbiAgICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG4gICAgaWZyYW1lIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4RG9jVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gICAgcHVibGljIGZ1bGxVcmw6IFNhZmVSZXNvdXJjZVVybCA9IG51bGw7XHJcbiAgICBwcml2YXRlIGNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBjb25maWd1cmVkVmlld2VyID0gJ2dvb2dsZSc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplciwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkgeyB9XHJcbiAgICBAT3V0cHV0KCkgbG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBJbnB1dCgpIHVybCA9ICcnO1xyXG4gICAgQElucHV0KCkgZ29vZ2xlQ2hlY2tJbnRlcnZhbCA9IDMwMDA7XHJcbiAgICBASW5wdXQoKSBzZXQgdmlld2VyKHZpZXdlcjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgdiA9IHZpZXdlci50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcclxuICAgICAgICBpZiAodiAhPT0gJ2dvb2dsZScgJiYgdiAhPT0gJ29mZmljZScpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVW5zdXBwb3J0ZWQgdmlld2VyOiAnJHt2aWV3ZXJ9Jy4gU3VwcG9ydGVkIHZpZXdlcnM6IGdvb2dsZSwgb2ZmaWNlYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29uZmlndXJlZFZpZXdlciA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKChjaGFuZ2VzLnVybCAmJiBjaGFuZ2VzLnVybC5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMudXJsLnByZXZpb3VzVmFsdWUpIHx8XHJcbiAgICAgICAgICAgIGNoYW5nZXMudmlld2VyICYmIGNoYW5nZXMudmlld2VyLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy52aWV3ZXIucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCB1ID0gdGhpcy51cmwuaW5kZXhPZignLycpID8gZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMudXJsKSA6IHRoaXMudXJsO1xyXG4gICAgICAgICAgICB0aGlzLmZ1bGxVcmwgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5jb25maWd1cmVkVmlld2VyID09PSAnZ29vZ2xlJyA/XHJcbiAgICAgICAgICAgICAgICBgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZ3ZpZXc/dXJsPSR7dX0mZW1iZWRkZWQ9dHJ1ZWAgOlxyXG4gICAgICAgICAgICAgICAgYGh0dHBzOi8vdmlldy5vZmZpY2VhcHBzLmxpdmUuY29tL29wL2VtYmVkLmFzcHg/c3JjPSR7dX1gKTtcclxuICAgICAgICAgICAgLy8gc2VlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MDQxNDAzOS9nb29nbGUtZG9jcy12aWV3ZXItcmV0dXJuaW5nLTIwNC1yZXNwb25zZXMtbm8tbG9uZ2VyLXdvcmtpbmctYWx0ZXJuYXRpdmVzXHJcbiAgICAgICAgICAgIC8vIGhhY2sgdG8gcmVsb2FkIGlmcmFtZSBpZiBpdCdzIG5vdCBsb2FkZWQuXHJcbiAgICAgICAgICAgIC8vIHdvdWxkIG1heWJlIGJlIGJldHRlciB0byB1c2Ugdmlldy5vZmZpY2VhcHBzLmxpdmUuY29tIGJ1dCBzZWVtcyBub3QgdG8gd29yayB3aXRoIHNhcyB0b2tlbi5cclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlndXJlZFZpZXdlciA9PT0gJ2dvb2dsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZShpZnJhbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGl0J3Mgbm90IGxvYWRlZCBhZnRlciB0aGUgZ29vZ2xlSW50ZXJ2YWxDaGVjaywgdGhlbiBvcGVuIGxvYWQgYWdhaW4uXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZVN1YnNjcmlwdGlvbiA9IGludGVydmFsKHRoaXMuZ29vZ2xlQ2hlY2tJbnRlcnZhbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKE1hdGgucm91bmQodGhpcy5nb29nbGVDaGVja0ludGVydmFsID09PSAwID8gMCA6IDIwMDAwIC8gdGhpcy5nb29nbGVDaGVja0ludGVydmFsKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlmcmFtZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lGcmFtZShpZnJhbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRJRnJhbWUoaWZyYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNoZWNrSUZyYW1lKGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoaWZyYW1lKSB7XHJcbiAgICAgICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZC5lbWl0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tJRnJhbWVTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrSUZyYW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZElGcmFtZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKGlmcmFtZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygncmVsb2FkaW5nLi4nKTtcclxuICAgICAgICAgICAgaWZyYW1lLnNyYyA9IGlmcmFtZS5zcmM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==