@hitsoft/e-donusum 1.0.75 → 1.0.77

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.
Files changed (26) hide show
  1. package/esm2020/lib/components/hit-despatches/hit-despatch.component.mjs +8 -8
  2. package/esm2020/lib/components/hit-invoices/hit-invoice.component.mjs +11 -12
  3. package/esm2020/lib/paramse-dispatches/paramse-dispatch/paramse-dispatch.module.mjs +1 -1
  4. package/esm2020/lib/paramse-invoices/paramse-invoice/paramse-invoice.module.mjs +1 -1
  5. package/esm2020/lib/proxy/auto-send-rule-doc-types/index.mjs +1 -1
  6. package/esm2020/lib/proxy/auto-send-rule-scenarios/index.mjs +1 -1
  7. package/esm2020/lib/proxy/auto-send-rules/index.mjs +1 -1
  8. package/esm2020/lib/proxy/document-serials/index.mjs +1 -1
  9. package/esm2020/lib/proxy/gib-partner-pks/index.mjs +1 -1
  10. package/esm2020/lib/proxy/note-rule-doc-types/index.mjs +1 -1
  11. package/esm2020/lib/proxy/note-rule-scenarios/index.mjs +1 -1
  12. package/esm2020/lib/proxy/note-rules/index.mjs +1 -1
  13. package/esm2020/lib/proxy/params-companies/index.mjs +1 -1
  14. package/esm2020/lib/proxy/params-generals/index.mjs +1 -1
  15. package/esm2020/lib/proxy/params-integrators/index.mjs +1 -1
  16. package/esm2020/lib/proxy/paramse-dispatches/index.mjs +1 -1
  17. package/esm2020/lib/proxy/paramse-invoices/index.mjs +1 -1
  18. package/esm2020/lib/proxy/xslt-formats/index.mjs +1 -1
  19. package/esm2020/lib/proxy/xslt-rule-doc-types/index.mjs +1 -1
  20. package/esm2020/lib/proxy/xslt-rule-scenarios/index.mjs +1 -1
  21. package/esm2020/lib/proxy/xslt-rules/index.mjs +1 -1
  22. package/fesm2015/hitsoft-e-donusum.mjs +17 -18
  23. package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
  24. package/fesm2020/hitsoft-e-donusum.mjs +17 -18
  25. package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
  26. package/package.json +1 -1
@@ -169,11 +169,11 @@ export class HitDespatchComponent {
169
169
  debugger;
170
170
  this.service.getDespatchXML(record.id, record.resourceDocType).subscribe(irsaliye => {
171
171
  const source = `data:${irsaliye.mimeType};base64,${irsaliye.content}`;
172
- this.hitSharedService.previewFile(irsaliye.content);
173
- /*const link = document.createElement('a');
172
+ //this.hitSharedService.previewFile(irsaliye.content);
173
+ const link = document.createElement('a');
174
174
  link.href = source;
175
175
  link.download = `${irsaliye.filename}`;
176
- link.click();*/
176
+ link.click();
177
177
  });
178
178
  }
