bbj-screen-widget 2.4.66 → 2.4.68
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.d.ts +38 -33
- package/bbj-screen-widget.metadata.json +1 -1
- package/bundles/bbj-screen-widget-core.umd.js +148 -5
- package/bundles/bbj-screen-widget-core.umd.js.map +1 -1
- package/bundles/bbj-screen-widget-core.umd.min.js +1 -1
- package/bundles/bbj-screen-widget-core.umd.min.js.map +1 -1
- package/bundles/bbj-screen-widget.umd.js +1886 -401
- 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/core/bbj-screen-widget-core.metadata.json +1 -1
- package/core/public_api.d.ts +2 -0
- package/core/util/map.util.d.ts +23 -0
- package/core/util/scale.util.d.ts +4 -0
- package/esm2015/bbj-screen-widget.js +39 -34
- package/esm2015/core/public_api.js +3 -1
- package/esm2015/core/service/baidu-map.service.js +2 -2
- package/esm2015/core/util/map.util.js +104 -0
- package/esm2015/core/util/scale.util.js +33 -0
- package/esm2015/lib/custom-baidu-map/baidu-fence/baidu-fence.component.js +168 -88
- package/esm2015/lib/custom-baidu-map/baidu-lushu/baidu-lushu.component.js +222 -0
- package/esm2015/lib/custom-baidu-map/custom-baidu-map.component.js +5 -42
- package/esm2015/lib/custom-baidu-map/custom-baidu-map.module.js +6 -1
- package/esm2015/lib/screen-widget.module.js +7 -1
- package/esm2015/lib/tianditu/base-layer.js +80 -0
- package/esm2015/lib/tianditu/tianditu-marker/tianditu-marker.component.js +666 -0
- package/esm2015/lib/tianditu/tianditu.component.js +399 -0
- package/esm2015/lib/tianditu/tianditu.module.js +21 -0
- package/fesm2015/bbj-screen-widget-core.js +139 -2
- package/fesm2015/bbj-screen-widget-core.js.map +1 -1
- package/fesm2015/bbj-screen-widget.js +1581 -176
- package/fesm2015/bbj-screen-widget.js.map +1 -1
- package/lib/custom-baidu-map/baidu-fence/baidu-fence.component.d.ts +20 -2
- package/lib/custom-baidu-map/baidu-lushu/baidu-lushu.component.d.ts +31 -0
- package/lib/custom-baidu-map/custom-baidu-map.component.d.ts +1 -1
- package/lib/tianditu/base-layer.d.ts +20 -0
- package/lib/tianditu/tianditu-marker/tianditu-marker.component.d.ts +63 -0
- package/lib/tianditu/tianditu.component.d.ts +53 -0
- package/lib/tianditu/tianditu.module.d.ts +4 -0
- package/package.json +1 -1
- package/src/assets/img/screen/car.png +0 -0
- package/src/assets/js/BMapGL/Lushu.js +815 -0
- package/src/assets/js/BMapGL/Lushu.min.js +1 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { __awaiter, __decorate, __metadata } from "tslib";
|
|
2
|
+
import { Component, NgZone } from '@angular/core';
|
|
3
|
+
import { LazyService } from '@delon/util';
|
|
4
|
+
import { Data, Method, Property, Widget } from 'bbj-widget-base';
|
|
5
|
+
import { CustomBaiduMapComponent } from '../custom-baidu-map.component';
|
|
6
|
+
let BaiduLushuComponent = class BaiduLushuComponent {
|
|
7
|
+
constructor(parent, lazy, zone) {
|
|
8
|
+
this.parent = parent;
|
|
9
|
+
this.lazy = lazy;
|
|
10
|
+
this.zone = zone;
|
|
11
|
+
this.speed = 500;
|
|
12
|
+
this.iconWidth = 32;
|
|
13
|
+
this.iconHeight = 32;
|
|
14
|
+
this.showPolyline = true;
|
|
15
|
+
this.polylineColor = '#111';
|
|
16
|
+
this.autoStart = true;
|
|
17
|
+
// @Property('自动视野调整', { type: 'boolean' })
|
|
18
|
+
// autoView = true;
|
|
19
|
+
this.enableRotation = true;
|
|
20
|
+
this.defaultContent = '行驶中';
|
|
21
|
+
this.data = [
|
|
22
|
+
{
|
|
23
|
+
lng: '120.7',
|
|
24
|
+
lat: '28',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
lng: '120.71',
|
|
28
|
+
lat: '28.01',
|
|
29
|
+
landmark: '加油站',
|
|
30
|
+
pauseTime: 2,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
lng: '120.79',
|
|
34
|
+
lat: '28.1',
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
this.lushu = null;
|
|
38
|
+
this.inited = false;
|
|
39
|
+
}
|
|
40
|
+
ngOnInit() {
|
|
41
|
+
this.zone.runOutsideAngular(() => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
yield this.parent.init$;
|
|
43
|
+
yield this.lazy.loadScript('/assets/js/BMapGL/Lushu.js');
|
|
44
|
+
this.inited = true;
|
|
45
|
+
this.update();
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
ngOnChanges(changes) {
|
|
49
|
+
if (this.inited) {
|
|
50
|
+
this.zone.runOutsideAngular(() => {
|
|
51
|
+
this.update();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ngOnDestroy() {
|
|
56
|
+
this.clear();
|
|
57
|
+
}
|
|
58
|
+
update() {
|
|
59
|
+
var _a;
|
|
60
|
+
this.clear();
|
|
61
|
+
if (!((_a = this.data) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const landmarkPois = [];
|
|
65
|
+
const arrPois = this.data.map((item) => {
|
|
66
|
+
if (item.landmark || item.pauseTime) {
|
|
67
|
+
landmarkPois.push({
|
|
68
|
+
lng: Number(item.lng),
|
|
69
|
+
lat: Number(item.lat),
|
|
70
|
+
html: item.landmark,
|
|
71
|
+
pauseTime: item.pauseTime ? Number(item.pauseTime) : 0,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return new BMapGL.Point(item.lng, item.lat);
|
|
75
|
+
});
|
|
76
|
+
if (this.showPolyline) {
|
|
77
|
+
this.polyline = new BMapGL.Polyline(arrPois, { strokeColor: this.polylineColor });
|
|
78
|
+
this.parent.map.addOverlay(this.polyline);
|
|
79
|
+
}
|
|
80
|
+
this.lushu = new BMapGLLib.LuShu(this.parent.map, arrPois, {
|
|
81
|
+
defaultContent: this.defaultContent || '',
|
|
82
|
+
autoView: false,
|
|
83
|
+
icon: new BMapGL.Icon(this.icon || '/assets/img/screen/car.png', new BMapGL.Size(this.iconWidth, this.iconHeight), {
|
|
84
|
+
anchor: new BMapGL.Size(10, 10),
|
|
85
|
+
}),
|
|
86
|
+
speed: this.speed,
|
|
87
|
+
enableRotation: this.enableRotation,
|
|
88
|
+
// defaultContent不为空时才会显示
|
|
89
|
+
landmarkPois: landmarkPois,
|
|
90
|
+
});
|
|
91
|
+
if (this.autoStart) {
|
|
92
|
+
this.start();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
start() {
|
|
96
|
+
if (this.lushu) {
|
|
97
|
+
this.parent.map.setViewport(this.lushu.path);
|
|
98
|
+
this.lushu.start();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
stop() {
|
|
102
|
+
if (this.lushu) {
|
|
103
|
+
this.lushu.stop();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
pause() {
|
|
107
|
+
if (this.lushu) {
|
|
108
|
+
this.lushu.pause();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
clear() {
|
|
112
|
+
if (this.lushu) {
|
|
113
|
+
this.lushu.clear();
|
|
114
|
+
this.lushu = null;
|
|
115
|
+
}
|
|
116
|
+
if (this.polyline) {
|
|
117
|
+
this.parent.map.removeOverlay(this.polyline);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
setSpeed(speed) {
|
|
121
|
+
if (speed) {
|
|
122
|
+
this.speed = speed;
|
|
123
|
+
this.update();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
BaiduLushuComponent.decorators = [
|
|
128
|
+
{ type: Component, args: [{
|
|
129
|
+
selector: 'sc-baidu-lushu',
|
|
130
|
+
template: "",
|
|
131
|
+
styles: [""]
|
|
132
|
+
},] }
|
|
133
|
+
];
|
|
134
|
+
BaiduLushuComponent.ctorParameters = () => [
|
|
135
|
+
{ type: CustomBaiduMapComponent },
|
|
136
|
+
{ type: LazyService },
|
|
137
|
+
{ type: NgZone }
|
|
138
|
+
];
|
|
139
|
+
__decorate([
|
|
140
|
+
Property('速度', { type: 'number' }),
|
|
141
|
+
__metadata("design:type", Object)
|
|
142
|
+
], BaiduLushuComponent.prototype, "speed", void 0);
|
|
143
|
+
__decorate([
|
|
144
|
+
Property('图标', { type: 'string', ui: { widget: 'myPicture' } }),
|
|
145
|
+
__metadata("design:type", String)
|
|
146
|
+
], BaiduLushuComponent.prototype, "icon", void 0);
|
|
147
|
+
__decorate([
|
|
148
|
+
Property('图标宽度', { type: 'number' }),
|
|
149
|
+
__metadata("design:type", Number)
|
|
150
|
+
], BaiduLushuComponent.prototype, "iconWidth", void 0);
|
|
151
|
+
__decorate([
|
|
152
|
+
Property('图标高度', { type: 'number' }),
|
|
153
|
+
__metadata("design:type", Number)
|
|
154
|
+
], BaiduLushuComponent.prototype, "iconHeight", void 0);
|
|
155
|
+
__decorate([
|
|
156
|
+
Property('显示轨迹', { type: 'boolean' }),
|
|
157
|
+
__metadata("design:type", Object)
|
|
158
|
+
], BaiduLushuComponent.prototype, "showPolyline", void 0);
|
|
159
|
+
__decorate([
|
|
160
|
+
Property('轨迹颜色', { type: 'string', ui: { widget: 'myColor', visibleIf: { showPolyline: [true] } } }),
|
|
161
|
+
__metadata("design:type", String)
|
|
162
|
+
], BaiduLushuComponent.prototype, "polylineColor", void 0);
|
|
163
|
+
__decorate([
|
|
164
|
+
Property('自动播放', { type: 'boolean' }),
|
|
165
|
+
__metadata("design:type", Object)
|
|
166
|
+
], BaiduLushuComponent.prototype, "autoStart", void 0);
|
|
167
|
+
__decorate([
|
|
168
|
+
Property('自动转向', { type: 'boolean' }),
|
|
169
|
+
__metadata("design:type", Object)
|
|
170
|
+
], BaiduLushuComponent.prototype, "enableRotation", void 0);
|
|
171
|
+
__decorate([
|
|
172
|
+
Property('默认内容', { type: 'string' }),
|
|
173
|
+
__metadata("design:type", Object)
|
|
174
|
+
], BaiduLushuComponent.prototype, "defaultContent", void 0);
|
|
175
|
+
__decorate([
|
|
176
|
+
Data({
|
|
177
|
+
properties: {
|
|
178
|
+
lng: { type: 'number', title: '经度' },
|
|
179
|
+
lat: { type: 'number', title: '纬度' },
|
|
180
|
+
landmark: { type: 'string', title: '标记点' },
|
|
181
|
+
pauseTime: { type: 'number', title: '暂停时间' },
|
|
182
|
+
},
|
|
183
|
+
}),
|
|
184
|
+
__metadata("design:type", Array)
|
|
185
|
+
], BaiduLushuComponent.prototype, "data", void 0);
|
|
186
|
+
__decorate([
|
|
187
|
+
Method('播放'),
|
|
188
|
+
__metadata("design:type", Function),
|
|
189
|
+
__metadata("design:paramtypes", []),
|
|
190
|
+
__metadata("design:returntype", void 0)
|
|
191
|
+
], BaiduLushuComponent.prototype, "start", null);
|
|
192
|
+
__decorate([
|
|
193
|
+
Method('停止'),
|
|
194
|
+
__metadata("design:type", Function),
|
|
195
|
+
__metadata("design:paramtypes", []),
|
|
196
|
+
__metadata("design:returntype", void 0)
|
|
197
|
+
], BaiduLushuComponent.prototype, "stop", null);
|
|
198
|
+
__decorate([
|
|
199
|
+
Method('暂停'),
|
|
200
|
+
__metadata("design:type", Function),
|
|
201
|
+
__metadata("design:paramtypes", []),
|
|
202
|
+
__metadata("design:returntype", void 0)
|
|
203
|
+
], BaiduLushuComponent.prototype, "pause", null);
|
|
204
|
+
__decorate([
|
|
205
|
+
Method('设置速度'),
|
|
206
|
+
__metadata("design:type", Function),
|
|
207
|
+
__metadata("design:paramtypes", [Number]),
|
|
208
|
+
__metadata("design:returntype", void 0)
|
|
209
|
+
], BaiduLushuComponent.prototype, "setSpeed", null);
|
|
210
|
+
BaiduLushuComponent = __decorate([
|
|
211
|
+
Widget('轨迹', {
|
|
212
|
+
group: 'component',
|
|
213
|
+
image: '',
|
|
214
|
+
icon: '',
|
|
215
|
+
hidden: true,
|
|
216
|
+
}),
|
|
217
|
+
__metadata("design:paramtypes", [CustomBaiduMapComponent,
|
|
218
|
+
LazyService,
|
|
219
|
+
NgZone])
|
|
220
|
+
], BaiduLushuComponent);
|
|
221
|
+
export { BaiduLushuComponent };
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFpZHUtbHVzaHUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWVuLXdpZGdldC9zcmMvbGliL2N1c3RvbS1iYWlkdS1tYXAvYmFpZHUtbHVzaHUvYmFpZHUtbHVzaHUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFnQixNQUFNLGlCQUFpQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0lBZ0IzRCxtQkFBbUIsU0FBbkIsbUJBQW1CO0lBZ0Q5QixZQUNVLE1BQStCLEVBQy9CLElBQWlCLEVBQ2pCLElBQVk7UUFGWixXQUFNLEdBQU4sTUFBTSxDQUF5QjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQVE7UUFqRHRCLFVBQUssR0FBRyxHQUFHLENBQUM7UUFJWixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBRXZCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFFeEIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEIsa0JBQWEsR0FBVyxNQUFNLENBQUM7UUFFL0IsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQiwyQ0FBMkM7UUFDM0MsbUJBQW1CO1FBRW5CLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBRXRCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBU3ZCLFNBQUksR0FBVTtZQUNaO2dCQUNFLEdBQUcsRUFBRSxPQUFPO2dCQUNaLEdBQUcsRUFBRSxJQUFJO2FBQ1Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsUUFBUTtnQkFDYixH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QU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7MkRBQ2Q7QUFTdkI7SUFSQyxJQUFJLENBQUM7UUFDSixVQUFVLEVBQUU7WUFDVixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDcEMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3BDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUMxQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7U0FDN0M7S0FDRixDQUFDOztpREFnQkE7QUF3RUY7SUFEQyxNQUFNLENBQUMsSUFBSSxDQUFDOzs7O2dEQU1aO0FBR0Q7SUFEQyxNQUFNLENBQUMsSUFBSSxDQUFDOzs7OytDQUtaO0FBRUQ7SUFEQyxNQUFNLENBQUMsSUFBSSxDQUFDOzs7O2dEQUtaO0FBYUQ7SUFEQyxNQUFNLENBQUMsTUFBTSxDQUFDOzs7O21EQU1kO0FBeEpVLG1CQUFtQjtJQU4vQixNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ1osS0FBSyxFQUFFLFdBQVc7UUFDbEIsS0FBSyxFQUFFLEVBQUU7UUFDVCxJQUFJLEVBQUUsRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJO0tBQ2IsQ0FBQztxQ0FrRGtCLHVCQUF1QjtRQUN6QixXQUFXO1FBQ1gsTUFBTTtHQW5EWCxtQkFBbUIsQ0F5Si9CO1NBekpZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYXp5U2VydmljZSB9IGZyb20gJ0BkZWxvbi91dGlsJztcbmltcG9ydCB7IERhdGEsIE1ldGhvZCwgUHJvcGVydHksIFdpZGdldCwgRXZlbnQsIFBhcmFtIH0gZnJvbSAnYmJqLXdpZGdldC1iYXNlJztcbmltcG9ydCB7IEN1c3RvbUJhaWR1TWFwQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9tLWJhaWR1LW1hcC5jb21wb25lbnQnO1xuZGVjbGFyZSBjb25zdCBCTWFwR0w7XG5kZWNsYXJlIGNvbnN0IEJNYXBHTExpYjtcbmRlY2xhcmUgY29uc3QgQk1BUF9TVEFUVVNfU1VDQ0VTUztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtYmFpZHUtbHVzaHUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFpZHUtbHVzaHUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYWlkdS1sdXNodS5jb21wb25lbnQubGVzcyddLFxufSlcbkBXaWRnZXQoJ+i9qOi/uScsIHtcbiAgZ3JvdXA6ICdjb21wb25lbnQnLFxuICBpbWFnZTogJycsXG4gIGljb246ICcnLFxuICBoaWRkZW46IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJhaWR1THVzaHVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQFByb3BlcnR5KCfpgJ/luqYnLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gIHNwZWVkID0gNTAwO1xuICBAUHJvcGVydHkoJ+WbvuaghycsIHsgdHlwZTogJ3N0cmluZycsIHVpOiB7IHdpZGdldDogJ215UGljdHVyZScgfSB9KVxuICBpY29uOiBzdHJpbmc7XG4gIEBQcm9wZXJ0eSgn5Zu+5qCH5a695bqmJywgeyB0eXBlOiAnbnVtYmVyJyB9KVxuICBpY29uV2lkdGg6IG51bWJlciA9IDMyO1xuICBAUHJvcGVydHkoJ+Wbvuagh+mrmOW6picsIHsgdHlwZTogJ251bWJlcicgfSlcbiAgaWNvbkhlaWdodDogbnVtYmVyID0gMzI7XG4gIEBQcm9wZXJ0eSgn5pi+56S66L2o6L+5JywgeyB0eXBlOiAnYm9vbGVhbicgfSlcbiAgc2hvd1BvbHlsaW5lID0gdHJ1ZTtcbiAgQFByb3BlcnR5KCfovajov7npopzoibInLCB7IHR5cGU6ICdzdHJpbmcnLCB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJywgdmlzaWJsZUlmOiB7IHNob3dQb2x5bGluZTogW3RydWVdIH0gfSB9KVxuICBwb2x5bGluZUNvbG9yOiBzdHJpbmcgPSAnIzExMSc7XG4gIEBQcm9wZXJ0eSgn6Ieq5Yqo5pKt5pS+JywgeyB0eXBlOiAnYm9vbGVhbicgfSlcbiAgYXV0b1N0YXJ0ID0gdHJ1ZTtcbiAgLy8gQFByb3BlcnR5KCfoh6rliqjop4bph47osIPmlbQnLCB7IHR5cGU6ICdib29sZWFuJyB9KVxuICAvLyBhdXRvVmlldyA9IHRydWU7XG4gIEBQcm9wZXJ0eSgn6Ieq5Yqo6L2s5ZCRJywgeyB0eXBlOiAnYm9vbGVhbicgfSlcbiAgZW5hYmxlUm90YXRpb24gPSB0cnVlO1xuICBAUHJvcGVydHkoJ+m7mOiupOWGheWuuScsIHsgdHlwZTogJ3N0cmluZycgfSlcbiAgZGVmYXVsdENvbnRlbnQgPSAn6KGM6am25LitJztcbiAgQERhdGEoe1xuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIGxuZzogeyB0eXBlOiAnbnVtYmVyJywgdGl0bGU6ICfnu4/luqYnIH0sXG4gICAgICBsYXQ6IHsgdHlwZTogJ251bWJlcicsIHRpdGxlOiAn57qs5bqmJyB9LFxuICAgICAgbGFuZG1hcms6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAn5qCH6K6w54K5JyB9LFxuICAgICAgcGF1c2VUaW1lOiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+aaguWBnOaXtumXtCcgfSxcbiAgICB9LFxuICB9KVxuICBkYXRhOiBhbnlbXSA9IFtcbiAgICB7XG4gICAgICBsbmc6ICcxMjAuNycsXG4gICAgICBsYXQ6ICcyOCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsbmc6ICcxMjAuNzEnLFxuICAgICAgbGF0OiAnMjguMDEnLFxuICAgICAgbGFuZG1hcms6ICfliqDmsrnnq5knLFxuICAgICAgcGF1c2VUaW1lOiAyLFxuICAgIH0sXG4gICAge1xuICAgICAgbG5nOiAnMTIwLjc5JyxcbiAgICAgIGxhdDogJzI4LjEnLFxuICAgIH0sXG4gIF07XG4gIGx1c2h1OiBhbnkgPSBudWxsO1xuICBpbml0ZWQgPSBmYWxzZTtcbiAgcG9seWxpbmU6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwYXJlbnQ6IEN1c3RvbUJhaWR1TWFwQ29tcG9uZW50LFxuICAgIHByaXZhdGUgbGF6eTogTGF6eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5wYXJlbnQuaW5pdCQ7XG4gICAgICBhd2FpdCB0aGlzLmxhenkubG9hZFNjcmlwdCgnL2Fzc2V0cy9qcy9CTWFwR0wvTHVzaHUuanMnKTtcbiAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMuaW5pdGVkKSB7XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgfVxuICB1cGRhdGUoKSB7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIGlmICghdGhpcy5kYXRhPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbGFuZG1hcmtQb2lzID0gW107XG4gICAgY29uc3QgYXJyUG9pcyA9IHRoaXMuZGF0YS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLmxhbmRtYXJrIHx8IGl0ZW0ucGF1c2VUaW1lKSB7XG4gICAgICAgIGxhbmRtYXJrUG9pcy5wdXNoKHtcbiAgICAgICAgICBsbmc6IE51bWJlcihpdGVtLmxuZyksXG4gICAgICAgICAgbGF0OiBOdW1iZXIoaXRlbS5sYXQpLFxuICAgICAgICAgIGh0bWw6IGl0ZW0ubGFuZG1hcmssXG4gICAgICAgICAgcGF1c2VUaW1lOiBpdGVtLnBhdXNlVGltZSA/IE51bWJlcihpdGVtLnBhdXNlVGltZSkgOiAwLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgQk1hcEdMLlBvaW50KGl0ZW0ubG5nLCBpdGVtLmxhdCk7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuc2hvd1BvbHlsaW5lKSB7XG4gICAgICB0aGlzLnBvbHlsaW5lID0gbmV3IEJNYXBHTC5Qb2x5bGluZShhcnJQb2lzLCB7IHN0cm9rZUNvbG9yOiB0aGlzLnBvbHlsaW5lQ29sb3IgfSk7XG4gICAgICB0aGlzLnBhcmVudC5tYXAuYWRkT3ZlcmxheSh0aGlzLnBvbHlsaW5lKTtcbiAgICB9XG5cbiAgICB0aGlzLmx1c2h1ID0gbmV3IEJNYXBHTExpYi5MdVNodSh0aGlzLnBhcmVudC5tYXAsIGFyclBvaXMsIHtcbiAgICAgIGRlZmF1bHRDb250ZW50OiB0aGlzLmRlZmF1bHRDb250ZW50IHx8ICcnLFxuICAgICAgYXV0b1ZpZXc6IGZhbHNlLFxuICAgICAgaWNvbjogbmV3IEJNYXBHTC5JY29uKFxuICAgICAgICB0aGlzLmljb24gfHwgJy9hc3NldHMvaW1nL3NjcmVlbi9jYXIucG5nJyxcbiAgICAgICAgbmV3IEJNYXBHTC5TaXplKHRoaXMuaWNvbldpZHRoLCB0aGlzLmljb25IZWlnaHQpLFxuICAgICAgICB7XG4gICAgICAgICAgYW5jaG9yOiBuZXcgQk1hcEdMLlNpemUoMTAsIDEwKSxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgICBzcGVlZDogdGhpcy5zcGVlZCxcbiAgICAgIGVuYWJsZVJvdGF0aW9uOiB0aGlzLmVuYWJsZVJvdGF0aW9uLCAvLyDmmK/lkKborr7nva5tYXJrZXLpmo/nnYDpgZPot6/nmoTotbDlkJHov5vooYzml4vovaxcbiAgICAgIC8vIGRlZmF1bHRDb250ZW505LiN5Li656m65pe25omN5Lya5pi+56S6XG4gICAgICBsYW5kbWFya1BvaXM6IGxhbmRtYXJrUG9pcyxcbiAgICB9KTtcbiAgICBpZiAodGhpcy5hdXRvU3RhcnQpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBATWV0aG9kKCfmkq3mlL4nKVxuICBzdGFydCgpIHtcbiAgICBpZiAodGhpcy5sdXNodSkge1xuICAgICAgdGhpcy5wYXJlbnQubWFwLnNldFZpZXdwb3J0KHRoaXMubHVzaHUucGF0aCk7XG4gICAgICB0aGlzLmx1c2h1LnN0YXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgQE1ldGhvZCgn5YGc5q2iJylcbiAgc3RvcCgpIHtcbiAgICBpZiAodGhpcy5sdXNodSkge1xuICAgICAgdGhpcy5sdXNodS5zdG9wKCk7XG4gICAgfVxuICB9XG4gIEBNZXRob2QoJ+aaguWBnCcpXG4gIHBhdXNlKCkge1xuICAgIGlmICh0aGlzLmx1c2h1KSB7XG4gICAgICB0aGlzLmx1c2h1LnBhdXNlKCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgaWYgKHRoaXMubHVzaHUpIHtcbiAgICAgIHRoaXMubHVzaHUuY2xlYXIoKTtcbiAgICAgIHRoaXMubHVzaHUgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5wb2x5bGluZSkge1xuICAgICAgdGhpcy5wYXJlbnQubWFwLnJlbW92ZU92ZXJsYXkodGhpcy5wb2x5bGluZSk7XG4gICAgfVxuICB9XG5cbiAgQE1ldGhvZCgn6K6+572u6YCf5bqmJylcbiAgc2V0U3BlZWQoc3BlZWQ6IG51bWJlcikge1xuICAgIGlmIChzcGVlZCkge1xuICAgICAgdGhpcy5zcGVlZCA9IHNwZWVkO1xuICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2,10 +2,9 @@ import { __awaiter, __decorate, __metadata } from "tslib";
|
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
3
|
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, NgZone, Optional, ViewChild, } from '@angular/core';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
|
-
import { take, takeUntil } from 'rxjs/operators';
|
|
6
5
|
import { ScaleSubject, TemplateUtil, WidgetRef } from 'bbj-widget-base';
|
|
7
6
|
import { Data, DataOutput, Property, Widget, Event } from 'bbj-widget-base';
|
|
8
|
-
import { BaiduMapService } from 'bbj-screen-widget/core';
|
|
7
|
+
import { BaiduMapService, scaleAdapter } from 'bbj-screen-widget/core';
|
|
9
8
|
const MapTypeEnum = [
|
|
10
9
|
{ label: '普通', value: 'normal' },
|
|
11
10
|
{ label: '深色', value: 'dark' },
|
|
@@ -92,44 +91,7 @@ let CustomBaiduMapComponent = class CustomBaiduMapComponent {
|
|
|
92
91
|
return __awaiter(this, void 0, void 0, function* () {
|
|
93
92
|
if (this.scale$) {
|
|
94
93
|
// 这是为了解决地图缩放中心不在鼠标所在位置的问题
|
|
95
|
-
this.scale
|
|
96
|
-
const { x: sx, y: sy, scaleContent } = scale;
|
|
97
|
-
const style = this.element.style;
|
|
98
|
-
if (scaleContent === false) {
|
|
99
|
-
this.zone.onStable.pipe(take(1)).subscribe(() => {
|
|
100
|
-
const parent = this.element.parentNode;
|
|
101
|
-
if (parent) {
|
|
102
|
-
const match = /translate\(([-\d.]+)px, ([-\d.]+)px\)/.exec(parent.style.transform);
|
|
103
|
-
if (match) {
|
|
104
|
-
const offsetX = parseFloat(match[1]);
|
|
105
|
-
const offsetY = parseFloat(match[2]);
|
|
106
|
-
style.transform = `translate(${-offsetX}px,${-offsetY}px)`;
|
|
107
|
-
style.height = parent.clientHeight + offsetY + 'px';
|
|
108
|
-
style.width = parent.clientWidth + offsetX + 'px';
|
|
109
|
-
style.padding = `${offsetY}px 0 0 ${offsetX}px`;
|
|
110
|
-
// this.containerStyle = {
|
|
111
|
-
// transformOrigin: `0 0`,
|
|
112
|
-
// transform: `translate(${-offsetX}px,${-offsetY}px)`,
|
|
113
|
-
// height: parent.clientHeight + offsetY + 'px',
|
|
114
|
-
// width: parent.clientWidth + offsetX + 'px',
|
|
115
|
-
// padding: `${offsetY}px 0 0 ${offsetX}px`,
|
|
116
|
-
// };
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
// this.cd.markForCheck();
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
const { position, size } = this.widgetRef.widget;
|
|
124
|
-
const { x, y } = position;
|
|
125
|
-
const { width, height } = size;
|
|
126
|
-
style.transform = `translate(${-x}px,${-y}px) scale(${1 / sx},${1 / sy})`;
|
|
127
|
-
style.height = (y + height) * sy + 'px';
|
|
128
|
-
style.width = (x + width) * sx + 'px';
|
|
129
|
-
style.padding = `${y * sy}px 0 0 ${x * sx}px`;
|
|
130
|
-
}
|
|
131
|
-
// this.cd.markForCheck();
|
|
132
|
-
});
|
|
94
|
+
scaleAdapter(this.scale$, this.destroy$, this.zone, this.elementRef.nativeElement, this.widgetRef);
|
|
133
95
|
}
|
|
134
96
|
yield this.initMap();
|
|
135
97
|
});
|
|
@@ -474,7 +436,7 @@ CustomBaiduMapComponent.decorators = [
|
|
|
474
436
|
{ type: Component, args: [{
|
|
475
437
|
selector: 'sc-custom-baidu-map',
|
|
476
438
|
template: "<ng-template *ngFor=\"let child of children\" widget-host [widget]=\"child\"></ng-template>\n\n<!-- {{children|json}} -->\n<!-- <div class=\"map-container\" [ngStyle]=\"containerStyle\"> -->\n<div #container class=\"map\"></div>\n<nz-radio-group\n *ngIf=\"showMapTypeRadio\"\n class=\"map-type-radio\"\n [(ngModel)]=\"mapTypeValue\"\n (ngModelChange)=\"mapTypeChange($event)\"\n nzButtonStyle=\"solid\"\n>\n <label *ngFor=\"let item of mapTypeEnum\" nz-radio-button [nzValue]=\"item.value\">{{ item.label }}</label>\n</nz-radio-group>\n<!-- </div> -->\n",
|
|
477
|
-
styles: [":host{display:block;height:100%;width:100%;overflow:hidden;transform-origin:0 0;z-index:0;pointer-events:none}:host>*{pointer-events:auto}.map{height:100%;width:100%}:host::ng-deep .BMap_bubble_pop{background-color:var(--info-window-background,#fff)!important;border-color:var(--info-window-border-color,#ddd)!important}:host::ng-deep .BMap_bubble_content{color:var(--info-window-color,\"#555555\")!important}:host::ng-deep .BMap_pop div{background-color:var(--info-window-background,#fff)!important}:host::ng-deep .BMap_pop>div:nth-child(8){background-color:transparent!important}:host.hideInfoWindowTail::ng-deep .BMap_bubble_pop>img,:host.hideInfoWindowTail::ng-deep .BMap_pop>div:nth-child(8),:host::ng-deep .BMap_noprint.anchorTR,:host::ng-deep img[src$=\"/image/api/iws3.png\"]{display:none}:host.hideInfoWindowTop::ng-deep .BMap_bubble_pop{transform:translateY(31px)}:host.hideInfoWindowTop::ng-deep .BMap_bubble_pop>img{transform:translateY(-31px)}:host.hideInfoWindowTop::ng-deep .BMap_bubble_top,:host::ng-deep .anchorBL{display:none}.map-type-radio{position:absolute;bottom:20px;right:20px;z-index:10}"]
|
|
439
|
+
styles: [":host{display:block;height:100%;width:100%;overflow:hidden;transform-origin:0 0;z-index:0;pointer-events:none;position:relative}:host>*{pointer-events:auto}.map{height:100%;width:100%}:host::ng-deep .BMap_bubble_pop{background-color:var(--info-window-background,#fff)!important;border-color:var(--info-window-border-color,#ddd)!important}:host::ng-deep .BMap_bubble_content{color:var(--info-window-color,\"#555555\")!important}:host::ng-deep .BMap_pop div{background-color:var(--info-window-background,#fff)!important}:host::ng-deep .BMap_pop>div:nth-child(8){background-color:transparent!important}:host.hideInfoWindowTail::ng-deep .BMap_bubble_pop>img,:host.hideInfoWindowTail::ng-deep .BMap_pop>div:nth-child(8),:host::ng-deep .BMap_noprint.anchorTR,:host::ng-deep img[src$=\"/image/api/iws3.png\"]{display:none}:host.hideInfoWindowTop::ng-deep .BMap_bubble_pop{transform:translateY(31px)}:host.hideInfoWindowTop::ng-deep .BMap_bubble_pop>img{transform:translateY(-31px)}:host.hideInfoWindowTop::ng-deep .BMap_bubble_top,:host::ng-deep .anchorBL{display:none}.map-type-radio{position:absolute;bottom:20px;right:20px;z-index:10}"]
|
|
478
440
|
},] }
|
|
479
441
|
];
|
|
480
442
|
CustomBaiduMapComponent.ctorParameters = () => [
|
|
@@ -667,6 +629,7 @@ CustomBaiduMapComponent = __decorate([
|
|
|
667
629
|
'sc-wind-layer',
|
|
668
630
|
'sc-typhoon-area-layer',
|
|
669
631
|
'sc-baidu-fence',
|
|
632
|
+
'sc-baidu-lushu',
|
|
670
633
|
],
|
|
671
634
|
description: 'hasChildItem',
|
|
672
635
|
}),
|
|
@@ -679,4 +642,4 @@ CustomBaiduMapComponent = __decorate([
|
|
|
679
642
|
WidgetRef])
|
|
680
643
|
], CustomBaiduMapComponent);
|
|
681
644
|
export { CustomBaiduMapComponent };
|
|
682
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWJhaWR1LW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY3JlZW4td2lkZ2V0L3NyYy9saWIvY3VzdG9tLWJhaWR1LW1hcC9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBRVosV0FBVyxFQUdYLE1BQU0sRUFJTixRQUFRLEVBRVIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVd6RCxNQUFNLFdBQVcsR0FBRztJQUNsQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUNoQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUM5QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtJQUNuQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtDQUNsQyxDQUFDO0lBMkJXLHVCQUF1QixTQUF2Qix1QkFBdUI7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OzsyREFDbUM7QUFJckM7SUFIQyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ2IsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtLQUN2RyxDQUFDOzt5REFDaUM7QUF6SnhCLHVCQUF1QjtJQXJCbkMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNkLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxvQ0FBb0M7UUFDM0MsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLElBQUk7Z0JBQ1osU0FBUyxFQUFFLElBQUk7YUFDaEI7U0FDRjtRQUNELFVBQVUsRUFBRTtZQUNWLHVCQUF1QjtZQUN2Qix5QkFBeUI7WUFDekIsZUFBZTtZQUNmLHVCQUF1QjtZQUN2QixnQkFBZ0I7U0FDakI7UUFDRCxXQUFXLEVBQUUsY0FBYztLQUNyQixDQUFDO3FDQXFMb0IsZUFBZTtRQUMxQixVQUFVO1FBQ0osVUFBVTtRQUNoQixNQUFNO1FBQ1EsWUFBWTtRQUM1QixpQkFBaUI7UUFDVixTQUFTO0dBMUxuQix1QkFBdUIsQ0FnbEJuQztTQWhsQlksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIE5nWm9uZSxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNjYWxlU3ViamVjdCwgVGVtcGxhdGVVdGlsLCBXaWRnZXRSZWYgfSBmcm9tICdiYmotd2lkZ2V0LWJhc2UnO1xyXG5pbXBvcnQgeyBEYXRhLCBEYXRhT3V0cHV0LCBQcm9wZXJ0eSwgV2lkZ2V0LCBFdmVudCB9IGZyb20gJ2Jiai13aWRnZXQtYmFzZSc7XHJcbmltcG9ydCB7IEJhaWR1TWFwU2VydmljZSB9IGZyb20gJ2Jiai1zY3JlZW4td2lkZ2V0L2NvcmUnO1xyXG5cclxuLy8gZGVjbGFyZSBjb25zdCBCTWFwO1xyXG5kZWNsYXJlIGNvbnN0IEJNYXBHTDogYW55O1xyXG4vLyBkZWNsYXJlIGNvbnN0IEJNYXBHTExpYjtcclxuLy8gZGVjbGFyZSBjb25zdCBCTWFwTGliO1xyXG4vLyBkZWNsYXJlIGNvbnN0IEJNQVBfQU5DSE9SX0JPVFRPTV9MRUZUOiBudW1iZXI7XHJcbmRlY2xhcmUgY29uc3QgQk1BUF9BTkNIT1JfVE9QX0xFRlQ6IG51bWJlcjtcclxuZGVjbGFyZSBjb25zdCBtYXB2Z2w6IGFueTtcclxuZGVjbGFyZSBjb25zdCBCTUFQX1NBVEVMTElURV9NQVA6IG51bWJlcjtcclxuZGVjbGFyZSBjb25zdCBCTUFQX05PUk1BTF9NQVA6IG51bWJlcjtcclxuY29uc3QgTWFwVHlwZUVudW0gPSBbXHJcbiAgeyBsYWJlbDogJ+aZrumAmicsIHZhbHVlOiAnbm9ybWFsJyB9LFxyXG4gIHsgbGFiZWw6ICfmt7HoibInLCB2YWx1ZTogJ2RhcmsnIH0sXHJcbiAgeyBsYWJlbDogJ+WNq+aYnycsIHZhbHVlOiAnc2F0ZWxsaXRlJyB9LFxyXG4gIHsgbGFiZWw6ICfoh6rlrprkuYknLCB2YWx1ZTogJ2N1c3RvbScgfSxcclxuXTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzYy1jdXN0b20tYmFpZHUtbWFwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWJhaWR1LW1hcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLWJhaWR1LW1hcC5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5AV2lkZ2V0KCfnmb7luqblnLDlm74nLCB7XHJcbiAgZ3JvdXA6ICdjb21wb25lbnQnLFxyXG4gIGltYWdlOiAnYXNzZXRzL2ltZy9zY3JlZW4vbXktYmFpZHUtbWFwLnBuZycsXHJcbiAgY2hpbGRyZW46IFtcclxuICAgIHtcclxuICAgICAgdGl0bGU6ICfmoIforrDlsYInLFxyXG4gICAgICB0eXBlOiAnc2MtYmFpZHUtbWFya2VyLWxheWVyJyxcclxuICAgICAgb3B0aW9uOiB7fSxcclxuICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICBoaWRlQ2hpbGQ6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgY2hpbGRUeXBlczogW1xyXG4gICAgJ3NjLWJhaWR1LW1hcmtlci1sYXllcicsXHJcbiAgICAnc2MtYmFpZHUtcG9seWxpbmUtbGF5ZXInLFxyXG4gICAgJ3NjLXdpbmQtbGF5ZXInLFxyXG4gICAgJ3NjLXR5cGhvb24tYXJlYS1sYXllcicsXHJcbiAgICAnc2MtYmFpZHUtZmVuY2UnLFxyXG4gIF0sXHJcbiAgZGVzY3JpcHRpb246ICdoYXNDaGlsZEl0ZW0nLFxyXG59IGFzIGFueSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbUJhaWR1TWFwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgLy8gQFByb3BlcnR5KCflrZfkvZMnLCB7IHVpOiB7IHdpZGdldDogJ215Rm9udCcgfSB9KVxyXG4gIC8vIGZvbnQ6IGFueSA9IHtcclxuICAvLyAgIGZhbWlseTogJycsXHJcbiAgLy8gICBjb2xvcjogJyMwMDAwMDAnLFxyXG4gIC8vICAgd2VpZ2h0OiAnbm9ybWFsJyxcclxuICAvLyAgIHNpemU6IDE2LFxyXG4gIC8vICAgc3BhY2U6IDAsXHJcbiAgLy8gICBsaW5lSGVpZ2h0OiAwLFxyXG4gIC8vIH07XHJcbiAgQFByb3BlcnR5KCflnLDlm77nsbvlnosnLCB7XHJcbiAgICBlbnVtOiBNYXBUeXBlRW51bSxcclxuICB9KVxyXG4gIG1hcFR5cGUgPSAnbm9ybWFsJztcclxuICBtYXBUeXBlVmFsdWU6IHN0cmluZztcclxuICBAUHJvcGVydHkoJ+S4iuS8oOagt+W8jycsIHsgdHlwZTogJ3N0cmluZycsIHVpOiB7IHdpZGdldDogJ215VXBsb2FkQXVkaW8nLCB2aXNpYmxlSWY6IHsgbWFwVHlwZTogWydjdXN0b20nXSB9IH0gfSlcclxuICB1cGxvYWRTdHlsZTogc3RyaW5nO1xyXG4gIEBQcm9wZXJ0eSgn5YiH5o2i5oyJ6ZKuJylcclxuICBzaG93TWFwVHlwZVJhZGlvOiBib29sZWFuO1xyXG4gIEBQcm9wZXJ0eSgn5YWo5pmv5Zyw5Zu+JywgeyB0eXBlOiAnYm9vbGVhbicgfSlcclxuICBtaW5NYXBTaG93ID0gZmFsc2U7XHJcbiAgQFByb3BlcnR5KCfmmL7npLrkv6Hmga8nLCB7XHJcbiAgICB1aTogeyB3aWRnZXQ6ICdzZWxlY3QnIH0sXHJcbiAgICBlbnVtOiBbXHJcbiAgICAgIHsgbGFiZWw6ICfngrnlh7snLCB2YWx1ZTogJ2NsaWNrJyB9LFxyXG4gICAgICB7IGxhYmVsOiAn5oKs5YGcJywgdmFsdWU6ICdtb3VzZW92ZXInIH0sXHJcbiAgICBdLFxyXG4gIH0pXHJcbiAgc2hvd1R5cGUgPSAnY2xpY2snO1xyXG4gIEBQcm9wZXJ0eSgn5L+h5oGv56qX6IOM5pmvJywgeyB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9IH0pXHJcbiAgaW5mb1dpbmRvd0JhY2tncm91bmQ6IHN0cmluZztcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+Wtl+S9kycsIHsgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSB9KVxyXG4gIGluZm9XaW5kb3dDb2xvcjogc3RyaW5nO1xyXG4gIEBQcm9wZXJ0eSgn5L+h5oGv56qX5a695bqmJylcclxuICBpbmZvV2luZG93V2lkdGg6IG51bWJlcjtcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+mrmOW6picpXHJcbiAgaW5mb1dpbmRvd0hlaWdodDogbnVtYmVyO1xyXG4gIEBQcm9wZXJ0eSgn5L+h5oGv56qX5qih5p2/JywgeyB1aTogeyB3aWRnZXQ6ICd0ZXh0YXJlYScgfSB9KVxyXG4gIGluZm9XaW5kb3dUZW1wbGF0ZTogc3RyaW5nO1xyXG4gIEBQcm9wZXJ0eSgn5L+h5oGv56qX6L655qGGJywge1xyXG4gICAgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSxcclxuICAgIGV4YW1wbGU6IFsnI2ZmZmZmZicsICcjRjVBNjIzJywgJyNGOEU3MUMnLCAnIzUwRTNDMicsICcjMzI4NUZGJywgJyNCNDVGRkYnLCAnIzlCOUI5QicsIG51bGxdLFxyXG4gIH0pXHJcbiAgaW5mb1dpbmRvd0JvcmRlckNvbG9yOiBzdHJpbmc7XHJcbiAgQFByb3BlcnR5KCfpmpDol4/lsJbop5InKVxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGlkZUluZm9XaW5kb3dUYWlsJylcclxuICBoaWRlSW5mb1dpbmRvd1RhaWw6IGJvb2xlYW47XHJcbiAgQFByb3BlcnR5KCfpmpDol4/lhbPpl63mjInpkq4nKVxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGlkZUluZm9XaW5kb3dUb3AnKVxyXG4gIGhpZGVJbmZvV2luZG93VG9wOiBib29sZWFuO1xyXG4gIEBQcm9wZXJ0eSgn5Zyw5Zu+5ouW5YqoJywgeyB0eXBlOiAnYm9vbGVhbicgfSlcclxuICBkcmFnZ2luZyA9IHRydWU7XHJcblxyXG4gIEBQcm9wZXJ0eSgn6YGu572p6aKc6ImyJywge1xyXG4gICAgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSxcclxuICAgIGV4YW1wbGU6IFsnI2ZmZmZmZicsICcjRjVBNjIzJywgJyNGOEU3MUMnLCAnIzUwRTNDMicsICcjMzI4NUZGJywgJyNCNDVGRkYnLCAnIzlCOUI5QicsIG51bGxdLFxyXG4gIH0pXHJcbiAgc2hhZGVDb2xvciA9ICcjMDA0Mzk1JztcclxuICBAUHJvcGVydHkoJ+iDjOaZr+minOiJsicsIHtcclxuICAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXHJcbiAgICBleGFtcGxlOiBbJyNmZmZmZmYnLCAnI0Y1QTYyMycsICcjRjhFNzFDJywgJyM1MEUzQzInLCAnIzMyODVGRicsICcjQjQ1RkZGJywgJyM5QjlCOUInLCBudWxsXSxcclxuICB9KVxyXG4gIG1hcEJhY2tDb2xvcjogc3RyaW5nO1xyXG5cclxuICBAUHJvcGVydHkoJ+Wkmui+uee6v+iJsicsIHtcclxuICAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXHJcbiAgICBleGFtcGxlOiBbJyNmZmZmZmYnLCAnI0Y1QTYyMycsICcjRjhFNzFDJywgJyM1MEUzQzInLCAnIzMyODVGRicsICcjQjQ1RkZGJywgJyM5QjlCOUInLCBudWxsXSxcclxuICB9KVxyXG4gIG1hcENpdHlDb2xvciA9ICcjNDFiN2ZmJztcclxuICBAUHJvcGVydHkoJ+WcsOWbvue8qeaUvicsIHtcclxuICAgIHVpOiB7IHdpZGdldDogJ215UmFuZ2UnLCBtaW46IDEsIG1heDogNDAsIHN0ZXA6IDEgfSxcclxuICB9KVxyXG4gIHpvb20gPSAxMjtcclxuICAvLyBAUHJvcGVydHkoJ+aUvuWkp+avlOS+iycsIHsgdHlwZTogJ251bWJlcicgfSlcclxuICAvLyBzY2FsZSA9IDE7XHJcbiAgQFByb3BlcnR5KCfpga7nvanpgI/mmI4nLCB7IHR5cGU6ICdudW1iZXInIH0pXHJcbiAgZmlsbE9wYWNpdHkgPSAwO1xyXG4gIEBQcm9wZXJ0eSgn5aSa6L6557q/57KXJywgeyB0eXBlOiAnbnVtYmVyJyB9KVxyXG4gIHN0cm9rZXNpemUgPSAyO1xyXG4gIEBQcm9wZXJ0eSgn6buR5aSc5qih5byPJywgeyB0eXBlOiAnYm9vbGVhbicsIHVpOiB7IGhpZGRlbjogdHJ1ZSB9IH0pXHJcbiAgbmlnaHRNb2RlID0gZmFsc2U7XHJcbiAgQFByb3BlcnR5KCczROinhuinkicpXHJcbiAgZW5hYmxlM0Q6IGJvb2xlYW47XHJcbiAgQFByb3BlcnR5KCflrprkvY3mjqfku7YnKVxyXG4gIHNob3dMb2NhdGlvbkNvbnRyb2w6IGJvb2xlYW47XHJcbiAgQFByb3BlcnR5KCfliJ3lp4vop5LluqYnLCB7IHR5cGU6ICdudW1iZXInLCB1aTogeyB2aXNpYmxlSWY6IHsgZW5hYmxlM0Q6IFt0cnVlXSB9IH0gfSlcclxuICB0aWx0ID0gNzM7XHJcbiAgLy8gQFByb3BlcnR5KCfkuK3lv4Pnu4/luqYnLCB7XHJcbiAgLy8gICB1aToge3dpZGdldDogJ215UmFuZ2UnLCBtaW46IC0xODAsIG1heDogMTgwLCBzdGVwOiAxfSxcclxuICAvLyB9KVxyXG4gIGNlbnRlckxuZyA9IDEyMC43O1xyXG4gIC8vIEBQcm9wZXJ0eSgn5Lit5b+D57qs5bqmJywge1xyXG4gIC8vICAgdWk6IHt3aWRnZXQ6ICdteVJhbmdlJywgbWluOiAtOTAsIG1heDogOTAsIHN0ZXA6IDF9LFxyXG4gIC8vIH0pXHJcbiAgY2VudGVyTGF0ID0gMjg7XHJcbiAgQFByb3BlcnR5KCfmmL7npLrnnIHluIInLCB7XHJcbiAgICB1aToge1xyXG4gICAgICB3aWRnZXQ6ICdteVVybFNlbGVjdCcsXHJcbiAgICAgIGFsbG93Q2xlYXI6IHRydWUsXHJcbiAgICAgIHVybDogJy9hc3NldHMvbWFwTGlzdEl0ZW0uanNvbicsXHJcbiAgICB9LFxyXG4gIH0pXHJcbiAgY2l0eU5hbWUgPSBudWxsO1xyXG4gIHBvaW50OiBhbnk7XHJcblxyXG4gIC8vIF9kYXRhID0gW1xyXG4gIC8vICAge1xyXG4gIC8vICAgICBvcHRpb25zOiB7XHJcbiAgLy8gICAgICAgaWNvbjoge1xyXG4gIC8vICAgICAgICAgaW1hZ2VVcmw6ICdhc3NldHMvaW1nL3NjcmVlbi9udW1iZXItZmxvcC5wbmcnLFxyXG4gIC8vICAgICAgICAgc2l6ZToge1xyXG4gIC8vICAgICAgICAgICBoZWlnaHQ6IDI2MCxcclxuICAvLyAgICAgICAgICAgd2lkdGg6IDI1MFxyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgcG9pbnQ6IHtcclxuICAvLyAgICAgICBsbmc6IDEyMC43LCAgIC8vIOe7j+W6plxyXG4gIC8vICAgICAgIGxhdDogMjgsICAgIC8vIOe6rOW6plxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9LFxyXG4gIC8vIF07XHJcbiAgLy8g5paH5a2X5qCH5rOoXHJcblxyXG4gIHB1YmxpYyB0ZXh0OiBzdHJpbmc7XHJcbiAgLy8gX2NoaWxkcmVuID0gW107XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIG1hcDogYW55O1xyXG4gIGVkaXQ6IGJvb2xlYW47XHJcbiAgLy8gbWFya2VyVGllckNsaWNrOiBhbnk7XHJcbiAgLy8gcGluZ3lhbmcgPSAnJztcclxuICAvLyBydWlhbiA9ICcnO1xyXG4gIEBEYXRhKHtcclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgbG5nOiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e7j+W6picgfSxcclxuICAgICAgbGF0OiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e6rOW6picgfSxcclxuICAgIH0sXHJcbiAgfSlcclxuICBfZGF0YTogYW55W10gPSBbeyBsbmc6IDEyMC43LCBsYXQ6IDI4IH1dO1xyXG4gIEBEYXRhT3V0cHV0KFsnbG5nJywgJ2xhdCddKVxyXG4gIEBFdmVudCgn5Lit5b+D54K55pS55Y+YJywge1xyXG4gICAgcGFyYW1zOiB7IHByb3BlcnRpZXM6IHsgbG5nOiB7IHRpdGxlOiAn57uP5bqmJywgdHlwZTogJ251bWJlcicgfSwgbGF0OiB7IHRpdGxlOiAn57qs5bqmJywgdHlwZTogJ251bWJlcicgfSB9IH0sXHJcbiAgfSlcclxuICBkYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBEYXRhT3V0cHV0KCfnvKnmlL7nrYnnuqcnKVxyXG4gIEBFdmVudCgn57yp5pS+Jywge1xyXG4gICAgcGFyYW1zOiAn57yp5pS+562J57qnJyxcclxuICB9KVxyXG4gIHpvb21DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBARXZlbnQoJ+WcsOWbvueCueWHuycsIHtcclxuICAgIHBhcmFtczogeyBwcm9wZXJ0aWVzOiB7IGxuZzogeyB0aXRsZTogJ+e7j+W6picsIHR5cGU6ICdudW1iZXInIH0sIGxhdDogeyB0aXRsZTogJ+e6rOW6picsIHR5cGU6ICdudW1iZXInIH0gfSB9LFxyXG4gIH0pXHJcbiAgbWFwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBjb250YWluZXI6IEVsZW1lbnRSZWY7XHJcbiAgY2hpbGRyZW46IGFueVtdO1xyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBkZXN0cm95ZWQ6IGJvb2xlYW47XHJcbiAgLy8gY29udGFpbmVyU3R5bGU6IGFueSA9IHt9O1xyXG4gIC8vIHVubG9hZGVkQ2hpbGRyZW4gPSB7fTtcclxuICBvdmVybGF5c01hcCA9IHt9O1xyXG5cclxuICAvLyBASG9zdEJpbmRpbmcoJ2NsYXNzLmhpZGVJbmZvV2luZG93VGFpbCcpXHJcbiAgLy8gaGlkZUluZm9XaW5kb3dUYWlsOiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIGluaXRlZDogKG1hcDogYW55KSA9PiB2b2lkO1xyXG4gIGluaXQkID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgIHRoaXMuaW5pdGVkID0gcmVzb2x2ZTtcclxuICB9KTtcclxuICB2aWV3OiBhbnk7XHJcbiAgcGlja2VyRXZlbnQ6IGFueTtcclxuICBwaWNrZXJJdGVtOiBhbnk7XHJcbiAgcGlja2VyVGltZW91dDogYW55O1xyXG4gIG1hcFR5cGVFbnVtID0gTWFwVHlwZUVudW0uc2xpY2UoMCwgMyk7XHJcbiAgZGFya1N0eWxlOiBhbnk7XHJcbiAgZmlyc3RPcGVuOiBib29sZWFuO1xyXG4gIGZpcnN0T3BlblByb21pc2U6IFByb21pc2U8dm9pZD47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGJhaWR1TWFwU2VydmljZTogQmFpZHVNYXBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHNjYWxlJDogU2NhbGVTdWJqZWN0LFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHdpZGdldFJlZjogV2lkZ2V0UmVmLFxyXG4gICkge31cclxuXHJcbiAgZ2V0IGVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgYWRkTGF5ZXIobGF5ZXI6IGFueSkge1xyXG4gICAgaWYgKHRoaXMudmlldykge1xyXG4gICAgICB0aGlzLnZpZXcuYWRkTGF5ZXIobGF5ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTGF5ZXIobGF5ZXI6IGFueSkge1xyXG4gICAgaWYgKHRoaXMudmlldykge1xyXG4gICAgICB0aGlzLnZpZXcucmVtb3ZlTGF5ZXIobGF5ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuX2RhdGEgJiYgdGhpcy5fZGF0YVswXSkge1xyXG4gICAgICB0aGlzLmNlbnRlckxuZyA9ICt0aGlzLl9kYXRhWzBdLmxuZztcclxuICAgICAgdGhpcy5jZW50ZXJMYXQgPSArdGhpcy5fZGF0YVswXS5sYXQ7XHJcbiAgICAgIHRoaXMuc2V0Q2VudGVyKHRoaXMuY2VudGVyTG5nLCB0aGlzLmNlbnRlckxhdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnNjYWxlJCkge1xyXG4gICAgICAvLyDov5nmmK/kuLrkuobop6PlhrPlnLDlm77nvKnmlL7kuK3lv4PkuI3lnKjpvKDmoIfmiYDlnKjkvY3nva7nmoTpl67pophcclxuICAgICAgdGhpcy5zY2FsZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoc2NhbGUpID0+IHtcclxuICAgICAgICBjb25zdCB7IHg6IHN4LCB5OiBzeSwgc2NhbGVDb250ZW50IH0gPSBzY2FsZSBhcyBhbnk7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLmVsZW1lbnQuc3R5bGU7XHJcbiAgICAgICAgaWYgKHNjYWxlQ29udGVudCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgIHRoaXMuem9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvdHJhbnNsYXRlXFwoKFstXFxkLl0rKXB4LCAoWy1cXGQuXSspcHhcXCkvLmV4ZWMocGFyZW50LnN0eWxlLnRyYW5zZm9ybSk7XHJcbiAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXRYID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXRZID0gcGFyc2VGbG9hdChtYXRjaFsyXSk7XHJcbiAgICAgICAgICAgICAgICBzdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7LW9mZnNldFh9cHgsJHstb2Zmc2V0WX1weClgO1xyXG4gICAgICAgICAgICAgICAgc3R5bGUuaGVpZ2h0ID0gcGFyZW50LmNsaWVudEhlaWdodCArIG9mZnNldFkgKyAncHgnO1xyXG4gICAgICAgICAgICAgICAgc3R5bGUud2lkdGggPSBwYXJlbnQuY2xpZW50V2lkdGggKyBvZmZzZXRYICsgJ3B4JztcclxuICAgICAgICAgICAgICAgIHN0eWxlLnBhZGRpbmcgPSBgJHtvZmZzZXRZfXB4IDAgMCAke29mZnNldFh9cHhgO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5jb250YWluZXJTdHlsZSA9IHtcclxuICAgICAgICAgICAgICAgIC8vICAgdHJhbnNmb3JtT3JpZ2luOiBgMCAwYCxcclxuICAgICAgICAgICAgICAgIC8vICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlKCR7LW9mZnNldFh9cHgsJHstb2Zmc2V0WX1weClgLFxyXG4gICAgICAgICAgICAgICAgLy8gICBoZWlnaHQ6IHBhcmVudC5jbGllbnRIZWlnaHQgKyBvZmZzZXRZICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgIC8vICAgd2lkdGg6IHBhcmVudC5jbGllbnRXaWR0aCArIG9mZnNldFggKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgLy8gICBwYWRkaW5nOiBgJHtvZmZzZXRZfXB4IDAgMCAke29mZnNldFh9cHhgLFxyXG4gICAgICAgICAgICAgICAgLy8gfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgeyBwb3NpdGlvbiwgc2l6ZSB9ID0gdGhpcy53aWRnZXRSZWYud2lkZ2V0IGFzIGFueTtcclxuICAgICAgICAgIGNvbnN0IHsgeCwgeSB9ID0gcG9zaXRpb247XHJcbiAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHNpemU7XHJcbiAgICAgICAgICBzdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7LXh9cHgsJHsteX1weCkgc2NhbGUoJHsxIC8gc3h9LCR7MSAvIHN5fSlgO1xyXG4gICAgICAgICAgc3R5bGUuaGVpZ2h0ID0gKHkgKyBoZWlnaHQpICogc3kgKyAncHgnO1xyXG4gICAgICAgICAgc3R5bGUud2lkdGggPSAoeCArIHdpZHRoKSAqIHN4ICsgJ3B4JztcclxuICAgICAgICAgIHN0eWxlLnBhZGRpbmcgPSBgJHt5ICogc3l9cHggMCAwICR7eCAqIHN4fXB4YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5pbml0TWFwKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0TWFwKCkge1xyXG4gICAgYXdhaXQgdGhpcy5iYWlkdU1hcFNlcnZpY2UubG9hZE1hcEdMKCk7XHJcbiAgICBhd2FpdCB0aGlzLmJhaWR1TWFwU2VydmljZS5sb2FkTWFwVkdMKCk7XHJcbiAgICB0aGlzLm1hcFR5cGVWYWx1ZSA9IHRoaXMubWFwVHlwZTtcclxuICAgIC8vIOWFvOWuueiAgeeahOmFjee9rlxyXG4gICAgaWYgKHRoaXMubWFwVHlwZSA9PSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLnVwbG9hZFN0eWxlKSB7XHJcbiAgICAgICAgdGhpcy5tYXBUeXBlVmFsdWUgPSAnY3VzdG9tJztcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm5pZ2h0TW9kZSkge1xyXG4gICAgICAgIHRoaXMubWFwVHlwZVZhbHVlID0gJ2RhcmsnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZGVzdHJveWVkKSB7XHJcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tYXAgPSBuZXcgQk1hcEdMLk1hcCh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB7IHJlc3RyaWN0Q2VudGVyOiBmYWxzZSB9KTtcclxuICAgICAgICB0aGlzLm1hcC5jZW50ZXJBbmRab29tKG5ldyBCTWFwR0wuUG9pbnQodGhpcy5jZW50ZXJMbmcsIHRoaXMuY2VudGVyTGF0KSwgdGhpcy56b29tKTsgLy8g6K6+572u5Lit5b+D54K55ZKM57yp5pS+57qn5YirXHJcbiAgICAgICAgdGhpcy5tYXAuZW5hYmxlU2Nyb2xsV2hlZWxab29tKCk7IC8vIOWQr+eUqOa7mui9rui/m+ihjOe8qeaUvuWKn+iDvVxyXG4gICAgICAgIC8vIHZhciBkaXN0ID0gbmV3IEJNYXBHTC5EaXN0cmljdExheWVyKHtcclxuICAgICAgICAvLyAgIG5hbWU6ICco5rip5bee5biCKScsXHJcbiAgICAgICAgLy8gICBraW5kOiAxLFxyXG4gICAgICAgIC8vICAgIGZpbGxDb2xvcjogJyNmZmYnLFxyXG4gICAgICAgIC8vICAgZmlsbE9wYWNpdHk6IDAuMSxcclxuICAgICAgICAvLyAgIHN0cm9rZUNvbG9yOiAnI2RhZWFmYScsXHJcbiAgICAgICAgLy8gICB2aWV3cG9ydDogdHJ1ZSxcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICAvLyB0aGlzLm1hcC5hZGREaXN0cmljdExheWVyKGRpc3QpO1xyXG4gICAgICAgIHRoaXMubWFwVHlwZUNoYW5nZSh0aGlzLm1hcFR5cGVWYWx1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdCB8fCB0aGlzLmRyYWdnaW5nID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgdGhpcy5tYXAuZGlzYWJsZURyYWdnaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZTNEKSB7XHJcbiAgICAgICAgICB0aGlzLm1hcC5zZXRUaWx0KHRoaXMudGlsdCA9PSBudWxsID8gNzMgOiB0aGlzLnRpbHQsIHsgbm9BbmltYXRpb246IHRydWUgfSk7XHJcbiAgICAgICAgICB0aGlzLm1hcC5zZXREaXNwbGF5T3B0aW9ucyh7IHNreUNvbG9yczogWydyZ2JhKDAsIDAsIDAsIDApJ10gfSk7IC8vIOmakOiXj+WkqeepulxyXG4gICAgICAgICAgLy8gY29uc3QgbmF2aTNEQ3RybCA9IG5ldyBCTWFwR0wuTmF2aWdhdGlvbkNvbnRyb2wzRCgpOyAvLyDmt7vliqAzROaOp+S7tlxyXG4gICAgICAgICAgLy8gdGhpcy5tYXAuYWRkQ29udHJvbChuYXZpM0RDdHJsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tYXAuZGlzYWJsZVRpbHQoKTtcclxuICAgICAgICAgIHRoaXMubWFwLmRpc2FibGVSb3RhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0xvY2F0aW9uQ29udHJvbCkge1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgLy8g5o6n5Lu255qE5YGc6Z2g5L2N572u77yI5Y+v6YCJ77yM6buY6K6k5bem5LiK6KeS77yJXHJcbiAgICAgICAgICAgIGFuY2hvcjogQk1BUF9BTkNIT1JfVE9QX0xFRlQsXHJcbiAgICAgICAgICAgIC8vIOaOp+S7tuWfuuS6juWBnOmdoOS9jee9rueahOWBj+enu+mHj++8iOWPr+mAie+8iVxyXG4gICAgICAgICAgICBvZmZzZXQ6IG5ldyBCTWFwR0wuU2l6ZSgyMCwgMjApLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGxldCBsb2NhdGlvbkNvbnRyb2wgPSBuZXcgQk1hcEdMLkxvY2F0aW9uQ29udHJvbChvcHRpb25zKTtcclxuICAgICAgICAgIC8vIOWwhuaOp+S7tua3u+WKoOWIsOWcsOWbvuS4ilxyXG4gICAgICAgICAgdGhpcy5tYXAuYWRkQ29udHJvbChsb2NhdGlvbkNvbnRyb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5taW5NYXBTaG93KSB7XHJcbiAgICAgICAgICBjb25zdCBzdEN0cmwgPSBuZXcgQk1hcEdMLlBhbm9yYW1hQ29udHJvbCgpO1xyXG4gICAgICAgICAgc3RDdHJsLnNldE9mZnNldChuZXcgQk1hcEdMLlNpemUoMjAsIDIwKSk7XHJcbiAgICAgICAgICB0aGlzLm1hcC5hZGRDb250cm9sKHN0Q3RybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmluZm9XaW5kb3dCYWNrZ3JvdW5kKSB7XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taW5mby13aW5kb3ctYmFja2dyb3VuZCcsIHRoaXMuaW5mb1dpbmRvd0JhY2tncm91bmQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pbmZvV2luZG93Q29sb3IpIHtcclxuICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pbmZvLXdpbmRvdy1jb2xvcicsIHRoaXMuaW5mb1dpbmRvd0NvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaW5mb1dpbmRvd0JvcmRlckNvbG9yKSB7XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taW5mby13aW5kb3ctYm9yZGVyLWNvbG9yJywgdGhpcy5pbmZvV2luZG93Qm9yZGVyQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1hcC5hZGRFdmVudExpc3RlbmVyKCdtb3ZlZW5kJywgKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjZW50ZXIgPSB0aGlzLm1hcC5nZXRDZW50ZXIoKTtcclxuICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KGNlbnRlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcclxuICAgICAgICAgIHRoaXMubWFwQ2xpY2suZW1pdChldmVudC5sYXRsbmcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubWFwLmFkZEV2ZW50TGlzdGVuZXIoJ3pvb21lbmQnLCAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIHRoaXMuem9vbUNoYW5nZS5lbWl0KHRoaXMubWFwLmdldFpvb20oKSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdCh0aGlzLm1hcC5nZXRDZW50ZXIoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy52aWV3ID0gbmV3IG1hcHZnbC5WaWV3KHtcclxuICAgICAgICAgIG1hcDogdGhpcy5tYXAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tYXBMb2FkZWQodGhpcy5tYXApO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pbml0ZWQodGhpcy5tYXApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q2VudGVyKGxuZzogbnVtYmVyLCBsYXQ6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMubWFwICYmIGxuZyAmJiBsYXQpIHtcclxuICAgICAgY29uc3QgY2VudGVyID0gdGhpcy5tYXAuZ2V0Q2VudGVyKCk7XHJcbiAgICAgIGlmIChjZW50ZXIubG5nICE9IGxuZyB8fCBjZW50ZXIubGF0ICE9IGxhdCkge1xyXG4gICAgICAgIHRoaXMuc2V0Q2VudGVyQW5kWm9vbShsbmcsIGxhdCwgdGhpcy5tYXAuZ2V0Wm9vbSgpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q2VudGVyQW5kWm9vbShsbmc6IG51bWJlciwgbGF0OiBudW1iZXIsIHpvb206IG51bWJlcikge1xyXG4gICAgY29uc3QgY2VudGVyID0gdGhpcy5tYXAuZ2V0Q2VudGVyKCk7XHJcbiAgICBjb25zdCBjdXJyZW50Wm9vbSA9IHRoaXMubWFwLmdldFpvb20oKTtcclxuICAgIC8vIOivr+W3ruiMg+WbtOWGheS4jeenu+WKqCzpmLLmraLog4zmma/mipbliqhcclxuICAgIGlmICh6b29tICE9IGN1cnJlbnRab29tIHx8IE1hdGguYWJzKGxuZyAtIGNlbnRlci5sbmcpID4gMWUtMTMgfHwgTWF0aC5hYnMobGF0IC0gY2VudGVyLmxhdCkgPiAxZS03KSB7XHJcbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IEJNYXBHTC5Qb2ludChsbmcsIGxhdCk7XHJcbiAgICAgIHRoaXMubWFwLmNlbnRlckFuZFpvb20ocG9pbnQsIHpvb20sIHsgdGlsdDogdGhpcy5tYXAuZ2V0VGlsdCgpIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2u57uP57qs5bqm6IyD5Zu06K6+572u5Lit5b+D5ZKM57yp5pS+562J57qnXHJcbiAgICogQHBhcmFtIG1pbkxuZ1xyXG4gICAqIEBwYXJhbSBtYXhMbmdcclxuICAgKiBAcGFyYW0gbWluTGF0XHJcbiAgICogQHBhcmFtIG1heExhdFxyXG4gICAqL1xyXG4gIHNldFJlY3RDZW50ZXJBbmRab29tKG1pbkxuZzogbnVtYmVyLCBtYXhMbmc6IG51bWJlciwgbWluTGF0OiBudW1iZXIsIG1heExhdDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNldENlbnRlckFuZFpvb20oKG1heExuZyArIG1pbkxuZykgLyAyLCAobWF4TGF0ICsgbWluTGF0KSAvIDIsIHRoaXMuZ2V0Wm9vbShtYXhMbmcsIG1pbkxuZywgbWF4TGF0LCBtaW5MYXQpKTtcclxuICB9XHJcblxyXG4gIGdldFpvb20obWF4TG5nOiBudW1iZXIsIG1pbkxuZzogbnVtYmVyLCBtYXhMYXQ6IG51bWJlciwgbWluTGF0OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHpvb21zID0gW1xyXG4gICAgICA1MCwgMTAwLCAyMDAsIDUwMCwgMTAwMCwgMjAwMCwgNTAwMCwgMTAwMDAsIDIwMDAwLCAyNTAwMCwgNTAwMDAsIDEwMDAwMCwgMjAwMDAwLCA1MDAwMDAsIDEwMDAwMDAsIDIwMDAwMDAsXHJcbiAgICBdOyAvL+e6p+WIqzE45YiwM+OAglxyXG4gICAgY29uc3QgcG9pbnRBID0gbmV3IEJNYXBHTC5Qb2ludChtYXhMbmcsIG1heExhdCk7IC8vIOWIm+W7uueCueWdkOagh0FcclxuICAgIGNvbnN0IHBvaW50QiA9IG5ldyBCTWFwR0wuUG9pbnQobWluTG5nLCBtaW5MYXQpOyAvLyDliJvlu7rngrnlnZDmoIdCXHJcbiAgICBjb25zdCBkaXN0YW5jZSA9ICt0aGlzLm1hcC5nZXREaXN0YW5jZShwb2ludEEsIHBvaW50QikudG9GaXhlZCgxKTsgLy/ojrflj5bkuKTngrnot53nprss5L+d55WZ5bCP5pWw54K55ZCO5Lik5L2NXHJcbiAgICBjb25zdCBpID0gem9vbXMuZmluZEluZGV4KCh6b29tKSA9PiB6b29tIC0gZGlzdGFuY2UgPiAwKTtcclxuICAgIGlmIChpID09PSAtMSkge1xyXG4gICAgICByZXR1cm4gNTtcclxuICAgIH1cclxuICAgIC8v5LmL5omA5Lul5Lya5aSaM++8jOaYr+WboOS4uuWcsOWbvuiMg+WbtOW4uOW4uOaYr+avlOS+i+Wwuui3neemu+eahDEw5YCN5Lul5LiK44CC5omA5Lul57qn5Yir5Lya5aKe5YqgM+OAglxyXG4gICAgcmV0dXJuIDE4IC0gaSArIDM7XHJcbiAgfVxyXG5cclxuICBvcGVuSW5mb1dpbmRvdyhkYXRhOiBhbnksIGxuZzogbnVtYmVyLCBsYXQ6IG51bWJlcikge1xyXG4gICAgaWYgKGRhdGEuaW5mb3JtYXRpb24gfHwgdGhpcy5pbmZvV2luZG93VGVtcGxhdGUpIHtcclxuICAgICAgY29uc3QgcG9pbnQgPSBuZXcgQk1hcEdMLlBvaW50KCtsbmcsICtsYXQpO1xyXG4gICAgICAvLyBsZXQgb2Zmc2V0WSA9IC0yNTtcclxuICAgICAgLy8gaWYgKHRoaXMuaGlkZUluZm9XaW5kb3dUYWlsKSB7XHJcbiAgICAgIC8vICAgb2Zmc2V0WSA9IDA7XHJcbiAgICAgIC8vIH1cclxuICAgICAgbGV0IGluZm9ybWF0aW9uID0gZGF0YS5pbmZvcm1hdGlvbjtcclxuICAgICAgaWYgKHRoaXMuaW5mb1dpbmRvd1RlbXBsYXRlKSB7XHJcbiAgICAgICAgaW5mb3JtYXRpb24gPSBUZW1wbGF0ZVV0aWwucGFyc2UodGhpcy5pbmZvV2luZG93VGVtcGxhdGUsIGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgb2Zmc2V0OiBuZXcgQk1hcEdMLlNpemUoMCwgMCksXHJcbiAgICAgICAgd2lkdGg6IHRoaXMuaW5mb1dpbmRvd1dpZHRoIHx8IDAsXHJcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmluZm9XaW5kb3dIZWlnaHQgfHwgMCxcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgaW5mb1dpbmRvdyA9IG5ldyBCTWFwR0wuSW5mb1dpbmRvdyhpbmZvcm1hdGlvbiwgb3B0aW9ucyk7XHJcbiAgICAgIC8vIOesrOS4gOasoeaJk+W8gOS/oeaBr+eql+WPo+WQjuWcqOefreaXtumXtOWFs+mXreaIlumHjeaWsOaJk+W8gOS8muWvvOiHtGNsaWNr5LqL5Lu25aSx5pWI77yM5Li05pe26Kej5Yaz5pa55qGI5piv56ys5LiA5qyh5omT5byA5ZCOMC4156eS5YaF5LiN5YWz6ZetXHJcbiAgICAgIGlmICghdGhpcy5maXJzdE9wZW4pIHtcclxuICAgICAgICBpZiAodGhpcy5maXJzdE9wZW5Qcm9taXNlKSB7XHJcbiAgICAgICAgICB0aGlzLmZpcnN0T3BlblByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubWFwLm9wZW5JbmZvV2luZG93KGluZm9XaW5kb3csIHBvaW50KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZpcnN0T3BlblByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmZpcnN0T3BlbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5maXJzdE9wZW5Qcm9taXNlID0gbnVsbDtcclxuICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMubWFwLm9wZW5JbmZvV2luZG93KGluZm9XaW5kb3csIHBvaW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmF3Q2xvc2UgPSBpbmZvV2luZG93LmNsb3NlO1xyXG4gICAgICAgIGluZm9XaW5kb3cuY2xvc2UgPSAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5maXJzdE9wZW5Qcm9taXNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RPcGVuUHJvbWlzZS50aGVuKCgpID0+IHJhd0Nsb3NlLmNhbGwoaW5mb1dpbmRvdykpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmF3Q2xvc2UuY2FsbChpbmZvV2luZG93KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWFwLm9wZW5JbmZvV2luZG93KGluZm9XaW5kb3csIHBvaW50KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gaW5mb1dpbmRvdztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENhbnZhc092ZXJsYXkoY2hpbGQ6IGFueSkge1xyXG4gICAgbGV0IGNhbnZhc092ZXJsYXk7XHJcbiAgICBpZiAodGhpcy5lbmFibGUzRCkge1xyXG4gICAgICBjb25zdCBpdGVtID0gY2hpbGQuaXRlbTtcclxuICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICB2YXIgcFN0YXJ0ID0gbmV3IEJNYXBHTC5Qb2ludChpdGVtLnN0YXJ0LmxuZywgaXRlbS5zdGFydC5sYXQpO1xyXG4gICAgICAgIHZhciBwRW5kID0gbmV3IEJNYXBHTC5Qb2ludChpdGVtLmVuZC5sbmcsIGl0ZW0uZW5kLmxhdCk7XHJcbiAgICAgICAgdmFyIGJvdW5kcyA9IG5ldyBCTWFwR0wuQm91bmRzKG5ldyBCTWFwR0wuUG9pbnQocFN0YXJ0LmxuZywgcEVuZC5sYXQpLCBuZXcgQk1hcEdMLlBvaW50KHBFbmQubG5nLCBwU3RhcnQubGF0KSk7XHJcbiAgICAgICAgY2FudmFzT3ZlcmxheSA9IG5ldyBCTWFwR0wuR3JvdW5kT3ZlcmxheShib3VuZHMsIHtcclxuICAgICAgICAgIHR5cGU6ICdjYW52YXMnLFxyXG4gICAgICAgICAgdXJsOiBpdGVtLmNhbnZhcyxcclxuICAgICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHBvaW50VG9QaXhlbCA9IChkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcG9pbnQgPSBuZXcgQk1hcEdMLlBvaW50KGRhdGEubG5nLCBkYXRhLmxhdCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLnBvaW50VG9QaXhlbChwb2ludCk7XHJcbiAgICAgIH07XHJcbiAgICAgIGNhbnZhc092ZXJsYXkgPSBuZXcgQk1hcEdMLkNhbnZhc0xheWVyKHtcclxuICAgICAgICBwYW5lTmFtZTogJ21hcmtlclNoYWRvdycsXHJcbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICB2YXIgY3R4ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAgIGlmICghY3R4KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgY3R4LmNhbnZhcy53aWR0aCwgY3R4LmNhbnZhcy5oZWlnaHQpO1xyXG4gICAgICAgICAgY2hpbGQudXBkYXRlKGN0eCwgcG9pbnRUb1BpeGVsKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBjYW52YXNPdmVybGF5O1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLnZpZXcpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLnZpZXcuZGVzdHJveSgpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWFwKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5tYXAuZGVzdHJveSgpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbWFwTG9hZGVkKG1hcDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5jaXR5TmFtZSkge1xyXG4gICAgICBpZiAodGhpcy5jaXR5TmFtZSA9PT0gJ+a4qeW3nicpIHtcclxuICAgICAgICB0aGlzLmNpdHlOYW1lID0gJ3dlbnpob3UnO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGpzb246IGFueSA9IGF3YWl0IHRoaXMuaHR0cC5nZXQoJ2Fzc2V0cy9lY2hhcnRzL21hcC9qc29uLycgKyB0aGlzLmNpdHlOYW1lICsgJy5qc29uJykudG9Qcm9taXNlKCk7XHJcbiAgICAgIGNvbnN0IHBvbHlnb25EYXRhID0gW107XHJcbiAgICAgIGxldCBlbmNvZGVTY2FsZSA9IGpzb24uVVRGOFNjYWxlIHx8IDEwMjQ7XHJcbiAgICAgIGpzb24uZmVhdHVyZXMuZm9yRWFjaCgoeyBnZW9tZXRyeSB9KSA9PiB7XHJcbiAgICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMgPSAoZ2VvbWV0cnkuY29vcmRpbmF0ZXMgYXMgYW55W10pLmZvckVhY2goKGNvb3JkaW5hdGUsIGkpID0+IHtcclxuICAgICAgICAgIGlmIChnZW9tZXRyeS50eXBlID09PSAnTXVsdGlQb2x5Z29uJykge1xyXG4gICAgICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IChjb29yZGluYXRlIGFzIGFueVtdKS5tYXAoKHBvaW50cywgaikgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChqc29uLlVURjhFbmNvZGluZykge1xyXG4gICAgICAgICAgICAgICAgcG9pbnRzID0gdGhpcy5kZWNvZGVQb2x5Z29uKHBvaW50cywgZ2VvbWV0cnkuZW5jb2RlT2Zmc2V0c1tpXVtqXSwgZW5jb2RlU2NhbGUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gcG9pbnRzO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcG9seWdvbkRhdGEucHVzaChjb29yZGluYXRlcyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoanNvbi5VVEY4RW5jb2RpbmcpIHtcclxuICAgICAgICAgICAgICBjb29yZGluYXRlID0gdGhpcy5kZWNvZGVQb2x5Z29uKGNvb3JkaW5hdGUsIGdlb21ldHJ5LmVuY29kZU9mZnNldHNbaV0sIGVuY29kZVNjYWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwb2x5Z29uRGF0YS5wdXNoKFtjb29yZGluYXRlXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBkYXRhID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGdlb21ldHJ5OiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdNdWx0aVBvbHlnb24nLFxyXG4gICAgICAgICAgICBjb29yZGluYXRlczogcG9seWdvbkRhdGEsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIHZhciBsYXllciA9IG5ldyBtYXB2Z2wuUG9seWdvbkxheWVyKHtcclxuICAgICAgICBsaW5lQ29sb3I6IHRoaXMubWFwQ2l0eUNvbG9yLFxyXG4gICAgICAgIGxpbmVXaWR0aDogdGhpcy5zdHJva2VzaXplIHx8IDIsXHJcbiAgICAgICAgZmlsbENvbG9yOiB0aGlzLnNoYWRlQ29sb3IsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICByZW5kZXJPcmRlcjogLTIsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnZpZXcuYWRkTGF5ZXIobGF5ZXIpO1xyXG4gICAgICBpZiAodGhpcy5tYXBCYWNrQ29sb3IgJiYgIXRoaXMubWFwQmFja0NvbG9yLm1hdGNoKC9yZ2JhXFwoXFxkKyxcXGQrLFxcZCssMFxcKS8pKSB7XHJcbiAgICAgICAgdmFyIG1hc2tMYXllciA9IG5ldyBtYXB2Z2wuTWFza0xheWVyKHtcclxuICAgICAgICAgIGNvbG9yOiB0aGlzLm1hcEJhY2tDb2xvcixcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICByZW5kZXJPcmRlcjogLTMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy52aWV3LmFkZExheWVyKG1hc2tMYXllcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlY29kZVBvbHlnb24oY29vcmRpbmF0ZTogc3RyaW5nLCBlbmNvZGVPZmZzZXRzOiBudW1iZXJbXSwgZW5jb2RlU2NhbGU6IG51bWJlcikge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gW107XHJcbiAgICBsZXQgcHJldlggPSBlbmNvZGVPZmZzZXRzWzBdO1xyXG4gICAgbGV0IHByZXZZID0gZW5jb2RlT2Zmc2V0c1sxXTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvb3JkaW5hdGUubGVuZ3RoOyBpICs9IDIpIHtcclxuICAgICAgdmFyIHggPSBjb29yZGluYXRlLmNoYXJDb2RlQXQoaSkgLSA2NDtcclxuICAgICAgdmFyIHkgPSBjb29yZGluYXRlLmNoYXJDb2RlQXQoaSArIDEpIC0gNjQ7XHJcbiAgICAgIC8vIFppZ1phZyBkZWNvZGluZ1xyXG4gICAgICB4ID0gKHggPj4gMSkgXiAtKHggJiAxKTtcclxuICAgICAgeSA9ICh5ID4+IDEpIF4gLSh5ICYgMSk7XHJcbiAgICAgIC8vIERlbHRhIGRlb2NkaW5nXHJcbiAgICAgIHggKz0gcHJldlg7XHJcbiAgICAgIHkgKz0gcHJldlk7XHJcblxyXG4gICAgICBwcmV2WCA9IHg7XHJcbiAgICAgIHByZXZZID0geTtcclxuICAgICAgLy8gRGVxdWFudGl6ZVxyXG4gICAgICByZXN1bHQucHVzaChbeCAvIGVuY29kZVNjYWxlLCB5IC8gZW5jb2RlU2NhbGVdKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbWFwVHlwZUNoYW5nZShtYXBUeXBlOiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAobWFwVHlwZSkge1xyXG4gICAgICBjYXNlICdkYXJrJzpcclxuICAgICAgICBpZiAoIXRoaXMuZGFya1N0eWxlKSB7XHJcbiAgICAgICAgICB0aGlzLmRhcmtTdHlsZSA9IGF3YWl0IHRoaXMuaHR0cC5nZXQoJ2Fzc2V0cy9lY2hhcnRzL21hcC9qc29uL2N1c3RvbV9tYXAuanNvbicpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1hcC5zZXRNYXBUeXBlKEJNQVBfTk9STUFMX01BUCk7XHJcbiAgICAgICAgdGhpcy5tYXAuc2V0TWFwU3R5bGVWMih7IHN0eWxlSnNvbjogdGhpcy5kYXJrU3R5bGUgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3NhdGVsbGl0ZSc6XHJcbiAgICAgICAgdGhpcy5tYXAuc2V0TWFwVHlwZShCTUFQX1NBVEVMTElURV9NQVApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjdXN0b20nOlxyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZFN0eWxlKSB7XHJcbiAgICAgICAgICBjb25zdCBzdHlsZUpzb24gPSBhd2FpdCB0aGlzLmh0dHAuZ2V0KHRoaXMudXBsb2FkU3R5bGUpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgdGhpcy5tYXAuc2V0TWFwVHlwZShCTUFQX05PUk1BTF9NQVApO1xyXG4gICAgICAgICAgdGhpcy5tYXAuc2V0TWFwU3R5bGVWMih7IHN0eWxlSnNvbiB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5tYXAuc2V0TWFwVHlwZShCTUFQX05PUk1BTF9NQVApO1xyXG4gICAgICAgIHRoaXMubWFwLnNldE1hcFN0eWxlVjIoeyBzdHlsZUpzb246IG51bGwgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
645
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWJhaWR1LW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY3JlZW4td2lkZ2V0L3NyYy9saWIvY3VzdG9tLWJhaWR1LW1hcC9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBRVosV0FBVyxFQUdYLE1BQU0sRUFJTixRQUFRLEVBRVIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBV3ZFLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ2hDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQzlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ25DLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0NBQ2xDLENBQUM7SUE0QlcsdUJBQXVCLFNBQXZCLHVCQUF1QjtJQW1MbEMsWUFDVSxlQUFnQyxFQUNoQyxJQUFnQixFQUNoQixVQUFzQixF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O0dBMUxuQix1QkFBdUIsQ0EwaUJuQztTQTFpQlksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIE5nWm9uZSxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNjYWxlU3ViamVjdCwgVGVtcGxhdGVVdGlsLCBXaWRnZXRSZWYgfSBmcm9tICdiYmotd2lkZ2V0LWJhc2UnO1xyXG5pbXBvcnQgeyBEYXRhLCBEYXRhT3V0cHV0LCBQcm9wZXJ0eSwgV2lkZ2V0LCBFdmVudCB9IGZyb20gJ2Jiai13aWRnZXQtYmFzZSc7XHJcbmltcG9ydCB7IEJhaWR1TWFwU2VydmljZSwgc2NhbGVBZGFwdGVyIH0gZnJvbSAnYmJqLXNjcmVlbi13aWRnZXQvY29yZSc7XHJcblxyXG4vLyBkZWNsYXJlIGNvbnN0IEJNYXA7XHJcbmRlY2xhcmUgY29uc3QgQk1hcEdMOiBhbnk7XHJcbi8vIGRlY2xhcmUgY29uc3QgQk1hcEdMTGliO1xyXG4vLyBkZWNsYXJlIGNvbnN0IEJNYXBMaWI7XHJcbi8vIGRlY2xhcmUgY29uc3QgQk1BUF9BTkNIT1JfQk9UVE9NX0xFRlQ6IG51bWJlcjtcclxuZGVjbGFyZSBjb25zdCBCTUFQX0FOQ0hPUl9UT1BfTEVGVDogbnVtYmVyO1xyXG5kZWNsYXJlIGNvbnN0IG1hcHZnbDogYW55O1xyXG5kZWNsYXJlIGNvbnN0IEJNQVBfU0FURUxMSVRFX01BUDogbnVtYmVyO1xyXG5kZWNsYXJlIGNvbnN0IEJNQVBfTk9STUFMX01BUDogbnVtYmVyO1xyXG5jb25zdCBNYXBUeXBlRW51bSA9IFtcclxuICB7IGxhYmVsOiAn5pmu6YCaJywgdmFsdWU6ICdub3JtYWwnIH0sXHJcbiAgeyBsYWJlbDogJ+a3seiJsicsIHZhbHVlOiAnZGFyaycgfSxcclxuICB7IGxhYmVsOiAn5Y2r5pifJywgdmFsdWU6ICdzYXRlbGxpdGUnIH0sXHJcbiAgeyBsYWJlbDogJ+iHquWumuS5iScsIHZhbHVlOiAnY3VzdG9tJyB9LFxyXG5dO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NjLWN1c3RvbS1iYWlkdS1tYXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbkBXaWRnZXQoJ+eZvuW6puWcsOWbvicsIHtcclxuICBncm91cDogJ2NvbXBvbmVudCcsXHJcbiAgaW1hZ2U6ICdhc3NldHMvaW1nL3NjcmVlbi9teS1iYWlkdS1tYXAucG5nJyxcclxuICBjaGlsZHJlbjogW1xyXG4gICAge1xyXG4gICAgICB0aXRsZTogJ+agh+iusOWxgicsXHJcbiAgICAgIHR5cGU6ICdzYy1iYWlkdS1tYXJrZXItbGF5ZXInLFxyXG4gICAgICBvcHRpb246IHt9LFxyXG4gICAgICBoaWRkZW46IHRydWUsXHJcbiAgICAgIGhpZGVDaGlsZDogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBjaGlsZFR5cGVzOiBbXHJcbiAgICAnc2MtYmFpZHUtbWFya2VyLWxheWVyJyxcclxuICAgICdzYy1iYWlkdS1wb2x5bGluZS1sYXllcicsXHJcbiAgICAnc2Mtd2luZC1sYXllcicsXHJcbiAgICAnc2MtdHlwaG9vbi1hcmVhLWxheWVyJyxcclxuICAgICdzYy1iYWlkdS1mZW5jZScsXHJcbiAgICAnc2MtYmFpZHUtbHVzaHUnLFxyXG4gIF0sXHJcbiAgZGVzY3JpcHRpb246ICdoYXNDaGlsZEl0ZW0nLFxyXG59IGFzIGFueSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbUJhaWR1TWFwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgLy8gQFByb3BlcnR5KCflrZfkvZMnLCB7IHVpOiB7IHdpZGdldDogJ215Rm9udCcgfSB9KVxyXG4gIC8vIGZvbnQ6IGFueSA9IHtcclxuICAvLyAgIGZhbWlseTogJycsXHJcbiAgLy8gICBjb2xvcjogJyMwMDAwMDAnLFxyXG4gIC8vICAgd2VpZ2h0OiAnbm9ybWFsJyxcclxuICAvLyAgIHNpemU6IDE2LFxyXG4gIC8vICAgc3BhY2U6IDAsXHJcbiAgLy8gICBsaW5lSGVpZ2h0OiAwLFxyXG4gIC8vIH07XHJcbiAgQFByb3BlcnR5KCflnLDlm77nsbvlnosnLCB7XHJcbiAgICBlbnVtOiBNYXBUeXBlRW51bSxcclxuICB9KVxyXG4gIG1hcFR5cGUgPSAnbm9ybWFsJztcclxuICBtYXBUeXBlVmFsdWU6IHN0cmluZztcclxuICBAUHJvcGVydHkoJ+S4iuS8oOagt+W8jycsIHsgdHlwZTogJ3N0cmluZycsIHVpOiB7IHdpZGdldDogJ215VXBsb2FkQXVkaW8nLCB2aXNpYmxlSWY6IHsgbWFwVHlwZTogWydjdXN0b20nXSB9IH0gfSlcclxuICB1cGxvYWRTdHlsZTogc3RyaW5nO1xyXG4gIEBQcm9wZXJ0eSgn5YiH5o2i5oyJ6ZKuJylcclxuICBzaG93TWFwVHlwZVJhZGlvOiBib29sZWFuO1xyXG4gIEBQcm9wZXJ0eSgn5YWo5pmv5Zyw5Zu+JywgeyB0eXBlOiAnYm9vbGVhbicgfSlcclxuICBtaW5NYXBTaG93ID0gZmFsc2U7XHJcbiAgQFByb3BlcnR5KCfmmL7npLrkv6Hmga8nLCB7XHJcbiAgICB1aTogeyB3aWRnZXQ6ICdzZWxlY3QnIH0sXHJcbiAgICBlbnVtOiBbXHJcbiAgICAgIHsgbGFiZWw6ICfngrnlh7snLCB2YWx1ZTogJ2NsaWNrJyB9LFxyXG4gICAgICB7IGxhYmVsOiAn5oKs5YGcJywgdmFsdWU6ICdtb3VzZW92ZXInIH0sXHJcbiAgICBdLFxyXG4gIH0pXHJcbiAgc2hvd1R5cGUgPSAnY2xpY2snO1xyXG4gIEBQcm9wZXJ0eSgn5L+h5oGv56qX6IOM5pmvJywgeyB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9IH0pXHJcbiAgaW5mb1dpbmRvd0JhY2tncm91bmQ6IHN0cmluZztcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+Wtl+S9kycsIHsgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSB9KVxyXG4gIGluZm9XaW5kb3dDb2xvcjogc3RyaW5nO1xyXG4gIEBQcm9wZXJ0eSgn5L+h5oGv56qX5a695bqmJylcclxuICBpbmZvV2luZG93V2lkdGg6IG51bWJlcjtcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+mrmOW6picpXHJcbiAgaW5mb1dpbmRvd0hlaWdodDogbnVtYmVyO1xyXG4gIEBQcm9wZXJ0eSgn5L+h5oGv56qX5qih5p2/JywgeyB1aTogeyB3aWRnZXQ6ICd0ZXh0YXJlYScgfSB9KVxyXG4gIGluZm9XaW5kb3dUZW1wbGF0ZTogc3RyaW5nO1xyXG4gIEBQcm9wZXJ0eSgn5L+h5oGv56qX6L655qGGJywge1xyXG4gICAgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSxcclxuICAgIGV4YW1wbGU6IFsnI2ZmZmZmZicsICcjRjVBNjIzJywgJyNGOEU3MUMnLCAnIzUwRTNDMicsICcjMzI4NUZGJywgJyNCNDVGRkYnLCAnIzlCOUI5QicsIG51bGxdLFxyXG4gIH0pXHJcbiAgaW5mb1dpbmRvd0JvcmRlckNvbG9yOiBzdHJpbmc7XHJcbiAgQFByb3BlcnR5KCfpmpDol4/lsJbop5InKVxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGlkZUluZm9XaW5kb3dUYWlsJylcclxuICBoaWRlSW5mb1dpbmRvd1RhaWw6IGJvb2xlYW47XHJcbiAgQFByb3BlcnR5KCfpmpDol4/lhbPpl63mjInpkq4nKVxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGlkZUluZm9XaW5kb3dUb3AnKVxyXG4gIGhpZGVJbmZvV2luZG93VG9wOiBib29sZWFuO1xyXG4gIEBQcm9wZXJ0eSgn5Zyw5Zu+5ouW5YqoJywgeyB0eXBlOiAnYm9vbGVhbicgfSlcclxuICBkcmFnZ2luZyA9IHRydWU7XHJcblxyXG4gIEBQcm9wZXJ0eSgn6YGu572p6aKc6ImyJywge1xyXG4gICAgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSxcclxuICAgIGV4YW1wbGU6IFsnI2ZmZmZmZicsICcjRjVBNjIzJywgJyNGOEU3MUMnLCAnIzUwRTNDMicsICcjMzI4NUZGJywgJyNCNDVGRkYnLCAnIzlCOUI5QicsIG51bGxdLFxyXG4gIH0pXHJcbiAgc2hhZGVDb2xvciA9ICcjMDA0Mzk1JztcclxuICBAUHJvcGVydHkoJ+iDjOaZr+minOiJsicsIHtcclxuICAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXHJcbiAgICBleGFtcGxlOiBbJyNmZmZmZmYnLCAnI0Y1QTYyMycsICcjRjhFNzFDJywgJyM1MEUzQzInLCAnIzMyODVGRicsICcjQjQ1RkZGJywgJyM5QjlCOUInLCBudWxsXSxcclxuICB9KVxyXG4gIG1hcEJhY2tDb2xvcjogc3RyaW5nO1xyXG5cclxuICBAUHJvcGVydHkoJ+Wkmui+uee6v+iJsicsIHtcclxuICAgIHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0sXHJcbiAgICBleGFtcGxlOiBbJyNmZmZmZmYnLCAnI0Y1QTYyMycsICcjRjhFNzFDJywgJyM1MEUzQzInLCAnIzMyODVGRicsICcjQjQ1RkZGJywgJyM5QjlCOUInLCBudWxsXSxcclxuICB9KVxyXG4gIG1hcENpdHlDb2xvciA9ICcjNDFiN2ZmJztcclxuICBAUHJvcGVydHkoJ+WcsOWbvue8qeaUvicsIHtcclxuICAgIHVpOiB7IHdpZGdldDogJ215UmFuZ2UnLCBtaW46IDEsIG1heDogNDAsIHN0ZXA6IDEgfSxcclxuICB9KVxyXG4gIHpvb20gPSAxMjtcclxuICAvLyBAUHJvcGVydHkoJ+aUvuWkp+avlOS+iycsIHsgdHlwZTogJ251bWJlcicgfSlcclxuICAvLyBzY2FsZSA9IDE7XHJcbiAgQFByb3BlcnR5KCfpga7nvanpgI/mmI4nLCB7IHR5cGU6ICdudW1iZXInIH0pXHJcbiAgZmlsbE9wYWNpdHkgPSAwO1xyXG4gIEBQcm9wZXJ0eSgn5aSa6L6557q/57KXJywgeyB0eXBlOiAnbnVtYmVyJyB9KVxyXG4gIHN0cm9rZXNpemUgPSAyO1xyXG4gIEBQcm9wZXJ0eSgn6buR5aSc5qih5byPJywgeyB0eXBlOiAnYm9vbGVhbicsIHVpOiB7IGhpZGRlbjogdHJ1ZSB9IH0pXHJcbiAgbmlnaHRNb2RlID0gZmFsc2U7XHJcbiAgQFByb3BlcnR5KCczROinhuinkicpXHJcbiAgZW5hYmxlM0Q6IGJvb2xlYW47XHJcbiAgQFByb3BlcnR5KCflrprkvY3mjqfku7YnKVxyXG4gIHNob3dMb2NhdGlvbkNvbnRyb2w6IGJvb2xlYW47XHJcbiAgQFByb3BlcnR5KCfliJ3lp4vop5LluqYnLCB7IHR5cGU6ICdudW1iZXInLCB1aTogeyB2aXNpYmxlSWY6IHsgZW5hYmxlM0Q6IFt0cnVlXSB9IH0gfSlcclxuICB0aWx0ID0gNzM7XHJcbiAgLy8gQFByb3BlcnR5KCfkuK3lv4Pnu4/luqYnLCB7XHJcbiAgLy8gICB1aToge3dpZGdldDogJ215UmFuZ2UnLCBtaW46IC0xODAsIG1heDogMTgwLCBzdGVwOiAxfSxcclxuICAvLyB9KVxyXG4gIGNlbnRlckxuZyA9IDEyMC43O1xyXG4gIC8vIEBQcm9wZXJ0eSgn5Lit5b+D57qs5bqmJywge1xyXG4gIC8vICAgdWk6IHt3aWRnZXQ6ICdteVJhbmdlJywgbWluOiAtOTAsIG1heDogOTAsIHN0ZXA6IDF9LFxyXG4gIC8vIH0pXHJcbiAgY2VudGVyTGF0ID0gMjg7XHJcbiAgQFByb3BlcnR5KCfmmL7npLrnnIHluIInLCB7XHJcbiAgICB1aToge1xyXG4gICAgICB3aWRnZXQ6ICdteVVybFNlbGVjdCcsXHJcbiAgICAgIGFsbG93Q2xlYXI6IHRydWUsXHJcbiAgICAgIHVybDogJy9hc3NldHMvbWFwTGlzdEl0ZW0uanNvbicsXHJcbiAgICB9LFxyXG4gIH0pXHJcbiAgY2l0eU5hbWUgPSBudWxsO1xyXG4gIHBvaW50OiBhbnk7XHJcblxyXG4gIC8vIF9kYXRhID0gW1xyXG4gIC8vICAge1xyXG4gIC8vICAgICBvcHRpb25zOiB7XHJcbiAgLy8gICAgICAgaWNvbjoge1xyXG4gIC8vICAgICAgICAgaW1hZ2VVcmw6ICdhc3NldHMvaW1nL3NjcmVlbi9udW1iZXItZmxvcC5wbmcnLFxyXG4gIC8vICAgICAgICAgc2l6ZToge1xyXG4gIC8vICAgICAgICAgICBoZWlnaHQ6IDI2MCxcclxuICAvLyAgICAgICAgICAgd2lkdGg6IDI1MFxyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgcG9pbnQ6IHtcclxuICAvLyAgICAgICBsbmc6IDEyMC43LCAgIC8vIOe7j+W6plxyXG4gIC8vICAgICAgIGxhdDogMjgsICAgIC8vIOe6rOW6plxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9LFxyXG4gIC8vIF07XHJcbiAgLy8g5paH5a2X5qCH5rOoXHJcblxyXG4gIHB1YmxpYyB0ZXh0OiBzdHJpbmc7XHJcbiAgLy8gX2NoaWxkcmVuID0gW107XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIG1hcDogYW55O1xyXG4gIGVkaXQ6IGJvb2xlYW47XHJcbiAgLy8gbWFya2VyVGllckNsaWNrOiBhbnk7XHJcbiAgLy8gcGluZ3lhbmcgPSAnJztcclxuICAvLyBydWlhbiA9ICcnO1xyXG4gIEBEYXRhKHtcclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgbG5nOiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e7j+W6picgfSxcclxuICAgICAgbGF0OiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e6rOW6picgfSxcclxuICAgIH0sXHJcbiAgfSlcclxuICBfZGF0YTogYW55W10gPSBbeyBsbmc6IDEyMC43LCBsYXQ6IDI4IH1dO1xyXG4gIEBEYXRhT3V0cHV0KFsnbG5nJywgJ2xhdCddKVxyXG4gIEBFdmVudCgn5Lit5b+D54K55pS55Y+YJywge1xyXG4gICAgcGFyYW1zOiB7IHByb3BlcnRpZXM6IHsgbG5nOiB7IHRpdGxlOiAn57uP5bqmJywgdHlwZTogJ251bWJlcicgfSwgbGF0OiB7IHRpdGxlOiAn57qs5bqmJywgdHlwZTogJ251bWJlcicgfSB9IH0sXHJcbiAgfSlcclxuICBkYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBEYXRhT3V0cHV0KCfnvKnmlL7nrYnnuqcnKVxyXG4gIEBFdmVudCgn57yp5pS+Jywge1xyXG4gICAgcGFyYW1zOiAn57yp5pS+562J57qnJyxcclxuICB9KVxyXG4gIHpvb21DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBARXZlbnQoJ+WcsOWbvueCueWHuycsIHtcclxuICAgIHBhcmFtczogeyBwcm9wZXJ0aWVzOiB7IGxuZzogeyB0aXRsZTogJ+e7j+W6picsIHR5cGU6ICdudW1iZXInIH0sIGxhdDogeyB0aXRsZTogJ+e6rOW6picsIHR5cGU6ICdudW1iZXInIH0gfSB9LFxyXG4gIH0pXHJcbiAgbWFwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBjb250YWluZXI6IEVsZW1lbnRSZWY7XHJcbiAgY2hpbGRyZW46IGFueVtdO1xyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBkZXN0cm95ZWQ6IGJvb2xlYW47XHJcbiAgLy8gY29udGFpbmVyU3R5bGU6IGFueSA9IHt9O1xyXG4gIC8vIHVubG9hZGVkQ2hpbGRyZW4gPSB7fTtcclxuICBvdmVybGF5c01hcCA9IHt9O1xyXG5cclxuICAvLyBASG9zdEJpbmRpbmcoJ2NsYXNzLmhpZGVJbmZvV2luZG93VGFpbCcpXHJcbiAgLy8gaGlkZUluZm9XaW5kb3dUYWlsOiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIGluaXRlZDogKG1hcDogYW55KSA9PiB2b2lkO1xyXG4gIGluaXQkID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgIHRoaXMuaW5pdGVkID0gcmVzb2x2ZTtcclxuICB9KTtcclxuICB2aWV3OiBhbnk7XHJcbiAgcGlja2VyRXZlbnQ6IGFueTtcclxuICBwaWNrZXJJdGVtOiBhbnk7XHJcbiAgcGlja2VyVGltZW91dDogYW55O1xyXG4gIG1hcFR5cGVFbnVtID0gTWFwVHlwZUVudW0uc2xpY2UoMCwgMyk7XHJcbiAgZGFya1N0eWxlOiBhbnk7XHJcbiAgZmlyc3RPcGVuOiBib29sZWFuO1xyXG4gIGZpcnN0T3BlblByb21pc2U6IFByb21pc2U8dm9pZD47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGJhaWR1TWFwU2VydmljZTogQmFpZHVNYXBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHNjYWxlJDogU2NhbGVTdWJqZWN0LFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHdpZGdldFJlZjogV2lkZ2V0UmVmLFxyXG4gICkge31cclxuXHJcbiAgZ2V0IGVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgYWRkTGF5ZXIobGF5ZXI6IGFueSkge1xyXG4gICAgaWYgKHRoaXMudmlldykge1xyXG4gICAgICB0aGlzLnZpZXcuYWRkTGF5ZXIobGF5ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTGF5ZXIobGF5ZXI6IGFueSkge1xyXG4gICAgaWYgKHRoaXMudmlldykge1xyXG4gICAgICB0aGlzLnZpZXcucmVtb3ZlTGF5ZXIobGF5ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuX2RhdGEgJiYgdGhpcy5fZGF0YVswXSkge1xyXG4gICAgICB0aGlzLmNlbnRlckxuZyA9ICt0aGlzLl9kYXRhWzBdLmxuZztcclxuICAgICAgdGhpcy5jZW50ZXJMYXQgPSArdGhpcy5fZGF0YVswXS5sYXQ7XHJcbiAgICAgIHRoaXMuc2V0Q2VudGVyKHRoaXMuY2VudGVyTG5nLCB0aGlzLmNlbnRlckxhdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnNjYWxlJCkge1xyXG4gICAgICAvLyDov5nmmK/kuLrkuobop6PlhrPlnLDlm77nvKnmlL7kuK3lv4PkuI3lnKjpvKDmoIfmiYDlnKjkvY3nva7nmoTpl67pophcclxuICAgICAgc2NhbGVBZGFwdGVyKHRoaXMuc2NhbGUkLCB0aGlzLmRlc3Ryb3kkLCB0aGlzLnpvbmUsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLndpZGdldFJlZik7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLmluaXRNYXAoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRNYXAoKSB7XHJcbiAgICBhd2FpdCB0aGlzLmJhaWR1TWFwU2VydmljZS5sb2FkTWFwR0woKTtcclxuICAgIGF3YWl0IHRoaXMuYmFpZHVNYXBTZXJ2aWNlLmxvYWRNYXBWR0woKTtcclxuICAgIHRoaXMubWFwVHlwZVZhbHVlID0gdGhpcy5tYXBUeXBlO1xyXG4gICAgLy8g5YW85a656ICB55qE6YWN572uXHJcbiAgICBpZiAodGhpcy5tYXBUeXBlID09IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMudXBsb2FkU3R5bGUpIHtcclxuICAgICAgICB0aGlzLm1hcFR5cGVWYWx1ZSA9ICdjdXN0b20nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmlnaHRNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5tYXBUeXBlVmFsdWUgPSAnZGFyayc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5kZXN0cm95ZWQpIHtcclxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICB0aGlzLm1hcCA9IG5ldyBCTWFwR0wuTWFwKHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIHsgcmVzdHJpY3RDZW50ZXI6IGZhbHNlIH0pO1xyXG4gICAgICAgIHRoaXMubWFwLmNlbnRlckFuZFpvb20obmV3IEJNYXBHTC5Qb2ludCh0aGlzLmNlbnRlckxuZywgdGhpcy5jZW50ZXJMYXQpLCB0aGlzLnpvb20pOyAvLyDorr7nva7kuK3lv4PngrnlkoznvKnmlL7nuqfliKtcclxuICAgICAgICB0aGlzLm1hcC5lbmFibGVTY3JvbGxXaGVlbFpvb20oKTsgLy8g5ZCv55So5rua6L2u6L+b6KGM57yp5pS+5Yqf6IO9XHJcbiAgICAgICAgLy8gdmFyIGRpc3QgPSBuZXcgQk1hcEdMLkRpc3RyaWN0TGF5ZXIoe1xyXG4gICAgICAgIC8vICAgbmFtZTogJyjmuKnlt57luIIpJyxcclxuICAgICAgICAvLyAgIGtpbmQ6IDEsXHJcbiAgICAgICAgLy8gICAgZmlsbENvbG9yOiAnI2ZmZicsXHJcbiAgICAgICAgLy8gICBmaWxsT3BhY2l0eTogMC4xLFxyXG4gICAgICAgIC8vICAgc3Ryb2tlQ29sb3I6ICcjZGFlYWZhJyxcclxuICAgICAgICAvLyAgIHZpZXdwb3J0OiB0cnVlLFxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIC8vIHRoaXMubWFwLmFkZERpc3RyaWN0TGF5ZXIoZGlzdCk7XHJcbiAgICAgICAgdGhpcy5tYXBUeXBlQ2hhbmdlKHRoaXMubWFwVHlwZVZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0IHx8IHRoaXMuZHJhZ2dpbmcgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICB0aGlzLm1hcC5kaXNhYmxlRHJhZ2dpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlM0QpIHtcclxuICAgICAgICAgIHRoaXMubWFwLnNldFRpbHQodGhpcy50aWx0ID09IG51bGwgPyA3MyA6IHRoaXMudGlsdCwgeyBub0FuaW1hdGlvbjogdHJ1ZSB9KTtcclxuICAgICAgICAgIHRoaXMubWFwLnNldERpc3BsYXlPcHRpb25zKHsgc2t5Q29sb3JzOiBbJ3JnYmEoMCwgMCwgMCwgMCknXSB9KTsgLy8g6ZqQ6JeP5aSp56m6XHJcbiAgICAgICAgICAvLyBjb25zdCBuYXZpM0RDdHJsID0gbmV3IEJNYXBHTC5OYXZpZ2F0aW9uQ29udHJvbDNEKCk7IC8vIOa3u+WKoDNE5o6n5Lu2XHJcbiAgICAgICAgICAvLyB0aGlzLm1hcC5hZGRDb250cm9sKG5hdmkzREN0cmwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1hcC5kaXNhYmxlVGlsdCgpO1xyXG4gICAgICAgICAgdGhpcy5tYXAuZGlzYWJsZVJvdGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zaG93TG9jYXRpb25Db250cm9sKSB7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICAgICAgICAvLyDmjqfku7bnmoTlgZzpnaDkvY3nva7vvIjlj6/pgInvvIzpu5jorqTlt6bkuIrop5LvvIlcclxuICAgICAgICAgICAgYW5jaG9yOiBCTUFQX0FOQ0hPUl9UT1BfTEVGVCxcclxuICAgICAgICAgICAgLy8g5o6n5Lu25Z+65LqO5YGc6Z2g5L2N572u55qE5YGP56e76YeP77yI5Y+v6YCJ77yJXHJcbiAgICAgICAgICAgIG9mZnNldDogbmV3IEJNYXBHTC5TaXplKDIwLCAyMCksXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgbGV0IGxvY2F0aW9uQ29udHJvbCA9IG5ldyBCTWFwR0wuTG9jYXRpb25Db250cm9sKG9wdGlvbnMpO1xyXG4gICAgICAgICAgLy8g5bCG5o6n5Lu25re75Yqg5Yiw5Zyw5Zu+5LiKXHJcbiAgICAgICAgICB0aGlzLm1hcC5hZGRDb250cm9sKGxvY2F0aW9uQ29udHJvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1pbk1hcFNob3cpIHtcclxuICAgICAgICAgIGNvbnN0IHN0Q3RybCA9IG5ldyBCTWFwR0wuUGFub3JhbWFDb250cm9sKCk7XHJcbiAgICAgICAgICBzdEN0cmwuc2V0T2Zmc2V0KG5ldyBCTWFwR0wuU2l6ZSgyMCwgMjApKTtcclxuICAgICAgICAgIHRoaXMubWFwLmFkZENvbnRyb2woc3RDdHJsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaW5mb1dpbmRvd0JhY2tncm91bmQpIHtcclxuICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pbmZvLXdpbmRvdy1iYWNrZ3JvdW5kJywgdGhpcy5pbmZvV2luZG93QmFja2dyb3VuZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmluZm9XaW5kb3dDb2xvcikge1xyXG4gICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWluZm8td2luZG93LWNvbG9yJywgdGhpcy5pbmZvV2luZG93Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pbmZvV2luZG93Qm9yZGVyQ29sb3IpIHtcclxuICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pbmZvLXdpbmRvdy1ib3JkZXItY29sb3InLCB0aGlzLmluZm9XaW5kb3dCb3JkZXJDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWFwLmFkZEV2ZW50TGlzdGVuZXIoJ21vdmVlbmQnLCAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNlbnRlciA9IHRoaXMubWFwLmdldENlbnRlcigpO1xyXG4gICAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQoY2VudGVyKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1hcC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgICAgICAgdGhpcy5tYXBDbGljay5lbWl0KGV2ZW50LmxhdGxuZyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignem9vbWVuZCcsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy56b29tQ2hhbmdlLmVtaXQodGhpcy5tYXAuZ2V0Wm9vbSgpKTtcclxuICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KHRoaXMubWFwLmdldENlbnRlcigpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZpZXcgPSBuZXcgbWFwdmdsLlZpZXcoe1xyXG4gICAgICAgICAgbWFwOiB0aGlzLm1hcCxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1hcExvYWRlZCh0aGlzLm1hcCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmluaXRlZCh0aGlzLm1hcCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDZW50ZXIobG5nOiBudW1iZXIsIGxhdDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5tYXAgJiYgbG5nICYmIGxhdCkge1xyXG4gICAgICBjb25zdCBjZW50ZXIgPSB0aGlzLm1hcC5nZXRDZW50ZXIoKTtcclxuICAgICAgaWYgKGNlbnRlci5sbmcgIT0gbG5nIHx8IGNlbnRlci5sYXQgIT0gbGF0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRDZW50ZXJBbmRab29tKGxuZywgbGF0LCB0aGlzLm1hcC5nZXRab29tKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDZW50ZXJBbmRab29tKGxuZzogbnVtYmVyLCBsYXQ6IG51bWJlciwgem9vbTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBjZW50ZXIgPSB0aGlzLm1hcC5nZXRDZW50ZXIoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRab29tID0gdGhpcy5tYXAuZ2V0Wm9vbSgpO1xyXG4gICAgLy8g6K+v5beu6IyD5Zu05YaF5LiN56e75YqoLOmYsuatouiDjOaZr+aKluWKqFxyXG4gICAgaWYgKHpvb20gIT0gY3VycmVudFpvb20gfHwgTWF0aC5hYnMobG5nIC0gY2VudGVyLmxuZykgPiAxZS0xMyB8fCBNYXRoLmFicyhsYXQgLSBjZW50ZXIubGF0KSA+IDFlLTcpIHtcclxuICAgICAgY29uc3QgcG9pbnQgPSBuZXcgQk1hcEdMLlBvaW50KGxuZywgbGF0KTtcclxuICAgICAgdGhpcy5tYXAuY2VudGVyQW5kWm9vbShwb2ludCwgem9vbSwgeyB0aWx0OiB0aGlzLm1hcC5nZXRUaWx0KCkgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja7nu4/nuqzluqbojIPlm7Torr7nva7kuK3lv4PlkoznvKnmlL7nrYnnuqdcclxuICAgKiBAcGFyYW0gbWluTG5nXHJcbiAgICogQHBhcmFtIG1heExuZ1xyXG4gICAqIEBwYXJhbSBtaW5MYXRcclxuICAgKiBAcGFyYW0gbWF4TGF0XHJcbiAgICovXHJcbiAgc2V0UmVjdENlbnRlckFuZFpvb20obWluTG5nOiBudW1iZXIsIG1heExuZzogbnVtYmVyLCBtaW5MYXQ6IG51bWJlciwgbWF4TGF0OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2V0Q2VudGVyQW5kWm9vbSgobWF4TG5nICsgbWluTG5nKSAvIDIsIChtYXhMYXQgKyBtaW5MYXQpIC8gMiwgdGhpcy5nZXRab29tKG1heExuZywgbWluTG5nLCBtYXhMYXQsIG1pbkxhdCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Wm9vbShtYXhMbmc6IG51bWJlciwgbWluTG5nOiBudW1iZXIsIG1heExhdDogbnVtYmVyLCBtaW5MYXQ6IG51bWJlcikge1xyXG4gICAgY29uc3Qgem9vbXMgPSBbXHJcbiAgICAgIDUwLCAxMDAsIDIwMCwgNTAwLCAxMDAwLCAyMDAwLCA1MDAwLCAxMDAwMCwgMjAwMDAsIDI1MDAwLCA1MDAwMCwgMTAwMDAwLCAyMDAwMDAsIDUwMDAwMCwgMTAwMDAwMCwgMjAwMDAwMCxcclxuICAgIF07IC8v57qn5YirMTjliLAz44CCXHJcbiAgICBjb25zdCBwb2ludEEgPSBuZXcgQk1hcEdMLlBvaW50KG1heExuZywgbWF4TGF0KTsgLy8g5Yib5bu654K55Z2Q5qCHQVxyXG4gICAgY29uc3QgcG9pbnRCID0gbmV3IEJNYXBHTC5Qb2ludChtaW5MbmcsIG1pbkxhdCk7IC8vIOWIm+W7uueCueWdkOagh0JcclxuICAgIGNvbnN0IGRpc3RhbmNlID0gK3RoaXMubWFwLmdldERpc3RhbmNlKHBvaW50QSwgcG9pbnRCKS50b0ZpeGVkKDEpOyAvL+iOt+WPluS4pOeCuei3neemuyzkv53nlZnlsI/mlbDngrnlkI7kuKTkvY1cclxuICAgIGNvbnN0IGkgPSB6b29tcy5maW5kSW5kZXgoKHpvb20pID0+IHpvb20gLSBkaXN0YW5jZSA+IDApO1xyXG4gICAgaWYgKGkgPT09IC0xKSB7XHJcbiAgICAgIHJldHVybiA1O1xyXG4gICAgfVxyXG4gICAgLy/kuYvmiYDku6XkvJrlpJoz77yM5piv5Zug5Li65Zyw5Zu+6IyD5Zu05bi45bi45piv5q+U5L6L5bC66Led56a755qEMTDlgI3ku6XkuIrjgILmiYDku6XnuqfliKvkvJrlop7liqAz44CCXHJcbiAgICByZXR1cm4gMTggLSBpICsgMztcclxuICB9XHJcblxyXG4gIG9wZW5JbmZvV2luZG93KGRhdGE6IGFueSwgbG5nOiBudW1iZXIsIGxhdDogbnVtYmVyKSB7XHJcbiAgICBpZiAoZGF0YS5pbmZvcm1hdGlvbiB8fCB0aGlzLmluZm9XaW5kb3dUZW1wbGF0ZSkge1xyXG4gICAgICBjb25zdCBwb2ludCA9IG5ldyBCTWFwR0wuUG9pbnQoK2xuZywgK2xhdCk7XHJcbiAgICAgIC8vIGxldCBvZmZzZXRZID0gLTI1O1xyXG4gICAgICAvLyBpZiAodGhpcy5oaWRlSW5mb1dpbmRvd1RhaWwpIHtcclxuICAgICAgLy8gICBvZmZzZXRZID0gMDtcclxuICAgICAgLy8gfVxyXG4gICAgICBsZXQgaW5mb3JtYXRpb24gPSBkYXRhLmluZm9ybWF0aW9uO1xyXG4gICAgICBpZiAodGhpcy5pbmZvV2luZG93VGVtcGxhdGUpIHtcclxuICAgICAgICBpbmZvcm1hdGlvbiA9IFRlbXBsYXRlVXRpbC5wYXJzZSh0aGlzLmluZm9XaW5kb3dUZW1wbGF0ZSwgZGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICBvZmZzZXQ6IG5ldyBCTWFwR0wuU2l6ZSgwLCAwKSxcclxuICAgICAgICB3aWR0aDogdGhpcy5pbmZvV2luZG93V2lkdGggfHwgMCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMuaW5mb1dpbmRvd0hlaWdodCB8fCAwLFxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBpbmZvV2luZG93ID0gbmV3IEJNYXBHTC5JbmZvV2luZG93KGluZm9ybWF0aW9uLCBvcHRpb25zKTtcclxuICAgICAgLy8g56ys5LiA5qyh5omT5byA5L+h5oGv56qX5Y+j5ZCO5Zyo55+t5pe26Ze05YWz6Zet5oiW6YeN5paw5omT5byA5Lya5a+86Ie0Y2xpY2vkuovku7blpLHmlYjvvIzkuLTml7bop6PlhrPmlrnmoYjmmK/nrKzkuIDmrKHmiZPlvIDlkI4wLjXnp5LlhoXkuI3lhbPpl61cclxuICAgICAgaWYgKCF0aGlzLmZpcnN0T3Blbikge1xyXG4gICAgICAgIGlmICh0aGlzLmZpcnN0T3BlblByb21pc2UpIHtcclxuICAgICAgICAgIHRoaXMuZmlyc3RPcGVuUHJvbWlzZS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tYXAub3BlbkluZm9XaW5kb3coaW5mb1dpbmRvdywgcG9pbnQpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZmlyc3RPcGVuUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlyc3RPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmZpcnN0T3BlblByb21pc2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5tYXAub3BlbkluZm9XaW5kb3coaW5mb1dpbmRvdywgcG9pbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByYXdDbG9zZSA9IGluZm9XaW5kb3cuY2xvc2U7XHJcbiAgICAgICAgaW5mb1dpbmRvdy5jbG9zZSA9ICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmZpcnN0T3BlblByb21pc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5maXJzdE9wZW5Qcm9taXNlLnRoZW4oKCkgPT4gcmF3Q2xvc2UuY2FsbChpbmZvV2luZG93KSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByYXdDbG9zZS5jYWxsKGluZm9XaW5kb3cpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tYXAub3BlbkluZm9XaW5kb3coaW5mb1dpbmRvdywgcG9pbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBpbmZvV2luZG93O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2FudmFzT3ZlcmxheShjaGlsZDogYW55KSB7XHJcbiAgICBsZXQgY2FudmFzT3ZlcmxheTtcclxuICAgIGlmICh0aGlzLmVuYWJsZTNEKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSBjaGlsZC5pdGVtO1xyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIHZhciBwU3RhcnQgPSBuZXcgQk1hcEdMLlBvaW50KGl0ZW0uc3RhcnQubG5nLCBpdGVtLnN0YXJ0LmxhdCk7XHJcbiAgICAgICAgdmFyIHBFbmQgPSBuZXcgQk1hcEdMLlBvaW50KGl0ZW0uZW5kLmxuZywgaXRlbS5lbmQubGF0KTtcclxuICAgICAgICB2YXIgYm91bmRzID0gbmV3IEJNYXBHTC5Cb3VuZHMobmV3IEJNYXBHTC5Qb2ludChwU3RhcnQubG5nLCBwRW5kLmxhdCksIG5ldyBCTWFwR0wuUG9pbnQocEVuZC5sbmcsIHBTdGFydC5sYXQpKTtcclxuICAgICAgICBjYW52YXNPdmVybGF5ID0gbmV3IEJNYXBHTC5Hcm91bmRPdmVybGF5KGJvdW5kcywge1xyXG4gICAgICAgICAgdHlwZTogJ2NhbnZhcycsXHJcbiAgICAgICAgICB1cmw6IGl0ZW0uY2FudmFzLFxyXG4gICAgICAgICAgb3BhY2l0eTogMSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcG9pbnRUb1BpeGVsID0gKGRhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBwb2ludCA9IG5ldyBCTWFwR0wuUG9pbnQoZGF0YS5sbmcsIGRhdGEubGF0KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5tYXAucG9pbnRUb1BpeGVsKHBvaW50KTtcclxuICAgICAgfTtcclxuICAgICAgY2FudmFzT3ZlcmxheSA9IG5ldyBCTWFwR0wuQ2FudmFzTGF5ZXIoe1xyXG4gICAgICAgIHBhbmVOYW1lOiAnbWFya2VyU2hhZG93JyxcclxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHZhciBjdHggPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgICAgaWYgKCFjdHgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7XHJcbiAgICAgICAgICBjaGlsZC51cGRhdGUoY3R4LCBwb2ludFRvUGl4ZWwpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhbnZhc092ZXJsYXk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMudmlldykge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMudmlldy5kZXN0cm95KCk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXApIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLm1hcC5kZXN0cm95KCk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBtYXBMb2FkZWQobWFwOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNpdHlOYW1lKSB7XHJcbiAgICAgIGlmICh0aGlzLmNpdHlOYW1lID09PSAn5rip5beeJykge1xyXG4gICAgICAgIHRoaXMuY2l0eU5hbWUgPSAnd2VuemhvdSc7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QganNvbjogYW55ID0gYXdhaXQgdGhpcy5odHRwLmdldCgnYXNzZXRzL2VjaGFydHMvbWFwL2pzb24vJyArIHRoaXMuY2l0eU5hbWUgKyAnLmpzb24nKS50b1Byb21pc2UoKTtcclxuICAgICAgY29uc3QgcG9seWdvbkRhdGEgPSBbXTtcclxuICAgICAgbGV0IGVuY29kZVNjYWxlID0ganNvbi5VVEY4U2NhbGUgfHwgMTAyNDtcclxuICAgICAganNvbi5mZWF0dXJlcy5mb3JFYWNoKCh7IGdlb21ldHJ5IH0pID0+IHtcclxuICAgICAgICBnZW9tZXRyeS5jb29yZGluYXRlcyA9IChnZW9tZXRyeS5jb29yZGluYXRlcyBhcyBhbnlbXSkuZm9yRWFjaCgoY29vcmRpbmF0ZSwgaSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gKGNvb3JkaW5hdGUgYXMgYW55W10pLm1hcCgocG9pbnRzLCBqKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGpzb24uVVRGOEVuY29kaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBwb2ludHMgPSB0aGlzLmRlY29kZVBvbHlnb24ocG9pbnRzLCBnZW9tZXRyeS5lbmNvZGVPZmZzZXRzW2ldW2pdLCBlbmNvZGVTY2FsZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiBwb2ludHM7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBwb2x5Z29uRGF0YS5wdXNoKGNvb3JkaW5hdGVzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChqc29uLlVURjhFbmNvZGluZykge1xyXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGUgPSB0aGlzLmRlY29kZVBvbHlnb24oY29vcmRpbmF0ZSwgZ2VvbWV0cnkuZW5jb2RlT2Zmc2V0c1tpXSwgZW5jb2RlU2NhbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBvbHlnb25EYXRhLnB1c2goW2Nvb3JkaW5hdGVdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcclxuICAgICAgICAgICAgdHlwZTogJ011bHRpUG9seWdvbicsXHJcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBwb2x5Z29uRGF0YSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgdmFyIGxheWVyID0gbmV3IG1hcHZnbC5Qb2x5Z29uTGF5ZXIoe1xyXG4gICAgICAgIGxpbmVDb2xvcjogdGhpcy5tYXBDaXR5Q29sb3IsXHJcbiAgICAgICAgbGluZVdpZHRoOiB0aGlzLnN0cm9rZXNpemUgfHwgMixcclxuICAgICAgICBmaWxsQ29sb3I6IHRoaXMuc2hhZGVDb2xvcixcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIHJlbmRlck9yZGVyOiAtMixcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudmlldy5hZGRMYXllcihsYXllcik7XHJcbiAgICAgIGlmICh0aGlzLm1hcEJhY2tDb2xvciAmJiAhdGhpcy5tYXBCYWNrQ29sb3IubWF0Y2goL3JnYmFcXChcXGQrLFxcZCssXFxkKywwXFwpLykpIHtcclxuICAgICAgICB2YXIgbWFza0xheWVyID0gbmV3IG1hcHZnbC5NYXNrTGF5ZXIoe1xyXG4gICAgICAgICAgY29sb3I6IHRoaXMubWFwQmFja0NvbG9yLFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHJlbmRlck9yZGVyOiAtMyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZpZXcuYWRkTGF5ZXIobWFza0xheWVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVjb2RlUG9seWdvbihjb29yZGluYXRlOiBzdHJpbmcsIGVuY29kZU9mZnNldHM6IG51bWJlcltdLCBlbmNvZGVTY2FsZTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcclxuICAgIGxldCBwcmV2WCA9IGVuY29kZU9mZnNldHNbMF07XHJcbiAgICBsZXQgcHJldlkgPSBlbmNvZGVPZmZzZXRzWzFdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRpbmF0ZS5sZW5ndGg7IGkgKz0gMikge1xyXG4gICAgICB2YXIgeCA9IGNvb3JkaW5hdGUuY2hhckNvZGVBdChpKSAtIDY0O1xyXG4gICAgICB2YXIgeSA9IGNvb3JkaW5hdGUuY2hhckNvZGVBdChpICsgMSkgLSA2NDtcclxuICAgICAgLy8gWmlnWmFnIGRlY29kaW5nXHJcbiAgICAgIHggPSAoeCA+PiAxKSBeIC0oeCAmIDEpO1xyXG4gICAgICB5ID0gKHkgPj4gMSkgXiAtKHkgJiAxKTtcclxuICAgICAgLy8gRGVsdGEgZGVvY2RpbmdcclxuICAgICAgeCArPSBwcmV2WDtcclxuICAgICAgeSArPSBwcmV2WTtcclxuXHJcbiAgICAgIHByZXZYID0geDtcclxuICAgICAgcHJldlkgPSB5O1xyXG4gICAgICAvLyBEZXF1YW50aXplXHJcbiAgICAgIHJlc3VsdC5wdXNoKFt4IC8gZW5jb2RlU2NhbGUsIHkgLyBlbmNvZGVTY2FsZV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBtYXBUeXBlQ2hhbmdlKG1hcFR5cGU6IHN0cmluZykge1xyXG4gICAgc3dpdGNoIChtYXBUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ2RhcmsnOlxyXG4gICAgICAgIGlmICghdGhpcy5kYXJrU3R5bGUpIHtcclxuICAgICAgICAgIHRoaXMuZGFya1N0eWxlID0gYXdhaXQgdGhpcy5odHRwLmdldCgnYXNzZXRzL2VjaGFydHMvbWFwL2pzb24vY3VzdG9tX21hcC5qc29uJykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWFwLnNldE1hcFR5cGUoQk1BUF9OT1JNQUxfTUFQKTtcclxuICAgICAgICB0aGlzLm1hcC5zZXRNYXBTdHlsZVYyKHsgc3R5bGVKc29uOiB0aGlzLmRhcmtTdHlsZSB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc2F0ZWxsaXRlJzpcclxuICAgICAgICB0aGlzLm1hcC5zZXRNYXBUeXBlKEJNQVBfU0FURUxMSVRFX01BUCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2N1c3RvbSc6XHJcbiAgICAgICAgaWYgKHRoaXMudXBsb2FkU3R5bGUpIHtcclxuICAgICAgICAgIGNvbnN0IHN0eWxlSnNvbiA9IGF3YWl0IHRoaXMuaHR0cC5nZXQodGhpcy51cGxvYWRTdHlsZSkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICB0aGlzLm1hcC5zZXRNYXBUeXBlKEJNQVBfTk9STUFMX01BUCk7XHJcbiAgICAgICAgICB0aGlzLm1hcC5zZXRNYXBTdHlsZVYyKHsgc3R5bGVKc29uIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLm1hcC5zZXRNYXBUeXBlKEJNQVBfTk9STUFMX01BUCk7XHJcbiAgICAgICAgdGhpcy5tYXAuc2V0TWFwU3R5bGVWMih7IHN0eWxlSnNvbjogbnVsbCB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|