@lxlib/theme
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1.
340 lines • 21.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: src/services/modal/modal.helper.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { __assign } from "tslib";
import { Injectable } from '@angular/core';
import { deepMerge } from '@lxlib/util';
import { NzModalService } from 'ng-zorro-antd/modal';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "ng-zorro-antd/modal";
/**
* @record
*/
export function ModalHelperOptions() { }
if (false) {
/**
* 大小;例如:lg、600,默认:`lg`
* @type {?|undefined}
*/
ModalHelperOptions.prototype.size;
/**
* 对话框 [ModalOptions](https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/components/modal/modal-types.ts) 参数
* @type {?|undefined}
*/
ModalHelperOptions.prototype.modalOptions;
/**
* 是否精准(默认:`true`),若返回值非空值(`null`或`undefined`)视为成功,否则视为错误
* @type {?|undefined}
*/
ModalHelperOptions.prototype.exact;
/**
* 是否包裹标签页,修复模态包含标签间距问题
* @type {?|undefined}
*/
ModalHelperOptions.prototype.includeTabs;
}
/**
* 对话框辅助类
*/
var ModalHelper = /** @class */ (function () {
function ModalHelper(srv) {
this.srv = srv;
}
/**
* 构建一个对话框
*
* @param comp 组件
* @param params 组件参数
* @param options 额外参数
*
* @example
* this.modalHelper.create(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
*/
/**
* 构建一个对话框
*
* \@example
* this.modalHelper.create(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
* @param {?} comp 组件
* @param {?=} params 组件参数
* @param {?=} options 额外参数
*
* @return {?}
*/
ModalHelper.prototype.create = /**
* 构建一个对话框
*
* \@example
* this.modalHelper.create(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
* @param {?} comp 组件
* @param {?=} params 组件参数
* @param {?=} options 额外参数
*
* @return {?}
*/
function (comp, params, options) {
var _this = this;
options = deepMerge({
size: 'lg',
exact: true,
includeTabs: false,
}, options);
return new Observable((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
var _a = (/** @type {?} */ (options)), size = _a.size, includeTabs = _a.includeTabs, modalOptions = _a.modalOptions;
/** @type {?} */
var cls = '';
/** @type {?} */
var width = '';
if (size) {
if (typeof size === 'number') {
width = size + "px";
}
else {
cls = "modal-" + size;
}
}
if (includeTabs) {
cls += ' modal-include-tabs';
}
if (modalOptions && modalOptions.nzWrapClassName) {
cls += " " + modalOptions.nzWrapClassName;
delete modalOptions.nzWrapClassName;
}
/** @type {?} */
var defaultOptions = {
nzWrapClassName: cls,
nzContent: comp,
nzWidth: width ? width : undefined,
nzFooter: null,
nzComponentParams: params,
};
/** @type {?} */
var subject = _this.srv.create(__assign(__assign({}, defaultOptions), modalOptions));
/** @type {?} */
var afterClose$ = subject.afterClose.subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
if ((/** @type {?} */ (options)).exact === true) {
if (res != null) {
observer.next(res);
}
}
else {
observer.next(res);
}
observer.complete();
afterClose$.unsubscribe();
}));
}));
};
/**
* 构建静态框,点击蒙层不允许关闭
*
* @param comp 组件
* @param params 组件参数
* @param options 额外参数
*
* @example
* this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
*/
/**
* 构建静态框,点击蒙层不允许关闭
*
* \@example
* this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
* @param {?} comp 组件
* @param {?=} params 组件参数
* @param {?=} options 额外参数
*
* @return {?}
*/
ModalHelper.prototype.createStatic = /**
* 构建静态框,点击蒙层不允许关闭
*
* \@example
* this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
* @param {?} comp 组件
* @param {?=} params 组件参数
* @param {?=} options 额外参数
*
* @return {?}
*/
function (comp, params, options) {
/** @type {?} */
var modalOptions = __assign({ nzMaskClosable: false }, (options && options.modalOptions));
return this.create(comp, params, __assign(__assign({}, options), { modalOptions: modalOptions }));
};
/**
* 打开对话框
* @param comp 组件
* @param params 组件参数
* @param size 大小;例如:lg、600,默认:lg
*
* @example
* this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
*/
/**
* 打开对话框
* \@example
* this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
* @param {?} comp 组件
* @param {?=} params 组件参数
* @param {?=} size 大小;例如:lg、600,默认:lg
*
* @param {?=} options
* @return {?}
*/
ModalHelper.prototype.open = /**
* 打开对话框
* \@example
* this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
* @param {?} comp 组件
* @param {?=} params 组件参数
* @param {?=} size 大小;例如:lg、600,默认:lg
*
* @param {?=} options
* @return {?}
*/
function (comp, params, size, options) {
if (size === void 0) { size = 'lg'; }
return this.create(comp, params, {
size: size,
modalOptions: options,
exact: false,
});
};
/**
* 静态框,点击蒙层不允许关闭
* @param comp 组件
* @param params 组件参数
* @param size 大小;例如:lg、600,默认:lg
*
* @example
* this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
*/
/**
* 静态框,点击蒙层不允许关闭
* \@example
* this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
* @param {?} comp 组件
* @param {?=} params 组件参数
* @param {?=} size 大小;例如:lg、600,默认:lg
*
* @param {?=} options
* @return {?}
*/
ModalHelper.prototype.static = /**
* 静态框,点击蒙层不允许关闭
* \@example
* this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
* // 对于组件的成功&关闭的处理说明
* // 成功
* this.NzModalRef.close(data);
* this.NzModalRef.close();
* // 关闭
* this.NzModalRef.destroy();
* @param {?} comp 组件
* @param {?=} params 组件参数
* @param {?=} size 大小;例如:lg、600,默认:lg
*
* @param {?=} options
* @return {?}
*/
function (comp, params, size, options) {
if (size === void 0) { size = 'lg'; }
return this.open(comp, params, size, __assign({ nzMaskClosable: false }, options));
};
ModalHelper.decorators = [
{ type: Injectable, args: [{ providedIn: 'root' },] }
];
/** @nocollapse */
ModalHelper.ctorParameters = function () { return [
{ type: NzModalService }
]; };
/** @nocollapse */ ModalHelper.ɵprov = i0.ɵɵdefineInjectable({ factory: function ModalHelper_Factory() { return new ModalHelper(i0.ɵɵinject(i1.NzModalService)); }, token: ModalHelper, providedIn: "root" });
return ModalHelper;
}());
export { ModalHelper };
if (false) {
/**
* @type {?}
* @private
*/
ModalHelper.prototype.srv;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuaGVscGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGx4bGliL3RoZW1lLyIsInNvdXJjZXMiOlsic3JjL3NlcnZpY2VzL21vZGFsL21vZGFsLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFnQixjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFFNUMsd0NBU0M7Ozs7OztJQVBDLGtDQUErQzs7Ozs7SUFFL0MsMENBQTRCOzs7OztJQUU1QixtQ0FBZ0I7Ozs7O0lBRWhCLHlDQUFzQjs7Ozs7QUFNeEI7SUFFRSxxQkFBb0IsR0FBbUI7UUFBbkIsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7SUFBRyxDQUFDO0lBRTNDOzs7Ozs7Ozs7Ozs7Ozs7T0FlRzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQ0gsNEJBQU07Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQU4sVUFBTyxJQUFTLEVBQUUsTUFBWSxFQUFFLE9BQTRCO1FBQTVELGlCQStDQztRQTlDQyxPQUFPLEdBQUcsU0FBUyxDQUNqQjtZQUNFLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsS0FBSztTQUNuQixFQUNELE9BQU8sQ0FDUixDQUFDO1FBQ0YsT0FBTyxJQUFJLFVBQVU7Ozs7UUFBQyxVQUFDLFFBQXVCO1lBQ3RDLElBQUEsaUNBQW1FLEVBQWpFLGNBQUksRUFBRSw0QkFBVyxFQUFFLDhCQUE4Qzs7Z0JBQ3JFLEdBQUcsR0FBRyxFQUFFOztnQkFDUixLQUFLLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO29CQUM1QixLQUFLLEdBQU0sSUFBSSxPQUFJLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNMLEdBQUcsR0FBRyxXQUFTLElBQU0sQ0FBQztpQkFDdkI7YUFDRjtZQUNELElBQUksV0FBVyxFQUFFO2dCQUNmLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQzthQUM5QjtZQUNELElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxlQUFlLEVBQUU7Z0JBQ2hELEdBQUcsSUFBSSxNQUFJLFlBQVksQ0FBQyxlQUFpQixDQUFDO2dCQUMxQyxPQUFPLFlBQVksQ0FBQyxlQUFlLENBQUM7YUFDckM7O2dCQUNLLGNBQWMsR0FBaUI7Z0JBQ25DLGVBQWUsRUFBRSxHQUFHO2dCQUNwQixTQUFTLEVBQUUsSUFBSTtnQkFDZixPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2xDLFFBQVEsRUFBRSxJQUFJO2dCQUNkLGlCQUFpQixFQUFFLE1BQU07YUFDMUI7O2dCQUNLLE9BQU8sR0FBRyxLQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sdUJBQU0sY0FBYyxHQUFLLFlBQVksRUFBRzs7Z0JBQ2pFLFdBQVcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFDLEdBQVE7Z0JBQ3hELElBQUksbUJBQUEsT0FBTyxFQUFDLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtvQkFDM0IsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO3dCQUNmLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3BCO2lCQUNGO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3BCO2dCQUNELFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLENBQUMsRUFBQztRQUNKLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7T0FlRzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQ0gsa0NBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQVosVUFBYSxJQUFTLEVBQUUsTUFBWSxFQUFFLE9BQTRCOztZQUMxRCxZQUFZLGNBQ2hCLGNBQWMsRUFBRSxLQUFLLElBQ2xCLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FDckM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sd0JBQU8sT0FBTyxLQUFFLFlBQVksY0FBQSxJQUFHLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFDSCwwQkFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBSixVQUFLLElBQVMsRUFBRSxNQUFZLEVBQUUsSUFBb0QsRUFBRSxPQUFzQjtRQUE1RSxxQkFBQSxFQUFBLFdBQW9EO1FBQ2hGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQy9CLElBQUksTUFBQTtZQUNKLFlBQVksRUFBRSxPQUFPO1lBQ3JCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFDSCw0QkFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBTixVQUFPLElBQVMsRUFBRSxNQUFZLEVBQUUsSUFBb0QsRUFBRSxPQUFzQjtRQUE1RSxxQkFBQSxFQUFBLFdBQW9EO1FBQ2xGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksYUFDakMsY0FBYyxFQUFFLEtBQUssSUFDbEIsT0FBTyxFQUNWLENBQUM7SUFDTCxDQUFDOztnQkF4SUYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7OztnQkFqQlgsY0FBYzs7O3NCQUZyQztDQTRKQyxBQXpJRCxJQXlJQztTQXhJWSxXQUFXOzs7Ozs7SUFDViwwQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tICdAbHhsaWIvdXRpbCc7XG5pbXBvcnQgeyBNb2RhbE9wdGlvbnMsIE56TW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9tb2RhbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZlciB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsSGVscGVyT3B0aW9ucyB7XG4gIC8qKiDlpKflsI/vvJvkvovlpoLvvJpsZ+OAgTYwMO+8jOm7mOiupO+8mmBsZ2AgKi9cbiAgc2l6ZT86ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgfCAnJyB8IG51bWJlcjtcbiAgLyoqIOWvueivneahhiBbTW9kYWxPcHRpb25zXShodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9jb21wb25lbnRzL21vZGFsL21vZGFsLXR5cGVzLnRzKSDlj4LmlbAgKi9cbiAgbW9kYWxPcHRpb25zPzogTW9kYWxPcHRpb25zO1xuICAvKiog5piv5ZCm57K+5YeG77yI6buY6K6k77yaYHRydWVg77yJ77yM6Iul6L+U5Zue5YC86Z2e56m65YC877yIYG51bGxg5oiWYHVuZGVmaW5lZGDvvInop4bkuLrmiJDlip/vvIzlkKbliJnop4bkuLrplJnor68gKi9cbiAgZXhhY3Q/OiBib29sZWFuO1xuICAvKiog5piv5ZCm5YyF6KO55qCH562+6aG177yM5L+u5aSN5qih5oCB5YyF5ZCr5qCH562+6Ze06Led6Zeu6aKYICovXG4gIGluY2x1ZGVUYWJzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiDlr7nor53moYbovoXliqnnsbtcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNb2RhbEhlbHBlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3J2OiBOek1vZGFsU2VydmljZSkge31cblxuICAvKipcbiAgICog5p6E5bu65LiA5Liq5a+56K+d5qGGXG4gICAqXG4gICAqIEBwYXJhbSBjb21wIOe7hOS7tlxuICAgKiBAcGFyYW0gcGFyYW1zIOe7hOS7tuWPguaVsFxuICAgKiBAcGFyYW0gb3B0aW9ucyDpop3lpJblj4LmlbBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogdGhpcy5tb2RhbEhlbHBlci5jcmVhdGUoRm9ybUVkaXRDb21wb25lbnQsIHsgaSB9KS5zdWJzY3JpYmUocmVzID0+IHRoaXMubG9hZCgpKTtcbiAgICogLy8g5a+55LqO57uE5Lu255qE5oiQ5YqfJuWFs+mXreeahOWkhOeQhuivtOaYjlxuICAgKiAvLyDmiJDlip9cbiAgICogdGhpcy5Oek1vZGFsUmVmLmNsb3NlKGRhdGEpO1xuICAgKiB0aGlzLk56TW9kYWxSZWYuY2xvc2UoKTtcbiAgICogLy8g5YWz6ZetXG4gICAqIHRoaXMuTnpNb2RhbFJlZi5kZXN0cm95KCk7XG4gICAqL1xuICBjcmVhdGUoY29tcDogYW55LCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBNb2RhbEhlbHBlck9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIG9wdGlvbnMgPSBkZWVwTWVyZ2UoXG4gICAgICB7XG4gICAgICAgIHNpemU6ICdsZycsXG4gICAgICAgIGV4YWN0OiB0cnVlLFxuICAgICAgICBpbmNsdWRlVGFiczogZmFsc2UsXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApO1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPGFueT4pID0+IHtcbiAgICAgIGNvbnN0IHsgc2l6ZSwgaW5jbHVkZVRhYnMsIG1vZGFsT3B0aW9ucyB9ID0gb3B0aW9ucyBhcyBNb2RhbEhlbHBlck9wdGlvbnM7XG4gICAgICBsZXQgY2xzID0gJyc7XG4gICAgICBsZXQgd2lkdGggPSAnJztcbiAgICAgIGlmIChzaXplKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICB3aWR0aCA9IGAke3NpemV9cHhgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNscyA9IGBtb2RhbC0ke3NpemV9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGluY2x1ZGVUYWJzKSB7XG4gICAgICAgIGNscyArPSAnIG1vZGFsLWluY2x1ZGUtdGFicyc7XG4gICAgICB9XG4gICAgICBpZiAobW9kYWxPcHRpb25zICYmIG1vZGFsT3B0aW9ucy5ueldyYXBDbGFzc05hbWUpIHtcbiAgICAgICAgY2xzICs9IGAgJHttb2RhbE9wdGlvbnMubnpXcmFwQ2xhc3NOYW1lfWA7XG4gICAgICAgIGRlbGV0ZSBtb2RhbE9wdGlvbnMubnpXcmFwQ2xhc3NOYW1lO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVmYXVsdE9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IHtcbiAgICAgICAgbnpXcmFwQ2xhc3NOYW1lOiBjbHMsXG4gICAgICAgIG56Q29udGVudDogY29tcCxcbiAgICAgICAgbnpXaWR0aDogd2lkdGggPyB3aWR0aCA6IHVuZGVmaW5lZCxcbiAgICAgICAgbnpGb290ZXI6IG51bGwsXG4gICAgICAgIG56Q29tcG9uZW50UGFyYW1zOiBwYXJhbXMsXG4gICAgICB9O1xuICAgICAgY29uc3Qgc3ViamVjdCA9IHRoaXMuc3J2LmNyZWF0ZSh7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5tb2RhbE9wdGlvbnMgfSk7XG4gICAgICBjb25zdCBhZnRlckNsb3NlJCA9IHN1YmplY3QuYWZ0ZXJDbG9zZS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zIS5leGFjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgYWZ0ZXJDbG9zZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOaehOW7uumdmeaAgeahhu+8jOeCueWHu+iSmeWxguS4jeWFgeiuuOWFs+mXrVxuICAgKlxuICAgKiBAcGFyYW0gY29tcCDnu4Tku7ZcbiAgICogQHBhcmFtIHBhcmFtcyDnu4Tku7blj4LmlbBcbiAgICogQHBhcmFtIG9wdGlvbnMg6aKd5aSW5Y+C5pWwXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHRoaXMubW9kYWxIZWxwZXIub3BlbihGb3JtRWRpdENvbXBvbmVudCwgeyBpIH0pLnN1YnNjcmliZShyZXMgPT4gdGhpcy5sb2FkKCkpO1xuICAgKiAvLyDlr7nkuo7nu4Tku7bnmoTmiJDlip8m5YWz6Zet55qE5aSE55CG6K+05piOXG4gICAqIC8vIOaIkOWKn1xuICAgKiB0aGlzLk56TW9kYWxSZWYuY2xvc2UoZGF0YSk7XG4gICAqIHRoaXMuTnpNb2RhbFJlZi5jbG9zZSgpO1xuICAgKiAvLyDlhbPpl61cbiAgICogdGhpcy5Oek1vZGFsUmVmLmRlc3Ryb3koKTtcbiAgICovXG4gIGNyZWF0ZVN0YXRpYyhjb21wOiBhbnksIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IE1vZGFsSGVscGVyT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgbW9kYWxPcHRpb25zID0ge1xuICAgICAgbnpNYXNrQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgLi4uKG9wdGlvbnMgJiYgb3B0aW9ucy5tb2RhbE9wdGlvbnMpLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKGNvbXAsIHBhcmFtcywgeyAuLi5vcHRpb25zLCBtb2RhbE9wdGlvbnMgfSk7XG4gIH1cblxuICAvKipcbiAgICog5omT5byA5a+56K+d5qGGXG4gICAqIEBwYXJhbSBjb21wIOe7hOS7tlxuICAgKiBAcGFyYW0gcGFyYW1zIOe7hOS7tuWPguaVsFxuICAgKiBAcGFyYW0gc2l6ZSDlpKflsI/vvJvkvovlpoLvvJpsZ+OAgTYwMO+8jOm7mOiupO+8mmxnXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHRoaXMubW9kYWxIZWxwZXIub3BlbihGb3JtRWRpdENvbXBvbmVudCwgeyBpIH0pLnN1YnNjcmliZShyZXMgPT4gdGhpcy5sb2FkKCkpO1xuICAgKiAvLyDlr7nkuo7nu4Tku7bnmoTmiJDlip8m5YWz6Zet55qE5aSE55CG6K+05piOXG4gICAqIC8vIOaIkOWKn1xuICAgKiB0aGlzLk56TW9kYWxSZWYuY2xvc2UoZGF0YSk7XG4gICAqIHRoaXMuTnpNb2RhbFJlZi5jbG9zZSgpO1xuICAgKiAvLyDlhbPpl61cbiAgICogdGhpcy5Oek1vZGFsUmVmLmRlc3Ryb3koKTtcbiAgICovXG4gIG9wZW4oY29tcDogYW55LCBwYXJhbXM/OiBhbnksIHNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgfCAnJyB8IG51bWJlciA9ICdsZycsIG9wdGlvbnM/OiBNb2RhbE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShjb21wLCBwYXJhbXMsIHtcbiAgICAgIHNpemUsXG4gICAgICBtb2RhbE9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICBleGFjdDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICog6Z2Z5oCB5qGG77yM54K55Ye76JKZ5bGC5LiN5YWB6K645YWz6ZetXG4gICAqIEBwYXJhbSBjb21wIOe7hOS7tlxuICAgKiBAcGFyYW0gcGFyYW1zIOe7hOS7tuWPguaVsFxuICAgKiBAcGFyYW0gc2l6ZSDlpKflsI/vvJvkvovlpoLvvJpsZ+OAgTYwMO+8jOm7mOiupO+8mmxnXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHRoaXMubW9kYWxIZWxwZXIub3BlbihGb3JtRWRpdENvbXBvbmVudCwgeyBpIH0pLnN1YnNjcmliZShyZXMgPT4gdGhpcy5sb2FkKCkpO1xuICAgKiAvLyDlr7nkuo7nu4Tku7bnmoTmiJDlip8m5YWz6Zet55qE5aSE55CG6K+05piOXG4gICAqIC8vIOaIkOWKn1xuICAgKiB0aGlzLk56TW9kYWxSZWYuY2xvc2UoZGF0YSk7XG4gICAqIHRoaXMuTnpNb2RhbFJlZi5jbG9zZSgpO1xuICAgKiAvLyDlhbPpl61cbiAgICogdGhpcy5Oek1vZGFsUmVmLmRlc3Ryb3koKTtcbiAgICovXG4gIHN0YXRpYyhjb21wOiBhbnksIHBhcmFtcz86IGFueSwgc2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyB8ICcnIHwgbnVtYmVyID0gJ2xnJywgb3B0aW9ucz86IE1vZGFsT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMub3Blbihjb21wLCBwYXJhbXMsIHNpemUsIHtcbiAgICAgIG56TWFza0Nsb3NhYmxlOiBmYWxzZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==