179
179
  getDocObjectName(data) {
@@ -197,10 +197,10 @@ export class HitDespatchComponent {
197
197
  getDespatchView(record) {
198
198
  this.service.getDespatchView(record.uuId).subscribe(item => {
199
199
  const source = `data:${item.mimeType};base64,${item.content}`;
200
- const newTab = window.open();
201
- newTab.document.title = record.id;
202
- newTab.document.body.innerHTML = `<iframe src="${source}" width="100%" height="100%" style="border:none;"></iframe>`;
203
- //this.hitSharedService.previewFile(item.content);
200
+ // const newTab = window.open();
201
+ // newTab.document.title = record.id
202
+ // newTab.document.body.innerHTML = `<iframe src="${source}" width="100%" height="100%" style="border:none;"></iframe>`;
203
+ this.hitSharedService.previewFile(item.content);
204
204
  /*const link = document.createElement('a');
205
205
  link.href = source;
206
206
  link.download = `${item.filename}`;
@@ -298,4 +298,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
298
298
  type: ViewChild,
299
299
  args: ['dxDespatchSerialInstance', { static: false }]
300
300
  }] } });
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWRlc3BhdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWRlc3BhdGNoZXMvaGl0LWRlc3BhdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWRlc3BhdGNoZXMvaGl0LWRlc3BhdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxhQUFhLEVBQXFCLFdBQVcsRUFBa0IsTUFBTSxjQUFjLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWU1RCxNQUFNLE9BQU8sb0JBQW9CO0lBNEI3QixZQUNvQixJQUFpQixFQUNqQixPQUEyQixFQUMxQix1QkFBbUQsRUFDbkQsbUJBQTJDLEVBQzNDLHdCQUFrRCxFQUNsRCxZQUFpQyxFQUNqQyxjQUE4QixFQUM5QixnQkFBa0M7UUFQbkMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMxQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQTRCO1FBQ25ELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFyQnZELG9CQUFlLEdBQUcs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RSxLQUFLLEVBQUU7Z0JBQ0ksd0JBQXdCO3NCQUFqRixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgaXNOdWxsT3JFbXB0eSwgaXNOdWxsT3JVbmRlZmluZWQsIExpc3RTZXJ2aWNlLCBQYWdlZFJlc3VsdER0byB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBIaXREZXNwYXRjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWRlc3BhdGNoZXMvaGl0LWRlc3BhdGNoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRGaWxlRG9jdW1lbnRUeXBlU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsZS1kb2N1bWVudC10eXBlL2hpdC1maWxlLWRvY3VtZW50LXR5cGUuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IEhpdEdpYlBhcnRuZXJQa1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWdpYi1wYXJ0bmVyLXBrcy9oaXQtZ2liLXBhcnRuZXItcGsuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdERvY3VtZW50U2VyaWFsU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZG9jdW1lbnQtc2VyaWFscy9oaXQtZG9jdW1lbnQtc2VyaWFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L3NoYXJlZC9oaXQtc2hhcmVkLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWRlc3BhdGNoJyxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICAgIHByb3ZpZGVyczogW0xpc3RTZXJ2aWNlLCB7IHByb3ZpZGU6IE5nYkRhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUFkYXB0ZXIgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vaGl0LWRlc3BhdGNoLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXREZXNwYXRjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkeERlc3BhdGNoSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhEZXNwYXRjaEluc3RhbmNlOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeERlc3BhdGNoRmlsZUluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4RGVzcGF0Y2hGaWxlSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4RGVzcGF0Y2hTZXJpYWxJbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeERlc3BhdGNoU2VyaWFsSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuXHJcbiAgICBkZXNwYXRjaGVzRGF0YVNvdXJjZTogYW55XHJcbiAgICBkZXNwYXRjaFN0YXR1c0xvb2t1cDogYW55XHJcbiAgICBkZXNwYXRjaFJlY2VpdmVyUmVzcG9uc2VMb29rdXA6IGFueVxyXG4gICAgZGVzcGF0Y2hPYmplY3RzRW51bUxvb2t1cDogYW55XHJcbiAgICBkZXNwYXRjaFJlY2VpdmVyUEtEYXRhU291cmNlOiBhbnlcclxuICAgIGRlc3BhdGNoU2VyaWFsRGF0YVNvdXJjZTogYW55XHJcblxyXG4gICAgZGVzcGF0Y2hGaWxlTmFtZUxvb2t1cDogYW55XHJcbiAgICBkZXNwYXRjaEZpbGVzRGF0YVNvdXJjZTogYW55XHJcblxyXG4gICAgaXNGaWxlTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgICBpc0ZpbGVNb2RhbEJ1c3kgPSBmYWxzZTtcclxuXHJcbiAgICBpc1BLTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgICBpc1BLTW9kYWxCdXN5ID0gZmFsc2U7XHJcbiAgICBwa01vZGFsU2VsZWN0ZWREZXNwYXRjaElkOiBhbnk7XHJcbiAgICBwa01vZGFsU2VsZWN0ZWREZXNwYXRjaFJlc291cmNlRG9jRW50cnk6IGFueTtcclxuXHJcbiAgICBpc1NlcmlhbE1vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgaXNTZXJpYWxNb2RhbEJ1c3kgPSBmYWxzZTtcclxuICAgIHNlcmlhbE1vZGFsU2VsZWN0ZWREZXNwYXRjaElkOiBhbnk7XHJcbiAgICBzZXJpYWxNb2RhbFNlbGVjdGVkRGVzcGF0Y2hSZXNvdXJjZURvY0VudHJ5OiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBIaXREZXNwYXRjaFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmaWxlRG9jdW1lbnRUeXBlU2VydmljZTogSGl0RmlsZURvY3VtZW50VHlwZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBnaWJQYXJ0bmVyUGtTZXJ2aWNlOiBIaXRHaWJQYXJ0bmVyUGtTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0RG9jdW1lbnRTZXJpYWxTZXJ2aWNlOiBIaXREb2N1bWVudFNlcmlhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBoaXRTaGFyZWRTZXJ2aWNlOiBIaXRTaGFyZWRTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXNwYXRjaGVzRGF0YVNvdXJjZSA9IHRoaXMuc2VydmljZS5Mb2FkRGVzcGF0Y2hlcztcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0U3RhdHVzZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVzcGF0Y2hTdGF0dXNMb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRSZWNlaXZlclJlc3BvbnNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaFJlY2VpdmVyUmVzcG9uc2VMb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFNhcE9iamVjdHMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVzcGF0Y2hPYmplY3RzRW51bUxvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmZpbGVEb2N1bWVudFR5cGVTZXJ2aWNlLmdldEZpbGVEb2N1bWVudFR5cGVzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaEZpbGVOYW1lTG9va3VwID0gbGlzdDtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHNlbmREZXNwYXRjaFNpbmdsZShyZWNvcmQpIHtcclxuICAgICAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFtyZWNvcmQuaWRdO1xyXG5cclxuICAgICAgICBpZiAoaXNOdWxsT3JFbXB0eShyZWNvcmQuc2VsZWN0ZWREZXNwYXRjaFNlcmlhbCkpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25cclxuICAgICAgICAgICAgICAgIC5pbmZvKCdCZWxnZSBzZXJpIHNlw6dpbWkgeWFwxLFsbWFkxLHEn8SxIGnDp2luIGVudGVncmF0w7ZyZGUgYnVsdW5hbiB2YXJzYXnEsWxhbiBzZXJpeWxlIGfDtm5kZXJpbGVjZWt0aXIuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLCB7IGtleTogJzo6QmlsZ2knLCBkZWZhdWx0VmFsdWU6ICcnIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiY29uZmlybVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VuZERlc3BhdGNoQnlJZChpZHMpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKFwiSGVyaGFuZ2kgYmlyIGnFn2xlbSBnZXLDp2VrbGXFn3RpcmlsbWVkaS5cIik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZW5kRGVzcGF0Y2hCeUlkKGlkcykuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZW5kRGVzcGF0Y2hNdWx0aXBsZSgpIHtcclxuICAgICAgICBsZXQgaWRzOiBBcnJheTx7IGlkOiBzdHJpbmcsIHNlbGVjdGVkU2VyaWFsOiBzdHJpbmcgfT4gPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKS5maWx0ZXIoaSA9PiBpLmlzU2VsZWN0ZWQgPT0gdHJ1ZSkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGVsZW1lbnQuZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VyaWFsOiBlbGVtZW50LmRhdGEuc2VsZWN0ZWREZXNwYXRjaFNlcmlhbFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmIChpZHMuZmlsdGVyKHAgPT4gaXNOdWxsT3JFbXB0eShwLnNlbGVjdGVkU2VyaWFsKSkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgLmluZm8oJ1Nlcmkgc2XDp2ltaSB5YXDEsWxtYXlhbiBiZWxnZWxlciBpw6dpbiBlbnRlZ3JhdMO2cmRlIGJ1bHVuYW4gdmFyc2F5xLFsYW4gc2VyaXlsZSBnw7ZuZGVyaW0geWFwxLFsYWNha3TEsXIuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLCB7IGtleTogJzo6QmlsZ2knLCBkZWZhdWx0VmFsdWU6ICcnIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiY29uZmlybVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VuZERlc3BhdGNoQnlJZChpZHMubWFwKHAgPT4gcC5pZCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKFwiSGVyaGFuZ2kgYmlyIGnFn2xlbSBnZXLDp2VrbGXFn3RpcmlsbWVkaS5cIik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZW5kRGVzcGF0Y2hCeUlkKGlkcy5tYXAocCA9PiBwLmlkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuXHJcbiAgICAgICAgdGhpcy5keEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZpbHRlcihpID0+IGkuaXNTZWxlY3RlZCA9PSB0cnVlKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5kYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTZXJpYWw6IGVsZW1lbnQuZGF0YS5zZWxlY3RlZEludm9pY2VTZXJpYWxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBpZihpZHMuZmlsdGVyKHAgPT4gaXNOdWxsT3JFbXB0eShwLnNlbGVjdGVkU2VyaWFsKSkubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgLmluZm8oJ1Nlcmkgc2XDp2ltaSB5YXDEsWxtYXlhbiBiZWxnZWxlciBpw6dpbiBlbnRlZ3JhdMO2cmRlIGJ1bHVuYW4gdmFyc2F5xLFsYW4gc2VyaXlsZSBnw7ZuZGVyaW0geWFwxLFsYWNha3TEsXIuIERldmFtIGV0bWVrIGlzdGl5b3IgbXVzdW51ej8nLCB7IGtleTogJzo6QmlsZ2knLCBkZWZhdWx0VmFsdWU6ICcnIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiY29uZmlybVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLnNlbmRJbnZvaWNlQnlJZChpZHMubWFwKHAgPT4gcC5pZCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJIZXJoYW5naSBiaXIgacWfbGVtIGdlcsOnZWtsZcWfdGlyaWxtZWRpLlwiKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLnNlbmRJbnZvaWNlQnlJZChpZHMubWFwKHAgPT4gcC5pZCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICovXHJcbiAgICB9XHJcbiAgICBzZXREZXNwYXRjaENhbmNlbFdpdGhPcGVuKHJlY29yZCkge1xyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0RGVzcGF0Y2hDYW5jZWxCeUlkKHJlY29yZC5pZCwgMSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcyhcIkJlbGdlIGJhxZ9hcsSxeWxhIGlwdGFsZSDDp2VraWxlcmVrLCBrYXluYWt0YSBnw7xuY2VsbGVuZGkuXCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERlc3BhdGNoQ2FuY2VsV2l0aFJldmlzZShyZWNvcmQpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNldERlc3BhdGNoQ2FuY2VsQnlJZChyZWNvcmQuaWQsIDYpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKVxyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoXCJCZWxnZSBiYcWfYXLEsXlsYSBpcHRhbGUgw6dla2lsZXJlaywga2F5bmFrdGEgZ8O8bmNlbGxlbmRpLlwiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBsaXN0RGVzcGF0Y2hSZWNlaXZlclBLKHJlY29yZCkge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuZ2liUGFydG5lclBrU2VydmljZS5HZXRDdXN0b21lckFjdGl2ZVBLUyhyZWNvcmQuZGVsaXZlcnlDdXN0b21lclBhcnR5VmtuVGNrbiwgMikuc3Vic2NyaWJlKHBrcyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVzcGF0Y2hSZWNlaXZlclBLRGF0YVNvdXJjZSA9IHBrcy5tYXAoaXRlbSA9PiAoeyBBZHJlczogaXRlbSB9KSk7O1xyXG4gICAgICAgICAgICB0aGlzLnBrTW9kYWxTZWxlY3RlZERlc3BhdGNoSWQgPSByZWNvcmQuaWQ7XHJcbiAgICAgICAgICAgIHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hSZXNvdXJjZURvY0VudHJ5ID0gcmVjb3JkLnJlc291cmNlRG9jRW50cnk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmlzUEtNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGxpc3RBY3RpdmVTZXJpZXMocmVjb3JkKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5oaXREb2N1bWVudFNlcmlhbFNlcnZpY2UuTGlzdEFjdGl2ZVNlcmllc0ZvckRvY3VtZW50KDEpLnN1YnNjcmliZShzZXJpYWxzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaFNlcmlhbERhdGFTb3VyY2UgPSBzZXJpYWxzLm1hcChpdGVtID0+ICh7IFNlcmk6IGl0ZW0gfSkpOztcclxuICAgICAgICAgICAgdGhpcy5zZXJpYWxNb2RhbFNlbGVjdGVkRGVzcGF0Y2hJZCA9IHJlY29yZC5pZDtcclxuICAgICAgICAgICAgdGhpcy5zZXJpYWxNb2RhbFNlbGVjdGVkRGVzcGF0Y2hSZXNvdXJjZURvY0VudHJ5ID0gcmVjb3JkLnJlc291cmNlRG9jRW50cnk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmlzU2VyaWFsTW9kYWxPcGVuID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RQS0FkZHJlc3MocmVjb3JkKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVjb3JkLkFkcmVzLCB0aGlzLnBrTW9kYWxTZWxlY3RlZERlc3BhdGNoSWQsIHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hSZXNvdXJjZURvY0VudHJ5KVxyXG4gICAgICAgIHRoaXMuc2VydmljZS51cGRhdGVEZXNwYXRjaFJlY2VpdmVyKHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hJZCwgcmVjb3JkLkFkcmVzKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzUEtNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3REZXNwYXRjaFNlcmlhbChyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UudXBkYXRlRGVzcGF0Y2hTZXJpYWwodGhpcy5zZXJpYWxNb2RhbFNlbGVjdGVkRGVzcGF0Y2hJZCwgcmVjb3JkLlNlcmkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTZXJpYWxNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXNwYXRjaFByZXZpZXcocmVjb3JkKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERlc3BhdGNoUHJldmlldyhyZWNvcmQuaWQsIHJlY29yZC5yZXNvdXJjZURvY1R5cGUpLnN1YnNjcmliZShmYXR1cmEgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgZGF0YTp0ZXh0L2h0bWw7YmFzZTY0LCR7ZmF0dXJhLnByZXZpZXdIVE1MfWA7XHJcbiAgICAgICAgICAgIC8vdGhpcy5oaXRTaGFyZWRTZXJ2aWNlLnByZXZpZXdGaWxlKGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGZhdHVyYS5wcmV2aWV3SFRNTCkpKSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBuZXdUYWIgPSB3aW5kb3cub3BlbigpO1xyXG4gICAgICAgICAgICBuZXdUYWIuZG9jdW1lbnQudGl0bGUgPSByZWNvcmQuaWRcclxuICAgICAgICAgICAgbmV3VGFiLmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gYDxpZnJhbWUgc3JjPVwiJHtzb3VyY2V9XCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHN0eWxlPVwiYm9yZGVyOm5vbmU7XCI+PC9pZnJhbWU+YDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGdldERlc3BhdGNoWE1MKHJlY29yZCkge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXREZXNwYXRjaFhNTChyZWNvcmQuaWQsIHJlY29yZC5yZXNvdXJjZURvY1R5cGUpLnN1YnNjcmliZShpcnNhbGl5ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOiR7aXJzYWxpeWUubWltZVR5cGV9O2Jhc2U2NCwke2lyc2FsaXllLmNvbnRlbnR9YDtcclxuICAgICAgICAgICAgdGhpcy5oaXRTaGFyZWRTZXJ2aWNlLnByZXZpZXdGaWxlKGlyc2FsaXllLmNvbnRlbnQpO1xyXG5cclxuXHJcbiAgICAgICAgICAgIC8qY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgbGluay5ocmVmID0gc291cmNlO1xyXG4gICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gYCR7aXJzYWxpeWUuZmlsZW5hbWV9YDtcclxuICAgICAgICAgICAgbGluay5jbGljaygpOyovXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RG9jT2JqZWN0TmFtZShkYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuICgoZGF0YS5pc0RyYWZ0ID8gXCJUYXNsYWsgXCIgOiBcIlwiKSArIHRoaXMuZGVzcGF0Y2hPYmplY3RzRW51bUxvb2t1cC5maW5kKCh4KSA9PiB4LmlkID09IChkYXRhLmlzRHJhZnQgPyBkYXRhLnJlc291cmNlU3ViRG9jVHlwZSA6IGRhdGEucmVzb3VyY2VEb2NUeXBlKSkuZGlzcGxheU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEljb25DbGFzcyhyZXNwb25zZUlkKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlSWQgPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtY2xvY2tcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1jaGVjay1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS10aW1lcy1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1taW51cy1jaXJjbGVcIlxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXNwYXRjaFZpZXcocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERlc3BhdGNoVmlldyhyZWNvcmQudXVJZCkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgZGF0YToke2l0ZW0ubWltZVR5cGV9O2Jhc2U2NCwke2l0ZW0uY29udGVudH1gO1xyXG5cclxuICAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IHdpbmRvdy5vcGVuKCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC50aXRsZSA9IHJlY29yZC5pZFxyXG4gICAgICAgICAgICBuZXdUYWIuZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBgPGlmcmFtZSBzcmM9XCIke3NvdXJjZX1cIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgc3R5bGU9XCJib3JkZXI6bm9uZTtcIj48L2lmcmFtZT5gO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAvL3RoaXMuaGl0U2hhcmVkU2VydmljZS5wcmV2aWV3RmlsZShpdGVtLmNvbnRlbnQpO1xyXG5cclxuICAgICAgICAgICAgLypjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBsaW5rLmhyZWYgPSBzb3VyY2U7XHJcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBgJHtpdGVtLmZpbGVuYW1lfWA7XHJcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTsqL1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERlc3BhdGNoUmVzcG9uc2VzKCkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXREZXNwYXRjaFJlc3BvbnNlcyhuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgICAgIHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UmVjZWl2ZXJSZXNwb25zZU5hbWUocmVzcG9uc2VJZCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5kZXNwYXRjaFJlY2VpdmVyUmVzcG9uc2VMb29rdXAuZmluZCgoeCkgPT4geC5pZCA9PT0gcmVzcG9uc2VJZCk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kaXNwbGF5TmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0FsbEZpbGVzKHJlY29yZCkge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuZGVzcGF0Y2hGaWxlc0RhdGFTb3VyY2UgPSB0aGlzLnNlcnZpY2UuTG9hZERlc3BhdGNoRmlsZXMocmVjb3JkLnV1SWQpXHJcbiAgICAgICAgdGhpcy5pc0ZpbGVNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIERvd25sb2FkRmlsZShyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZG93bmxvYWRGaWxlQnlJZChyZWNvcmQuY29udGVudE1hc3RlcklkKS5zdWJzY3JpYmUoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOiR7aXRlbS5taW1lVHlwZX07YmFzZTY0LCR7aXRlbS5jb250ZW50fWA7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHNvdXJjZTtcclxuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGAke2l0ZW0uZmlsZW5hbWV9YDtcclxuICAgICAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkUERGTXVsdGlwbGUoKSB7XHJcbiAgICAgICAgbGV0IGlkczogQXJyYXk8eyBpZDogc3RyaW5nLCBzZWxlY3RlZFNlcmlhbDogc3RyaW5nIH0+ID0gW107XHJcblxyXG4gICAgICAgIHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLmdldFZpc2libGVSb3dzKCkuZmlsdGVyKGkgPT4gaS5pc1NlbGVjdGVkID09IHRydWUpLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlkcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmRhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFNlcmlhbDogZWxlbWVudC5kYXRhLnNlbGVjdGVkRGVzcGF0Y2hTZXJpYWxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0RGVzcGF0Y2hQZGZzTXVsdGlwbGUoaWRzLm1hcChwID0+IHAuaWQpKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoZGF0YSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBieXRlTnVtYmVyc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcclxuICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi96aXAnIH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gxLBuZGlybWVcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgIGEuaHJlZiA9IHVybDtcclxuICAgICAgICAgICAgYS5kb3dubG9hZCA9ICdJcnNhbGl5ZWxlci0nICsgdGhpcy5nZXRaaXBEYXRlKCkgKyAnLnppcCc7XHJcbiAgICAgICAgICAgIGEuY2xpY2soKTtcclxuXHJcbiAgICAgICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGdldFppcERhdGUoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgIC8vIEfDvG4sIEF5LCBZxLFsLCBTYWF0LCBEYWtpa2EsIFNhbml5ZSBmb3JtYXTEsW5kYSBtYW51ZWwgZMO8emVubGVtZVxyXG4gICAgICAgIGNvbnN0IGRheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBtb250aCA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgY29uc3QgaG91cnMgPSBTdHJpbmcoZGF0ZS5nZXRIb3VycygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IFN0cmluZyhkYXRlLmdldFNlY29uZHMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGAke3llYXJ9LiR7bW9udGh9LiR7ZGF5fS0ke2hvdXJzfS4ke21pbnV0ZXN9LiR7c2Vjb25kc31gO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJlY2VpcHRBZHZpY2VQcmV2aWV3KHJlY29yZCkge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRSZWNlaXB0QWR2aWNlUHJldmlldyhyZWNvcmQuaWQsKS5zdWJzY3JpYmUoZGVzcGF0Y2ggPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgZGF0YTp0ZXh0L2h0bWw7YmFzZTY0LCR7ZGVzcGF0Y2gucHJldmlld0hUTUx9YDtcclxuICAgICAgICAgICAgLy90aGlzLmhpdFNoYXJlZFNlcnZpY2UucHJldmlld0ZpbGUoZGVzcGF0Y2gucHJldmlld0hUTUwpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgbmV3VGFiID0gd2luZG93Lm9wZW4oKTtcclxuICAgICAgICAgICAgbmV3VGFiLmRvY3VtZW50LnRpdGxlID0gcmVjb3JkLmlkXHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IGA8aWZyYW1lIHNyYz1cIiR7c291cmNlfVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBzdHlsZT1cImJvcmRlcjpub25lO1wiPjwvaWZyYW1lPmA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidlRG9udXN1bTo6RGVzcGF0Y2hlcycgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbXgtMlwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFeHBvcnRUb0V4Y2VsQnVzeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRUb0V4Y2VsKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyAnZURvbnVzdW06OkV4cG9ydFRvRXhjZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAtLT5cclxuICAgICAgPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5EZXNwYXRjaGVzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiIChjbGljayk9XCJkb3dubG9hZFBERk11bHRpcGxlKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWRvd25sb2FkIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpEb3dubG9hZFBERk11bHRpcGxlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5EZXNwYXRjaGVzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiIChjbGljayk9XCJzZW5kRGVzcGF0Y2hNdWx0aXBsZSgpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZSBtZS0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgIHt7ICdlRG9udXN1bTo6QWRkVG9RdWV1ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uRGVzcGF0Y2hlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1zdWNjZXNzXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwiZ2V0RGVzcGF0Y2hSZXNwb25zZXMoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcXVlc3Rpb24gbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkNoZWNrUmVzcG9uc2VzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPCEtLSA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLkRlc3BhdGNoZXMuQ3JlYXRlJ1wiIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tc3VjY2Vzc1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCIgKGNsaWNrKT1cInNlbmRJbnZvaWNlVG9FbnRlZ3JhdG9yKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpTZW5kVG9FbnRlZ3JhdG9yTWFudWFsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5EZXNwYXRjaGVzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4teHMgYnRuLXdhcm5pbmdcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwiZ2V0SW52b2ljZXNGcm9tQ29ubmVjdG9yKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkdldEZyb21Db25uZWN0b3JNYW51YWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG4gIDxwPkfDtm5kZXJpbWkgdGFtYW1sYW5hbiB2ZSBnw7ZuZGVyaWxtZXNpIGJla2xlbmVuIGlyc2FsaXllbGVyaSBsaXN0ZWxleWVuIGVrcmFuPC9wPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeERlc3BhdGNoSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiZGVzcGF0Y2hlc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCIgc3R5bGU9XCJoZWlnaHQ6IDc1dmg7XCI+XHJcbiAgICAgICAgPGR4by1wYWdlciBbdmlzaWJsZV09XCJ0cnVlXCIgW3Nob3dJbmZvXT1cInRydWVcIiBbYWxsb3dlZFBhZ2VTaXplc109XCJbNTAsMTAwLDIwMF1cIiBbc2hvd05hdmlnYXRpb25CdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4by1wYWdlcj5cclxuICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiNTBcIj48L2R4by1wYWdpbmc+XHJcbiAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIiBzaG93Q2hlY2tCb3hlc01vZGU9XCJhbHdheXNcIj5cclxuICAgICAgICA8L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tY2hvb3NlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFtlbmFibGVkXT1cInRydWVcIiBtb2RlPVwic2VsZWN0XCI+PC9keG8tY29sdW1uLWNob29zZXI+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZ3JvdXAtcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiIFthbGxvd0NvbHVtbkRyYWdnaW5nXT1cInRydWVcIj48L2R4by1ncm91cC1wYW5lbD5cclxuICAgICAgICA8ZHhvLWdyb3VwaW5nICNleHBhbmQgW2F1dG9FeHBhbmRBbGxdPVwiZmFsc2VcIiBbYWxsb3dDb2xsYXBzaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgW2NvbnRleHRNZW51RW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZ3JvdXBpbmc+XHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBbYWxsb3dFeHBvcnRTZWxlY3RlZERhdGFdPVwiZmFsc2VcIj48L2R4by1leHBvcnQ+XHJcbiAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLWJ1aWxkZXIgW2FsbG93SGllcmFyY2hpY2FsRmllbGRzXT1cInRydWVcIj48L2R4by1maWx0ZXItYnVpbGRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1wYW5lbCBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXBhbmVsPlxyXG4gICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gW2ZpeGVkXT1cInRydWVcIiBkYXRhRmllbGQ9XCJpZFwiIHdpZHRoPVwiMTIwXCIgW2FsbG93R3JvdXBpbmddPVwiZmFsc2VcIiBbYWxsb3dGaWx0ZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGlkaW5nXT1cImZhbHNlXCIgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3BlcmF0aW9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGUgW2Rpc2FibGVkXT1cImRpc2FibGVkSWRDb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1yLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJ1cGRhdGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZGVsZXRlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdBYnBVaTo6RGVsZXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2VuZERlc3BhdGNoU2luZ2xlKHJvdy5kYXRhKVwiICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkFkZFRvUXVldWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJzZXREZXNwYXRjaENhbmNlbFdpdGhPcGVuKHJvdy5kYXRhKVwiICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlNldENhbmNlbFdpdGhPcGVuJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2V0RGVzcGF0Y2hDYW5jZWxXaXRoUmV2aXNlKHJvdy5kYXRhKVwiICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlNldENhbmNlbFdpdGhSZXZpc2UnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJsaXN0RGVzcGF0Y2hSZWNlaXZlclBLKHJvdy5kYXRhKVwiICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTZWxlY3RSZWNlaXZlclBLJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwibGlzdEFjdGl2ZVNlcmllcyhyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10YXNrc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTZWxlY3RTZXJpYWxGb3JEb2N1bWVudCcgfFxyXG4gICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImdldERlc3BhdGNoVmlldyhyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAzMDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDM0MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gMzgwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3MDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6R2V0UERGVmlldycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImdldERlc3BhdGNoUHJldmlldyhyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6UHJldmlldycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImdldERlc3BhdGNoWE1MKHJvdy5kYXRhKVwiICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpQcmV2aWV3WE1MJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2hvd0FsbEZpbGVzKHJvdy5kYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEuc3RhdHVzID09IDMwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gMzQwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSAzODAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTaG93QWxsRmlsZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXRSZWNlaXB0QWR2aWNlUHJldmlldyhyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSA3MDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTaG93UmVzcG9uc2UnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXNzdWVEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXNzdWVEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJyZXNvdXJjZURvY0VudHJ5XCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVzb3VyY2VEb2NFbnRyeSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVzb3VyY2VEb2NOdW1cIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZXNvdXJjZURvY051bSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGVzcGF0Y2hJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RGVzcGF0Y2hJZCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gY2VsbFRlbXBsYXRlPVwiZG9jVHlwZVRlbXBsYXRlXCIgZGF0YUZpZWxkPVwicmVzb3VyY2VEb2NUeXBlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVzb3VyY2VEb2NUeXBlJ3xhYnBMb2NhbGl6YXRpb259fVwiPlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2RvY1R5cGVUZW1wbGF0ZSdcIj5cclxuICAgICAgICAgIHt7Z2V0RG9jT2JqZWN0TmFtZShkYXRhLmRhdGEpfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkZWxpdmVyeUN1c3RvbWVyUGFydHlOYW1lXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6QWNjb3VudGluZ0N1c3RvbWVyUGFydHlOYW1lJ3xhYnBMb2NhbGl6YXRpb259fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkZWxpdmVyeUN1c3RvbWVyUGFydHlWa25UY2tuXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6QWNjb3VudGluZ0N1c3RvbWVyUGFydHlWa25UY2tuJ3xhYnBMb2NhbGl6YXRpb259fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzdGF0dXNcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlN0YXR1cyd8YWJwTG9jYWxpemF0aW9ufX1cIj5cclxuICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImRlc3BhdGNoU3RhdHVzTG9va3VwXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+XHJcbiAgICAgICAgICA8L2R4by1sb29rdXA+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInByb2ZpbGVJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RGVzcGF0Y2hQcm9maWxlSWQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRlc3BhdGNoQWR2aWNlVHlwZUNvZGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEZXNwYXRjaEFkdmljZVR5cGVDb2RlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJyZWNlaXZlclJlc3BvbnNlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZWNlaXZlclJlc3BvbnNlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJpY29uVGVtcGxhdGVcIj5cclxuICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImRlc3BhdGNoUmVjZWl2ZXJSZXNwb25zZUxvb2t1cFwiIHZhbHVlRXhwcj1cImlkXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2ljb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cImdldEljb25DbGFzcyhkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSlcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2NvbG9yJzpkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSA9PSAnMScgPyAnZ3JlZW4nIDogZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzInID8gJ3JlZCcgOiBkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSA9PSAnMycgPyAnb3JhbmdlJyA6ICdncmF5J31cIj48L2k+XHJcbiAgICAgICAgICB7e2dldFJlY2VpdmVyUmVzcG9uc2VOYW1lKGRhdGEuZGF0YS5yZWNlaXZlclJlc3BvbnNlKX19XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJyZWNlaXZlclJlc3BvbnNlRGVzY1wiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlY2VpdmVyUmVzcG9uc2VEZXNjJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2N1bWVudEN1cnJlbmN5Q29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jQ3VycmVuY3knfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInNlbGVjdGVkUmVjZWl2ZXJQS1wiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlNlbGVjdGVkUmVjZWl2ZXJQSyd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwic2VsZWN0ZWREZXNwYXRjaFNlcmlhbFwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlNlbGVjdGVkRGVzcGF0Y2hTZXJpYWwnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInV1SWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlV1SWQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc0ZpbGVNb2RhbEJ1c3lcIiBbKHZpc2libGUpXT1cImlzRmlsZU1vZGFsT3BlblwiIFtvcHRpb25zXT1cInsgc2l6ZTogJ2xnJyB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+XHJcbiAgICAgIHt7ICdlRG9udXN1bTo6RGVzcGF0Y2hGaWxlcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2R4RGVzcGF0Y2hGaWxlSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiZGVzcGF0Y2hGaWxlc0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJmYWxzZVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFtmaXhlZF09XCJ0cnVlXCIgZGF0YUZpZWxkPVwiaWRcIiB3aWR0aD1cIjEyMFwiIFthbGxvd0dyb3VwaW5nXT1cImZhbHNlXCIgW2FsbG93RmlsdGVyaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgW2FsbG93SGVhZGVyRmlsdGVyaW5nXT1cImZhbHNlXCIgW2FsbG93SGlkaW5nXT1cImZhbHNlXCIgW2FsbG93UmVvcmRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCIgY2FwdGlvbj1cInt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ29wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlIFtkaXNhYmxlZF09XCJkaXNhYmxlZElkQ29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nIG1yLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJEb3dubG9hZEZpbGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1kb3dubG9hZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpEb3dubG9hZCcgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIiBkYXRhRmllbGQ9XCJleHRyYUl0ZW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06Ok5hbWUnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImRlc3BhdGNoRmlsZU5hbWVMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgPC9keG8tbG9va3VwPlxyXG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc1NlcmlhbE1vZGFsQnVzeVwiIFsodmlzaWJsZSldPVwiaXNTZXJpYWxNb2RhbE9wZW5cIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICBCZWxnZSBTZXJpIFNlw6dpbWlcclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2R4RGVzcGF0Y2hTZXJpYWxJbnN0YW5jZSBbZGF0YVNvdXJjZV09XCJkZXNwYXRjaFNlcmlhbERhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJmYWxzZVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFt3aWR0aF09XCI4MFwiIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJzZWxlY3REZXNwYXRjaFNlcmlhbChyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IFNlw6dcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJTZXJpXCIgY2FwdGlvbj1cIlNlcmlcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzUEtNb2RhbEJ1c3lcIiBbKHZpc2libGUpXT1cImlzUEtNb2RhbE9wZW5cIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7e3BrTW9kYWxTZWxlY3RlZERlc3BhdGNoUmVzb3VyY2VEb2NFbnRyeX19IHt7ICdlRG9udXN1bTo6UmVjZWl2ZXJQS1MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeFJlY2VpdmVyUEtTSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiZGVzcGF0Y2hSZWNlaXZlclBLRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCIgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCIgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cImZhbHNlXCIgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiPlxyXG4gICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gW3dpZHRoXT1cIjgwXCIgY2VsbFRlbXBsYXRlPVwib3BlcmF0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ29wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgKGNsaWNrKT1cInNlbGVjdFBLQWRkcmVzcyhyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IFNlw6dcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJBZHJlc1wiIGNhcHRpb249XCJBZHJlc1wiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT5cclxuICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD4iXX0=
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWRlc3BhdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWRlc3BhdGNoZXMvaGl0LWRlc3BhdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWRlc3BhdGNoZXMvaGl0LWRlc3BhdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxhQUFhLEVBQXFCLFdBQVcsRUFBa0IsTUFBTSxjQUFjLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWU1RCxNQUFNLE9BQU8sb0JBQW9CO0lBNEI3QixZQUNvQixJQUFpQixFQUNqQixPQUEyQixFQUMxQix1QkFBbUQsRUFDbkQsbUJBQTJDLEVBQzNDLHdCQUFrRCxFQUNsRCxZQUFpQyxFQUNqQyxjQUE4QixFQUM5QixnQkFBa0M7UUFQbkMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMxQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQTRCO1FBQ25ELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFyQnZELG9CQUFlLEdBQUcs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O3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSSx3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBpc051bGxPckVtcHR5LCBpc051bGxPclVuZGVmaW5lZCwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRHhEYXRhR3JpZENvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCB7IEhpdERlc3BhdGNoU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZGVzcGF0Y2hlcy9oaXQtZGVzcGF0Y2guc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdEZpbGVEb2N1bWVudFR5cGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1maWxlLWRvY3VtZW50LXR5cGUvaGl0LWZpbGUtZG9jdW1lbnQtdHlwZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgSGl0R2liUGFydG5lclBrU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZ2liLXBhcnRuZXItcGtzL2hpdC1naWItcGFydG5lci1way5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0RG9jdW1lbnRTZXJpYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1kb2N1bWVudC1zZXJpYWxzL2hpdC1kb2N1bWVudC1zZXJpYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvc2hhcmVkL2hpdC1zaGFyZWQuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItZGVzcGF0Y2gnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gICAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9oaXQtZGVzcGF0Y2guY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdERlc3BhdGNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2R4RGVzcGF0Y2hJbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeERlc3BhdGNoSW5zdGFuY2U6IER4RGF0YUdyaWRDb21wb25lbnRcclxuICAgIEBWaWV3Q2hpbGQoJ2R4RGVzcGF0Y2hGaWxlSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhEZXNwYXRjaEZpbGVJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgnZHhEZXNwYXRjaFNlcmlhbEluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4RGVzcGF0Y2hTZXJpYWxJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudFxyXG5cclxuICAgIGRlc3BhdGNoZXNEYXRhU291cmNlOiBhbnlcclxuICAgIGRlc3BhdGNoU3RhdHVzTG9va3VwOiBhbnlcclxuICAgIGRlc3BhdGNoUmVjZWl2ZXJSZXNwb25zZUxvb2t1cDogYW55XHJcbiAgICBkZXNwYXRjaE9iamVjdHNFbnVtTG9va3VwOiBhbnlcclxuICAgIGRlc3BhdGNoUmVjZWl2ZXJQS0RhdGFTb3VyY2U6IGFueVxyXG4gICAgZGVzcGF0Y2hTZXJpYWxEYXRhU291cmNlOiBhbnlcclxuXHJcbiAgICBkZXNwYXRjaEZpbGVOYW1lTG9va3VwOiBhbnlcclxuICAgIGRlc3BhdGNoRmlsZXNEYXRhU291cmNlOiBhbnlcclxuXHJcbiAgICBpc0ZpbGVNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgIGlzRmlsZU1vZGFsQnVzeSA9IGZhbHNlO1xyXG5cclxuICAgIGlzUEtNb2RhbE9wZW4gPSBmYWxzZTtcclxuICAgIGlzUEtNb2RhbEJ1c3kgPSBmYWxzZTtcclxuICAgIHBrTW9kYWxTZWxlY3RlZERlc3BhdGNoSWQ6IGFueTtcclxuICAgIHBrTW9kYWxTZWxlY3RlZERlc3BhdGNoUmVzb3VyY2VEb2NFbnRyeTogYW55O1xyXG5cclxuICAgIGlzU2VyaWFsTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgICBpc1NlcmlhbE1vZGFsQnVzeSA9IGZhbHNlO1xyXG4gICAgc2VyaWFsTW9kYWxTZWxlY3RlZERlc3BhdGNoSWQ6IGFueTtcclxuICAgIHNlcmlhbE1vZGFsU2VsZWN0ZWREZXNwYXRjaFJlc291cmNlRG9jRW50cnk6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IEhpdERlc3BhdGNoU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbGVEb2N1bWVudFR5cGVTZXJ2aWNlOiBIaXRGaWxlRG9jdW1lbnRUeXBlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGdpYlBhcnRuZXJQa1NlcnZpY2U6IEhpdEdpYlBhcnRuZXJQa1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBoaXREb2N1bWVudFNlcmlhbFNlcnZpY2U6IEhpdERvY3VtZW50U2VyaWFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhpdFNoYXJlZFNlcnZpY2U6IEhpdFNoYXJlZFNlcnZpY2VcclxuICAgICkgeyB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlc3BhdGNoZXNEYXRhU291cmNlID0gdGhpcy5zZXJ2aWNlLkxvYWREZXNwYXRjaGVzO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRTdGF0dXNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaFN0YXR1c0xvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFJlY2VpdmVyUmVzcG9uc2VzKCkuc3Vic2NyaWJlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRlc3BhdGNoUmVjZWl2ZXJSZXNwb25zZUxvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0U2FwT2JqZWN0cygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaE9iamVjdHNFbnVtTG9va3VwID0gbGlzdDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZmlsZURvY3VtZW50VHlwZVNlcnZpY2UuZ2V0RmlsZURvY3VtZW50VHlwZXMoKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICB0aGlzLmRlc3BhdGNoRmlsZU5hbWVMb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc2VuZERlc3BhdGNoU2luZ2xlKHJlY29yZCkge1xyXG4gICAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW3JlY29yZC5pZF07XHJcblxyXG4gICAgICAgIGlmIChpc051bGxPckVtcHR5KHJlY29yZC5zZWxlY3RlZERlc3BhdGNoU2VyaWFsKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgLmluZm8oJ0JlbGdlIHNlcmkgc2XDp2ltaSB5YXDEsWxtYWTEscSfxLEgacOnaW4gZW50ZWdyYXTDtnJkZSBidWx1bmFuIHZhcnNhecSxbGFuIHNlcml5bGUgZ8O2bmRlcmlsZWNla3Rpci4gRGV2YW0gZXRtZWsgaXN0aXlvciBtdXN1bnV6PycsIHsga2V5OiAnOjpCaWxnaScsIGRlZmF1bHRWYWx1ZTogJycgfSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gXCJjb25maXJtXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZW5kRGVzcGF0Y2hCeUlkKGlkcykuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJIZXJoYW5naSBiaXIgacWfbGVtIGdlcsOnZWtsZcWfdGlyaWxtZWRpLlwiKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbmREZXNwYXRjaEJ5SWQoaWRzKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHNlbmREZXNwYXRjaE11bHRpcGxlKCkge1xyXG4gICAgICAgIGxldCBpZHM6IEFycmF5PHsgaWQ6IHN0cmluZywgc2VsZWN0ZWRTZXJpYWw6IHN0cmluZyB9PiA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZpbHRlcihpID0+IGkuaXNTZWxlY3RlZCA9PSB0cnVlKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5kYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTZXJpYWw6IGVsZW1lbnQuZGF0YS5zZWxlY3RlZERlc3BhdGNoU2VyaWFsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgaWYgKGlkcy5maWx0ZXIocCA9PiBpc051bGxPckVtcHR5KHAuc2VsZWN0ZWRTZXJpYWwpKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uXHJcbiAgICAgICAgICAgICAgICAuaW5mbygnU2VyaSBzZcOnaW1pIHlhcMSxbG1heWFuIGJlbGdlbGVyIGnDp2luIGVudGVncmF0w7ZyZGUgYnVsdW5hbiB2YXJzYXnEsWxhbiBzZXJpeWxlIGfDtm5kZXJpbSB5YXDEsWxhY2FrdMSxci4gRGV2YW0gZXRtZWsgaXN0aXlvciBtdXN1bnV6PycsIHsga2V5OiAnOjpCaWxnaScsIGRlZmF1bHRWYWx1ZTogJycgfSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gXCJjb25maXJtXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZW5kRGVzcGF0Y2hCeUlkKGlkcy5tYXAocCA9PiBwLmlkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhEZXNwYXRjaEluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJIZXJoYW5naSBiaXIgacWfbGVtIGdlcsOnZWtsZcWfdGlyaWxtZWRpLlwiKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbmREZXNwYXRjaEJ5SWQoaWRzLm1hcChwID0+IHAuaWQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG5cclxuICAgICAgICB0aGlzLmR4SW52b2ljZUluc3RhbmNlLmluc3RhbmNlLmdldFZpc2libGVSb3dzKCkuZmlsdGVyKGkgPT4gaS5pc1NlbGVjdGVkID09IHRydWUpLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlkcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmRhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFNlcmlhbDogZWxlbWVudC5kYXRhLnNlbGVjdGVkSW52b2ljZVNlcmlhbFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmKGlkcy5maWx0ZXIocCA9PiBpc051bGxPckVtcHR5KHAuc2VsZWN0ZWRTZXJpYWwpKS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uXHJcbiAgICAgICAgICAgICAgICAuaW5mbygnU2VyaSBzZcOnaW1pIHlhcMSxbG1heWFuIGJlbGdlbGVyIGnDp2luIGVudGVncmF0w7ZyZGUgYnVsdW5hbiB2YXJzYXnEsWxhbiBzZXJpeWxlIGfDtm5kZXJpbSB5YXDEsWxhY2FrdMSxci4gRGV2YW0gZXRtZWsgaXN0aXlvciBtdXN1bnV6PycsIHsga2V5OiAnOjpCaWxnaScsIGRlZmF1bHRWYWx1ZTogJycgfSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gXCJjb25maXJtXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2Uuc2VuZEludm9pY2VCeUlkKGlkcy5tYXAocCA9PiBwLmlkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbyhcIkhlcmhhbmdpIGJpciBpxZ9sZW0gZ2Vyw6dla2xlxZ90aXJpbG1lZGkuXCIpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2Uuc2VuZEludm9pY2VCeUlkKGlkcy5tYXAocCA9PiBwLmlkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgKi9cclxuICAgIH1cclxuICAgIHNldERlc3BhdGNoQ2FuY2VsV2l0aE9wZW4ocmVjb3JkKSB7XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5zZXREZXNwYXRjaENhbmNlbEJ5SWQocmVjb3JkLmlkLCAxKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKFwiQmVsZ2UgYmHFn2FyxLF5bGEgaXB0YWxlIMOnZWtpbGVyZWssIGtheW5ha3RhIGfDvG5jZWxsZW5kaS5cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGVzcGF0Y2hDYW5jZWxXaXRoUmV2aXNlKHJlY29yZCkge1xyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0RGVzcGF0Y2hDYW5jZWxCeUlkKHJlY29yZC5pZCwgNikuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5keERlc3BhdGNoSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpXHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcyhcIkJlbGdlIGJhxZ9hcsSxeWxhIGlwdGFsZSDDp2VraWxlcmVrLCBrYXluYWt0YSBnw7xuY2VsbGVuZGkuXCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxpc3REZXNwYXRjaFJlY2VpdmVyUEsocmVjb3JkKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5naWJQYXJ0bmVyUGtTZXJ2aWNlLkdldEN1c3RvbWVyQWN0aXZlUEtTKHJlY29yZC5kZWxpdmVyeUN1c3RvbWVyUGFydHlWa25UY2tuLCAyKS5zdWJzY3JpYmUocGtzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXNwYXRjaFJlY2VpdmVyUEtEYXRhU291cmNlID0gcGtzLm1hcChpdGVtID0+ICh7IEFkcmVzOiBpdGVtIH0pKTs7XHJcbiAgICAgICAgICAgIHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hJZCA9IHJlY29yZC5pZDtcclxuICAgICAgICAgICAgdGhpcy5wa01vZGFsU2VsZWN0ZWREZXNwYXRjaFJlc291cmNlRG9jRW50cnkgPSByZWNvcmQucmVzb3VyY2VEb2NFbnRyeTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuaXNQS01vZGFsT3BlbiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGlzdEFjdGl2ZVNlcmllcyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLmhpdERvY3VtZW50U2VyaWFsU2VydmljZS5MaXN0QWN0aXZlU2VyaWVzRm9yRG9jdW1lbnQoMSkuc3Vic2NyaWJlKHNlcmlhbHMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRlc3BhdGNoU2VyaWFsRGF0YVNvdXJjZSA9IHNlcmlhbHMubWFwKGl0ZW0gPT4gKHsgU2VyaTogaXRlbSB9KSk7O1xyXG4gICAgICAgICAgICB0aGlzLnNlcmlhbE1vZGFsU2VsZWN0ZWREZXNwYXRjaElkID0gcmVjb3JkLmlkO1xyXG4gICAgICAgICAgICB0aGlzLnNlcmlhbE1vZGFsU2VsZWN0ZWREZXNwYXRjaFJlc291cmNlRG9jRW50cnkgPSByZWNvcmQucmVzb3VyY2VEb2NFbnRyeTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuaXNTZXJpYWxNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdFBLQWRkcmVzcyhyZWNvcmQpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhyZWNvcmQuQWRyZXMsIHRoaXMucGtNb2RhbFNlbGVjdGVkRGVzcGF0Y2hJZCwgdGhpcy5wa01vZGFsU2VsZWN0ZWREZXNwYXRjaFJlc291cmNlRG9jRW50cnkpXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZURlc3BhdGNoUmVjZWl2ZXIodGhpcy5wa01vZGFsU2VsZWN0ZWREZXNwYXRjaElkLCByZWNvcmQuQWRyZXMpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNQS01vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdERlc3BhdGNoU2VyaWFsKHJlY29yZCkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS51cGRhdGVEZXNwYXRjaFNlcmlhbCh0aGlzLnNlcmlhbE1vZGFsU2VsZWN0ZWREZXNwYXRjaElkLCByZWNvcmQuU2VyaSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc1NlcmlhbE1vZGFsT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGdldERlc3BhdGNoUHJldmlldyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0RGVzcGF0Y2hQcmV2aWV3KHJlY29yZC5pZCwgcmVjb3JkLnJlc291cmNlRG9jVHlwZSkuc3Vic2NyaWJlKGZhdHVyYSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOnRleHQvaHRtbDtiYXNlNjQsJHtmYXR1cmEucHJldmlld0hUTUx9YDtcclxuICAgICAgICAgICAgLy90aGlzLmhpdFNoYXJlZFNlcnZpY2UucHJldmlld0ZpbGUoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZmF0dXJhLnByZXZpZXdIVE1MKSkpKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IHdpbmRvdy5vcGVuKCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC50aXRsZSA9IHJlY29yZC5pZFxyXG4gICAgICAgICAgICBuZXdUYWIuZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBgPGlmcmFtZSBzcmM9XCIke3NvdXJjZX1cIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgc3R5bGU9XCJib3JkZXI6bm9uZTtcIj48L2lmcmFtZT5gO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZ2V0RGVzcGF0Y2hYTUwocmVjb3JkKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERlc3BhdGNoWE1MKHJlY29yZC5pZCwgcmVjb3JkLnJlc291cmNlRG9jVHlwZSkuc3Vic2NyaWJlKGlyc2FsaXllID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYGRhdGE6JHtpcnNhbGl5ZS5taW1lVHlwZX07YmFzZTY0LCR7aXJzYWxpeWUuY29udGVudH1gO1xyXG4gICAgICAgICAgICAvL3RoaXMuaGl0U2hhcmVkU2VydmljZS5wcmV2aWV3RmlsZShpcnNhbGl5ZS5jb250ZW50KTtcclxuXHJcblxyXG4gICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBsaW5rLmhyZWYgPSBzb3VyY2U7XHJcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBgJHtpcnNhbGl5ZS5maWxlbmFtZX1gO1xyXG4gICAgICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RG9jT2JqZWN0TmFtZShkYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuICgoZGF0YS5pc0RyYWZ0ID8gXCJUYXNsYWsgXCIgOiBcIlwiKSArIHRoaXMuZGVzcGF0Y2hPYmplY3RzRW51bUxvb2t1cC5maW5kKCh4KSA9PiB4LmlkID09IChkYXRhLmlzRHJhZnQgPyBkYXRhLnJlc291cmNlU3ViRG9jVHlwZSA6IGRhdGEucmVzb3VyY2VEb2NUeXBlKSkuZGlzcGxheU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEljb25DbGFzcyhyZXNwb25zZUlkKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlSWQgPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtY2xvY2tcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1jaGVjay1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS10aW1lcy1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1taW51cy1jaXJjbGVcIlxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXNwYXRjaFZpZXcocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERlc3BhdGNoVmlldyhyZWNvcmQudXVJZCkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgZGF0YToke2l0ZW0ubWltZVR5cGV9O2Jhc2U2NCwke2l0ZW0uY29udGVudH1gO1xyXG5cclxuICAgICAgICAgICAgLy8gIGNvbnN0IG5ld1RhYiA9IHdpbmRvdy5vcGVuKCk7XHJcbiAgICAgICAgICAgIC8vIG5ld1RhYi5kb2N1bWVudC50aXRsZSA9IHJlY29yZC5pZFxyXG4gICAgICAgICAgICAvLyBuZXdUYWIuZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBgPGlmcmFtZSBzcmM9XCIke3NvdXJjZX1cIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgc3R5bGU9XCJib3JkZXI6bm9uZTtcIj48L2lmcmFtZT5gO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmhpdFNoYXJlZFNlcnZpY2UucHJldmlld0ZpbGUoaXRlbS5jb250ZW50KTtcclxuXHJcbiAgICAgICAgICAgIC8qY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgbGluay5ocmVmID0gc291cmNlO1xyXG4gICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gYCR7aXRlbS5maWxlbmFtZX1gO1xyXG4gICAgICAgICAgICBsaW5rLmNsaWNrKCk7Ki9cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXNwYXRjaFJlc3BvbnNlcygpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0RGVzcGF0Y2hSZXNwb25zZXMobmV3IERhdGUoKS50b0lTT1N0cmluZygpLCBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKClcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGdldFJlY2VpdmVyUmVzcG9uc2VOYW1lKHJlc3BvbnNlSWQpIHtcclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMuZGVzcGF0Y2hSZWNlaXZlclJlc3BvbnNlTG9va3VwLmZpbmQoKHgpID0+IHguaWQgPT09IHJlc3BvbnNlSWQpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGlzcGxheU5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dBbGxGaWxlcyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLmRlc3BhdGNoRmlsZXNEYXRhU291cmNlID0gdGhpcy5zZXJ2aWNlLkxvYWREZXNwYXRjaEZpbGVzKHJlY29yZC51dUlkKVxyXG4gICAgICAgIHRoaXMuaXNGaWxlTW9kYWxPcGVuID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBEb3dubG9hZEZpbGUocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRvd25sb2FkRmlsZUJ5SWQocmVjb3JkLmNvbnRlbnRNYXN0ZXJJZCkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgZGF0YToke2l0ZW0ubWltZVR5cGV9O2Jhc2U2NCwke2l0ZW0uY29udGVudH1gO1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBsaW5rLmhyZWYgPSBzb3VyY2U7XHJcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBgJHtpdGVtLmZpbGVuYW1lfWA7XHJcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZFBERk11bHRpcGxlKCkge1xyXG4gICAgICAgIGxldCBpZHM6IEFycmF5PHsgaWQ6IHN0cmluZywgc2VsZWN0ZWRTZXJpYWw6IHN0cmluZyB9PiA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmR4RGVzcGF0Y2hJbnN0YW5jZS5pbnN0YW5jZS5nZXRWaXNpYmxlUm93cygpLmZpbHRlcihpID0+IGkuaXNTZWxlY3RlZCA9PSB0cnVlKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5kYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTZXJpYWw6IGVsZW1lbnQuZGF0YS5zZWxlY3RlZERlc3BhdGNoU2VyaWFsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERlc3BhdGNoUGRmc011bHRpcGxlKGlkcy5tYXAocCA9PiBwLmlkKSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICAgICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGRhdGEpO1xyXG4gICAgICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vemlwJyB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIMSwbmRpcm1lXHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIGEuZG93bmxvYWQgPSAnSXJzYWxpeWVsZXItJyArIHRoaXMuZ2V0WmlwRGF0ZSgpICsgJy56aXAnO1xyXG4gICAgICAgICAgICBhLmNsaWNrKCk7XHJcblxyXG4gICAgICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXRaaXBEYXRlKCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICAvLyBHw7xuLCBBeSwgWcSxbCwgU2FhdCwgRGFraWthLCBTYW5peWUgZm9ybWF0xLFuZGEgbWFudWVsIGTDvHplbmxlbWVcclxuICAgICAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGNvbnN0IGhvdXJzID0gU3RyaW5nKGRhdGUuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBtaW51dGVzID0gU3RyaW5nKGRhdGUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBTdHJpbmcoZGF0ZS5nZXRTZWNvbmRzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcblxyXG4gICAgICAgIHJldHVybiBgJHt5ZWFyfS4ke21vbnRofS4ke2RheX0tJHtob3Vyc30uJHttaW51dGVzfS4ke3NlY29uZHN9YDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRSZWNlaXB0QWR2aWNlUHJldmlldyhyZWNvcmQpIHtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0UmVjZWlwdEFkdmljZVByZXZpZXcocmVjb3JkLmlkLCkuc3Vic2NyaWJlKGRlc3BhdGNoID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gYGRhdGE6dGV4dC9odG1sO2Jhc2U2NCwke2Rlc3BhdGNoLnByZXZpZXdIVE1MfWA7XHJcbiAgICAgICAgICAgIC8vdGhpcy5oaXRTaGFyZWRTZXJ2aWNlLnByZXZpZXdGaWxlKGRlc3BhdGNoLnByZXZpZXdIVE1MKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IHdpbmRvdy5vcGVuKCk7XHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC50aXRsZSA9IHJlY29yZC5pZFxyXG4gICAgICAgICAgICBuZXdUYWIuZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBgPGlmcmFtZSBzcmM9XCIke3NvdXJjZX1cIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgc3R5bGU9XCJib3JkZXI6bm9uZTtcIj48L2lmcmFtZT5gO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59IiwiPGFicC1wYWdlIFt0aXRsZV09XCInZURvbnVzdW06OkRlc3BhdGNoZXMnIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZy1lbmQgcHQtMlwiPlxyXG4gICAgICA8IS0tIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG14LTJcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRXhwb3J0VG9FeGNlbEJ1c3lcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0VG9FeGNlbCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFeHBvcnRUb0V4Y2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgLS0+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uRGVzcGF0Y2hlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwiZG93bmxvYWRQREZNdWx0aXBsZSgpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1kb3dubG9hZCBtZS0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgIHt7ICdlRG9udXN1bTo6RG93bmxvYWRQREZNdWx0aXBsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uRGVzcGF0Y2hlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAoY2xpY2spPVwic2VuZERlc3BhdGNoTXVsdGlwbGUoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGUgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICB7eyAnZURvbnVzdW06OkFkZFRvUXVldWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICphYnBQZXJtaXNzaW9uPVwiJ2VEb251c3VtLkRlc3BhdGNoZXMuQ3JlYXRlJ1wiIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tc3VjY2Vzc1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCIgKGNsaWNrKT1cImdldERlc3BhdGNoUmVzcG9uc2VzKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXF1ZXN0aW9uIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpDaGVja1Jlc3BvbnNlcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwhLS0gPGJ1dHRvbiAqYWJwUGVybWlzc2lvbj1cIidlRG9udXN1bS5EZXNwYXRjaGVzLkNyZWF0ZSdcIiBjbGFzcz1cImJ0biBidG4teHMgYnRuLXN1Y2Nlc3NcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiIChjbGljayk9XCJzZW5kSW52b2ljZVRvRW50ZWdyYXRvcigpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZSBtZS0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgIHt7ICdlRG9udXN1bTo6U2VuZFRvRW50ZWdyYXRvck1hbnVhbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uRGVzcGF0Y2hlcy5DcmVhdGUnXCIgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi13YXJuaW5nXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cImdldEludm9pY2VzRnJvbUNvbm5lY3RvcigpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpHZXRGcm9tQ29ubmVjdG9yTWFudWFsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8cD5Hw7ZuZGVyaW1pIHRhbWFtbGFuYW4gdmUgZ8O2bmRlcmlsbWVzaSBiZWtsZW5lbiBpcnNhbGl5ZWxlcmkgbGlzdGVsZXllbiBla3JhbjwvcD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhEZXNwYXRjaEluc3RhbmNlIFtkYXRhU291cmNlXT1cImRlc3BhdGNoZXNEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxyXG4gICAgICAgIFtyZW1vdGVPcGVyYXRpb25zXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiIHN0eWxlPVwiaGVpZ2h0OiA3NXZoO1wiPlxyXG4gICAgICAgIDxkeG8tcGFnZXIgW3Zpc2libGVdPVwidHJ1ZVwiIFtzaG93SW5mb109XCJ0cnVlXCIgW2FsbG93ZWRQYWdlU2l6ZXNdPVwiWzUwLDEwMCwyMDBdXCIgW3Nob3dOYXZpZ2F0aW9uQnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgIFtzaG93UGFnZVNpemVTZWxlY3Rvcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keG8tcGFnZXI+XHJcbiAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjUwXCI+PC9keG8tcGFnaW5nPlxyXG4gICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJtdWx0aXBsZVwiIHNlbGVjdEFsbE1vZGU9XCJwYWdlXCIgc2hvd0NoZWNrQm94ZXNNb2RlPVwiYWx3YXlzXCI+XHJcbiAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWNob29zZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbZW5hYmxlZF09XCJ0cnVlXCIgbW9kZT1cInNlbGVjdFwiPjwvZHhvLWNvbHVtbi1jaG9vc2VyPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWdyb3VwLXBhbmVsIFt2aXNpYmxlXT1cInRydWVcIiBbYWxsb3dDb2x1bW5EcmFnZ2luZ109XCJ0cnVlXCI+PC9keG8tZ3JvdXAtcGFuZWw+XHJcbiAgICAgICAgPGR4by1ncm91cGluZyAjZXhwYW5kIFthdXRvRXhwYW5kQWxsXT1cImZhbHNlXCIgW2FsbG93Q29sbGFwc2luZ109XCJ0cnVlXCJcclxuICAgICAgICAgIFtjb250ZXh0TWVudUVuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWdyb3VwaW5nPlxyXG4gICAgICAgIDxkeG8taGVhZGVyLWZpbHRlciBbYWxsb3dTZWFyY2hdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCIgW2FsbG93RXhwb3J0U2VsZWN0ZWREYXRhXT1cImZhbHNlXCI+PC9keG8tZXhwb3J0PlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWZpbHRlci1idWlsZGVyIFthbGxvd0hpZXJhcmNoaWNhbEZpZWxkc109XCJ0cnVlXCI+PC9keG8tZmlsdGVyLWJ1aWxkZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1wYW5lbD5cclxuICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgPGR4by1zY3JvbGxpbmcgbW9kZT1cImhvcml6b250YWxcIiBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gICAgICAgIDxkeGktY29sdW1uIFtmaXhlZF09XCJ0cnVlXCIgZGF0YUZpZWxkPVwiaWRcIiB3aWR0aD1cIjEyMFwiIFthbGxvd0dyb3VwaW5nXT1cImZhbHNlXCIgW2FsbG93RmlsdGVyaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgIFthbGxvd0hlYWRlckZpbHRlcmluZ109XCJmYWxzZVwiIFthbGxvd0hpZGluZ109XCJmYWxzZVwiIFthbGxvd1Jlb3JkZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgY2VsbFRlbXBsYXRlPVwib3BlcmF0aW9uVGVtcGxhdGVcIiBjYXB0aW9uPVwie3sgJ0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVwiPlxyXG4gICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3cgb2YgJ29wZXJhdGlvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZHJvcGRvd24tdG9nZ2xlXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlIFtkaXNhYmxlZF09XCJkaXNhYmxlZElkQ29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZyBtci0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAge3sgJ0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwidXBkYXRlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImRlbGV0ZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnQWJwVWk6OkRlbGV0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNlbmREZXNwYXRjaFNpbmdsZShyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpBZGRUb1F1ZXVlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwic2V0RGVzcGF0Y2hDYW5jZWxXaXRoT3Blbihyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTZXRDYW5jZWxXaXRoT3BlbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNldERlc3BhdGNoQ2FuY2VsV2l0aFJldmlzZShyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpTZXRDYW5jZWxXaXRoUmV2aXNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwibGlzdERlc3BhdGNoUmVjZWl2ZXJQSyhyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2VsZWN0UmVjZWl2ZXJQSycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImxpc3RBY3RpdmVTZXJpZXMocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFza3NcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2VsZWN0U2VyaWFsRm9yRG9jdW1lbnQnIHxcclxuICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXREZXNwYXRjaFZpZXcocm93LmRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMzAwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSAzNDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDM4MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkdldFBERlZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXREZXNwYXRjaFByZXZpZXcocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlByZXZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXREZXNwYXRjaFhNTChyb3cuZGF0YSlcIiAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6UHJldmlld1hNTCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNob3dBbGxGaWxlcyhyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSAzMDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDM0MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gMzgwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3MDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2hvd0FsbEZpbGVzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZ2V0UmVjZWlwdEFkdmljZVByZXZpZXcocm93LmRhdGEpXCIgKm5nSWY9XCJyb3cuZGF0YS5zdGF0dXMgPT0gNzAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6U2hvd1Jlc3BvbnNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzc3VlRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06Oklzc3VlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVzb3VyY2VEb2NFbnRyeVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInJlc291cmNlRG9jTnVtXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVzb3VyY2VEb2NOdW0nfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRlc3BhdGNoSWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRlc3BhdGNoSWQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGNlbGxUZW1wbGF0ZT1cImRvY1R5cGVUZW1wbGF0ZVwiIGRhdGFGaWVsZD1cInJlc291cmNlRG9jVHlwZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jVHlwZSd8YWJwTG9jYWxpemF0aW9ufX1cIj5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdkb2NUeXBlVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICB7e2dldERvY09iamVjdE5hbWUoZGF0YS5kYXRhKX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGVsaXZlcnlDdXN0b21lclBhcnR5TmFtZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdDdXN0b21lclBhcnR5TmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZGVsaXZlcnlDdXN0b21lclBhcnR5VmtuVGNrblwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdDdXN0b21lclBhcnR5VmtuVGNrbid8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwic3RhdHVzXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTdGF0dXMnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJkZXNwYXRjaFN0YXR1c0xvb2t1cFwiIHZhbHVlRXhwcj1cImlkXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwcm9maWxlSWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRlc3BhdGNoUHJvZmlsZUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkZXNwYXRjaEFkdmljZVR5cGVDb2RlXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RGVzcGF0Y2hBZHZpY2VUeXBlQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVjZWl2ZXJSZXNwb25zZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6UmVjZWl2ZXJSZXNwb25zZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgY2VsbFRlbXBsYXRlPVwiaWNvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJkZXNwYXRjaFJlY2VpdmVyUmVzcG9uc2VMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIj5cclxuICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdpY29uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UpXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydjb2xvcic6ZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzEnID8gJ2dyZWVuJyA6IGRhdGEuZGF0YS5yZWNlaXZlclJlc3BvbnNlID09ICcyJyA/ICdyZWQnIDogZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzMnID8gJ29yYW5nZScgOiAnZ3JheSd9XCI+PC9pPlxyXG4gICAgICAgICAge3tnZXRSZWNlaXZlclJlc3BvbnNlTmFtZShkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSl9fVxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVjZWl2ZXJSZXNwb25zZURlc2NcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZWNlaXZlclJlc3BvbnNlRGVzYyd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jdW1lbnRDdXJyZW5jeUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0N1cnJlbmN5J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzZWxlY3RlZFJlY2VpdmVyUEtcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTZWxlY3RlZFJlY2VpdmVyUEsnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInNlbGVjdGVkRGVzcGF0Y2hTZXJpYWxcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpTZWxlY3RlZERlc3BhdGNoU2VyaWFsJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ1dUlkXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpVdUlkJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9hYnAtcGFnZT5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNGaWxlTW9kYWxCdXN5XCIgWyh2aXNpYmxlKV09XCJpc0ZpbGVNb2RhbE9wZW5cIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAnZURvbnVzdW06OkRlc3BhdGNoRmlsZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeERlc3BhdGNoRmlsZUluc3RhbmNlIFtkYXRhU291cmNlXT1cImRlc3BhdGNoRmlsZXNEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIiBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwiZmFsc2VcIiBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDUwdmg7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBbZml4ZWRdPVwidHJ1ZVwiIGRhdGFGaWVsZD1cImlkXCIgd2lkdGg9XCIxMjBcIiBbYWxsb3dHcm91cGluZ109XCJmYWxzZVwiIFthbGxvd0ZpbHRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIFthbGxvd0hlYWRlckZpbHRlcmluZ109XCJmYWxzZVwiIFthbGxvd0hpZGluZ109XCJmYWxzZVwiIFthbGxvd1Jlb3JkZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiIGNhcHRpb249XCJ7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRJZENvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZyBtci0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiRG93bmxvYWRGaWxlKHJvdy5kYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZG93bmxvYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6RG93bmxvYWQnIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCIgZGF0YUZpZWxkPVwiZXh0cmFJdGVtXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpOYW1lJ3xhYnBMb2NhbGl6YXRpb259fVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWxvb2t1cCBbZGF0YVNvdXJjZV09XCJkZXNwYXRjaEZpbGVOYW1lTG9va3VwXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHhvLWxvb2t1cD5cclxuICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT5cclxuICAgICAge3sgJ0FicFVpOjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcbjxhYnAtbW9kYWwgW2J1c3ldPVwiaXNTZXJpYWxNb2RhbEJ1c3lcIiBbKHZpc2libGUpXT1cImlzU2VyaWFsTW9kYWxPcGVuXCIgW29wdGlvbnNdPVwieyBzaXplOiAnbGcnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAgQmVsZ2UgU2VyaSBTZcOnaW1pXHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeERlc3BhdGNoU2VyaWFsSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiZGVzcGF0Y2hTZXJpYWxEYXRhU291cmNlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIiBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2NvbHVtbkhpZGluZ0VuYWJsZWRdPVwiZmFsc2VcIiBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDUwdmg7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBbd2lkdGhdPVwiODBcIiBjZWxsVGVtcGxhdGU9XCJvcGVyYXRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvdyBvZiAnb3BlcmF0aW9uVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiAoY2xpY2spPVwic2VsZWN0RGVzcGF0Y2hTZXJpYWwocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBTZcOnXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiU2VyaVwiIGNhcHRpb249XCJTZXJpXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc1BLTW9kYWxCdXN5XCIgWyh2aXNpYmxlKV09XCJpc1BLTW9kYWxPcGVuXCIgW29wdGlvbnNdPVwieyBzaXplOiAnbGcnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAge3twa01vZGFsU2VsZWN0ZWREZXNwYXRjaFJlc291cmNlRG9jRW50cnl9fSB7eyAnZURvbnVzdW06OlJlY2VpdmVyUEtTJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZHhSZWNlaXZlclBLU0luc3RhbmNlIFtkYXRhU291cmNlXT1cImRlc3BhdGNoUmVjZWl2ZXJQS0RhdGFTb3VyY2VcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJmYWxzZVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc29ydGluZyBtb2RlPVwic2luZ2xlXCI+PC9keG8tc29ydGluZz5cclxuICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIFt3aWR0aF09XCI4MFwiIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJzZWxlY3RQS0FkZHJlc3Mocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBTZcOnXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiQWRyZXNcIiBjYXB0aW9uPVwiQWRyZXNcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+Il19