UNPKG

dbweb-common

Version:

用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上

169 lines 23.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, HostBinding } from '@angular/core'; import { ElementService } from '../service/element.service'; import { FillAt } from '../service/bill-param'; import ace from 'ace-builds'; import { ThemeService } from '../../services/theme.service'; var SetPropertyBillComponent = /** @class */ (function () { function SetPropertyBillComponent(elementSvr, theme) { this.elementSvr = elementSvr; this.theme = theme; this.hostClass = true; this.edtOption = { maxLines: 12, printMargin: false }; this.svr = (/** @type {?} */ (this.elementSvr.data.bill)); this.isReadonly = this.svr.parent.bill.isDelete() || this.svr.parent.bill.isBrowse(); this.SkipFill = FillAt.SkipFill; this.FillAtOpen = FillAt.FillAtOpen; this.FillAtSave = FillAt.FillAtSave; this.options = [ { Name: '用户名', Value: '{{.User.Name}}' }, { Name: '部门代码', Value: '{{.User.Dept.Code}}' }, { Name: '部门名称', Value: '{{.User.Dept.Name}}' }, { Name: '当前时间', Value: '{{datetime}}' }, { Name: '当前日期', Value: '{{date}}' }, { Name: '唯一编号', Value: '{{guid64}}' } ]; this.primaryKeyFillOptions = tslib_1.__spread(this.options, [ { Name: '原值', Value: '{{.SRC}}' } ]); } /** * @return {?} */ SetPropertyBillComponent.prototype.ngOnInit = /** * @return {?} */ function () { ace.config.set('basePath', '/front/assets/ace-builds/src-min-noconflict'); }; // 可操作/只读/不可见 // 可操作/只读/不可见 /** * @param {?} e * @return {?} */ SetPropertyBillComponent.prototype.selectShow = // 可操作/只读/不可见 /** * @param {?} e * @return {?} */ function (e) { this.svr.Param.FieldSettings.forEach((/** * @param {?} v * @return {?} */ function (v) { v.Visibility = e; })); }; // 不填充/打开时/保存时 // 不填充/打开时/保存时 /** * @param {?} e * @return {?} */ SetPropertyBillComponent.prototype.selectSave = // 不填充/打开时/保存时 /** * @param {?} e * @return {?} */ function (e) { this.svr.Param.FieldSettings.forEach((/** * @param {?} v * @return {?} */ function (v) { v.FillAt = e; })); }; // 可操作/只读/不可见 // 可操作/只读/不可见 /** * @param {?} e * @return {?} */ SetPropertyBillComponent.prototype.selectCloneShow = // 可操作/只读/不可见 /** * @param {?} e * @return {?} */ function (e) { this.svr.Param.ClonePrimaryKeySettings.forEach((/** * @param {?} v * @return {?} */ function (v) { v.Visibility = e; })); }; SetPropertyBillComponent.decorators = [ { type: Component, args: [{ selector: 'common-set-property-bill', template: "<div class=\"main\">\r\n\t<!-- 1. \u8BBE\u7F6E\u6807\u9898 \u2193\u2193\u2193 -->\r\n\t<header class=\"set-title\">\u8BBE\u7F6E</header>\r\n\t<!-- 1. \u8BBE\u7F6E \u7ED3\u675F \u2191\u2191\u2191 -->\r\n\t<!-- 2. \u64CD\u4F5C\u7C7B\u578B \u2193\u2193\u2193 -->\r\n\t<div class=\"types-title\">\u64CD\u4F5C\u7C7B\u578B</div>\r\n\t<section class=\"set-types\">\r\n\t\t<div class=\"types-left\">\r\n\t\t\t<mat-radio-group [(ngModel)]=\"svr.Param.Operate\" [disabled]=\"isReadonly\">\r\n\t\t\t\t<mat-radio-button value=\"add\">\u65B0\u589E</mat-radio-button>\r\n\t\t\t\t<mat-radio-button value=\"edit\">\u4FEE\u6539</mat-radio-button>\r\n\t\t\t\t<mat-radio-button value=\"delete\">\u5220\u9664</mat-radio-button>\r\n\t\t\t\t<mat-radio-button value=\"browse\">\u67E5\u770B</mat-radio-button>\r\n\t\t\t</mat-radio-group>\r\n\t\t</div>\r\n\t\t<div class=\"types-right\">\r\n\t\t\t<mat-checkbox [(ngModel)]=\"svr.Param.AllowClone\" [disabled]=\"isReadonly\" (change)=\"svr.fixCloneSettings()\">\r\n\t\t\t\t\u5141\u8BB8\u514B\u9686\r\n\t\t\t</mat-checkbox>\r\n\t\t</div>\r\n\t</section>\r\n\t<!-- 2. \u64CD\u4F5C\u7C7B\u578B \u7ED3\u675F \u2191\u2191\u2191 -->\r\n\t<!-- 3. \u514B\u9686\u4E3B\u952E\u8BBE\u7F6E \u2193\u2193\u2193 -->\r\n\t<section class=\"set-content\" *ngIf=\"svr.Param.AllowClone\">\r\n\t\t<div class=\"content-title\">\u514B\u9686\u4E3B\u952E\u8BBE\u7F6E</div>\r\n\t\t<div class=\"table-wrapper\">\r\n\t\t\t<table class=\"set-table\" mat-table [dataSource]=\"svr.Param.ClonePrimaryKeySettings\">\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"no\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u5E8F\u53F7 </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element,index as i\"> {{i}}\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"name\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u540D\u79F0 </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\"> {{element.Name}}\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"visibility\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef>\r\n\t\t\t\t\t\t<mat-form-field class=\"th-common-click\">\r\n\t\t\t\t\t\t\t\u6743\u9650\r\n\t\t\t\t\t\t\t<mat-select class=\"select-position\" [disabled]=\"isReadonly\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"selectCloneShow($event.value)\">\r\n\t\t\t\t\t\t\t\t<mat-option value=\"\">\u53EF\u64CD\u4F5C</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"readonly\">\u53EA\u8BFB</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"hidden\">\u4E0D\u53EF\u89C1</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t<!-- </div> -->\r\n\t\t\t\t\t</th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\">\r\n\t\t\t\t\t\t<div class=\"filed-adjust\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<mat-select [(ngModel)]=\"element.Visibility\" [disabled]=\"isReadonly\">\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"\">\u53EF\u64CD\u4F5C</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"readonly\">\u53EA\u8BFB</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"hidden\">\u4E0D\u53EF\u89C1</mat-option>\r\n\t\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"fill\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u586B\u5145\u503C </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\">\r\n\r\n\t\t\t\t\t\t<div class=\"filed-adjust\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<div class=\"fill-input\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"text\" matInput [disabled]=\"isReadonly\" [(ngModel)]=\"element.Fill\"\r\n\t\t\t\t\t\t\t\t\t\t[matAutocomplete]=\"auto\" placeholder=\"\u70B9\u51FB\u8F93\u5165\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"fill-input-text\">\u5E38\u7528</span>\r\n\t\t\t\t\t\t\t\t\t<mat-icon class=\"arrow\" svgIcon=\"arrow_drop_down\">\r\n\t\t\t\t\t\t\t\t\t</mat-icon>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<mat-autocomplete #auto=\"matAutocomplete\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of primaryKeyFillOptions\" [value]=\"option.Value\">\r\n\t\t\t\t\t\t\t\t{{option.Name}}</mat-option>\r\n\t\t\t\t\t\t</mat-autocomplete>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<tr mat-header-row *matHeaderRowDef=\"['no','name','visibility','fill']\"></tr>\r\n\t\t\t\t<tr mat-row *matRowDef=\"let row;columns:['no','name','visibility','fill']\">\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\r\n\t\t</div>\r\n\t</section>\r\n\t<!-- 3. \u5185\u5BB9\u8BBE\u7F6E \u7ED3\u675F \u2191\u2191\u2191 -->\r\n\t<!-- 4. \u5185\u5BB9\u8BBE\u7F6E \u2193\u2193\u2193 -->\r\n\t<section class=\"set-content\">\r\n\t\t<div class=\"content-title\">\u5185\u5BB9\u8BBE\u7F6E</div>\r\n\t\t<div class=\"table-wrapper\">\r\n\t\t\t<table class=\"set-table\" mat-table [dataSource]=\"svr.Param.FieldSettings\">\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"no\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u5E8F\u53F7 </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element,index as i\"> {{i}}\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"name\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u540D\u79F0 </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\"> {{element.Name}}\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"visibility\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef>\r\n\t\t\t\t\t\t<mat-form-field class=\"th-common-click\">\r\n\t\t\t\t\t\t\t\u6743\u9650\r\n\t\t\t\t\t\t\t<mat-select class=\"select-position\" [disabled]=\"isReadonly\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"selectShow($event.value)\">\r\n\t\t\t\t\t\t\t\t<mat-option value=\"\">\u53EF\u64CD\u4F5C</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"readonly\">\u53EA\u8BFB</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"hidden\">\u4E0D\u53EF\u89C1</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t<!-- </div> -->\r\n\t\t\t\t\t</th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\">\r\n\t\t\t\t\t\t<div class=\"filed-adjust\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<mat-select [(ngModel)]=\"element.Visibility\" [disabled]=\"isReadonly\">\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"\">\u53EF\u64CD\u4F5C</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"readonly\">\u53EA\u8BFB</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"hidden\">\u4E0D\u53EF\u89C1</mat-option>\r\n\t\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\t\t\t\t<ng-container matColumnDef=\"fillat\">\r\n\t\t\t\t\t<th class=\"th-common-click\" mat-header-cell *matHeaderCellDef>\r\n\t\t\t\t\t\t<mat-form-field class=\"th-click\">\r\n\t\t\t\t\t\t\t\u586B\u5145\u65F6\u673A\r\n\t\t\t\t\t\t\t<mat-select class=\"select2-position\" [disabled]=\"isReadonly\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"selectSave($event.value)\">\r\n\t\t\t\t\t\t\t\t<mat-option [value]=\"SkipFill\">\u4E0D\u586B\u5145</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option [value]=\"FillAtOpen\">\u6253\u5F00\u65F6\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option [value]=\"FillAtSave\">\u4FDD\u5B58\u65F6\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\">\r\n\t\t\t\t\t\t<div class=\"filed-adjust\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<mat-select [(ngModel)]=\"element.FillAt\" [disabled]=\"isReadonly\">\r\n\t\t\t\t\t\t\t\t\t<mat-option [value]=\"SkipFill\">\u4E0D\u586B\u5145\r\n\t\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option [value]=\"FillAtOpen\">\u6253\u5F00\u65F6\r\n\t\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option [value]=\"FillAtSave\">\u4FDD\u5B58\u65F6\r\n\t\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"fill\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u586B\u5145\u503C </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\">\r\n\r\n\t\t\t\t\t\t<div class=\"filed-adjust\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<div class=\"fill-input\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"text\" matInput [disabled]=\"isReadonly\" [(ngModel)]=\"element.Fill\"\r\n\t\t\t\t\t\t\t\t\t\t[matAutocomplete]=\"auto\" placeholder=\"\u70B9\u51FB\u8F93\u5165\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"fill-input-text\">\u5E38\u7528</span>\r\n\t\t\t\t\t\t\t\t\t<mat-icon class=\"arrow\" svgIcon=\"arrow_drop_down\">\r\n\t\t\t\t\t\t\t\t\t</mat-icon>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<mat-autocomplete #auto=\"matAutocomplete\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of options\" [value]=\"option.Value\">\r\n\t\t\t\t\t\t\t\t{{option.Name}}</mat-option>\r\n\t\t\t\t\t\t</mat-autocomplete>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<tr mat-header-row *matHeaderRowDef=\"['no','name','visibility','fillat','fill']\">\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr mat-row *matRowDef=\"let row;columns:['no','name','visibility','fillat','fill']\">\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\r\n\t\t</div>\r\n\t</section>\r\n\t<!-- 4. \u5185\u5BB9\u8BBE\u7F6E \u7ED3\u675F \u2191\u2191\u2191 -->\r\n\t<!-- 5. \u9644\u52A0\u53C2\u6570 \u2193\u2193\u2193 -->\r\n\t<section class=\"set-arguments\">\r\n\t\t<div class=\"arg-title\">\u9644\u52A0\u4FE1\u606F</div>\r\n\t\t<div class=\"arg-area\" ace-editor [readOnly]=\"isReadonly\" [(text)]=\"svr.Param.Tag\" mode=\"sql\"\r\n\t\t\t[theme]=\"(theme.theme|async).model==='dark'?'tomorrow_night': 'eclipse'\" [options]=\"edtOption\"\r\n\t\t\t[autoUpdateContent]=\"true\" [durationBeforeCallback]=\"1000\"\r\n\t\t\tstyle=\"min-height: 124px; width:100%; overflow: auto;\">\r\n\r\n\t\t</div>\r\n\t</section>\r\n\t<!-- 5. \u9644\u52A0\u53C2\u6570 \u7ED3\u675F \u2191\u2191\u2191 -->\r\n\r\n</div>", styles: ["@charset \"UTF-8\";.main{width:808px;height:100%;padding:16px 48px;box-sizing:border-box;overflow:auto}.arg-title,.content-title,.set-title,.type-title,.types-title{margin-bottom:16px}.set-arguments,.set-content,.set-types{width:100%}.set-title{font-size:18px}.arg-title,.content-title,.types-title{font-size:12px}.set-table,.set-types{font-size:14px}.set-content,.set-types{margin-bottom:24px}.set-types{display:flex;justify-content:space-between;box-sizing:border-box}.set-table,.table-wrapper{width:100%}.set-table .th-click,.set-table .th-common-click{display:flex;justify-content:space-between;align-items:center;width:100%}.set-table .th-click ::ng-deep .mat-select-value,.set-table .th-common-click ::ng-deep .mat-select-value{width:0!important}.set-table .th-click ::ng-deep .mat-select-arrow-wrapper,.set-table .th-common-click ::ng-deep .mat-select-arrow-wrapper{padding-left:60px;padding-bottom:0}.set-table .th-click ::ng-deep .mat-form-field-wrapper,.set-table .th-common-click ::ng-deep .mat-form-field-wrapper{padding-bottom:0}.set-table .th-click .select-position,.set-table .th-common-click .select-position{margin-left:-30px}.set-table .th-click .th-click ::ng-deep .mat-select-arrow-wrapper,.set-table .th-common-click .th-click ::ng-deep .mat-select-arrow-wrapper{padding-left:68px;padding-bottom:0}.set-table .th-click .select2-position,.set-table .th-common-click .select2-position{margin-left:-54px}.set-table ::ng-deep .mat-form-field-infix{padding:0;margin-top:-10px}.set-table ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-infix{padding:0}.set-table .filed-adjust ::ng-deep .mat-input-placeholder-wrapper{top:-10px}.set-table .filed-adjust .mat-form-field{width:100%}.set-table .filed-adjust .mat-form-field ::ng-deep .mat-form-field-wrapper{margin:0;padding-bottom:0;vertical-align:bottom}.set-table .filed-adjust .mat-form-field ::ng-deep .mat-form-field-infix{border:0;padding-bottom:0;box-sizing:border-box}.set-table .filed-adjust .mat-form-field ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-infix{padding:none}.adjust-position{display:flex;justify-content:space-between}.fill-input{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box}.fill-input .arrow{width:24px;height:24px}.arg-area{width:100%;height:192px;border-radius:4px}"] }] } ]; /** @nocollapse */ SetPropertyBillComponent.ctorParameters = function () { return [ { type: ElementService }, { type: ThemeService } ]; }; SetPropertyBillComponent.propDecorators = { hostClass: [{ type: HostBinding, args: ['class.set-property-bill',] }] }; return SetPropertyBillComponent; }()); export { SetPropertyBillComponent }; if (false) { /** @type {?} */ SetPropertyBillComponent.prototype.hostClass; /** @type {?} */ SetPropertyBillComponent.prototype.edtOption; /** @type {?} */ SetPropertyBillComponent.prototype.svr; /** @type {?} */ SetPropertyBillComponent.prototype.isReadonly; /** @type {?} */ SetPropertyBillComponent.prototype.SkipFill; /** @type {?} */ SetPropertyBillComponent.prototype.FillAtOpen; /** @type {?} */ SetPropertyBillComponent.prototype.FillAtSave; /** @type {?} */ SetPropertyBillComponent.prototype.options; /** @type {?} */ SetPropertyBillComponent.prototype.primaryKeyFillOptions; /** @type {?} */ SetPropertyBillComponent.prototype.elementSvr; /** @type {?} */ SetPropertyBillComponent.prototype.theme; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXByb3BlcnR5LWJpbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGJ3ZWItY29tbW9uLyIsInNvdXJjZXMiOlsibGliL2VsZW1lbnQvc2V0LXByb3BlcnR5LWJpbGwvc2V0LXByb3BlcnR5LWJpbGwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0MsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RDtJQThDQyxrQ0FBbUIsVUFBMEIsRUFBUyxLQUFtQjtRQUF0RCxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWM7UUF4Q2pDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDekQsY0FBUyxHQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDL0MsUUFBRyxHQUFHLG1CQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBbUIsQ0FBQztRQUMxRCxlQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2RSxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUMzQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUMvQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxZQUFPLEdBQUc7WUFDVDtnQkFDQyxJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsZ0JBQWdCO2FBQ3ZCO1lBQ0Q7Z0JBQ0MsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLHFCQUFxQjthQUM1QjtZQUNEO2dCQUNDLElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxxQkFBcUI7YUFDNUI7WUFDRDtnQkFDQyxJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsY0FBYzthQUNyQjtZQUNEO2dCQUNDLElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxVQUFVO2FBQ2pCO1lBQ0Q7Z0JBQ0MsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLFlBQVk7YUFDbkI7U0FDRCxDQUFDO1FBQ0YsMEJBQXFCLG9CQUNqQixJQUFJLENBQUMsT0FBTztZQUNmO2dCQUNDLElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxVQUFVO2FBQ2pCO1dBQ0E7SUFDMEUsQ0FBQzs7OztJQUU3RSwyQ0FBUTs7O0lBQVI7UUFDQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsNkNBQTZDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsYUFBYTs7Ozs7O0lBQ2IsNkNBQVU7Ozs7OztJQUFWLFVBQVcsQ0FBaUI7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLENBQUM7WUFDckMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQyxFQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYzs7Ozs7O0lBQ2QsNkNBQVU7Ozs7OztJQUFWLFVBQVcsQ0FBUztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsQ0FBQztZQUNyQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNkLENBQUMsRUFBQyxDQUFDO0lBQ0osQ0FBQztJQUNELGFBQWE7Ozs7OztJQUNiLGtEQUFlOzs7Ozs7SUFBZixVQUFnQixDQUFpQjtRQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQSxDQUFDO1lBQy9DLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLENBQUMsRUFBQyxDQUFDO0lBQ0osQ0FBQzs7Z0JBdEVELFNBQVMsU0FBQztvQkFDVixRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxzL1RBQWlEOztpQkFFakQ7Ozs7Z0JBVFEsY0FBYztnQkFJZCxZQUFZOzs7NEJBT25CLFdBQVcsU0FBQyx5QkFBeUI7O0lBaUV2QywrQkFBQztDQUFBLEFBdkVELElBdUVDO1NBbEVZLHdCQUF3Qjs7O0lBQ3BDLDZDQUF5RDs7SUFDekQsNkNBQXNEOztJQUN0RCx1Q0FBMEQ7O0lBQzFELDhDQUFnRjs7SUFDaEYsNENBQW9DOztJQUNwQyw4Q0FBd0M7O0lBQ3hDLDhDQUF3Qzs7SUFDeEMsMkNBeUJFOztJQUNGLHlEQU1FOztJQUNVLDhDQUFpQzs7SUFBRSx5Q0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRWxlbWVudFNlcnZpY2UsIEVsZW1lbnREYXRhQmlsbCB9IGZyb20gJy4uL3NlcnZpY2UvZWxlbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsbEF0IH0gZnJvbSAnLi4vc2VydmljZS9iaWxsLXBhcmFtJztcclxuaW1wb3J0IHsgVmlzaWJpbGl0eVR5cGUgfSBmcm9tICdkYndlYi1jb3JlJztcclxuaW1wb3J0IGFjZSBmcm9tICdhY2UtYnVpbGRzJztcclxuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnY29tbW9uLXNldC1wcm9wZXJ0eS1iaWxsJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vc2V0LXByb3BlcnR5LWJpbGwuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3NldC1wcm9wZXJ0eS1iaWxsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNldFByb3BlcnR5QmlsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QEhvc3RCaW5kaW5nKCdjbGFzcy5zZXQtcHJvcGVydHktYmlsbCcpIGhvc3RDbGFzcyA9IHRydWU7XHJcblx0ZWR0T3B0aW9uOiBhbnkgPSB7IG1heExpbmVzOiAxMiwgcHJpbnRNYXJnaW46IGZhbHNlIH07XHJcblx0cHVibGljIHN2ciA9IHRoaXMuZWxlbWVudFN2ci5kYXRhLmJpbGwgYXMgRWxlbWVudERhdGFCaWxsO1xyXG5cdGlzUmVhZG9ubHkgPSB0aGlzLnN2ci5wYXJlbnQuYmlsbC5pc0RlbGV0ZSgpIHx8IHRoaXMuc3ZyLnBhcmVudC5iaWxsLmlzQnJvd3NlKCk7XHJcblx0cmVhZG9ubHkgU2tpcEZpbGwgPSBGaWxsQXQuU2tpcEZpbGw7XHJcblx0cmVhZG9ubHkgRmlsbEF0T3BlbiA9IEZpbGxBdC5GaWxsQXRPcGVuO1xyXG5cdHJlYWRvbmx5IEZpbGxBdFNhdmUgPSBGaWxsQXQuRmlsbEF0U2F2ZTtcclxuXHRvcHRpb25zID0gW1xyXG5cdFx0e1xyXG5cdFx0XHROYW1lOiAn55So5oi35ZCNJyxcclxuXHRcdFx0VmFsdWU6ICd7ey5Vc2VyLk5hbWV9fSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdE5hbWU6ICfpg6jpl6jku6PnoIEnLFxyXG5cdFx0XHRWYWx1ZTogJ3t7LlVzZXIuRGVwdC5Db2RlfX0nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHROYW1lOiAn6YOo6Zeo5ZCN56ewJyxcclxuXHRcdFx0VmFsdWU6ICd7ey5Vc2VyLkRlcHQuTmFtZX19J1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0TmFtZTogJ+W9k+WJjeaXtumXtCcsXHJcblx0XHRcdFZhbHVlOiAne3tkYXRldGltZX19J1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0TmFtZTogJ+W9k+WJjeaXpeacnycsXHJcblx0XHRcdFZhbHVlOiAne3tkYXRlfX0nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHROYW1lOiAn5ZSv5LiA57yW5Y+3JyxcclxuXHRcdFx0VmFsdWU6ICd7e2d1aWQ2NH19J1xyXG5cdFx0fVxyXG5cdF07XHJcblx0cHJpbWFyeUtleUZpbGxPcHRpb25zID0gW1xyXG5cdFx0Li4udGhpcy5vcHRpb25zLFxyXG5cdFx0e1xyXG5cdFx0XHROYW1lOiAn5Y6f5YC8JyxcclxuXHRcdFx0VmFsdWU6ICd7ey5TUkN9fSdcclxuXHRcdH1cclxuXHRdO1xyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50U3ZyOiBFbGVtZW50U2VydmljZSwgcHVibGljIHRoZW1lOiBUaGVtZVNlcnZpY2UpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0YWNlLmNvbmZpZy5zZXQoJ2Jhc2VQYXRoJywgJy9mcm9udC9hc3NldHMvYWNlLWJ1aWxkcy9zcmMtbWluLW5vY29uZmxpY3QnKTtcclxuXHR9XHJcblxyXG5cdC8vIOWPr+aTjeS9nC/lj6ror7sv5LiN5Y+v6KeBXHJcblx0c2VsZWN0U2hvdyhlOiBWaXNpYmlsaXR5VHlwZSkge1xyXG5cdFx0dGhpcy5zdnIuUGFyYW0uRmllbGRTZXR0aW5ncy5mb3JFYWNoKHYgPT4ge1xyXG5cdFx0XHR2LlZpc2liaWxpdHkgPSBlO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyDkuI3loavlhYUv5omT5byA5pe2L+S/neWtmOaXtlxyXG5cdHNlbGVjdFNhdmUoZTogRmlsbEF0KSB7XHJcblx0XHR0aGlzLnN2ci5QYXJhbS5GaWVsZFNldHRpbmdzLmZvckVhY2godiA9PiB7XHJcblx0XHRcdHYuRmlsbEF0ID0gZTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHQvLyDlj6/mk43kvZwv5Y+q6K+7L+S4jeWPr+ingVxyXG5cdHNlbGVjdENsb25lU2hvdyhlOiBWaXNpYmlsaXR5VHlwZSkge1xyXG5cdFx0dGhpcy5zdnIuUGFyYW0uQ2xvbmVQcmltYXJ5S2V5U2V0dGluZ3MuZm9yRWFjaCh2ID0+IHtcclxuXHRcdFx0di5WaXNpYmlsaXR5ID0gZTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=