@vgroup/dialbox 0.2.5 → 0.2.6
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/esm2020/lib/components/call-progress/call-progress.component.mjs +19 -17
- package/esm2020/lib/components/call-progress/incoming-call/incoming-call.component.mjs +19 -25
- package/fesm2015/vgroup-dialbox.mjs +36 -40
- package/fesm2015/vgroup-dialbox.mjs.map +1 -1
- package/fesm2020/vgroup-dialbox.mjs +36 -40
- package/fesm2020/vgroup-dialbox.mjs.map +1 -1
- package/lib/components/call-progress/call-progress.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -176,33 +176,27 @@ export class IncomingCallComponent {
|
|
|
176
176
|
return false;
|
|
177
177
|
}
|
|
178
178
|
onClickExpand(data) {
|
|
179
|
-
if (this.selectedIncomingCall === data && this.
|
|
180
|
-
|
|
181
|
-
const updatedCall = {
|
|
182
|
-
...this.selectedIncomingCall,
|
|
183
|
-
isClickExpand: false
|
|
184
|
-
};
|
|
179
|
+
if (this.selectedIncomingCall === data && this.isClickExpand) {
|
|
180
|
+
this.isClickExpand = false;
|
|
185
181
|
this.selectedIncomingCall = null;
|
|
186
|
-
this.selectedIncomingCallInfo.emit(
|
|
182
|
+
this.selectedIncomingCallInfo.emit({});
|
|
187
183
|
return;
|
|
188
184
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
isClickExpand
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
if (!updatedCall.userInfo || updatedCall.userInfo?.status === 201) {
|
|
205
|
-
this.getUserInformation(updatedCall);
|
|
185
|
+
this.isClickExpand = true;
|
|
186
|
+
this.selectedIncomingCall = data;
|
|
187
|
+
if (this.selectedIncomingCall) {
|
|
188
|
+
this.selectedIncomingCall['isClickExpand'] = true;
|
|
189
|
+
if (this.newIncomingCallsList && this.newIncomingCallsList.length > 0) {
|
|
190
|
+
this.newIncomingCallsList.forEach((call) => {
|
|
191
|
+
if (call !== this.selectedIncomingCall) {
|
|
192
|
+
call['isClickExpand'] = false;
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
this.selectedIncomingCallInfo.emit(this.selectedIncomingCall);
|
|
197
|
+
if (!this.selectedIncomingCall.userInfo || this.selectedIncomingCall.userInfo.status == 201) {
|
|
198
|
+
this.getUserInformation(this.selectedIncomingCall);
|
|
199
|
+
}
|
|
206
200
|
}
|
|
207
201
|
}
|
|
208
202
|
getUserInformation(incomingCallData) {
|
|
@@ -319,4 +313,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
319
313
|
}], selectedIncomingCallInfo: [{
|
|
320
314
|
type: Output
|
|
321
315
|
}] } });
|
|
322
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jb21pbmctY2FsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvY29tcG9uZW50cy9jYWxsLXByb2dyZXNzL2luY29taW5nLWNhbGwvaW5jb21pbmctY2FsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvY29tcG9uZW50cy9jYWxsLXByb2dyZXNzL2luY29taW5nLWNhbGwvaW5jb21pbmctY2FsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSXhILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7OztBQVE5QyxNQUFNLE9BQU8scUJBQXFCO0lBc0I5QixZQUNZLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixtQkFBd0M7UUFGeEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBckJwRCxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMseUJBQW9CLEdBQVEsRUFBRSxDQUFDO1FBRy9CLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBR3pCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FB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QUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtZQUN4RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBQVEsb0NBQW9DO1NBQ2hGO0lBQ0gsQ0FBQzs7bUhBelVJLHFCQUFxQjt1R0FBckIscUJBQXFCLDhVQ2ZsQywycWZBaU9NOzRGRGxOTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO3FLQUtsQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBY0ksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyx3QkFBd0I7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGwsIERldmljZSB9IGZyb20gJ0B0d2lsaW8vdm9pY2Utc2RrJztcbmltcG9ydCB7IEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2V4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFR3aWxpb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3R3aWxpby5zZXJ2aWNlJztcbmltcG9ydCB7IEdsb2JhbENvbnN0YW50IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2dsb2JhbC1jb25zdGFudCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9Ob3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgc3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5pbXBvcnQgeyBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWluY29taW5nLWNhbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5jb21pbmctY2FsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2luY29taW5nLWNhbGwuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEluY29taW5nQ2FsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgaW5jb21pbmdDYWxsRGF0YTogYW55O1xuICAgIEBJbnB1dCgpIG5ld0luY29taW5nQ2FsbHNMaXN0OiBhbnk7XG4gICAgQElucHV0KCkgZGV2aWNlSWQ6IGFueTtcbiAgICBzaG93UmluZ0FuaW1hdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gICAgc2VsZWN0ZWRJbmNvbWluZ0NhbGw6IGFueSA9IHt9O1xuICAgIHR3aWxpb0NhbGxEYXRhPzogQ2FsbDtcbiAgICB0d2lsaW9BdXRoSWQ/OiBzdHJpbmc7XG4gICAgZGVkaWNhdGVkTnVtOnN0cmluZyA9ICcnO1xuICAgIENhbGxTaWQ6IGFueTtcbiAgICByZWNvcmRDYWxsPzogYm9vbGVhbjtcbiAgICBzaG91bGRSZWNvcmRDYWxsOiBib29sZWFuID0gZmFsc2U7XG4gICAgaXNDbGlja0V4cGFuZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGlzUmVjb3JkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gICAgaXNQYXVzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpc1R3aWxpb0Nvbm5lY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIGNsb3NlSW5jb21pbmdDYWxsRGl2OiBFdmVudEVtaXR0ZXI8eyBzaG93OiBudW1iZXIsIGNhbGw6IGFueSB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzaG93OiBudW1iZXIsIGNhbGw6IGFueSB9PigpO1xuICAgIEBPdXRwdXQoKSBpbmNvbWluZ0NhbGxzTmV3TGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJbmNvbWluZ0NhbGxJbmZvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIGlzTXV0ZT86IGJvb2xlYW47XG4gICAgXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0d2lsaW9TZXJ2aWNlOiBUd2lsaW9TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcml2Y2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICApIHsgXG4gICAgICAgIGNvbnNvbGUubG9nKCdJbmNvbWluZ0NhbGxDb21wb25lbnQnKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuXG5cbiAgICAgIC8vIHRoaXMudHdpbGlvU2VydmljZS5jdXJyZW50Q2FsbC5zdWJzY3JpYmUoKGNhbGw6IGFueSkgPT4ge1xuICAgICAgLy8gICBpZiAoY2FsbCkge1xuICAgICAgLy8gICAgIHRoaXMudHdpbGlvQ2FsbERhdGEgPSBjYWxsO1xuICAgICAgLy8gICAgIHRoaXMubm90aWZpY2F0aW9uU2VyaXZjZS5zaG93Tm90aWZpY2F0aW9uKGNhbGwpO1xuICAgICAgLy8gICAgIC8vIEhhbmRsZSB0aGUgY2FsbCBVSVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJ0luY29taW5nQ2FsbENvbXBvbmVudCBuZ09uSW5pdCcpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnR3aWxpb1NlcnZpY2UuY3VycmVudENhbGwuc3Vic2NyaWJlKGNhbGwgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHdpbGlvQ2FsbERhdGEgPSBjYWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR3aWxpb0F1dGhJZCA9IGNhbGwuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ3R3aWxpb0F1dGhJZCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGwucGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC5wYXJhbWV0ZXJzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmRJUGZvckluY29taW5nQ2FsbCh0aGlzLnR3aWxpb0F1dGhJZCwgJycpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsLm9uKCdjYW5jZWwnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmNvbWluZ0NhbGxEYXRhICYmIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzICYmIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzLkNhbGxTaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzICYmIGl0ZW0ucGFyYW1ldGVycy5DYWxsU2lkICE9PSB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycy5DYWxsU2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVqZWN0Q2FsbEZyb21MaXN0KGNhbGwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBjYWxsLm9uKCdkaXNjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5jb21pbmdDYWxsRGF0YSAmJiB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycyAmJiB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycy5DYWxsU2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVycyAmJiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gdGhpcy5pbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnMuQ2FsbFNpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlamVjdENhbGxGcm9tTGlzdChjYWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWNjZXB0Q2FsbEZyb21MaXN0KGRhdGE/OiBhbnkpIHtcbiAgICAgICAgaWYgKCFkYXRhKSB7IHJldHVybjsgfVxuICAgICAgICAvLyBEaXNjb25uZWN0IGFueSBvdGhlciBjb25uZWN0ZWQgY2FsbCBiZWZvcmUgYWNjZXB0aW5nIHRoaXMgb25lXG4gICAgICAgIGlmICh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ICYmIHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBvdGhlckNvbm5lY3RlZCA9IHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLmlzQ2FsbENvbm5lY3RlZCAmJiBpdGVtICE9PSBkYXRhKTtcbiAgICAgICAgICAgIGlmIChvdGhlckNvbm5lY3RlZCkge1xuICAgICAgICAgICAgICAgIHRyeSB7IG90aGVyQ29ubmVjdGVkLmRpc2Nvbm5lY3QoKTsgfSBjYXRjaCB7fVxuICAgICAgICAgICAgICAgIG90aGVyQ29ubmVjdGVkLmlzQ2FsbENvbm5lY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG90aGVyQ29ubmVjdGVkLmlzRmlyc3RDYWxsID0gZmFsc2U7IFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWNjZXB0IHRoaXMgY2FsbCBhbmQgbWFyayBhcyB0aGUgYWN0aXZlIG9uZVxuICAgICAgICBkYXRhLmFjY2VwdCgpO1xuICAgICAgICBkYXRhLmlzQ2FsbENvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgIGRhdGEuaXNGaXJzdENhbGwgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5zZXRDYWxsU2lkKHRoaXMuQ2FsbFNpZCwgdGhpcy5yZWNvcmRDYWxsKTtcbiAgICAgICAgdGhpcy5zZW5kSVBmb3JJbmNvbWluZ0NhbGwoZGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgndHdpbGlvQXV0aElkJyksICdhbnN3ZXJlZCcpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUluY29taW5nQ2FsbFdyYXBwZXIoMSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZWplY3RDYWxsRnJvbUxpc3QoZGF0YT86IGFueSkge1xuICAgICAgICBpZiAoIWRhdGEpIHJldHVybjtcbiAgICAgICAgXG4gICAgICAgIGlmIChkYXRhLnJlamVjdCkgZGF0YS5yZWplY3QoKTtcbiAgICAgICAgaWYgKGRhdGEuZGlzY29ubmVjdCkgZGF0YS5kaXNjb25uZWN0KCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoZGF0YS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICBkYXRhLnBhcmFtZXRlcnNbJ2lzQ2FsbENvbm5lY3RlZCddID0gZmFsc2U7IC8vIFNob3VsZCBiZSBmYWxzZSB3aGVuIHJlamVjdGluZ1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGEuY3VzdG9tUGFyYW1ldGVycykge1xuICAgICAgICAgICAgdGhpcy5zZW5kSVBmb3JJbmNvbWluZ0NhbGwoZGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgndHdpbGlvQXV0aElkJyksICdhbnN3ZXJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCAmJiBkYXRhICYmIGRhdGEucGFyYW1ldGVycyAmJiBkYXRhLnBhcmFtZXRlcnMuQ2FsbFNpZCkge1xuICAgICAgICAgICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVycyAmJiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gZGF0YS5wYXJhbWV0ZXJzLkNhbGxTaWQpO1xuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTmV3TGlzdC5lbWl0KHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QpO1xuICAgICAgICAgICAgaWYodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPT0gMCl7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUluY29taW5nQ2FsbERpdi5lbWl0KHsgc2hvdzogMCwgY2FsbDogZGF0YSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlSW5jb21pbmdDYWxsV3JhcHBlcih2YWw6IGFueSkge1xuICAgICAgICB0aGlzLmNsb3NlSW5jb21pbmdDYWxsRGl2LmVtaXQoeyBzaG93OiB2YWwsIGNhbGw6IHRoaXMudHdpbGlvQ2FsbERhdGEgfSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlTXV0ZShkYXRhPzogYW55KSB7XG4gICAgICAgIHRoaXMuaXNNdXRlID0gIXRoaXMuaXNNdXRlO1xuICAgICAgICBkYXRhLm11dGUodGhpcy5pc011dGUpO1xuICAgIH1cblxuICAgIHNlbmRJUGZvckluY29taW5nQ2FsbChyZWNvcmRJZDogYW55LCBjYWxsc3RhdHVzOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ3NlbmRJUGZvckluY29taW5nQ2FsbCcpXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0SVBEZXRhaWxzRm9yQ2FsbChyZWNvcmRJZCwgY2FsbHN0YXR1cywgdGhpcy5kZXZpY2VJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3A6IGFueSA9IHJlcztcbiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3AuY2FsbEF1dGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQ2FsbFNpZCA9IHJlc3AuY2FsbEF1dGguY2FsbFNpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb3JkQ2FsbCA9IHJlc3AuY2FsbEF1dGgucmVjb3JkQ2FsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgcmVjb3JkQ2FsbCBmbGFnXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcC5jYWxsQXV0aC5yZWNvcmRDYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdWxkUmVjb3JkQ2FsbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3VsZFJlY29yZENhbGwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3YWwoXCJFcnJvclwiLCBcIk1pc3NpbmcgY2FsbCBhdXRoZW50aWNhdGlvbiBkZXRhaWxzLlwiLCBcImVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzd2FsKFwiRXJyb3JcIiwgcmVzcC5tZXNzYWdlLmpvaW4oXCI8YnIvPlwiKSwgXCJlcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHN3YWwoXCJFcnJvclwiLCBHbG9iYWxDb25zdGFudC5FcnJvck1zZzUwMCwgXCJlcnJvclwiKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uVXNlckluZm9CeUNhbGxTaWQoKXtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwgJiYgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbC51c2VySW5mbykge1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsID8gT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCkubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgY2FsbCBoYXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYXZhaWxhYmxlIGZvciBleHBhbnNpb25cbiAgICBoYXNEZXRhaWxlZEluZm8oY2FsbERhdGE6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWNhbGxEYXRhKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIFxuICAgICAgICAvLyBDaGVjayBpZiB1c2VySW5mbyBleGlzdHMgYW5kIGhhcyBtZWFuaW5nZnVsIGRhdGFcbiAgICAgICAgaWYgKGNhbGxEYXRhLnVzZXJJbmZvICYmIGNhbGxEYXRhLnVzZXJJbmZvLmMyY0luZm9ybWF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gY2FsbERhdGEudXNlckluZm8uYzJjSW5mb3JtYXRpb247XG4gICAgICAgICAgICByZXR1cm4gISEoXG4gICAgICAgICAgICAgICAgaW5mby5zdWJqZWN0ICYmIGluZm8uc3ViamVjdCAhPT0gJy0nIHx8XG4gICAgICAgICAgICAgICAgaW5mby5lbWFpbCAmJiBpbmZvLmVtYWlsICE9PSAnLScgfHxcbiAgICAgICAgICAgICAgICBpbmZvLm1lc3NhZ2UgJiYgaW5mby5tZXNzYWdlICE9PSAnLScgfHxcbiAgICAgICAgICAgICAgICBpbmZvLnBvaW50TmFtZSAmJiBpbmZvLnBvaW50TmFtZSAhPT0gJy0nIHx8XG4gICAgICAgICAgICAgICAgaW5mby5zb3VyY2VOYW1lICYmIGluZm8uc291cmNlTmFtZSAhPT0gJy0nIHx8XG4gICAgICAgICAgICAgICAgaW5mby5leHRlbnNpb24gJiYgaW5mby5leHRlbnNpb24gIT09ICctJyB8fFxuICAgICAgICAgICAgICAgIGluZm8udXJsIHx8XG4gICAgICAgICAgICAgICAgaW5mby5sYXRpdHVkZSB8fFxuICAgICAgICAgICAgICAgIGluZm8ubG9uZ2l0dWRlXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIG9uQ2xpY2tFeHBhbmQoZGF0YT86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCA9PT0gZGF0YSAmJiB0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsPy5pc0NsaWNrRXhwYW5kKSB7XG4gICAgICAgIC8vIENvbGxhcHNlIGlmIGNsaWNraW5nIHRoZSBzYW1lIGV4cGFuZGVkIGl0ZW1cbiAgICAgICAgY29uc3QgdXBkYXRlZENhbGwgPSB7IFxuICAgICAgICAgICAgLi4udGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCwgXG4gICAgICAgICAgICBpc0NsaWNrRXhwYW5kOiBmYWxzZSBcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGxJbmZvLmVtaXQodXBkYXRlZENhbGwpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRXhwYW5kIHRoZSBjbGlja2VkIGl0ZW1cbiAgICBjb25zdCB1cGRhdGVkQ2FsbCA9IHsgXG4gICAgICAgIC4uLmRhdGEsIFxuICAgICAgICBpc0NsaWNrRXhwYW5kOiB0cnVlIFxuICAgIH07XG4gICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCA9IHVwZGF0ZWRDYWxsO1xuICAgIFxuICAgIC8vIFVwZGF0ZSB0aGUgbmV3SW5jb21pbmdDYWxsc0xpc3Qgd2l0aCB0aGUgdXBkYXRlZCBjYWxsXG4gICAgaWYgKHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3Q/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5tYXAoKGNhbGw6IGFueSkgPT4gXG4gICAgICAgICAgICBjYWxsLnBhcmFtZXRlcnM/LkNhbGxTaWQgPT09IHVwZGF0ZWRDYWxsLnBhcmFtZXRlcnM/LkNhbGxTaWQgXG4gICAgICAgICAgICAgICAgPyB1cGRhdGVkQ2FsbCBcbiAgICAgICAgICAgICAgICA6IHsgLi4uY2FsbCwgaXNDbGlja0V4cGFuZDogZmFsc2UgfVxuICAgICAgICApO1xuICAgIH1cbiAgICBcbiAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIGNhbGwgdG8gcGFyZW50XG4gICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbEluZm8uZW1pdCh1cGRhdGVkQ2FsbCk7XG4gICAgXG4gICAgLy8gRmV0Y2ggdXNlciBpbmZvIGlmIG5lZWRlZFxuICAgIGlmICghdXBkYXRlZENhbGwudXNlckluZm8gfHwgdXBkYXRlZENhbGwudXNlckluZm8/LnN0YXR1cyA9PT0gMjAxKSB7XG4gICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKHVwZGF0ZWRDYWxsKTtcbiAgICB9XG4gICAgICAgIH1cbiAgICBcblxuICAgIGdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhOiBhbnkpIHtcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmZyb21FbnRyaWVzKEFycmF5LmZyb20oaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmVudHJpZXMoKSkpO1xuICAgICAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0VXNlckluZm9ybWF0aW9uKGRhdGFbJ3R3aWxpb0F1dGhJZCddKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBpbmNvbWluZ0NhbGxEYXRhWyd1c2VySW5mbyddPXJlc3BvbnNlXG4gICAgICAgICAgfSwgNTAwMClcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN0YXJ0aW5nIHJlY29yZGluZycsIGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGZyb21FbnRyaWVzKGVudHJpZXM6IFtzdHJpbmcsIGFueV1bXSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgICAgICByZXR1cm4gZW50cmllcy5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgYWNjW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KTsgIFxuICAgICAgfVxuXG4gICAgICBkaXNiYWxlRW5kQ2FsbEJ0biA9IGZhbHNlO1xuICAgICAgaW5jb21pbmdDYWxsU2lkID0gJyc7XG4gICAgICBpbmNvbWluZ1JlY29yZENhbGwgPSBmYWxzZTtcbiAgICAgIHRpbWVyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgICAgdGltZUVsYXBzZWQgPSAwO1xuICAgICAgdG9nZ2xlUmVjb3JkaW5nKHNpZDogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nKSB7XG4gICAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdGFydFJlY29yZGluZygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAgIHN0YXJ0UmVjb3JkaW5nKCkge1xuICAgICAgICAgIGxldCBzaWQ7XG4gICAgICAgICAgY29uc3QgZGV0YWlscyA9IHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRDYWxsU2lkKCk7XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxTaWQgPSBkZXRhaWxzLmNhbGxTaWQ7XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgPSBkZXRhaWxzLnJlY29yZENhbGw7XG4gICAgICAgICAgc2lkID0gdGhpcy5pbmNvbWluZ0NhbGxTaWQgPyB0aGlzLmluY29taW5nQ2FsbFNpZCA6IHRoaXMuQ2FsbFNpZDtcbiAgICAgIFxuICAgICAgICAgIC8vIGlmICghdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgJiYgIXRoaXMucmVjb3JkQ2FsbCkge1xuICAgICAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0Q2FsbFJlY29yZGluZyhzaWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNQYXVzZWQgPSBmYWxzZTsgIFxuICAgICAgICAgICAgLy8gdGhpcy50aW1lRWxhcHNlZCA9IDA7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZXIxKCk7XG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc3RhcnRpbmcgcmVjb3JkaW5nJywgZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHN0b3BSZWNvcmRpbmcoKSB7XG4gICAgICAgICAgLy8gaWYgKCF0aGlzLmluY29taW5nUmVjb3JkQ2FsbCAmJiAhdGhpcy5yZWNvcmRDYWxsKSB7XG4gICAgICAgICAgLy8gICByZXR1cm47XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzUGF1c2VkID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHRoaXMudGltZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGF1c2VSZWNvcmRpbmcoKSB7XG4gICAgICAgICAgY29uc3QgZGV0YWlscyA9IHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRDYWxsU2lkKCk7XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxTaWQgPSBkZXRhaWxzLmNhbGxTaWQ7XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgPSBkZXRhaWxzLnJlY29yZENhbGw7XG4gICAgICAgICAgY29uc3Qgc2lkID0gdGhpcy5pbmNvbWluZ0NhbGxTaWQgPyB0aGlzLmluY29taW5nQ2FsbFNpZCA6IHRoaXMuQ2FsbFNpZDtcbiAgICAgIFxuICAgICAgICAgIC8vIGlmICghdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgJiYgIXRoaXMucmVjb3JkQ2FsbCkge1xuICAgICAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgICAgIC8vIH1cbiAgICAgIFxuICAgICAgICAgIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5wYXVzZU9yUmVzdW1lUmVjb3JkaW5nKHNpZCwgJ3BhdXNlJykuc3Vic2NyaWJlKFxuICAgICAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgLy8gICB0aGlzLnN0b3BSZWNvcmRpbmdUaW1lcigpO1xuICAgICAgICAgICAgICB0aGlzLmlzUGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhdXNpbmcgcmVjb3JkaW5nOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgLy8gQ29uc2lkZXIgdXBkYXRpbmcgdGhlIFVJIHRvIHNob3cgdGhlIGVycm9yIHN0YXRlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bWVSZWNvcmRpbmcoc2lkOiBhbnkpIHtcbiAgICAgICAgLy8gICBsZXQgc2lkO1xuICAgICAgICAgIGNvbnN0IGRldGFpbHMgPSB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0Q2FsbFNpZCgpO1xuICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsU2lkID0gZGV0YWlscy5jYWxsU2lkO1xuICAgICAgICAgIHRoaXMuaW5jb21pbmdSZWNvcmRDYWxsID0gZGV0YWlscy5yZWNvcmRDYWxsO1xuICAgICAgICAgIHNpZCA9IHRoaXMuaW5jb21pbmdDYWxsU2lkID8gdGhpcy5pbmNvbWluZ0NhbGxTaWQgOiB0aGlzLkNhbGxTaWQ7XG4gICAgICBcbiAgICAgICAgICAvLyBpZiAoIXRoaXMuaW5jb21pbmdSZWNvcmRDYWxsICYmICF0aGlzLnJlY29yZENhbGwpIHtcbiAgICAgICAgICAvLyAgIHJldHVybjsgLy8gU2tpcCBpZiByZWNvcmRpbmcgaXMgbm90IGVuYWJsZWRcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLnBhdXNlT3JSZXN1bWVSZWNvcmRpbmcoc2lkLCAncmVzdW1lJykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNQYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lcjEoKTtcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZXN1bWluZyByZWNvcmRpbmcnLCBlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnRUaW1lcjEoKSB7XG4gICAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IGludGVydmFsKDEwMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRpbWVFbGFwc2VkKys7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RvcFJlY29yZGluZ1RpbWVyKCkge1xuICAgICAgICAgIGlmICh0aGlzLnRpbWVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IC8vIFBhdXNlIHRoZSB0aW1lclxuICAgICAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDsgICAgICAgIC8vIE9wdGlvbmFsbHkgcmVzZXQgdGhlIHN1YnNjcmlwdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfVxufSIsIjxkaXYgY2xhc3M9XCJjYWxsLWNvbnRhaW5lclwiICpuZ0lmPVwibmV3SW5jb21pbmdDYWxsc0xpc3Q/Lmxlbmd0aCA9PT0gMVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IHBhZGRpbmctbGVmdDogMTRyZW07XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGxUb051bVwiPkluY29taW5nIGNhbGwgb24gPGJyLz48c3Bhbj57e2RlZGljYXRlZE51bX19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsLWFuaW1hdGlvblwiIFtuZ0NsYXNzXT1cInsnY2FsbC1hbmltYXRpb24tcGxheSc6IHNob3dSaW5nQW5pbWF0aW9ufVwiPlxyXG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiYXZhdGFyLWltZ1wiIFtzcmNdPVwibmV3SW5jb21pbmdDYWxsc0xpc3RbMF0/LmltZyB8fCBpbmNvbWluZ0NhbGxEYXRhPy5pbWdcIiBhbHQ9XCJcIiB3aWR0aD1cIjEyMFwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGxlckRldGFpbHNcIj5cclxuICAgICAgICAgICAgPGgxPnt7bmV3SW5jb21pbmdDYWxsc0xpc3RbMF0/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubmFtZSB8fCBpbmNvbWluZ0NhbGxEYXRhPy5uYW1lIHx8ICctJ319PC9oMT5cclxuICAgICAgICAgICAgPHA+e3tuZXdJbmNvbWluZ0NhbGxzTGlzdFswXT8udXNlckluZm8/LmRpc3BsYXlOdW0gPyBuZXdJbmNvbWluZ0NhbGxzTGlzdFswXT8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5udW1iZXIgOiBuZXdJbmNvbWluZ0NhbGxzTGlzdFswXT8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5udW1iZXIgfHwgaW5jb21pbmdDYWxsRGF0YT8uZGlzcGxheU51bSB8fCBpbmNvbWluZ0NhbGxEYXRhPy5waG9uZX19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICBcclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYWxsZXJEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxoMSBbbmdTdHlsZV09XCJ7J21hcmdpbi10b3AnOiBzaG93S2V5cGFkID8gJzAnOiAnOHB4J31cIj57e2NhbGxEYXRhLm5hbWV9fTwvaDE+XHJcbiAgICAgICAgICAgIDxwPnt7Y2FsbERhdGEuZGlzcGxheU51bSA/IGNhbGxEYXRhLmRpc3BsYXlOdW0gOiBjYWxsRGF0YS5waG9uZSB9fTwvcD5cclxuICAgICAgICAgICAgPGg0IHN0eWxlPVwibWFyZ2luLXRvcDogNHB4XCI+e3t0aW1lcn19PC9oND5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGwtYWN0aW9uLWJ0bnNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtYnRuIHJlY2VpdmUtYnRuXCIgKm5nSWY9XCIhbmV3SW5jb21pbmdDYWxsc0xpc3RbMF0/LmlzQ2FsbENvbm5lY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKGNsaWNrKT1cImFjY2VwdENhbGxGcm9tTGlzdChuZXdJbmNvbWluZ0NhbGxzTGlzdFswXSlcIj4gY2FsbCA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4gbXV0ZS1idG5cIiAqbmdJZj1cIm5ld0luY29taW5nQ2FsbHNMaXN0WzBdPy5pc0NhbGxDb25uZWN0ZWRcIiAoY2xpY2spPVwidG9nZ2xlTXV0ZShuZXdJbmNvbWluZ0NhbGxzTGlzdFswXSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1tdXRlJzogaXNNdXRlfVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKm5nSWY9XCJpc011dGVcIj4gbWljX29mZiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAqbmdJZj1cIiFpc011dGVcIj4gbWljPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC1idG4tY29udGFpbmVyIFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlY29yZC1idG4gc3RhcnQtc3RvcFwiICpuZ0lmPVwibmV3SW5jb21pbmdDYWxsc0xpc3RbMF0/LmlzQ2FsbENvbm5lY3RlZCAmJiAhaXNSZWNvcmRpbmdcIiBbbmdDbGFzc109XCJ7J3JlY29yZGluZyc6IGlzUmVjb3JkaW5nLCAnc3RvcHBlZCc6ICFpc1JlY29yZGluZ31cIiAoY2xpY2spPVwidG9nZ2xlUmVjb3JkaW5nKCcnKVwiIFt0aXRsZV09XCJpc1JlY29yZGluZyA/ICdTdG9wIFJlY29yZGluZycgOiAnU3RhcnQgUmVjb3JkaW5nJ1wiIFtkaXNhYmxlZF09XCJkaXNiYWxlRW5kQ2FsbEJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjb3JkaW5nLWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj4gICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBwYXVzZS1yZXN1bWVcIiAqbmdJZj1cIm5ld0luY29taW5nQ2FsbHNMaXN0WzBdPy5pc0NhbGxDb25uZWN0ZWQgJiYgaXNSZWNvcmRpbmcgJiYgIWlzUGF1c2VkXCIgKGNsaWNrKT1cInBhdXNlUmVjb3JkaW5nKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHBhdXNlIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBwYXVzZS1yZXN1bWVcIiAqbmdJZj1cIm5ld0luY29taW5nQ2FsbHNMaXN0WzBdPy5pc0NhbGxDb25uZWN0ZWQgJiYgaXNQYXVzZWRcIiAoY2xpY2spPVwicmVzdW1lUmVjb3JkaW5nKCcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gcGxheV9hcnJvdyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0biByZWplY3QtYnRuXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAoY2xpY2spPVwicmVqZWN0Q2FsbEZyb21MaXN0KG5ld0luY29taW5nQ2FsbHNMaXN0WzBdKVwiPiBjYWxsX2VuZCA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIndhdmUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPHN2ZyBjbGFzcz1cIndhdmVzXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXHJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDI0IDE1MCAyOFwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCIgc2hhcGUtcmVuZGVyaW5nPVwiYXV0b1wiPlxyXG4gICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiZ2VudGxlLXdhdmVcIiBkPVwiTS0xNjAgNDRjMzAgMCA1OC0xOCA4OC0xOHMgNTggMTggODggMTggNTgtMTggODgtMTggNTggMTggODggMTggdjQ0aC0zNTJ6XCIgLz5cclxuICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICA8ZyBjbGFzcz1cInBhcmFsbGF4XCI+XHJcbiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiMFwiIGZpbGw9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNylcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjNcIiBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjUpXCIgLz5cclxuICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiIHg9XCI0OFwiIHk9XCI3XCIgZmlsbD1cIiNmZmZcIiAvPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiY2FsbC1jb250YWluZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBsZWZ0OiAxMTZweDtcIiAqbmdJZj1cIm5ld0luY29taW5nQ2FsbHNMaXN0Py5sZW5ndGggPiAxXCIgW25nQ2xhc3NdPVwieydjYWxsLWNvbnRhaW5lci1vcGVuJzogc2VsZWN0ZWRJbmNvbWluZ0NhbGw/LmlzQ2xpY2tFeHBhbmR9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sbG9wc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggdy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb250YWluZXItZmx1aWRcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbFRvTnVtXCI+SW5jb21pbmcgY2FsbCA8YnIvPjxzcGFuPnt7ZGVkaWNhdGVkTnVtfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIG5ld0luY29taW5nQ2FsbHNMaXN0XCI+ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGwtaW5mby13cmFwcGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiYXZhdGFyLWltZy13cmFwcGVyXCIgW3NyY109XCJkYXRhPy5pbWdcIiBhbHQ9XCJcIiB3aWR0aD1cIjQ1XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsZXJEZXRhaWxzLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiYnJlYWstd29yZFwiPnt7ZGF0YT8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5uYW1lIHx8ICctJ319PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJicmVhay13b3JkXCI+e3tkYXRhPy51c2VySW5mbz8uZGlzcGxheU51bSA/IGRhdGE/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubnVtYmVyIDogZGF0YT8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5udW1iZXIgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4td3JhcHBlciByZWNlaXZlLWJ0blwiICpuZ0lmPVwiIWRhdGE/LmlzQ2FsbENvbm5lY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKGNsaWNrKT1cImFjY2VwdENhbGxGcm9tTGlzdChkYXRhKVwiPiBjYWxsIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0bi13cmFwcGVyIG11dGUtYnRuXCIgKm5nSWY9XCJkYXRhPy5pc0NhbGxDb25uZWN0ZWRcIiAgKGNsaWNrKT1cInRvZ2dsZU11dGUoZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1tdXRlJzogaXNNdXRlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKm5nSWY9XCJpc011dGVcIj4gbWljX29mZiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAqbmdJZj1cIiFpc011dGVcIj4gbWljPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC1idG4tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBzdGFydC1zdG9wXCIgKm5nSWY9XCJkYXRhPy5pc0NhbGxDb25uZWN0ZWQgJiYgIWlzUmVjb3JkaW5nXCIgW25nQ2xhc3NdPVwieydyZWNvcmRpbmcnOiBpc1JlY29yZGluZywgJ3N0b3BwZWQnOiAhaXNSZWNvcmRpbmd9XCIgKGNsaWNrKT1cInRvZ2dsZVJlY29yZGluZygnJylcIiBbdGl0bGVdPVwiaXNSZWNvcmRpbmcgPyAnU3RvcCBSZWNvcmRpbmcnIDogJ1N0YXJ0IFJlY29yZGluZydcIiBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlY29yZGluZy1pY29uXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlY29yZC1idG4gcGF1c2UtcmVzdW1lXCIgKm5nSWY9XCJkYXRhPy5pc0NhbGxDb25uZWN0ZWQgJiYgaXNSZWNvcmRpbmcgJiYgIWlzUGF1c2VkXCIgKGNsaWNrKT1cInBhdXNlUmVjb3JkaW5nKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHBhdXNlIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBwYXVzZS1yZXN1bWVcIiAqbmdJZj1cImRhdGE/LmlzQ2FsbENvbm5lY3RlZCAmJiBpc1BhdXNlZFwiIChjbGljayk9XCJyZXN1bWVSZWNvcmRpbmcoJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBwbGF5X2Fycm93IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtYnRuLXdyYXBwZXIgcmVqZWN0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKGNsaWNrKT1cInJlamVjdENhbGxGcm9tTGlzdChkYXRhKVwiPiBjYWxsX2VuZCA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlYXJyb3ctYXJyb3cgbWUtMlwiIGlkPVwidG9nZ2xlYXJyb3dcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFzRGV0YWlsZWRJbmZvKGRhdGEpID8gb25DbGlja0V4cGFuZChkYXRhKSA6IG51bGxcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogIWhhc0RldGFpbGVkSW5mbyhkYXRhKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJoYXNEZXRhaWxlZEluZm8oZGF0YSkgPyAnVmlldyBkZXRhaWxzJyA6ICdObyBkZXRhaWxzIGF2YWlsYWJsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtcmlnaHRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbC1jb250YWluZXIgcC0zIHRleHQtd2hpdGUgbW9kZWwtY29udGVudFwiICpuZ0lmPVwiaXNDbGlja0V4cGFuZCBcIj4gICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGwtYW5pbWF0aW9uXCIgW25nQ2xhc3NdPVwieydjYWxsLWFuaW1hdGlvbi1wbGF5Jzogc2hvd1JpbmdBbmltYXRpb259XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdmF0YXItaW1nXCIgW3NyY109XCJpbmNvbWluZ0NhbGxEYXRhLmltZ1wiIGFsdD1cIlwiIHdpZHRoPVwiMTAwXCIgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC13aGl0ZVwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubmFtZSB8fCAnLSd9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImYtMTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS0yXCI+U3ViamVjdDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTJcIj57e3NlbGVjdGVkSW5jb21pbmdDYWxsPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/LnN1YmplY3QgfHwgJy0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtMlwiPkVtYWlsOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uZW1haWwgfHwgJy0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+TnVtYmVyOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj57e3NlbGVjdGVkSW5jb21pbmdDYWxsPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/Lm51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5MYW5ndWFnZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubGFuZ3VhZ2UgfHwgJy0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5FeHRlbnNpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTJcIj57e3NlbGVjdGVkSW5jb21pbmdDYWxsPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/LmV4dGVuc2lvbiB8fCAnLSd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTJcIj5JbWFnZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZWxsaXBzaXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5pbWFnZSAmJiBzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5pbWFnZSAhPT0gJy0nOyBlbHNlIG5vSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uaW1hZ2V9fVwiIGFsdD1cIlwiIHdpZHRoPVwiNDJcIiBoZWlnaHQ9XCI0MlwiIGNsYXNzPVwibWwtMlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0ltYWdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPk5vIEltYWdlIEF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5NZXNzYWdlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzXCI+e3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5tZXNzYWdlIHx8ICctJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+UG9pbnQgTmFtZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ucG9pbnROYW1lIHx8ICctJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlNvdXJjZSBOYW1lOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+e3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5zb3VyY2VOYW1lIHx8ICctJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbC1hY3Rpb24tYnRucyBtdC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4gcmVjZWl2ZS1idG5cIiAqbmdJZj1cIiFzZWxlY3RlZEluY29taW5nQ2FsbD8uaXNDYWxsQ29ubmVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKGNsaWNrKT1cImFjY2VwdENhbGxGcm9tTGlzdChzZWxlY3RlZEluY29taW5nQ2FsbClcIj4gY2FsbCA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0biBtdXRlLWJ0blwiICpuZ0lmPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGw/LmlzQ2FsbENvbm5lY3RlZFwiICAoY2xpY2spPVwidG9nZ2xlTXV0ZShzZWxlY3RlZEluY29taW5nQ2FsbClcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1tdXRlJzogaXNNdXRlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiICpuZ0lmPVwiaXNNdXRlXCI+IG1pY19vZmYgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiICpuZ0lmPVwiIWlzTXV0ZVwiPiBtaWMgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjb3JkLWJ0bi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBzdGFydC1zdG9wXCIgKm5nSWY9XCJzZWxlY3RlZEluY29taW5nQ2FsbD8uaXNDYWxsQ29ubmVjdGVkICYmICFpc1JlY29yZGluZ1wiIFtuZ0NsYXNzXT1cInsncmVjb3JkaW5nJzogaXNSZWNvcmRpbmcsICdzdG9wcGVkJzogIWlzUmVjb3JkaW5nfVwiIChjbGljayk9XCJ0b2dnbGVSZWNvcmRpbmcoJycpXCIgW3RpdGxlXT1cImlzUmVjb3JkaW5nID8gJ1N0b3AgUmVjb3JkaW5nJyA6ICdTdGFydCBSZWNvcmRpbmcnXCIgW2Rpc2FibGVkXT1cImRpc2JhbGVFbmRDYWxsQnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjb3JkaW5nLWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhdXNlLXJlc3VtZS1idG5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZWNvcmQtYnRuIHBhdXNlLXJlc3VtZVwiICpuZ0lmPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGw/LmlzQ2FsbENvbm5lY3RlZCAmJiBpc1JlY29yZGluZyAmJiAhaXNQYXVzZWRcIiAoY2xpY2spPVwicGF1c2VSZWNvcmRpbmcoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHBhdXNlIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZWNvcmQtYnRuIHBhdXNlLXJlc3VtZVwiICpuZ0lmPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGw/LmlzQ2FsbENvbm5lY3RlZCAmJiBpc1BhdXNlZFwiIChjbGljayk9XCJyZXN1bWVSZWNvcmRpbmcoJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gcGxheV9hcnJvdyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4gcmVqZWN0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIChjbGljayk9XCJyZWplY3RDYWxsRnJvbUxpc3Qoc2VsZWN0ZWRJbmNvbWluZ0NhbGwpXCI+IGNhbGxfZW5kIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ3YXZlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxzdmcgY2xhc3M9XCJ3YXZlc1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxyXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAyNCAxNTAgMjhcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiIHNoYXBlLXJlbmRlcmluZz1cImF1dG9cIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogJzc1NnB4J31cIj5cclxuICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBpZD1cImdlbnRsZS13YXZlXCIgZD1cIk0tMTYwIDQ0YzMwIDAgNTgtMTggODgtMThzIDU4IDE4IDg4IDE4IDU4LTE4IDg4LTE4IDU4IDE4IDg4IDE4IHY0NGgtMzUyelwiIC8+XHJcbiAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgPGcgY2xhc3M9XCJwYXJhbGxheFwiPlxyXG4gICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjBcIiBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjcpXCIgLz5cclxuICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiIHg9XCI0OFwiIHk9XCIzXCIgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC41KVwiIC8+ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiN1wiIGZpbGw9XCIjZmZmXCIgLz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jb21pbmctY2FsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvY29tcG9uZW50cy9jYWxsLXByb2dyZXNzL2luY29taW5nLWNhbGwvaW5jb21pbmctY2FsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvY29tcG9uZW50cy9jYWxsLXByb2dyZXNzL2luY29taW5nLWNhbGwvaW5jb21pbmctY2FsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSXhILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7OztBQVE5QyxNQUFNLE9BQU8scUJBQXFCO0lBc0I5QixZQUNZLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixtQkFBd0M7UUFGeEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBckJwRCxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMseUJBQW9CLEdBQVEsRUFBRSxDQUFDO1FBRy9CLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBR3pCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUV6Qix5QkFBb0IsR0FBOEMsSUFBSSxZQUFZLEVBQStCLENBQUM7UUFDbEgseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbEUsNkJBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFvTjlFLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFM0IsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFoTmQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFFRCxRQUFRO1FBR04sNERBQTREO1FBQzVELGdCQUFnQjtRQUNoQixrQ0FBa0M7UUFDbEMsdURBQXVEO1FBQ3ZELDRCQUE0QjtRQUM1QixNQUFNO1FBQ04sTUFBTTtRQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtRQUM3QyxJQUFJO1lBQ0EsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLElBQUksRUFBRTtvQkFDTixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztvQkFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTt3QkFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7cUJBQ3RCO29CQUNILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNsRCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7d0JBQ25CLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUU7NEJBQ3ZHLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7eUJBQ3hLO3dCQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEMsQ0FBQyxDQUFDLENBQUM7b0JBRUgsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO3dCQUN2QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFOzRCQUN2RyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUN4Szt3QkFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xDLENBQUMsQ0FBQyxDQUFDO2lCQUNOO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQjtJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFVO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDdEIsZ0VBQWdFO1FBQ2hFLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUU7WUFDL0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDNUcsSUFBSSxjQUFjLEVBQUU7Z0JBQ2hCLElBQUk7b0JBQUUsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO2lCQUFFO2dCQUFDLE1BQU0sR0FBRTtnQkFDN0MsY0FBYyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2FBQ3RDO1NBQ0o7UUFFRCw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3hGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxJQUFVO1FBQ3pCLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUVsQixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFdkMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxpQ0FBaUM7U0FDaEY7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUNyRjtRQUVELElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQ2pGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEosSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUMxRCxJQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO2dCQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUMzRDtTQUNKO0lBQ0wsQ0FBQztJQUVELHdCQUF3QixDQUFDLEdBQVE7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBVTtRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQscUJBQXFCLENBQUMsUUFBYSxFQUFFLFVBQWU7UUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBQ3BDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsRyxNQUFNLElBQUksR0FBUSxHQUFHLENBQUM7Z0JBQ3RCLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7b0JBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTt3QkFDZixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO3dCQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO3dCQUMzQyw2QkFBNkI7d0JBQzdCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7NEJBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7eUJBQzlCOzZCQUFNOzRCQUNMLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7eUJBQy9CO3FCQUNKO3lCQUFNO3dCQUNBLGtFQUFrRTtxQkFDbEU7b0JBRVAsT0FBTyxFQUFFLENBQUM7aUJBQ2I7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDbkQsT0FBTyxFQUFFLENBQUM7aUJBQ2I7WUFDTCxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ25ELE9BQU8sRUFBRSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxtQkFBbUI7UUFDZixJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFO1NBQ3BFO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVHLENBQUM7SUFFRCxpRUFBaUU7SUFDakUsZUFBZSxDQUFDLFFBQWE7UUFDekIsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUU1QixtREFBbUQ7UUFDbkQsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFO1lBQ3ZELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxDQUFDLENBQ0wsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUc7Z0JBQ3BDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHO2dCQUNoQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssR0FBRztnQkFDcEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEdBQUc7Z0JBQ3hDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxHQUFHO2dCQUMxQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssR0FBRztnQkFDeEMsSUFBSSxDQUFDLEdBQUc7Z0JBQ1IsSUFBSSxDQUFDLFFBQVE7Z0JBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FDakIsQ0FBQztTQUNMO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFVO1FBQ3BCLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzFELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRWpDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzNCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUM7WUFFbEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ25FLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDNUMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLG9CQUFvQixFQUFFO3dCQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxDQUFDO3FCQUNqQztnQkFDTCxDQUFDLENBQUMsQ0FBQzthQUNOO1lBRUQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUU5RCxJQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUM7Z0JBQ3ZGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUN0RDtTQUNKO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLGdCQUFxQjtRQUNwQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQ3hFLFFBQVEsQ0FBQyxFQUFFO1lBQ1QsVUFBVSxDQUFDLEdBQUUsRUFBRTtnQkFDYixnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsR0FBQyxRQUFRLENBQUE7WUFDdkMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ1YsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBd0I7UUFDbEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDMUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNqQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUF5QixDQUFDLENBQUM7SUFDaEMsQ0FBQztJQU9ELGVBQWUsQ0FBQyxHQUFRO1FBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFDQyxjQUFjO1FBQ1osSUFBSSxHQUFHLENBQUM7UUFDUixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQzdDLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRWpFLHNEQUFzRDtRQUN0RCxZQUFZO1FBQ1osSUFBSTtRQUNKLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGFBQWE7UUFDWCxzREFBc0Q7UUFDdEQsWUFBWTtRQUNaLElBQUk7UUFDSixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBQ0QsY0FBYztRQUNaLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUV2RSxzREFBc0Q7UUFDdEQsWUFBWTtRQUNaLElBQUk7UUFFSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDbEUsUUFBUSxDQUFDLEVBQUU7WUFDWCwrQkFBK0I7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQyxFQUNELEtBQUssQ0FBQyxFQUFFO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqRCxtREFBbUQ7UUFDckQsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsZUFBZSxDQUFDLEdBQVE7UUFDeEIsYUFBYTtRQUNYLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDN0MsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFakUsc0RBQXNEO1FBQ3RELGdEQUFnRDtRQUNoRCxJQUFJO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtZQUN4RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBQVEsb0NBQW9DO1NBQ2hGO0lBQ0gsQ0FBQzs7bUhBaFVJLHFCQUFxQjt1R0FBckIscUJBQXFCLDhVQ2ZsQywycWZBaU9NOzRGRGxOTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO3FLQUtsQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBY0ksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyx3QkFBd0I7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGwsIERldmljZSB9IGZyb20gJ0B0d2lsaW8vdm9pY2Utc2RrJztcbmltcG9ydCB7IEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2V4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFR3aWxpb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3R3aWxpby5zZXJ2aWNlJztcbmltcG9ydCB7IEdsb2JhbENvbnN0YW50IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2dsb2JhbC1jb25zdGFudCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9Ob3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgc3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5pbXBvcnQgeyBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWluY29taW5nLWNhbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5jb21pbmctY2FsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2luY29taW5nLWNhbGwuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEluY29taW5nQ2FsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgaW5jb21pbmdDYWxsRGF0YTogYW55O1xuICAgIEBJbnB1dCgpIG5ld0luY29taW5nQ2FsbHNMaXN0OiBhbnk7XG4gICAgQElucHV0KCkgZGV2aWNlSWQ6IGFueTtcbiAgICBzaG93UmluZ0FuaW1hdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gICAgc2VsZWN0ZWRJbmNvbWluZ0NhbGw6IGFueSA9IHt9O1xuICAgIHR3aWxpb0NhbGxEYXRhPzogQ2FsbDtcbiAgICB0d2lsaW9BdXRoSWQ/OiBzdHJpbmc7XG4gICAgZGVkaWNhdGVkTnVtOnN0cmluZyA9ICcnO1xuICAgIENhbGxTaWQ6IGFueTtcbiAgICByZWNvcmRDYWxsPzogYm9vbGVhbjtcbiAgICBzaG91bGRSZWNvcmRDYWxsOiBib29sZWFuID0gZmFsc2U7XG4gICAgaXNDbGlja0V4cGFuZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGlzUmVjb3JkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gICAgaXNQYXVzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpc1R3aWxpb0Nvbm5lY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIGNsb3NlSW5jb21pbmdDYWxsRGl2OiBFdmVudEVtaXR0ZXI8eyBzaG93OiBudW1iZXIsIGNhbGw6IGFueSB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzaG93OiBudW1iZXIsIGNhbGw6IGFueSB9PigpO1xuICAgIEBPdXRwdXQoKSBpbmNvbWluZ0NhbGxzTmV3TGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJbmNvbWluZ0NhbGxJbmZvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIGlzTXV0ZT86IGJvb2xlYW47XG4gICAgXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0d2lsaW9TZXJ2aWNlOiBUd2lsaW9TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcml2Y2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICApIHsgXG4gICAgICAgIGNvbnNvbGUubG9nKCdJbmNvbWluZ0NhbGxDb21wb25lbnQnKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuXG5cbiAgICAgIC8vIHRoaXMudHdpbGlvU2VydmljZS5jdXJyZW50Q2FsbC5zdWJzY3JpYmUoKGNhbGw6IGFueSkgPT4ge1xuICAgICAgLy8gICBpZiAoY2FsbCkge1xuICAgICAgLy8gICAgIHRoaXMudHdpbGlvQ2FsbERhdGEgPSBjYWxsO1xuICAgICAgLy8gICAgIHRoaXMubm90aWZpY2F0aW9uU2VyaXZjZS5zaG93Tm90aWZpY2F0aW9uKGNhbGwpO1xuICAgICAgLy8gICAgIC8vIEhhbmRsZSB0aGUgY2FsbCBVSVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJ0luY29taW5nQ2FsbENvbXBvbmVudCBuZ09uSW5pdCcpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnR3aWxpb1NlcnZpY2UuY3VycmVudENhbGwuc3Vic2NyaWJlKGNhbGwgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHdpbGlvQ2FsbERhdGEgPSBjYWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR3aWxpb0F1dGhJZCA9IGNhbGwuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ3R3aWxpb0F1dGhJZCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGwucGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC5wYXJhbWV0ZXJzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmRJUGZvckluY29taW5nQ2FsbCh0aGlzLnR3aWxpb0F1dGhJZCwgJycpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsLm9uKCdjYW5jZWwnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmNvbWluZ0NhbGxEYXRhICYmIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzICYmIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzLkNhbGxTaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzICYmIGl0ZW0ucGFyYW1ldGVycy5DYWxsU2lkICE9PSB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycy5DYWxsU2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVqZWN0Q2FsbEZyb21MaXN0KGNhbGwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBjYWxsLm9uKCdkaXNjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5jb21pbmdDYWxsRGF0YSAmJiB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycyAmJiB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycy5DYWxsU2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVycyAmJiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gdGhpcy5pbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnMuQ2FsbFNpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlamVjdENhbGxGcm9tTGlzdChjYWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWNjZXB0Q2FsbEZyb21MaXN0KGRhdGE/OiBhbnkpIHtcbiAgICAgICAgaWYgKCFkYXRhKSB7IHJldHVybjsgfVxuICAgICAgICAvLyBEaXNjb25uZWN0IGFueSBvdGhlciBjb25uZWN0ZWQgY2FsbCBiZWZvcmUgYWNjZXB0aW5nIHRoaXMgb25lXG4gICAgICAgIGlmICh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ICYmIHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBvdGhlckNvbm5lY3RlZCA9IHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLmlzQ2FsbENvbm5lY3RlZCAmJiBpdGVtICE9PSBkYXRhKTtcbiAgICAgICAgICAgIGlmIChvdGhlckNvbm5lY3RlZCkge1xuICAgICAgICAgICAgICAgIHRyeSB7IG90aGVyQ29ubmVjdGVkLmRpc2Nvbm5lY3QoKTsgfSBjYXRjaCB7fVxuICAgICAgICAgICAgICAgIG90aGVyQ29ubmVjdGVkLmlzQ2FsbENvbm5lY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG90aGVyQ29ubmVjdGVkLmlzRmlyc3RDYWxsID0gZmFsc2U7IFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWNjZXB0IHRoaXMgY2FsbCBhbmQgbWFyayBhcyB0aGUgYWN0aXZlIG9uZVxuICAgICAgICBkYXRhLmFjY2VwdCgpO1xuICAgICAgICBkYXRhLmlzQ2FsbENvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgIGRhdGEuaXNGaXJzdENhbGwgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5zZXRDYWxsU2lkKHRoaXMuQ2FsbFNpZCwgdGhpcy5yZWNvcmRDYWxsKTtcbiAgICAgICAgdGhpcy5zZW5kSVBmb3JJbmNvbWluZ0NhbGwoZGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgndHdpbGlvQXV0aElkJyksICdhbnN3ZXJlZCcpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUluY29taW5nQ2FsbFdyYXBwZXIoMSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZWplY3RDYWxsRnJvbUxpc3QoZGF0YT86IGFueSkge1xuICAgICAgICBpZiAoIWRhdGEpIHJldHVybjtcbiAgICAgICAgXG4gICAgICAgIGlmIChkYXRhLnJlamVjdCkgZGF0YS5yZWplY3QoKTtcbiAgICAgICAgaWYgKGRhdGEuZGlzY29ubmVjdCkgZGF0YS5kaXNjb25uZWN0KCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoZGF0YS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICBkYXRhLnBhcmFtZXRlcnNbJ2lzQ2FsbENvbm5lY3RlZCddID0gZmFsc2U7IC8vIFNob3VsZCBiZSBmYWxzZSB3aGVuIHJlamVjdGluZ1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGEuY3VzdG9tUGFyYW1ldGVycykge1xuICAgICAgICAgICAgdGhpcy5zZW5kSVBmb3JJbmNvbWluZ0NhbGwoZGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgndHdpbGlvQXV0aElkJyksICdhbnN3ZXJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCAmJiBkYXRhICYmIGRhdGEucGFyYW1ldGVycyAmJiBkYXRhLnBhcmFtZXRlcnMuQ2FsbFNpZCkge1xuICAgICAgICAgICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVycyAmJiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gZGF0YS5wYXJhbWV0ZXJzLkNhbGxTaWQpO1xuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTmV3TGlzdC5lbWl0KHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QpO1xuICAgICAgICAgICAgaWYodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPT0gMCl7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUluY29taW5nQ2FsbERpdi5lbWl0KHsgc2hvdzogMCwgY2FsbDogZGF0YSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlSW5jb21pbmdDYWxsV3JhcHBlcih2YWw6IGFueSkge1xuICAgICAgICB0aGlzLmNsb3NlSW5jb21pbmdDYWxsRGl2LmVtaXQoeyBzaG93OiB2YWwsIGNhbGw6IHRoaXMudHdpbGlvQ2FsbERhdGEgfSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlTXV0ZShkYXRhPzogYW55KSB7XG4gICAgICAgIHRoaXMuaXNNdXRlID0gIXRoaXMuaXNNdXRlO1xuICAgICAgICBkYXRhLm11dGUodGhpcy5pc011dGUpO1xuICAgIH1cblxuICAgIHNlbmRJUGZvckluY29taW5nQ2FsbChyZWNvcmRJZDogYW55LCBjYWxsc3RhdHVzOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ3NlbmRJUGZvckluY29taW5nQ2FsbCcpXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0SVBEZXRhaWxzRm9yQ2FsbChyZWNvcmRJZCwgY2FsbHN0YXR1cywgdGhpcy5kZXZpY2VJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3A6IGFueSA9IHJlcztcbiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3AuY2FsbEF1dGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQ2FsbFNpZCA9IHJlc3AuY2FsbEF1dGguY2FsbFNpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb3JkQ2FsbCA9IHJlc3AuY2FsbEF1dGgucmVjb3JkQ2FsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgcmVjb3JkQ2FsbCBmbGFnXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcC5jYWxsQXV0aC5yZWNvcmRDYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdWxkUmVjb3JkQ2FsbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3VsZFJlY29yZENhbGwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3YWwoXCJFcnJvclwiLCBcIk1pc3NpbmcgY2FsbCBhdXRoZW50aWNhdGlvbiBkZXRhaWxzLlwiLCBcImVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzd2FsKFwiRXJyb3JcIiwgcmVzcC5tZXNzYWdlLmpvaW4oXCI8YnIvPlwiKSwgXCJlcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHN3YWwoXCJFcnJvclwiLCBHbG9iYWxDb25zdGFudC5FcnJvck1zZzUwMCwgXCJlcnJvclwiKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uVXNlckluZm9CeUNhbGxTaWQoKXtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwgJiYgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbC51c2VySW5mbykge1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsID8gT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCkubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgY2FsbCBoYXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYXZhaWxhYmxlIGZvciBleHBhbnNpb25cbiAgICBoYXNEZXRhaWxlZEluZm8oY2FsbERhdGE6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWNhbGxEYXRhKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIFxuICAgICAgICAvLyBDaGVjayBpZiB1c2VySW5mbyBleGlzdHMgYW5kIGhhcyBtZWFuaW5nZnVsIGRhdGFcbiAgICAgICAgaWYgKGNhbGxEYXRhLnVzZXJJbmZvICYmIGNhbGxEYXRhLnVzZXJJbmZvLmMyY0luZm9ybWF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gY2FsbERhdGEudXNlckluZm8uYzJjSW5mb3JtYXRpb247XG4gICAgICAgICAgICByZXR1cm4gISEoXG4gICAgICAgICAgICAgICAgaW5mby5zdWJqZWN0ICYmIGluZm8uc3ViamVjdCAhPT0gJy0nIHx8XG4gICAgICAgICAgICAgICAgaW5mby5lbWFpbCAmJiBpbmZvLmVtYWlsICE9PSAnLScgfHxcbiAgICAgICAgICAgICAgICBpbmZvLm1lc3NhZ2UgJiYgaW5mby5tZXNzYWdlICE9PSAnLScgfHxcbiAgICAgICAgICAgICAgICBpbmZvLnBvaW50TmFtZSAmJiBpbmZvLnBvaW50TmFtZSAhPT0gJy0nIHx8XG4gICAgICAgICAgICAgICAgaW5mby5zb3VyY2VOYW1lICYmIGluZm8uc291cmNlTmFtZSAhPT0gJy0nIHx8XG4gICAgICAgICAgICAgICAgaW5mby5leHRlbnNpb24gJiYgaW5mby5leHRlbnNpb24gIT09ICctJyB8fFxuICAgICAgICAgICAgICAgIGluZm8udXJsIHx8XG4gICAgICAgICAgICAgICAgaW5mby5sYXRpdHVkZSB8fFxuICAgICAgICAgICAgICAgIGluZm8ubG9uZ2l0dWRlXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIG9uQ2xpY2tFeHBhbmQoZGF0YT86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCA9PT0gZGF0YSAmJiB0aGlzLmlzQ2xpY2tFeHBhbmQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNDbGlja0V4cGFuZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsSW5mby5lbWl0KHt9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzQ2xpY2tFeHBhbmQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsID0gZGF0YTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsWydpc0NsaWNrRXhwYW5kJ10gPSB0cnVlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCAmJiB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0LmZvckVhY2goKGNhbGw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbCAhPT0gdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbFsnaXNDbGlja0V4cGFuZCddID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbEluZm8uZW1pdCh0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYoIXRoaXMuc2VsZWN0ZWRJbmNvbWluZ0NhbGwudXNlckluZm8gfHwgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbC51c2VySW5mby5zdGF0dXMgPT0gMjAxKXtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbih0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhOiBhbnkpIHtcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmZyb21FbnRyaWVzKEFycmF5LmZyb20oaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmVudHJpZXMoKSkpO1xuICAgICAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0VXNlckluZm9ybWF0aW9uKGRhdGFbJ3R3aWxpb0F1dGhJZCddKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBpbmNvbWluZ0NhbGxEYXRhWyd1c2VySW5mbyddPXJlc3BvbnNlXG4gICAgICAgICAgfSwgNTAwMClcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN0YXJ0aW5nIHJlY29yZGluZycsIGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGZyb21FbnRyaWVzKGVudHJpZXM6IFtzdHJpbmcsIGFueV1bXSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgICAgICByZXR1cm4gZW50cmllcy5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgYWNjW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KTsgIFxuICAgICAgfVxuXG4gICAgICBkaXNiYWxlRW5kQ2FsbEJ0biA9IGZhbHNlO1xuICAgICAgaW5jb21pbmdDYWxsU2lkID0gJyc7XG4gICAgICBpbmNvbWluZ1JlY29yZENhbGwgPSBmYWxzZTtcbiAgICAgIHRpbWVyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgICAgdGltZUVsYXBzZWQgPSAwO1xuICAgICAgdG9nZ2xlUmVjb3JkaW5nKHNpZDogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nKSB7XG4gICAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdGFydFJlY29yZGluZygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAgIHN0YXJ0UmVjb3JkaW5nKCkge1xuICAgICAgICAgIGxldCBzaWQ7XG4gICAgICAgICAgY29uc3QgZGV0YWlscyA9IHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRDYWxsU2lkKCk7XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxTaWQgPSBkZXRhaWxzLmNhbGxTaWQ7XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgPSBkZXRhaWxzLnJlY29yZENhbGw7XG4gICAgICAgICAgc2lkID0gdGhpcy5pbmNvbWluZ0NhbGxTaWQgPyB0aGlzLmluY29taW5nQ2FsbFNpZCA6IHRoaXMuQ2FsbFNpZDtcbiAgICAgIFxuICAgICAgICAgIC8vIGlmICghdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgJiYgIXRoaXMucmVjb3JkQ2FsbCkge1xuICAgICAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0Q2FsbFJlY29yZGluZyhzaWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNQYXVzZWQgPSBmYWxzZTsgIFxuICAgICAgICAgICAgLy8gdGhpcy50aW1lRWxhcHNlZCA9IDA7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZXIxKCk7XG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc3RhcnRpbmcgcmVjb3JkaW5nJywgZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHN0b3BSZWNvcmRpbmcoKSB7XG4gICAgICAgICAgLy8gaWYgKCF0aGlzLmluY29taW5nUmVjb3JkQ2FsbCAmJiAhdGhpcy5yZWNvcmRDYWxsKSB7XG4gICAgICAgICAgLy8gICByZXR1cm47XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzUGF1c2VkID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHRoaXMudGltZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGF1c2VSZWNvcmRpbmcoKSB7XG4gICAgICAgICAgY29uc3QgZGV0YWlscyA9IHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRDYWxsU2lkKCk7XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxTaWQgPSBkZXRhaWxzLmNhbGxTaWQ7XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgPSBkZXRhaWxzLnJlY29yZENhbGw7XG4gICAgICAgICAgY29uc3Qgc2lkID0gdGhpcy5pbmNvbWluZ0NhbGxTaWQgPyB0aGlzLmluY29taW5nQ2FsbFNpZCA6IHRoaXMuQ2FsbFNpZDtcbiAgICAgIFxuICAgICAgICAgIC8vIGlmICghdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgJiYgIXRoaXMucmVjb3JkQ2FsbCkge1xuICAgICAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgICAgIC8vIH1cbiAgICAgIFxuICAgICAgICAgIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5wYXVzZU9yUmVzdW1lUmVjb3JkaW5nKHNpZCwgJ3BhdXNlJykuc3Vic2NyaWJlKFxuICAgICAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgLy8gICB0aGlzLnN0b3BSZWNvcmRpbmdUaW1lcigpO1xuICAgICAgICAgICAgICB0aGlzLmlzUGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhdXNpbmcgcmVjb3JkaW5nOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgLy8gQ29uc2lkZXIgdXBkYXRpbmcgdGhlIFVJIHRvIHNob3cgdGhlIGVycm9yIHN0YXRlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bWVSZWNvcmRpbmcoc2lkOiBhbnkpIHtcbiAgICAgICAgLy8gICBsZXQgc2lkO1xuICAgICAgICAgIGNvbnN0IGRldGFpbHMgPSB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0Q2FsbFNpZCgpO1xuICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsU2lkID0gZGV0YWlscy5jYWxsU2lkO1xuICAgICAgICAgIHRoaXMuaW5jb21pbmdSZWNvcmRDYWxsID0gZGV0YWlscy5yZWNvcmRDYWxsO1xuICAgICAgICAgIHNpZCA9IHRoaXMuaW5jb21pbmdDYWxsU2lkID8gdGhpcy5pbmNvbWluZ0NhbGxTaWQgOiB0aGlzLkNhbGxTaWQ7XG4gICAgICBcbiAgICAgICAgICAvLyBpZiAoIXRoaXMuaW5jb21pbmdSZWNvcmRDYWxsICYmICF0aGlzLnJlY29yZENhbGwpIHtcbiAgICAgICAgICAvLyAgIHJldHVybjsgLy8gU2tpcCBpZiByZWNvcmRpbmcgaXMgbm90IGVuYWJsZWRcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLnBhdXNlT3JSZXN1bWVSZWNvcmRpbmcoc2lkLCAncmVzdW1lJykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNQYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lcjEoKTtcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZXN1bWluZyByZWNvcmRpbmcnLCBlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnRUaW1lcjEoKSB7XG4gICAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IGludGVydmFsKDEwMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRpbWVFbGFwc2VkKys7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RvcFJlY29yZGluZ1RpbWVyKCkge1xuICAgICAgICAgIGlmICh0aGlzLnRpbWVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IC8vIFBhdXNlIHRoZSB0aW1lclxuICAgICAgICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDsgICAgICAgIC8vIE9wdGlvbmFsbHkgcmVzZXQgdGhlIHN1YnNjcmlwdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfVxufSIsIjxkaXYgY2xhc3M9XCJjYWxsLWNvbnRhaW5lclwiICpuZ0lmPVwibmV3SW5jb21pbmdDYWxsc0xpc3Q/Lmxlbmd0aCA9PT0gMVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IHBhZGRpbmctbGVmdDogMTRyZW07XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGxUb051bVwiPkluY29taW5nIGNhbGwgb24gPGJyLz48c3Bhbj57e2RlZGljYXRlZE51bX19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsLWFuaW1hdGlvblwiIFtuZ0NsYXNzXT1cInsnY2FsbC1hbmltYXRpb24tcGxheSc6IHNob3dSaW5nQW5pbWF0aW9ufVwiPlxyXG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiYXZhdGFyLWltZ1wiIFtzcmNdPVwibmV3SW5jb21pbmdDYWxsc0xpc3RbMF0/LmltZyB8fCBpbmNvbWluZ0NhbGxEYXRhPy5pbWdcIiBhbHQ9XCJcIiB3aWR0aD1cIjEyMFwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGxlckRldGFpbHNcIj5cclxuICAgICAgICAgICAgPGgxPnt7bmV3SW5jb21pbmdDYWxsc0xpc3RbMF0/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubmFtZSB8fCBpbmNvbWluZ0NhbGxEYXRhPy5uYW1lIHx8ICctJ319PC9oMT5cclxuICAgICAgICAgICAgPHA+e3tuZXdJbmNvbWluZ0NhbGxzTGlzdFswXT8udXNlckluZm8/LmRpc3BsYXlOdW0gPyBuZXdJbmNvbWluZ0NhbGxzTGlzdFswXT8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5udW1iZXIgOiBuZXdJbmNvbWluZ0NhbGxzTGlzdFswXT8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5udW1iZXIgfHwgaW5jb21pbmdDYWxsRGF0YT8uZGlzcGxheU51bSB8fCBpbmNvbWluZ0NhbGxEYXRhPy5waG9uZX19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICBcclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYWxsZXJEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxoMSBbbmdTdHlsZV09XCJ7J21hcmdpbi10b3AnOiBzaG93S2V5cGFkID8gJzAnOiAnOHB4J31cIj57e2NhbGxEYXRhLm5hbWV9fTwvaDE+XHJcbiAgICAgICAgICAgIDxwPnt7Y2FsbERhdGEuZGlzcGxheU51bSA/IGNhbGxEYXRhLmRpc3BsYXlOdW0gOiBjYWxsRGF0YS5waG9uZSB9fTwvcD5cclxuICAgICAgICAgICAgPGg0IHN0eWxlPVwibWFyZ2luLXRvcDogNHB4XCI+e3t0aW1lcn19PC9oND5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGwtYWN0aW9uLWJ0bnNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtYnRuIHJlY2VpdmUtYnRuXCIgKm5nSWY9XCIhbmV3SW5jb21pbmdDYWxsc0xpc3RbMF0/LmlzQ2FsbENvbm5lY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKGNsaWNrKT1cImFjY2VwdENhbGxGcm9tTGlzdChuZXdJbmNvbWluZ0NhbGxzTGlzdFswXSlcIj4gY2FsbCA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4gbXV0ZS1idG5cIiAqbmdJZj1cIm5ld0luY29taW5nQ2FsbHNMaXN0WzBdPy5pc0NhbGxDb25uZWN0ZWRcIiAoY2xpY2spPVwidG9nZ2xlTXV0ZShuZXdJbmNvbWluZ0NhbGxzTGlzdFswXSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1tdXRlJzogaXNNdXRlfVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKm5nSWY9XCJpc011dGVcIj4gbWljX29mZiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAqbmdJZj1cIiFpc011dGVcIj4gbWljPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC1idG4tY29udGFpbmVyIFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlY29yZC1idG4gc3RhcnQtc3RvcFwiICpuZ0lmPVwibmV3SW5jb21pbmdDYWxsc0xpc3RbMF0/LmlzQ2FsbENvbm5lY3RlZCAmJiAhaXNSZWNvcmRpbmdcIiBbbmdDbGFzc109XCJ7J3JlY29yZGluZyc6IGlzUmVjb3JkaW5nLCAnc3RvcHBlZCc6ICFpc1JlY29yZGluZ31cIiAoY2xpY2spPVwidG9nZ2xlUmVjb3JkaW5nKCcnKVwiIFt0aXRsZV09XCJpc1JlY29yZGluZyA/ICdTdG9wIFJlY29yZGluZycgOiAnU3RhcnQgUmVjb3JkaW5nJ1wiIFtkaXNhYmxlZF09XCJkaXNiYWxlRW5kQ2FsbEJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjb3JkaW5nLWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj4gICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBwYXVzZS1yZXN1bWVcIiAqbmdJZj1cIm5ld0luY29taW5nQ2FsbHNMaXN0WzBdPy5pc0NhbGxDb25uZWN0ZWQgJiYgaXNSZWNvcmRpbmcgJiYgIWlzUGF1c2VkXCIgKGNsaWNrKT1cInBhdXNlUmVjb3JkaW5nKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHBhdXNlIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBwYXVzZS1yZXN1bWVcIiAqbmdJZj1cIm5ld0luY29taW5nQ2FsbHNMaXN0WzBdPy5pc0NhbGxDb25uZWN0ZWQgJiYgaXNQYXVzZWRcIiAoY2xpY2spPVwicmVzdW1lUmVjb3JkaW5nKCcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gcGxheV9hcnJvdyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0biByZWplY3QtYnRuXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAoY2xpY2spPVwicmVqZWN0Q2FsbEZyb21MaXN0KG5ld0luY29taW5nQ2FsbHNMaXN0WzBdKVwiPiBjYWxsX2VuZCA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIndhdmUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPHN2ZyBjbGFzcz1cIndhdmVzXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXHJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDI0IDE1MCAyOFwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCIgc2hhcGUtcmVuZGVyaW5nPVwiYXV0b1wiPlxyXG4gICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiZ2VudGxlLXdhdmVcIiBkPVwiTS0xNjAgNDRjMzAgMCA1OC0xOCA4OC0xOHMgNTggMTggODggMTggNTgtMTggODgtMTggNTggMTggODggMTggdjQ0aC0zNTJ6XCIgLz5cclxuICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICA8ZyBjbGFzcz1cInBhcmFsbGF4XCI+XHJcbiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiMFwiIGZpbGw9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNylcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjNcIiBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjUpXCIgLz5cclxuICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiIHg9XCI0OFwiIHk9XCI3XCIgZmlsbD1cIiNmZmZcIiAvPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiY2FsbC1jb250YWluZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBsZWZ0OiAxMTZweDtcIiAqbmdJZj1cIm5ld0luY29taW5nQ2FsbHNMaXN0Py5sZW5ndGggPiAxXCIgW25nQ2xhc3NdPVwieydjYWxsLWNvbnRhaW5lci1vcGVuJzogc2VsZWN0ZWRJbmNvbWluZ0NhbGw/LmlzQ2xpY2tFeHBhbmR9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sbG9wc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggdy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBjb250YWluZXItZmx1aWRcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbFRvTnVtXCI+SW5jb21pbmcgY2FsbCA8YnIvPjxzcGFuPnt7ZGVkaWNhdGVkTnVtfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIG5ld0luY29taW5nQ2FsbHNMaXN0XCI+ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGwtaW5mby13cmFwcGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiYXZhdGFyLWltZy13cmFwcGVyXCIgW3NyY109XCJkYXRhPy5pbWdcIiBhbHQ9XCJcIiB3aWR0aD1cIjQ1XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsZXJEZXRhaWxzLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiYnJlYWstd29yZFwiPnt7ZGF0YT8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5uYW1lIHx8ICctJ319PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJicmVhay13b3JkXCI+e3tkYXRhPy51c2VySW5mbz8uZGlzcGxheU51bSA/IGRhdGE/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubnVtYmVyIDogZGF0YT8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5udW1iZXIgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4td3JhcHBlciByZWNlaXZlLWJ0blwiICpuZ0lmPVwiIWRhdGE/LmlzQ2FsbENvbm5lY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKGNsaWNrKT1cImFjY2VwdENhbGxGcm9tTGlzdChkYXRhKVwiPiBjYWxsIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0bi13cmFwcGVyIG11dGUtYnRuXCIgKm5nSWY9XCJkYXRhPy5pc0NhbGxDb25uZWN0ZWRcIiAgKGNsaWNrKT1cInRvZ2dsZU11dGUoZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1tdXRlJzogaXNNdXRlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKm5nSWY9XCJpc011dGVcIj4gbWljX29mZiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAqbmdJZj1cIiFpc011dGVcIj4gbWljPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC1idG4tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBzdGFydC1zdG9wXCIgKm5nSWY9XCJkYXRhPy5pc0NhbGxDb25uZWN0ZWQgJiYgIWlzUmVjb3JkaW5nXCIgW25nQ2xhc3NdPVwieydyZWNvcmRpbmcnOiBpc1JlY29yZGluZywgJ3N0b3BwZWQnOiAhaXNSZWNvcmRpbmd9XCIgKGNsaWNrKT1cInRvZ2dsZVJlY29yZGluZygnJylcIiBbdGl0bGVdPVwiaXNSZWNvcmRpbmcgPyAnU3RvcCBSZWNvcmRpbmcnIDogJ1N0YXJ0IFJlY29yZGluZydcIiBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlY29yZGluZy1pY29uXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlY29yZC1idG4gcGF1c2UtcmVzdW1lXCIgKm5nSWY9XCJkYXRhPy5pc0NhbGxDb25uZWN0ZWQgJiYgaXNSZWNvcmRpbmcgJiYgIWlzUGF1c2VkXCIgKGNsaWNrKT1cInBhdXNlUmVjb3JkaW5nKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHBhdXNlIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBwYXVzZS1yZXN1bWVcIiAqbmdJZj1cImRhdGE/LmlzQ2FsbENvbm5lY3RlZCAmJiBpc1BhdXNlZFwiIChjbGljayk9XCJyZXN1bWVSZWNvcmRpbmcoJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBwbGF5X2Fycm93IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtYnRuLXdyYXBwZXIgcmVqZWN0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKGNsaWNrKT1cInJlamVjdENhbGxGcm9tTGlzdChkYXRhKVwiPiBjYWxsX2VuZCA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlYXJyb3ctYXJyb3cgbWUtMlwiIGlkPVwidG9nZ2xlYXJyb3dcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFzRGV0YWlsZWRJbmZvKGRhdGEpID8gb25DbGlja0V4cGFuZChkYXRhKSA6IG51bGxcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogIWhhc0RldGFpbGVkSW5mbyhkYXRhKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJoYXNEZXRhaWxlZEluZm8oZGF0YSkgPyAnVmlldyBkZXRhaWxzJyA6ICdObyBkZXRhaWxzIGF2YWlsYWJsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtcmlnaHRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbC1jb250YWluZXIgcC0zIHRleHQtd2hpdGUgbW9kZWwtY29udGVudFwiICpuZ0lmPVwiaXNDbGlja0V4cGFuZCBcIj4gICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGwtYW5pbWF0aW9uXCIgW25nQ2xhc3NdPVwieydjYWxsLWFuaW1hdGlvbi1wbGF5Jzogc2hvd1JpbmdBbmltYXRpb259XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdmF0YXItaW1nXCIgW3NyY109XCJpbmNvbWluZ0NhbGxEYXRhLmltZ1wiIGFsdD1cIlwiIHdpZHRoPVwiMTAwXCIgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC13aGl0ZVwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubmFtZSB8fCAnLSd9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImYtMTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS0yXCI+U3ViamVjdDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTJcIj57e3NlbGVjdGVkSW5jb21pbmdDYWxsPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/LnN1YmplY3QgfHwgJy0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtMlwiPkVtYWlsOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uZW1haWwgfHwgJy0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+TnVtYmVyOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj57e3NlbGVjdGVkSW5jb21pbmdDYWxsPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/Lm51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5MYW5ndWFnZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubGFuZ3VhZ2UgfHwgJy0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5FeHRlbnNpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTJcIj57e3NlbGVjdGVkSW5jb21pbmdDYWxsPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/LmV4dGVuc2lvbiB8fCAnLSd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTJcIj5JbWFnZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZWxsaXBzaXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5pbWFnZSAmJiBzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5pbWFnZSAhPT0gJy0nOyBlbHNlIG5vSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8uaW1hZ2V9fVwiIGFsdD1cIlwiIHdpZHRoPVwiNDJcIiBoZWlnaHQ9XCI0MlwiIGNsYXNzPVwibWwtMlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0ltYWdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPk5vIEltYWdlIEF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5NZXNzYWdlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzXCI+e3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5tZXNzYWdlIHx8ICctJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+UG9pbnQgTmFtZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPnt7c2VsZWN0ZWRJbmNvbWluZ0NhbGw/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ucG9pbnROYW1lIHx8ICctJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlNvdXJjZSBOYW1lOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+e3tzZWxlY3RlZEluY29taW5nQ2FsbD8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5zb3VyY2VOYW1lIHx8ICctJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbC1hY3Rpb24tYnRucyBtdC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4gcmVjZWl2ZS1idG5cIiAqbmdJZj1cIiFzZWxlY3RlZEluY29taW5nQ2FsbD8uaXNDYWxsQ29ubmVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKGNsaWNrKT1cImFjY2VwdENhbGxGcm9tTGlzdChzZWxlY3RlZEluY29taW5nQ2FsbClcIj4gY2FsbCA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0biBtdXRlLWJ0blwiICpuZ0lmPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGw/LmlzQ2FsbENvbm5lY3RlZFwiICAoY2xpY2spPVwidG9nZ2xlTXV0ZShzZWxlY3RlZEluY29taW5nQ2FsbClcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1tdXRlJzogaXNNdXRlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiICpuZ0lmPVwiaXNNdXRlXCI+IG1pY19vZmYgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiICpuZ0lmPVwiIWlzTXV0ZVwiPiBtaWMgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjb3JkLWJ0bi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBzdGFydC1zdG9wXCIgKm5nSWY9XCJzZWxlY3RlZEluY29taW5nQ2FsbD8uaXNDYWxsQ29ubmVjdGVkICYmICFpc1JlY29yZGluZ1wiIFtuZ0NsYXNzXT1cInsncmVjb3JkaW5nJzogaXNSZWNvcmRpbmcsICdzdG9wcGVkJzogIWlzUmVjb3JkaW5nfVwiIChjbGljayk9XCJ0b2dnbGVSZWNvcmRpbmcoJycpXCIgW3RpdGxlXT1cImlzUmVjb3JkaW5nID8gJ1N0b3AgUmVjb3JkaW5nJyA6ICdTdGFydCBSZWNvcmRpbmcnXCIgW2Rpc2FibGVkXT1cImRpc2JhbGVFbmRDYWxsQnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjb3JkaW5nLWljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhdXNlLXJlc3VtZS1idG5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZWNvcmQtYnRuIHBhdXNlLXJlc3VtZVwiICpuZ0lmPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGw/LmlzQ2FsbENvbm5lY3RlZCAmJiBpc1JlY29yZGluZyAmJiAhaXNQYXVzZWRcIiAoY2xpY2spPVwicGF1c2VSZWNvcmRpbmcoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHBhdXNlIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZWNvcmQtYnRuIHBhdXNlLXJlc3VtZVwiICpuZ0lmPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGw/LmlzQ2FsbENvbm5lY3RlZCAmJiBpc1BhdXNlZFwiIChjbGljayk9XCJyZXN1bWVSZWNvcmRpbmcoJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gcGxheV9hcnJvdyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4gcmVqZWN0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIChjbGljayk9XCJyZWplY3RDYWxsRnJvbUxpc3Qoc2VsZWN0ZWRJbmNvbWluZ0NhbGwpXCI+IGNhbGxfZW5kIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ3YXZlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxzdmcgY2xhc3M9XCJ3YXZlc1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxyXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAyNCAxNTAgMjhcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiIHNoYXBlLXJlbmRlcmluZz1cImF1dG9cIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogJzc1NnB4J31cIj5cclxuICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBpZD1cImdlbnRsZS13YXZlXCIgZD1cIk0tMTYwIDQ0YzMwIDAgNTgtMTggODgtMThzIDU4IDE4IDg4IDE4IDU4LTE4IDg4LTE4IDU4IDE4IDg4IDE4IHY0NGgtMzUyelwiIC8+XHJcbiAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgPGcgY2xhc3M9XCJwYXJhbGxheFwiPlxyXG4gICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjBcIiBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjcpXCIgLz5cclxuICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiIHg9XCI0OFwiIHk9XCIzXCIgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC41KVwiIC8+ICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiN1wiIGZpbGw9XCIjZmZmXCIgLz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1775,31 +1775,27 @@ class IncomingCallComponent {
|
|
|
1775
1775
|
return false;
|
|
1776
1776
|
}
|
|
1777
1777
|
onClickExpand(data) {
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
// Collapse if clicking the same expanded item
|
|
1781
|
-
const updatedCall = Object.assign(Object.assign({}, this.selectedIncomingCall), { isClickExpand: false });
|
|
1778
|
+
if (this.selectedIncomingCall === data && this.isClickExpand) {
|
|
1779
|
+
this.isClickExpand = false;
|
|
1782
1780
|
this.selectedIncomingCall = null;
|
|
1783
|
-
this.selectedIncomingCallInfo.emit(
|
|
1781
|
+
this.selectedIncomingCallInfo.emit({});
|
|
1784
1782
|
return;
|
|
1785
1783
|
}
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
this.selectedIncomingCall
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
}
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
if (!updatedCall.userInfo || ((_c = updatedCall.userInfo) === null || _c === void 0 ? void 0 : _c.status) === 201) {
|
|
1802
|
-
this.getUserInformation(updatedCall);
|
|
1784
|
+
this.isClickExpand = true;
|
|
1785
|
+
this.selectedIncomingCall = data;
|
|
1786
|
+
if (this.selectedIncomingCall) {
|
|
1787
|
+
this.selectedIncomingCall['isClickExpand'] = true;
|
|
1788
|
+
if (this.newIncomingCallsList && this.newIncomingCallsList.length > 0) {
|
|
1789
|
+
this.newIncomingCallsList.forEach((call) => {
|
|
1790
|
+
if (call !== this.selectedIncomingCall) {
|
|
1791
|
+
call['isClickExpand'] = false;
|
|
1792
|
+
}
|
|
1793
|
+
});
|
|
1794
|
+
}
|
|
1795
|
+
this.selectedIncomingCallInfo.emit(this.selectedIncomingCall);
|
|
1796
|
+
if (!this.selectedIncomingCall.userInfo || this.selectedIncomingCall.userInfo.status == 201) {
|
|
1797
|
+
this.getUserInformation(this.selectedIncomingCall);
|
|
1798
|
+
}
|
|
1803
1799
|
}
|
|
1804
1800
|
}
|
|
1805
1801
|
getUserInformation(incomingCallData) {
|
|
@@ -2350,7 +2346,22 @@ class CallProgressComponent {
|
|
|
2350
2346
|
codecPreferences: ['opus', 'pcmu'],
|
|
2351
2347
|
closeProtection: true,
|
|
2352
2348
|
};
|
|
2353
|
-
|
|
2349
|
+
// Reuse existing Device if available; otherwise create and register once
|
|
2350
|
+
if (!this.device) {
|
|
2351
|
+
this.device = new Device(tokenData.token.value, options);
|
|
2352
|
+
yield this.device.register();
|
|
2353
|
+
}
|
|
2354
|
+
else {
|
|
2355
|
+
// Update token if Device supports it and token changed/rotated
|
|
2356
|
+
try {
|
|
2357
|
+
if (this.device.updateToken) {
|
|
2358
|
+
yield this.device.updateToken(tokenData.token.value);
|
|
2359
|
+
}
|
|
2360
|
+
}
|
|
2361
|
+
catch (e) {
|
|
2362
|
+
console.warn('Device updateToken failed, proceeding with existing token', e);
|
|
2363
|
+
}
|
|
2364
|
+
}
|
|
2354
2365
|
const newCall = yield this.device.connect({
|
|
2355
2366
|
params: {
|
|
2356
2367
|
From: this.callData.from,
|
|
@@ -2684,23 +2695,8 @@ class CallProgressComponent {
|
|
|
2684
2695
|
this.newIncomingCallsList = data;
|
|
2685
2696
|
this.incomingCallsNewInfo.emit(this.newIncomingCallsList);
|
|
2686
2697
|
}
|
|
2687
|
-
selectedIncomingCallInfo(
|
|
2688
|
-
|
|
2689
|
-
this.selectedIncomingCall = null;
|
|
2690
|
-
this.cdr.detectChanges();
|
|
2691
|
-
return;
|
|
2692
|
-
}
|
|
2693
|
-
// Update the call in the array if it exists
|
|
2694
|
-
if (this.newIncomingCallsList) {
|
|
2695
|
-
this.newIncomingCallsList = this.newIncomingCallsList.map((call) => {
|
|
2696
|
-
var _a, _b;
|
|
2697
|
-
return ((_a = call.parameters) === null || _a === void 0 ? void 0 : _a.CallSid) === ((_b = updatedCall.parameters) === null || _b === void 0 ? void 0 : _b.CallSid)
|
|
2698
|
-
? Object.assign(Object.assign({}, call), updatedCall) : Object.assign(Object.assign({}, call), { isClickExpand: false });
|
|
2699
|
-
});
|
|
2700
|
-
}
|
|
2701
|
-
// Update the selected call reference
|
|
2702
|
-
this.selectedIncomingCall = updatedCall;
|
|
2703
|
-
this.cdr.detectChanges();
|
|
2698
|
+
selectedIncomingCallInfo(data) {
|
|
2699
|
+
this.selectedIncomingCall = data;
|
|
2704
2700
|
}
|
|
2705
2701
|
ngOnDestroy() {
|
|
2706
2702
|
this.callData.dial = false;
|