axidio-styleguide-library1-v2 0.7.12 → 0.7.13
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/esm2022/lib/dropdown/dropdown.component.mjs +67 -38
- package/esm2022/lib/horizontal-grouped-bar-with-scroll-zoom/horizontal-grouped-bar-with-scroll-zoom.component.mjs +2 -2
- package/fesm2022/axidio-styleguide-library1-v2.mjs +67 -38
- package/fesm2022/axidio-styleguide-library1-v2.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -81,58 +81,87 @@ export class DropdownComponent {
|
|
|
81
81
|
}
|
|
82
82
|
handleListHeaderClick(event, data, entireList) {
|
|
83
83
|
this.handleListPanelClick(event);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
if (this.dropdownHeaderName != 'Compare By' && !data.children) {
|
|
85
|
+
this.dropdownHeaderName = data.name;
|
|
86
|
+
this.isDropdownOpen = false;
|
|
87
|
+
if (this.dropdownHeaderName == 'Compare by')
|
|
88
|
+
this.setDropDownStatus();
|
|
89
|
+
else
|
|
90
|
+
sessionStorage.setItem('chartHeaderDropdown2', 'false');
|
|
91
|
+
this.selectedCompareBy = {};
|
|
92
|
+
}
|
|
93
|
+
let keysArray = Object.keys(this.selectedCompareBy);
|
|
94
|
+
if (!keysArray.length || !keysArray.includes(data.name)) {
|
|
95
|
+
this.selectedCompareBy[data.name] = data.children ? data.children : data;
|
|
96
|
+
}
|
|
97
|
+
else if (data.children) {
|
|
98
|
+
delete this.selectedCompareBy[data.name];
|
|
99
|
+
}
|
|
100
|
+
if (this.dropdownHeaderName != 'Compare by' &&
|
|
101
|
+
((sessionStorage.getItem('selectedCompare2By') &&
|
|
102
|
+
sessionStorage.getItem('selectedCompare2By') != '{}' &&
|
|
103
|
+
JSON.stringify(this.selectedCompareBy) ==
|
|
104
|
+
sessionStorage.getItem('selectedCompare2By')) ||
|
|
105
|
+
(!sessionStorage.getItem('selectedCompare2By') &&
|
|
106
|
+
JSON.stringify(this.selectedCompareBy)
|
|
107
|
+
.toLowerCase()
|
|
108
|
+
.includes(this.dropdownHeaderName.toLowerCase())))) {
|
|
87
109
|
}
|
|
88
110
|
else {
|
|
89
|
-
|
|
111
|
+
this.selectedFromDropdown.emit({
|
|
112
|
+
compareByFilters: this.selectedCompareBy,
|
|
113
|
+
entireList: entireList,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
if (this.dropdownHeaderName == 'Compare by' && data.children)
|
|
117
|
+
sessionStorage.setItem('selectedCompareBy', JSON.stringify(this.selectedCompareBy));
|
|
118
|
+
else {
|
|
119
|
+
sessionStorage.setItem('selectedCompare2By', JSON.stringify(this.selectedCompareBy));
|
|
90
120
|
}
|
|
91
|
-
this.selectedCompareBy = updated;
|
|
92
|
-
this.selectedFromDropdown.emit({
|
|
93
|
-
compareByFilters: this.selectedCompareBy,
|
|
94
|
-
entireList,
|
|
95
|
-
});
|
|
96
|
-
sessionStorage.setItem(this.dropdownHeaderName === 'Compare by'
|
|
97
|
-
? 'selectedCompareBy'
|
|
98
|
-
: 'selectedCompare2By', JSON.stringify(this.selectedCompareBy));
|
|
99
121
|
}
|
|
100
122
|
handleListChildrenClick(event, parent, child) {
|
|
101
123
|
this.handleListPanelClick(event);
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
: [];
|
|
106
|
-
const index = currentChildren.findIndex(c => c.name === child.name);
|
|
107
|
-
if (index === -1) {
|
|
108
|
-
currentChildren.push(child);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
currentChildren.splice(index, 1);
|
|
112
|
-
}
|
|
113
|
-
if (currentChildren.length > 0) {
|
|
114
|
-
updated[parent.name] = currentChildren;
|
|
124
|
+
let keysArray = Object.keys(this.selectedCompareBy);
|
|
125
|
+
if (!keysArray.length || !keysArray.includes(parent.name)) {
|
|
126
|
+
this.selectedCompareBy[parent.name] = [child];
|
|
115
127
|
}
|
|
116
128
|
else {
|
|
117
|
-
|
|
129
|
+
/** check if the child is already present */
|
|
130
|
+
let childObjFound = this.selectedCompareBy[parent.name].find((childObj) => childObj.name === child.name);
|
|
131
|
+
if (!childObjFound) {
|
|
132
|
+
/**child not found */
|
|
133
|
+
this.selectedCompareBy[parent.name].push(child);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
/**child already selected - hence delete that child*/
|
|
137
|
+
this.selectedCompareBy[parent.name] = this.selectedCompareBy[parent.name].filter((childObj) => childObj.name !== child.name);
|
|
138
|
+
if (this.selectedCompareBy[parent.name] &&
|
|
139
|
+
!this.selectedCompareBy[parent.name].length) {
|
|
140
|
+
delete this.selectedCompareBy[parent.name];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
118
143
|
}
|
|
119
|
-
this.selectedCompareBy = updated;
|
|
120
144
|
this.selectedFromDropdown.emit({
|
|
121
145
|
compareByFilters: this.selectedCompareBy,
|
|
122
|
-
entireList: parent
|
|
146
|
+
entireList: parent?.children,
|
|
123
147
|
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
148
|
+
if (this.dropdownHeaderName == 'Compare by' && parent.children)
|
|
149
|
+
sessionStorage.setItem('selectedCompareBy', JSON.stringify(this.selectedCompareBy));
|
|
150
|
+
else {
|
|
151
|
+
sessionStorage.setItem('selectedCompare2By', JSON.stringify(this.selectedCompareBy));
|
|
152
|
+
}
|
|
127
153
|
}
|
|
128
154
|
handleIfPresent(data) {
|
|
129
|
-
|
|
130
|
-
if (
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
return
|
|
155
|
+
let parentObj = this.dropdownData.find((obj) => obj.name === data.name);
|
|
156
|
+
if (this.selectedCompareBy[data.name] &&
|
|
157
|
+
parentObj.children &&
|
|
158
|
+
parentObj.children.length == this.selectedCompareBy[data.name]?.length) {
|
|
159
|
+
return true;
|
|
134
160
|
}
|
|
135
|
-
|
|
161
|
+
if (this.selectedCompareBy[data.name] && !parentObj.children) {
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
return false;
|
|
136
165
|
}
|
|
137
166
|
handleIfChildPresent(parent, child) {
|
|
138
167
|
if (!Object.keys(this.selectedCompareBy).length) {
|
|
@@ -208,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
208
237
|
type: HostListener,
|
|
209
238
|
args: ['document:click', ['$event']]
|
|
210
239
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXhpZGlvLXN0eWxlZ3VpZGUtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F4aWRpby1zdHlsZWd1aWRlLWxpYnJhcnkvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7OztBQVF2QixNQUFNLE9BQU8saUJBQWlCO0lBVTVCO1FBVFMsdUJBQWtCLEdBQVcsWUFBWSxDQUFDO1FBQzFDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ3pDLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUV0QixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFFakMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCw2QkFBd0IsR0FBUSxFQUFFLENBQUM7UUFFakMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxXQUFXO1FBQ1QsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDeEUsSUFBSSxjQUFjLEVBQUUsQ0FB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Q3BDLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxxQkFBcUI7Z0JBQ2xDLEtBQUssQ0FBQyxHQUFHLElBQUksc0JBQXNCLENBQUMsRUFDdEMsQ0FBQztZQUNELElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBQ0QseUJBQXlCLENBQUMsVUFBa0IsRUFBRSxLQUFZO1FBQ3hELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELGNBQWMsQ0FBQyxPQUFPLENBQ3BCLDBCQUEwQixFQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQzsrR0FuT1UsaUJBQWlCO21HQUFqQixpQkFBaUIseVhDbEI5QixvbkZBMERBOzs0RkR4Q2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGNBQWMsaUJBR1QsaUJBQWlCLENBQUMsSUFBSTt3REFHNUIsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBd0VQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5sZXNzJywgJy4uL2NvbW1vbi1zdHlsZXMubGVzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBkcm9wZG93bkhlYWRlck5hbWU6IHN0cmluZyA9ICdDb21wYXJlIGJ5JztcclxuICBASW5wdXQoKSBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkQ29tcGFyZUJ5OiBvYmplY3QgPSB7fTtcclxuICBASW5wdXQoKSBkcm9wZG93bkRhdGE6IGFueTtcclxuICBASW5wdXQoKSBpc0NoZWNrYm94VmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBkZENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRGcm9tRHJvcGRvd24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBjaGlsZERyb3Bkb3duTGlzdFZpc2libGU6IGFueSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCB0aGlzLm9uU3RvcmFnZUNoYW5nZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIHRoaXMub25TdG9yYWdlQ2hhbmdlKTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgbGV0IHZhbHVlRnJvbVN0b3JlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlJyk7XHJcbiAgICBpZiAodmFsdWVGcm9tU3RvcmUpIHtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBKU09OLnBhcnNlKHZhbHVlRnJvbVN0b3JlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29tcGFyZUJ5RnJvbVN0b3RhZ2UgPVxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzZWxlY3RlZENvbXBhcmVCeScpO1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RlZENvbXBhcmVCeUZyb21TdG90YWdlICYmXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5J1xyXG4gICAgKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbXBhcmVCeSA9IEpTT04ucGFyc2Uoc2VsZWN0ZWRDb21wYXJlQnlGcm9tU3RvdGFnZSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBzZWxlY3RlZENvbXBhcmVCeSBmcm9tIHNlc3Npb25TdG9yYWdlOicsIGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWxlY3RlZENvbXBhcmUyQnlGcm9tU3RvdGFnZSA9XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkQ29tcGFyZTJCeScpO1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RlZENvbXBhcmUyQnlGcm9tU3RvdGFnZSAmJlxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSAhPSAnQ29tcGFyZSBieSdcclxuICAgICkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkgPSBKU09OLnBhcnNlKHNlbGVjdGVkQ29tcGFyZTJCeUZyb21TdG90YWdlKTtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KSAmJlxyXG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZENvbXBhcmVCeSkubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpWzBdXHJcbiAgICAgICAgICAgIDogJyc7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBzZWxlY3RlZENvbXBhcmVCeSBmcm9tIHNlc3Npb25TdG9yYWdlOicsIGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24nKSAmJlxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9PSAnQ29tcGFyZSBieSdcclxuICAgIClcclxuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hhcnRIZWFkZXJEcm9wZG93bicpID09ICd0cnVlJztcclxuICB9XHJcbiAgaGVhZGVyQ2xpY2tlZChldmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRkQ2xpY2tlZC5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5JykgdGhpcy5zZXREcm9wRG93blN0YXR1cygpO1xyXG4gICAgZWxzZSB0aGlzLnNldERyb3BEb3duMlN0YXR1cygpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnaXNQZXJmb3JtYW5jZUNsb3NlZCcsICd0cnVlJyk7XHJcbiAgfVxyXG4gIHNldERyb3BEb3duU3RhdHVzKCkge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgJ2NoYXJ0SGVhZGVyRHJvcGRvd24nLFxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duMicsICdmYWxzZScpO1xyXG4gIH1cclxuICBzZXREcm9wRG93bjJTdGF0dXMoKSB7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duJywgJ2ZhbHNlJyk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnY2hhcnRIZWFkZXJEcm9wZG93bjInLFxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBjbGlja291dCgpIHtcclxuICAgIGlmICh0aGlzLmlzRHJvcGRvd25PcGVuKSB7XHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBbXTtcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlJywgSlNPTi5zdHJpbmdpZnkoW10pKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSAhPSAnQ29tcGFyZSBieScpXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJywgJ2ZhbHNlJyk7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkhlYWRlck5hbWUgPT0gJ0NvbXBhcmUgYnknKSB0aGlzLnNldERyb3BEb3duU3RhdHVzKCk7XHJcbiAgfVxyXG4gIGhhbmRsZUxpc3RIZWFkZXJDbGljayhldmVudCwgZGF0YSwgZW50aXJlTGlzdCkge1xyXG4gICAgdGhpcy5oYW5kbGVMaXN0UGFuZWxDbGljayhldmVudCk7XHJcblxyXG4gICAgY29uc3QgdXBkYXRlZCA9IHsgLi4udGhpcy5zZWxlY3RlZENvbXBhcmVCeSB9O1xyXG5cclxuICAgIGlmICh1cGRhdGVkW2RhdGEubmFtZV0pIHtcclxuICAgICAgZGVsZXRlIHVwZGF0ZWRbZGF0YS5uYW1lXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVwZGF0ZWRbZGF0YS5uYW1lXSA9IGRhdGEuY2hpbGRyZW4gPyBbLi4uZGF0YS5jaGlsZHJlbl0gOiBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkgPSB1cGRhdGVkO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRGcm9tRHJvcGRvd24uZW1pdCh7XHJcbiAgICAgIGNvbXBhcmVCeUZpbHRlcnM6IHRoaXMuc2VsZWN0ZWRDb21wYXJlQnksXHJcbiAgICAgIGVudGlyZUxpc3QsXHJcbiAgICB9KTtcclxuXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9PT0gJ0NvbXBhcmUgYnknXHJcbiAgICAgICAgPyAnc2VsZWN0ZWRDb21wYXJlQnknXHJcbiAgICAgICAgOiAnc2VsZWN0ZWRDb21wYXJlMkJ5JyxcclxuICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZENvbXBhcmVCeSlcclxuICAgICk7XHJcbiAgfVxyXG4gIGhhbmRsZUxpc3RDaGlsZHJlbkNsaWNrKGV2ZW50LCBwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICB0aGlzLmhhbmRsZUxpc3RQYW5lbENsaWNrKGV2ZW50KTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVkID0geyAuLi50aGlzLnNlbGVjdGVkQ29tcGFyZUJ5IH07XHJcbiAgICBjb25zdCBjdXJyZW50Q2hpbGRyZW4gPSB1cGRhdGVkW3BhcmVudC5uYW1lXVxyXG4gICAgICA/IFsuLi51cGRhdGVkW3BhcmVudC5uYW1lXV1cclxuICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRDaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLm5hbWUgPT09IGNoaWxkLm5hbWUpO1xyXG5cclxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcclxuICAgICAgY3VycmVudENoaWxkcmVuLnB1c2goY2hpbGQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY3VycmVudENoaWxkcmVuLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGN1cnJlbnRDaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHVwZGF0ZWRbcGFyZW50Lm5hbWVdID0gY3VycmVudENoaWxkcmVuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVsZXRlIHVwZGF0ZWRbcGFyZW50Lm5hbWVdO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkgPSB1cGRhdGVkO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRGcm9tRHJvcGRvd24uZW1pdCh7XHJcbiAgICAgIGNvbXBhcmVCeUZpbHRlcnM6IHRoaXMuc2VsZWN0ZWRDb21wYXJlQnksXHJcbiAgICAgIGVudGlyZUxpc3Q6IHBhcmVudC5jaGlsZHJlbixcclxuICAgIH0pO1xyXG5cclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09PSAnQ29tcGFyZSBieSdcclxuICAgICAgICA/ICdzZWxlY3RlZENvbXBhcmVCeSdcclxuICAgICAgICA6ICdzZWxlY3RlZENvbXBhcmUyQnknLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KVxyXG4gICAgKTtcclxuICB9XHJcbmhhbmRsZUlmUHJlc2VudChkYXRhKSB7XHJcbiAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5W2RhdGEubmFtZV07XHJcblxyXG4gIGlmICghc2VsZWN0ZWQpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpICYmIGRhdGEuY2hpbGRyZW4pIHtcclxuICAgIHJldHVybiBzZWxlY3RlZC5sZW5ndGggPT09IGRhdGEuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuICBoYW5kbGVJZkNoaWxkUHJlc2VudChwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICBpZiAoIU9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgY2hpbGRPYmpGb3VuZCA9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdLmZpbmQoXHJcbiAgICAgICAgKGNoaWxkT2JqKSA9PiBjaGlsZE9iai5uYW1lID09PSBjaGlsZC5uYW1lXHJcbiAgICAgICk7XHJcbiAgICBpZiAoY2hpbGRPYmpGb3VuZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaGFuZGxlTGlzdFBhbmVsQ2xpY2soZXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuICBnZXREcm9wZG93bkhlYWRlck5hbWUoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lICE9ICdDb21wYXJlIGJ5JyAmJlxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdvbkhvdmVyZWRFbGVtZW50Q2xpY2tlZCcpXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgcmVxU3RyaW5nID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnb25Ib3ZlcmVkRWxlbWVudENsaWNrZWQnKTtcclxuICAgICAgaWYgKHJlcVN0cmluZykgdGhpcy5kcm9wZG93bkhlYWRlck5hbWUgPSByZXFTdHJpbmcucmVwbGFjZSgvXCIvZywgJycpO1xyXG4gICAgICByZXR1cm4gdGhpcy5kcm9wZG93bkhlYWRlck5hbWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93bkhlYWRlck5hbWU7XHJcbiAgfVxyXG4gIGdldERyb3Bkb3duVmlzaWJpbGl0eVN0YXR1cygpIHtcclxuICAgIGlmIChcclxuICAgICAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hhcnRIZWFkZXJEcm9wZG93bicpICYmXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5J1xyXG4gICAgKVxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID1cclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duJykgPT0gJ3RydWUnO1xyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJykgJiZcclxuICAgICAgdGhpcy5kcm9wZG93bkhlYWRlck5hbWUgIT0gJ0NvbXBhcmUgYnknXHJcbiAgICApXHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPVxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJykgPT0gJ3RydWUnO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEcm9wZG93bk9wZW47XHJcbiAgfVxyXG4gIHByaXZhdGUgb25TdG9yYWdlQ2hhbmdlKGV2ZW50OiBTdG9yYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuc3RvcmFnZUFyZWEgPT09IHNlc3Npb25TdG9yYWdlICYmXHJcbiAgICAgIChldmVudC5rZXkgPT09ICdjaGFydEhlYWRlckRyb3Bkb3duJyB8fFxyXG4gICAgICAgIGV2ZW50LmtleSA9PSAnY2hhcnRIZWFkZXJEcm9wZG93bjInKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZ2V0RHJvcGRvd25WaXNpYmlsaXR5U3RhdHVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZVNob3dPckhpZGVDaGlsZExpc3QocGFyZW50TmFtZTogc3RyaW5nLCBldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLmNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZS5pbmNsdWRlcyhwYXJlbnROYW1lKSkge1xyXG4gICAgICB0aGlzLmNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZSA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBbcGFyZW50TmFtZV07XHJcbiAgICB9XHJcblxyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgJ2NoaWxkRHJvcGRvd25MaXN0VmlzaWJsZScsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lclwiPlxyXG4gIDxidXR0b24gY2xhc3M9XCJ3ZWVrbHljaGFydHNfX3dlZWtidXR0b24gdGV4dC1hbGlnbi1sZWZ0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoZWFkZXJDbGlja2VkKCRldmVudClcIlxyXG4gICAgW25nQ2xhc3NdPVwieyAnd2Vla2x5Y2hhcnRzX19ib3JkZXJub3JtYWwnOiAhaXNEcm9wZG93bk9wZW4gfVwiPlxyXG4gICAge3sgZ2V0RHJvcGRvd25IZWFkZXJOYW1lKCkgfX1cclxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0LWNhcmV0XCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiYmlcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAnYmktY2FyZXQtZG93bi1maWxsJzogIWlzRHJvcGRvd25PcGVuLFxyXG4gICAgICAgICAgJ2JpLWNhcmV0LXVwLWZpbGwnOiBpc0Ryb3Bkb3duT3BlblxyXG4gICAgICAgIH1cIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPHVsIGNsYXNzPVwiZHJvcGRvd25fX2xpc3RcIiAqbmdJZj1cImdldERyb3Bkb3duVmlzaWJpbGl0eVN0YXR1cygpXCIgKGNsaWNrKT1cImhhbmRsZUxpc3RQYW5lbENsaWNrKCRldmVudClcIj5cclxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkcm9wZG93bkRhdGFcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAnd2Vla2x5Y2hhcnRzLWFjdGl2ZSc6IGRhdGEubmFtZSA9PT0gZHJvcGRvd25IZWFkZXJOYW1lLFxyXG4gICAgICAgICd3ZWVrbHljaGFydHMtaW5hY3RpdmUnOiBkYXRhLm5hbWUgIT09IGRyb3Bkb3duSGVhZGVyTmFtZVxyXG4gICAgICB9XCI+XHJcblxyXG4gICAgICA8IS0tIFBhcmVudCBJdGVtIC0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpc3BsYXktZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgZ2FwLTJcIiAoY2xpY2spPVwiaGFuZGxlTGlzdEhlYWRlckNsaWNrKCRldmVudCwgZGF0YSwgZHJvcGRvd25EYXRhKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWNoZWNrLXNxdWFyZSc6IGhhbmRsZUlmUHJlc2VudChkYXRhKSxcclxuICAgICAgICAgICAgICAnZmEtc3F1YXJlLW8nOiAhaGFuZGxlSWZQcmVzZW50KGRhdGEpXHJcbiAgICAgICAgICAgIH1cIiAqbmdJZj1cImlzQ2hlY2tib3hWaXNpYmxlXCI+PC9pPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC10ZXh0IGZvbnQtc2l6ZS0zXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZvbnQtd2VpZ2h0LTYwMCc6IGRhdGEubmFtZSA9PT0gZHJvcGRvd25IZWFkZXJOYW1lIH1cIj5cclxuICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPCEtLSBFeHBhbmQvQ29sbGFwc2UgSWNvbiAtLT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ymxpc3QtYXJyb3cgbGliLWRpc3BsYXktZmxleFwiICpuZ0lmPVwiZGF0YS5jaGlsZHJlblwiIFxyXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVNob3dPckhpZGVDaGlsZExpc3QoZGF0YS5uYW1lLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZvbnQtc2l6ZS0xIGZvbnQtd2VpZ2h0LTYwMFwiIFxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWFuZ2xlLXJpZ2h0JzogIWNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZS5pbmNsdWRlcyhkYXRhLm5hbWUpLFxyXG4gICAgICAgICAgICAgICdmYS1hbmdsZS1kb3duJzogY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlLmluY2x1ZGVzKGRhdGEubmFtZSlcclxuICAgICAgICAgICAgfVwiPjwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDwhLS0gQ2hpbGRyZW4gTGlzdCAtLT5cclxuICAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tc3VibGlzdCBsaWItbWwtMjAgbGliLWxpc3QtY2hpbGRyZW5cIlxyXG4gICAgICAgICpuZ0lmPVwiZGF0YS5jaGlsZHJlbiAmJiBjaGlsZERyb3Bkb3duTGlzdFZpc2libGUuaW5jbHVkZXMoZGF0YS5uYW1lKVwiPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgZGF0YS5jaGlsZHJlblwiIFxyXG4gICAgICAgICAgICBjbGFzcz1cImRpc3BsYXktZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgZ2FwLTJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlTGlzdENoaWxkcmVuQ2xpY2soJGV2ZW50LCBkYXRhLCBjaGlsZClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWNoZWNrLXNxdWFyZSc6IGhhbmRsZUlmQ2hpbGRQcmVzZW50KGRhdGEsIGNoaWxkKSxcclxuICAgICAgICAgICAgICAnZmEtc3F1YXJlLW8nOiAhaGFuZGxlSWZDaGlsZFByZXNlbnQoZGF0YSwgY2hpbGQpXHJcbiAgICAgICAgICAgIH1cIj48L2k+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrYm94LXRleHQtc3R5bGVzXCI+e3sgY2hpbGQubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXhpZGlvLXN0eWxlZ3VpZGUtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F4aWRpby1zdHlsZWd1aWRlLWxpYnJhcnkvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7OztBQVF2QixNQUFNLE9BQU8saUJBQWlCO0lBVTVCO1FBVFMsdUJBQWtCLEdBQVcsWUFBWSxDQUFDO1FBQzFDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ3pDLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUV0QixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFFakMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCw2QkFBd0IsR0FBUSxFQUFFLENBQUM7UUFFakMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxXQUFXO1FBQ1QsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDeEUsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsTUFBTSw0QkFBNEIsR0FDaEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzlDLElBQ0UsNEJBQTRCO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxZQUFZLEVBQ3ZDLENBQUM7WUFDRCxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLHNEQUFzRCxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSw2QkFBNkIsR0FDakMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQy9DLElBQ0UsNkJBQTZCO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxZQUFZLEVBQ3ZDLENBQUM7WUFDRCxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLGtCQUFrQjtvQkFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7d0JBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7d0JBQzVDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDeEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNYLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0RBQXNELEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekUsQ0FBQztRQUNILENBQUM7UUFDRCxJQUNFLGNBQWMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUM7WUFDN0MsSUFBSSxDQUFDLGtCQUFrQixJQUFJLFlBQVk7WUFFdkMsSUFBSSxDQUFDLGNBQWM7Z0JBQ2pCLGNBQWMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxNQUFNLENBQUM7SUFDOUQsQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFLO1FBQ2pCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxZQUFZO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7O1lBQ2pFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9CLGNBQWMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELGlCQUFpQjtRQUNmLGNBQWMsQ0FBQyxPQUFPLENBQ3BCLHFCQUFxQixFQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUMvQixDQUFDO1FBQ0YsY0FBYyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLGNBQWMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkQsY0FBYyxDQUFDLE9BQU8sQ0FDcEIsc0JBQXNCLEVBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUM7WUFDbkMsY0FBYyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLFlBQVk7WUFDekMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxZQUFZO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDeEUsQ0FBQztJQUNELHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVTtRQUMzQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLFlBQVk7Z0JBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7O2dCQUNqRSxjQUFjLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQ0UsSUFBSSxDQUFDLGtCQUFrQixJQUFJLFlBQVk7WUFDdkMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7Z0JBQzVDLGNBQWMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxJQUFJO2dCQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztvQkFDcEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7eUJBQ25DLFdBQVcsRUFBRTt5QkFDYixRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUN4RCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO2dCQUM3QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCO2dCQUN4QyxVQUFVLEVBQUUsVUFBVTthQUN2QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQzFELGNBQWMsQ0FBQyxPQUFPLENBQ3BCLG1CQUFtQixFQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUN2QyxDQUFDO2FBQ0MsQ0FBQztZQUNKLGNBQWMsQ0FBQyxPQUFPLENBQ3BCLG9CQUFvQixFQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUN2QyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUs7UUFDMUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLDRDQUE0QztZQUM1QyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDMUQsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksQ0FDM0MsQ0FBQztZQUNGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkIscUJBQXFCO2dCQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04scURBQXFEO2dCQUNyRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDMUQsTUFBTSxDQUFDLElBQUksQ0FDWixDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JELElBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ25DLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQzNDLENBQUM7b0JBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDeEMsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRO1NBQzdCLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLFlBQVksSUFBSSxNQUFNLENBQUMsUUFBUTtZQUM1RCxjQUFjLENBQUMsT0FBTyxDQUNwQixtQkFBbUIsRUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FDdkMsQ0FBQzthQUNDLENBQUM7WUFDSixjQUFjLENBQUMsT0FBTyxDQUNwQixvQkFBb0IsRUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FDdkMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBQ0QsZUFBZSxDQUFDLElBQUk7UUFDbEIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDakMsU0FBUyxDQUFDLFFBQVE7WUFDbEIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQ3RFLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsTUFBTSxFQUFFLEtBQUs7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxhQUFhLEdBQ2YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ3RDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQzNDLENBQUM7UUFDSixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELG9CQUFvQixDQUFDLEtBQUs7UUFDeEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxxQkFBcUI7UUFDbkIsSUFDRSxJQUFJLENBQUMsa0JBQWtCLElBQUksWUFBWTtZQUN2QyxjQUFjLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLEVBQ2pELENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDcEUsSUFBSSxTQUFTO2dCQUFFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUNELDJCQUEyQjtRQUN6QixJQUNFLGNBQWMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUM7WUFDN0MsSUFBSSxDQUFDLGtCQUFrQixJQUFJLFlBQVk7WUFFdkMsSUFBSSxDQUFDLGNBQWM7Z0JBQ2pCLGNBQWMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxNQUFNLENBQUM7YUFDdkQsSUFDSCxjQUFjLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDO1lBQzlDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxZQUFZO1lBRXZDLElBQUksQ0FBQyxjQUFjO2dCQUNqQixjQUFjLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksTUFBTSxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBQ08sZUFBZSxDQUFDLEtBQW1CO1FBQ3pDLElBQ0UsS0FBSyxDQUFDLFdBQVcsS0FBSyxjQUFjO1lBQ3BDLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxxQkFBcUI7Z0JBQ2xDLEtBQUssQ0FBQyxHQUFHLElBQUksc0JBQXNCLENBQUMsRUFDdEMsQ0FBQztZQUNELElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBQ0QseUJBQXlCLENBQUMsVUFBa0IsRUFBRSxLQUFZO1FBQ3hELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELGNBQWMsQ0FBQyxPQUFPLENBQ3BCLDBCQUEwQixFQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQzsrR0EvUFUsaUJBQWlCO21HQUFqQixpQkFBaUIseVhDbEI5QixvbkZBMERBOzs0RkR4Q2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGNBQWMsaUJBR1QsaUJBQWlCLENBQUMsSUFBSTt3REFHNUIsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBd0VQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5sZXNzJywgJy4uL2NvbW1vbi1zdHlsZXMubGVzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBkcm9wZG93bkhlYWRlck5hbWU6IHN0cmluZyA9ICdDb21wYXJlIGJ5JztcclxuICBASW5wdXQoKSBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkQ29tcGFyZUJ5OiBvYmplY3QgPSB7fTtcclxuICBASW5wdXQoKSBkcm9wZG93bkRhdGE6IGFueTtcclxuICBASW5wdXQoKSBpc0NoZWNrYm94VmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBkZENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRGcm9tRHJvcGRvd24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBjaGlsZERyb3Bkb3duTGlzdFZpc2libGU6IGFueSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCB0aGlzLm9uU3RvcmFnZUNoYW5nZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIHRoaXMub25TdG9yYWdlQ2hhbmdlKTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgbGV0IHZhbHVlRnJvbVN0b3JlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlJyk7XHJcbiAgICBpZiAodmFsdWVGcm9tU3RvcmUpIHtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBKU09OLnBhcnNlKHZhbHVlRnJvbVN0b3JlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29tcGFyZUJ5RnJvbVN0b3RhZ2UgPVxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzZWxlY3RlZENvbXBhcmVCeScpO1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RlZENvbXBhcmVCeUZyb21TdG90YWdlICYmXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5J1xyXG4gICAgKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbXBhcmVCeSA9IEpTT04ucGFyc2Uoc2VsZWN0ZWRDb21wYXJlQnlGcm9tU3RvdGFnZSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBzZWxlY3RlZENvbXBhcmVCeSBmcm9tIHNlc3Npb25TdG9yYWdlOicsIGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWxlY3RlZENvbXBhcmUyQnlGcm9tU3RvdGFnZSA9XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkQ29tcGFyZTJCeScpO1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RlZENvbXBhcmUyQnlGcm9tU3RvdGFnZSAmJlxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSAhPSAnQ29tcGFyZSBieSdcclxuICAgICkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkgPSBKU09OLnBhcnNlKHNlbGVjdGVkQ29tcGFyZTJCeUZyb21TdG90YWdlKTtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KSAmJlxyXG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZENvbXBhcmVCeSkubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpWzBdXHJcbiAgICAgICAgICAgIDogJyc7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBzZWxlY3RlZENvbXBhcmVCeSBmcm9tIHNlc3Npb25TdG9yYWdlOicsIGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24nKSAmJlxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9PSAnQ29tcGFyZSBieSdcclxuICAgIClcclxuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hhcnRIZWFkZXJEcm9wZG93bicpID09ICd0cnVlJztcclxuICB9XHJcbiAgaGVhZGVyQ2xpY2tlZChldmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmRkQ2xpY2tlZC5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5JykgdGhpcy5zZXREcm9wRG93blN0YXR1cygpO1xyXG4gICAgZWxzZSB0aGlzLnNldERyb3BEb3duMlN0YXR1cygpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnaXNQZXJmb3JtYW5jZUNsb3NlZCcsICd0cnVlJyk7XHJcbiAgfVxyXG4gIHNldERyb3BEb3duU3RhdHVzKCkge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgJ2NoYXJ0SGVhZGVyRHJvcGRvd24nLFxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duMicsICdmYWxzZScpO1xyXG4gIH1cclxuICBzZXREcm9wRG93bjJTdGF0dXMoKSB7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duJywgJ2ZhbHNlJyk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnY2hhcnRIZWFkZXJEcm9wZG93bjInLFxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBjbGlja291dCgpIHtcclxuICAgIGlmICh0aGlzLmlzRHJvcGRvd25PcGVuKSB7XHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBbXTtcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlJywgSlNPTi5zdHJpbmdpZnkoW10pKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSAhPSAnQ29tcGFyZSBieScpXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJywgJ2ZhbHNlJyk7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkhlYWRlck5hbWUgPT0gJ0NvbXBhcmUgYnknKSB0aGlzLnNldERyb3BEb3duU3RhdHVzKCk7XHJcbiAgfVxyXG4gIGhhbmRsZUxpc3RIZWFkZXJDbGljayhldmVudCwgZGF0YSwgZW50aXJlTGlzdCkge1xyXG4gICAgdGhpcy5oYW5kbGVMaXN0UGFuZWxDbGljayhldmVudCk7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkhlYWRlck5hbWUgIT0gJ0NvbXBhcmUgQnknICYmICFkYXRhLmNoaWxkcmVuKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID0gZGF0YS5uYW1lO1xyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSA9PSAnQ29tcGFyZSBieScpIHRoaXMuc2V0RHJvcERvd25TdGF0dXMoKTtcclxuICAgICAgZWxzZSBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duMicsICdmYWxzZScpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5ID0ge307XHJcbiAgICB9XHJcbiAgICBsZXQga2V5c0FycmF5ID0gT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZENvbXBhcmVCeSk7XHJcbiAgICBpZiAoIWtleXNBcnJheS5sZW5ndGggfHwgIWtleXNBcnJheS5pbmNsdWRlcyhkYXRhLm5hbWUpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbZGF0YS5uYW1lXSA9IGRhdGEuY2hpbGRyZW4gPyBkYXRhLmNoaWxkcmVuIDogZGF0YTtcclxuICAgIH0gZWxzZSBpZiAoZGF0YS5jaGlsZHJlbikge1xyXG4gICAgICBkZWxldGUgdGhpcy5zZWxlY3RlZENvbXBhcmVCeVtkYXRhLm5hbWVdO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmRyb3Bkb3duSGVhZGVyTmFtZSAhPSAnQ29tcGFyZSBieScgJiZcclxuICAgICAgKChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzZWxlY3RlZENvbXBhcmUyQnknKSAmJlxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkQ29tcGFyZTJCeScpICE9ICd7fScgJiZcclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KSA9PVxyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnc2VsZWN0ZWRDb21wYXJlMkJ5JykpIHx8XHJcbiAgICAgICAgKCFzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzZWxlY3RlZENvbXBhcmUyQnknKSAmJlxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZENvbXBhcmVCeSlcclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lLnRvTG93ZXJDYXNlKCkpKSlcclxuICAgICkge1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21Ecm9wZG93bi5lbWl0KHtcclxuICAgICAgICBjb21wYXJlQnlGaWx0ZXJzOiB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5LFxyXG4gICAgICAgIGVudGlyZUxpc3Q6IGVudGlyZUxpc3QsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5JyAmJiBkYXRhLmNoaWxkcmVuKVxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICdzZWxlY3RlZENvbXBhcmVCeScsXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZENvbXBhcmVCeSlcclxuICAgICAgKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICdzZWxlY3RlZENvbXBhcmUyQnknLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZUxpc3RDaGlsZHJlbkNsaWNrKGV2ZW50LCBwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICB0aGlzLmhhbmRsZUxpc3RQYW5lbENsaWNrKGV2ZW50KTtcclxuICAgIGxldCBrZXlzQXJyYXkgPSBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KTtcclxuICAgIGlmICgha2V5c0FycmF5Lmxlbmd0aCB8fCAha2V5c0FycmF5LmluY2x1ZGVzKHBhcmVudC5uYW1lKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5W3BhcmVudC5uYW1lXSA9IFtjaGlsZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvKiogY2hlY2sgaWYgdGhlIGNoaWxkIGlzIGFscmVhZHkgcHJlc2VudCAqL1xyXG4gICAgICBsZXQgY2hpbGRPYmpGb3VuZCA9IHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdLmZpbmQoXHJcbiAgICAgICAgKGNoaWxkT2JqKSA9PiBjaGlsZE9iai5uYW1lID09PSBjaGlsZC5uYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghY2hpbGRPYmpGb3VuZCkge1xyXG4gICAgICAgIC8qKmNoaWxkIG5vdCBmb3VuZCAqL1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdLnB1c2goY2hpbGQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8qKmNoaWxkIGFscmVhZHkgc2VsZWN0ZWQgLSBoZW5jZSBkZWxldGUgdGhhdCBjaGlsZCovXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbXBhcmVCeVtwYXJlbnQubmFtZV0gPSB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5W1xyXG4gICAgICAgICAgcGFyZW50Lm5hbWVcclxuICAgICAgICBdLmZpbHRlcigoY2hpbGRPYmopID0+IGNoaWxkT2JqLm5hbWUgIT09IGNoaWxkLm5hbWUpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdICYmXHJcbiAgICAgICAgICAhdGhpcy5zZWxlY3RlZENvbXBhcmVCeVtwYXJlbnQubmFtZV0ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3RlZENvbXBhcmVCeVtwYXJlbnQubmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkRnJvbURyb3Bkb3duLmVtaXQoe1xyXG4gICAgICBjb21wYXJlQnlGaWx0ZXJzOiB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5LFxyXG4gICAgICBlbnRpcmVMaXN0OiBwYXJlbnQ/LmNoaWxkcmVuLFxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkhlYWRlck5hbWUgPT0gJ0NvbXBhcmUgYnknICYmIHBhcmVudC5jaGlsZHJlbilcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAnc2VsZWN0ZWRDb21wYXJlQnknLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpXHJcbiAgICAgICk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAnc2VsZWN0ZWRDb21wYXJlMkJ5JyxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoYW5kbGVJZlByZXNlbnQoZGF0YSkge1xyXG4gICAgbGV0IHBhcmVudE9iaiA9IHRoaXMuZHJvcGRvd25EYXRhLmZpbmQoKG9iaikgPT4gb2JqLm5hbWUgPT09IGRhdGEubmFtZSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbZGF0YS5uYW1lXSAmJlxyXG4gICAgICBwYXJlbnRPYmouY2hpbGRyZW4gJiZcclxuICAgICAgcGFyZW50T2JqLmNoaWxkcmVuLmxlbmd0aCA9PSB0aGlzLnNlbGVjdGVkQ29tcGFyZUJ5W2RhdGEubmFtZV0/Lmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbZGF0YS5uYW1lXSAmJiAhcGFyZW50T2JqLmNoaWxkcmVuKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBoYW5kbGVJZkNoaWxkUHJlc2VudChwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICBpZiAoIU9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRDb21wYXJlQnkpLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgY2hpbGRPYmpGb3VuZCA9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb21wYXJlQnlbcGFyZW50Lm5hbWVdLmZpbmQoXHJcbiAgICAgICAgKGNoaWxkT2JqKSA9PiBjaGlsZE9iai5uYW1lID09PSBjaGlsZC5uYW1lXHJcbiAgICAgICk7XHJcbiAgICBpZiAoY2hpbGRPYmpGb3VuZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaGFuZGxlTGlzdFBhbmVsQ2xpY2soZXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuICBnZXREcm9wZG93bkhlYWRlck5hbWUoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lICE9ICdDb21wYXJlIGJ5JyAmJlxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdvbkhvdmVyZWRFbGVtZW50Q2xpY2tlZCcpXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgcmVxU3RyaW5nID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnb25Ib3ZlcmVkRWxlbWVudENsaWNrZWQnKTtcclxuICAgICAgaWYgKHJlcVN0cmluZykgdGhpcy5kcm9wZG93bkhlYWRlck5hbWUgPSByZXFTdHJpbmcucmVwbGFjZSgvXCIvZywgJycpO1xyXG4gICAgICByZXR1cm4gdGhpcy5kcm9wZG93bkhlYWRlck5hbWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93bkhlYWRlck5hbWU7XHJcbiAgfVxyXG4gIGdldERyb3Bkb3duVmlzaWJpbGl0eVN0YXR1cygpIHtcclxuICAgIGlmIChcclxuICAgICAgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hhcnRIZWFkZXJEcm9wZG93bicpICYmXHJcbiAgICAgIHRoaXMuZHJvcGRvd25IZWFkZXJOYW1lID09ICdDb21wYXJlIGJ5J1xyXG4gICAgKVxyXG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID1cclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGFydEhlYWRlckRyb3Bkb3duJykgPT0gJ3RydWUnO1xyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJykgJiZcclxuICAgICAgdGhpcy5kcm9wZG93bkhlYWRlck5hbWUgIT0gJ0NvbXBhcmUgYnknXHJcbiAgICApXHJcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPVxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoYXJ0SGVhZGVyRHJvcGRvd24yJykgPT0gJ3RydWUnO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEcm9wZG93bk9wZW47XHJcbiAgfVxyXG4gIHByaXZhdGUgb25TdG9yYWdlQ2hhbmdlKGV2ZW50OiBTdG9yYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuc3RvcmFnZUFyZWEgPT09IHNlc3Npb25TdG9yYWdlICYmXHJcbiAgICAgIChldmVudC5rZXkgPT09ICdjaGFydEhlYWRlckRyb3Bkb3duJyB8fFxyXG4gICAgICAgIGV2ZW50LmtleSA9PSAnY2hhcnRIZWFkZXJEcm9wZG93bjInKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZ2V0RHJvcGRvd25WaXNpYmlsaXR5U3RhdHVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZVNob3dPckhpZGVDaGlsZExpc3QocGFyZW50TmFtZTogc3RyaW5nLCBldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLmNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZS5pbmNsdWRlcyhwYXJlbnROYW1lKSkge1xyXG4gICAgICB0aGlzLmNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZSA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jaGlsZERyb3Bkb3duTGlzdFZpc2libGUgPSBbcGFyZW50TmFtZV07XHJcbiAgICB9XHJcblxyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgJ2NoaWxkRHJvcGRvd25MaXN0VmlzaWJsZScsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lclwiPlxyXG4gIDxidXR0b24gY2xhc3M9XCJ3ZWVrbHljaGFydHNfX3dlZWtidXR0b24gdGV4dC1hbGlnbi1sZWZ0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoZWFkZXJDbGlja2VkKCRldmVudClcIlxyXG4gICAgW25nQ2xhc3NdPVwieyAnd2Vla2x5Y2hhcnRzX19ib3JkZXJub3JtYWwnOiAhaXNEcm9wZG93bk9wZW4gfVwiPlxyXG4gICAge3sgZ2V0RHJvcGRvd25IZWFkZXJOYW1lKCkgfX1cclxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0LWNhcmV0XCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiYmlcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAnYmktY2FyZXQtZG93bi1maWxsJzogIWlzRHJvcGRvd25PcGVuLFxyXG4gICAgICAgICAgJ2JpLWNhcmV0LXVwLWZpbGwnOiBpc0Ryb3Bkb3duT3BlblxyXG4gICAgICAgIH1cIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPHVsIGNsYXNzPVwiZHJvcGRvd25fX2xpc3RcIiAqbmdJZj1cImdldERyb3Bkb3duVmlzaWJpbGl0eVN0YXR1cygpXCIgKGNsaWNrKT1cImhhbmRsZUxpc3RQYW5lbENsaWNrKCRldmVudClcIj5cclxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkcm9wZG93bkRhdGFcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAnd2Vla2x5Y2hhcnRzLWFjdGl2ZSc6IGRhdGEubmFtZSA9PT0gZHJvcGRvd25IZWFkZXJOYW1lLFxyXG4gICAgICAgICd3ZWVrbHljaGFydHMtaW5hY3RpdmUnOiBkYXRhLm5hbWUgIT09IGRyb3Bkb3duSGVhZGVyTmFtZVxyXG4gICAgICB9XCI+XHJcblxyXG4gICAgICA8IS0tIFBhcmVudCBJdGVtIC0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpc3BsYXktZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgZ2FwLTJcIiAoY2xpY2spPVwiaGFuZGxlTGlzdEhlYWRlckNsaWNrKCRldmVudCwgZGF0YSwgZHJvcGRvd25EYXRhKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWNoZWNrLXNxdWFyZSc6IGhhbmRsZUlmUHJlc2VudChkYXRhKSxcclxuICAgICAgICAgICAgICAnZmEtc3F1YXJlLW8nOiAhaGFuZGxlSWZQcmVzZW50KGRhdGEpXHJcbiAgICAgICAgICAgIH1cIiAqbmdJZj1cImlzQ2hlY2tib3hWaXNpYmxlXCI+PC9pPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC10ZXh0IGZvbnQtc2l6ZS0zXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZvbnQtd2VpZ2h0LTYwMCc6IGRhdGEubmFtZSA9PT0gZHJvcGRvd25IZWFkZXJOYW1lIH1cIj5cclxuICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPCEtLSBFeHBhbmQvQ29sbGFwc2UgSWNvbiAtLT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ymxpc3QtYXJyb3cgbGliLWRpc3BsYXktZmxleFwiICpuZ0lmPVwiZGF0YS5jaGlsZHJlblwiIFxyXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVNob3dPckhpZGVDaGlsZExpc3QoZGF0YS5uYW1lLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZvbnQtc2l6ZS0xIGZvbnQtd2VpZ2h0LTYwMFwiIFxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWFuZ2xlLXJpZ2h0JzogIWNoaWxkRHJvcGRvd25MaXN0VmlzaWJsZS5pbmNsdWRlcyhkYXRhLm5hbWUpLFxyXG4gICAgICAgICAgICAgICdmYS1hbmdsZS1kb3duJzogY2hpbGREcm9wZG93bkxpc3RWaXNpYmxlLmluY2x1ZGVzKGRhdGEubmFtZSlcclxuICAgICAgICAgICAgfVwiPjwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDwhLS0gQ2hpbGRyZW4gTGlzdCAtLT5cclxuICAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tc3VibGlzdCBsaWItbWwtMjAgbGliLWxpc3QtY2hpbGRyZW5cIlxyXG4gICAgICAgICpuZ0lmPVwiZGF0YS5jaGlsZHJlbiAmJiBjaGlsZERyb3Bkb3duTGlzdFZpc2libGUuaW5jbHVkZXMoZGF0YS5uYW1lKVwiPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgZGF0YS5jaGlsZHJlblwiIFxyXG4gICAgICAgICAgICBjbGFzcz1cImRpc3BsYXktZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgZ2FwLTJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlTGlzdENoaWxkcmVuQ2xpY2soJGV2ZW50LCBkYXRhLCBjaGlsZClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2ZhLWNoZWNrLXNxdWFyZSc6IGhhbmRsZUlmQ2hpbGRQcmVzZW50KGRhdGEsIGNoaWxkKSxcclxuICAgICAgICAgICAgICAnZmEtc3F1YXJlLW8nOiAhaGFuZGxlSWZDaGlsZFByZXNlbnQoZGF0YSwgY2hpbGQpXHJcbiAgICAgICAgICAgIH1cIj48L2k+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrYm94LXRleHQtc3R5bGVzXCI+e3sgY2hpbGQubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuPC9kaXY+XHJcbiJdfQ==
|