UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

346 lines 22.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable, ApplicationRef, NgZone, ComponentFactoryResolver } from '@angular/core'; import { ToastComponent } from './toast.component'; import { ToastOptions } from './toast-options.provider'; /** * @record */ export function ConfigInterface() { } if (false) { /** @type {?|undefined} */ ConfigInterface.prototype.content; /** @type {?|undefined} */ ConfigInterface.prototype.iconType; /** @type {?|undefined} */ ConfigInterface.prototype.mask; } var ToastService = /** @class */ (function () { function ToastService(_appRef, _cfr, _zone) { this._appRef = _appRef; this._cfr = _cfr; this._zone = _zone; this.timeout = null; this.zone = null; this.compRef = null; this.toastCompFactory = null; this.appRef = null; this.zone = this._zone; this.appRef = this._appRef; this.toastCompFactory = this._cfr.resolveComponentFactory(ToastComponent); } /** * @param {?} config * @param {?} options * @return {?} */ ToastService.prototype._initConfig = /** * @param {?} config * @param {?} options * @return {?} */ function (config, options) { /** @type {?} */ var props = {}; /** @type {?} */ var optionalParams = ['content', 'iconType', 'mask', 'position']; config = Object.assign(options, config); optionalParams.forEach((/** * @param {?} key * @return {?} */ function (key) { if (config[key] !== undefined) { props[key] = config[key]; } })); /** @type {?} */ var iconType = { info: '', success: 'success', fail: 'fail', offline: 'dislike', loading: 'loading' }[options.iconType]; props['iconType'] = iconType; props['mask'] = options.mask; props['position'] = options.position; return props; }; /** * @param {?} config * @param {?} type * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ ToastService.prototype.notice = /** * @param {?} config * @param {?} type * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ function (config, type, timeInterval, onClose, mask, position) { var _this = this; if (timeInterval === void 0) { timeInterval = 2000; } if (mask === void 0) { mask = true; } if (position === void 0) { position = 'middle'; } // 如果已经存在,在没有遮罩层的情况下,会响应别的toast,需要清除原来的 if (this.compRef) { this.hide(); } /** @type {?} */ var options = new ToastOptions(); options.iconType = type; options.mask = mask; options.position = position; /** @type {?} */ var props = this._initConfig(config, options); document.body.insertBefore(document.createElement(this.toastCompFactory.selector), document.body.firstChild); /** @type {?} */ var instance; /** @type {?} */ var subject; this.compRef = this._appRef.bootstrap(this.toastCompFactory); instance = this.compRef.instance; subject = instance.subject; if (timeInterval) { this.timeout = setTimeout((/** * @return {?} */ function () { if (onClose) { onClose(); } _this.hide(); }), timeInterval); } Object.assign(instance, props); return subject; }; /** * Open info dialog */ /** * Open info dialog * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ ToastService.prototype.info = /** * Open info dialog * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ function (content, timeInterval, onClose, mask, position) { /** @type {?} */ var config = Object.assign({ iconType: 'info', content: content }); return this.notice(config, 'info', timeInterval, onClose, mask, position); }; /** * Open success dialog */ /** * Open success dialog * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ ToastService.prototype.success = /** * Open success dialog * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ function (content, timeInterval, onClose, mask, position) { /** @type {?} */ var config = Object.assign({ iconType: 'success', content: content }); return this.notice(config, 'success', timeInterval, onClose, mask, position); }; /** * @param {?=} content * @param {?=} timeInterval * @param {?=} mask * @param {?=} position * @return {?} */ ToastService.prototype.show = /** * @param {?=} content * @param {?=} timeInterval * @param {?=} mask * @param {?=} position * @return {?} */ function (content, timeInterval, mask, position) { /** @type {?} */ var config = Object.assign({ iconType: 'info', content: content }); return this.notice(config, 'info', timeInterval, (/** * @return {?} */ function () { }), mask, position); }; /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ ToastService.prototype.fail = /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ function (content, timeInterval, onClose, mask, position) { /** @type {?} */ var config = Object.assign({ iconType: 'fail', content: content }); return this.notice(config, 'fail', timeInterval, onClose, mask, position); }; /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ ToastService.prototype.offline = /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ function (content, timeInterval, onClose, mask, position) { /** @type {?} */ var config = Object.assign({ iconType: 'offline', content: content }); return this.notice(config, 'offline', timeInterval, onClose, mask, position); }; /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ ToastService.prototype.loading = /** * @param {?=} content * @param {?=} timeInterval * @param {?=} onClose * @param {?=} mask * @param {?=} position * @return {?} */ function (content, timeInterval, onClose, mask, position) { /** @type {?} */ var config = Object.assign({ iconType: 'loading', content: content }); return this.notice(config, 'loading', timeInterval, onClose, mask, position); }; /** * @return {?} */ ToastService.prototype.hide = /** * @return {?} */ function () { var _this = this; if (this.timeout) { clearTimeout(this.timeout); } if (this.compRef) { this._zone.run((/** * @return {?} */ function () { _this.compRef.destroy(); })); this.compRef = null; } }; ToastService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, { type: Injectable } ]; /** @nocollapse */ ToastService.ctorParameters = function () { return [ { type: ApplicationRef }, { type: ComponentFactoryResolver }, { type: NgZone } ]; }; return ToastService; }()); export { ToastService }; if (false) { /** @type {?} */ ToastService.prototype.timeout; /** @type {?} */ ToastService.prototype.zone; /** @type {?} */ ToastService.prototype.compRef; /** @type {?} */ ToastService.prototype.toastCompFactory; /** @type {?} */ ToastService.prototype.appRef; /** * @type {?} * @private */ ToastService.prototype._appRef; /** * @type {?} * @private */ ToastService.prototype._cfr; /** * @type {?} * @private */ ToastService.prototype._zone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsidG9hc3QvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFHVixjQUFjLEVBQ2QsTUFBTSxFQUNOLHdCQUF3QixFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBRXhELHFDQUlDOzs7SUFIQyxrQ0FBYzs7SUFDZCxtQ0FBa0I7O0lBQ2xCLCtCQUFlOztBQUVqQjtJQVdFLHNCQUFvQixPQUF1QixFQUFVLElBQThCLEVBQVUsS0FBYTtRQUF0RixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQU4xRyxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsU0FBSSxHQUFXLElBQUksQ0FBQztRQUNwQixZQUFPLEdBQXNCLElBQUksQ0FBQztRQUNsQyxxQkFBZ0IsR0FBcUMsSUFBSSxDQUFDO1FBQzFELFdBQU0sR0FBbUIsSUFBSSxDQUFDO1FBRzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7Ozs7O0lBRUQsa0NBQVc7Ozs7O0lBQVgsVUFBWSxNQUFjLEVBQUUsT0FBcUI7O1lBQ3pDLEtBQUssR0FBRyxFQUFFOztZQUNWLGNBQWMsR0FBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVB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Z0JBMUlGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Z0JBQ0EsVUFBVTs7OztnQkFmVCxjQUFjO2dCQUVkLHdCQUF3QjtnQkFEeEIsTUFBTTs7SUFzSlIsbUJBQUM7Q0FBQSxBQTNJRCxJQTJJQztTQXZJWSxZQUFZOzs7SUFDdkIsK0JBQWU7O0lBQ2YsNEJBQW9COztJQUNwQiwrQkFBa0M7O0lBQ2xDLHdDQUEwRDs7SUFDMUQsOEJBQThCOzs7OztJQUVsQiwrQkFBK0I7Ozs7O0lBQUUsNEJBQXNDOzs7OztJQUFFLDZCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIENvbXBvbmVudFJlZixcbiAgQ29tcG9uZW50RmFjdG9yeSxcbiAgQXBwbGljYXRpb25SZWYsXG4gIE5nWm9uZSxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tICcuL3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2FzdE9wdGlvbnMgfSBmcm9tICcuL3RvYXN0LW9wdGlvbnMucHJvdmlkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0ludGVyZmFjZSB7XG4gIGNvbnRlbnQ/OiBhbnk7XG4gIGljb25UeXBlPzogc3RyaW5nO1xuICBtYXNrPzogYm9vbGVhbjtcbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRvYXN0U2VydmljZSB7XG4gIHRpbWVvdXQgPSBudWxsO1xuICB6b25lOiBOZ1pvbmUgPSBudWxsO1xuICBjb21wUmVmOiBDb21wb25lbnRSZWY8YW55PiA9IG51bGw7XG4gIHRvYXN0Q29tcEZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8VG9hc3RDb21wb25lbnQ+ID0gbnVsbDtcbiAgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgcHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuem9uZSA9IHRoaXMuX3pvbmU7XG4gICAgdGhpcy5hcHBSZWYgPSB0aGlzLl9hcHBSZWY7XG4gICAgdGhpcy50b2FzdENvbXBGYWN0b3J5ID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFRvYXN0Q29tcG9uZW50KTtcbiAgfVxuXG4gIF9pbml0Q29uZmlnKGNvbmZpZzogT2JqZWN0LCBvcHRpb25zOiBUb2FzdE9wdGlvbnMpOiBPYmplY3Qge1xuICAgIGNvbnN0IHByb3BzID0ge307XG4gICAgY29uc3Qgb3B0aW9uYWxQYXJhbXM6IHN0cmluZ1tdID0gWydjb250ZW50JywgJ2ljb25UeXBlJywgJ21hc2snLCAncG9zaXRpb24nXTtcblxuICAgIGNvbmZpZyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgY29uZmlnKTtcbiAgICBvcHRpb25hbFBhcmFtcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY29uZmlnW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9wc1trZXldID0gY29uZmlnW2tleV07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBpY29uVHlwZSA9IHtcbiAgICAgIGluZm86ICcnLFxuICAgICAgc3VjY2VzczogJ3N1Y2Nlc3MnLFxuICAgICAgZmFpbDogJ2ZhaWwnLFxuICAgICAgb2ZmbGluZTogJ2Rpc2xpa2UnLFxuICAgICAgbG9hZGluZzogJ2xvYWRpbmcnXG4gICAgfVtvcHRpb25zLmljb25UeXBlXTtcblxuICAgIHByb3BzWydpY29uVHlwZSddID0gaWNvblR5cGU7XG4gICAgcHJvcHNbJ21hc2snXSA9IG9wdGlvbnMubWFzaztcbiAgICBwcm9wc1sncG9zaXRpb24nXSA9IG9wdGlvbnMucG9zaXRpb247XG4gICAgcmV0dXJuIHByb3BzO1xuICB9XG5cbiAgbm90aWNlKGNvbmZpZzogQ29uZmlnSW50ZXJmYWNlLCB0eXBlLCB0aW1lSW50ZXJ2YWwgPSAyMDAwLCBvbkNsb3NlLCBtYXNrID0gdHJ1ZSwgcG9zaXRpb24gPSAnbWlkZGxlJykge1xuICAgIC8vIOWmguaenOW3sue7j+WtmOWcqO+8jOWcqOayoeaciemBrue9qeWxgueahOaDheWGteS4i++8jOS8muWTjeW6lOWIq+eahHRvYXN077yM6ZyA6KaB5riF6Zmk5Y6f5p2l55qEXG4gICAgaWYgKHRoaXMuY29tcFJlZikge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnM6IFRvYXN0T3B0aW9ucyA9IG5ldyBUb2FzdE9wdGlvbnMoKTtcbiAgICBvcHRpb25zLmljb25UeXBlID0gdHlwZTtcbiAgICBvcHRpb25zLm1hc2sgPSBtYXNrO1xuICAgIG9wdGlvbnMucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuX2luaXRDb25maWcoY29uZmlnLCBvcHRpb25zKTtcblxuICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy50b2FzdENvbXBGYWN0b3J5LnNlbGVjdG9yKSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTtcbiAgICBsZXQgaW5zdGFuY2U6IGFueTtcbiAgICBsZXQgc3ViamVjdDogYW55O1xuXG4gICAgdGhpcy5jb21wUmVmID0gdGhpcy5fYXBwUmVmLmJvb3RzdHJhcCh0aGlzLnRvYXN0Q29tcEZhY3RvcnkpO1xuICAgIGluc3RhbmNlID0gdGhpcy5jb21wUmVmLmluc3RhbmNlO1xuICAgIHN1YmplY3QgPSBpbnN0YW5jZS5zdWJqZWN0O1xuXG4gICAgaWYgKHRpbWVJbnRlcnZhbCkge1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgfSwgdGltZUludGVydmFsKTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKGluc3RhbmNlLCBwcm9wcyk7XG4gICAgcmV0dXJuIHN1YmplY3Q7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiBpbmZvIGRpYWxvZ1xuICAgKi9cbiAgaW5mbyhjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLCBtYXNrPzogYm9vbGVhbiwgcG9zaXRpb24/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb25UeXBlOiAnaW5mbycsXG4gICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMubm90aWNlKGNvbmZpZywgJ2luZm8nLCB0aW1lSW50ZXJ2YWwsIG9uQ2xvc2UsIG1hc2ssIHBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHN1Y2Nlc3MgZGlhbG9nXG4gICAqL1xuICBzdWNjZXNzKGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgb25DbG9zZT86ICgpID0+IHZvaWQsIG1hc2s/OiBib29sZWFuLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdzdWNjZXNzJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5ub3RpY2UoY29uZmlnLCAnc3VjY2VzcycsIHRpbWVJbnRlcnZhbCwgb25DbG9zZSwgbWFzaywgcG9zaXRpb24pO1xuICB9XG5cbiAgc2hvdyhjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG1hc2s/OiBib29sZWFuLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdpbmZvJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5ub3RpY2UoY29uZmlnLCAnaW5mbycsIHRpbWVJbnRlcnZhbCwgKCkgPT4ge30sIG1hc2ssIHBvc2l0aW9uKTtcbiAgfVxuXG4gIGZhaWwoY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBvbkNsb3NlPzogKCkgPT4gdm9pZCwgbWFzaz86IGJvb2xlYW4sIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uVHlwZTogJ2ZhaWwnLFxuICAgICAgY29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm5vdGljZShjb25maWcsICdmYWlsJywgdGltZUludGVydmFsLCBvbkNsb3NlLCBtYXNrLCBwb3NpdGlvbik7XG4gIH1cblxuICBvZmZsaW5lKGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgb25DbG9zZT86ICgpID0+IHZvaWQsIG1hc2s/OiBib29sZWFuLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdvZmZsaW5lJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5ub3RpY2UoY29uZmlnLCAnb2ZmbGluZScsIHRpbWVJbnRlcnZhbCwgb25DbG9zZSwgbWFzaywgcG9zaXRpb24pO1xuICB9XG5cbiAgbG9hZGluZyhjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLCBtYXNrPzogYm9vbGVhbiwgcG9zaXRpb24/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb25UeXBlOiAnbG9hZGluZycsXG4gICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMubm90aWNlKGNvbmZpZywgJ2xvYWRpbmcnLCB0aW1lSW50ZXJ2YWwsIG9uQ2xvc2UsIG1hc2ssIHBvc2l0aW9uKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBSZWYpIHtcbiAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jb21wUmVmLmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21wUmVmID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==