UNPKG

@harbor/ui

Version:

Harbor shared UI components based on Clarity and Angular6

136 lines (135 loc) 15.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, EventEmitter, Output } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { ConfirmationAcknowledgement } from './confirmation-state-message'; export class ConfirmationDialogComponent { /** * @param {?} translate */ constructor(translate) { this.translate = translate; this.opened = false; this.dialogTitle = ''; this.dialogContent = ''; this.confirmAction = new EventEmitter(); this.cancelAction = new EventEmitter(); this.isDelete = false; } /** * @param {?} msg * @return {?} */ open(msg) { this.dialogTitle = msg.title; this.message = msg; this.translate.get(this.dialogTitle).subscribe((res) => this.dialogTitle = res); this.translate.get(msg.message, { 'param': msg.param }).subscribe((res) => { this.dialogContent = res; }); // Open dialog this.buttons = msg.buttons; this.opened = true; } /** * @param {?} list * @return {?} */ colorChange(list) { if (!list.loading && !list.errorState) { return 'green'; } else if (!list.loading && list.errorState) { return 'red'; } else { return '#666'; } } /** * @param {?} errorSpan * @return {?} */ toggleErrorTitle(errorSpan) { errorSpan.style.display = (errorSpan.style.display === 'none') ? 'block' : 'none'; } /** * @return {?} */ close() { this.opened = false; } /** * @return {?} */ cancel() { if (!this.message) { // Inproper condition this.close(); return; } /** @type {?} */ let data = this.message.data ? this.message.data : {}; /** @type {?} */ let target = this.message.targetId ? this.message.targetId : 0 /* EMPTY */; this.cancelAction.emit(new ConfirmationAcknowledgement(2 /* CANCEL */, data, target)); this.isDelete = false; this.close(); } /** * @return {?} */ confirm() { if (!this.message) { // Inproper condition // Inproper condition this.close(); return; } /** @type {?} */ let data = this.message.data ? this.message.data : {}; /** @type {?} */ let target = this.message.targetId ? this.message.targetId : 0 /* EMPTY */; /** @type {?} */ let message = new ConfirmationAcknowledgement(1 /* CONFIRMED */, data, target); this.confirmAction.emit(message); this.close(); } } ConfirmationDialogComponent.decorators = [ { type: Component, args: [{ selector: 'confirmation-dialog', template: "<clr-modal [(clrModalOpen)]=\"opened\" [clrModalClosable]=\"false\" [clrModalStaticBackdrop]=\"true\">\n <h3 class=\"modal-title\" class=\"confirmation-title\" style=\"margin-top: 0px;\">{{dialogTitle}}</h3>\n <div class=\"modal-body\">\n <div class=\"confirmation-icon-inline\">\n <clr-icon shape=\"warning\" class=\"is-warning\" size=\"64\"></clr-icon>\n </div>\n <div class=\"confirmation-content\">{{dialogContent}}</div>\n </div>\n <div class=\"modal-footer\" [ngSwitch]=\"buttons\">\n <ng-template [ngSwitchCase]=\"0\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancel()\">{{'BUTTON.CANCEL' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"confirm()\">{{'BUTTON.CONFIRM' | translate}}</button>\n </ng-template>\n <ng-template [ngSwitchCase]=\"1\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancel()\">{{'BUTTON.NO' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"confirm()\">{{ 'BUTTON.YES' | translate}}</button>\n </ng-template>\n <ng-template [ngSwitchCase]=\"2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancel()\" [hidden]=\"isDelete\">{{'BUTTON.CANCEL' | translate}}</button>\n <button type=\"button\" class=\"btn btn-danger\" (click)=\"confirm()\" [hidden]=\"isDelete\">{{'BUTTON.DELETE' | translate}}</button>\n </ng-template>\n <ng-template [ngSwitchCase]=\"3\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"cancel()\">{{'BUTTON.CLOSE' | translate}}</button>\n </ng-template>\n <ng-template [ngSwitchCase]=\"4\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancel()\" [hidden]=\"isDelete\">{{'BUTTON.CANCEL' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"confirm()\" [hidden]=\"isDelete\">{{'BUTTON.REPLICATE' | translate}}</button>\n </ng-template>\n </div>\n</clr-modal>", styles: [".confirmation-icon-inline{display:inline-block}.confirmation-title{line-height:24px;color:#000;font-size:22px}.confirmation-content{font-size:14px;color:#565656;line-height:24px;display:inline-block;vertical-align:middle;width:80%;white-space:pre-wrap}.batchInfoUl{padding:20px;list-style-type:none}.batchInfoUl li{line-height:24px;border-bottom:1px solid #e8e8e8}.batchInfoUl li span:first-child{padding-right:20px;width:240px;display:inline-block;color:#666;text-overflow:ellipsis;overflow:hidden;vertical-align:middle}.batchInfoUl li span:last-child{width:220px;display:inline-block;color:#666}.batchInfoUl li span i{display:inline-block;line-height:1.2em;font-size:.8em;color:#999}.batchInfoUl li span a{cursor:pointer;text-decoration:underline}"] }] } ]; /** @nocollapse */ ConfirmationDialogComponent.ctorParameters = () => [ { type: TranslateService } ]; ConfirmationDialogComponent.propDecorators = { confirmAction: [{ type: Output }], cancelAction: [{ type: Output }] }; if (false) { /** @type {?} */ ConfirmationDialogComponent.prototype.opened; /** @type {?} */ ConfirmationDialogComponent.prototype.dialogTitle; /** @type {?} */ ConfirmationDialogComponent.prototype.dialogContent; /** @type {?} */ ConfirmationDialogComponent.prototype.message; /** @type {?} */ ConfirmationDialogComponent.prototype.buttons; /** @type {?} */ ConfirmationDialogComponent.prototype.confirmAction; /** @type {?} */ ConfirmationDialogComponent.prototype.cancelAction; /** @type {?} */ ConfirmationDialogComponent.prototype.isDelete; /** @type {?} */ ConfirmationDialogComponent.prototype.translate; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaGFyYm9yL3VpLyIsInNvdXJjZXMiOlsic3JjL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQWFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVczRSxNQUFNOzs7O0lBV0YsWUFDWTtRQUFBLGNBQVMsR0FBVCxTQUFTO3NCQVhaLEtBQUs7MkJBQ0EsRUFBRTs2QkFDQSxFQUFFOzZCQUlRLElBQUksWUFBWSxFQUErQjs0QkFDaEQsSUFBSSxZQUFZLEVBQStCO3dCQUM3RCxLQUFLO0tBRzJCOzs7OztJQUUzQyxJQUFJLENBQUMsR0FBd0I7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztTQUM1QixDQUFDLENBQUM7O1FBRUgsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0tBQ3RCOzs7OztJQUdELFdBQVcsQ0FBQyxJQUFlO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQztTQUNsQjthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDekMsT0FBTyxLQUFLLENBQUM7U0FDaEI7YUFBTTtZQUNILE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0tBQ0o7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsU0FBYztRQUMzQixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUNyRjs7OztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztLQUN2Qjs7OztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTs7WUFFZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPO1NBQ1Y7O1FBRUQsSUFBSSxJQUFJLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7O1FBQzNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQTBCLENBQUM7UUFDdkYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSwyQkFBMkIsaUJBRWxELElBQUksRUFDSixNQUFNLENBQ1QsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0tBQ2hCOzs7O0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUMscUJBQXFCOztZQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPO1NBQ1Y7O1FBRUQsSUFBSSxJQUFJLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7O1FBQzNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQTBCLENBQUM7O1FBQ3ZGLElBQUksT0FBTyxHQUFHLElBQUksMkJBQTJCLG9CQUV6QyxJQUFJLEVBQ0osTUFBTSxDQUNULENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7S0FDaEI7OztZQXBGSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsMmtFQUFtRDs7YUFFdEQ7Ozs7WUFaUSxnQkFBZ0I7Ozs0QkFxQnBCLE1BQU07MkJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxNyBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4vLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4vLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IENvbmZpcm1hdGlvbk1lc3NhZ2UgfSBmcm9tICcuL2NvbmZpcm1hdGlvbi1tZXNzYWdlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkFja25vd2xlZGdlbWVudCB9IGZyb20gJy4vY29uZmlybWF0aW9uLXN0YXRlLW1lc3NhZ2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU3RhdGUsIENvbmZpcm1hdGlvblRhcmdldHMsIENvbmZpcm1hdGlvbkJ1dHRvbnMgfSBmcm9tICcuLi9zaGFyZWQvc2hhcmVkLmNvbnN0JztcblxuaW1wb3J0IHtCYXRjaEluZm99IGZyb20gJy4vY29uZmlybWF0aW9uLWJhdGNoLW1lc3NhZ2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NvbmZpcm1hdGlvbi1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsgJy4vY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQuc2NzcycgXVxufSlcblxuZXhwb3J0IGNsYXNzIENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB7XG4gICAgb3BlbmVkID0gZmFsc2U7XG4gICAgZGlhbG9nVGl0bGUgPSAnJztcbiAgICBkaWFsb2dDb250ZW50ID0gJyc7XG4gICAgbWVzc2FnZTogQ29uZmlybWF0aW9uTWVzc2FnZTtcbiAgICBidXR0b25zOiBDb25maXJtYXRpb25CdXR0b25zO1xuXG4gICAgQE91dHB1dCgpIGNvbmZpcm1BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPENvbmZpcm1hdGlvbkFja25vd2xlZGdlbWVudD4oKTtcbiAgICBAT3V0cHV0KCkgY2FuY2VsQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxDb25maXJtYXRpb25BY2tub3dsZWRnZW1lbnQ+KCk7XG4gICAgaXNEZWxldGUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICAgIG9wZW4obXNnOiBDb25maXJtYXRpb25NZXNzYWdlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nVGl0bGUgPSBtc2cudGl0bGU7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1zZztcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KHRoaXMuZGlhbG9nVGl0bGUpLnN1YnNjcmliZSgocmVzOiBzdHJpbmcpID0+IHRoaXMuZGlhbG9nVGl0bGUgPSByZXMpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQobXNnLm1lc3NhZ2UsIHsgJ3BhcmFtJzogbXNnLnBhcmFtIH0pLnN1YnNjcmliZSgocmVzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29udGVudCA9IHJlcztcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIE9wZW4gZGlhbG9nXG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IG1zZy5idXR0b25zO1xuICAgICAgICB0aGlzLm9wZW5lZCA9IHRydWU7XG4gICAgfVxuXG5cbiAgICBjb2xvckNoYW5nZShsaXN0OiBCYXRjaEluZm8pIHtcbiAgICAgICAgaWYgKCFsaXN0LmxvYWRpbmcgJiYgIWxpc3QuZXJyb3JTdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICdncmVlbic7XG4gICAgICAgIH0gZWxzZSBpZiAoIWxpc3QubG9hZGluZyAmJiBsaXN0LmVycm9yU3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAncmVkJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnIzY2Nic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVFcnJvclRpdGxlKGVycm9yU3BhbjogYW55KSB7XG4gICAgICAgIGVycm9yU3Bhbi5zdHlsZS5kaXNwbGF5ID0gKGVycm9yU3Bhbi5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpID8gJ2Jsb2NrJyA6ICdub25lJztcbiAgICB9XG5cbiAgICBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAvLyBJbnByb3BlciBjb25kaXRpb25cbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkYXRhOiBhbnkgPSB0aGlzLm1lc3NhZ2UuZGF0YSA/IHRoaXMubWVzc2FnZS5kYXRhIDoge307XG4gICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLm1lc3NhZ2UudGFyZ2V0SWQgPyB0aGlzLm1lc3NhZ2UudGFyZ2V0SWQgOiBDb25maXJtYXRpb25UYXJnZXRzLkVNUFRZO1xuICAgICAgICB0aGlzLmNhbmNlbEFjdGlvbi5lbWl0KG5ldyBDb25maXJtYXRpb25BY2tub3dsZWRnZW1lbnQoXG4gICAgICAgICAgICBDb25maXJtYXRpb25TdGF0ZS5DQU5DRUwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgdGFyZ2V0XG4gICAgICAgICkpO1xuICAgICAgICB0aGlzLmlzRGVsZXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBjb25maXJtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZSkgey8vIElucHJvcGVyIGNvbmRpdGlvblxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRhdGE6IGFueSA9IHRoaXMubWVzc2FnZS5kYXRhID8gdGhpcy5tZXNzYWdlLmRhdGEgOiB7fTtcbiAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMubWVzc2FnZS50YXJnZXRJZCA/IHRoaXMubWVzc2FnZS50YXJnZXRJZCA6IENvbmZpcm1hdGlvblRhcmdldHMuRU1QVFk7XG4gICAgICAgIGxldCBtZXNzYWdlID0gbmV3IENvbmZpcm1hdGlvbkFja25vd2xlZGdlbWVudChcbiAgICAgICAgICAgIENvbmZpcm1hdGlvblN0YXRlLkNPTkZJUk1FRCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICB0YXJnZXRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb25maXJtQWN0aW9uLmVtaXQobWVzc2FnZSk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG59XG4iXX0=