bbj-screen-widget 2.4.44 → 2.4.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bbj-screen-widget.metadata.json +1 -1
- package/bundles/bbj-screen-widget.umd.js +78 -24
- package/bundles/bbj-screen-widget.umd.js.map +1 -1
- package/bundles/bbj-screen-widget.umd.min.js +1 -1
- package/bundles/bbj-screen-widget.umd.min.js.map +1 -1
- package/esm2015/lib/tree-control/tree-control.component.js +80 -26
- package/fesm2015/bbj-screen-widget.js +77 -24
- package/fesm2015/bbj-screen-widget.js.map +1 -1
- package/lib/tree-control/tree-control.component.d.ts +6 -3
- package/package.json +1 -1
- package/src/assets/js/BMapGL/mapvgl.min.js +914 -898
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __decorate, __metadata, __param } from "tslib";
|
|
2
2
|
import { Component, EventEmitter, ElementRef, ViewChild } from '@angular/core';
|
|
3
|
-
import { Data, Property, Widget, DataOutput, Event, EventParam, Method, Param } from 'bbj-widget-base';
|
|
3
|
+
import { Data, Property, Widget, DataOutput, Event, EventParam, Method, Param, DataInput } from 'bbj-widget-base';
|
|
4
|
+
import { NzTreeComponent } from 'ng-zorro-antd/tree';
|
|
4
5
|
import { ArrayService } from '@delon/util';
|
|
5
6
|
import { getFontStyle } from '../shared/util/style.util';
|
|
6
7
|
let TreeControlComponent = class TreeControlComponent {
|
|
@@ -22,6 +23,7 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
22
23
|
left: 0,
|
|
23
24
|
};
|
|
24
25
|
this.checkable = false;
|
|
26
|
+
this.outputType = 'array';
|
|
25
27
|
this.checkStrictly = false;
|
|
26
28
|
this.showLine = false;
|
|
27
29
|
this.expandAll = false;
|
|
@@ -51,6 +53,7 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
51
53
|
this.keyChange = new EventEmitter();
|
|
52
54
|
this.nodes = [];
|
|
53
55
|
this.selectedKeys = [];
|
|
56
|
+
// checkedKeys: string[] = [];
|
|
54
57
|
this.style = {};
|
|
55
58
|
}
|
|
56
59
|
ngOnInit() {
|
|
@@ -77,7 +80,14 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
77
80
|
if (data) {
|
|
78
81
|
data.forEach(({ title, key, parentKey, parentKey_value, icon, count }) => {
|
|
79
82
|
if (key) {
|
|
80
|
-
const node = {
|
|
83
|
+
const node = {
|
|
84
|
+
key,
|
|
85
|
+
title,
|
|
86
|
+
parentKey: parentKey_value || parentKey,
|
|
87
|
+
icon,
|
|
88
|
+
isLeaf: true,
|
|
89
|
+
count,
|
|
90
|
+
};
|
|
81
91
|
if (this.selectedKeys.includes(key)) {
|
|
82
92
|
node.selected = true;
|
|
83
93
|
}
|
|
@@ -133,7 +143,12 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
133
143
|
this.waittingSelect = null;
|
|
134
144
|
this.selectedKeys = keys;
|
|
135
145
|
if (this.checkable) {
|
|
136
|
-
this.
|
|
146
|
+
if (this.outputType === 'string') {
|
|
147
|
+
this.keyChange.emit(keys === null || keys === void 0 ? void 0 : keys.join(';'));
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.keyChange.emit(keys);
|
|
151
|
+
}
|
|
137
152
|
}
|
|
138
153
|
else {
|
|
139
154
|
this.keyChange.emit(keys[0]);
|
|
@@ -164,17 +179,37 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
164
179
|
}
|
|
165
180
|
select(id) {
|
|
166
181
|
let find = false;
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
182
|
+
const keys = [];
|
|
183
|
+
if (id) {
|
|
184
|
+
if (this.checkable) {
|
|
185
|
+
if (typeof id === 'string') {
|
|
186
|
+
id = id.split(';');
|
|
187
|
+
}
|
|
188
|
+
keys.push(...id);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
keys.push(id);
|
|
173
192
|
}
|
|
174
193
|
}
|
|
175
|
-
|
|
176
|
-
if (
|
|
177
|
-
this.
|
|
194
|
+
this.selectedKeys = keys;
|
|
195
|
+
if (keys.length) {
|
|
196
|
+
if (this.nodes) {
|
|
197
|
+
const nodes = [];
|
|
198
|
+
this.arrayService.visitTree(this.nodes, (n) => {
|
|
199
|
+
if (keys.includes(n.key)) {
|
|
200
|
+
nodes.push(n);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
if (nodes.length) {
|
|
204
|
+
this.onKeysChange(keys);
|
|
205
|
+
nodes.forEach((node) => this.nodeClick(node.key, node.title));
|
|
206
|
+
find = true;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// 数据有可能还没加载,等数据加载了再选中
|
|
210
|
+
if (!find) {
|
|
211
|
+
this.waittingSelect = id;
|
|
212
|
+
}
|
|
178
213
|
}
|
|
179
214
|
}
|
|
180
215
|
nodeClick(id, title) { }
|
|
@@ -183,7 +218,7 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
183
218
|
TreeControlComponent.decorators = [
|
|
184
219
|
{ type: Component, args: [{
|
|
185
220
|
selector: 'sc-tree-control',
|
|
186
|
-
template: "<div *ngIf=\"showSearch\" class=\"searchBox\">\n <input\n class=\"search-input\"\n type=\"text\"\n nz-input\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"searchPlaceholder\"\n [style]=\"{ 'border-color': searchBorderColor, background: searchBackgroundColor }\"\n />\n <i nz-icon nzType=\"search\"></i>\n</div>\n\n<div class=\"warp-tree\">\n <nz-tree\n [ngClass]=\"{ 'ant-tree-nodeBgCustom': nodeBackground }\"\n [ngStyle]=\"style\"\n [nzData]=\"nodes\"\n [nzCheckable]=\"checkable\"\n [nzExpandAll]=\"expandAll\"\n [nzShowLine]=\"showLine\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzCheckStrictly]=\"checkStrictly\"\n [nzExpandedIcon]=\"nodeDefaultIcon ? multiExpandedIconTpl : null\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n (nzClick)=\"onClick($event)\"\n (nzDblClick)=\"onNodeDblclick($event)\"\n (nzCheckBoxChange)=\"onCheckBoxChange($event)\"\n >\n </nz-tree>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <img [src]=\"nodeDefaultIcon\" [class]=\"node.isExpanded ? 'nodeImg-open' : ''\" />\n </ng-template>\n\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div\n class=\"custom-node\"\n [style.color]=\"node.isSelected ? nodeCheckedColor : ''\"\n [style.backgroundImage]=\"\n node.isSelected ? 'url(' + nodeCheckedBackground + ')' : nodeBackground ? 'url(' + nodeBackground + ')' : ''\n \"\n [style.padding]=\"\n (grid?.top || 0) + 'px ' + (grid?.right || 0) + 'px ' + (grid?.bottom || 0) + 'px ' + (grid?.left || 0) + 'px'\n \"\n >\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n (click)=\"showNode(node)\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n\n <span class=\"node-count\" [class.noCount]=\"origin.count === '0'\" *ngIf=\"origin.count || origin.count === '0'\"\n >({{ origin.count }})</span\n >\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n\n <!-- \n\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n /> -->\n </div>\n </ng-template>\n</div>\n",
|
|
221
|
+
template: "<div *ngIf=\"showSearch\" class=\"searchBox\">\n <input\n class=\"search-input\"\n type=\"text\"\n nz-input\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"searchPlaceholder\"\n [style]=\"{ 'border-color': searchBorderColor, background: searchBackgroundColor }\"\n />\n <i nz-icon nzType=\"search\"></i>\n</div>\n\n<div class=\"warp-tree\">\n <nz-tree\n #tree\n [ngClass]=\"{ 'ant-tree-nodeBgCustom': nodeBackground }\"\n [ngStyle]=\"style\"\n [nzData]=\"nodes\"\n [nzCheckable]=\"checkable\"\n [nzMultiple]=\"checkable\"\n [nzExpandAll]=\"expandAll\"\n [nzShowLine]=\"showLine\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzCheckStrictly]=\"checkStrictly\"\n [nzExpandedIcon]=\"nodeDefaultIcon ? multiExpandedIconTpl : null\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n [nzCheckedKeys]=\"selectedKeys\"\n (nzClick)=\"onClick($event)\"\n (nzDblClick)=\"onNodeDblclick($event)\"\n (nzCheckBoxChange)=\"onCheckBoxChange($event)\"\n >\n </nz-tree>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <img [src]=\"nodeDefaultIcon\" [class]=\"node.isExpanded ? 'nodeImg-open' : ''\" />\n </ng-template>\n\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div\n class=\"custom-node\"\n [style.color]=\"node.isSelected ? nodeCheckedColor : ''\"\n [style.backgroundImage]=\"\n node.isSelected ? 'url(' + nodeCheckedBackground + ')' : nodeBackground ? 'url(' + nodeBackground + ')' : ''\n \"\n [style.padding]=\"\n (grid?.top || 0) + 'px ' + (grid?.right || 0) + 'px ' + (grid?.bottom || 0) + 'px ' + (grid?.left || 0) + 'px'\n \"\n >\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n (click)=\"showNode(node)\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n\n <span class=\"node-count\" [class.noCount]=\"origin.count === '0'\" *ngIf=\"origin.count || origin.count === '0'\"\n >({{ origin.count }})</span\n >\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n\n <!-- \n\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n /> -->\n </div>\n </ng-template>\n</div>\n",
|
|
187
222
|
styles: [":host{display:block;height:100%;width:100%;overflow:hidden;display:flex;flex-direction:column}.ant-tree,.ant-tree ::ng-deep .ant-tree-checkbox-inner,.ant-tree ::ng-deep .ant-tree-switcher{background:initial}.ant-tree ::ng-deep .ant-tree-switcher-icon{font-size:inherit}.ant-tree ::ng-deep .ant-tree-checkbox{color:inherit}.ant-tree ::ng-deep .ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{border-color:#1890ff}.ant-tree ::ng-deep .ant-tree-switcher-noop>i{display:none}.ant-tree ::ng-deep .ant-tree-node-content-wrapper.ant-tree-node-selected,.ant-tree ::ng-deep .ant-tree-node-content-wrapper:hover{background-color:var(--selected-background)}::ng-deep .ant-tree.ant-tree-nodeBgCustom .ant-tree-node-content-wrapper{flex:1}::ng-deep .ant-tree.ant-tree-nodeBgCustom nz-tree-node-switcher{width:16px}.custom-node{display:flex;align-items:center;white-space:nowrap;background-repeat:no-repeat;background-size:180px 8px;background-position:0 bottom}.searchBox{position:relative;margin-bottom:20px}.searchBox .search-input{line-height:32px;height:32px;color:#7a8799;outline:none;box-shadow:none}.searchBox i.anticon{width:16px;height:16px;color:#8f9ab3;position:absolute;top:10px;right:10px}.warp-tree{flex:1;overflow:auto}.warp-tree::-webkit-scrollbar-thumb{background-color:var(--treeScrollbar-thumb-background,\"#ddd\")!important}.warp-tree::-webkit-scrollbar-corner{background-color:transparent}.folder-name{flex:1}.node-count{color:hsla(0,0%,100%,.8)}.node-count.noCount{color:#7a8799}"]
|
|
188
223
|
},] }
|
|
189
224
|
];
|
|
@@ -192,6 +227,7 @@ TreeControlComponent.ctorParameters = () => [
|
|
|
192
227
|
{ type: ElementRef }
|
|
193
228
|
];
|
|
194
229
|
TreeControlComponent.propDecorators = {
|
|
230
|
+
tree: [{ type: ViewChild, args: ['tree',] }],
|
|
195
231
|
renameInput: [{ type: ViewChild, args: ['renameInput',] }]
|
|
196
232
|
};
|
|
197
233
|
__decorate([
|
|
@@ -206,6 +242,20 @@ __decorate([
|
|
|
206
242
|
Property('复选框', { type: 'boolean' }),
|
|
207
243
|
__metadata("design:type", Object)
|
|
208
244
|
], TreeControlComponent.prototype, "checkable", void 0);
|
|
245
|
+
__decorate([
|
|
246
|
+
Property('输出格式', {
|
|
247
|
+
type: 'string',
|
|
248
|
+
enum: [
|
|
249
|
+
{ label: '数组', value: 'array' },
|
|
250
|
+
{ label: '字符串', value: 'string' },
|
|
251
|
+
],
|
|
252
|
+
ui: {
|
|
253
|
+
widget: 'select',
|
|
254
|
+
visibleIf: { checkable: [true] },
|
|
255
|
+
},
|
|
256
|
+
}),
|
|
257
|
+
__metadata("design:type", Object)
|
|
258
|
+
], TreeControlComponent.prototype, "outputType", void 0);
|
|
209
259
|
__decorate([
|
|
210
260
|
Property('选择完全受控', {
|
|
211
261
|
type: 'boolean',
|
|
@@ -251,7 +301,7 @@ __decorate([
|
|
|
251
301
|
type: 'string',
|
|
252
302
|
ui: {
|
|
253
303
|
widget: 'myUpload',
|
|
254
|
-
}
|
|
304
|
+
},
|
|
255
305
|
}),
|
|
256
306
|
__metadata("design:type", Object)
|
|
257
307
|
], TreeControlComponent.prototype, "nodeDefaultIcon", void 0);
|
|
@@ -260,7 +310,7 @@ __decorate([
|
|
|
260
310
|
type: 'string',
|
|
261
311
|
ui: {
|
|
262
312
|
widget: 'myUpload',
|
|
263
|
-
}
|
|
313
|
+
},
|
|
264
314
|
}),
|
|
265
315
|
__metadata("design:type", Object)
|
|
266
316
|
], TreeControlComponent.prototype, "nodeBackground", void 0);
|
|
@@ -277,7 +327,7 @@ __decorate([
|
|
|
277
327
|
type: 'string',
|
|
278
328
|
ui: {
|
|
279
329
|
widget: 'myUpload',
|
|
280
|
-
}
|
|
330
|
+
},
|
|
281
331
|
}),
|
|
282
332
|
__metadata("design:type", Object)
|
|
283
333
|
], TreeControlComponent.prototype, "nodeCheckedBackground", void 0);
|
|
@@ -293,8 +343,8 @@ __decorate([
|
|
|
293
343
|
Property('搜索框颜色', {
|
|
294
344
|
ui: {
|
|
295
345
|
widget: 'myColor',
|
|
296
|
-
visibleIf: { showSearch: [true] }
|
|
297
|
-
}
|
|
346
|
+
visibleIf: { showSearch: [true] },
|
|
347
|
+
},
|
|
298
348
|
}),
|
|
299
349
|
__metadata("design:type", Object)
|
|
300
350
|
], TreeControlComponent.prototype, "searchBorderColor", void 0);
|
|
@@ -302,8 +352,8 @@ __decorate([
|
|
|
302
352
|
Property('搜索框背景色', {
|
|
303
353
|
ui: {
|
|
304
354
|
widget: 'myColor',
|
|
305
|
-
visibleIf: { showSearch: [true] }
|
|
306
|
-
}
|
|
355
|
+
visibleIf: { showSearch: [true] },
|
|
356
|
+
},
|
|
307
357
|
}),
|
|
308
358
|
__metadata("design:type", Object)
|
|
309
359
|
], TreeControlComponent.prototype, "searchBackgroundColor", void 0);
|
|
@@ -311,8 +361,8 @@ __decorate([
|
|
|
311
361
|
Property('搜索框提示语', {
|
|
312
362
|
type: 'string',
|
|
313
363
|
ui: {
|
|
314
|
-
visibleIf: { showSearch: [true] }
|
|
315
|
-
}
|
|
364
|
+
visibleIf: { showSearch: [true] },
|
|
365
|
+
},
|
|
316
366
|
}),
|
|
317
367
|
__metadata("design:type", Object)
|
|
318
368
|
], TreeControlComponent.prototype, "searchPlaceholder", void 0);
|
|
@@ -320,7 +370,7 @@ __decorate([
|
|
|
320
370
|
Property('滚动条颜色', {
|
|
321
371
|
ui: {
|
|
322
372
|
widget: 'myColor',
|
|
323
|
-
}
|
|
373
|
+
},
|
|
324
374
|
}),
|
|
325
375
|
__metadata("design:type", Object)
|
|
326
376
|
], TreeControlComponent.prototype, "treeScrollbarThumbBackground", void 0);
|
|
@@ -331,11 +381,15 @@ __decorate([
|
|
|
331
381
|
key: { type: 'string', title: 'id' },
|
|
332
382
|
parentKey: { type: 'string', title: '父级id' },
|
|
333
383
|
icon: { type: 'string', title: '图标' },
|
|
334
|
-
count: { type: 'string', title: '数量' }
|
|
384
|
+
count: { type: 'string', title: '数量' },
|
|
335
385
|
},
|
|
336
386
|
}),
|
|
337
387
|
__metadata("design:type", Object)
|
|
338
388
|
], TreeControlComponent.prototype, "data", void 0);
|
|
389
|
+
__decorate([
|
|
390
|
+
DataInput('选中值'),
|
|
391
|
+
__metadata("design:type", Object)
|
|
392
|
+
], TreeControlComponent.prototype, "value", void 0);
|
|
339
393
|
__decorate([
|
|
340
394
|
DataOutput('选中id'),
|
|
341
395
|
Event('选中值改变', { params: 'id' }),
|
|
@@ -352,7 +406,7 @@ __decorate([
|
|
|
352
406
|
Method('选中'),
|
|
353
407
|
__param(0, Param('id')),
|
|
354
408
|
__metadata("design:type", Function),
|
|
355
|
-
__metadata("design:paramtypes", [
|
|
409
|
+
__metadata("design:paramtypes", [Object]),
|
|
356
410
|
__metadata("design:returntype", void 0)
|
|
357
411
|
], TreeControlComponent.prototype, "select", null);
|
|
358
412
|
__decorate([
|
|
@@ -378,4 +432,4 @@ TreeControlComponent = __decorate([
|
|
|
378
432
|
__metadata("design:paramtypes", [ArrayService, ElementRef])
|
|
379
433
|
], TreeControlComponent);
|
|
380
434
|
export { TreeControlComponent };
|
|
381
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjcmVlbi13aWRnZXQvc3JjL2xpYi90cmVlLWNvbnRyb2wvdHJlZS1jb250cm9sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0MsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztJQVk1QyxvQkFBb0IsU0FBcEIsb0JBQW9CO0lBMEovQixZQUFvQixZQUEwQixFQUFVLFVBQXNCO1FBQTFELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXhKOUUsU0FBSSxHQUFRO1lBQ1YsTUFBTSxFQUFFLEVBQUU7WUFDVixLQUFLLEVBQUUsU0FBUztZQUNoQixNQUFNLEVBQUUsUUFBUTtZQUNoQixJQUFJLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxDQUFDO1lBQ1IsVUFBVSxFQUFFLENBQUM7U0FDZCxDQUFDO1FBRUYsU0FBSSxHQUFRO1lBQ1YsR0FBRyxFQUFFLENBQUM7WUFDTixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDO1FBRUYsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUtsQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpC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QUksRUFBRSxVQUFVO0tBQ2pCLENBQUM7cUNBMkprQyxZQUFZLEVBQXNCLFVBQVU7R0ExSm5FLG9CQUFvQixDQTZTaEM7U0E3U1ksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGEsIFByb3BlcnR5LCBXaWRnZXQsIERhdGFPdXRwdXQsIEV2ZW50LCBFdmVudFBhcmFtLCBNZXRob2QsIFBhcmFtIH0gZnJvbSAnYmJqLXdpZGdldC1iYXNlJztcbmltcG9ydCB7IE56Rm9ybWF0RW1pdEV2ZW50LCBOelRyZWVOb2RlLCBOelRyZWVOb2RlT3B0aW9ucyB9IGZyb20gJ25nLXpvcnJvLWFudGQvdHJlZSc7XG5pbXBvcnQgeyBBcnJheVNlcnZpY2UgfSBmcm9tICdAZGVsb24vdXRpbCc7XG5pbXBvcnQgeyBnZXRGb250U3R5bGUgfSBmcm9tICcuLi9zaGFyZWQvdXRpbC9zdHlsZS51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtdHJlZS1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUtY29udHJvbC5jb21wb25lbnQubGVzcyddLFxufSlcbkBXaWRnZXQoJ+agkeaOp+S7ticsIHtcbiAgZ3JvdXA6ICdjb21wb25lbnQnLFxuICBpbWFnZTogJ2Fzc2V0cy9pbWcvc2NyZWVuL1RyZWUucG5nJyxcbiAgaWNvbjogJ2JpYW56dTQwJyxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbnRyb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBQcm9wZXJ0eSgn5a2X5L2TJywgeyB1aTogeyB3aWRnZXQ6ICdteUZvbnQnIH0gfSlcbiAgZm9udDogYW55ID0ge1xuICAgIGZhbWlseTogJycsXG4gICAgY29sb3I6ICcjNTk1RjdBJyxcbiAgICB3ZWlnaHQ6ICdub3JtYWwnLFxuICAgIHNpemU6IDE2LFxuICAgIHNwYWNlOiAwLFxuICAgIGxpbmVIZWlnaHQ6IDAsXG4gIH07XG4gIEBQcm9wZXJ0eSgn6L656LedJywgeyB1aTogeyB3aWRnZXQ6ICdteUdyaWQnIH0gfSlcbiAgZ3JpZDogYW55ID0ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgfTtcbiAgQFByb3BlcnR5KCflpI3pgInmoYYnLCB7IHR5cGU6ICdib29sZWFuJyB9KVxuICBjaGVja2FibGUgPSBmYWxzZTtcbiAgQFByb3BlcnR5KCfpgInmi6nlrozlhajlj5fmjqcnLCB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIHVpOiB7IG9wdGlvbmFsSGVscDogJ+eItuWtkOiKgueCuemAieS4reeKtuaAgeS4jeWGjeWFs+iBlCcsIHZpc2libGVJZjogeyBjaGVja2FibGU6IFt0cnVlXSB9IH0sXG4gIH0pXG4gIGNoZWNrU3RyaWN0bHkgPSBmYWxzZTtcbiAgQFByb3BlcnR5KCfov57mjqXnur8nLCB7IHR5cGU6ICdib29sZWFuJyB9KVxuICBzaG93TGluZSA9IGZhbHNlO1xuICBAUHJvcGVydHkoJ+WxleW8gOaJgOaciScsIHsgdHlwZTogJ2Jvb2xlYW4nIH0pXG4gIGV4cGFuZEFsbCA9IGZhbHNlO1xuICBAUHJvcGVydHkoJ+WxleW8gOWxgue6pycsIHtcbiAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgbWluaW11bTogMCxcbiAgICB1aTogeyBwcmVjaXNpb246IDAsIHZpc2libGVJZjogeyBleHBhbmRBbGw6IFtmYWxzZV0gfSB9LFxuICB9KVxuICBleHBhbmRMZXZlbCA9IDA7XG5cbiAgQFByb3BlcnR5KCflm77moIflrr3luqYnLCB7IHR5cGU6ICdpbnRlZ2VyJyB9KVxuICBpY29uV2lkdGggPSAyMDtcbiAgQFByb3BlcnR5KCflm77moIfpq5jluqYnLCB7IHR5cGU6ICdpbnRlZ2VyJyB9KVxuICBpY29uSGVpZ2h0ID0gMjA7XG4gIEBQcm9wZXJ0eSgn5Zu+5qCH5L2N572uJywge1xuICAgIGVudW06IFtcbiAgICAgIHsgbGFiZWw6ICflt6YnLCB2YWx1ZTogJ2xlZnQnIH0sXG4gICAgICB7IGxhYmVsOiAn5Y+zJywgdmFsdWU6ICdyaWdodCcgfSxcbiAgICBdLFxuICB9KVxuICBpY29uUG9zaXRpb24gPSAnbGVmdCc7XG5cblxuXG4gIEBQcm9wZXJ0eSgn6IqC54K55Zu+5qCHJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteVVwbG9hZCcsXG4gICAgfVxuICB9KVxuICBub2RlRGVmYXVsdEljb24gPSBudWxsO1xuICBAUHJvcGVydHkoJ+iKgueCueiDjOaZrycsIHtcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlVcGxvYWQnLFxuICAgIH1cbiAgfSlcbiAgbm9kZUJhY2tncm91bmQgPSBudWxsO1xuXG4gIEBQcm9wZXJ0eSgn6IqC54K56YCJ5Lit6IOM5pmv6ImyJywgeyB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9IH0pXG4gIHNlbGVjdGVkQmFja2dyb3VuZCA9ICcjYmFlN2ZmJztcblxuICBAUHJvcGVydHkoJ+iKgueCuemAieS4reWtl+S9k+iJsicsIHsgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSB9KVxuICBub2RlQ2hlY2tlZENvbG9yID0gJyMzMzMnO1xuXG4gIEBQcm9wZXJ0eSgn6IqC54K56YCJ5Lit6IOM5pmvJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteVVwbG9hZCcsXG4gICAgfVxuICB9KVxuICBub2RlQ2hlY2tlZEJhY2tncm91bmQgPSBudWxsO1xuXG4gIEBQcm9wZXJ0eSgn5Y+M5Ye76YeN5ZG95ZCNJylcbiAgcmVuYW1hYmxlOiBib29sZWFuO1xuICBAUHJvcGVydHkoJ+aYvuekuuaQnOe0ouahhicpXG4gIHNob3dTZWFyY2g6IGJvb2xlYW47XG4gIHNlYXJjaFZhbHVlOiBzdHJpbmc7XG5cbiAgQFByb3BlcnR5KCfmkJzntKLmoYbpopzoibInLCB7XG4gICAgdWk6IHtcbiAgICAgIHdpZGdldDogJ215Q29sb3InLFxuICAgICAgdmlzaWJsZUlmOiB7IHNob3dTZWFyY2g6IFt0cnVlXSB9XG4gICAgfVxuICB9KVxuICBzZWFyY2hCb3JkZXJDb2xvciA9ICcjOEY5QUIzJztcblxuICBAUHJvcGVydHkoJ+aQnOe0ouahhuiDjOaZr+iJsicsIHtcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlDb2xvcicsXG4gICAgICB2aXNpYmxlSWY6IHsgc2hvd1NlYXJjaDogW3RydWVdIH1cbiAgICB9XG4gIH0pXG4gIHNlYXJjaEJhY2tncm91bmRDb2xvciA9ICdyZ2JhKDAsMCwwLDApJztcblxuICBAUHJvcGVydHkoJ+aQnOe0ouahhuaPkOekuuivrScsIHtcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB1aToge1xuICAgICAgdmlzaWJsZUlmOiB7IHNob3dTZWFyY2g6IFt0cnVlXSB9XG4gICAgfVxuICB9KVxuICBzZWFyY2hQbGFjZWhvbGRlciA9ICfor7fovpPlhaXmkJzntKLlhoXlrrknO1xuXG4gIEBQcm9wZXJ0eSgn5rua5Yqo5p2h6aKc6ImyJywge1xuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteUNvbG9yJyxcbiAgICB9XG4gIH0pXG4gIHRyZWVTY3JvbGxiYXJUaHVtYkJhY2tncm91bmQgPSAnI2RkZCc7XG5cblxuICBARGF0YSh7XG4gICAgcHJvcGVydGllczoge1xuICAgICAgdGl0bGU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAn5qCH6aKYJyB9LFxuICAgICAga2V5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ2lkJyB9LFxuICAgICAgcGFyZW50S2V5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ+eItue6p2lkJyB9LFxuICAgICAgaWNvbjogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICflm77moIcnIH0sXG4gICAgICBjb3VudDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICfmlbDph48nIH1cbiAgICB9LFxuICB9KVxuICBkYXRhID0gW1xuICAgIHsgdGl0bGU6ICfmsZ/oi4/nnIEnLCBrZXk6ICczMDAnLCBwYXJlbnRLZXk6ICcnIH0sXG4gICAgeyB0aXRsZTogJ+a1meaxn+ecgScsIGtleTogJzEwMCcsIHBhcmVudEtleTogJycgfSxcbiAgICB7IHRpdGxlOiAn5p2t5bee5biCJywga2V5OiAnMTAwMScsIHBhcmVudEtleTogJzEwMCcgfSxcbiAgICB7IHRpdGxlOiAn6aG26aG25Yy6Jywga2V5OiAnMTAwMTAnLCBwYXJlbnRLZXk6ICcxMDAxJyB9LFxuICAgIHsgdGl0bGU6ICfnmoTmlrnljLonLCBrZXk6ICcxMDAxMScsIHBhcmVudEtleTogJzEwMDEnIH0sXG4gICAgeyB0aXRsZTogJ+a4qeW3nuW4gicsIGtleTogJzEwMDInLCBwYXJlbnRLZXk6ICcxMDAnIH0sXG4gICAgeyB0aXRsZTogJ+m5v+WfjuWMuicsIGtleTogJzEwMDIwJywgcGFyZW50S2V5OiAnMTAwMicgfSxcbiAgICB7IHRpdGxlOiAn6b6Z5rm+5Yy6Jywga2V5OiAnMTAwMjEnLCBwYXJlbnRLZXk6ICcxMDAyJyB9LFxuICBdO1xuXG4gIEBEYXRhT3V0cHV0KCfpgInkuK1pZCcpXG4gIEBFdmVudCgn6YCJ5Lit5YC85pS55Y+YJywgeyBwYXJhbXM6ICdpZCcgfSlcbiAga2V5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbm9kZXM6IE56VHJlZU5vZGVPcHRpb25zW10gPSBbXTtcblxuICBleHBhbmRlZEtleXM6IHN0cmluZ1tdO1xuXG4gIGVkaXR0aW5nTm9kZTogTnpUcmVlTm9kZTsgLy8g5q2j5Zyo6YeN5ZG95ZCN55qE6IqC54K5XG5cbiAgQFZpZXdDaGlsZCgncmVuYW1lSW5wdXQnKVxuICByZW5hbWVJbnB1dDogRWxlbWVudFJlZjtcblxuICBzZWxlY3RlZEtleXM6IHN0cmluZ1tdID0gW107XG4gIHN0eWxlID0ge307XG4gIHdhaXR0aW5nU2VsZWN0OiBzdHJpbmc7XG5cbiAgcGFkZE51bTogYW55O1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFycmF5U2VydmljZTogQXJyYXlTZXJ2aWNlLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tdHJlZVNjcm9sbGJhci10aHVtYi1iYWNrZ3JvdW5kJywgdGhpcy50cmVlU2Nyb2xsYmFyVGh1bWJCYWNrZ3JvdW5kIHx8ICcjZGRkJyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xuICAgICAgdGhpcy5ub2RlcyA9IHRoaXMudG9UcmVlKHRoaXMuZGF0YSk7XG4gICAgICBpZiAodGhpcy53YWl0dGluZ1NlbGVjdCkge1xuICAgICAgICB0aGlzLnNlbGVjdCh0aGlzLndhaXR0aW5nU2VsZWN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuZm9udCkge1xuICAgICAgdGhpcy51cGRhdGVTdHlsZSgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmRhdGEgfHwgY2hhbmdlcy5leHBhbmRMZXZlbCB8fCBjaGFuZ2VzLmV4cGFuZEFsbCkge1xuICAgICAgdGhpcy5leHBhbmQoKTtcbiAgICB9XG4gIH1cblxuICB0b1RyZWUoZGF0YTogYW55W10pIHtcbiAgICBjb25zdCBub2RlTWFwID0ge307XG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgICBjb25zdCByb290ID0gW107XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGRhdGEuZm9yRWFjaCgoeyB0aXRsZSwga2V5LCBwYXJlbnRLZXksIHBhcmVudEtleV92YWx1ZSwgaWNvbiwgY291bnQgfSkgPT4ge1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgY29uc3Qgbm9kZTogTnpUcmVlTm9kZU9wdGlvbnMgPSB7IGtleSwgdGl0bGUsIHBhcmVudEtleTogcGFyZW50S2V5X3ZhbHVlIHx8IHBhcmVudEtleSwgaWNvbiwgaXNMZWFmOiB0cnVlLCBjb3VudCB9O1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICBub2RlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbm9kZU1hcFtrZXldID0gbm9kZTtcbiAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKG5vZGUucGFyZW50S2V5KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50ID0gbm9kZU1hcFtub2RlLnBhcmVudEtleV07XG4gICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICAgICAgICBwYXJlbnQuaXNMZWFmID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJvb3QucHVzaChub2RlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIGV4cGFuZCgpIHtcbiAgICAvLyBUT0RPIG5655qEYnVn77yM5Zyo5pWw5o2u5pS55Y+Y5LmL5ZCObnpFeHBhbmRBbGzml6DmlYjvvIznrYnkv67lpI3kuoblj6/ku6XliIfmjaLmiJDov5nph4znmoTku6PnoIFcbiAgICAvLyBpZiAoIXRoaXMuZXhwYW5kQWxsKSB7XG4gICAgLy8gICB0aGlzLmV4cGFuZGVkS2V5cyA9IFtdO1xuICAgIC8vICAgaWYgKHRoaXMuZXhwYW5kTGV2ZWwpIHtcbiAgICAvLyAgICAgdGhpcy5hcnJheVNlcnZpY2UudmlzaXRUcmVlKHRoaXMubm9kZXMsIChpdGVtLCBwYXJlbnQsIGRlZXApID0+IHtcbiAgICAvLyAgICAgICBpZiAoZGVlcCA8PSB0aGlzLmV4cGFuZExldmVsKSB7XG4gICAgLy8gICAgICAgICB0aGlzLmV4cGFuZGVkS2V5cy5wdXNoKGl0ZW0ua2V5KTtcbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgIH0pO1xuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgICB0aGlzLmV4cGFuZGVkS2V5cyA9IFtdO1xuICAgIGlmICh0aGlzLmV4cGFuZEFsbCB8fCB0aGlzLmV4cGFuZExldmVsKSB7XG4gICAgICB0aGlzLmFycmF5U2VydmljZS52aXNpdFRyZWUodGhpcy5ub2RlcywgKGl0ZW0sIHBhcmVudCwgZGVlcCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5leHBhbmRBbGwgfHwgZGVlcCA8PSB0aGlzLmV4cGFuZExldmVsKSB7XG4gICAgICAgICAgdGhpcy5leHBhbmRlZEtleXMucHVzaChpdGVtLmtleSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVN0eWxlKCkge1xuICAgIHRoaXMuc3R5bGUgPSBnZXRGb250U3R5bGUodGhpcy5mb250KTtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zZWxlY3RlZC1iYWNrZ3JvdW5kJywgdGhpcy5zZWxlY3RlZEJhY2tncm91bmQgfHwgJyNiYWU3ZmYnKTtcbiAgfVxuXG4gIG9uQ2xpY2soZXZlbnQ6IE56Rm9ybWF0RW1pdEV2ZW50KSB7XG4gICAgdGhpcy5vbktleXNDaGFuZ2UoZXZlbnQua2V5cyk7XG4gICAgdGhpcy5ub2RlQ2xpY2soZXZlbnQubm9kZS5rZXksIGV2ZW50Lm5vZGUudGl0bGUpO1xuICB9XG5cbiAgb25LZXlzQ2hhbmdlKGtleXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWl0dGluZ1NlbGVjdCA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZEtleXMgPSBrZXlzO1xuICAgIGlmICh0aGlzLmNoZWNrYWJsZSkge1xuICAgICAgdGhpcy5rZXlDaGFuZ2UuZW1pdChrZXlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlDaGFuZ2UuZW1pdChrZXlzWzBdKTtcbiAgICB9XG4gIH1cblxuICBvbkNoZWNrQm94Q2hhbmdlKGV2ZW50OiBOekZvcm1hdEVtaXRFdmVudCkge1xuICAgIHRoaXMub25LZXlzQ2hhbmdlKGV2ZW50LmtleXMpO1xuICB9XG5cbiAgb25Ob2RlRGJsY2xpY2soZXZlbnQ6IE56Rm9ybWF0RW1pdEV2ZW50KSB7XG4gICAgaWYgKHRoaXMucmVuYW1hYmxlKSB7XG4gICAgICB0aGlzLmVkaXR0aW5nTm9kZSA9IGV2ZW50Lm5vZGU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucmVuYW1lSW5wdXQpIHtcbiAgICAgICAgICB0aGlzLnJlbmFtZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVuYW1lRW5kKG5vZGU6IE56VHJlZU5vZGUpIHtcbiAgICB0aGlzLmVkaXR0aW5nTm9kZSA9IG51bGw7XG4gICAgdGhpcy5yZW5hbWUobm9kZS5rZXksIG5vZGUudGl0bGUpO1xuICB9XG5cblxuICBzaG93Tm9kZShlKSB7XG4gICAgY29uc29sZS5sb2coZSk7XG4gIH1cblxuICBATWV0aG9kKCfmkJzntKInKVxuICBzZWFyY2goQFBhcmFtKCflhoXlrrknKSB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgQE1ldGhvZCgn6YCJ5LitJylcbiAgc2VsZWN0KEBQYXJhbSgnaWQnKSBpZDogc3RyaW5nKSB7XG4gICAgbGV0IGZpbmQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5ub2Rlcykge1xuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuYXJyYXlTZXJ2aWNlLmZpbmRUcmVlKHRoaXMubm9kZXMsIChuKSA9PiBuLmtleSA9PT0gaWQpO1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgdGhpcy5vbktleXNDaGFuZ2UoW2lkXSk7XG4gICAgICAgIHRoaXMubm9kZUNsaWNrKG5vZGUua2V5LCBub2RlLnRpdGxlKTtcbiAgICAgICAgZmluZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIOaVsOaNruacieWPr+iDvei/mOayoeWKoOi9ve+8jOetieaVsOaNruWKoOi9veS6huWGjemAieS4rVxuICAgIGlmICghZmluZCkge1xuICAgICAgdGhpcy53YWl0dGluZ1NlbGVjdCA9IGlkO1xuICAgIH1cbiAgfVxuXG4gIEBFdmVudCgn54K55Ye7JylcbiAgbm9kZUNsaWNrKEBFdmVudFBhcmFtKCdpZCcpIGlkOiBzdHJpbmcsIEBFdmVudFBhcmFtKCfmoIfpopgnKSB0aXRsZTogc3RyaW5nKSB7IH1cblxuICBARXZlbnQoJ+mHjeWRveWQjScpXG4gIHJlbmFtZShARXZlbnRQYXJhbSgnaWQnKSBpZDogc3RyaW5nLCBARXZlbnRQYXJhbSgn5ZCN56ewJykgbmFtZTogc3RyaW5nKSB7IH1cbn1cbiJdfQ==
|
|
435
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjcmVlbi13aWRnZXQvc3JjL2xpYi90cmVlLWNvbnRyb2wvdHJlZS1jb250cm9sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0MsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEgsT0FBTyxFQUFxQixlQUFlLEVBQWlDLE1BQU0sb0JBQW9CLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7SUFZNUMsb0JBQW9CLFNBQXBCLG9CQUFvQjtJQTBLL0IsWUFBb0IsWUFBMEIsRUFBVSxVQUFzQjtRQUExRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUF4SzlFLFNBQUksR0FBUTtZQUNWLE1BQU0sRUFBRSxFQUFFO1lBQ1YsS0FBSyxFQUFFLFNBQVM7WUFDaEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsSUFBSSxFQUFFLEVBQUU7WUFDUixLQUFLLEVBQUUsQ0FBQztZQUNSLFVBQVUsRUFBRSxDQUFDO1NBQ2QsQ0FBQztRQUVGLFNBQUksR0FBUTtZQUNWLEdBQUcsRUFBRSxDQUFDO1lBQ04sS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDO1NBQ1IsQ0FBQztRQUVGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFZbEIsZUFBVSxHQUFHLE9BQU8sQ0FBQztRQUtyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFNbEIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFHaEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFPaEIsaUJBQVksR0FBRyxNQUFNLENBQUM7UUFRdEIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFPdkIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFHdEIsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO1FBRy9CLHFCQUFnQixHQUFHLE1BQU0sQ0FBQztRQVExQiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFjN0Isc0JBQWlCLEdBQUcsU0FBUyxDQUFDO1FBUTlCLDBCQUFxQixHQUFHLGVBQWUsQ0FBQztRQVF4QyxzQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFPOUIsaUNBQTRCLEdBQUcsTUFBTSxDQUFDO1FBV3RDLFNBQUksR0FBRztZQUNMLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7WUFDM0MsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtZQUMzQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO1lBQy9DLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7WUFDakQsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRTtZQUNqRCxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO1lBQy9DLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7WUFDakQsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRTtTQUNsRCxDQUFDO1FBT0YsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFcEMsVUFBSyxHQUF3QixFQUFFLENBQUM7UUFZaEMsaUJBQVksR0FBYSxFQUFFLENBQUM7UUFDNUIsOEJBQThCO1FBQzlCLFVBQUssR0FBRyxFQUFFLENBQUM7SUFJc0UsQ0FBQztJQUVsRixRQUFRO1FBQ04sUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyw0QkFBNEIsSUFBSSxNQUFNLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDbEM7U0FDRjtRQUNELElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtZQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7UUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQzVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFXO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUN2RSxJQUFJLEdBQUcsRUFBRTtvQkFDUCxNQUFNLElBQUksR0FBc0I7d0JBQzlCLEdBQUc7d0JBQ0gsS0FBSzt3QkFDTCxTQUFTLEVBQUUsZUFBZSxJQUFJLFNBQVM7d0JBQ3ZDLElBQUk7d0JBQ0osTUFBTSxFQUFFLElBQUk7d0JBQ1osS0FBSztxQkFDTixDQUFDO29CQUNGLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO3FCQUN0QjtvQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUNwQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNsQjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2xCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3ZDLElBQUksTUFBTSxFQUFFO3dCQUNWLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7d0JBQ3hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMzQixNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzt3QkFDdEIsT0FBTztxQkFDUjtpQkFDRjtnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNO1FBQ0osa0RBQWtEO1FBQ2xELHlCQUF5QjtRQUN6Qiw0QkFBNEI7UUFDNUIsNEJBQTRCO1FBQzVCLHdFQUF3RTtRQUN4RSx3Q0FBd0M7UUFDeEMsNENBQTRDO1FBQzVDLFVBQVU7UUFDVixVQUFVO1FBQ1YsTUFBTTtRQUNOLElBQUk7UUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDN0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2xDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixJQUFJLFNBQVMsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBd0I7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBYztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUN0QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMzQjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUF3QjtRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXdCO1FBQ3JDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUN4QztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQWdCO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFDO1FBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBR0QsTUFBTSxDQUFjLEtBQWE7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUdELE1BQU0sQ0FBYyxFQUFxQjtRQUN2QyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7UUFDakIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksRUFBRSxFQUFFO1lBQ04sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtvQkFDMUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3BCO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUNsQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2Y7U0FDRjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDeEIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDZjtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxHQUFHLElBQUksQ0FBQztpQkFDYjthQUNGO1lBQ0Qsc0JBQXNCO1lBQ3RCLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7YUFDMUI7U0FDRjtJQUNILENBQUM7SUFHRCxTQUFTLENBQW1CLEVBQVUsRUFBb0IsS0FBYSxJQUFHLENBQUM7SUFHM0UsTUFBTSxDQUFtQixFQUFVLEVBQW9CLElBQVksSUFBRyxDQUFDO0NBQ3hFLENBQUE7O1lBcFdBLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQix1NEdBQTRDOzthQUU3Qzs7O1lBUFEsWUFBWTtZQUgrQyxVQUFVOzs7bUJBOEszRSxTQUFTLFNBQUMsTUFBTTswQkFHaEIsU0FBUyxTQUFDLGFBQWE7O0FBL0p4QjtJQURDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQzs7a0RBUTNDO0FBRUY7SUFEQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7O2tEQU0zQztBQUVGO0lBREMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzs7dURBQ25CO0FBWWxCO0lBWEMsUUFBUSxDQUFDLE1BQU0sRUFBRTtRQUNoQixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRTtZQUNKLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQy9CLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO1NBQ2xDO1FBQ0QsRUFBRSxFQUFFO1lBQ0YsTUFBTSxFQUFFLFFBQVE7WUFDaEIsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7U0FDakM7S0FDRixDQUFDOzt3REFDbUI7QUFLckI7SUFKQyxRQUFRLENBQUMsUUFBUSxFQUFFO1FBQ2xCLElBQUksRUFBRSxTQUFTO1FBQ2YsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO0tBQ3ZFLENBQUM7OzJEQUNvQjtBQUV0QjtJQURDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7O3NEQUNwQjtBQUVqQjtJQURDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7O3VEQUNwQjtBQU1sQjtJQUxDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7UUFDaEIsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsQ0FBQztRQUNWLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRTtLQUN4RCxDQUFDOzt5REFDYztBQUdoQjtJQURDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7O3VEQUN2QjtBQUVmO0lBREMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzs7d0RBQ3RCO0FBT2hCO0lBTkMsUUFBUSxDQUFDLE1BQU0sRUFBRTtRQUNoQixJQUFJLEVBQUU7WUFDSixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUM3QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtTQUMvQjtLQUNGLENBQUM7OzBEQUNvQjtBQVF0QjtJQU5DLFFBQVEsQ0FBQyxNQUFNLEVBQUU7UUFDaEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxFQUFFLEVBQUU7WUFDRixNQUFNLEVBQUUsVUFBVTtTQUNuQjtLQUNGLENBQUM7OzZEQUNxQjtBQU92QjtJQU5DLFFBQVEsQ0FBQyxNQUFNLEVBQUU7UUFDaEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxFQUFFLEVBQUU7WUFDRixNQUFNLEVBQUUsVUFBVTtTQUNuQjtLQUNGLENBQUM7OzREQUNvQjtBQUd0QjtJQURDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQzs7Z0VBQ3BCO0FBRy9CO0lBREMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDOzs4REFDekI7QUFRMUI7SUFOQyxRQUFRLENBQUMsUUFBUSxFQUFFO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsRUFBRSxFQUFFO1lBQ0YsTUFBTSxFQUFFLFVBQVU7U0FDbkI7S0FDRixDQUFDOzttRUFDMkI7QUFHN0I7SUFEQyxRQUFRLENBQUMsT0FBTyxDQUFDOzt1REFDQztBQUVuQjtJQURDLFFBQVEsQ0FBQyxPQUFPLENBQUM7O3dEQUNFO0FBU3BCO0lBTkMsUUFBUSxDQUFDLE9BQU8sRUFBRTtRQUNqQixFQUFFLEVBQUU7WUFDRixNQUFNLEVBQUUsU0FBUztZQUNqQixTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtTQUNsQztLQUNGLENBQUM7OytEQUM0QjtBQVE5QjtJQU5DLFFBQVEsQ0FBQyxRQUFRLEVBQUU7UUFDbEIsRUFBRSxFQUFFO1lBQ0YsTUFBTSxFQUFFLFNBQVM7WUFDakIsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7U0FDbEM7S0FDRixDQUFDOzttRUFDc0M7QUFReEM7SUFOQyxRQUFRLENBQUMsUUFBUSxFQUFFO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsRUFBRSxFQUFFO1lBQ0YsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7U0FDbEM7S0FDRixDQUFDOzsrREFDNEI7QUFPOUI7SUFMQyxRQUFRLENBQUMsT0FBTyxFQUFFO1FBQ2pCLEVBQUUsRUFBRTtZQUNGLE1BQU0sRUFBRSxTQUFTO1NBQ2xCO0tBQ0YsQ0FBQzs7MEVBQ29DO0FBV3RDO0lBVEMsSUFBSSxDQUFDO1FBQ0osVUFBVSxFQUFFO1lBQ1YsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3RDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUNwQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDNUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUN2QztLQUNGLENBQUM7O2tEQVVBO0FBR0Y7SUFEQyxTQUFTLENBQUMsS0FBSyxDQUFDOzttREFDTjtBQUlYO0lBRkMsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUNsQixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDOzt1REFDRztBQXVKcEM7SUFEQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ0wsV0FBQSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7Ozs7a0RBRWxCO0FBR0Q7SUFEQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ0wsV0FBQSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7Ozs7a0RBaUNsQjtBQUdEO0lBREMsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNELFdBQUEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBLEVBQWMsV0FBQSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7Ozs7cURBQWtCO0FBRzNFO0lBREMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNMLFdBQUEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBLEVBQWMsV0FBQSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7Ozs7a0RBQWlCO0FBelY1RCxvQkFBb0I7SUFMaEMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSw0QkFBNEI7UUFDbkMsSUFBSSxFQUFFLFVBQVU7S0FDakIsQ0FBQztxQ0EyS2tDLFlBQVksRUFBc0IsVUFBVTtHQTFLbkUsb0JBQW9CLENBMFZoQztTQTFWWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YSwgUHJvcGVydHksIFdpZGdldCwgRGF0YU91dHB1dCwgRXZlbnQsIEV2ZW50UGFyYW0sIE1ldGhvZCwgUGFyYW0sIERhdGFJbnB1dCB9IGZyb20gJ2Jiai13aWRnZXQtYmFzZSc7XG5pbXBvcnQgeyBOekZvcm1hdEVtaXRFdmVudCwgTnpUcmVlQ29tcG9uZW50LCBOelRyZWVOb2RlLCBOelRyZWVOb2RlT3B0aW9ucyB9IGZyb20gJ25nLXpvcnJvLWFudGQvdHJlZSc7XG5pbXBvcnQgeyBBcnJheVNlcnZpY2UgfSBmcm9tICdAZGVsb24vdXRpbCc7XG5pbXBvcnQgeyBnZXRGb250U3R5bGUgfSBmcm9tICcuLi9zaGFyZWQvdXRpbC9zdHlsZS51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtdHJlZS1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUtY29udHJvbC5jb21wb25lbnQubGVzcyddLFxufSlcbkBXaWRnZXQoJ+agkeaOp+S7ticsIHtcbiAgZ3JvdXA6ICdjb21wb25lbnQnLFxuICBpbWFnZTogJ2Fzc2V0cy9pbWcvc2NyZWVuL1RyZWUucG5nJyxcbiAgaWNvbjogJ2JpYW56dTQwJyxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbnRyb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBQcm9wZXJ0eSgn5a2X5L2TJywgeyB1aTogeyB3aWRnZXQ6ICdteUZvbnQnIH0gfSlcbiAgZm9udDogYW55ID0ge1xuICAgIGZhbWlseTogJycsXG4gICAgY29sb3I6ICcjNTk1RjdBJyxcbiAgICB3ZWlnaHQ6ICdub3JtYWwnLFxuICAgIHNpemU6IDE2LFxuICAgIHNwYWNlOiAwLFxuICAgIGxpbmVIZWlnaHQ6IDAsXG4gIH07XG4gIEBQcm9wZXJ0eSgn6L656LedJywgeyB1aTogeyB3aWRnZXQ6ICdteUdyaWQnIH0gfSlcbiAgZ3JpZDogYW55ID0ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgfTtcbiAgQFByb3BlcnR5KCflpI3pgInmoYYnLCB7IHR5cGU6ICdib29sZWFuJyB9KVxuICBjaGVja2FibGUgPSBmYWxzZTtcbiAgQFByb3BlcnR5KCfovpPlh7rmoLzlvI8nLCB7XG4gICAgdHlwZTogJ3N0cmluZycsXG4gICAgZW51bTogW1xuICAgICAgeyBsYWJlbDogJ+aVsOe7hCcsIHZhbHVlOiAnYXJyYXknIH0sXG4gICAgICB7IGxhYmVsOiAn5a2X56ym5LiyJywgdmFsdWU6ICdzdHJpbmcnIH0sXG4gICAgXSxcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnc2VsZWN0JyxcbiAgICAgIHZpc2libGVJZjogeyBjaGVja2FibGU6IFt0cnVlXSB9LFxuICAgIH0sXG4gIH0pXG4gIG91dHB1dFR5cGUgPSAnYXJyYXknO1xuICBAUHJvcGVydHkoJ+mAieaLqeWujOWFqOWPl+aOpycsIHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgdWk6IHsgb3B0aW9uYWxIZWxwOiAn54i25a2Q6IqC54K56YCJ5Lit54q25oCB5LiN5YaN5YWz6IGUJywgdmlzaWJsZUlmOiB7IGNoZWNrYWJsZTogW3RydWVdIH0gfSxcbiAgfSlcbiAgY2hlY2tTdHJpY3RseSA9IGZhbHNlO1xuICBAUHJvcGVydHkoJ+i/nuaOpee6vycsIHsgdHlwZTogJ2Jvb2xlYW4nIH0pXG4gIHNob3dMaW5lID0gZmFsc2U7XG4gIEBQcm9wZXJ0eSgn5bGV5byA5omA5pyJJywgeyB0eXBlOiAnYm9vbGVhbicgfSlcbiAgZXhwYW5kQWxsID0gZmFsc2U7XG4gIEBQcm9wZXJ0eSgn5bGV5byA5bGC57qnJywge1xuICAgIHR5cGU6ICdpbnRlZ2VyJyxcbiAgICBtaW5pbXVtOiAwLFxuICAgIHVpOiB7IHByZWNpc2lvbjogMCwgdmlzaWJsZUlmOiB7IGV4cGFuZEFsbDogW2ZhbHNlXSB9IH0sXG4gIH0pXG4gIGV4cGFuZExldmVsID0gMDtcblxuICBAUHJvcGVydHkoJ+Wbvuagh+WuveW6picsIHsgdHlwZTogJ2ludGVnZXInIH0pXG4gIGljb25XaWR0aCA9IDIwO1xuICBAUHJvcGVydHkoJ+Wbvuagh+mrmOW6picsIHsgdHlwZTogJ2ludGVnZXInIH0pXG4gIGljb25IZWlnaHQgPSAyMDtcbiAgQFByb3BlcnR5KCflm77moIfkvY3nva4nLCB7XG4gICAgZW51bTogW1xuICAgICAgeyBsYWJlbDogJ+W3picsIHZhbHVlOiAnbGVmdCcgfSxcbiAgICAgIHsgbGFiZWw6ICflj7MnLCB2YWx1ZTogJ3JpZ2h0JyB9LFxuICAgIF0sXG4gIH0pXG4gIGljb25Qb3NpdGlvbiA9ICdsZWZ0JztcblxuICBAUHJvcGVydHkoJ+iKgueCueWbvuaghycsIHtcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlVcGxvYWQnLFxuICAgIH0sXG4gIH0pXG4gIG5vZGVEZWZhdWx0SWNvbiA9IG51bGw7XG4gIEBQcm9wZXJ0eSgn6IqC54K56IOM5pmvJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteVVwbG9hZCcsXG4gICAgfSxcbiAgfSlcbiAgbm9kZUJhY2tncm91bmQgPSBudWxsO1xuXG4gIEBQcm9wZXJ0eSgn6IqC54K56YCJ5Lit6IOM5pmv6ImyJywgeyB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9IH0pXG4gIHNlbGVjdGVkQmFja2dyb3VuZCA9ICcjYmFlN2ZmJztcblxuICBAUHJvcGVydHkoJ+iKgueCuemAieS4reWtl+S9k+iJsicsIHsgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSB9KVxuICBub2RlQ2hlY2tlZENvbG9yID0gJyMzMzMnO1xuXG4gIEBQcm9wZXJ0eSgn6IqC54K56YCJ5Lit6IOM5pmvJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteVVwbG9hZCcsXG4gICAgfSxcbiAgfSlcbiAgbm9kZUNoZWNrZWRCYWNrZ3JvdW5kID0gbnVsbDtcblxuICBAUHJvcGVydHkoJ+WPjOWHu+mHjeWRveWQjScpXG4gIHJlbmFtYWJsZTogYm9vbGVhbjtcbiAgQFByb3BlcnR5KCfmmL7npLrmkJzntKLmoYYnKVxuICBzaG93U2VhcmNoOiBib29sZWFuO1xuICBzZWFyY2hWYWx1ZTogc3RyaW5nO1xuXG4gIEBQcm9wZXJ0eSgn5pCc57Si5qGG6aKc6ImyJywge1xuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteUNvbG9yJyxcbiAgICAgIHZpc2libGVJZjogeyBzaG93U2VhcmNoOiBbdHJ1ZV0gfSxcbiAgICB9LFxuICB9KVxuICBzZWFyY2hCb3JkZXJDb2xvciA9ICcjOEY5QUIzJztcblxuICBAUHJvcGVydHkoJ+aQnOe0ouahhuiDjOaZr+iJsicsIHtcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlDb2xvcicsXG4gICAgICB2aXNpYmxlSWY6IHsgc2hvd1NlYXJjaDogW3RydWVdIH0sXG4gICAgfSxcbiAgfSlcbiAgc2VhcmNoQmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMCwwLDAsMCknO1xuXG4gIEBQcm9wZXJ0eSgn5pCc57Si5qGG5o+Q56S66K+tJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB2aXNpYmxlSWY6IHsgc2hvd1NlYXJjaDogW3RydWVdIH0sXG4gICAgfSxcbiAgfSlcbiAgc2VhcmNoUGxhY2Vob2xkZXIgPSAn6K+36L6T5YWl5pCc57Si5YaF5a65JztcblxuICBAUHJvcGVydHkoJ+a7muWKqOadoeminOiJsicsIHtcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlDb2xvcicsXG4gICAgfSxcbiAgfSlcbiAgdHJlZVNjcm9sbGJhclRodW1iQmFja2dyb3VuZCA9ICcjZGRkJztcblxuICBARGF0YSh7XG4gICAgcHJvcGVydGllczoge1xuICAgICAgdGl0bGU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAn5qCH6aKYJyB9LFxuICAgICAga2V5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ2lkJyB9LFxuICAgICAgcGFyZW50S2V5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ+eItue6p2lkJyB9LFxuICAgICAgaWNvbjogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICflm77moIcnIH0sXG4gICAgICBjb3VudDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICfmlbDph48nIH0sXG4gICAgfSxcbiAgfSlcbiAgZGF0YSA9IFtcbiAgICB7IHRpdGxlOiAn5rGf6IuP55yBJywga2V5OiAnMzAwJywgcGFyZW50S2V5OiAnJyB9LFxuICAgIHsgdGl0bGU6ICfmtZnmsZ/nnIEnLCBrZXk6ICcxMDAnLCBwYXJlbnRLZXk6ICcnIH0sXG4gICAgeyB0aXRsZTogJ+adreW3nuW4gicsIGtleTogJzEwMDEnLCBwYXJlbnRLZXk6ICcxMDAnIH0sXG4gICAgeyB0aXRsZTogJ+mhtumhtuWMuicsIGtleTogJzEwMDEwJywgcGFyZW50S2V5OiAnMTAwMScgfSxcbiAgICB7IHRpdGxlOiAn55qE5pa55Yy6Jywga2V5OiAnMTAwMTEnLCBwYXJlbnRLZXk6ICcxMDAxJyB9LFxuICAgIHsgdGl0bGU6ICfmuKnlt57luIInLCBrZXk6ICcxMDAyJywgcGFyZW50S2V5OiAnMTAwJyB9LFxuICAgIHsgdGl0bGU6ICfpub/ln47ljLonLCBrZXk6ICcxMDAyMCcsIHBhcmVudEtleTogJzEwMDInIH0sXG4gICAgeyB0aXRsZTogJ+m+mea5vuWMuicsIGtleTogJzEwMDIxJywgcGFyZW50S2V5OiAnMTAwMicgfSxcbiAgXTtcblxuICBARGF0YUlucHV0KCfpgInkuK3lgLwnKVxuICB2YWx1ZTogYW55O1xuXG4gIEBEYXRhT3V0cHV0KCfpgInkuK1pZCcpXG4gIEBFdmVudCgn6YCJ5Lit5YC85pS55Y+YJywgeyBwYXJhbXM6ICdpZCcgfSlcbiAga2V5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbm9kZXM6IE56VHJlZU5vZGVPcHRpb25zW10gPSBbXTtcblxuICBleHBhbmRlZEtleXM6IHN0cmluZ1tdO1xuXG4gIGVkaXR0aW5nTm9kZTogTnpUcmVlTm9kZTsgLy8g5q2j5Zyo6YeN5ZG95ZCN55qE6IqC54K5XG5cbiAgQFZpZXdDaGlsZCgndHJlZScpXG4gIHRyZWU6IE56VHJlZUNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdyZW5hbWVJbnB1dCcpXG4gIHJlbmFtZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIHNlbGVjdGVkS2V5czogc3RyaW5nW10gPSBbXTtcbiAgLy8gY2hlY2tlZEtleXM6IHN0cmluZ1tdID0gW107XG4gIHN0eWxlID0ge307XG4gIHdhaXR0aW5nU2VsZWN0OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBwYWRkTnVtOiBhbnk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXJyYXlTZXJ2aWNlOiBBcnJheVNlcnZpY2UsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXRyZWVTY3JvbGxiYXItdGh1bWItYmFja2dyb3VuZCcsIHRoaXMudHJlZVNjcm9sbGJhclRodW1iQmFja2dyb3VuZCB8fCAnI2RkZCcpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHtcbiAgICAgIHRoaXMubm9kZXMgPSB0aGlzLnRvVHJlZSh0aGlzLmRhdGEpO1xuICAgICAgaWYgKHRoaXMud2FpdHRpbmdTZWxlY3QpIHtcbiAgICAgICAgdGhpcy5zZWxlY3QodGhpcy53YWl0dGluZ1NlbGVjdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmZvbnQpIHtcbiAgICAgIHRoaXMudXBkYXRlU3R5bGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5kYXRhIHx8IGNoYW5nZXMuZXhwYW5kTGV2ZWwgfHwgY2hhbmdlcy5leHBhbmRBbGwpIHtcbiAgICAgIHRoaXMuZXhwYW5kKCk7XG4gICAgfVxuICB9XG5cbiAgdG9UcmVlKGRhdGE6IGFueVtdKSB7XG4gICAgY29uc3Qgbm9kZU1hcCA9IHt9O1xuICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgY29uc3Qgcm9vdCA9IFtdO1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBkYXRhLmZvckVhY2goKHsgdGl0bGUsIGtleSwgcGFyZW50S2V5LCBwYXJlbnRLZXlfdmFsdWUsIGljb24sIGNvdW50IH0pID0+IHtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgIGNvbnN0IG5vZGU6IE56VHJlZU5vZGVPcHRpb25zID0ge1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICBwYXJlbnRLZXk6IHBhcmVudEtleV92YWx1ZSB8fCBwYXJlbnRLZXksXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgaXNMZWFmOiB0cnVlLFxuICAgICAgICAgICAgY291bnQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgbm9kZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5vZGVNYXBba2V5XSA9IG5vZGU7XG4gICAgICAgICAgbm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnBhcmVudEtleSkge1xuICAgICAgICAgIGNvbnN0IHBhcmVudCA9IG5vZGVNYXBbbm9kZS5wYXJlbnRLZXldO1xuICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbiB8fCBbXTtcbiAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgcGFyZW50LmlzTGVhZiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByb290LnB1c2gobm9kZSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBleHBhbmQoKSB7XG4gICAgLy8gVE9ETyBueueahGJ1Z++8jOWcqOaVsOaNruaUueWPmOS5i+WQjm56RXhwYW5kQWxs5peg5pWI77yM562J5L+u5aSN5LqG5Y+v5Lul5YiH5o2i5oiQ6L+Z6YeM55qE5Luj56CBXG4gICAgLy8gaWYgKCF0aGlzLmV4cGFuZEFsbCkge1xuICAgIC8vICAgdGhpcy5leHBhbmRlZEtleXMgPSBbXTtcbiAgICAvLyAgIGlmICh0aGlzLmV4cGFuZExldmVsKSB7XG4gICAgLy8gICAgIHRoaXMuYXJyYXlTZXJ2aWNlLnZpc2l0VHJlZSh0aGlzLm5vZGVzLCAoaXRlbSwgcGFyZW50LCBkZWVwKSA9PiB7XG4gICAgLy8gICAgICAgaWYgKGRlZXAgPD0gdGhpcy5leHBhbmRMZXZlbCkge1xuICAgIC8vICAgICAgICAgdGhpcy5leHBhbmRlZEtleXMucHVzaChpdGVtLmtleSk7XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICB9KTtcbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgdGhpcy5leHBhbmRlZEtleXMgPSBbXTtcbiAgICBpZiAodGhpcy5leHBhbmRBbGwgfHwgdGhpcy5leHBhbmRMZXZlbCkge1xuICAgICAgdGhpcy5hcnJheVNlcnZpY2UudmlzaXRUcmVlKHRoaXMubm9kZXMsIChpdGVtLCBwYXJlbnQsIGRlZXApID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kQWxsIHx8IGRlZXAgPD0gdGhpcy5leHBhbmRMZXZlbCkge1xuICAgICAgICAgIHRoaXMuZXhwYW5kZWRLZXlzLnB1c2goaXRlbS5rZXkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTdHlsZSgpIHtcbiAgICB0aGlzLnN0eWxlID0gZ2V0Rm9udFN0eWxlKHRoaXMuZm9udCk7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2VsZWN0ZWQtYmFja2dyb3VuZCcsIHRoaXMuc2VsZWN0ZWRCYWNrZ3JvdW5kIHx8ICcjYmFlN2ZmJyk7XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBOekZvcm1hdEVtaXRFdmVudCkge1xuICAgIHRoaXMub25LZXlzQ2hhbmdlKGV2ZW50LmtleXMpO1xuICAgIHRoaXMubm9kZUNsaWNrKGV2ZW50Lm5vZGUua2V5LCBldmVudC5ub2RlLnRpdGxlKTtcbiAgfVxuXG4gIG9uS2V5c0NoYW5nZShrZXlzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2FpdHRpbmdTZWxlY3QgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0ga2V5cztcbiAgICBpZiAodGhpcy5jaGVja2FibGUpIHtcbiAgICAgIGlmICh0aGlzLm91dHB1dFR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMua2V5Q2hhbmdlLmVtaXQoa2V5cz8uam9pbignOycpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMua2V5Q2hhbmdlLmVtaXQoa2V5cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMua2V5Q2hhbmdlLmVtaXQoa2V5c1swXSk7XG4gICAgfVxuICB9XG5cbiAgb25DaGVja0JveENoYW5nZShldmVudDogTnpGb3JtYXRFbWl0RXZlbnQpIHtcbiAgICB0aGlzLm9uS2V5c0NoYW5nZShldmVudC5rZXlzKTtcbiAgfVxuXG4gIG9uTm9kZURibGNsaWNrKGV2ZW50OiBOekZvcm1hdEVtaXRFdmVudCkge1xuICAgIGlmICh0aGlzLnJlbmFtYWJsZSkge1xuICAgICAgdGhpcy5lZGl0dGluZ05vZGUgPSBldmVudC5ub2RlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJlbmFtZUlucHV0KSB7XG4gICAgICAgICAgdGhpcy5yZW5hbWVJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmFtZUVuZChub2RlOiBOelRyZWVOb2RlKSB7XG4gICAgdGhpcy5lZGl0dGluZ05vZGUgPSBudWxsO1xuICAgIHRoaXMucmVuYW1lKG5vZGUua2V5LCBub2RlLnRpdGxlKTtcbiAgfVxuXG4gIHNob3dOb2RlKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgfVxuXG4gIEBNZXRob2QoJ+aQnOe0oicpXG4gIHNlYXJjaChAUGFyYW0oJ+WGheWuuScpIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBATWV0aG9kKCfpgInkuK0nKVxuICBzZWxlY3QoQFBhcmFtKCdpZCcpIGlkOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGxldCBmaW5kID0gZmFsc2U7XG4gICAgY29uc3Qga2V5cyA9IFtdO1xuICAgIGlmIChpZCkge1xuICAgICAgaWYgKHRoaXMuY2hlY2thYmxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgaWQgPSBpZC5zcGxpdCgnOycpO1xuICAgICAgICB9XG4gICAgICAgIGtleXMucHVzaCguLi5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzLnB1c2goaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkS2V5cyA9IGtleXM7XG4gICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5ub2Rlcykge1xuICAgICAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmFycmF5U2VydmljZS52aXNpdFRyZWUodGhpcy5ub2RlcywgKG4pID0+IHtcbiAgICAgICAgICBpZiAoa2V5cy5pbmNsdWRlcyhuLmtleSkpIHtcbiAgICAgICAgICAgIG5vZGVzLnB1c2gobik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMub25LZXlzQ2hhbmdlKGtleXMpO1xuICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHRoaXMubm9kZUNsaWNrKG5vZGUua2V5LCBub2RlLnRpdGxlKSk7XG4gICAgICAgICAgZmluZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIOaVsOaNruacieWPr+iDvei/mOayoeWKoOi9ve+8jOetieaVsOaNruWKoOi9veS6huWGjemAieS4rVxuICAgICAgaWYgKCFmaW5kKSB7XG4gICAgICAgIHRoaXMud2FpdHRpbmdTZWxlY3QgPSBpZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBARXZlbnQoJ+eCueWHuycpXG4gIG5vZGVDbGljayhARXZlbnRQYXJhbSgnaWQnKSBpZDogc3RyaW5nLCBARXZlbnRQYXJhbSgn5qCH6aKYJykgdGl0bGU6IHN0cmluZykge31cblxuICBARXZlbnQoJ+mHjeWRveWQjScpXG4gIHJlbmFtZShARXZlbnRQYXJhbSgnaWQnKSBpZDogc3RyaW5nLCBARXZlbnRQYXJhbSgn5ZCN56ewJykgbmFtZTogc3RyaW5nKSB7fVxufVxuIl19
|
|
@@ -11606,6 +11606,7 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
11606
11606
|
left: 0,
|
|
11607
11607
|
};
|
|
11608
11608
|
this.checkable = false;
|
|
11609
|
+
this.outputType = 'array';
|
|
11609
11610
|
this.checkStrictly = false;
|
|
11610
11611
|
this.showLine = false;
|
|
11611
11612
|
this.expandAll = false;
|
|
@@ -11635,6 +11636,7 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
11635
11636
|
this.keyChange = new EventEmitter();
|
|
11636
11637
|
this.nodes = [];
|
|
11637
11638
|
this.selectedKeys = [];
|
|
11639
|
+
// checkedKeys: string[] = [];
|
|
11638
11640
|
this.style = {};
|
|
11639
11641
|
}
|
|
11640
11642
|
ngOnInit() {
|
|
@@ -11661,7 +11663,14 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
11661
11663
|
if (data) {
|
|
11662
11664
|
data.forEach(({ title, key, parentKey, parentKey_value, icon, count }) => {
|
|
11663
11665
|
if (key) {
|
|
11664
|
-
const node = {
|
|
11666
|
+
const node = {
|
|
11667
|
+
key,
|
|
11668
|
+
title,
|
|
11669
|
+
parentKey: parentKey_value || parentKey,
|
|
11670
|
+
icon,
|
|
11671
|
+
isLeaf: true,
|
|
11672
|
+
count,
|
|
11673
|
+
};
|
|
11665
11674
|
if (this.selectedKeys.includes(key)) {
|
|
11666
11675
|
node.selected = true;
|
|
11667
11676
|
}
|
|
@@ -11717,7 +11726,12 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
11717
11726
|
this.waittingSelect = null;
|
|
11718
11727
|
this.selectedKeys = keys;
|
|
11719
11728
|
if (this.checkable) {
|
|
11720
|
-
this.
|
|
11729
|
+
if (this.outputType === 'string') {
|
|
11730
|
+
this.keyChange.emit(keys === null || keys === void 0 ? void 0 : keys.join(';'));
|
|
11731
|
+
}
|
|
11732
|
+
else {
|
|
11733
|
+
this.keyChange.emit(keys);
|
|
11734
|
+
}
|
|
11721
11735
|
}
|
|
11722
11736
|
else {
|
|
11723
11737
|
this.keyChange.emit(keys[0]);
|
|
@@ -11748,17 +11762,37 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
11748
11762
|
}
|
|
11749
11763
|
select(id) {
|
|
11750
11764
|
let find = false;
|
|
11751
|
-
|
|
11752
|
-
|
|
11753
|
-
if (
|
|
11754
|
-
|
|
11755
|
-
|
|
11756
|
-
|
|
11765
|
+
const keys = [];
|
|
11766
|
+
if (id) {
|
|
11767
|
+
if (this.checkable) {
|
|
11768
|
+
if (typeof id === 'string') {
|
|
11769
|
+
id = id.split(';');
|
|
11770
|
+
}
|
|
11771
|
+
keys.push(...id);
|
|
11772
|
+
}
|
|
11773
|
+
else {
|
|
11774
|
+
keys.push(id);
|
|
11757
11775
|
}
|
|
11758
11776
|
}
|
|
11759
|
-
|
|
11760
|
-
if (
|
|
11761
|
-
this.
|
|
11777
|
+
this.selectedKeys = keys;
|
|
11778
|
+
if (keys.length) {
|
|
11779
|
+
if (this.nodes) {
|
|
11780
|
+
const nodes = [];
|
|
11781
|
+
this.arrayService.visitTree(this.nodes, (n) => {
|
|
11782
|
+
if (keys.includes(n.key)) {
|
|
11783
|
+
nodes.push(n);
|
|
11784
|
+
}
|
|
11785
|
+
});
|
|
11786
|
+
if (nodes.length) {
|
|
11787
|
+
this.onKeysChange(keys);
|
|
11788
|
+
nodes.forEach((node) => this.nodeClick(node.key, node.title));
|
|
11789
|
+
find = true;
|
|
11790
|
+
}
|
|
11791
|
+
}
|
|
11792
|
+
// 数据有可能还没加载,等数据加载了再选中
|
|
11793
|
+
if (!find) {
|
|
11794
|
+
this.waittingSelect = id;
|
|
11795
|
+
}
|
|
11762
11796
|
}
|
|
11763
11797
|
}
|
|
11764
11798
|
nodeClick(id, title) { }
|
|
@@ -11767,7 +11801,7 @@ let TreeControlComponent = class TreeControlComponent {
|
|
|
11767
11801
|
TreeControlComponent.decorators = [
|
|
11768
11802
|
{ type: Component, args: [{
|
|
11769
11803
|
selector: 'sc-tree-control',
|
|
11770
|
-
template: "<div *ngIf=\"showSearch\" class=\"searchBox\">\n <input\n class=\"search-input\"\n type=\"text\"\n nz-input\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"searchPlaceholder\"\n [style]=\"{ 'border-color': searchBorderColor, background: searchBackgroundColor }\"\n />\n <i nz-icon nzType=\"search\"></i>\n</div>\n\n<div class=\"warp-tree\">\n <nz-tree\n [ngClass]=\"{ 'ant-tree-nodeBgCustom': nodeBackground }\"\n [ngStyle]=\"style\"\n [nzData]=\"nodes\"\n [nzCheckable]=\"checkable\"\n [nzExpandAll]=\"expandAll\"\n [nzShowLine]=\"showLine\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzCheckStrictly]=\"checkStrictly\"\n [nzExpandedIcon]=\"nodeDefaultIcon ? multiExpandedIconTpl : null\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n (nzClick)=\"onClick($event)\"\n (nzDblClick)=\"onNodeDblclick($event)\"\n (nzCheckBoxChange)=\"onCheckBoxChange($event)\"\n >\n </nz-tree>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <img [src]=\"nodeDefaultIcon\" [class]=\"node.isExpanded ? 'nodeImg-open' : ''\" />\n </ng-template>\n\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div\n class=\"custom-node\"\n [style.color]=\"node.isSelected ? nodeCheckedColor : ''\"\n [style.backgroundImage]=\"\n node.isSelected ? 'url(' + nodeCheckedBackground + ')' : nodeBackground ? 'url(' + nodeBackground + ')' : ''\n \"\n [style.padding]=\"\n (grid?.top || 0) + 'px ' + (grid?.right || 0) + 'px ' + (grid?.bottom || 0) + 'px ' + (grid?.left || 0) + 'px'\n \"\n >\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n (click)=\"showNode(node)\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n\n <span class=\"node-count\" [class.noCount]=\"origin.count === '0'\" *ngIf=\"origin.count || origin.count === '0'\"\n >({{ origin.count }})</span\n >\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n\n <!-- \n\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n /> -->\n </div>\n </ng-template>\n</div>\n",
|
|
11804
|
+
template: "<div *ngIf=\"showSearch\" class=\"searchBox\">\n <input\n class=\"search-input\"\n type=\"text\"\n nz-input\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"searchPlaceholder\"\n [style]=\"{ 'border-color': searchBorderColor, background: searchBackgroundColor }\"\n />\n <i nz-icon nzType=\"search\"></i>\n</div>\n\n<div class=\"warp-tree\">\n <nz-tree\n #tree\n [ngClass]=\"{ 'ant-tree-nodeBgCustom': nodeBackground }\"\n [ngStyle]=\"style\"\n [nzData]=\"nodes\"\n [nzCheckable]=\"checkable\"\n [nzMultiple]=\"checkable\"\n [nzExpandAll]=\"expandAll\"\n [nzShowLine]=\"showLine\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzCheckStrictly]=\"checkStrictly\"\n [nzExpandedIcon]=\"nodeDefaultIcon ? multiExpandedIconTpl : null\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n [nzCheckedKeys]=\"selectedKeys\"\n (nzClick)=\"onClick($event)\"\n (nzDblClick)=\"onNodeDblclick($event)\"\n (nzCheckBoxChange)=\"onCheckBoxChange($event)\"\n >\n </nz-tree>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <img [src]=\"nodeDefaultIcon\" [class]=\"node.isExpanded ? 'nodeImg-open' : ''\" />\n </ng-template>\n\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div\n class=\"custom-node\"\n [style.color]=\"node.isSelected ? nodeCheckedColor : ''\"\n [style.backgroundImage]=\"\n node.isSelected ? 'url(' + nodeCheckedBackground + ')' : nodeBackground ? 'url(' + nodeBackground + ')' : ''\n \"\n [style.padding]=\"\n (grid?.top || 0) + 'px ' + (grid?.right || 0) + 'px ' + (grid?.bottom || 0) + 'px ' + (grid?.left || 0) + 'px'\n \"\n >\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n (click)=\"showNode(node)\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n\n <span class=\"node-count\" [class.noCount]=\"origin.count === '0'\" *ngIf=\"origin.count || origin.count === '0'\"\n >({{ origin.count }})</span\n >\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n\n <!-- \n\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n /> -->\n </div>\n </ng-template>\n</div>\n",
|
|
11771
11805
|
styles: [":host{display:block;height:100%;width:100%;overflow:hidden;display:flex;flex-direction:column}.ant-tree,.ant-tree ::ng-deep .ant-tree-checkbox-inner,.ant-tree ::ng-deep .ant-tree-switcher{background:initial}.ant-tree ::ng-deep .ant-tree-switcher-icon{font-size:inherit}.ant-tree ::ng-deep .ant-tree-checkbox{color:inherit}.ant-tree ::ng-deep .ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{border-color:#1890ff}.ant-tree ::ng-deep .ant-tree-switcher-noop>i{display:none}.ant-tree ::ng-deep .ant-tree-node-content-wrapper.ant-tree-node-selected,.ant-tree ::ng-deep .ant-tree-node-content-wrapper:hover{background-color:var(--selected-background)}::ng-deep .ant-tree.ant-tree-nodeBgCustom .ant-tree-node-content-wrapper{flex:1}::ng-deep .ant-tree.ant-tree-nodeBgCustom nz-tree-node-switcher{width:16px}.custom-node{display:flex;align-items:center;white-space:nowrap;background-repeat:no-repeat;background-size:180px 8px;background-position:0 bottom}.searchBox{position:relative;margin-bottom:20px}.searchBox .search-input{line-height:32px;height:32px;color:#7a8799;outline:none;box-shadow:none}.searchBox i.anticon{width:16px;height:16px;color:#8f9ab3;position:absolute;top:10px;right:10px}.warp-tree{flex:1;overflow:auto}.warp-tree::-webkit-scrollbar-thumb{background-color:var(--treeScrollbar-thumb-background,\"#ddd\")!important}.warp-tree::-webkit-scrollbar-corner{background-color:transparent}.folder-name{flex:1}.node-count{color:hsla(0,0%,100%,.8)}.node-count.noCount{color:#7a8799}"]
|
|
11772
11806
|
},] }
|
|
11773
11807
|
];
|
|
@@ -11776,6 +11810,7 @@ TreeControlComponent.ctorParameters = () => [
|
|
|
11776
11810
|
{ type: ElementRef }
|
|
11777
11811
|
];
|
|
11778
11812
|
TreeControlComponent.propDecorators = {
|
|
11813
|
+
tree: [{ type: ViewChild, args: ['tree',] }],
|
|
11779
11814
|
renameInput: [{ type: ViewChild, args: ['renameInput',] }]
|
|
11780
11815
|
};
|
|
11781
11816
|
__decorate([
|
|
@@ -11790,6 +11825,20 @@ __decorate([
|
|
|
11790
11825
|
Property('复选框', { type: 'boolean' }),
|
|
11791
11826
|
__metadata("design:type", Object)
|
|
11792
11827
|
], TreeControlComponent.prototype, "checkable", void 0);
|
|
11828
|
+
__decorate([
|
|
11829
|
+
Property('输出格式', {
|
|
11830
|
+
type: 'string',
|
|
11831
|
+
enum: [
|
|
11832
|
+
{ label: '数组', value: 'array' },
|
|
11833
|
+
{ label: '字符串', value: 'string' },
|
|
11834
|
+
],
|
|
11835
|
+
ui: {
|
|
11836
|
+
widget: 'select',
|
|
11837
|
+
visibleIf: { checkable: [true] },
|
|
11838
|
+
},
|
|
11839
|
+
}),
|
|
11840
|
+
__metadata("design:type", Object)
|
|
11841
|
+
], TreeControlComponent.prototype, "outputType", void 0);
|
|
11793
11842
|
__decorate([
|
|
11794
11843
|
Property('选择完全受控', {
|
|
11795
11844
|
type: 'boolean',
|
|
@@ -11835,7 +11884,7 @@ __decorate([
|
|
|
11835
11884
|
type: 'string',
|
|
11836
11885
|
ui: {
|
|
11837
11886
|
widget: 'myUpload',
|
|
11838
|
-
}
|
|
11887
|
+
},
|
|
11839
11888
|
}),
|
|
11840
11889
|
__metadata("design:type", Object)
|
|
11841
11890
|
], TreeControlComponent.prototype, "nodeDefaultIcon", void 0);
|
|
@@ -11844,7 +11893,7 @@ __decorate([
|
|
|
11844
11893
|
type: 'string',
|
|
11845
11894
|
ui: {
|
|
11846
11895
|
widget: 'myUpload',
|
|
11847
|
-
}
|
|
11896
|
+
},
|
|
11848
11897
|
}),
|
|
11849
11898
|
__metadata("design:type", Object)
|
|
11850
11899
|
], TreeControlComponent.prototype, "nodeBackground", void 0);
|
|
@@ -11861,7 +11910,7 @@ __decorate([
|
|
|
11861
11910
|
type: 'string',
|
|
11862
11911
|
ui: {
|
|
11863
11912
|
widget: 'myUpload',
|
|
11864
|
-
}
|
|
11913
|
+
},
|
|
11865
11914
|
}),
|
|
11866
11915
|
__metadata("design:type", Object)
|
|
11867
11916
|
], TreeControlComponent.prototype, "nodeCheckedBackground", void 0);
|
|
@@ -11877,8 +11926,8 @@ __decorate([
|
|
|
11877
11926
|
Property('搜索框颜色', {
|
|
11878
11927
|
ui: {
|
|
11879
11928
|
widget: 'myColor',
|
|
11880
|
-
visibleIf: { showSearch: [true] }
|
|
11881
|
-
}
|
|
11929
|
+
visibleIf: { showSearch: [true] },
|
|
11930
|
+
},
|
|
11882
11931
|
}),
|
|
11883
11932
|
__metadata("design:type", Object)
|
|
11884
11933
|
], TreeControlComponent.prototype, "searchBorderColor", void 0);
|
|
@@ -11886,8 +11935,8 @@ __decorate([
|
|
|
11886
11935
|
Property('搜索框背景色', {
|
|
11887
11936
|
ui: {
|
|
11888
11937
|
widget: 'myColor',
|
|
11889
|
-
visibleIf: { showSearch: [true] }
|
|
11890
|
-
}
|
|
11938
|
+
visibleIf: { showSearch: [true] },
|
|
11939
|
+
},
|
|
11891
11940
|
}),
|
|
11892
11941
|
__metadata("design:type", Object)
|
|
11893
11942
|
], TreeControlComponent.prototype, "searchBackgroundColor", void 0);
|
|
@@ -11895,8 +11944,8 @@ __decorate([
|
|
|
11895
11944
|
Property('搜索框提示语', {
|
|
11896
11945
|
type: 'string',
|
|
11897
11946
|
ui: {
|
|
11898
|
-
visibleIf: { showSearch: [true] }
|
|
11899
|
-
}
|
|
11947
|
+
visibleIf: { showSearch: [true] },
|
|
11948
|
+
},
|
|
11900
11949
|
}),
|
|
11901
11950
|
__metadata("design:type", Object)
|
|
11902
11951
|
], TreeControlComponent.prototype, "searchPlaceholder", void 0);
|
|
@@ -11904,7 +11953,7 @@ __decorate([
|
|
|
11904
11953
|
Property('滚动条颜色', {
|
|
11905
11954
|
ui: {
|
|
11906
11955
|
widget: 'myColor',
|
|
11907
|
-
}
|
|
11956
|
+
},
|
|
11908
11957
|
}),
|
|
11909
11958
|
__metadata("design:type", Object)
|
|
11910
11959
|
], TreeControlComponent.prototype, "treeScrollbarThumbBackground", void 0);
|
|
@@ -11915,11 +11964,15 @@ __decorate([
|
|
|
11915
11964
|
key: { type: 'string', title: 'id' },
|
|
11916
11965
|
parentKey: { type: 'string', title: '父级id' },
|
|
11917
11966
|
icon: { type: 'string', title: '图标' },
|
|
11918
|
-
count: { type: 'string', title: '数量' }
|
|
11967
|
+
count: { type: 'string', title: '数量' },
|
|
11919
11968
|
},
|
|
11920
11969
|
}),
|
|
11921
11970
|
__metadata("design:type", Object)
|
|
11922
11971
|
], TreeControlComponent.prototype, "data", void 0);
|
|
11972
|
+
__decorate([
|
|
11973
|
+
DataInput('选中值'),
|
|
11974
|
+
__metadata("design:type", Object)
|
|
11975
|
+
], TreeControlComponent.prototype, "value", void 0);
|
|
11923
11976
|
__decorate([
|
|
11924
11977
|
DataOutput('选中id'),
|
|
11925
11978
|
Event('选中值改变', { params: 'id' }),
|
|
@@ -11936,7 +11989,7 @@ __decorate([
|
|
|
11936
11989
|
Method('选中'),
|
|
11937
11990
|
__param(0, Param('id')),
|
|
11938
11991
|
__metadata("design:type", Function),
|
|
11939
|
-
__metadata("design:paramtypes", [
|
|
11992
|
+
__metadata("design:paramtypes", [Object]),
|
|
11940
11993
|
__metadata("design:returntype", void 0)
|
|
11941
11994
|
], TreeControlComponent.prototype, "select", null);
|
|
11942
11995
|
__decorate([
|