@vgroup/dialbox 0.6.32 → 0.6.34
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 +141 -111
- package/esm2020/lib/dialbox.component.mjs +61 -8
- package/esm2020/lib/service/extension.service.mjs +15 -3
- package/esm2020/lib/service/twilio.service.mjs +11 -13
- package/fesm2015/vgroup-dialbox.mjs +194 -100
- package/fesm2015/vgroup-dialbox.mjs.map +1 -1
- package/fesm2020/vgroup-dialbox.mjs +224 -131
- package/fesm2020/vgroup-dialbox.mjs.map +1 -1
- package/lib/components/call-progress/call-progress.component.d.ts +2 -1
- package/lib/service/extension.service.d.ts +1 -0
- package/lib/service/twilio.service.d.ts +2 -2
- package/package.json +1 -1
- package/vgroup-dialbox-0.6.34.tgz +0 -0
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import swal from 'sweetalert2';
|
|
3
|
-
import { AsYouType } from 'libphonenumber-js';
|
|
4
3
|
import { keypad } from '../keypad';
|
|
5
4
|
import { Subscription } from 'rxjs';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
@@ -137,13 +136,67 @@ export class DialboxComponent {
|
|
|
137
136
|
this.incomeingCallSocketService.connect(this.deviceId);
|
|
138
137
|
try {
|
|
139
138
|
this.incomeingCallSocketService.listen().subscribe(async (incomingCallData) => {
|
|
139
|
+
// incomingCallData = [{
|
|
140
|
+
// "timer": "",
|
|
141
|
+
// "conferenceName": "conf_69bbb7e5a5014b30b888b425",
|
|
142
|
+
// "conferenceId": "69bbb7e5a5014b30b888b425",
|
|
143
|
+
// "conferenceStatus": "conference-start",
|
|
144
|
+
// "timerDate": "",
|
|
145
|
+
// "notificationMessage": "",
|
|
146
|
+
// "isActive": true,
|
|
147
|
+
// "conferenceSid": "CF2a79c0a7e2e3285cdde1d58a265e9a37",
|
|
148
|
+
// "participants": [
|
|
149
|
+
// {
|
|
150
|
+
// "callSid": "CAc805d6d5131b9987b0103c23f80dcf7c",
|
|
151
|
+
// "isMute": false,
|
|
152
|
+
// "joinedAt": "Thu Mar 19 08:46:42 UTC 2026",
|
|
153
|
+
// "isHold": false,
|
|
154
|
+
// "businessNumber": false,
|
|
155
|
+
// "isConference": false,
|
|
156
|
+
// "businessOtp": false,
|
|
157
|
+
// "userId": "699beb587317847ea100d692",
|
|
158
|
+
// "forwardedTo": "",
|
|
159
|
+
// "isLeft": false,
|
|
160
|
+
// "toImage": "",
|
|
161
|
+
// "conferenceId": "69bbb7e5a5014b30b888b425",
|
|
162
|
+
// "toName": "Mobile1 ",
|
|
163
|
+
// "callStatus": "participant-join",
|
|
164
|
+
// "client": true,
|
|
165
|
+
// "from": "+12255628383",
|
|
166
|
+
// "id": "69bbb7f2a5014b30b888b428",
|
|
167
|
+
// "to": "+916354564733",
|
|
168
|
+
// "direction": "outgoing-call"
|
|
169
|
+
// },
|
|
170
|
+
// {
|
|
171
|
+
// "callSid": "CA6b5e2a1a4a90d96e2a8795508c022f13",
|
|
172
|
+
// "isMute": false,
|
|
173
|
+
// "joinedAt": "Thu Mar 19 08:46:46 UTC 2026",
|
|
174
|
+
// "isHold": false,
|
|
175
|
+
// "businessNumber": false,
|
|
176
|
+
// "isConference": false,
|
|
177
|
+
// "businessOtp": false,
|
|
178
|
+
// "userId": "699beb587317847ea100d692",
|
|
179
|
+
// "forwardedTo": "",
|
|
180
|
+
// "isLeft": false,
|
|
181
|
+
// "toImage": "",
|
|
182
|
+
// "conferenceId": "69bbb7e5a5014b30b888b425",
|
|
183
|
+
// "toName": "Mobile1 ",
|
|
184
|
+
// "callStatus": "participant-join",
|
|
185
|
+
// "client": false,
|
|
186
|
+
// "from": "+12255628383",
|
|
187
|
+
// "id": "69bbb7f6a5014b30b888b429",
|
|
188
|
+
// "to": "+916354564733",
|
|
189
|
+
// "direction": "outgoing-call"
|
|
190
|
+
// }
|
|
191
|
+
// ]
|
|
192
|
+
// }]
|
|
140
193
|
this.twilioService.conferenceCallInfo = incomingCallData;
|
|
141
194
|
this.conferenceCallList.emit(incomingCallData);
|
|
142
195
|
incomingCallData = incomingCallData?.length > 0 ? incomingCallData.filter((item) => item.participants?.length > 0) : [];
|
|
143
196
|
let updatedConferenceCallData = [];
|
|
144
197
|
incomingCallData.forEach((callInfo, i) => {
|
|
145
198
|
let ourNumber = {};
|
|
146
|
-
ourNumber = callInfo.participants.find((resData) => ((this.deviceNumberList.includes(resData?.from) && resData?.
|
|
199
|
+
ourNumber = callInfo.participants.find((resData) => ((this.deviceNumberList.includes(resData?.from) && resData?.client) || (this.deviceNumberList.includes(resData?.to) && resData?.direction == 'incoming-call')) && !resData?.isLeft);
|
|
147
200
|
if (ourNumber?.id) {
|
|
148
201
|
updatedConferenceCallData.push(callInfo);
|
|
149
202
|
}
|
|
@@ -182,7 +235,7 @@ export class DialboxComponent {
|
|
|
182
235
|
this.callData = [];
|
|
183
236
|
this.incomingCallsList = [];
|
|
184
237
|
this.isCallInProgress = false;
|
|
185
|
-
this.twilioService.device?.disconnectAll();
|
|
238
|
+
// this.twilioService.device?.disconnectAll();
|
|
186
239
|
}
|
|
187
240
|
}
|
|
188
241
|
});
|
|
@@ -623,9 +676,9 @@ export class DialboxComponent {
|
|
|
623
676
|
this.sanitizedNum = isNumericInput ? mainNumber.replace(/[\s\-]+/g, '') : mainNumber;
|
|
624
677
|
this.callData.phone = isNumericInput ? this.sanitizedNum : '';
|
|
625
678
|
this.showInputClearBtn = inputVal.length > 0;
|
|
626
|
-
if (isNumericInput) {
|
|
627
|
-
|
|
628
|
-
}
|
|
679
|
+
// if (isNumericInput) {
|
|
680
|
+
// this.dialedNumber = new AsYouType().input(this.sanitizedNum);
|
|
681
|
+
// }
|
|
629
682
|
// emit current number whenever input changes
|
|
630
683
|
this.numberDialed.emit(this.dialedNumber);
|
|
631
684
|
if (inputVal.length > 2) {
|
|
@@ -728,7 +781,7 @@ export class DialboxComponent {
|
|
|
728
781
|
// Reset dialed number
|
|
729
782
|
this.dialedNumber = '';
|
|
730
783
|
this.sanitizedNum = '';
|
|
731
|
-
this.twilioService.device.disconnectAll()
|
|
784
|
+
// this.twilioService.device.disconnectAll()
|
|
732
785
|
// Emit end call event
|
|
733
786
|
this.endCallEvent.emit();
|
|
734
787
|
console.log('Call ended successfully');
|
|
@@ -1124,4 +1177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1124
1177
|
type: HostListener,
|
|
1125
1178
|
args: ['window:beforeunload', ['$event']]
|
|
1126
1179
|
}] } });
|
|
1127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvZGlhbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvZGlhbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRW5NLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUkvQixPQUFtQyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQTs7Ozs7Ozs7Ozs7OztBQVluQyxNQUFNLE9BQU8sZ0JBQWdCO0lBYzNCLElBQWEsZUFBZSxDQUFDLEtBQWM7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsNkRBQTZEO1lBQzdELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUlELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBK0RELG1CQUFtQixDQUFDLEtBQVk7UUFDOUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRTtZQUMzRCxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FDMUIsZ0RBQWdELENBQ2pELENBQUM7Z0JBQ0YsSUFBSSxZQUFZLEVB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RyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHlCQUF5QjtzQkFBbEMsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNpQixnQkFBZ0I7c0JBQXZDLFNBQVM7dUJBQUMsV0FBVztnQkFHWixZQUFZO3NCQUFyQixNQUFNO2dCQW9EUCxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHdpbGlvU2VydmljZSB9IGZyb20gJy4vc2VydmljZS90d2lsaW8uc2VydmljZSc7XHJcbmltcG9ydCBzd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9leHRlbnNpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENhbGxlcklkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhbGxlci1pZC1kaWFsb2cvY2FsbGVyLWlkLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgcGFyc2VQaG9uZU51bWJlckZyb21TdHJpbmcsIHsgQXNZb3VUeXBlIH0gZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xyXG5pbXBvcnQgeyBrZXlwYWQgfSBmcm9tICcuLi9rZXlwYWQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBJcEFkZHJlc3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL2lwLWFkZHJlc3Muc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENhbGwgfSBmcm9tICdAdHdpbGlvL3ZvaWNlLXNkayc7XHJcbmltcG9ydCB7IEluY29tZWluZ0NhbGxTb2NrZXRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL2luY29tZWluZy1jYWxsLXNvY2tldC5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1kaWFsYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbGJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbGJveC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIHByaXZhdGUgX2lzRGlhbHBhZEhpZGRlbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy8gTGV0IHRoZSBsaWJyYXJ5IGRlY2lkZSB0byBhdXRvLW9wZW4gb24gaW5jb21pbmcgY2FsbCB3aXRob3V0IGhvc3Qgd2lyaW5nXHJcbiAgQElucHV0KCkgYXV0b09wZW5PbkluY29taW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjb250YWN0SW5mbzogYW55O1xyXG4gIEBJbnB1dCgpIGRldmljZUlkOiBhbnk7XHJcbiAgQElucHV0KCkgdXNlcklkOiBhbnk7XHJcbiAgQElucHV0KCkgY2FsbEFjdGlvbjogYW55O1xyXG4gIGlzTG9hZGVyc2hvdyA9IGZhbHNlO1xyXG4gIGlzSW5jb21pbmdDYWxsbm90aWZpY2F0aW9uOiBhbnkgPSBmYWxzZTtcclxuICBub3RpZmljYXRpb25DYWxsTGlzdDogYW55ID0gW107XHJcbiAgZGV2aWNlTnVtYmVyTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2V0IGlzRGlhbHBhZEhpZGRlbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNEaWFscGFkSGlkZGVuID0gdmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIC8vIFdoZW4gZGlhbHBhZCBiZWNvbWVzIHZpc2libGUsIGVuc3VyZSBUd2lsaW8gaXMgaW5pdGlhbGl6ZWRcclxuICAgICAgdGhpcy5pbml0aWFsaXplVHdpbGlvKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGluY29taW5nQ2FsbERhdGE6IGFueVxyXG4gIEBJbnB1dCgpIGluY29taW5nQ2FsbG5vdGlmaWNhdGlvbjogYW55O1xyXG4gIGNvbmZlcmVuY2VDYWxsSW5mbzogYW55ID0ge307XHJcbiAgZ2V0IGlzRGlhbHBhZEhpZGRlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0RpYWxwYWRIaWRkZW47XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBjbG9zZURpYWxwYWRFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBjYWxsSW5pdGlhdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBlbmRDYWxsRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgbWluaW1pc2VFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBpbmNvbWluZ0NhbGxzTmV3SW5mb0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuICBAT3V0cHV0KCkgaW5jb21pbmdDYWxsSW5pdGlhdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGNvbmZlcmVuY2VDYWxsTGlzdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWxJbnB1dCcpIGRpYWxJbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpIG51bWJlckRpYWxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuXHJcbiAgaXNDYWxsSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGtleXBhZFZhbCA9IGtleXBhZDtcclxuXHJcbiAgc2hvd0lucHV0Q2xlYXJCdG46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaWFsZWROdW1iZXI6IHN0cmluZyA9ICcnO1xyXG4gIGNvbnRhY3RMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGZpbHRlcmVkQ29udGFjdExpc3Q6IGFueVtdID0gW107XHJcbiAgY2FsbGVySWRMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkQ2FsbGVySWQ6IGFueTtcclxuICBpc0NhbGxlcklkSGlkZGVuOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgaXNUcmlhbFBlcmlvZE92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1BheW1lbnREdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZXJtaW5hdGVDYWxsID0gZmFsc2U7XHJcbiAgdG9hc3RUaW1lb3V0ID0gNzAwMDtcclxuICBjYWxsTnVtYmVyVG9hc3QgPSB7XHJcbiAgICBzaG93OiBmYWxzZSxcclxuICAgIHR5cGU6ICdhbGVydC1zdWNjZXNzJyxcclxuICAgIG51bWJlcjogJycsXHJcbiAgICBkaXNwbGF5TnVtOiAnJ1xyXG4gIH1cclxuICBjYWxsRGF0YTogYW55ID0ge1xyXG4gICAgcGhvbmU6ICcnLFxyXG4gICAgZGlzcGxheU51bTogJycsXHJcbiAgICBkaWFsOiBmYWxzZSxcclxuICAgIG5hbWU6ICcnLFxyXG4gICAgaW1nOiAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZycsXHJcbiAgICBpc0luY29taW5nQ2FsbDogZmFsc2UsXHJcbiAgICBleHROdW06ICcnXHJcbiAgfTtcclxuICBsYXN0RGlhbGVkOiB7IG5hbWU/OiBzdHJpbmc7IGltYWdlPzogc3RyaW5nOyBudW1iZXI6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XHJcbiAgc2FuaXRpemVkTnVtOiBhbnk7XHJcbiAgZGlhbEFsZXJ0ID0ge1xyXG4gICAgbXNnOiAnJyxcclxuICAgIHNob3c6IGZhbHNlXHJcbiAgfVxyXG4gIHRva2VuPzogc3RyaW5nO1xyXG5cclxuICBzaG93RGVkaWNhdGVkUG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBuZXdJbmNvbWluZ0NhbGxzOiBhbnkgPSBbXTtcclxuICBpbmNvbWluZ0NhbGxzTGlzdDogYW55ID0gW107XHJcbiAgbmV3SW5jb21pbmdDYWxsRGF0YT86IENhbGw7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgY2FsbFByZWZlcmVuY2U6IGFueTtcclxuICBzaGFrZURlZGljYXRlZEJ0bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU21hcnREaWFsQ2FsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgWyckZXZlbnQnXSlcclxuICBiZWZvcmVVbmxvYWRIYW5kbGVyKGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyB8fCB0aGlzLmluY29taW5nQ2FsbHNMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkUmVsb2FkID0gY29uZmlybShcclxuICAgICAgICAgICdZb3VyIGNhbGwgd2FzIGRpc2Nvbm5lY3RlZCBkdWUgdG8gcGFnZSByZWxvYWQuJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHNob3VsZFJlbG9hZCkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXRSZW1vdmVQYXJ0aWNpcGFudHMoJ2FsbCcsIHRoaXMuaW5jb21pbmdDYWxsc0xpc3RbMF0uY29uZmVyZW5jZUlkKTtcclxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0d2lsaW9TZXJ2aWNlOiBUd2lsaW9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleHRTZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgaXBTZXJ2aWNlOiBJcEFkZHJlc3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleHRlbnNpb25TZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZGs6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgaW5jb21laW5nQ2FsbFNvY2tldFNlcnZpY2U6IEluY29tZWluZ0NhbGxTb2NrZXRTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSBpZiBkaWFscGFkIGlzIHZpc2libGUgYnkgZGVmYXVsdFxyXG4gICAgaWYgKCF0aGlzLmlzRGlhbHBhZEhpZGRlbikge1xyXG4gICAgICBjb25zb2xlLmxvZygnc2ZzZGZkc2YnKVxyXG4gICAgICB0aGlzLmluaXRpYWxpemVUd2lsaW8oKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5jb21laW5nQ2FsbFNvY2tldFNlcnZpY2UuY3JlYXRlQXVkaW9CYXNlKCk7XHJcbiAgICBjb25zb2xlLmxvZygnRGlhbGJveENvbXBvbmVudCBjb25zdHJ1Y3RvcicpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRSZW1vdmVQYXJ0aWNpcGFudHMocGFydGljaXBhbnRJZDogYW55LCBjb25mZXJlbmNlSWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRSZW1vdmVQYXJ0aWNpcGFudHMocGFydGljaXBhbnRJZCwgY29uZmVyZW5jZUlkKS50b1Byb21pc2UoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplVHdpbGlvKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgdGhpcy50b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB8fCAnJztcclxuICAgICAgaWYgKCF0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gYXV0aGVudGljYXRpb24gdG9rZW4gZm91bmQnKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XHJcblxyXG4gICAgICAvLyBJbml0aWFsaXplIFR3aWxpbyBzZXJ2aWNlXHJcbiAgICAgIHRoaXMudHdpbGlvU2VydmljZS5pbml0aWFsaXplVHdpbGlvRGV2aWNlKHRoaXMuZGV2aWNlSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnbmdPbkluaXQnKVxyXG4gICAgLy8gRW5zdXJlIFR3aWxpbyBpcyBpbml0aWFsaXplZCBldmVuIHdoZW4gZGlhbHBhZCBzdGFydHMgaGlkZGVuLFxyXG4gICAgLy8gc28gd2UgY2FuIGF1dG8tb3BlbiBvbiBpbmNvbWluZyBjYWxscy5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZVR3aWxpbygpO1xyXG4gICAgdGhpcy5pbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZS5jb25uZWN0KHRoaXMuZGV2aWNlSWQpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5pbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZS5saXN0ZW4oKS5zdWJzY3JpYmUoYXN5bmMgKGluY29taW5nQ2FsbERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudHdpbGlvU2VydmljZS5jb25mZXJlbmNlQ2FsbEluZm8gPSBpbmNvbWluZ0NhbGxEYXRhO1xyXG4gICAgICAgIHRoaXMuY29uZmVyZW5jZUNhbGxMaXN0LmVtaXQoaW5jb21pbmdDYWxsRGF0YSk7XHJcbiAgICAgICAgaW5jb21pbmdDYWxsRGF0YSA9IGluY29taW5nQ2FsbERhdGE/Lmxlbmd0aCA+IDAgPyBpbmNvbWluZ0NhbGxEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcnRpY2lwYW50cz8ubGVuZ3RoID4gMCkgOiBbXTtcclxuICAgICAgICBsZXQgdXBkYXRlZENvbmZlcmVuY2VDYWxsRGF0YTogYW55ID0gW107XHJcbiAgICAgICAgaW5jb21pbmdDYWxsRGF0YS5mb3JFYWNoKChjYWxsSW5mbzogYW55LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGxldCBvdXJOdW1iZXI6IGFueSA9IHt9O1xyXG4gICAgICAgICAgb3VyTnVtYmVyID0gY2FsbEluZm8ucGFydGljaXBhbnRzLmZpbmQoKHJlc0RhdGE6IGFueSkgPT5cclxuICAgICAgICAgICAgKCh0aGlzLmRldmljZU51bWJlckxpc3QuaW5jbHVkZXMocmVzRGF0YT8uZnJvbSkgJiYgcmVzRGF0YT8udG8gPT0gJ2MyY19zb2Z0cGhvbmVfY2xpZW50JykgfHwgKHRoaXMuZGV2aWNlTnVtYmVyTGlzdC5pbmNsdWRlcyhyZXNEYXRhPy50bykgJiYgcmVzRGF0YT8uZGlyZWN0aW9uID09ICdpbmNvbWluZy1jYWxsJykpICYmICFyZXNEYXRhPy5pc0xlZnRcclxuICAgICAgICAgIClcclxuICAgICAgICAgIGlmIChvdXJOdW1iZXI/LmlkKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZWRDb25mZXJlbmNlQ2FsbERhdGEucHVzaChjYWxsSW5mbylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmICghIXVwZGF0ZWRDb25mZXJlbmNlQ2FsbERhdGE/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgLy8gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IGluY29taW5nQ2FsbERhdGEucGFydGljaXBhbnRzLmZpbHRlcigoaXRlbTogYW55KSA9PiAhaXRlbS5pc0xlZnQpIHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHVwZGF0ZWRDb25mZXJlbmNlQ2FsbERhdGEgfHwgW107XHJcbiAgICAgICAgICBsZXQgcGFyZW50Q2FsbDogc3RyaW5nW10gPSBbXVxyXG4gICAgICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0ID0gdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdC5maWx0ZXIoKHJlczogYW55KSA9PiByZXMuZW5kVGltZSA+PSAobmV3IERhdGUoKS5nZXRUaW1lKCkpKTtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdC5mb3JFYWNoKChjYWxsOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB1cGRhdGVkQ29uZmVyZW5jZUNhbGxEYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGluZm8gPSBpdGVtLnBhcnRpY2lwYW50cy5maW5kKChyZXNJbmZvOiBhbnkpID0+IHJlc0luZm8/LmlkID09PSBjYWxsPy5wYXJ0aWNpcGFudElkKVxyXG4gICAgICAgICAgICAgICAgLy8gIHJldHVybiBpbmZvPy5pZFxyXG4gICAgICAgICAgICAgICAgaWYgKGluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgcGFyZW50Q2FsbC5wdXNoKGluZm8uaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwYXJlbnRDYWxsPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QgPSB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiAhcGFyZW50Q2FsbC5pbmNsdWRlcyhpdGVtPy5wYXJ0aWNpcGFudElkKSk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSBbLi4udGhpcy5pbmNvbWluZ0NhbGxzTGlzdCwgLi4udGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdF1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coJy4uLi4uJywgdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdClcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSBbLi4udGhpcy5pbmNvbWluZ0NhbGxzTGlzdCwgLi4udGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdF1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRlcnNob3cgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNJbmNvbWluZ0NhbGxub3RpZmljYXRpb24gPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmlzSW5jb21pbmdDYWxsbm90aWZpY2F0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50d2lsaW9TZXJ2aWNlLmRldmljZT8uZGlzY29ubmVjdEFsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfHwgJyc7XHJcbiAgICAgIC8vdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5nZXRDb250YWN0TGlzdCgpO1xyXG5cclxuICAgICAgdGhpcy5nZXRVc2VyQ2FsbFNldHRpbmcoKTtcclxuICAgICAgY29uc3Qgc3ViMSA9IHRoaXMudHdpbGlvU2VydmljZS5kaWFsTnVtYmVyRnJvbU90aGVyTW9kdWxlLnN1YnNjcmliZSgoY29udGFjdDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbnRhY3QubnVtYmVyKSB7XHJcbiAgICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKGNvbnRhY3QuaXNEaWFsRnJvbUhpc3RvcnkpIHtcclxuICAgICAgICAgICAgLy9oYW5kbGUgZGlhbGluZyBmcm9tIGhpc3RvcnkgcGFnZVxyXG4gICAgICAgICAgICBpZiAoY29udGFjdC5jYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykge1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPSB7IG51bWJlcjogY29udGFjdC5mcm9tIH07XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1NtYXJ0RGlhbENhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5uYW1lID0gY29udGFjdC5uYW1lO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gY29udGFjdC5pbWc7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5mcm9tID0gY29udGFjdC5mcm9tO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJzI3NCcsIGNvbnRhY3QpXHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oY29udGFjdCk7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5wdXNoKGNvbnRhY3QpXHJcbiAgICAgICAgICAgICAgdGhpcy5pbml0aWF0ZUNhbGwoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnMjgyJywgY29udGFjdClcclxuICAgICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihjb250YWN0KTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goY29udGFjdClcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxlZE51bWJlciA9IGNvbnRhY3QubnVtYmVyO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChjb250YWN0LmNhbGxlcklkID09ICdhbHdheXNBc2snIHx8IGNvbnRhY3QuY2FsbGVySWQgPT0gJ3NtYXJ0RGlhbGluZycpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxlZE51bWJlciA9IGNvbnRhY3QubnVtYmVyO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5uYW1lID0gY29udGFjdC5uYW1lO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gY29udGFjdC5pbWc7XHJcbiAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICAgICAgICB0aGlzLmluaXRpYXRlQ2FsbCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIC8vIGhhbmRsZSBpbmNvbWluZyBjYWxsIChtYW5hZ2VkIGludGVybmFsbHk7IGhvc3QgbmVlZCBub3QgcGFzcyBpbmNvbWluZ0NhbGxEYXRhKVxyXG4gICAgICBjb25zdCBzdWIyID0gdGhpcy50d2lsaW9TZXJ2aWNlLmN1cnJlbnRDYWxsLnN1YnNjcmliZSgoaW5jb21pbmdDYWxsRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGluY29taW5nQ2FsbERhdGEpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmF1dG9PcGVuT25JbmNvbWluZyAmJiB0aGlzLl9pc0RpYWxwYWRIaWRkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5faXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuaXNDYWxsSW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZ0NhbGxEYXRhKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJzMyNScsIGluY29taW5nQ2FsbERhdGEpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKGluY29taW5nQ2FsbERhdGEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW5jb21pbmdDYWxsRGF0YVsnaXNGaXJzdENhbGwnXSA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdkZDEnKVxyXG4gICAgICAgICAgICAvLyB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzWydGcm9tJ107XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdkZDInKVxyXG4gICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5uYW1lID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnbmFtZScpO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhLmltZyA9IGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ2ltYWdlJykgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhLmlzSW5jb21pbmdDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGluY29taW5nQ2FsbERhdGEub24oJ2NhbmNlbCcsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XHJcbiAgICAgICAgICAgIC8vIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xyXG4gICAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCdkZDMnKVxyXG4gICAgICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBpbmNvbWluZ0NhbGxEYXRhLm9uKCdkaXNjb25uZWN0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10gIT09IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snQ2FsbFNpZCddKTtcclxuICAgICAgICAgICAgLy8gaWYodGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkNCcpXHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHN1YjEpO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHN1YjIpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhOiBhbnkpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdnZXRVc2VySW5mb3JtYXRpb24nLCBpbmNvbWluZ0NhbGxEYXRhKTtcclxuICAgIGxldCBkYXRhID0gdGhpcy5mcm9tRW50cmllcyhBcnJheS5mcm9tKGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5lbnRyaWVzKCkpKTtcclxuICAgIGNvbnNvbGUubG9nKCczNjYtLS0nLCBkYXRhKVxyXG4gICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldFVzZXJJbmZvcm1hdGlvbihkYXRhWyd0d2lsaW9BdXRoSWQnXSkuc3Vic2NyaWJlKFxyXG4gICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaW5jb21pbmdDYWxsRGF0YVsndXNlckluZm8nXSA9IHJlc3BvbnNlXHJcbiAgICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3Quc29tZSgoY2FsbDogYW55KSA9PiBjYWxsLnBhcmFtZXRlcnM/LkNhbGxTaWQgPT09IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycz8uQ2FsbFNpZCk7XHJcbiAgICAgICAgaWYgKCFhbHJlYWR5RXhpc3RzKSB7XHJcbiAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goaW5jb21pbmdDYWxsRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RrLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN0YXJ0aW5nIHJlY29yZGluZycsIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBmcm9tRW50cmllcyhlbnRyaWVzOiBbc3RyaW5nLCBhbnldW10pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIHJldHVybiBlbnRyaWVzLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgYWNjW2tleV0gPSB2YWx1ZTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIGFueT4pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5yZWdpc3RlckRyYWdFbGVtZW50KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1snaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uJ10/LmN1cnJlbnRWYWx1ZSAmJiB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbiAmJiB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbj8uZGF0YT8uY29udGVudCAhPSBcIlZvaWNlbWFpbFwiKSB7XHJcbiAgICAgIGlmICh0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbj8uZGF0YT8uY29udGVudCA9PSBcIkluY29taW5nQ2FsbFwiICYmIHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uPy5kYXRhPy5kYXRhPy5zdGF0dXMgIT0gXCJyZWplY3RlZFwiICYmIHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uPy5kYXRhPy5kYXRhPy5zdGF0dXMgIT0gXCJhY2NlcHRlZFwiKSB7XHJcbiAgICAgICAgdGhpcy5pc0luY29taW5nQ2FsbG5vdGlmaWNhdGlvbiA9IHRydWU7XHJcbiAgICAgICAgbGV0IGNhbGxlckluZm86IGFueTtcclxuICAgICAgICBsZXQgbnVtYmVyTGlzdCA9IHRoaXMuY2FsbGVySWRMaXN0Lm1hcCgocmVzKSA9PiByZXMubnVtYmVyKVxyXG4gICAgICAgIGlmICghbnVtYmVyTGlzdC5pbmNsdWRlcyh0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbi5kYXRhLmRhdGE/LmZyb21OdW1iZXIpKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24uZGF0YT8uZGF0YT8uYzJjQnVzaW5lc3MgIT0gJ2ZhbHNlJyAmJiB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbi5kYXRhLmRhdGE/LnBhcnRpY2lwYW50SWQpIHtcclxuICAgICAgICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldFVzZXJJbmZvcm1hdGlvbih0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbi5kYXRhLmRhdGE/LnBhcnRpY2lwYW50SWQpLnN1YnNjcmliZSgocmVzSW5mbzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbGVySW5mbyA9IHJlc0luZm8/LmMyY0luZm9ybWF0aW9uIHx8IHt9O1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsTm90aWZpY2F0aW9uKGNhbGxlckluZm8pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxOb3RpZmljYXRpb24oe30pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbj8uZGF0YT8uY29udGVudCA9PSBcIk1pc3NlZCBDYWxsXCIgfHwgdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24/LmRhdGE/LmRhdGE/LnN0YXR1cyA9PSBcInJlamVjdGVkXCIgfHwgdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24/LmRhdGE/LmRhdGE/LnN0YXR1cyA9PSBcImFjY2VwdGVkXCIpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0LmZpbmRJbmRleCgoY2FsbDogYW55KSA9PiBjYWxsPy5wYXJ0aWNpcGFudElkID09PSB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbj8uZGF0YT8uZGF0YT8ucmVjb3JkSWQgfHwgY2FsbD8ucGFydGljaXBhbnRJZCA9PT0gdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24/LmRhdGE/LmRhdGE/LnJlY29yZElkIHx8IGNhbGw/LnBhcnRpY2lwYW50SWQgPT09IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uPy5kYXRhPy5kYXRhPy5wYXJ0aWNpcGFudElkKTtcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgbGV0IGluY29taW5nQ2FsbEluZGV4ID0gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5maW5kSW5kZXgoKGNhbGw6IGFueSkgPT4gY2FsbC5wYXJ0aWNpcGFudElkID09PSB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbj8uZGF0YT8uZGF0YT8ucmVjb3JkSWQgfHwgY2FsbC5wYXJ0aWNpcGFudElkID09PSB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbj8uZGF0YT8uZGF0YT8ucGFydGljaXBhbnRJZCk7XHJcbiAgICAgICAgICBpZiAoaW5jb21pbmdDYWxsSW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnNwbGljZShpbmNvbWluZ0NhbGxJbmRleCwgMSk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5jb21laW5nQ2FsbFNvY2tldFNlcnZpY2UucGF1c2UoKTtcclxuICAgICAgICAgICAgdGhpcy5jZGsuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3Rlc3QnLCB0aGlzLmluY29taW5nQ2FsbHNMaXN0KTtcclxuICAgICAgICAgIGlmICghdGhpcy5pbmNvbWluZ0NhbGxzTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5pbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZS5wYXVzZSgpO1xyXG4gICAgICAgICAgdGhpcy5pc0luY29taW5nQ2FsbG5vdGlmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZGsuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZygnbm90aWZpY2F0aW9uQ2FsbExpc3QnLCB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0KTtcclxuICAgICAgbGV0IHBhcmVudENhbGw6IHN0cmluZ1tdID0gW11cclxuICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QgPSB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0LmZpbHRlcigocmVzOiBhbnkpID0+IHJlcy5lbmRUaW1lID49IChuZXcgRGF0ZSgpLmdldFRpbWUoKSkpO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QuZm9yRWFjaCgoY2FsbDogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgaW5mbyA9IGl0ZW0ucGFydGljaXBhbnRzLmZpbmQoKHJlc0luZm86IGFueSkgPT4gcmVzSW5mbz8uaWQgPT09IGNhbGw/LnBhcnRpY2lwYW50SWQpXHJcbiAgICAgICAgICAgIC8vICByZXR1cm4gaW5mbz8uaWRcclxuICAgICAgICAgICAgaWYgKGluZm8pIHtcclxuICAgICAgICAgICAgICBwYXJlbnRDYWxsLnB1c2goaW5mby5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJlbnRDYWxsPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdCA9IHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+ICFwYXJlbnRDYWxsLmluY2x1ZGVzKGl0ZW0/LnBhcnRpY2lwYW50SWQpKTtcclxuICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gWy4uLnRoaXMuaW5jb21pbmdDYWxsc0xpc3QsIC4uLnRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3RdXHJcbiAgICAgICAgY29uc29sZS5sb2coJy4uLi4uJywgdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gWy4uLnRoaXMuaW5jb21pbmdDYWxsc0xpc3QsIC4uLnRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3RdXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZGsuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2RldmljZUlkJ10pIHtcclxuICAgICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RldmljZUlkJywgY2hhbmdlc1snZGV2aWNlSWQnXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLnR3aWxpb1NlcnZpY2UuZGV2aWNlSWQgPSBjaGFuZ2VzWydkZXZpY2VJZCddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgY29uc29sZS5sb2coJ1NldCBkZXZpY2VJZCBpbiBsb2NhbFN0b3JhZ2U6JywgY2hhbmdlc1snZGV2aWNlSWQnXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3VzZXJJZCddPy5jdXJyZW50VmFsdWUgJiYgdGhpcy51c2VySWQpIHtcclxuICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLnVzZXJJZCA9IHRoaXMudXNlcklkO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbnRhY3RJbmZvJ10/LmN1cnJlbnRWYWx1ZSAmJiB0aGlzLmNvbnRhY3RJbmZvKSB7XHJcbiAgICAgIGxldCBjb250YWN0ID0gdGhpcy5jb250YWN0SW5mbztcclxuICAgICAgY29uc29sZS5sb2coJ2NvbnRhY3RJbmZvJywgY29udGFjdCk7XHJcbiAgICAgIGlmIChjb250YWN0Lm51bWJlcikge1xyXG4gICAgICAgIHRoaXMuaXNTbWFydERpYWxDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICBpZiAoY29udGFjdC5pc0RpYWxGcm9tSGlzdG9yeSkge1xyXG4gICAgICAgICAgLy9oYW5kbGUgZGlhbGluZyBmcm9tIGhpc3RvcnkgcGFnZVxyXG4gICAgICAgICAgaWYgKGNvbnRhY3QuY2FsbGVySWQgPT0gJ3NtYXJ0RGlhbGluZycpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IHsgbnVtYmVyOiBjb250YWN0LmZyb20gfTtcclxuICAgICAgICAgICAgdGhpcy5pc1NtYXJ0RGlhbENhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGNvbnRhY3QubnVtYmVyO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBjb250YWN0Lm5hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gY29udGFjdC5pbWc7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuZnJvbSA9IGNvbnRhY3QuZnJvbTtcclxuICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJzI3NCcsIGNvbnRhY3QpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKGNvbnRhY3QpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnNDU0JywgY29udGFjdClcclxuICAgICAgICAgICAgLy8gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5wdXNoKGNvbnRhY3QpXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJzI4MicsIGNvbnRhY3QpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKGNvbnRhY3QpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnNDY0JywgY29udGFjdClcclxuICAgICAgICAgICAgLy8gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5wdXNoKGNvbnRhY3QpXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChjb250YWN0LmNhbGxlcklkID09ICdhbHdheXNBc2snIHx8IGNvbnRhY3QuY2FsbGVySWQgPT0gJ3NtYXJ0RGlhbGluZycpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRVc2VyQ2FsbFNldHRpbmcoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5uYW1lID0gY29udGFjdC5uYW1lO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhLmltZyA9IGNvbnRhY3QuaW1nO1xyXG4gICAgICAgICAgICB0aGlzLnNhbml0aXplZE51bSA9IGNvbnRhY3QubnVtYmVyO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYXRlQ2FsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydpc0RpYWxwYWRIaWRkZW4nXSAmJiAhdGhpcy5pc0RpYWxwYWRIaWRkZW4pIHtcclxuICAgICAgdGhpcy5nZXRDb250YWN0TGlzdCgpO1xyXG4gICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmRpYWxJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgICAgaWYgKCF0aGlzLmluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmluY29taW5nQ2FsbERhdGEpIHtcclxuICAgICAgICBpZiAodGhpcy5pc0NhbGxJblByb2dyZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHMucHVzaCh0aGlzLmluY29taW5nQ2FsbERhdGEpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJzQwNCcsIHRoaXMuaW5jb21pbmdDYWxsRGF0YSlcclxuICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKHRoaXMuaW5jb21pbmdDYWxsRGF0YSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdkZDUnKVxyXG4gICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gdGhpcy5pbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0Zyb20nXTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCc0MTEnLCB0aGlzLmluY29taW5nQ2FsbERhdGEpXHJcbiAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbih0aGlzLmluY29taW5nQ2FsbERhdGEpO1xyXG4gICAgICAgICAgdGhpcy5jYWxsRGF0YS5uYW1lID0gdGhpcy5pbmNvbWluZ0NhbGxEYXRhLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCduYW1lJyk7XHJcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLmltZyA9IHRoaXMuaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XHJcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLmlzSW5jb21pbmdDYWxsID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxEYXRhLm9uKCdjYW5jZWwnLCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10gIT09IHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xyXG4gICAgICAgICAgLy8gaWYodGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCdkZDYnKVxyXG4gICAgICAgICAgLy8gICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5vbignZGlzY29ubmVjdCcsICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSB0aGlzLmluY29taW5nQ2FsbHNMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSAhPT0gdGhpcy5pbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XHJcbiAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbERhdGEuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgICAgLy8gaWYodGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCdkZDcnKVxyXG4gICAgICAgICAgLy8gICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NhbGxBY3Rpb24nXT8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhbGxBY3Rpb24/LnR5cGUgPT0gJ3JlSm9pbicpIHtcclxuICAgICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRSZW1vdmVQYXJ0aWNpcGFudHMoJ2FsbCcsIHRoaXMuY2FsbEFjdGlvbj8uY29uZmVyZW5jZUlkKS5zdWJzY3JpYmUoKHJlcykgPT4geyB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVnaXN0ZXJEcmFnRWxlbWVudCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGVsbW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RyYWdwYXJlbnQxJyk7XHJcbiAgICAgIGlmICghZWxtbnQpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdEcmFnIGVsZW1lbnQgbm90IGZvdW5kJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgcG9zMSA9IDAsIHBvczIgPSAwLCBwb3MzID0gMCwgcG9zNCA9IDA7XHJcblxyXG4gICAgICBjb25zdCBkcmFnTW91c2VEb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAodGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0Jykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHBvczMgPSBlLmNsaWVudFg7XHJcbiAgICAgICAgcG9zNCA9IGUuY2xpZW50WTtcclxuXHJcbiAgICAgICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiBlbGVtZW50RHJhZyhtb3ZlRXZlbnQpO1xyXG4gICAgICAgIGNvbnN0IG9uTW91c2VVcCA9ICgpID0+IHtcclxuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xyXG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IGVsZW1lbnREcmFnID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcG9zMSA9IHBvczMgLSBlLmNsaWVudFg7XHJcbiAgICAgICAgcG9zMiA9IHBvczQgLSBlLmNsaWVudFk7XHJcbiAgICAgICAgcG9zMyA9IGUuY2xpZW50WDtcclxuICAgICAgICBwb3M0ID0gZS5jbGllbnRZO1xyXG5cclxuICAgICAgICBlbG1udC5zdHlsZS50b3AgPSAoZWxtbnQub2Zmc2V0VG9wIC0gcG9zMikgKyAncHgnO1xyXG4gICAgICAgIGVsbW50LnN0eWxlLmxlZnQgPSAoZWxtbnQub2Zmc2V0TGVmdCAtIHBvczEpICsgJ3B4JztcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIENoZWNrIGZvciBoZWFkZXIgZWxlbWVudFxyXG4gICAgICBjb25zdCBoZWFkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbG1udC5pZCArICdoZWFkZXInKTtcclxuICAgICAgaWYgKGhlYWRlcikge1xyXG4gICAgICAgIGhlYWRlci5vbm1vdXNlZG93biA9IGRyYWdNb3VzZURvd247XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWxtbnQub25tb3VzZWRvd24gPSBkcmFnTW91c2VEb3duO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbmNvbWluZ0NhbGxOb3RpZmljYXRpb24oY2FsbGVySW5mbzogYW55KSB7XHJcbiAgICBsZXQgaW5jb21pbmdDYWxsOiBhbnkgPSB7XHJcbiAgICAgIGNvbmZlcmVuY2VJZDogdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24/LmRhdGE/LmRhdGE/LmNvbmZlcmVuY2VJZCB8fCAnbm8nLFxyXG4gICAgICBpc0FjdGl2ZTogdHJ1ZSxcclxuICAgICAgaXNJbmNvbWluZ0NhbGw6IHRydWUsXHJcbiAgICAgIHBhcnRpY2lwYW50SWQ6IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8ucGFydGljaXBhbnRJZCxcclxuICAgICAgcGFydGljaXBhbnRzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZGlyZWN0aW9uOiBcImluY29taW5nLWNhbGxcIiwgYnVzaW5lc3NOdW1iZXI6IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8uYzJjQnVzaW5lc3MgPT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlLCBpbWc6IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8uZnJvbUltYWdlIHx8IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8uaW1hZ2UgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnLCBpc0luY29taW5nQ2FsbDogdHJ1ZSwgaXNIb2xkOiBmYWxzZSwgaXNDb25mZXJlbmNlOiBmYWxzZSwgaXNBY2NlcHRDYWxsOiBmYWxzZSwgZGlhbDogdHJ1ZSwgcGhvbmU6IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8uZnJvbU51bWJlciwgdG86IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8udG9OdW1iZXIsXHJcbiAgICAgICAgICBmcm9tOiB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbi5kYXRhLmRhdGE/LmZyb21OdW1iZXIsIGZyb21OYW1lOiB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbi5kYXRhLmRhdGE/LmZyb21OYW1lLCBwYXJ0aWNpcGFudElkOiB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbi5kYXRhLmRhdGE/LnBhcnRpY2lwYW50SWQsIG5hbWU6IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8uZnJvbU5hbWUsIHRpbWU6ICcnLCBpZDogdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24uZGF0YS5kYXRhPy5wYXJ0aWNpcGFudElkLCBjb25mZXJlbmNlSWQ6IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uPy5kYXRhPy5kYXRhPy5jb25mZXJlbmNlSWRcclxuICAgICAgICB9XHJcbiAgICAgIF0sXHJcbiAgICB9XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0ID0gYXdhaXQgdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdC5maWx0ZXIoKHJlczogYW55KSA9PiByZXM/LmVuZFRpbWUgPiAobmV3IERhdGUoKS5nZXRUaW1lKCkpKTtcclxuXHJcbiAgICBpZiAoY2FsbGVySW5mbykge1xyXG4gICAgICBpbmNvbWluZ0NhbGwucGFydGljaXBhbnRzWzBdWydlbWFpbCddID0gY2FsbGVySW5mby5lbWFpbDtcclxuICAgICAgaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50c1swXVsnbmFtZSddID0gY2FsbGVySW5mby5uYW1lO1xyXG4gICAgICBpbmNvbWluZ0NhbGwucGFydGljaXBhbnRzWzBdWydpbWFnZSddID0gY2FsbGVySW5mby5pbWFnZTtcclxuICAgICAgaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50c1swXVsnZXh0ZW5zaW9uJ10gPSBjYWxsZXJJbmZvLmV4dGVuc2lvbjtcclxuICAgICAgaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50c1swXVsndXNlckluZm9JZCddID0gY2FsbGVySW5mby5pZDtcclxuICAgICAgaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50c1swXVsnbWVzc2FnZSddID0gY2FsbGVySW5mby5tZXNzYWdlO1xyXG4gICAgICBpbmNvbWluZ0NhbGwucGFydGljaXBhbnRzWzBdWydub3RlJ10gPSBjYWxsZXJJbmZvLm5vdGU7XHJcbiAgICAgIGluY29taW5nQ2FsbC5wYXJ0aWNpcGFudHNbMF1bJ251bWJlciddID0gY2FsbGVySW5mby5udW1iZXI7XHJcbiAgICAgIGluY29taW5nQ2FsbC5wYXJ0aWNpcGFudHNbMF1bJ3BvaW50TmFtZSddID0gY2FsbGVySW5mby5wb2ludE5hbWU7XHJcbiAgICAgIGluY29taW5nQ2FsbC5wYXJ0aWNpcGFudHNbMF1bJ3NvZnRwaG9uZVR3aWxpb0F1dGhJZCddID0gY2FsbGVySW5mby5zb2Z0cGhvbmVUd2lsaW9BdXRoSWQ7XHJcbiAgICAgIGluY29taW5nQ2FsbC5wYXJ0aWNpcGFudHNbMF1bJ3NvdXJjZU5hbWUnXSA9IGNhbGxlckluZm8uc291cmNlTmFtZTtcclxuICAgICAgaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50c1swXVsnc3ViamVjdCddID0gY2FsbGVySW5mby5zdWJqZWN0O1xyXG4gICAgfVxyXG4gICAgaW5jb21pbmdDYWxsWydlbmRUaW1lJ10gPSAobmV3IERhdGUoKS5nZXRUaW1lKCkgKyA0NSAqIDEwMDApO1xyXG4gICAgdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdC5wdXNoKGluY29taW5nQ2FsbClcclxuICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSBbLi4udGhpcy5pbmNvbWluZ0NhbGxzTGlzdCwgLi4udGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdF1cclxuXHJcbiAgICB0aGlzLmNkay5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAodGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24uZGF0YS5kYXRhPy5wYXJ0aWNpcGFudElkKSB7XHJcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2RrLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZE51bWJlcihudW06IGFueSkge1xyXG4gICAgaWYgKG51bSA9PSAnIycgfHwgbnVtID09ICcqJyB8fCBudW0gPT0gJysnIHx8IE51bWJlci5pc0ludGVnZXIobnVtKSkge1xyXG4gICAgICBpZiAobnVtID09ICcjJykge1xyXG4gICAgICAgIG5ldyBBdWRpbyhgL2Fzc2V0cy9kaWFsLXRvbmVzL2R0bWYvZHRtZi1oYXNoLS5tcDNgKS5wbGF5KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAobnVtID09ICcqJykge1xyXG4gICAgICAgIG5ldyBBdWRpbyhgL2Fzc2V0cy9kaWFsLXRvbmVzL2R0bWYvZHRtZi1zdGFyLS5tcDNgKS5wbGF5KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3IEF1ZGlvKGAvYXNzZXRzL2RpYWwtdG9uZXMvZHRtZi9kdG1mLSR7bnVtfS0ubXAzYCkucGxheSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmRpYWxlZE51bWJlciArPSBudW07XHJcbiAgICAgIHRoaXMuc2hvd0lucHV0Q2xlYXJCdG4gPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5udW1iZXJEaWFsZWQuZW1pdCh0aGlzLmRpYWxlZE51bWJlcik7XHJcblxyXG4gICAgICB0aGlzLm9uRGlhbElucHV0Q2hhbmdlKHRoaXMuZGlhbGVkTnVtYmVyKVxyXG4gICAgICAvLyB0aGlzLmRpYWxJbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9IGVsc2UgaWYgKG51bSA9PT0gJ3ZvaWNlbWFpbCcpIHtcclxuICAgICAgLy8gdGhpcy5zaG93RGVkaWNhdGVkUG9wdXAgPSB0cnVlO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2V4dGVuc2lvbi92b2ljZW1haWwvJyArIHRoaXMudG9rZW5dKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhpZGVEaWFscGFkKCkge1xyXG4gICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSB0cnVlO1xyXG4gICAgdGhpcy5jbG9zZURpYWxwYWRFdmVudC5lbWl0KCk7XHJcbiAgICB0aGlzLmNsZWFyQWxsRGlhbGVkKCk7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcclxuICB9XHJcblxyXG4gIG9uRGlhbElucHV0Q2hhbmdlKGlucHV0VmFsOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFVwZGF0ZWQgcmVnZXggdG8gaW5jbHVkZSB4LCBYLCBleHQuLCBFeHQuLCBhbmQgLFxyXG4gICAgICBjb25zdCBpc051bWVyaWNJbnB1dCA9IC9eW1xcZFxccytcXC1dKyQvLnRlc3QoaW5wdXRWYWwpO1xyXG4gICAgICBsZXQgbWFpbk51bWJlciA9IGlucHV0VmFsO1xyXG5cclxuICAgICAgLy8gQ2hlY2sgZm9yIGV4dGVuc2lvbiBpbmRpY2F0b3JzIGFuZCBzcGxpdCB0aGUgaW5wdXRcclxuICAgICAgY29uc3QgZXh0TWF0Y2ggPSBpbnB1dFZhbC5tYXRjaCgvKHh8WHxleHRcXC58RXh0XFwufCwpKC4qKS8pO1xyXG4gICAgICBpZiAoZXh0TWF0Y2gpIHtcclxuICAgICAgICBtYWluTnVtYmVyID0gaW5wdXRWYWwuc3Vic3RyaW5nKDAsIGV4dE1hdGNoLmluZGV4KS50cmltKCk7XHJcbiAgICAgICAgdGhpcy5jYWxsRGF0YS5leHROdW0gPSBleHRNYXRjaFsyXS50cmltKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBpc051bWVyaWNJbnB1dCA/IG1haW5OdW1iZXIucmVwbGFjZSgvW1xcc1xcLV0rL2csICcnKSA6IG1haW5OdW1iZXI7XHJcblxyXG4gICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gaXNOdW1lcmljSW5wdXQgPyB0aGlzLnNhbml0aXplZE51bSA6ICcnO1xyXG4gICAgICB0aGlzLnNob3dJbnB1dENsZWFyQnRuID0gaW5wdXRWYWwubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgIGlmIChpc051bWVyaWNJbnB1dCkge1xyXG4gICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gbmV3IEFzWW91VHlwZSgpLmlucHV0KHRoaXMuc2FuaXRpemVkTnVtKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gZW1pdCBjdXJyZW50IG51bWJlciB3aGVuZXZlciBpbnB1dCBjaGFuZ2VzXHJcbiAgICAgIHRoaXMubnVtYmVyRGlhbGVkLmVtaXQodGhpcy5kaWFsZWROdW1iZXIpO1xyXG5cclxuICAgICAgaWYgKGlucHV0VmFsLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbnRhY3RMaXN0LmZvckVhY2goY29udGFjdCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBmdWxsTmFtZSA9IGAke2NvbnRhY3QuZmlyc3ROYW1lfSAke2NvbnRhY3QubWlkZGxlTmFtZX0gJHtjb250YWN0Lmxhc3ROYW1lfWAudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgIGlmIChmdWxsTmFtZS5pbmNsdWRlcyh0aGlzLnNhbml0aXplZE51bS50b0xvd2VyQ2FzZSgpKSB8fCBjb250YWN0Lm51bWJlcnNMaXN0LnNvbWUoKG51bTogYW55KSA9PiBudW0ubnVtYmVyLmluY2x1ZGVzKHRoaXMuc2FuaXRpemVkTnVtKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZENvbnRhY3RMaXN0LnB1c2goY29udGFjdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZENvbnRhY3RMaXN0ID0gdGhpcy5maWx0ZXJlZENvbnRhY3RMaXN0LnNsaWNlKDAsIDIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRDb250YWN0TGlzdCA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZpcnN0TGV0dGVyKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbmFtZSA/IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgOiAnJztcclxuICB9XHJcbiAgY2xlYXJJbnB1dCgpIHtcclxuICAgIGlmICh0aGlzLmRpYWxlZE51bWJlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gdGhpcy5kaWFsZWROdW1iZXIuc2xpY2UoMCwgLTEpO1xyXG4gICAgICB0aGlzLnNob3dJbnB1dENsZWFyQnRuID0gdGhpcy5kaWFsZWROdW1iZXIubGVuZ3RoICE9PSAwO1xyXG5cclxuICAgICAgdGhpcy5vbkRpYWxJbnB1dENoYW5nZSh0aGlzLmRpYWxlZE51bWJlcilcclxuICAgIH1cclxuICB9XHJcbiAgY2xlYXJBbGxEaWFsZWQoKSB7XHJcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9ICcnO1xyXG4gICAgdGhpcy5zYW5pdGl6ZWROdW0gPSAnJztcclxuICAgIHRoaXMuc2hvd0lucHV0Q2xlYXJCdG4gPSBmYWxzZTtcclxuICB9XHJcbiAgZ2V0Q2FsbGVySWRMaXN0KCkge1xyXG4gICAgdGhpcy5leHRTZXJ2aWNlLmRpc3BsYXlJRCh0aGlzLnRva2VuIHx8ICcnKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIC8vdGhpcy5jYWxsZXJJZExpc3QgPSByZXMuY2FsbGVySWRMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSA9PT0gXCJDMkMgU29mdHBob25lIE51bWJlclwiKTtcclxuICAgICAgdGhpcy5jYWxsZXJJZExpc3QgPSByZXMuY2FsbGVySWRMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnZvaWNlRmVhdHVyZSA9PT0gdHJ1ZSk7XHJcbiAgICAgIC8vIHRoaXMuY2FsbGVySWRMaXN0ID0gcmVzLmNhbGxlcklkTGlzdDtcclxuICAgICAgdGhpcy5kZXZpY2VOdW1iZXJMaXN0ID0gdGhpcy5jYWxsZXJJZExpc3QubWFwKChyZXM6IGFueSkgPT4gcmVzLm51bWJlcik7XHJcbiAgICAgIGlmICh0aGlzLmNhbGxlcklkTGlzdC5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IHRoaXMuY2FsbGVySWRMaXN0WzBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmNhbGxQcmVmZXJlbmNlID09PSAnYWx3YXlzQXNrJyB8fCB0aGlzLmNhbGxQcmVmZXJlbmNlID09PSAnc21hcnREaWFsaW5nJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0gdGhpcy5jYWxsZXJJZExpc3QuZmluZChpdGVtID0+IChpdGVtLm51bWJlciA9PSB0aGlzLmNhbGxQcmVmZXJlbmNlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0Q29udGFjdExpc3QoKSB7XHJcbiAgICB0aGlzLnR3aWxpb1NlcnZpY2UuZ2V0Q29udGFjdExpc3QoKS5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcC5yZXNwb25zZSA9PSAnU3VjY2VzcycpIHtcclxuICAgICAgICB0aGlzLmNvbnRhY3RMaXN0ID0gcmVzcC5waG9uZUJvb2s7XHJcbiAgICAgIH1cclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycilcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldEZ1bGxOYW1lKGNvbnRhY3Q6IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgZnVsbE5hbWUgPSBjb250YWN0LmZpcnN0TmFtZSB8fCAnJztcclxuICAgIGlmIChjb250YWN0Lm1pZGRsZU5hbWUpIHtcclxuICAgICAgZnVsbE5hbWUgKz0gYCAke2NvbnRhY3QubWlkZGxlTmFtZX1gO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbnRhY3QubGFzdE5hbWUpIHtcclxuICAgICAgZnVsbE5hbWUgKz0gYCAke2NvbnRhY3QubGFzdE5hbWV9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBmdWxsTmFtZS50cmltKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdG9nZ2xlQ2FsbGVySWREaXYoKSB7XHJcbiAgICB0aGlzLmlzQ2FsbGVySWRIaWRkZW4gPSAhdGhpcy5pc0NhbGxlcklkSGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgb25Db250YWN0U2VsZWN0KGNvbnRhY3Q6IGFueSkge1xyXG4gICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcnNMaXN0WzBdLm51bWJlcjtcclxuICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IHRoaXMuZ2V0RnVsbE5hbWUoY29udGFjdCk7XHJcbiAgICB0aGlzLmNhbGxEYXRhLmltZyA9IGNvbnRhY3QuaW1hZ2UgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnO1xyXG4gICAgdGhpcy5vbkRpYWxJbnB1dENoYW5nZSh0aGlzLmRpYWxlZE51bWJlcik7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcclxuICB9XHJcblxyXG4gIGVuZENhbGwoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zb2xlLmxvZygnRW5kaW5nIGNhbGwnKTtcclxuICAgICAgY29uc29sZS5sb2coJ2RkOCcpXHJcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcclxuXHJcbiAgICAgIC8vIFJlc2V0IGNhbGwgZGF0YVxyXG4gICAgICB0aGlzLmNhbGxEYXRhID0ge1xyXG4gICAgICAgIHBob25lOiAnJyxcclxuICAgICAgICBuYW1lOiAnJyxcclxuICAgICAgICBpbWc6ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJyxcclxuICAgICAgICBpc0luY29taW5nQ2FsbDogZmFsc2UsXHJcbiAgICAgICAgZGlhbDogZmFsc2UsXHJcbiAgICAgICAgZGlzcGxheU51bTogJycsXHJcbiAgICAgICAgZXh0TnVtOiAnJ1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gUmVzZXQgZGlhbGVkIG51bWJlclxyXG4gICAgICB0aGlzLmRpYWxlZE51bWJlciA9ICcnO1xyXG4gICAgICB0aGlzLnNhbml0aXplZE51bSA9ICcnO1xyXG4gICAgICB0aGlzLnR3aWxpb1NlcnZpY2UuZGV2aWNlLmRpc2Nvbm5lY3RBbGwoKVxyXG4gICAgICAvLyBFbWl0IGVuZCBjYWxsIGV2ZW50XHJcbiAgICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcclxuICAgICAgY29uc29sZS5sb2coJ0NhbGwgZW5kZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcblxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZW5kQ2FsbDonLCBlcnJvcik7XHJcbiAgICAgIC8vIEV2ZW4gaWYgdGhlcmUncyBhbiBlcnJvciwgdHJ5IHRvIHJlc2V0IHRoZSBzdGF0ZVxyXG4gICAgICBjb25zb2xlLmxvZygnZGQ5JylcclxuICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2FsbERhdGEgPSB7XHJcbiAgICAgICAgcGhvbmU6ICcnLFxyXG4gICAgICAgIG5hbWU6ICcnLFxyXG4gICAgICAgIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnLFxyXG4gICAgICAgIGlzSW5jb21pbmdDYWxsOiBmYWxzZSxcclxuICAgICAgICBkaWFsOiBmYWxzZSxcclxuICAgICAgICBkaXNwbGF5TnVtOiAnJyxcclxuICAgICAgICBleHROdW06ICcnXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRpYXRlQ2FsbCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5kaWFsZWROdW1iZXIgJiYgdGhpcy5sYXN0RGlhbGVkKSB7XHJcbiAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSB0aGlzLmxhc3REaWFsZWQubnVtYmVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBpc0ludmFsaWQgPSBhd2FpdCB0aGlzLmlzSW52YWxpZE51bWJlcigpO1xyXG4gICAgICBpZiAoaXNJbnZhbGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2F2ZUxhc3REaWFsZWQoKTtcclxuICAgICAgdGhpcy5pc1NhdmVkQ29udGFjdERpYWxsZWQoKTtcclxuXHJcbiAgICAgIHRoaXMuaXNQYXltZW50RHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BheW1lbnREdWUnKSA9PT0gJ2ZhbHNlJyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuaXNQYXltZW50RHVlKSB7XHJcbiAgICAgICAgc3dhbCgnV2FybmluZycsICdQbGVhc2Ugbm90ZSB0aGF0IHlvdXIgcGF5bWVudCBpcyBkdWUsIFRvIGNvbnRpbnVlIG9uIHlvdXIgc2VydmljZXMga2luZGx5IHN1YnNjcmliZSB0byB1c2UgdW5pbnRlcnJ1cHRlZCBzZXJ2aWNlcy4nKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNUcmlhbFBlcmlvZE92ZXIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHJpYWxPdmVyJykgPT09ICdmYWxzZScgPyBmYWxzZSA6IHRydWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5zYW5pdGl6ZWROdW0gPT09IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0d2lsaW9OdW1iZXInKSkge1xyXG4gICAgICAgIHN3YWwoJ0Vycm9yJywgJ1lvdSBjYW4gbm90IGRpYWwgdGhpcyBudW1iZXInKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGhhc1Blcm1pc3Npb24gPSBhd2FpdCB0aGlzLmNoZWNrTWljcm9waG9uZVBlcm1pc3Npb24oKTtcclxuICAgICAgaWYgKCFoYXNQZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5hc2tGb3JNaWNyb3Bob25lUGVybWlzc2lvbigpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0xvYWRlcnNob3cgPSB0cnVlO1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYWxsZXJJZCkge1xyXG4gICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnU2VsZWN0IGEgQzJDIG51bWJlciB0byBjYWxsJyk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2U7XHJcbiAgICAgICAgfSwgMzAwMCk7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRlcnNob3cgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgLy8gQ2xlYXIgZGlzcGxheU51bSBpZiB2YWx1ZSBpcyBib3VuZCBmcm9tIHByZXZpb3VzIGNhbGxcclxuICAgICAgdGhpcy5jYWxsRGF0YS5kaXNwbGF5TnVtID0gJyc7XHJcblxyXG4gICAgICAvLyBHZXQgbnVtYmVyIHRvIGJlIGRpYWxlZCBmcm9tIGJhY2tlbmRcclxuICAgICAgYXdhaXQgdGhpcy5nZXRUb051bWJlcih0aGlzLnNhbml0aXplZE51bSk7XHJcbiAgICAgIGlmICh0aGlzLnRlcm1pbmF0ZUNhbGwpIHtcclxuICAgICAgICB0aGlzLnRlcm1pbmF0ZUNhbGwgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFVwZGF0ZSBjYWxsIGRhdGEgaW4gYSBzaW5nbGUgb3BlcmF0aW9uXHJcbiAgICAgIHRoaXMuY2FsbERhdGEgPSB7XHJcbiAgICAgICAgLi4udGhpcy5jYWxsRGF0YSxcclxuICAgICAgICBwaG9uZTogdGhpcy5zYW5pdGl6ZWROdW0sXHJcbiAgICAgICAgaXNJbmNvbWluZ0NhbGw6IGZhbHNlLFxyXG4gICAgICAgIGRpYWw6IHRydWUsXHJcbiAgICAgICAgZnJvbTogdGhpcy5pc1NtYXJ0RGlhbENhbGwgPyB0aGlzLmNhbGxEYXRhLmZyb20gOiB0aGlzLnNlbGVjdGVkQ2FsbGVySWQubnVtYmVyLFxyXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zb2xlLmxvZygnZGQxMCcpXHJcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2FsbEluaXRpYXRlZC5lbWl0KHsgLi4udGhpcy5jYWxsRGF0YSB9KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBpbml0aWF0ZUNhbGw6JywgZSk7XHJcbiAgICAgIHRoaXMuaXNMb2FkZXJzaG93ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnRmFpbGVkIHRvIGluaXRpYXRlIGNhbGwuIFBsZWFzZSB0cnkgYWdhaW4uJyk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkZDExJylcclxuICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGlzSW52YWxpZE51bWJlcigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnNhbml0aXplZE51bSA9PSAnJykge1xyXG4gICAgICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnSW52YWxpZCBOdW1iZXInKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWxpZE51bWJlclBhdHRlcm4gPSAvXlsrXFxkXFxzKCktXSokLzsgLy8gUmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIHZhbGlkIGNoYXJhY3RlcnNcclxuICAgICAgY29uc3QgcGhvbmVOdW1iZXIgPSB0aGlzLnNhbml0aXplZE51bTtcclxuICAgICAgaWYgKCF2YWxpZE51bWJlclBhdHRlcm4udGVzdChwaG9uZU51bWJlcikpIHtcclxuICAgICAgICB0aGlzLnNob3dEaWFsQWxlcnQoJ0ludmFsaWQgTnVtYmVyJyk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdJbnZhbGlkIE51bWJlcicpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gUmV0dXJuIHRydWUgaWYgYW4gZXJyb3Igb2NjdXJyZWQsIG1lYW5pbmcgdGhlIG51bWJlciBpcyBpbnZhbGlkXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlTGFzdERpYWxlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRhY3QgPSB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QuZmluZCgoYzogYW55KSA9PiBjLm51bWJlcnNMaXN0LnNvbWUoKG46IGFueSkgPT4gbi5udW1iZXIgPT09IHRoaXMuZGlhbGVkTnVtYmVyKSk7XHJcbiAgICBpZiAoY29udGFjdCkge1xyXG4gICAgICB0aGlzLmxhc3REaWFsZWQgPSB7XHJcbiAgICAgICAgbmFtZTogY29udGFjdC5uYW1lLFxyXG4gICAgICAgIGltYWdlOiBjb250YWN0LmltYWdlLFxyXG4gICAgICAgIG51bWJlcjogdGhpcy5kaWFsZWROdW1iZXJcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRpYWxlZE51bWJlcikge1xyXG4gICAgICAgIHRoaXMubGFzdERpYWxlZCA9IHsgbnVtYmVyOiB0aGlzLmRpYWxlZE51bWJlciB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBpc1NhdmVkQ29udGFjdERpYWxsZWQoKSB7XHJcbiAgICBsZXQgcGhvbmVOdW0gPSB0aGlzLnNhbml0aXplZE51bS5yZXBsYWNlKC9cXHMrL2csICcnKTtcclxuICAgIGxldCBjb250YWN0ID0gdGhpcy5jb250YWN0TGlzdC5maWx0ZXIoKGNvbnRhY3Q6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gY29udGFjdC5udW1iZXJzTGlzdC5zb21lKChudW06IGFueSkgPT4gbnVtLm51bWJlciA9PT0gcGhvbmVOdW0pXHJcbiAgICB9KTtcclxuICAgIGlmIChjb250YWN0Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBgJHtjb250YWN0WzBdLmZpcnN0TmFtZX0gJHtjb250YWN0WzBdLm1pZGRsZU5hbWV9ICR7Y29udGFjdFswXS5sYXN0TmFtZX1gLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gY29udGFjdFswXS5pbWFnZSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XHJcbiAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSB0aGlzLnNhbml0aXplZE51bTtcclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBzaG93RGlhbEFsZXJ0KG1lc3NhZ2U6IHN0cmluZykge1xyXG4gICAgdGhpcy5kaWFsQWxlcnQgPSB7XHJcbiAgICAgIG1zZzogbWVzc2FnZSxcclxuICAgICAgc2hvdzogdHJ1ZVxyXG4gICAgfTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRpYWxBbGVydC5zaG93ID0gZmFsc2U7XHJcbiAgICB9LCAzMDAwKTtcclxuICB9XHJcbiAgYXN5bmMgaXNDYWxsZXJJZFNldCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHRrbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKTtcclxuICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCB0aGlzLmV4dFNlcnZpY2UuZmV0Y2hDYWxsZXJJZCh0a24gfHwgJycpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBpZiAocmVzLnN0YXR1cyA9PSAyMDApIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndHJpYWxPdmVyJywgcmVzLnRyaWFsT3Zlcik7XHJcbiAgICAgICAgdGhpcy50d2lsaW9TZXJ2aWNlLmlzVHJpYWxPdmVyLm5leHQocmVzLnRyaWFsT3Zlcik7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3BheW1lbnREdWUnLCByZXMucGF5bWVudER1ZSk7XHJcbiAgICAgICAgdGhpcy50d2lsaW9TZXJ2aWNlLmlzUGF5bWVudER1ZS5uZXh0KHJlcy5wYXltZW50RHVlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzLmNhbGxlcmlkKSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhbGxlcklEJywgcmVzLmNhbGxlcmlkKTtcclxuXHJcbiAgICAgICAgdGhpcy5leHRTZXJ2aWNlLmNoYW5nZU1lc3NhZ2UocmVzLmNhbGxlcmlkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2FsbGVySUQnLCAnTm90IHNldCcpO1xyXG4gICAgICAgIHRoaXMuZXh0U2VydmljZS5jaGFuZ2VNZXNzYWdlKCdOb3Qgc2V0Jyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NhbGxlcklEJykgIT09ICdOb3Qgc2V0Jyk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIGNoZWNrTWljcm9waG9uZVBlcm1pc3Npb24oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0pO1xyXG4gICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGlmICgoZXJyb3IgYXMgYW55KS5uYW1lID09PSAnTm90QWxsb3dlZEVycm9yJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYXN5bmMgYXNrRm9yTWljcm9waG9uZVBlcm1pc3Npb24oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0pO1xyXG4gICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignVXNlciBkZW5pZWQgbWljcm9waG9uZSBwZXJtaXNzaW9uOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gYmVsb3cgZnVuY3Rpb24gaXMgdG8gZ2V0IHRoZSBjb3VudHJ5IGNvZGUgd2l0aCBudW1iZXIgZnJvbSBzZXJ2ZXIgXHJcbiAgYXN5bmMgZ2V0VG9OdW1iZXIoZGlhbGVkTnVtYmVyOiBzdHJpbmcpIHtcclxuXHJcbiAgICBpZiAoZGlhbGVkTnVtYmVyWzBdICE9PSAnKycpIHtcclxuICAgICAgLy8gdGhpcyBpcyBjYXNlIHdoZW4gdXNlciBnZW9sb2NhdGlvbiBkaWFsIGNvZGUgaXMgb25cclxuICAgICAgbGV0IGlwQWRkcmVzczogYW55ID0gYXdhaXQgdGhpcy5pcFNlcnZpY2UuZ2V0SXBBZGRyZXNzSW5mbygpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHRoaXMudHdpbGlvU2VydmljZS5nZXRUb051bWJlcihkaWFsZWROdW1iZXIsIGlwQWRkcmVzcy5hZGRyZXNzLmNvdW50cnlDb2RlKS50b1Byb21pc2UoKTtcclxuICAgICAgaWYgKHJlcy5zdGF0dXMgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdFRpbWVvdXQgPSByZXMudGltZUludGVydmFsICogMTAwMDtcclxuICAgICAgICBhd2FpdCB0aGlzLnNob3dOdW1iZXJUb2FzdChyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlzQWxlcnRFbmFibGUoKSB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2lzQWxlcnRFbmFibGUnKTtcclxuICB9XHJcbiAgYXN5bmMgc2hvd051bWJlclRvYXN0KGRhdGE6IGFueSkge1xyXG4gICAgLy8gY29uc3QgaXNBbGVydE9uID0gKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdpc0NvdW50cnlDb2RlVG9hc3RPbicpKTtcclxuICAgIC8vIGlmIChpc0FsZXJ0T24gPT0gJ3RydWUnKSB7XHJcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5zaG93ID0gdHJ1ZTtcclxuICAgIHRoaXMuY2FsbE51bWJlclRvYXN0Lm51bWJlciA9IGRhdGEudG9OdW1iZXI7XHJcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5kaXNwbGF5TnVtID0gZGF0YS5kaXNwbGF5TnVtYmVyO1xyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgICB0aGlzLmNhbGxEYXRhLmRpc3BsYXlOdW0gPSBkYXRhLmRpc3BsYXlOdW1iZXI7XHJcbiAgICAvL3RoaXMuY2FsbERhdGEucGhvbmUgPSBkYXRhLnRvTnVtYmVyO1xyXG4gICAgYXdhaXQgdGhpcy5kZWxheSh0aGlzLnRvYXN0VGltZW91dCk7XHJcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9IGRhdGEudG9OdW1iZXI7XHJcbiAgICB0aGlzLnNhbml0aXplZE51bSA9IGRhdGEudG9OdW1iZXI7XHJcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5zaG93ID0gZmFsc2U7XHJcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5udW1iZXIgPSAnJztcclxuICAgIHRoaXMuY2FsbE51bWJlclRvYXN0LmRpc3BsYXlOdW0gPSAnJztcclxuICB9XHJcbiAgZGVsYXkobXM6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xyXG4gIH1cclxuICBpc01pbmltaXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9uTWluaW1pc2UoaXNNaW5pbWlzZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNNaW5pbWlzZWQgPSBpc01pbmltaXNlZDtcclxuICAgIHRoaXMubWluaW1pc2VFdmVudC5lbWl0KGlzTWluaW1pc2VkKTtcclxuICB9XHJcbiAgaGFuZGxlTnVtYmVyUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGEgfHwgKHdpbmRvdyBhcyBhbnkpLmNsaXBib2FyZERhdGE7XHJcbiAgICBjb25zdCBwYXN0ZWREYXRhID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XHJcblxyXG4gICAgLy8gTG9nIHRoZSBwYXN0ZWQgY29udGVudCB0byB0aGUgY29uc29sZVxyXG4gICAgaWYgKHBhc3RlZERhdGEpIHtcclxuICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBwYXN0ZWREYXRhO1xyXG4gICAgICB0aGlzLnNhbml0aXplZE51bSA9IHBhc3RlZERhdGE7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25Mb2FkZXJzaG93KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuaXNMb2FkZXJzaG93ID0gZmFsc2U7XHJcbiAgfVxyXG4gIG9uRW50ZXIobnVtOiBzdHJpbmcpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKG51bSwgJ251bWJlciBmbicpXHJcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9IHRoaXMuZGlhbGVkTnVtYmVyICsgbnVtO1xyXG4gICAgdGhpcy5zYW5pdGl6ZWROdW0gPSB0aGlzLmRpYWxlZE51bWJlcjtcclxuICAgIHRoaXMuc2hvd0lucHV0Q2xlYXJCdG4gPSB0cnVlO1xyXG4gICAgdGhpcy5udW1iZXJEaWFsZWQuZW1pdCh0aGlzLmRpYWxlZE51bWJlcik7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyQ2FsbFNldHRpbmcoKSB7XHJcbiAgICBjb25zdCB0a24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJyk7XHJcbiAgICB0aGlzLmV4dFNlcnZpY2UuZmV0Y2hDYWxsZXJJZCh0a24gfHwgJycpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwLnN0YXR1cyA9PSAyMDApIHtcclxuICAgICAgICAvL3RoaXMuY2FsbFByZWZlcm5jZSA9IHJlc3AudXNlclNldHRpbmc7XHJcbiAgICAgICAgdGhpcy5jYWxsUHJlZmVyZW5jZSA9IHJlc3AuY2FsbGVyaWQ7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0Q2FsbGVySWRMaXN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG9uRGVkaWNhdGVkTnVtU2VsZWN0KGlkOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IGlkO1xyXG4gICAgdGhpcy5pc0NhbGxlcklkSGlkZGVuID0gdHJ1ZTtcclxuICAgIHRoaXMuZXh0U2VydmljZS5zZXRDYWxsZXJJZChpZCk7XHJcbiAgfVxyXG4gIGNhbmNlbERpYWxOdW1iZXIoKSB7XHJcbiAgICB0aGlzLnRlcm1pbmF0ZUNhbGwgPSB0cnVlO1xyXG4gICAgdGhpcy5jYWxsTnVtYmVyVG9hc3Quc2hvdyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRGl2S2V5ZG93bihldjogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kaWFsZWROdW1iZXIubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5kaWFsSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICAgIGlmIChldi5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGRpYWxwYWQgaXMgb3BlblxyXG4gICAgICBpZiAoIXRoaXMuaXNEaWFscGFkSGlkZGVuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbGVkTnVtYmVyLmxlbmd0aCA+IDIgJiYgdGhpcy5zZWxlY3RlZENhbGxlcklkKSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRpYXRlQ2FsbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYWxsZXJJZCkge1xyXG4gICAgICAgICAgdGhpcy5zaGFrZURlZGljYXRlZEJ0biA9IHRydWU7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaGFrZURlZGljYXRlZEJ0biA9IGZhbHNlO1xyXG4gICAgICAgICAgfSwgMTAwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBvbkNhbGxCdG5Nb3VzZUVudGVyKGV2OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZENhbGxlcklkIHx8ICh0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycpIHx8ICh0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPT0gJ3NtYXJ0RGlhbGluZycpKSB7XHJcbiAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgb25DYWxsQnRuTW91c2VMZWF2ZShldjogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYWxsZXJJZCB8fCAodGhpcy5zZWxlY3RlZENhbGxlcklkID09ICdhbHdheXNBc2snKSB8fCAodGhpcy5zZWxlY3RlZENhbGxlcklkID09ICdzbWFydERpYWxpbmcnKSkge1xyXG4gICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmRJbmNvbWluZ0NhbGwoaW5jb21pbmdDYWxsOiBhbnkpIHtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QgPSB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5wYXJ0aWNpcGFudElkICE9PSBpbmNvbWluZ0NhbGwucGFydGljaXBhbnRJZCk7XHJcbiAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8ucGFydGljaXBhbnRJZCAhPT0gaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50SWQpO1xyXG4gICAgdGhpcy5pbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZS5wYXVzZSgpO1xyXG4gICAgdGhpcy5jZGsuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBhY2NlcHROZXdJbmNvbWluZ0NhbGwoY2FsbDogQ2FsbCkge1xyXG4gICAgLy9maXJzdCBjdXQgdGhlIGN1cnJlbnQgY2FsbFxyXG4gICAgLy90aGlzLmNhbGxEYXRhID0gY2FsbDtcclxuICAgIHRoaXMubmV3SW5jb21pbmdDYWxsRGF0YSA9IGNhbGw7XHJcbiAgfVxyXG4gIHJlamVjdE5ld0luY29taW5nQ2FsbChjYWxsOiBDYWxsKSB7XHJcbiAgICBjYWxsLnJlamVjdCgpO1xyXG4gICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzID0gdGhpcy5uZXdJbmNvbWluZ0NhbGxzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gY2FsbC5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xyXG4gICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVycy5DYWxsU2lkICE9PSBjYWxsLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XHJcbiAgfVxyXG4gIG5ld0luY29taW5nQ2FsbEluaXRpYXRlZCgpIHtcclxuICAgIGNvbnNvbGUubG9nKCdkZDEyJylcclxuICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICB0aGlzLm5ld0luY29taW5nQ2FsbHMgPSBbXTtcclxuICAgIHRoaXMuaW5jb21pbmdDYWxsSW5pdGlhdGVkLmVtaXQoKTtcclxuICB9XHJcbiAgaW5jb21pbmdDYWxsc05ld0luZm8oZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gZGF0YTtcclxuICAgIHRoaXMuaW5jb21pbmdDYWxsc05ld0luZm9FdmVudC5lbWl0KGRhdGEpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdDbGVhbmluZyB1cCBDMmNEaWFscGFkQ29tcG9uZW50Jyk7XHJcblxyXG4gICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXHJcbiAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBDbGVhbiB1cCBUd2lsaW8gZGV2aWNlIHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3llZFxyXG4gICAgICBpZiAodGhpcy50d2lsaW9TZXJ2aWNlWydkZXZpY2UnXSkge1xyXG4gICAgICAgIHRoaXMudHdpbGlvU2VydmljZVsnZGV2aWNlJ10uZGVzdHJveSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBFbmQgYW55IGFjdGl2ZSBjYWxsXHJcbiAgICAgIGlmICh0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MpIHtcclxuICAgICAgICB0aGlzLmVuZENhbGwoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2xlYXIgYW55IHRpbWVvdXRzIG9yIGludGVydmFscyBpZiB0aGV5IGV4aXN0XHJcbiAgICAgIGlmICh0aGlzLnRvYXN0VGltZW91dCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRvYXN0VGltZW91dCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKCdDMmNEaWFscGFkQ29tcG9uZW50IGNsZWFudXAgY29tcGxldGUnKTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkdXJpbmcgY29tcG9uZW50IGNsZWFudXA6JywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGlkPVwiZHJhZ3BhcmVudDFcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOmlzRGlhbHBhZEhpZGRlbiA/ICdub25lJzogJ2Jsb2NrJ31cIj5cclxuICA8bGliLWNhbGwtcHJvZ3Jlc3MgKm5nSWY9XCJpc0NhbGxJblByb2dyZXNzXCIgKGVuZENhbGxFdmVudCk9XCJlbmRDYWxsKClcIiAobWluaW1pc2VFdmVudCk9XCJvbk1pbmltaXNlKCRldmVudClcIlxyXG4gICAgKGluY29taW5nQ2FsbEluaXRpYXRlZCk9XCJuZXdJbmNvbWluZ0NhbGxJbml0aWF0ZWQoKVwiIFtuZXdJbmNvbWluZ0NhbGxEYXRhXT1cIm5ld0luY29taW5nQ2FsbERhdGFcIlxyXG4gICAgW2RldmljZUlkXT1cImRldmljZUlkXCIgW25ld0luY29taW5nQ2FsbHNMaXN0XT1cImluY29taW5nQ2FsbHNMaXN0XCJcclxuICAgIChpbmNvbWluZ0NhbGxzTmV3SW5mbyk9XCJpbmNvbWluZ0NhbGxzTmV3SW5mbygkZXZlbnQpXCIgW3NlbGVjdGVkQ2FsbGVySWRdPVwic2VsZWN0ZWRDYWxsZXJJZFwiXHJcbiAgICBbY2FsbGVySWRMaXN0XT1cImNhbGxlcklkTGlzdFwiIFtjYWxsQWN0aW9uXT1cImNhbGxBY3Rpb25cIiBbY29uZmVyZW5jZUNhbGxJbmZvXT1cImNvbmZlcmVuY2VDYWxsSW5mb1wiXHJcbiAgICAoZW5kSW5jb21pbmdDYWxsRXZlbnQpPVwiZW5kSW5jb21pbmdDYWxsKCRldmVudClcIiAoaXNMb2FkZXJzaG93KT1cIm9uTG9hZGVyc2hvdygkZXZlbnQpXCIgW2NhbGxEYXRhXT1cImNhbGxEYXRhXCI+XHJcbiAgPC9saWItY2FsbC1wcm9ncmVzcz5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImxvYWRlci13cmFwcGVyXCIgKm5nSWY9XCIoIWlzQ2FsbEluUHJvZ3Jlc3MgfHwgIWluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCkgJiYgaXNMb2FkZXJzaG93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gPGJ1dHRvbiAoY2xpY2spPVwiaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWVcIj5jYWxsPC9idXR0b24+IC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJkaWFscGFkLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnbWluaS1kaWFscGFkJzogaXNNaW5pbWlzZWR9XCJcclxuICAgICpuZ0lmPVwiIWlzQ2FsbEluUHJvZ3Jlc3MgfHwgIWluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aFwiIHRhYmluZGV4PVwiMFwiIChrZXlkb3duKT1cImhhbmRsZURpdktleWRvd24oJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBpZD1cInRvcFBhbmVsXCIgW25nU3R5bGVdPVwieydoZWlnaHQnOiBjYWxsZXJJZExpc3QubGVuZ3RoID8gJzQwJScgOiAnMzklJ31cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRpYWxwYWQtYWxlcnRzXCIgKm5nSWY9XCJkaWFsQWxlcnQuc2hvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuby1zZWxlY3Rpb24tYWxlcnRcIj5cclxuICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJtYi0wXCI+U2VsZWN0IEMyQyBudW1iZXIgdG8gY2FsbDwvcD4gLS0+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj57e2RpYWxBbGVydC5tc2d9fTwvcD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtdGltZXNcIiAoY2xpY2spPVwic2hha2VEZWRpY2F0ZWRCdG4gPSBmYWxzZVwiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFscGFkLWFsZXJ0c1wiICpuZ0lmPVwiY2FsbE51bWJlclRvYXN0LnNob3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbGJveC1wb3AxIGFsZXJ0IGZhZGUgc2hvd1wiIFtuZ0NsYXNzXT1cImNhbGxOdW1iZXJUb2FzdC50eXBlXCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBteS1hdXRvIHRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgIFlvdSdyIGNhbGxpbmcgPHN0cm9uZz57e2NhbGxOdW1iZXJUb2FzdC5kaXNwbGF5TnVtfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBidG4tZGlzYyBwLTAgcHgtMVwiIChjbGljayk9XCJjYW5jZWxEaWFsTnVtYmVyKClcIj5DYW5jZWwgQ2FsbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc3VjY2VzcyBidG4tZGlzYyBwLTAgcHgtMlwiPkNvbnRpbnVlPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDE4cHhcIiAocGFzdGUpPVwiaGFuZGxlTnVtYmVyUGFzdGUoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMlwiPlxyXG4gICAgICAgICAgPHA+PC9wPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGRpYWwtY2xvc2UtYnRuXCIgKGNsaWNrKT1cImhpZGVEaWFscGFkKClcIj5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiIGZpbGw9XCIjZmZmZmZmXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJtMjU2LTIwMC01Ni01NiAyMjQtMjI0LTIyNC0yMjQgNTYtNTYgMjI0IDIyNCAyMjQtMjI0IDU2IDU2LTIyNCAyMjQgMjI0IDIyNC01NiA1Ni0yMjQtMjI0LTIyNCAyMjRaXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWJveFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgI2RpYWxJbnB1dCBwbGFjZWhvbGRlcj1cIkVudGVyIGEgbmFtZSBvciBudW1iZXJcIiB0YWJpbmRleD1cIjFcIiBbKG5nTW9kZWwpXT1cImRpYWxlZE51bWJlclwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGlhbElucHV0Q2hhbmdlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJcIiBpZD1cImlucHV0LWNsZWFyLWJ0blwiIChjbGljayk9XCJjbGVhcklucHV0KClcIiAqbmdJZj1cInNob3dJbnB1dENsZWFyQnRuXCI+XHJcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI1MHB4XCIgaGVpZ2h0PVwiMzBweFwiIHZpZXdCb3g9XCIwIDEwIDQwIDYwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgdmVyc2lvbj1cIjEuMVwiIGJhc2VQcm9maWxlPVwiZnVsbFwiXHJcbiAgICAgICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDc2LjAwIDc2LjAwXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cclxuICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiIzVkNjA2MVwiIGZpbGwtb3BhY2l0eT1cIjFcIiBzdHJva2Utd2lkdGg9XCIwLjJcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICBkPVwiTSA0Ny41MjgyLDQyLjk0OTdMIDQyLjU3ODQsMzhMIDQ3LjUyODIsMzMuMDUwMkwgNDQuOTQ5NywzMC40NzE4TCA0MCwzNS40MjE2TCAzNS4wNTAyLDMwLjQ3MThMIDMyLjQ3MTgsMzMuMDUwMkwgMzcuNDIxNiwzOEwgMzIuNDcxOCw0Mi45NDk3TCAzNS4wNTAyLDQ1LjUyODJMIDQwLDQwLjU3ODRMIDQ0Ljk0OTcsNDUuNTI4MkwgNDcuNTI4Miw0Mi45NDk3IFogTSAxOC4wMTQ3LDQxLjUzNTVMIDI2Ljk2NDYsNTAuNDg1NEMgMjguMDY4Myw1MS41ODkgMjksNTIgMzEsNTJMIDUyLDUyQyA1NC43NjE0LDUyIDU3LDQ5Ljc2MTQgNTcsNDdMIDU3LDI5QyA1NywyNi4yMzg2IDU0Ljc2MTQsMjQgNTIsMjRMIDMxLDI0QyAyOSwyNCAyOC4wNjgzLDI0LjQxMTMgMjYuOTY0NiwyNS41MTQ5TCAxOC4wMTQ3LDM0LjQ2NDVDIDE2LjA2MjEsMzYuNDE3MSAxNi4wNjIxLDM5LjU4MjkgMTguMDE0Nyw0MS41MzU1IFogTSAzMSw0OUMgMzAsNDkgMjkuNjA0OCw0OC44ODI4IDI5LjA4Niw0OC4zNjQxTCAyMC4xMzYxLDM5LjQxNDJDIDE5LjM1NSwzOC42MzMyIDE5LjM1NSwzNy4zNjY5IDIwLjEzNjEsMzYuNTg1OEwgMjkuMDg2LDI3LjYzNjJDIDI5LjYwNDgsMjcuMTE3NSAzMCwyNyAzMSwyNy4wMDAxTCA1MiwyNy4wMDAxQyA1My4xMDQ2LDI3LjAwMDEgNTQsMjcuODk1NSA1NCwyOS4wMDAxTCA1NCw0Ny4wMDAxQyA1NCw0OC4xMDQ2IDUzLjEwNDYsNDkuMDAwMSA1Miw0OS4wMDAxTCAzMSw0OSBaIFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1pbmZvLWljb25cIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiB0b29sdGlwQ2xhc3M9XCJpbnB1dC10b29sdGlwXCJcclxuICAgICAgICAgICAgbmdiVG9vbHRpcD1cIkZvciBleHRlbnNpb24gZGlhbGluZywgdXNlIGZvcm1hdHMgbGlrZSArMTIzNDU2Nzg5MTAgeDEyMywrMTIzNDU2Nzg5MTAgZXh0LjEyMywgKzEyMzQ1Njc4OTEwLDEyM1wiPjxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImd1aWRlXCIgKm5nSWY9XCJjYWxsZXJJZExpc3QubGVuZ3RoICYmICEoZGlhbGVkTnVtYmVyLmxlbmd0aCA+IDIpXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImd1aWRldGV4dFwiPlBsZWFzZSBlbnRlciBhIG51bWJlciBvciBzZWxlY3QgYSBzYXZlZCBjb250YWN0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlucHV0LWVycm9yXCIgKm5nSWY9XCJkaWFsQWxlcnQuc2hvd1wiPlxyXG4gICAgICAgICAgPHNwYW4+e3tkaWFsQWxlcnQubXNnfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1jYXJkXCIgKm5nRm9yPVwibGV0IGNvbnRhY3Qgb2YgZmlsdGVyZWRDb250YWN0TGlzdFwiIChjbGljayk9XCJvbkNvbnRhY3RTZWxlY3QoY29udGFjdClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtaW1nXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImNvbnRhY3QuaW1hZ2VcIiBhbHQ9XCJ1c2VyIGltYWdlXCIgbG9hZGluZz1cImxhenlcIiAqbmdJZj1cImNvbnRhY3QuaW1hZ2UgZWxzZSBhbHBoYU5hbWVcIiAvPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWxwaGFOYW1lPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250YWN0LWFscGhhLWltZ1wiPnt7Z2V0Rmlyc3RMZXR0ZXIoY29udGFjdC5maXJzdE5hbWUpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0LWRldGFpbHNcIj5cclxuICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDRweFwiIGNsYXNzPVwiY29udGFjdC1uYW1lXCI+e3tnZXRGdWxsTmFtZShjb250YWN0KSB9fTwvcD5cclxuICAgICAgICAgICAgICA8cD57e2NvbnRhY3QubnVtYmVyc0xpc3RbMF0ubnVtYmVyfX08L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2F2ZS1jb250YWluZXJcIj5cclxuICAgICAgICA8c3ZnIGNsYXNzPVwid2F2ZXNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDI0IDE1MCAyOFwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCIgc2hhcGUtcmVuZGVyaW5nPVwiYXV0b1wiPlxyXG4gICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgIDxwYXRoIGlkPVwiZ2VudGxlLXdhdmVcIiBkPVwiTS0xNjAgNDRjMzAgMCA1OC0xOCA4OC0xOHMgNTggMTggODggMTggNTgtMTggODgtMTggNTggMTggODggMTggdjQ0aC0zNTJ6XCIgLz5cclxuICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgIDxnIGNsYXNzPVwicGFyYWxsYXhcIj5cclxuICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjBcIiBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjcpXCIgLz5cclxuICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjNcIiBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjUpXCIgLz5cclxuICAgICAgICAgICAgPCEtLSA8dXNlXHJcbiAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiXHJcbiAgICAgICAgICAgICAgeD1cIjQ4XCJcclxuICAgICAgICAgICAgICB5PVwiNVwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC4zKVwiXHJcbiAgICAgICAgICAgIC8+IC0tPlxyXG4gICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiN1wiIGZpbGw9XCIjZmZmXCIgLz5cclxuICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJidG4tY29udGFpbmVyXCIgKm5nSWY9XCIhaXNNaW5pbWlzZWRcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRpYWwtYnRuXCIgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlwYWRWYWw7bGV0IGkgPSBpbmRleFwiIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXIoa2V5Lm51bSlcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCc6IGtleS50ZXh0ID09PSAnKycgPyAnM3B4JyA6ICcwJ31cIiBbdGFiaW5kZXhdPVwiZGlhbGVkTnVtYmVyLmxlbmd0aCA/ICcwJzogaSsyXCIgbG9uZ1ByZXNzXHJcbiAgICAgICAgKGxvbmdQcmVzcyk9XCJhZGROdW1iZXIoa2V5LnRleHQpXCIgc2hvcnRQcmVzcyAoc2hvcnRQcmVzcyk9XCJhZGROdW1iZXIoa2V5Lm51bSlcIj5cclxuICAgICAgICB7e2tleS5udW19fVxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwia2V5Lm51bSA9PSAxO2Vsc2Ugb3RoZXJUaGFuT25lXCIgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHZvaWNlbWFpbFwiPlxyXG4gICAgICAgICAgdm9pY2VtYWlsXHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJUaGFuT25lPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tYWxiaGFiZXRzXCIgW25nQ2xhc3NdPVwieydwbHVzU2lnbic6IGtleS50ZXh0ID09PSAnKyd9XCI+e3trZXkudGV4dCA/IGtleS50ZXh0IDpcclxuICAgICAgICAgICAgJyZuYnNwOyd9fTwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGwtYnRuLWNvbnRhaW5lclwiICpuZ0lmPVwiIWlzTWluaW1pc2VkXCIgKG1vdXNlZW50ZXIpPVwib25DYWxsQnRuTW91c2VFbnRlcigkZXZlbnQpXCJcclxuICAgICAgKG1vdXNlbGVhdmUpPVwib25DYWxsQnRuTW91c2VMZWF2ZSgkZXZlbnQpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxsLWJ0blwiIChjbGljayk9XCJpbml0aWF0ZUNhbGwoKVwiIFt0YWJpbmRleF09XCJkaWFsZWROdW1iZXIubGVuZ3RoID8gJzInOiAnMTUnXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7J3BvaW50ZXItZXZlbnRzJzogZGlhbGVkTnVtYmVyLmxlbmd0aCAmJiBzZWxlY3RlZENhbGxlcklkID8gJ2F1dG8nIDogJ25vbmUnLCAnb3BhY2l0eSc6IGRpYWxlZE51bWJlci5sZW5ndGggJiYgc2VsZWN0ZWRDYWxsZXJJZCA/ICcxJyA6ICcwLjUnfVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlXCI+XHJcbiAgICAgICAgICBjYWxsXHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImNhbGxlcklkTGlzdC5sZW5ndGggJiYgIWlzTWluaW1pc2VkXCIgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2hvd25DYWxsZXJJZFwiICpuZ0lmPVwic2VsZWN0ZWRDYWxsZXJJZDsgZWxzZSBhc2tCbG9ja1wiIChjbGljayk9XCJ0b2dnbGVDYWxsZXJJZERpdigpXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgc2VsZWN0ZWRDYWxsZXJJZD8uaXNvQ29kZT8udG9Mb3dlckNhc2UoKVwiPjwvc3Bhbj5cclxuICAgICAgICAgIHt7c2VsZWN0ZWRDYWxsZXJJZD8ubnVtYmVyfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjYXNrQmxvY2s+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNob3duQ2FsbGVySWRcIiAoY2xpY2spPVwidG9nZ2xlQ2FsbGVySWREaXYoKVwiIFtuZ0NsYXNzXT1cInsgJ3RpbHQtc2hha2luZyc6IHNoYWtlRGVkaWNhdGVkQnRuIH1cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtYi0wXCI+U2VsZWN0IEMyQyBudW1iZXI8L2g1PlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtMlwiIHN0eWxlPVwib3BhY2l0eTouODttYXJnaW4tdG9wOjJweFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9pY29uX2Rvd25fYXJyb3cuc3ZnXCIgYWx0PVwiZG93blwiIHdpZHRoPVwiMTBweFwiPlxyXG4gICAgICAgICAgICA8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvd24gbWwtMiB0ZXh0LWJsdWVcIiBzdHlsZT1cIm1hcmdpbi10b3A6MnB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJndWlkZTJcIiAqbmdJZj1cInNoYWtlRGVkaWNhdGVkQnRuXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJndWlkZXRleHRcIj5QbGVhc2Ugc2VsZWN0IGEgbnVtYmVyIGZyb20gYmVsb3cgZHJvcGRvd248L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImNhbGxlcklkTGlzdC5sZW5ndGg7IGVsc2Ugbm9DYWxsZXJJZE1lc3NhZ2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhbGxlci1pZC1saXN0LWNvbnRhaW5lclwiICpuZ0lmPVwiY2FsbGVySWRMaXN0Lmxlbmd0aCAmJiAhaXNNaW5pbWlzZWRcIiBpZD1cImNhbGxlcklkQ29udGFpbmVyXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J3Zpc2libGUnOiAhaXNDYWxsZXJJZEhpZGRlbn1cIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICA8IS0tIDxoND5TZWxlY3QgQzJDIFNvZnRwaG9uZSBOdW1iZXI8L2g0PiAtLT5cclxuICAgICAgICAgIDxoND5NYWtlIG91dGdvaW5nIGNhbGwgdXNpbmc8L2g0PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIiAoY2xpY2spPVwiaXNDYWxsZXJJZEhpZGRlbiA9IHRydWVcIj5cclxuICAgICAgICAgICAgY2xvc2VcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYWxsZXJJZCBvZiBjYWxsZXJJZExpc3RcIj5cclxuICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRDYWxsZXJJZENsYXNzJzogY2FsbGVySWQ/Lm51bWJlciA9PSBzZWxlY3RlZENhbGxlcklkPy5udW1iZXJ9XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWRpY2F0ZWROdW1TZWxlY3QoY2FsbGVySWQpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY2FsbGVySWQ/Lmlzb0NvZGU/LnRvTG93ZXJDYXNlKClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB7e2NhbGxlcklkPy5udW1iZXJ9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7Y2FsbGVySWQ/LmNvdW50cnlOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNub0NhbGxlcklkTWVzc2FnZT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJuby1jYWxsZXItaWQtbWVzc2FnZVwiPlRvIG1ha2UgYW55IHZvaWNlIGNhbGxzLCBwbGVhc2UgPGFcclxuICAgICAgICAgIHJvdXRlckxpbms9XCIvZXh0ZW5zaW9uL2RlZGljYXRlZG51bWJlci97e3Rva2VufX1cIiBjbGFzcz1cImNsaWNrLWhlcmUtbGlua1wiXHJcbiAgICAgICAgICB0aXRsZT1cIlNldHRpbmdzID4gQzJDIE51bWJlclwiPnN1YnNjcmliZTwvYT4gdG8gYSB2b2ljZSBjYXBhYmxlIEMyQyBOdW1iZXIuXHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGVkaWNhdGVkLW92ZXJsYXlcIiAqbmdJZj1cInNob3dEZWRpY2F0ZWRQb3B1cFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBkZWRpY2F0ZWROdW1Qb3B1cFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBjaG9vc2VEZWRpY2F0ZWRIZWFkZXJcIj5cclxuICAgICAgICAgIDxoNT5DaG9vc2UgQzJDIE51bWJlcjwvaDU+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZGlhbC1jbG9zZS1idG5cIiAoY2xpY2spPVwic2hvd0RlZGljYXRlZFBvcHVwID0gZmFsc2VcIj5jbG9zZTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGRlZGljYXRlZE51bUxpc3RcIj5cclxuICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2FsbGVySWQgb2YgY2FsbGVySWRMaXN0XCI+XHJcbiAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRDYWxsZXJJZENsYXNzJzogY2FsbGVySWQ/Lm51bWJlciA9PSBzZWxlY3RlZENhbGxlcklkPy5udW1iZXJ9XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVkaWNhdGVkUG9wdXAgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBjYWxsZXJJZD8uaXNvQ29kZT8udG9Mb3dlckNhc2UoKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAge3tjYWxsZXJJZD8ubnVtYmVyfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3tjYWxsZXJJZD8uY291bnRyeU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJpbmNvbWluZy1jYWxsLXdpZGdldFwiICpuZ0Zvcj1cImxldCBjYWxsIG9mIG5ld0luY29taW5nQ2FsbHM7bGV0IGkgPSBpbmRleFwiIFtuZ1N0eWxlXT1cInsndG9wJzogKDMwICsgaSAqIDcyKSArICdweCd9XCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluYy11c2VyLWltZ1wiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL3VzZXIuanBnXCIgYWx0PVwidXNlciBpbWFnZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJpbmMtdXNlci1uYW1lXCI+e3tjYWxsLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCduYW1lJyl9fTwvcD5cclxuICAgICAgICA8cD57e2NhbGwucGFyYW1ldGVycy5Gcm9tfX08L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImluYy1jYWxsLWJ0biBpbmMtYWNjZXB0LWJ0biBtci0yXCIgKGNsaWNrKT1cImFjY2VwdE5ld0luY29taW5nQ2FsbChjYWxsKVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgc3R5bGU9XCJjb2xvcjogd2hpdGVcIj5cclxuICAgICAgICAgICAgY2FsbFxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJpbmMtY2FsbC1idG4gaW5jLXJlamVjdC1idG5cIiAoY2xpY2spPVwicmVqZWN0TmV3SW5jb21pbmdDYWxsKGNhbGwpXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZVwiPlxyXG4gICAgICAgICAgICBjYWxsX2VuZFxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgIDwvZGl2PiAtLT5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
1180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvZGlhbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvZGlhbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRW5NLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUsvQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7Ozs7Ozs7Ozs7Ozs7QUFZbkMsTUFBTSxPQUFPLGdCQUFnQjtJQWMzQixJQUFhLGVBQWUsQ0FBQyxLQUFjO1FBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLDZEQUE2RDtZQUM3RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFJRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQStERCxtQkFBbUIsQ0FBQyxLQUFZO1FBQzlCLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUU7WUFDM0QsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNwQixNQUFNLFlBQVksR0FBRyxPQUFPLENBQzFCLGdEQUFnRCxDQUNqRCxDQUFDO2dCQUNGLElBQUksWUFBWSxFQUFFO29CQUNoQixNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVB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RTtnQkFDckIsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNqQztZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUVyRDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7OzhHQTlxQ1UsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsNjFCQ3BCN0IseTJaQW9PTTs0RkRoTk8sZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7dVRBUWQsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFNTyxlQUFlO3NCQUEzQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBS0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHlCQUF5QjtzQkFBbEMsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNpQixnQkFBZ0I7c0JBQXZDLFNBQVM7dUJBQUMsV0FBVztnQkFHWixZQUFZO3NCQUFyQixNQUFNO2dCQW9EUCxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHdpbGlvU2VydmljZSB9IGZyb20gJy4vc2VydmljZS90d2lsaW8uc2VydmljZSc7XHJcbmltcG9ydCBzd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9leHRlbnNpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENhbGxlcklkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhbGxlci1pZC1kaWFsb2cvY2FsbGVyLWlkLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgcGFyc2VQaG9uZU51bWJlckZyb21TdHJpbmcsIHsgQXNZb3VUeXBlIH0gZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xyXG5pbXBvcnQgeyBrZXlwYWQgfSBmcm9tICcuLi9rZXlwYWQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBJcEFkZHJlc3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL2lwLWFkZHJlc3Muc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENhbGwgfSBmcm9tICdAdHdpbGlvL3ZvaWNlLXNkayc7XHJcbmltcG9ydCB7IEluY29tZWluZ0NhbGxTb2NrZXRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL2luY29tZWluZy1jYWxsLXNvY2tldC5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1kaWFsYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbGJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbGJveC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIHByaXZhdGUgX2lzRGlhbHBhZEhpZGRlbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy8gTGV0IHRoZSBsaWJyYXJ5IGRlY2lkZSB0byBhdXRvLW9wZW4gb24gaW5jb21pbmcgY2FsbCB3aXRob3V0IGhvc3Qgd2lyaW5nXHJcbiAgQElucHV0KCkgYXV0b09wZW5PbkluY29taW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjb250YWN0SW5mbzogYW55O1xyXG4gIEBJbnB1dCgpIGRldmljZUlkOiBhbnk7XHJcbiAgQElucHV0KCkgdXNlcklkOiBhbnk7XHJcbiAgQElucHV0KCkgY2FsbEFjdGlvbjogYW55O1xyXG4gIGlzTG9hZGVyc2hvdyA9IGZhbHNlO1xyXG4gIGlzSW5jb21pbmdDYWxsbm90aWZpY2F0aW9uOiBhbnkgPSBmYWxzZTtcclxuICBub3RpZmljYXRpb25DYWxsTGlzdDogYW55ID0gW107XHJcbiAgZGV2aWNlTnVtYmVyTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2V0IGlzRGlhbHBhZEhpZGRlbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNEaWFscGFkSGlkZGVuID0gdmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIC8vIFdoZW4gZGlhbHBhZCBiZWNvbWVzIHZpc2libGUsIGVuc3VyZSBUd2lsaW8gaXMgaW5pdGlhbGl6ZWRcclxuICAgICAgdGhpcy5pbml0aWFsaXplVHdpbGlvKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGluY29taW5nQ2FsbERhdGE6IGFueVxyXG4gIEBJbnB1dCgpIGluY29taW5nQ2FsbG5vdGlmaWNhdGlvbjogYW55O1xyXG4gIGNvbmZlcmVuY2VDYWxsSW5mbzogYW55ID0ge307XHJcbiAgZ2V0IGlzRGlhbHBhZEhpZGRlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0RpYWxwYWRIaWRkZW47XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBjbG9zZURpYWxwYWRFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBjYWxsSW5pdGlhdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBlbmRDYWxsRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgbWluaW1pc2VFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBpbmNvbWluZ0NhbGxzTmV3SW5mb0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuICBAT3V0cHV0KCkgaW5jb21pbmdDYWxsSW5pdGlhdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGNvbmZlcmVuY2VDYWxsTGlzdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWxJbnB1dCcpIGRpYWxJbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpIG51bWJlckRpYWxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuXHJcbiAgaXNDYWxsSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGtleXBhZFZhbCA9IGtleXBhZDtcclxuXHJcbiAgc2hvd0lucHV0Q2xlYXJCdG46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaWFsZWROdW1iZXI6IHN0cmluZyA9ICcnO1xyXG4gIGNvbnRhY3RMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGZpbHRlcmVkQ29udGFjdExpc3Q6IGFueVtdID0gW107XHJcbiAgY2FsbGVySWRMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkQ2FsbGVySWQ6IGFueTtcclxuICBpc0NhbGxlcklkSGlkZGVuOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgaXNUcmlhbFBlcmlvZE92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1BheW1lbnREdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZXJtaW5hdGVDYWxsID0gZmFsc2U7XHJcbiAgdG9hc3RUaW1lb3V0ID0gNzAwMDtcclxuICBjYWxsTnVtYmVyVG9hc3QgPSB7XHJcbiAgICBzaG93OiBmYWxzZSxcclxuICAgIHR5cGU6ICdhbGVydC1zdWNjZXNzJyxcclxuICAgIG51bWJlcjogJycsXHJcbiAgICBkaXNwbGF5TnVtOiAnJ1xyXG4gIH1cclxuICBjYWxsRGF0YTogYW55ID0ge1xyXG4gICAgcGhvbmU6ICcnLFxyXG4gICAgZGlzcGxheU51bTogJycsXHJcbiAgICBkaWFsOiBmYWxzZSxcclxuICAgIG5hbWU6ICcnLFxyXG4gICAgaW1nOiAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZycsXHJcbiAgICBpc0luY29taW5nQ2FsbDogZmFsc2UsXHJcbiAgICBleHROdW06ICcnXHJcbiAgfTtcclxuICBsYXN0RGlhbGVkOiB7IG5hbWU/OiBzdHJpbmc7IGltYWdlPzogc3RyaW5nOyBudW1iZXI6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XHJcbiAgc2FuaXRpemVkTnVtOiBhbnk7XHJcbiAgZGlhbEFsZXJ0ID0ge1xyXG4gICAgbXNnOiAnJyxcclxuICAgIHNob3c6IGZhbHNlXHJcbiAgfVxyXG4gIHRva2VuPzogc3RyaW5nO1xyXG5cclxuICBzaG93RGVkaWNhdGVkUG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBuZXdJbmNvbWluZ0NhbGxzOiBhbnkgPSBbXTtcclxuICBpbmNvbWluZ0NhbGxzTGlzdDogYW55ID0gW107XHJcbiAgbmV3SW5jb21pbmdDYWxsRGF0YT86IENhbGw7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgY2FsbFByZWZlcmVuY2U6IGFueTtcclxuICBzaGFrZURlZGljYXRlZEJ0bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU21hcnREaWFsQ2FsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgWyckZXZlbnQnXSlcclxuICBiZWZvcmVVbmxvYWRIYW5kbGVyKGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyB8fCB0aGlzLmluY29taW5nQ2FsbHNMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkUmVsb2FkID0gY29uZmlybShcclxuICAgICAgICAgICdZb3VyIGNhbGwgd2FzIGRpc2Nvbm5lY3RlZCBkdWUgdG8gcGFnZSByZWxvYWQuJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHNob3VsZFJlbG9hZCkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXRSZW1vdmVQYXJ0aWNpcGFudHMoJ2FsbCcsIHRoaXMuaW5jb21pbmdDYWxsc0xpc3RbMF0uY29uZmVyZW5jZUlkKTtcclxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0d2lsaW9TZXJ2aWNlOiBUd2lsaW9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleHRTZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgaXBTZXJ2aWNlOiBJcEFkZHJlc3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleHRlbnNpb25TZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZGs6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgaW5jb21laW5nQ2FsbFNvY2tldFNlcnZpY2U6IEluY29tZWluZ0NhbGxTb2NrZXRTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSBpZiBkaWFscGFkIGlzIHZpc2libGUgYnkgZGVmYXVsdFxyXG4gICAgaWYgKCF0aGlzLmlzRGlhbHBhZEhpZGRlbikge1xyXG4gICAgICBjb25zb2xlLmxvZygnc2ZzZGZkc2YnKVxyXG4gICAgICB0aGlzLmluaXRpYWxpemVUd2lsaW8oKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5jb21laW5nQ2FsbFNvY2tldFNlcnZpY2UuY3JlYXRlQXVkaW9CYXNlKCk7XHJcbiAgICBjb25zb2xlLmxvZygnRGlhbGJveENvbXBvbmVudCBjb25zdHJ1Y3RvcicpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRSZW1vdmVQYXJ0aWNpcGFudHMocGFydGljaXBhbnRJZDogYW55LCBjb25mZXJlbmNlSWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRSZW1vdmVQYXJ0aWNpcGFudHMocGFydGljaXBhbnRJZCwgY29uZmVyZW5jZUlkKS50b1Byb21pc2UoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplVHdpbGlvKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgdGhpcy50b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB8fCAnJztcclxuICAgICAgaWYgKCF0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gYXV0aGVudGljYXRpb24gdG9rZW4gZm91bmQnKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XHJcblxyXG4gICAgICAvLyBJbml0aWFsaXplIFR3aWxpbyBzZXJ2aWNlXHJcbiAgICAgIHRoaXMudHdpbGlvU2VydmljZS5pbml0aWFsaXplVHdpbGlvRGV2aWNlKHRoaXMuZGV2aWNlSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnbmdPbkluaXQnKVxyXG4gICAgLy8gRW5zdXJlIFR3aWxpbyBpcyBpbml0aWFsaXplZCBldmVuIHdoZW4gZGlhbHBhZCBzdGFydHMgaGlkZGVuLFxyXG4gICAgLy8gc28gd2UgY2FuIGF1dG8tb3BlbiBvbiBpbmNvbWluZyBjYWxscy5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZVR3aWxpbygpO1xyXG4gICAgdGhpcy5pbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZS5jb25uZWN0KHRoaXMuZGV2aWNlSWQpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5pbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZS5saXN0ZW4oKS5zdWJzY3JpYmUoYXN5bmMgKGluY29taW5nQ2FsbERhdGE6IGFueSkgPT4ge1xyXG4vLyAgICAgICAgIGluY29taW5nQ2FsbERhdGEgPSBbe1xyXG4vLyAgIFwidGltZXJcIjogXCJcIixcclxuLy8gICBcImNvbmZlcmVuY2VOYW1lXCI6IFwiY29uZl82OWJiYjdlNWE1MDE0YjMwYjg4OGI0MjVcIixcclxuLy8gICBcImNvbmZlcmVuY2VJZFwiOiBcIjY5YmJiN2U1YTUwMTRiMzBiODg4YjQyNVwiLFxyXG4vLyAgIFwiY29uZmVyZW5jZVN0YXR1c1wiOiBcImNvbmZlcmVuY2Utc3RhcnRcIixcclxuLy8gICBcInRpbWVyRGF0ZVwiOiBcIlwiLFxyXG4vLyAgIFwibm90aWZpY2F0aW9uTWVzc2FnZVwiOiBcIlwiLFxyXG4vLyAgIFwiaXNBY3RpdmVcIjogdHJ1ZSxcclxuLy8gICBcImNvbmZlcmVuY2VTaWRcIjogXCJDRjJhNzljMGE3ZTJlMzI4NWNkZGUxZDU4YTI2NWU5YTM3XCIsXHJcbi8vICAgXCJwYXJ0aWNpcGFudHNcIjogW1xyXG4vLyAgICAge1xyXG4vLyAgICAgICBcImNhbGxTaWRcIjogXCJDQWM4MDVkNmQ1MTMxYjk5ODdiMDEwM2MyM2Y4MGRjZjdjXCIsXHJcbi8vICAgICAgIFwiaXNNdXRlXCI6IGZhbHNlLFxyXG4vLyAgICAgICBcImpvaW5lZEF0XCI6IFwiVGh1IE1hciAxOSAwODo0Njo0MiBVVEMgMjAyNlwiLFxyXG4vLyAgICAgICBcImlzSG9sZFwiOiBmYWxzZSxcclxuLy8gICAgICAgXCJidXNpbmVzc051bWJlclwiOiBmYWxzZSxcclxuLy8gICAgICAgXCJpc0NvbmZlcmVuY2VcIjogZmFsc2UsXHJcbi8vICAgICAgIFwiYnVzaW5lc3NPdHBcIjogZmFsc2UsXHJcbi8vICAgICAgIFwidXNlcklkXCI6IFwiNjk5YmViNTg3MzE3ODQ3ZWExMDBkNjkyXCIsXHJcbi8vICAgICAgIFwiZm9yd2FyZGVkVG9cIjogXCJcIixcclxuLy8gICAgICAgXCJpc0xlZnRcIjogZmFsc2UsXHJcbi8vICAgICAgIFwidG9JbWFnZVwiOiBcIlwiLFxyXG4vLyAgICAgICBcImNvbmZlcmVuY2VJZFwiOiBcIjY5YmJiN2U1YTUwMTRiMzBiODg4YjQyNVwiLFxyXG4vLyAgICAgICBcInRvTmFtZVwiOiBcIk1vYmlsZTEgICBcIixcclxuLy8gICAgICAgXCJjYWxsU3RhdHVzXCI6IFwicGFydGljaXBhbnQtam9pblwiLFxyXG4vLyAgICAgICBcImNsaWVudFwiOiB0cnVlLFxyXG4vLyAgICAgICBcImZyb21cIjogXCIrMTIyNTU2MjgzODNcIixcclxuLy8gICAgICAgXCJpZFwiOiBcIjY5YmJiN2YyYTUwMTRiMzBiODg4YjQyOFwiLFxyXG4vLyAgICAgICBcInRvXCI6IFwiKzkxNjM1NDU2NDczM1wiLFxyXG4vLyAgICAgICBcImRpcmVjdGlvblwiOiBcIm91dGdvaW5nLWNhbGxcIlxyXG4vLyAgICAgfSxcclxuLy8gICAgIHtcclxuLy8gICAgICAgXCJjYWxsU2lkXCI6IFwiQ0E2YjVlMmExYTRhOTBkOTZlMmE4Nzk1NTA4YzAyMmYxM1wiLFxyXG4vLyAgICAgICBcImlzTXV0ZVwiOiBmYWxzZSxcclxuLy8gICAgICAgXCJqb2luZWRBdFwiOiBcIlRodSBNYXIgMTkgMDg6NDY6NDYgVVRDIDIwMjZcIixcclxuLy8gICAgICAgXCJpc0hvbGRcIjogZmFsc2UsXHJcbi8vICAgICAgIFwiYnVzaW5lc3NOdW1iZXJcIjogZmFsc2UsXHJcbi8vICAgICAgIFwiaXNDb25mZXJlbmNlXCI6IGZhbHNlLFxyXG4vLyAgICAgICBcImJ1c2luZXNzT3RwXCI6IGZhbHNlLFxyXG4vLyAgICAgICBcInVzZXJJZFwiOiBcIjY5OWJlYjU4NzMxNzg0N2VhMTAwZDY5MlwiLFxyXG4vLyAgICAgICBcImZvcndhcmRlZFRvXCI6IFwiXCIsXHJcbi8vICAgICAgIFwiaXNMZWZ0XCI6IGZhbHNlLFxyXG4vLyAgICAgICBcInRvSW1hZ2VcIjogXCJcIixcclxuLy8gICAgICAgXCJjb25mZXJlbmNlSWRcIjogXCI2OWJiYjdlNWE1MDE0YjMwYjg4OGI0MjVcIixcclxuLy8gICAgICAgXCJ0b05hbWVcIjogXCJNb2JpbGUxICAgXCIsXHJcbi8vICAgICAgIFwiY2FsbFN0YXR1c1wiOiBcInBhcnRpY2lwYW50LWpvaW5cIixcclxuLy8gICAgICAgXCJjbGllbnRcIjogZmFsc2UsXHJcbi8vICAgICAgIFwiZnJvbVwiOiBcIisxMjI1NTYyODM4M1wiLFxyXG4vLyAgICAgICBcImlkXCI6IFwiNjliYmI3ZjZhNTAxNGIzMGI4ODhiNDI5XCIsXHJcbi8vICAgICAgIFwidG9cIjogXCIrOTE2MzU0NTY0NzMzXCIsXHJcbi8vICAgICAgIFwiZGlyZWN0aW9uXCI6IFwib3V0Z29pbmctY2FsbFwiXHJcbi8vICAgICB9XHJcbi8vICAgXVxyXG4vLyB9XVxyXG4gICAgICAgIHRoaXMudHdpbGlvU2VydmljZS5jb25mZXJlbmNlQ2FsbEluZm8gPSBpbmNvbWluZ0NhbGxEYXRhO1xyXG4gICAgICAgIHRoaXMuY29uZmVyZW5jZUNhbGxMaXN0LmVtaXQoaW5jb21pbmdDYWxsRGF0YSk7XHJcbiAgICAgICAgaW5jb21pbmdDYWxsRGF0YSA9IGluY29taW5nQ2FsbERhdGE/Lmxlbmd0aCA+IDAgPyBpbmNvbWluZ0NhbGxEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcnRpY2lwYW50cz8ubGVuZ3RoID4gMCkgOiBbXTtcclxuICAgICAgICBsZXQgdXBkYXRlZENvbmZlcmVuY2VDYWxsRGF0YTogYW55ID0gW107XHJcbiAgICAgICAgaW5jb21pbmdDYWxsRGF0YS5mb3JFYWNoKChjYWxsSW5mbzogYW55LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGxldCBvdXJOdW1iZXI6IGFueSA9IHt9O1xyXG4gICAgICAgICAgb3VyTnVtYmVyID0gY2FsbEluZm8ucGFydGljaXBhbnRzLmZpbmQoKHJlc0RhdGE6IGFueSkgPT5cclxuICAgICAgICAgICAgKCh0aGlzLmRldmljZU51bWJlckxpc3QuaW5jbHVkZXMocmVzRGF0YT8uZnJvbSkgJiYgcmVzRGF0YT8uY2xpZW50KSB8fCAodGhpcy5kZXZpY2VOdW1iZXJMaXN0LmluY2x1ZGVzKHJlc0RhdGE/LnRvKSAmJiByZXNEYXRhPy5kaXJlY3Rpb24gPT0gJ2luY29taW5nLWNhbGwnKSkgJiYgIXJlc0RhdGE/LmlzTGVmdFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKG91ck51bWJlcj8uaWQpIHtcclxuICAgICAgICAgICAgdXBkYXRlZENvbmZlcmVuY2VDYWxsRGF0YS5wdXNoKGNhbGxJbmZvKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgaWYgKCEhdXBkYXRlZENvbmZlcmVuY2VDYWxsRGF0YT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gaW5jb21pbmdDYWxsRGF0YS5wYXJ0aWNpcGFudHMuZmlsdGVyKChpdGVtOiBhbnkpID0+ICFpdGVtLmlzTGVmdCkgfHwgW107XHJcbiAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gdXBkYXRlZENvbmZlcmVuY2VDYWxsRGF0YSB8fCBbXTtcclxuICAgICAgICAgIGxldCBwYXJlbnRDYWxsOiBzdHJpbmdbXSA9IFtdXHJcbiAgICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QgPSB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0LmZpbHRlcigocmVzOiBhbnkpID0+IHJlcy5lbmRUaW1lID49IChuZXcgRGF0ZSgpLmdldFRpbWUoKSkpO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0LmZvckVhY2goKGNhbGw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHVwZGF0ZWRDb25mZXJlbmNlQ2FsbERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW5mbyA9IGl0ZW0ucGFydGljaXBhbnRzLmZpbmQoKHJlc0luZm86IGFueSkgPT4gcmVzSW5mbz8uaWQgPT09IGNhbGw/LnBhcnRpY2lwYW50SWQpXHJcbiAgICAgICAgICAgICAgICAvLyAgcmV0dXJuIGluZm8/LmlkXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5mbykge1xyXG4gICAgICAgICAgICAgICAgICBwYXJlbnRDYWxsLnB1c2goaW5mby5pZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHBhcmVudENhbGw/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdCA9IHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+ICFwYXJlbnRDYWxsLmluY2x1ZGVzKGl0ZW0/LnBhcnRpY2lwYW50SWQpKTtcclxuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IFsuLi50aGlzLmluY29taW5nQ2FsbHNMaXN0LCAuLi50aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0XVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnLi4uLi4nLCB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0KVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IFsuLi50aGlzLmluY29taW5nQ2FsbHNMaXN0LCAuLi50aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0XVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGVyc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc0luY29taW5nQ2FsbG5vdGlmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuaXNJbmNvbWluZ0NhbGxub3RpZmljYXRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnR3aWxpb1NlcnZpY2UuZGV2aWNlPy5kaXNjb25uZWN0QWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB8fCAnJztcclxuICAgICAgLy90aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICB0aGlzLmdldENvbnRhY3RMaXN0KCk7XHJcblxyXG4gICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xyXG4gICAgICBjb25zdCBzdWIxID0gdGhpcy50d2lsaW9TZXJ2aWNlLmRpYWxOdW1iZXJGcm9tT3RoZXJNb2R1bGUuc3Vic2NyaWJlKChjb250YWN0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoY29udGFjdC5udW1iZXIpIHtcclxuICAgICAgICAgIHRoaXMuaXNTbWFydERpYWxDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoY29udGFjdC5pc0RpYWxGcm9tSGlzdG9yeSkge1xyXG4gICAgICAgICAgICAvL2hhbmRsZSBkaWFsaW5nIGZyb20gaGlzdG9yeSBwYWdlXHJcbiAgICAgICAgICAgIGlmIChjb250YWN0LmNhbGxlcklkID09ICdzbWFydERpYWxpbmcnKSB7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IHsgbnVtYmVyOiBjb250YWN0LmZyb20gfTtcclxuICAgICAgICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBjb250YWN0Lm5hbWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBjb250YWN0LmltZztcclxuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLmZyb20gPSBjb250YWN0LmZyb207XHJcbiAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnMjc0JywgY29udGFjdClcclxuICAgICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihjb250YWN0KTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goY29udGFjdClcclxuICAgICAgICAgICAgICB0aGlzLmluaXRpYXRlQ2FsbCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCcyODInLCBjb250YWN0KVxyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKGNvbnRhY3QpO1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QucHVzaChjb250YWN0KVxyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGNvbnRhY3QuY2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycgfHwgY29udGFjdC5jYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBjb250YWN0Lm5hbWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBjb250YWN0LmltZztcclxuICAgICAgICAgICAgICB0aGlzLnNhbml0aXplZE51bSA9IGNvbnRhY3QubnVtYmVyO1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgLy8gaGFuZGxlIGluY29taW5nIGNhbGwgKG1hbmFnZWQgaW50ZXJuYWxseTsgaG9zdCBuZWVkIG5vdCBwYXNzIGluY29taW5nQ2FsbERhdGEpXHJcbiAgICAgIGNvbnN0IHN1YjIgPSB0aGlzLnR3aWxpb1NlcnZpY2UuY3VycmVudENhbGwuc3Vic2NyaWJlKChpbmNvbWluZ0NhbGxEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaW5jb21pbmdDYWxsRGF0YSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXV0b09wZW5PbkluY29taW5nICYmIHRoaXMuX2lzRGlhbHBhZEhpZGRlbikge1xyXG4gICAgICAgICAgICB0aGlzLl9pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5pc0NhbGxJblByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nQ2FsbERhdGEpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnMzI1JywgaW5jb21pbmdDYWxsRGF0YSlcclxuICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oaW5jb21pbmdDYWxsRGF0YSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpbmNvbWluZ0NhbGxEYXRhWydpc0ZpcnN0Q2FsbCddID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2RkMScpXHJcbiAgICAgICAgICAgIC8vIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0Zyb20nXTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2RkMicpXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKGluY29taW5nQ2FsbERhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBpbmNvbWluZ0NhbGxEYXRhLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCduYW1lJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaXNJbmNvbWluZ0NhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW5jb21pbmdDYWxsRGF0YS5vbignY2FuY2VsJywgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10gIT09IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snQ2FsbFNpZCddKTtcclxuICAgICAgICAgICAgLy8gaWYodGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkMycpXHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGluY29taW5nQ2FsbERhdGEub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSB0aGlzLmluY29taW5nQ2FsbHNMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSAhPT0gaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xyXG4gICAgICAgICAgICAvLyBpZih0aGlzLmluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA9PSAwKXtcclxuICAgICAgICAgICAgLy8gICBjb25zb2xlLmxvZygnZGQ0JylcclxuICAgICAgICAgICAgLy8gICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoc3ViMSk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoc3ViMik7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0VXNlckluZm9ybWF0aW9uKGluY29taW5nQ2FsbERhdGE6IGFueSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2dldFVzZXJJbmZvcm1hdGlvbicsIGluY29taW5nQ2FsbERhdGEpO1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmZyb21FbnRyaWVzKEFycmF5LmZyb20oaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmVudHJpZXMoKSkpO1xyXG4gICAgY29uc29sZS5sb2coJzM2Ni0tLScsIGRhdGEpXHJcbiAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0VXNlckluZm9ybWF0aW9uKGRhdGFbJ3R3aWxpb0F1dGhJZCddKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpbmNvbWluZ0NhbGxEYXRhWyd1c2VySW5mbyddID0gcmVzcG9uc2VcclxuICAgICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5zb21lKChjYWxsOiBhbnkpID0+IGNhbGwucGFyYW1ldGVycz8uQ2FsbFNpZCA9PT0gaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzPy5DYWxsU2lkKTtcclxuICAgICAgICBpZiAoIWFscmVhZHlFeGlzdHMpIHtcclxuICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QucHVzaChpbmNvbWluZ0NhbGxEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZGsuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc3RhcnRpbmcgcmVjb3JkaW5nJywgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGZyb21FbnRyaWVzKGVudHJpZXM6IFtzdHJpbmcsIGFueV1bXSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIGVudHJpZXMucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICBhY2Nba2V5XSA9IHZhbHVlO1xyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgYW55Pik7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnJlZ2lzdGVyRHJhZ0VsZW1lbnQoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWydpbmNvbWluZ0NhbGxub3RpZmljYXRpb24nXT8uY3VycmVudFZhbHVlICYmIHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uICYmIHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uPy5kYXRhPy5jb250ZW50ICE9IFwiVm9pY2VtYWlsXCIpIHtcclxuICAgICAgaWYgKHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uPy5kYXRhPy5jb250ZW50ID09IFwiSW5jb21pbmdDYWxsXCIgJiYgdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24/LmRhdGE/LmRhdGE/LnN0YXR1cyAhPSBcInJlamVjdGVkXCIgJiYgdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24/LmRhdGE/LmRhdGE/LnN0YXR1cyAhPSBcImFjY2VwdGVkXCIpIHtcclxuICAgICAgICB0aGlzLmlzSW5jb21pbmdDYWxsbm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuICAgICAgICBsZXQgY2FsbGVySW5mbzogYW55O1xyXG4gICAgICAgIGxldCBudW1iZXJMaXN0ID0gdGhpcy5jYWxsZXJJZExpc3QubWFwKChyZXMpID0+IHJlcy5udW1iZXIpXHJcbiAgICAgICAgaWYgKCFudW1iZXJMaXN0LmluY2x1ZGVzKHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8uZnJvbU51bWJlcikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbi5kYXRhPy5kYXRhPy5jMmNCdXNpbmVzcyAhPSAnZmFsc2UnICYmIHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8ucGFydGljaXBhbnRJZCkge1xyXG4gICAgICAgICAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0VXNlckluZm9ybWF0aW9uKHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8ucGFydGljaXBhbnRJZCkuc3Vic2NyaWJlKChyZXNJbmZvOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjYWxsZXJJbmZvID0gcmVzSW5mbz8uYzJjSW5mb3JtYXRpb24gfHwge307XHJcbiAgICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxOb3RpZmljYXRpb24oY2FsbGVySW5mbyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbE5vdGlmaWNhdGlvbih7fSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uPy5kYXRhPy5jb250ZW50ID09IFwiTWlzc2VkIENhbGxcIiB8fCB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbj8uZGF0YT8uZGF0YT8uc3RhdHVzID09IFwicmVqZWN0ZWRcIiB8fCB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbj8uZGF0YT8uZGF0YT8uc3RhdHVzID09IFwiYWNjZXB0ZWRcIikge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QuZmluZEluZGV4KChjYWxsOiBhbnkpID0+IGNhbGw/LnBhcnRpY2lwYW50SWQgPT09IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uPy5kYXRhPy5kYXRhPy5yZWNvcmRJZCB8fCBjYWxsPy5wYXJ0aWNpcGFudElkID09PSB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbj8uZGF0YT8uZGF0YT8ucmVjb3JkSWQgfHwgY2FsbD8ucGFydGljaXBhbnRJZCA9PT0gdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24/LmRhdGE/LmRhdGE/LnBhcnRpY2lwYW50SWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICBsZXQgaW5jb21pbmdDYWxsSW5kZXggPSB0aGlzLmluY29taW5nQ2FsbHNMaXN0LmZpbmRJbmRleCgoY2FsbDogYW55KSA9PiBjYWxsLnBhcnRpY2lwYW50SWQgPT09IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uPy5kYXRhPy5kYXRhPy5yZWNvcmRJZCB8fCBjYWxsLnBhcnRpY2lwYW50SWQgPT09IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uPy5kYXRhPy5kYXRhPy5wYXJ0aWNpcGFudElkKTtcclxuICAgICAgICAgIGlmIChpbmNvbWluZ0NhbGxJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3Quc3BsaWNlKGluY29taW5nQ2FsbEluZGV4LCAxKTtcclxuICAgICAgICAgICAgdGhpcy5pbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZS5wYXVzZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNkay5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndGVzdCcsIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmluY29taW5nQ2FsbHNMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmluY29tZWluZ0NhbGxTb2NrZXRTZXJ2aWNlLnBhdXNlKCk7XHJcbiAgICAgICAgICB0aGlzLmlzSW5jb21pbmdDYWxsbm90aWZpY2F0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkay5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKCdub3RpZmljYXRpb25DYWxsTGlzdCcsIHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QpO1xyXG4gICAgICBsZXQgcGFyZW50Q2FsbDogc3RyaW5nW10gPSBbXVxyXG4gICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdCA9IHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QuZmlsdGVyKChyZXM6IGFueSkgPT4gcmVzLmVuZFRpbWUgPj0gKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSk7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdC5mb3JFYWNoKChjYWxsOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpbmZvID0gaXRlbS5wYXJ0aWNpcGFudHMuZmluZCgocmVzSW5mbzogYW55KSA9PiByZXNJbmZvPy5pZCA9PT0gY2FsbD8ucGFydGljaXBhbnRJZClcclxuICAgICAgICAgICAgLy8gIHJldHVybiBpbmZvPy5pZFxyXG4gICAgICAgICAgICBpZiAoaW5mbykge1xyXG4gICAgICAgICAgICAgIHBhcmVudENhbGwucHVzaChpbmZvLmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcmVudENhbGw/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0ID0gdGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gIXBhcmVudENhbGwuaW5jbHVkZXMoaXRlbT8ucGFydGljaXBhbnRJZCkpO1xyXG4gICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSBbLi4udGhpcy5pbmNvbWluZ0NhbGxzTGlzdCwgLi4udGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdF1cclxuICAgICAgICBjb25zb2xlLmxvZygnLi4uLi4nLCB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0KVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSBbLi4udGhpcy5pbmNvbWluZ0NhbGxzTGlzdCwgLi4udGhpcy5ub3RpZmljYXRpb25DYWxsTGlzdF1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNkay5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZGV2aWNlSWQnXSkge1xyXG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGV2aWNlSWQnLCBjaGFuZ2VzWydkZXZpY2VJZCddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgIHRoaXMudHdpbGlvU2VydmljZS5kZXZpY2VJZCA9IGNoYW5nZXNbJ2RldmljZUlkJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICBjb25zb2xlLmxvZygnU2V0IGRldmljZUlkIGluIGxvY2FsU3RvcmFnZTonLCBjaGFuZ2VzWydkZXZpY2VJZCddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1sndXNlcklkJ10/LmN1cnJlbnRWYWx1ZSAmJiB0aGlzLnVzZXJJZCkge1xyXG4gICAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UudXNlcklkID0gdGhpcy51c2VySWQ7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snY29udGFjdEluZm8nXT8uY3VycmVudFZhbHVlICYmIHRoaXMuY29udGFjdEluZm8pIHtcclxuICAgICAgbGV0IGNvbnRhY3QgPSB0aGlzLmNvbnRhY3RJbmZvO1xyXG4gICAgICBjb25zb2xlLmxvZygnY29udGFjdEluZm8nLCBjb250YWN0KTtcclxuICAgICAgaWYgKGNvbnRhY3QubnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5pc1NtYXJ0RGlhbENhbGwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpYWxlZE51bWJlciA9IGNvbnRhY3QubnVtYmVyO1xyXG4gICAgICAgIGlmIChjb250YWN0LmlzRGlhbEZyb21IaXN0b3J5KSB7XHJcbiAgICAgICAgICAvL2hhbmRsZSBkaWFsaW5nIGZyb20gaGlzdG9yeSBwYWdlXHJcbiAgICAgICAgICBpZiAoY29udGFjdC5jYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0geyBudW1iZXI6IGNvbnRhY3QuZnJvbSB9O1xyXG4gICAgICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGNvbnRhY3QubmFtZTtcclxuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBjb250YWN0LmltZztcclxuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5mcm9tID0gY29udGFjdC5mcm9tO1xyXG4gICAgICAgICAgICB0aGlzLnNhbml0aXplZE51bSA9IGNvbnRhY3QubnVtYmVyO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnMjc0JywgY29udGFjdClcclxuICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oY29udGFjdCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCc0NTQnLCBjb250YWN0KVxyXG4gICAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goY29udGFjdClcclxuICAgICAgICAgICAgdGhpcy5pbml0aWF0ZUNhbGwoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnMjgyJywgY29udGFjdClcclxuICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oY29udGFjdCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCc0NjQnLCBjb250YWN0KVxyXG4gICAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goY29udGFjdClcclxuICAgICAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGNvbnRhY3QuY2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycgfHwgY29udGFjdC5jYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykge1xyXG4gICAgICAgICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcjtcclxuICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGNvbnRhY3QubnVtYmVyO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBjb250YWN0Lm5hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gY29udGFjdC5pbWc7XHJcbiAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2lzRGlhbHBhZEhpZGRlbiddICYmICF0aGlzLmlzRGlhbHBhZEhpZGRlbikge1xyXG4gICAgICB0aGlzLmdldENvbnRhY3RMaXN0KCk7XHJcbiAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlhbElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgICBpZiAoIXRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaW5jb21pbmdDYWxsRGF0YSkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxscy5wdXNoKHRoaXMuaW5jb21pbmdDYWxsRGF0YSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnNDA0JywgdGhpcy5pbmNvbWluZ0NhbGxEYXRhKVxyXG4gICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24odGhpcy5pbmNvbWluZ0NhbGxEYXRhKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ2RkNScpXHJcbiAgICAgICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snRnJvbSddO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJzQxMScsIHRoaXMuaW5jb21pbmdDYWxsRGF0YSlcclxuICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKHRoaXMuaW5jb21pbmdDYWxsRGF0YSk7XHJcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSB0aGlzLmluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ25hbWUnKTtcclxuICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gdGhpcy5pbmNvbWluZ0NhbGxEYXRhLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCdpbWFnZScpIHx8ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJztcclxuICAgICAgICAgIHRoaXMuY2FsbERhdGEuaXNJbmNvbWluZ0NhbGwgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluY29taW5nQ2FsbERhdGEub24oJ2NhbmNlbCcsICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSB0aGlzLmluY29taW5nQ2FsbHNMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSAhPT0gdGhpcy5pbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XHJcbiAgICAgICAgICAvLyBpZih0aGlzLmluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA9PSAwKXtcclxuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkNicpXHJcbiAgICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxEYXRhLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxEYXRhLm9uKCdkaXNjb25uZWN0JywgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snQ2FsbFNpZCddKTtcclxuICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGF0YS5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAvLyBpZih0aGlzLmluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA9PSAwKXtcclxuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkNycpXHJcbiAgICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snY2FsbEFjdGlvbiddPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuY2FsbEFjdGlvbj8udHlwZSA9PSAncmVKb2luJykge1xyXG4gICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldFJlbW92ZVBhcnRpY2lwYW50cygnYWxsJywgdGhpcy5jYWxsQWN0aW9uPy5jb25mZXJlbmNlSWQpLnN1YnNjcmliZSgocmVzKSA9PiB7IH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSByZWdpc3RlckRyYWdFbGVtZW50KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZWxtbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJhZ3BhcmVudDEnKTtcclxuICAgICAgaWYgKCFlbG1udCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0RyYWcgZWxlbWVudCBub3QgZm91bmQnKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBwb3MxID0gMCwgcG9zMiA9IDAsIHBvczMgPSAwLCBwb3M0ID0gMDtcclxuXHJcbiAgICAgIGNvbnN0IGRyYWdNb3VzZURvd24gPSAoZTogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGlmICh0YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcG9zMyA9IGUuY2xpZW50WDtcclxuICAgICAgICBwb3M0ID0gZS5jbGllbnRZO1xyXG5cclxuICAgICAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IGVsZW1lbnREcmFnKG1vdmVFdmVudCk7XHJcbiAgICAgICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xyXG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XHJcbiAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3QgZWxlbWVudERyYWcgPSAoZTogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBwb3MxID0gcG9zMyAtIGUuY2xpZW50WDtcclxuICAgICAgICBwb3MyID0gcG9zNCAtIGUuY2xpZW50WTtcclxuICAgICAgICBwb3MzID0gZS5jbGllbnRYO1xyXG4gICAgICAgIHBvczQgPSBlLmNsaWVudFk7XHJcblxyXG4gICAgICAgIGVsbW50LnN0eWxlLnRvcCA9IChlbG1udC5vZmZzZXRUb3AgLSBwb3MyKSArICdweCc7XHJcbiAgICAgICAgZWxtbnQuc3R5bGUubGVmdCA9IChlbG1udC5vZmZzZXRMZWZ0IC0gcG9zMSkgKyAncHgnO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gQ2hlY2sgZm9yIGhlYWRlciBlbGVtZW50XHJcbiAgICAgIGNvbnN0IGhlYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsbW50LmlkICsgJ2hlYWRlcicpO1xyXG4gICAgICBpZiAoaGVhZGVyKSB7XHJcbiAgICAgICAgaGVhZGVyLm9ubW91c2Vkb3duID0gZHJhZ01vdXNlRG93bjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlbG1udC5vbm1vdXNlZG93biA9IGRyYWdNb3VzZURvd247XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5sb2coZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGluY29taW5nQ2FsbE5vdGlmaWNhdGlvbihjYWxsZXJJbmZvOiBhbnkpIHtcclxuICAgIGxldCBpbmNvbWluZ0NhbGw6IGFueSA9IHtcclxuICAgICAgY29uZmVyZW5jZUlkOiB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbj8uZGF0YT8uZGF0YT8uY29uZmVyZW5jZUlkIHx8ICdubycsXHJcbiAgICAgIGlzQWN0aXZlOiB0cnVlLFxyXG4gICAgICBpc0luY29taW5nQ2FsbDogdHJ1ZSxcclxuICAgICAgcGFydGljaXBhbnRJZDogdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24uZGF0YS5kYXRhPy5wYXJ0aWNpcGFudElkLFxyXG4gICAgICBwYXJ0aWNpcGFudHM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBkaXJlY3Rpb246IFwiaW5jb21pbmctY2FsbFwiLCBidXNpbmVzc051bWJlcjogdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24uZGF0YS5kYXRhPy5jMmNCdXNpbmVzcyA9PSAndHJ1ZScgPyB0cnVlIDogZmFsc2UsIGltZzogdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24uZGF0YS5kYXRhPy5mcm9tSW1hZ2UgfHwgdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24uZGF0YS5kYXRhPy5pbWFnZSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZycsIGlzSW5jb21pbmdDYWxsOiB0cnVlLCBpc0hvbGQ6IGZhbHNlLCBpc0NvbmZlcmVuY2U6IGZhbHNlLCBpc0FjY2VwdENhbGw6IGZhbHNlLCBkaWFsOiB0cnVlLCBwaG9uZTogdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24uZGF0YS5kYXRhPy5mcm9tTnVtYmVyLCB0bzogdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24uZGF0YS5kYXRhPy50b051bWJlcixcclxuICAgICAgICAgIGZyb206IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8uZnJvbU51bWJlciwgZnJvbU5hbWU6IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8uZnJvbU5hbWUsIHBhcnRpY2lwYW50SWQ6IHRoaXMuaW5jb21pbmdDYWxsbm90aWZpY2F0aW9uLmRhdGEuZGF0YT8ucGFydGljaXBhbnRJZCwgbmFtZTogdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24uZGF0YS5kYXRhPy5mcm9tTmFtZSwgdGltZTogJycsIGlkOiB0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbi5kYXRhLmRhdGE/LnBhcnRpY2lwYW50SWQsIGNvbmZlcmVuY2VJZDogdGhpcy5pbmNvbWluZ0NhbGxub3RpZmljYXRpb24/LmRhdGE/LmRhdGE/LmNvbmZlcmVuY2VJZFxyXG4gICAgICAgIH1cclxuICAgICAgXSxcclxuICAgIH1cclxuICAgIHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QgPSBhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0LmZpbHRlcigocmVzOiBhbnkpID0+IHJlcz8uZW5kVGltZSA+IChuZXcgRGF0ZSgpLmdldFRpbWUoKSkpO1xyXG5cclxuICAgIGlmIChjYWxsZXJJbmZvKSB7XHJcbiAgICAgIGluY29taW5nQ2FsbC5wYXJ0aWNpcGFudHNbMF1bJ2VtYWlsJ10gPSBjYWxsZXJJbmZvLmVtYWlsO1xyXG4gICAgICBpbmNvbWluZ0NhbGwucGFydGljaXBhbnRzWzBdWyduYW1lJ10gPSBjYWxsZXJJbmZvLm5hbWU7XHJcbiAgICAgIGluY29taW5nQ2FsbC5wYXJ0aWNpcGFudHNbMF1bJ2ltYWdlJ10gPSBjYWxsZXJJbmZvLmltYWdlO1xyXG4gICAgICBpbmNvbWluZ0NhbGwucGFydGljaXBhbnRzWzBdWydleHRlbnNpb24nXSA9IGNhbGxlckluZm8uZXh0ZW5zaW9uO1xyXG4gICAgICBpbmNvbWluZ0NhbGwucGFydGljaXBhbnRzWzBdWyd1c2VySW5mb0lkJ10gPSBjYWxsZXJJbmZvLmlkO1xyXG4gICAgICBpbmNvbWluZ0NhbGwucGFydGljaXBhbnRzWzBdWydtZXNzYWdlJ10gPSBjYWxsZXJJbmZvLm1lc3NhZ2U7XHJcbiAgICAgIGluY29taW5nQ2FsbC5wYXJ0aWNpcGFudHNbMF1bJ25vdGUnXSA9IGNhbGxlckluZm8ubm90ZTtcclxuICAgICAgaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50c1swXVsnbnVtYmVyJ10gPSBjYWxsZXJJbmZvLm51bWJlcjtcclxuICAgICAgaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50c1swXVsncG9pbnROYW1lJ10gPSBjYWxsZXJJbmZvLnBvaW50TmFtZTtcclxuICAgICAgaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50c1swXVsnc29mdHBob25lVHdpbGlvQXV0aElkJ10gPSBjYWxsZXJJbmZvLnNvZnRwaG9uZVR3aWxpb0F1dGhJZDtcclxuICAgICAgaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50c1swXVsnc291cmNlTmFtZSddID0gY2FsbGVySW5mby5zb3VyY2VOYW1lO1xyXG4gICAgICBpbmNvbWluZ0NhbGwucGFydGljaXBhbnRzWzBdWydzdWJqZWN0J10gPSBjYWxsZXJJbmZvLnN1YmplY3Q7XHJcbiAgICB9XHJcbiAgICBpbmNvbWluZ0NhbGxbJ2VuZFRpbWUnXSA9IChuZXcgRGF0ZSgpLmdldFRpbWUoKSArIDQ1ICogMTAwMCk7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0LnB1c2goaW5jb21pbmdDYWxsKVxyXG4gICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IFsuLi50aGlzLmluY29taW5nQ2FsbHNMaXN0LCAuLi50aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0XVxyXG5cclxuICAgIHRoaXMuY2RrLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGlmICh0aGlzLmluY29taW5nQ2FsbG5vdGlmaWNhdGlvbi5kYXRhLmRhdGE/LnBhcnRpY2lwYW50SWQpIHtcclxuICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZGsuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkTnVtYmVyKG51bTogYW55KSB7XHJcbiAgICBpZiAobnVtID09ICcjJyB8fCBudW0gPT0gJyonIHx8IG51bSA9PSAnKycgfHwgTnVtYmVyLmlzSW50ZWdlcihudW0pKSB7XHJcbiAgICAgIGlmIChudW0gPT0gJyMnKSB7XHJcbiAgICAgICAgbmV3IEF1ZGlvKGAvYXNzZXRzL2RpYWwtdG9uZXMvZHRtZi9kdG1mLWhhc2gtLm1wM2ApLnBsYXkoKTtcclxuICAgICAgfSBlbHNlIGlmIChudW0gPT0gJyonKSB7XHJcbiAgICAgICAgbmV3IEF1ZGlvKGAvYXNzZXRzL2RpYWwtdG9uZXMvZHRtZi9kdG1mLXN0YXItLm1wM2ApLnBsYXkoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXcgQXVkaW8oYC9hc3NldHMvZGlhbC10b25lcy9kdG1mL2R0bWYtJHtudW19LS5tcDNgKS5wbGF5KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGlhbGVkTnVtYmVyICs9IG51bTtcclxuICAgICAgdGhpcy5zaG93SW5wdXRDbGVhckJ0biA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLm51bWJlckRpYWxlZC5lbWl0KHRoaXMuZGlhbGVkTnVtYmVyKTtcclxuXHJcbiAgICAgIHRoaXMub25EaWFsSW5wdXRDaGFuZ2UodGhpcy5kaWFsZWROdW1iZXIpXHJcbiAgICAgIC8vIHRoaXMuZGlhbElucHV0UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH0gZWxzZSBpZiAobnVtID09PSAndm9pY2VtYWlsJykge1xyXG4gICAgICAvLyB0aGlzLnNob3dEZWRpY2F0ZWRQb3B1cCA9IHRydWU7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnZXh0ZW5zaW9uL3ZvaWNlbWFpbC8nICsgdGhpcy50b2tlbl0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZURpYWxwYWQoKSB7XHJcbiAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IHRydWU7XHJcbiAgICB0aGlzLmNsb3NlRGlhbHBhZEV2ZW50LmVtaXQoKTtcclxuICAgIHRoaXMuY2xlYXJBbGxEaWFsZWQoKTtcclxuICAgIHRoaXMuZmlsdGVyZWRDb250YWN0TGlzdCA9IFtdO1xyXG4gIH1cclxuXHJcbiAgb25EaWFsSW5wdXRDaGFuZ2UoaW5wdXRWYWw6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gVXBkYXRlZCByZWdleCB0byBpbmNsdWRlIHgsIFgsIGV4dC4sIEV4dC4sIGFuZCAsXHJcbiAgICAgIGNvbnN0IGlzTnVtZXJpY0lucHV0ID0gL15bXFxkXFxzK1xcLV0rJC8udGVzdChpbnB1dFZhbCk7XHJcbiAgICAgIGxldCBtYWluTnVtYmVyID0gaW5wdXRWYWw7XHJcblxyXG4gICAgICAvLyBDaGVjayBmb3IgZXh0ZW5zaW9uIGluZGljYXRvcnMgYW5kIHNwbGl0IHRoZSBpbnB1dFxyXG4gICAgICBjb25zdCBleHRNYXRjaCA9IGlucHV0VmFsLm1hdGNoKC8oeHxYfGV4dFxcLnxFeHRcXC58LCkoLiopLyk7XHJcbiAgICAgIGlmIChleHRNYXRjaCkge1xyXG4gICAgICAgIG1haW5OdW1iZXIgPSBpbnB1dFZhbC5zdWJzdHJpbmcoMCwgZXh0TWF0Y2guaW5kZXgpLnRyaW0oKTtcclxuICAgICAgICB0aGlzLmNhbGxEYXRhLmV4dE51bSA9IGV4dE1hdGNoWzJdLnRyaW0oKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNhbml0aXplZE51bSA9IGlzTnVtZXJpY0lucHV0ID8gbWFpbk51bWJlci5yZXBsYWNlKC9bXFxzXFwtXSsvZywgJycpIDogbWFpbk51bWJlcjtcclxuXHJcbiAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBpc051bWVyaWNJbnB1dCA/IHRoaXMuc2FuaXRpemVkTnVtIDogJyc7XHJcbiAgICAgIHRoaXMuc2hvd0lucHV0Q2xlYXJCdG4gPSBpbnB1dFZhbC5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgLy8gaWYgKGlzTnVtZXJpY0lucHV0KSB7XHJcbiAgICAgIC8vIHRoaXMuZGlhbGVkTnVtYmVyID0gbmV3IEFzWW91VHlwZSgpLmlucHV0KHRoaXMuc2FuaXRpemVkTnVtKTtcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgLy8gZW1pdCBjdXJyZW50IG51bWJlciB3aGVuZXZlciBpbnB1dCBjaGFuZ2VzXHJcbiAgICAgIHRoaXMubnVtYmVyRGlhbGVkLmVtaXQodGhpcy5kaWFsZWROdW1iZXIpO1xyXG5cclxuICAgICAgaWYgKGlucHV0VmFsLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbnRhY3RMaXN0LmZvckVhY2goY29udGFjdCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBmdWxsTmFtZSA9IGAke2NvbnRhY3QuZmlyc3ROYW1lfSAke2NvbnRhY3QubWlkZGxlTmFtZX0gJHtjb250YWN0Lmxhc3ROYW1lfWAudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgIGlmIChmdWxsTmFtZS5pbmNsdWRlcyh0aGlzLnNhbml0aXplZE51bS50b0xvd2VyQ2FzZSgpKSB8fCBjb250YWN0Lm51bWJlcnNMaXN0LnNvbWUoKG51bTogYW55KSA9PiBudW0ubnVtYmVyLmluY2x1ZGVzKHRoaXMuc2FuaXRpemVkTnVtKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZENvbnRhY3RMaXN0LnB1c2goY29udGFjdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZENvbnRhY3RMaXN0ID0gdGhpcy5maWx0ZXJlZENvbnRhY3RMaXN0LnNsaWNlKDAsIDIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRDb250YWN0TGlzdCA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZpcnN0TGV0dGVyKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbmFtZSA/IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgOiAnJztcclxuICB9XHJcbiAgY2xlYXJJbnB1dCgpIHtcclxuICAgIGlmICh0aGlzLmRpYWxlZE51bWJlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gdGhpcy5kaWFsZWROdW1iZXIuc2xpY2UoMCwgLTEpO1xyXG4gICAgICB0aGlzLnNob3dJbnB1dENsZWFyQnRuID0gdGhpcy5kaWFsZWROdW1iZXIubGVuZ3RoICE9PSAwO1xyXG5cclxuICAgICAgdGhpcy5vbkRpYWxJbnB1dENoYW5nZSh0aGlzLmRpYWxlZE51bWJlcilcclxuICAgIH1cclxuICB9XHJcbiAgY2xlYXJBbGxEaWFsZWQoKSB7XHJcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9ICcnO1xyXG4gICAgdGhpcy5zYW5pdGl6ZWROdW0gPSAnJztcclxuICAgIHRoaXMuc2hvd0lucHV0Q2xlYXJCdG4gPSBmYWxzZTtcclxuICB9XHJcbiAgZ2V0Q2FsbGVySWRMaXN0KCkge1xyXG4gICAgdGhpcy5leHRTZXJ2aWNlLmRpc3BsYXlJRCh0aGlzLnRva2VuIHx8ICcnKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIC8vdGhpcy5jYWxsZXJJZExpc3QgPSByZXMuY2FsbGVySWRMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSA9PT0gXCJDMkMgU29mdHBob25lIE51bWJlclwiKTtcclxuICAgICAgdGhpcy5jYWxsZXJJZExpc3QgPSByZXMuY2FsbGVySWRMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnZvaWNlRmVhdHVyZSA9PT0gdHJ1ZSk7XHJcbiAgICAgIC8vIHRoaXMuY2FsbGVySWRMaXN0ID0gcmVzLmNhbGxlcklkTGlzdDtcclxuICAgICAgdGhpcy5kZXZpY2VOdW1iZXJMaXN0ID0gdGhpcy5jYWxsZXJJZExpc3QubWFwKChyZXM6IGFueSkgPT4gcmVzLm51bWJlcik7XHJcbiAgICAgIGlmICh0aGlzLmNhbGxlcklkTGlzdC5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IHRoaXMuY2FsbGVySWRMaXN0WzBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmNhbGxQcmVmZXJlbmNlID09PSAnYWx3YXlzQXNrJyB8fCB0aGlzLmNhbGxQcmVmZXJlbmNlID09PSAnc21hcnREaWFsaW5nJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0gdGhpcy5jYWxsZXJJZExpc3QuZmluZChpdGVtID0+IChpdGVtLm51bWJlciA9PSB0aGlzLmNhbGxQcmVmZXJlbmNlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0Q29udGFjdExpc3QoKSB7XHJcbiAgICB0aGlzLnR3aWxpb1NlcnZpY2UuZ2V0Q29udGFjdExpc3QoKS5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcC5yZXNwb25zZSA9PSAnU3VjY2VzcycpIHtcclxuICAgICAgICB0aGlzLmNvbnRhY3RMaXN0ID0gcmVzcC5waG9uZUJvb2s7XHJcbiAgICAgIH1cclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycilcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldEZ1bGxOYW1lKGNvbnRhY3Q6IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgZnVsbE5hbWUgPSBjb250YWN0LmZpcnN0TmFtZSB8fCAnJztcclxuICAgIGlmIChjb250YWN0Lm1pZGRsZU5hbWUpIHtcclxuICAgICAgZnVsbE5hbWUgKz0gYCAke2NvbnRhY3QubWlkZGxlTmFtZX1gO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbnRhY3QubGFzdE5hbWUpIHtcclxuICAgICAgZnVsbE5hbWUgKz0gYCAke2NvbnRhY3QubGFzdE5hbWV9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBmdWxsTmFtZS50cmltKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdG9nZ2xlQ2FsbGVySWREaXYoKSB7XHJcbiAgICB0aGlzLmlzQ2FsbGVySWRIaWRkZW4gPSAhdGhpcy5pc0NhbGxlcklkSGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgb25Db250YWN0U2VsZWN0KGNvbnRhY3Q6IGFueSkge1xyXG4gICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcnNMaXN0WzBdLm51bWJlcjtcclxuICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IHRoaXMuZ2V0RnVsbE5hbWUoY29udGFjdCk7XHJcbiAgICB0aGlzLmNhbGxEYXRhLmltZyA9IGNvbnRhY3QuaW1hZ2UgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnO1xyXG4gICAgdGhpcy5vbkRpYWxJbnB1dENoYW5nZSh0aGlzLmRpYWxlZE51bWJlcik7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcclxuICB9XHJcblxyXG4gIGVuZENhbGwoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zb2xlLmxvZygnRW5kaW5nIGNhbGwnKTtcclxuICAgICAgY29uc29sZS5sb2coJ2RkOCcpXHJcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcclxuXHJcbiAgICAgIC8vIFJlc2V0IGNhbGwgZGF0YVxyXG4gICAgICB0aGlzLmNhbGxEYXRhID0ge1xyXG4gICAgICAgIHBob25lOiAnJyxcclxuICAgICAgICBuYW1lOiAnJyxcclxuICAgICAgICBpbWc6ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJyxcclxuICAgICAgICBpc0luY29taW5nQ2FsbDogZmFsc2UsXHJcbiAgICAgICAgZGlhbDogZmFsc2UsXHJcbiAgICAgICAgZGlzcGxheU51bTogJycsXHJcbiAgICAgICAgZXh0TnVtOiAnJ1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gUmVzZXQgZGlhbGVkIG51bWJlclxyXG4gICAgICB0aGlzLmRpYWxlZE51bWJlciA9ICcnO1xyXG4gICAgICB0aGlzLnNhbml0aXplZE51bSA9ICcnO1xyXG4gICAgICAvLyB0aGlzLnR3aWxpb1NlcnZpY2UuZGV2aWNlLmRpc2Nvbm5lY3RBbGwoKVxyXG4gICAgICAvLyBFbWl0IGVuZCBjYWxsIGV2ZW50XHJcbiAgICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcclxuICAgICAgY29uc29sZS5sb2coJ0NhbGwgZW5kZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcblxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZW5kQ2FsbDonLCBlcnJvcik7XHJcbiAgICAgIC8vIEV2ZW4gaWYgdGhlcmUncyBhbiBlcnJvciwgdHJ5IHRvIHJlc2V0IHRoZSBzdGF0ZVxyXG4gICAgICBjb25zb2xlLmxvZygnZGQ5JylcclxuICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2FsbERhdGEgPSB7XHJcbiAgICAgICAgcGhvbmU6ICcnLFxyXG4gICAgICAgIG5hbWU6ICcnLFxyXG4gICAgICAgIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnLFxyXG4gICAgICAgIGlzSW5jb21pbmdDYWxsOiBmYWxzZSxcclxuICAgICAgICBkaWFsOiBmYWxzZSxcclxuICAgICAgICBkaXNwbGF5TnVtOiAnJyxcclxuICAgICAgICBleHROdW06ICcnXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRpYXRlQ2FsbCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5kaWFsZWROdW1iZXIgJiYgdGhpcy5sYXN0RGlhbGVkKSB7XHJcbiAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSB0aGlzLmxhc3REaWFsZWQubnVtYmVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBpc0ludmFsaWQgPSBhd2FpdCB0aGlzLmlzSW52YWxpZE51bWJlcigpO1xyXG4gICAgICBpZiAoaXNJbnZhbGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2F2ZUxhc3REaWFsZWQoKTtcclxuICAgICAgdGhpcy5pc1NhdmVkQ29udGFjdERpYWxsZWQoKTtcclxuXHJcbiAgICAgIHRoaXMuaXNQYXltZW50RHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BheW1lbnREdWUnKSA9PT0gJ2ZhbHNlJyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuaXNQYXltZW50RHVlKSB7XHJcbiAgICAgICAgc3dhbCgnV2FybmluZycsICdQbGVhc2Ugbm90ZSB0aGF0IHlvdXIgcGF5bWVudCBpcyBkdWUsIFRvIGNvbnRpbnVlIG9uIHlvdXIgc2VydmljZXMga2luZGx5IHN1YnNjcmliZSB0byB1c2UgdW5pbnRlcnJ1cHRlZCBzZXJ2aWNlcy4nKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNUcmlhbFBlcmlvZE92ZXIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHJpYWxPdmVyJykgPT09ICdmYWxzZScgPyBmYWxzZSA6IHRydWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5zYW5pdGl6ZWROdW0gPT09IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0d2lsaW9OdW1iZXInKSkge1xyXG4gICAgICAgIHN3YWwoJ0Vycm9yJywgJ1lvdSBjYW4gbm90IGRpYWwgdGhpcyBudW1iZXInKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGhhc1Blcm1pc3Npb24gPSBhd2FpdCB0aGlzLmNoZWNrTWljcm9waG9uZVBlcm1pc3Npb24oKTtcclxuICAgICAgaWYgKCFoYXNQZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5hc2tGb3JNaWNyb3Bob25lUGVybWlzc2lvbigpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0xvYWRlcnNob3cgPSB0cnVlO1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYWxsZXJJZCkge1xyXG4gICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnU2VsZWN0IGEgQzJDIG51bWJlciB0byBjYWxsJyk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2U7XHJcbiAgICAgICAgfSwgMzAwMCk7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRlcnNob3cgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgLy8gQ2xlYXIgZGlzcGxheU51bSBpZiB2YWx1ZSBpcyBib3VuZCBmcm9tIHByZXZpb3VzIGNhbGxcclxuICAgICAgdGhpcy5jYWxsRGF0YS5kaXNwbGF5TnVtID0gJyc7XHJcblxyXG4gICAgICAvLyBHZXQgbnVtYmVyIHRvIGJlIGRpYWxlZCBmcm9tIGJhY2tlbmRcclxuICAgICAgYXdhaXQgdGhpcy5nZXRUb051bWJlcih0aGlzLnNhbml0aXplZE51bSk7XHJcbiAgICAgIGlmICh0aGlzLnRlcm1pbmF0ZUNhbGwpIHtcclxuICAgICAgICB0aGlzLnRlcm1pbmF0ZUNhbGwgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFVwZGF0ZSBjYWxsIGRhdGEgaW4gYSBzaW5nbGUgb3BlcmF0aW9uXHJcbiAgICAgIHRoaXMuY2FsbERhdGEgPSB7XHJcbiAgICAgICAgLi4udGhpcy5jYWxsRGF0YSxcclxuICAgICAgICBwaG9uZTogdGhpcy5zYW5pdGl6ZWROdW0sXHJcbiAgICAgICAgaXNJbmNvbWluZ0NhbGw6IGZhbHNlLFxyXG4gICAgICAgIGRpYWw6IHRydWUsXHJcbiAgICAgICAgZnJvbTogdGhpcy5pc1NtYXJ0RGlhbENhbGwgPyB0aGlzLmNhbGxEYXRhLmZyb20gOiB0aGlzLnNlbGVjdGVkQ2FsbGVySWQubnVtYmVyLFxyXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zb2xlLmxvZygnZGQxMCcpXHJcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2FsbEluaXRpYXRlZC5lbWl0KHsgLi4udGhpcy5jYWxsRGF0YSB9KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBpbml0aWF0ZUNhbGw6JywgZSk7XHJcbiAgICAgIHRoaXMuaXNMb2FkZXJzaG93ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnRmFpbGVkIHRvIGluaXRpYXRlIGNhbGwuIFBsZWFzZSB0cnkgYWdhaW4uJyk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkZDExJylcclxuICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGlzSW52YWxpZE51bWJlcigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnNhbml0aXplZE51bSA9PSAnJykge1xyXG4gICAgICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnSW52YWxpZCBOdW1iZXInKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWxpZE51bWJlclBhdHRlcm4gPSAvXlsrXFxkXFxzKCktXSokLzsgLy8gUmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIHZhbGlkIGNoYXJhY3RlcnNcclxuICAgICAgY29uc3QgcGhvbmVOdW1iZXIgPSB0aGlzLnNhbml0aXplZE51bTtcclxuICAgICAgaWYgKCF2YWxpZE51bWJlclBhdHRlcm4udGVzdChwaG9uZU51bWJlcikpIHtcclxuICAgICAgICB0aGlzLnNob3dEaWFsQWxlcnQoJ0ludmFsaWQgTnVtYmVyJyk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdJbnZhbGlkIE51bWJlcicpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gUmV0dXJuIHRydWUgaWYgYW4gZXJyb3Igb2NjdXJyZWQsIG1lYW5pbmcgdGhlIG51bWJlciBpcyBpbnZhbGlkXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlTGFzdERpYWxlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRhY3QgPSB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QuZmluZCgoYzogYW55KSA9PiBjLm51bWJlcnNMaXN0LnNvbWUoKG46IGFueSkgPT4gbi5udW1iZXIgPT09IHRoaXMuZGlhbGVkTnVtYmVyKSk7XHJcbiAgICBpZiAoY29udGFjdCkge1xyXG4gICAgICB0aGlzLmxhc3REaWFsZWQgPSB7XHJcbiAgICAgICAgbmFtZTogY29udGFjdC5uYW1lLFxyXG4gICAgICAgIGltYWdlOiBjb250YWN0LmltYWdlLFxyXG4gICAgICAgIG51bWJlcjogdGhpcy5kaWFsZWROdW1iZXJcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRpYWxlZE51bWJlcikge1xyXG4gICAgICAgIHRoaXMubGFzdERpYWxlZCA9IHsgbnVtYmVyOiB0aGlzLmRpYWxlZE51bWJlciB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBpc1NhdmVkQ29udGFjdERpYWxsZWQoKSB7XHJcbiAgICBsZXQgcGhvbmVOdW0gPSB0aGlzLnNhbml0aXplZE51bS5yZXBsYWNlKC9cXHMrL2csICcnKTtcclxuICAgIGxldCBjb250YWN0ID0gdGhpcy5jb250YWN0TGlzdC5maWx0ZXIoKGNvbnRhY3Q6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gY29udGFjdC5udW1iZXJzTGlzdC5zb21lKChudW06IGFueSkgPT4gbnVtLm51bWJlciA9PT0gcGhvbmVOdW0pXHJcbiAgICB9KTtcclxuICAgIGlmIChjb250YWN0Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBgJHtjb250YWN0WzBdLmZpcnN0TmFtZX0gJHtjb250YWN0WzBdLm1pZGRsZU5hbWV9ICR7Y29udGFjdFswXS5sYXN0TmFtZX1gLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gY29udGFjdFswXS5pbWFnZSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XHJcbiAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSB0aGlzLnNhbml0aXplZE51bTtcclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBzaG93RGlhbEFsZXJ0KG1lc3NhZ2U6IHN0cmluZykge1xyXG4gICAgdGhpcy5kaWFsQWxlcnQgPSB7XHJcbiAgICAgIG1zZzogbWVzc2FnZSxcclxuICAgICAgc2hvdzogdHJ1ZVxyXG4gICAgfTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRpYWxBbGVydC5zaG93ID0gZmFsc2U7XHJcbiAgICB9LCAzMDAwKTtcclxuICB9XHJcbiAgYXN5bmMgaXNDYWxsZXJJZFNldCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHRrbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKTtcclxuICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCB0aGlzLmV4dFNlcnZpY2UuZmV0Y2hDYWxsZXJJZCh0a24gfHwgJycpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBpZiAocmVzLnN0YXR1cyA9PSAyMDApIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndHJpYWxPdmVyJywgcmVzLnRyaWFsT3Zlcik7XHJcbiAgICAgICAgdGhpcy50d2lsaW9TZXJ2aWNlLmlzVHJpYWxPdmVyLm5leHQocmVzLnRyaWFsT3Zlcik7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3BheW1lbnREdWUnLCByZXMucGF5bWVudER1ZSk7XHJcbiAgICAgICAgdGhpcy50d2lsaW9TZXJ2aWNlLmlzUGF5bWVudER1ZS5uZXh0KHJlcy5wYXltZW50RHVlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzLmNhbGxlcmlkKSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhbGxlcklEJywgcmVzLmNhbGxlcmlkKTtcclxuXHJcbiAgICAgICAgdGhpcy5leHRTZXJ2aWNlLmNoYW5nZU1lc3NhZ2UocmVzLmNhbGxlcmlkKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2FsbGVySUQnLCAnTm90IHNldCcpO1xyXG4gICAgICAgIHRoaXMuZXh0U2VydmljZS5jaGFuZ2VNZXNzYWdlKCdOb3Qgc2V0Jyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NhbGxlcklEJykgIT09ICdOb3Qgc2V0Jyk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIGNoZWNrTWljcm9waG9uZVBlcm1pc3Npb24oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0pO1xyXG4gICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGlmICgoZXJyb3IgYXMgYW55KS5uYW1lID09PSAnTm90QWxsb3dlZEVycm9yJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYXN5bmMgYXNrRm9yTWljcm9waG9uZVBlcm1pc3Npb24oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0pO1xyXG4gICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignVXNlciBkZW5pZWQgbWljcm9waG9uZSBwZXJtaXNzaW9uOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gYmVsb3cgZnVuY3Rpb24gaXMgdG8gZ2V0IHRoZSBjb3VudHJ5IGNvZGUgd2l0aCBudW1iZXIgZnJvbSBzZXJ2ZXIgXHJcbiAgYXN5bmMgZ2V0VG9OdW1iZXIoZGlhbGVkTnVtYmVyOiBzdHJpbmcpIHtcclxuXHJcbiAgICBpZiAoZGlhbGVkTnVtYmVyWzBdICE9PSAnKycpIHtcclxuICAgICAgLy8gdGhpcyBpcyBjYXNlIHdoZW4gdXNlciBnZW9sb2NhdGlvbiBkaWFsIGNvZGUgaXMgb25cclxuICAgICAgbGV0IGlwQWRkcmVzczogYW55ID0gYXdhaXQgdGhpcy5pcFNlcnZpY2UuZ2V0SXBBZGRyZXNzSW5mbygpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHRoaXMudHdpbGlvU2VydmljZS5nZXRUb051bWJlcihkaWFsZWROdW1iZXIsIGlwQWRkcmVzcy5hZGRyZXNzLmNvdW50cnlDb2RlKS50b1Byb21pc2UoKTtcclxuICAgICAgaWYgKHJlcy5zdGF0dXMgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdFRpbWVvdXQgPSByZXMudGltZUludGVydmFsICogMTAwMDtcclxuICAgICAgICBhd2FpdCB0aGlzLnNob3dOdW1iZXJUb2FzdChyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlzQWxlcnRFbmFibGUoKSB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2lzQWxlcnRFbmFibGUnKTtcclxuICB9XHJcbiAgYXN5bmMgc2hvd051bWJlclRvYXN0KGRhdGE6IGFueSkge1xyXG4gICAgLy8gY29uc3QgaXNBbGVydE9uID0gKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdpc0NvdW50cnlDb2RlVG9hc3RPbicpKTtcclxuICAgIC8vIGlmIChpc0FsZXJ0T24gPT0gJ3RydWUnKSB7XHJcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5zaG93ID0gdHJ1ZTtcclxuICAgIHRoaXMuY2FsbE51bWJlclRvYXN0Lm51bWJlciA9IGRhdGEudG9OdW1iZXI7XHJcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5kaXNwbGF5TnVtID0gZGF0YS5kaXNwbGF5TnVtYmVyO1xyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgICB0aGlzLmNhbGxEYXRhLmRpc3BsYXlOdW0gPSBkYXRhLmRpc3BsYXlOdW1iZXI7XHJcbiAgICAvL3RoaXMuY2FsbERhdGEucGhvbmUgPSBkYXRhLnRvTnVtYmVyO1xyXG4gICAgYXdhaXQgdGhpcy5kZWxheSh0aGlzLnRvYXN0VGltZW91dCk7XHJcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9IGRhdGEudG9OdW1iZXI7XHJcbiAgICB0aGlzLnNhbml0aXplZE51bSA9IGRhdGEudG9OdW1iZXI7XHJcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5zaG93ID0gZmFsc2U7XHJcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5udW1iZXIgPSAnJztcclxuICAgIHRoaXMuY2FsbE51bWJlclRvYXN0LmRpc3BsYXlOdW0gPSAnJztcclxuICB9XHJcbiAgZGVsYXkobXM6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xyXG4gIH1cclxuICBpc01pbmltaXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9uTWluaW1pc2UoaXNNaW5pbWlzZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNNaW5pbWlzZWQgPSBpc01pbmltaXNlZDtcclxuICAgIHRoaXMubWluaW1pc2VFdmVudC5lbWl0KGlzTWluaW1pc2VkKTtcclxuICB9XHJcbiAgaGFuZGxlTnVtYmVyUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGEgfHwgKHdpbmRvdyBhcyBhbnkpLmNsaXBib2FyZERhdGE7XHJcbiAgICBjb25zdCBwYXN0ZWREYXRhID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XHJcblxyXG4gICAgLy8gTG9nIHRoZSBwYXN0ZWQgY29udGVudCB0byB0aGUgY29uc29sZVxyXG4gICAgaWYgKHBhc3RlZERhdGEpIHtcclxuICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBwYXN0ZWREYXRhO1xyXG4gICAgICB0aGlzLnNhbml0aXplZE51bSA9IHBhc3RlZERhdGE7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25Mb2FkZXJzaG93KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuaXNMb2FkZXJzaG93ID0gZmFsc2U7XHJcbiAgfVxyXG4gIG9uRW50ZXIobnVtOiBzdHJpbmcpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKG51bSwgJ251bWJlciBmbicpXHJcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9IHRoaXMuZGlhbGVkTnVtYmVyICsgbnVtO1xyXG4gICAgdGhpcy5zYW5pdGl6ZWROdW0gPSB0aGlzLmRpYWxlZE51bWJlcjtcclxuICAgIHRoaXMuc2hvd0lucHV0Q2xlYXJCdG4gPSB0cnVlO1xyXG4gICAgdGhpcy5udW1iZXJEaWFsZWQuZW1pdCh0aGlzLmRpYWxlZE51bWJlcik7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyQ2FsbFNldHRpbmcoKSB7XHJcbiAgICBjb25zdCB0a24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJyk7XHJcbiAgICB0aGlzLmV4dFNlcnZpY2UuZmV0Y2hDYWxsZXJJZCh0a24gfHwgJycpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwLnN0YXR1cyA9PSAyMDApIHtcclxuICAgICAgICAvL3RoaXMuY2FsbFByZWZlcm5jZSA9IHJlc3AudXNlclNldHRpbmc7XHJcbiAgICAgICAgdGhpcy5jYWxsUHJlZmVyZW5jZSA9IHJlc3AuY2FsbGVyaWQ7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0Q2FsbGVySWRMaXN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG9uRGVkaWNhdGVkTnVtU2VsZWN0KGlkOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IGlkO1xyXG4gICAgdGhpcy5pc0NhbGxlcklkSGlkZGVuID0gdHJ1ZTtcclxuICAgIHRoaXMuZXh0U2VydmljZS5zZXRDYWxsZXJJZChpZCk7XHJcbiAgfVxyXG4gIGNhbmNlbERpYWxOdW1iZXIoKSB7XHJcbiAgICB0aGlzLnRlcm1pbmF0ZUNhbGwgPSB0cnVlO1xyXG4gICAgdGhpcy5jYWxsTnVtYmVyVG9hc3Quc2hvdyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRGl2S2V5ZG93bihldjogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kaWFsZWROdW1iZXIubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5kaWFsSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICAgIGlmIChldi5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGRpYWxwYWQgaXMgb3BlblxyXG4gICAgICBpZiAoIXRoaXMuaXNEaWFscGFkSGlkZGVuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbGVkTnVtYmVyLmxlbmd0aCA+IDIgJiYgdGhpcy5zZWxlY3RlZENhbGxlcklkKSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRpYXRlQ2FsbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYWxsZXJJZCkge1xyXG4gICAgICAgICAgdGhpcy5zaGFrZURlZGljYXRlZEJ0biA9IHRydWU7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaGFrZURlZGljYXRlZEJ0biA9IGZhbHNlO1xyXG4gICAgICAgICAgfSwgMTAwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBvbkNhbGxCdG5Nb3VzZUVudGVyKGV2OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZENhbGxlcklkIHx8ICh0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycpIHx8ICh0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPT0gJ3NtYXJ0RGlhbGluZycpKSB7XHJcbiAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgb25DYWxsQnRuTW91c2VMZWF2ZShldjogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYWxsZXJJZCB8fCAodGhpcy5zZWxlY3RlZENhbGxlcklkID09ICdhbHdheXNBc2snKSB8fCAodGhpcy5zZWxlY3RlZENhbGxlcklkID09ICdzbWFydERpYWxpbmcnKSkge1xyXG4gICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmRJbmNvbWluZ0NhbGwoaW5jb21pbmdDYWxsOiBhbnkpIHtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uQ2FsbExpc3QgPSB0aGlzLm5vdGlmaWNhdGlvbkNhbGxMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5wYXJ0aWNpcGFudElkICE9PSBpbmNvbWluZ0NhbGwucGFydGljaXBhbnRJZCk7XHJcbiAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8ucGFydGljaXBhbnRJZCAhPT0gaW5jb21pbmdDYWxsLnBhcnRpY2lwYW50SWQpO1xyXG4gICAgdGhpcy5pbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZS5wYXVzZSgpO1xyXG4gICAgdGhpcy5jZGsuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBhY2NlcHROZXdJbmNvbWluZ0NhbGwoY2FsbDogQ2FsbCkge1xyXG4gICAgLy9maXJzdCBjdXQgdGhlIGN1cnJlbnQgY2FsbFxyXG4gICAgLy90aGlzLmNhbGxEYXRhID0gY2FsbDtcclxuICAgIHRoaXMubmV3SW5jb21pbmdDYWxsRGF0YSA9IGNhbGw7XHJcbiAgfVxyXG4gIHJlamVjdE5ld0luY29taW5nQ2FsbChjYWxsOiBDYWxsKSB7XHJcbiAgICBjYWxsLnJlamVjdCgpO1xyXG4gICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzID0gdGhpcy5uZXdJbmNvbWluZ0NhbGxzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gY2FsbC5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xyXG4gICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVycy5DYWxsU2lkICE9PSBjYWxsLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XHJcbiAgfVxyXG4gIG5ld0luY29taW5nQ2FsbEluaXRpYXRlZCgpIHtcclxuICAgIGNvbnNvbGUubG9nKCdkZDEyJylcclxuICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICB0aGlzLm5ld0luY29taW5nQ2FsbHMgPSBbXTtcclxuICAgIHRoaXMuaW5jb21pbmdDYWxsSW5pdGlhdGVkLmVtaXQoKTtcclxuICB9XHJcbiAgaW5jb21pbmdDYWxsc05ld0luZm8oZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gZGF0YTtcclxuICAgIHRoaXMuaW5jb21pbmdDYWxsc05ld0luZm9FdmVudC5lbWl0KGRhdGEpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdDbGVhbmluZyB1cCBDMmNEaWFscGFkQ29tcG9uZW50Jyk7XHJcblxyXG4gICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXHJcbiAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBDbGVhbiB1cCBUd2lsaW8gZGV2aWNlIHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3llZFxyXG4gICAgICBpZiAodGhpcy50d2lsaW9TZXJ2aWNlWydkZXZpY2UnXSkge1xyXG4gICAgICAgIHRoaXMudHdpbGlvU2VydmljZVsnZGV2aWNlJ10uZGVzdHJveSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBFbmQgYW55IGFjdGl2ZSBjYWxsXHJcbiAgICAgIGlmICh0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MpIHtcclxuICAgICAgICB0aGlzLmVuZENhbGwoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2xlYXIgYW55IHRpbWVvdXRzIG9yIGludGVydmFscyBpZiB0aGV5IGV4aXN0XHJcbiAgICAgIGlmICh0aGlzLnRvYXN0VGltZW91dCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRvYXN0VGltZW91dCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKCdDMmNEaWFscGFkQ29tcG9uZW50IGNsZWFudXAgY29tcGxldGUnKTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkdXJpbmcgY29tcG9uZW50IGNsZWFudXA6JywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGlkPVwiZHJhZ3BhcmVudDFcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOmlzRGlhbHBhZEhpZGRlbiA/ICdub25lJzogJ2Jsb2NrJ31cIj5cclxuICA8bGliLWNhbGwtcHJvZ3Jlc3MgKm5nSWY9XCJpc0NhbGxJblByb2dyZXNzXCIgKGVuZENhbGxFdmVudCk9XCJlbmRDYWxsKClcIiAobWluaW1pc2VFdmVudCk9XCJvbk1pbmltaXNlKCRldmVudClcIlxyXG4gICAgKGluY29taW5nQ2FsbEluaXRpYXRlZCk9XCJuZXdJbmNvbWluZ0NhbGxJbml0aWF0ZWQoKVwiIFtuZXdJbmNvbWluZ0NhbGxEYXRhXT1cIm5ld0luY29taW5nQ2FsbERhdGFcIlxyXG4gICAgW2RldmljZUlkXT1cImRldmljZUlkXCIgW25ld0luY29taW5nQ2FsbHNMaXN0XT1cImluY29taW5nQ2FsbHNMaXN0XCJcclxuICAgIChpbmNvbWluZ0NhbGxzTmV3SW5mbyk9XCJpbmNvbWluZ0NhbGxzTmV3SW5mbygkZXZlbnQpXCIgW3NlbGVjdGVkQ2FsbGVySWRdPVwic2VsZWN0ZWRDYWxsZXJJZFwiXHJcbiAgICBbY2FsbGVySWRMaXN0XT1cImNhbGxlcklkTGlzdFwiIFtjYWxsQWN0aW9uXT1cImNhbGxBY3Rpb25cIiBbY29uZmVyZW5jZUNhbGxJbmZvXT1cImNvbmZlcmVuY2VDYWxsSW5mb1wiXHJcbiAgICAoZW5kSW5jb21pbmdDYWxsRXZlbnQpPVwiZW5kSW5jb21pbmdDYWxsKCRldmVudClcIiAoaXNMb2FkZXJzaG93KT1cIm9uTG9hZGVyc2hvdygkZXZlbnQpXCIgW2NhbGxEYXRhXT1cImNhbGxEYXRhXCI+XHJcbiAgPC9saWItY2FsbC1wcm9ncmVzcz5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImxvYWRlci13cmFwcGVyXCIgKm5nSWY9XCIoIWlzQ2FsbEluUHJvZ3Jlc3MgfHwgIWluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCkgJiYgaXNMb2FkZXJzaG93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gPGJ1dHRvbiAoY2xpY2spPVwiaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWVcIj5jYWxsPC9idXR0b24+IC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJkaWFscGFkLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnbWluaS1kaWFscGFkJzogaXNNaW5pbWlzZWR9XCJcclxuICAgICpuZ0lmPVwiIWlzQ2FsbEluUHJvZ3Jlc3MgfHwgIWluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aFwiIHRhYmluZGV4PVwiMFwiIChrZXlkb3duKT1cImhhbmRsZURpdktleWRvd24oJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBpZD1cInRvcFBhbmVsXCIgW25nU3R5bGVdPVwieydoZWlnaHQnOiBjYWxsZXJJZExpc3QubGVuZ3RoID8gJzQwJScgOiAnMzklJ31cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRpYWxwYWQtYWxlcnRzXCIgKm5nSWY9XCJkaWFsQWxlcnQuc2hvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuby1zZWxlY3Rpb24tYWxlcnRcIj5cclxuICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJtYi0wXCI+U2VsZWN0IEMyQyBudW1iZXIgdG8gY2FsbDwvcD4gLS0+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj57e2RpYWxBbGVydC5tc2d9fTwvcD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtdGltZXNcIiAoY2xpY2spPVwic2hha2VEZWRpY2F0ZWRCdG4gPSBmYWxzZVwiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFscGFkLWFsZXJ0c1wiICpuZ0lmPVwiY2FsbE51bWJlclRvYXN0LnNob3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbGJveC1wb3AxIGFsZXJ0IGZhZGUgc2hvd1wiIFtuZ0NsYXNzXT1cImNhbGxOdW1iZXJUb2FzdC50eXBlXCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBteS1hdXRvIHRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgIFlvdSdyIGNhbGxpbmcgPHN0cm9uZz57e2NhbGxOdW1iZXJUb2FzdC5kaXNwbGF5TnVtfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBidG4tZGlzYyBwLTAgcHgtMVwiIChjbGljayk9XCJjYW5jZWxEaWFsTnVtYmVyKClcIj5DYW5jZWwgQ2FsbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc3VjY2VzcyBidG4tZGlzYyBwLTAgcHgtMlwiPkNvbnRpbnVlPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDE4cHhcIiAocGFzdGUpPVwiaGFuZGxlTnVtYmVyUGFzdGUoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMlwiPlxyXG4gICAgICAgICAgPHA+PC9wPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGRpYWwtY2xvc2UtYnRuXCIgKGNsaWNrKT1cImhpZGVEaWFscGFkKClcIj5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiIGZpbGw9XCIjZmZmZmZmXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJtMjU2LTIwMC01Ni01NiAyMjQtMjI0LTIyNC0yMjQgNTYtNTYgMjI0IDIyNCAyMjQtMjI0IDU2IDU2LTIyNCAyMjQgMjI0IDIyNC01NiA1Ni0yMjQtMjI0LTIyNCAyMjRaXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWJveFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgI2RpYWxJbnB1dCBwbGFjZWhvbGRlcj1cIkVudGVyIGEgbmFtZSBvciBudW1iZXJcIiB0YWJpbmRleD1cIjFcIiBbKG5nTW9kZWwpXT1cImRpYWxlZE51bWJlclwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGlhbElucHV0Q2hhbmdlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJcIiBpZD1cImlucHV0LWNsZWFyLWJ0blwiIChjbGljayk9XCJjbGVhcklucHV0KClcIiAqbmdJZj1cInNob3dJbnB1dENsZWFyQnRuXCI+XHJcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI1MHB4XCIgaGVpZ2h0PVwiMzBweFwiIHZpZXdCb3g9XCIwIDEwIDQwIDYwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgdmVyc2lvbj1cIjEuMVwiIGJhc2VQcm9maWxlPVwiZnVsbFwiXHJcbiAgICAgICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDc2LjAwIDc2LjAwXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cclxuICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiIzVkNjA2MVwiIGZpbGwtb3BhY2l0eT1cIjFcIiBzdHJva2Utd2lkdGg9XCIwLjJcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICBkPVwiTSA0Ny41MjgyLDQyLjk0OTdMIDQyLjU3ODQsMzhMIDQ3LjUyODIsMzMuMDUwMkwgNDQuOTQ5NywzMC40NzE4TCA0MCwzNS40MjE2TCAzNS4wNTAyLDMwLjQ3MThMIDMyLjQ3MTgsMzMuMDUwMkwgMzcuNDIxNiwzOEwgMzIuNDcxOCw0Mi45NDk3TCAzNS4wNTAyLDQ1LjUyODJMIDQwLDQwLjU3ODRMIDQ0Ljk0OTcsNDUuNTI4MkwgNDcuNTI4Miw0Mi45NDk3IFogTSAxOC4wMTQ3LDQxLjUzNTVMIDI2Ljk2NDYsNTAuNDg1NEMgMjguMDY4Myw1MS41ODkgMjksNTIgMzEsNTJMIDUyLDUyQyA1NC43NjE0LDUyIDU3LDQ5Ljc2MTQgNTcsNDdMIDU3LDI5QyA1NywyNi4yMzg2IDU0Ljc2MTQsMjQgNTIsMjRMIDMxLDI0QyAyOSwyNCAyOC4wNjgzLDI0LjQxMTMgMjYuOTY0NiwyNS41MTQ5TCAxOC4wMTQ3LDM0LjQ2NDVDIDE2LjA2MjEsMzYuNDE3MSAxNi4wNjIxLDM5LjU4MjkgMTguMDE0Nyw0MS41MzU1IFogTSAzMSw0OUMgMzAsNDkgMjkuNjA0OCw0OC44ODI4IDI5LjA4Niw0OC4zNjQxTCAyMC4xMzYxLDM5LjQxNDJDIDE5LjM1NSwzOC42MzMyIDE5LjM1NSwzNy4zNjY5IDIwLjEzNjEsMzYuNTg1OEwgMjkuMDg2LDI3LjYzNjJDIDI5LjYwNDgsMjcuMTE3NSAzMCwyNyAzMSwyNy4wMDAxTCA1MiwyNy4wMDAxQyA1My4xMDQ2LDI3LjAwMDEgNTQsMjcuODk1NSA1NCwyOS4wMDAxTCA1NCw0Ny4wMDAxQyA1NCw0OC4xMDQ2IDUzLjEwNDYsNDkuMDAwMSA1Miw0OS4wMDAxTCAzMSw0OSBaIFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1pbmZvLWljb25cIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiB0b29sdGlwQ2xhc3M9XCJpbnB1dC10b29sdGlwXCJcclxuICAgICAgICAgICAgbmdiVG9vbHRpcD1cIkZvciBleHRlbnNpb24gZGlhbGluZywgdXNlIGZvcm1hdHMgbGlrZSArMTIzNDU2Nzg5MTAgeDEyMywrMTIzNDU2Nzg5MTAgZXh0LjEyMywgKzEyMzQ1Njc4OTEwLDEyM1wiPjxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImd1aWRlXCIgKm5nSWY9XCJjYWxsZXJJZExpc3QubGVuZ3RoICYmICEoZGlhbGVkTnVtYmVyLmxlbmd0aCA+IDIpXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImd1aWRldGV4dFwiPlBsZWFzZSBlbnRlciBhIG51bWJlciBvciBzZWxlY3QgYSBzYXZlZCBjb250YWN0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlucHV0LWVycm9yXCIgKm5nSWY9XCJkaWFsQWxlcnQuc2hvd1wiPlxyXG4gICAgICAgICAgPHNwYW4+e3tkaWFsQWxlcnQubXNnfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1jYXJkXCIgKm5nRm9yPVwibGV0IGNvbnRhY3Qgb2YgZmlsdGVyZWRDb250YWN0TGlzdFwiIChjbGljayk9XCJvbkNvbnRhY3RTZWxlY3QoY29udGFjdClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtaW1nXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImNvbnRhY3QuaW1hZ2VcIiBhbHQ9XCJ1c2VyIGltYWdlXCIgbG9hZGluZz1cImxhenlcIiAqbmdJZj1cImNvbnRhY3QuaW1hZ2UgZWxzZSBhbHBoYU5hbWVcIiAvPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWxwaGFOYW1lPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250YWN0LWFscGhhLWltZ1wiPnt7Z2V0Rmlyc3RMZXR0ZXIoY29udGFjdC5maXJzdE5hbWUpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0LWRldGFpbHNcIj5cclxuICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDRweFwiIGNsYXNzPVwiY29udGFjdC1uYW1lXCI+e3tnZXRGdWxsTmFtZShjb250YWN0KSB9fTwvcD5cclxuICAgICAgICAgICAgICA8cD57e2NvbnRhY3QubnVtYmVyc0xpc3RbMF0ubnVtYmVyfX08L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2F2ZS1jb250YWluZXJcIj5cclxuICAgICAgICA8c3ZnIGNsYXNzPVwid2F2ZXNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcclxuICAgICAgICAgIHZpZXdCb3g9XCIwIDI0IDE1MCAyOFwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCIgc2hhcGUtcmVuZGVyaW5nPVwiYXV0b1wiPlxyXG4gICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgIDxwYXRoIGlkPVwiZ2VudGxlLXdhdmVcIiBkPVwiTS0xNjAgNDRjMzAgMCA1OC0xOCA4OC0xOHMgNTggMTggODggMTggNTgtMTggODgtMTggNTggMTggODggMTggdjQ0aC0zNTJ6XCIgLz5cclxuICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgIDxnIGNsYXNzPVwicGFyYWxsYXhcIj5cclxuICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjBcIiBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjcpXCIgLz5cclxuICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjNcIiBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjUpXCIgLz5cclxuICAgICAgICAgICAgPCEtLSA8dXNlXHJcbiAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiXHJcbiAgICAgICAgICAgICAgeD1cIjQ4XCJcclxuICAgICAgICAgICAgICB5PVwiNVwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC4zKVwiXHJcbiAgICAgICAgICAgIC8+IC0tPlxyXG4gICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiN1wiIGZpbGw9XCIjZmZmXCIgLz5cclxuICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJidG4tY29udGFpbmVyXCIgKm5nSWY9XCIhaXNNaW5pbWlzZWRcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRpYWwtYnRuXCIgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlwYWRWYWw7bGV0IGkgPSBpbmRleFwiIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXIoa2V5Lm51bSlcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCc6IGtleS50ZXh0ID09PSAnKycgPyAnM3B4JyA6ICcwJ31cIiBbdGFiaW5kZXhdPVwiZGlhbGVkTnVtYmVyLmxlbmd0aCA/ICcwJzogaSsyXCIgbG9uZ1ByZXNzXHJcbiAgICAgICAgKGxvbmdQcmVzcyk9XCJhZGROdW1iZXIoa2V5LnRleHQpXCIgc2hvcnRQcmVzcyAoc2hvcnRQcmVzcyk9XCJhZGROdW1iZXIoa2V5Lm51bSlcIj5cclxuICAgICAgICB7e2tleS5udW19fVxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwia2V5Lm51bSA9PSAxO2Vsc2Ugb3RoZXJUaGFuT25lXCIgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHZvaWNlbWFpbFwiPlxyXG4gICAgICAgICAgdm9pY2VtYWlsXHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJUaGFuT25lPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tYWxiaGFiZXRzXCIgW25nQ2xhc3NdPVwieydwbHVzU2lnbic6IGtleS50ZXh0ID09PSAnKyd9XCI+e3trZXkudGV4dCA/IGtleS50ZXh0IDpcclxuICAgICAgICAgICAgJyZuYnNwOyd9fTwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGwtYnRuLWNvbnRhaW5lclwiICpuZ0lmPVwiIWlzTWluaW1pc2VkXCIgKG1vdXNlZW50ZXIpPVwib25DYWxsQnRuTW91c2VFbnRlcigkZXZlbnQpXCJcclxuICAgICAgKG1vdXNlbGVhdmUpPVwib25DYWxsQnRuTW91c2VMZWF2ZSgkZXZlbnQpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxsLWJ0blwiIChjbGljayk9XCJpbml0aWF0ZUNhbGwoKVwiIFt0YWJpbmRleF09XCJkaWFsZWROdW1iZXIubGVuZ3RoID8gJzInOiAnMTUnXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7J3BvaW50ZXItZXZlbnRzJzogZGlhbGVkTnVtYmVyLmxlbmd0aCAmJiBzZWxlY3RlZENhbGxlcklkID8gJ2F1dG8nIDogJ25vbmUnLCAnb3BhY2l0eSc6IGRpYWxlZE51bWJlci5sZW5ndGggJiYgc2VsZWN0ZWRDYWxsZXJJZCA/ICcxJyA6ICcwLjUnfVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlXCI+XHJcbiAgICAgICAgICBjYWxsXHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImNhbGxlcklkTGlzdC5sZW5ndGggJiYgIWlzTWluaW1pc2VkXCIgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2hvd25DYWxsZXJJZFwiICpuZ0lmPVwic2VsZWN0ZWRDYWxsZXJJZDsgZWxzZSBhc2tCbG9ja1wiIChjbGljayk9XCJ0b2dnbGVDYWxsZXJJZERpdigpXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgc2VsZWN0ZWRDYWxsZXJJZD8uaXNvQ29kZT8udG9Mb3dlckNhc2UoKVwiPjwvc3Bhbj5cclxuICAgICAgICAgIHt7c2VsZWN0ZWRDYWxsZXJJZD8ubnVtYmVyfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjYXNrQmxvY2s+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNob3duQ2FsbGVySWRcIiAoY2xpY2spPVwidG9nZ2xlQ2FsbGVySWREaXYoKVwiIFtuZ0NsYXNzXT1cInsgJ3RpbHQtc2hha2luZyc6IHNoYWtlRGVkaWNhdGVkQnRuIH1cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtYi0wXCI+U2VsZWN0IEMyQyBudW1iZXI8L2g1PlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtMlwiIHN0eWxlPVwib3BhY2l0eTouODttYXJnaW4tdG9wOjJweFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9pY29uX2Rvd25fYXJyb3cuc3ZnXCIgYWx0PVwiZG93blwiIHdpZHRoPVwiMTBweFwiPlxyXG4gICAgICAgICAgICA8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvd24gbWwtMiB0ZXh0LWJsdWVcIiBzdHlsZT1cIm1hcmdpbi10b3A6MnB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJndWlkZTJcIiAqbmdJZj1cInNoYWtlRGVkaWNhdGVkQnRuXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJndWlkZXRleHRcIj5QbGVhc2Ugc2VsZWN0IGEgbnVtYmVyIGZyb20gYmVsb3cgZHJvcGRvd248L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImNhbGxlcklkTGlzdC5sZW5ndGg7IGVsc2Ugbm9DYWxsZXJJZE1lc3NhZ2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhbGxlci1pZC1saXN0LWNvbnRhaW5lclwiICpuZ0lmPVwiY2FsbGVySWRMaXN0Lmxlbmd0aCAmJiAhaXNNaW5pbWlzZWRcIiBpZD1cImNhbGxlcklkQ29udGFpbmVyXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J3Zpc2libGUnOiAhaXNDYWxsZXJJZEhpZGRlbn1cIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICA8IS0tIDxoND5TZWxlY3QgQzJDIFNvZnRwaG9uZSBOdW1iZXI8L2g0PiAtLT5cclxuICAgICAgICAgIDxoND5NYWtlIG91dGdvaW5nIGNhbGwgdXNpbmc8L2g0PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIiAoY2xpY2spPVwiaXNDYWxsZXJJZEhpZGRlbiA9IHRydWVcIj5cclxuICAgICAgICAgICAgY2xvc2VcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYWxsZXJJZCBvZiBjYWxsZXJJZExpc3RcIj5cclxuICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRDYWxsZXJJZENsYXNzJzogY2FsbGVySWQ/Lm51bWJlciA9PSBzZWxlY3RlZENhbGxlcklkPy5udW1iZXJ9XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWRpY2F0ZWROdW1TZWxlY3QoY2FsbGVySWQpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY2FsbGVySWQ/Lmlzb0NvZGU/LnRvTG93ZXJDYXNlKClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB7e2NhbGxlcklkPy5udW1iZXJ9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7Y2FsbGVySWQ/LmNvdW50cnlOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNub0NhbGxlcklkTWVzc2FnZT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJuby1jYWxsZXItaWQtbWVzc2FnZVwiPlRvIG1ha2UgYW55IHZvaWNlIGNhbGxzLCBwbGVhc2UgPGFcclxuICAgICAgICAgIHJvdXRlckxpbms9XCIvZXh0ZW5zaW9uL2RlZGljYXRlZG51bWJlci97e3Rva2VufX1cIiBjbGFzcz1cImNsaWNrLWhlcmUtbGlua1wiXHJcbiAgICAgICAgICB0aXRsZT1cIlNldHRpbmdzID4gQzJDIE51bWJlclwiPnN1YnNjcmliZTwvYT4gdG8gYSB2b2ljZSBjYXBhYmxlIEMyQyBOdW1iZXIuXHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGVkaWNhdGVkLW92ZXJsYXlcIiAqbmdJZj1cInNob3dEZWRpY2F0ZWRQb3B1cFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBkZWRpY2F0ZWROdW1Qb3B1cFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBjaG9vc2VEZWRpY2F0ZWRIZWFkZXJcIj5cclxuICAgICAgICAgIDxoNT5DaG9vc2UgQzJDIE51bWJlcjwvaDU+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZGlhbC1jbG9zZS1idG5cIiAoY2xpY2spPVwic2hvd0RlZGljYXRlZFBvcHVwID0gZmFsc2VcIj5jbG9zZTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGRlZGljYXRlZE51bUxpc3RcIj5cclxuICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2FsbGVySWQgb2YgY2FsbGVySWRMaXN0XCI+XHJcbiAgICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRDYWxsZXJJZENsYXNzJzogY2FsbGVySWQ/Lm51bWJlciA9PSBzZWxlY3RlZENhbGxlcklkPy5udW1iZXJ9XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVkaWNhdGVkUG9wdXAgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBjYWxsZXJJZD8uaXNvQ29kZT8udG9Mb3dlckNhc2UoKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAge3tjYWxsZXJJZD8ubnVtYmVyfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3tjYWxsZXJJZD8uY291bnRyeU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJpbmNvbWluZy1jYWxsLXdpZGdldFwiICpuZ0Zvcj1cImxldCBjYWxsIG9mIG5ld0luY29taW5nQ2FsbHM7bGV0IGkgPSBpbmRleFwiIFtuZ1N0eWxlXT1cInsndG9wJzogKDMwICsgaSAqIDcyKSArICdweCd9XCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluYy11c2VyLWltZ1wiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL3VzZXIuanBnXCIgYWx0PVwidXNlciBpbWFnZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJpbmMtdXNlci1uYW1lXCI+e3tjYWxsLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCduYW1lJyl9fTwvcD5cclxuICAgICAgICA8cD57e2NhbGwucGFyYW1ldGVycy5Gcm9tfX08L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImluYy1jYWxsLWJ0biBpbmMtYWNjZXB0LWJ0biBtci0yXCIgKGNsaWNrKT1cImFjY2VwdE5ld0luY29taW5nQ2FsbChjYWxsKVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgc3R5bGU9XCJjb2xvcjogd2hpdGVcIj5cclxuICAgICAgICAgICAgY2FsbFxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJpbmMtY2FsbC1idG4gaW5jLXJlamVjdC1idG5cIiAoY2xpY2spPVwicmVqZWN0TmV3SW5jb21pbmdDYWxsKGNhbGwpXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZVwiPlxyXG4gICAgICAgICAgICBjYWxsX2VuZFxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgIDwvZGl2PiAtLT5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|