@hitsoft/e-donusum 1.0.45 → 1.0.46

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 (58) hide show
  1. package/config/providers/document-serial-route.provider.d.ts +9 -0
  2. package/esm2020/config/e-donusum-config.module.mjs +4 -2
  3. package/esm2020/config/providers/document-serial-route.provider.mjs +19 -0
  4. package/esm2020/lib/components/hit-inbound-invoices/hit-inbound-invoice.component.mjs +3 -3
  5. package/esm2020/lib/components/hit-paramas-invoices/hit-params-invoice.component.mjs +8 -4
  6. package/esm2020/lib/components/hit-params-dispatches/hit-params-dispatch.component.mjs +8 -4
  7. package/esm2020/lib/despatches/despatch/despatch.module.mjs +1 -1
  8. package/esm2020/lib/document-serials/document-serial/components/document-serial.component.mjs +100 -0
  9. package/esm2020/lib/document-serials/document-serial/document-serial-routing.module.mjs +26 -0
  10. package/esm2020/lib/document-serials/document-serial/document-serial.module.mjs +52 -0
  11. package/esm2020/lib/e-donusum-routing.module.mjs +8 -3
  12. package/esm2020/lib/gib-partner-pk-alls/gib-partner-pk-all/gib-partner-pk-all.module.mjs +1 -1
  13. package/esm2020/lib/gib-partner-pks/gib-partner-pk/gib-partner-pk.module.mjs +1 -1
  14. package/esm2020/lib/hit-proxy/hit-params-dispatches/hit-params-dispatch.service.mjs +5 -1
  15. package/esm2020/lib/hit-proxy/hit-params-invoices/hit-params-invoice.service.mjs +5 -1
  16. package/esm2020/lib/invoices/invoice/invoice.module.mjs +1 -1
  17. package/esm2020/lib/note-rules/note-rule/note-rule.module.mjs +1 -1
  18. package/esm2020/lib/params-companies/params-company/params-company.module.mjs +1 -1
  19. package/esm2020/lib/paramse-dispatches/paramse-dispatch/components/paramse-dispatch.component.mjs +5 -4
  20. package/esm2020/lib/paramse-invoices/paramse-invoice/components/paramse-invoice.component.mjs +5 -4
  21. package/esm2020/lib/proxy/document-serials/document-serial.service.mjs +41 -0
  22. package/esm2020/lib/proxy/document-serials/models.mjs +2 -0
  23. package/esm2020/lib/proxy/note-rule-doc-types/index.mjs +1 -1
  24. package/esm2020/lib/proxy/note-rule-scenarios/index.mjs +1 -1
  25. package/esm2020/lib/proxy/note-rules/index.mjs +1 -1
  26. package/esm2020/lib/proxy/params-companies/index.mjs +1 -1
  27. package/esm2020/lib/proxy/params-generals/index.mjs +1 -1
  28. package/esm2020/lib/proxy/params-integrators/index.mjs +1 -1
  29. package/esm2020/lib/proxy/paramse-dispatches/index.mjs +1 -1
  30. package/esm2020/lib/proxy/paramse-dispatches/models.mjs +1 -1
  31. package/esm2020/lib/proxy/paramse-dispatches/paramse-dispatch.service.mjs +2 -2
  32. package/esm2020/lib/proxy/paramse-invoices/index.mjs +1 -1
  33. package/esm2020/lib/proxy/paramse-invoices/models.mjs +1 -1
  34. package/esm2020/lib/proxy/paramse-invoices/paramse-invoice.service.mjs +2 -2
  35. package/esm2020/lib/proxy/xslt-formats/index.mjs +1 -1
  36. package/esm2020/lib/proxy/xslt-rule-doc-types/index.mjs +1 -1
  37. package/esm2020/lib/proxy/xslt-rule-scenarios/index.mjs +1 -1
  38. package/esm2020/lib/proxy/xslt-rules/index.mjs +1 -1
  39. package/fesm2015/hitsoft-e-donusum-config.mjs +116 -98
  40. package/fesm2015/hitsoft-e-donusum-config.mjs.map +1 -1
  41. package/fesm2015/hitsoft-e-donusum.mjs +323 -126
  42. package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
  43. package/fesm2020/hitsoft-e-donusum-config.mjs +116 -98
  44. package/fesm2020/hitsoft-e-donusum-config.mjs.map +1 -1
  45. package/fesm2020/hitsoft-e-donusum.mjs +330 -126
  46. package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
  47. package/lib/components/hit-paramas-invoices/hit-params-invoice.component.d.ts +1 -0
  48. package/lib/components/hit-params-dispatches/hit-params-dispatch.component.d.ts +1 -0
  49. package/lib/document-serials/document-serial/components/document-serial.component.d.ts +33 -0
  50. package/lib/document-serials/document-serial/document-serial-routing.module.d.ts +7 -0
  51. package/lib/document-serials/document-serial/document-serial.module.d.ts +15 -0
  52. package/lib/hit-proxy/hit-params-dispatches/hit-params-dispatch.service.d.ts +1 -0
  53. package/lib/hit-proxy/hit-params-invoices/hit-params-invoice.service.d.ts +1 -0
  54. package/lib/proxy/document-serials/document-serial.service.d.ts +16 -0
  55. package/lib/proxy/document-serials/models.d.ts +24 -0
  56. package/lib/proxy/paramse-dispatches/models.d.ts +5 -0
  57. package/lib/proxy/paramse-invoices/models.d.ts +5 -0
  58. package/package.json +1 -1
@@ -126,7 +126,7 @@ export class HitInboundInvoiceComponent {
126
126
  this.buildFormForPartner(record);
127
127
  }
128
128
  else
129
- this.toasterService.error(record.accountingCustomerPartyVknTckn + " numaralı satıcı zaten mevcut.");
129
+ this.toasterService.error(record.accountingSupplierPartyVknTckn + " numaralı satıcı zaten mevcut.");
130
130
  });
131
131
  }
132
132
  getStates() {
@@ -261,7 +261,7 @@ export class HitInboundInvoiceComponent {
261
261
  this.toasterService.info("Muhatap kontrolü yapılıyor, lütfen bekleyiniz.");
262
262
  this.service.checkBusinessPartnerExist(record.accountingSupplierPartyVknTckn).subscribe(result => {
263
263
  if (!result) {
264
- this.toasterService.error("İlgili VKN'ye ait (" + record.accountingCustomerPartyVknTckn + ") muhatap bulunamadı, lütfen önce muhatap oluşturun.");
264
+ this.toasterService.error("İlgili VKN'ye ait (" + record.accountingSupplierPartyVknTckn + ") muhatap bulunamadı, lütfen önce muhatap oluşturun.");
265
265
  }
266
266
  else {
267
267
  this.selectedInboundInvoice = record;
@@ -447,4 +447,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
447
447
  type: ViewChild,
448
448
  args: ['tabPanel', { static: false }]
449
449
  }] } });
450
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWluYm91bmQtaW52b2ljZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1pbmJvdW5kLWludm9pY2VzL2hpdC1pbmJvdW5kLWludm9pY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtaW5ib3VuZC1pbnZvaWNlcy9oaXQtaW5ib3VuZC1pbnZvaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxhQUFhLEVBQXFCLFdBQVcsRUFBa0IsTUFBTSxjQUFjLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJNUQsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtwRSxPQUFPLEVBQUUsUUFBUSxFQUFPLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFTckMsTUFBTSxPQUFPLDBCQUEwQjtJQTRDbkMsWUFDb0IsSUFBaUIsRUFDaEIsT0FBaUMsRUFDakMsY0FBaUMsRUFDakMsV0FBd0IsRUFDeEIscUJBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLDJCQUEyRDtRQU41RCxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQWE7UUFDbEMsbUJBQWMs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bUJDLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBQ2QsdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO3VTQUtsQix3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0ssMkJBQTJCO3NCQUF2RixTQUFTO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDTCxvQkFBb0I7c0JBQXpFLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNWLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgaXNOdWxsT3JFbXB0eSwgaXNOdWxsT3JVbmRlZmluZWQsIExpc3RTZXJ2aWNlLCBQYWdlZFJlc3VsdER0byB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQsIER4VGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBIaXRJbmJvdW5kSW52b2ljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWluYm91bmQtaW52b2ljZXMvaGl0LWluYm91bmQtaW52b2ljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0SW52b2ljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWludm9pY2VzL2hpdC1pbnZvaWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgZm9ybWF0RGF0ZSwgZ2V0TG9jYWxlRGF0ZUZvcm1hdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEhpdEJ1c2luZXNzUGFydG5lckdyb3VwU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtYnVzaW5lc3MtcGFydG5lci1ncm91cHMvaGl0LWJ1c2luZXNzLXBhcnRuZXItZ3JvdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IEJwQWRkcmVzcywgQ29ubmVjdG9yRHJhZnREb2N1bWVudER0bywgQ29ubmVjdG9yRHJhZnREb2N1bWVudExpbmVEdG8sIENyZWF0ZUJ1c2luZXNzUGFydG5lclN1cHBsaWVyRHRvLCBPcGVuRG9jdW1lbnREdG8gfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWluYm91bmQtaW52b2ljZXMvbW9kZWxzJztcclxuaW1wb3J0IHsgZmluYWxpemUsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1pbmJvdW5kLWludm9pY2UnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gICAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9oaXQtaW5ib3VuZC1pbnZvaWNlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRJbmJvdW5kSW52b2ljZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkeEluYm91bmRJbnZvaWNlSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeFB1cmNoYXNlT3JkZXJEb2N1bWVudHMnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhQdXJjaGFzZU9yZGVyRG9jdW1lbnRzOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeFB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHMnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhQdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeERyYWZ0RG9jdW1lbnRMaW5lcycsIHsgc3RhdGljOiBmYWxzZSB9KSBkeERyYWZ0RG9jdW1lbnRMaW5lczogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgndGFiUGFuZWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGFiUGFuZWw6IER4VGFiUGFuZWxDb21wb25lbnRcclxuXHJcbiAgICBpbmJvdW5kSW52b2ljZXNEYXRhU291cmNlOiBhbnlcclxuICAgIGluYm91bmRJbnZvaWNlU3RhdHVzTG9va3VwOiBhbnlcclxuICAgIGluYm91bmRJbnZvaWNlUmVjZWl2ZXJSZXNwb25zZUxvb2t1cDogYW55XHJcblxyXG4gICAgcGFydG5lckF2YWlsYWJsZUFjY291bnRzOiBBcnJheTx7IGlkOiBzdHJpbmcsIHRleHQ6IHN0cmluZyB9PiA9IFtdO1xyXG4gICAgb2JqZWN0VHlwZXNMb29rdXA6IEFycmF5PHsgaWQ6IHN0cmluZywgdGV4dDogc3RyaW5nIH0+ID0gW1xyXG4gICAgICAgIHsgaWQ6IFwiMjBcIiwgdGV4dDogXCJTYXTEsW4gQWxtYSDEsHJzYWxpeWVzaVwiIH0sXHJcbiAgICAgICAgeyBpZDogXCIyMlwiLCB0ZXh0OiBcIlNhdMSxbiBBbG1hIFNpcGFyacWfaVwiIH1cclxuICAgIF07IHBhcnRuZXJBdmFpbGFibGVTZXJpZXM6IFtdO1xyXG4gICAgcGFydG5lckF2YWlsYWJsZUdyb3VwczogW107XHJcbiAgICBwYXJ0bmVyQXZhaWxhYmxlQ291bnRyaWVzOiBbXTtcclxuICAgIHBhcnRuZXJBdmFpbGFibGVTdGF0ZXM6IFtdO1xyXG4gICAgb3BlbkRvY3VtZW50c0ZvclBhcnRuZXI6IFtdO1xyXG4gICAgaW52b2ljZU9iamVjdHNFbnVtTG9va3VwOiBhbnk7XHJcbiAgICBwdXJjaGFzZU9yZGVyRG9jdW1lbnRzOiBbXTtcclxuICAgIGRyYWZ0RG9jdW1lbnRMaW5lczogT3BlbkRvY3VtZW50RHRvW10gPSBbXTtcclxuICAgIHB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHM6IFtdO1xyXG4gICAgaXNNb2RhbEJ1c3lGb3JSZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgaXNNb2RhbE9wZW5Gb3JSZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgaXNNb2RhbEJ1c3lGb3JQYXJ0bmVyID0gZmFsc2U7XHJcbiAgICBpc01vZGFsT3BlbkZvclBhcnRuZXIgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yT3BlbkRvY3MgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxPcGVuRm9yT3BlbkRvY3MgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yRHJhZnQgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxPcGVuRm9yRHJhZnQgPSBmYWxzZTtcclxuICAgIGlzTG9hZGluZ1N0YXRlcyA9IGZhbHNlO1xyXG4gICAgaXNMb2FkaW5nU2VyaWVzID0gZmFsc2U7XHJcbiAgICBpc0xvYWRpbmdHcm91cHMgPSBmYWxzZTtcclxuICAgIGlzTG9hZGluZ0FjY291bnRzID0gZmFsc2U7XHJcbiAgICBpc0xvYWRpbmdDb3VudHJpZXMgPSBmYWxzZTtcclxuXHJcbiAgICBmYXR1cmFPbml6bGVtZTogYW55O1xyXG4gICAgZm9ybVJlc3BvbnNlOiBGb3JtR3JvdXA7XHJcbiAgICBmb3JtUGFydG5lcjogRm9ybUdyb3VwO1xyXG5cclxuICAgIHNlbGVjdGVkSW5ib3VuZEludm9pY2U6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBIaXRJbmJvdW5kSW52b2ljZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnZvaWNlU2VydmljZTogSGl0SW52b2ljZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlckZvclBhcnRuZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RlclNlcnZpY2U6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYnVzaW5lc3NQYXJ0bmVyR3JvdXBTZXJ2aWNlOiBIaXRCdXNpbmVzc1BhcnRuZXJHcm91cFNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbmJvdW5kSW52b2ljZXNEYXRhU291cmNlID0gdGhpcy5zZXJ2aWNlLkxvYWRJbmJvdW5kSW52b2ljZXM7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRTdGF0dXNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbmJvdW5kSW52b2ljZVN0YXR1c0xvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRSZWNlaXZlclJlc3BvbnNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbmJvdW5kSW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0NvdW50cmllcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldENvdW50cmllcygpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQ291bnRyaWVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVDb3VudHJpZXMgPSBsaXN0O1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiw5xsa2VsZXIgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY291bnRyaWVzOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nR3JvdXBzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmJ1c2luZXNzUGFydG5lckdyb3VwU2VydmljZS5nZXRTdXBwbGllckdyb3VwcygpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nR3JvdXBzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVHcm91cHMgPSBsaXN0O1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiUGFydG5lciBncnVwbGFyxLEgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZ3JvdXBzOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0U2FwT2JqZWN0cygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlT2JqZWN0c0VudW1Mb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldEluYm91bmRJbnZvaWNlKCkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRJbmJvdW5kSW52b2ljZShuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSlcclxuICAgIH1cclxuXHJcbiAgICBnZXRJbnZvaWNlUHJldmlldyhyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldEludm9pY2VQcmV2aWV3KHJlY29yZC5pZCwgMTAwMDAwMCkuc3Vic2NyaWJlKGZhdHVyYSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOnRleHQvaHRtbDtiYXNlNjQsJHtmYXR1cmEucHJldmlld0hUTUx9YDtcclxuICAgICAgICAgICAgY29uc3QgbmV3VGFiID0gd2luZG93Lm9wZW4oKTtcclxuICAgICAgICAgICAgbmV3VGFiLmRvY3VtZW50LnRpdGxlID0gcmVjb3JkLmlkXHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IGA8aWZyYW1lIHNyYz1cIiR7c291cmNlfVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBzdHlsZT1cImJvcmRlcjpub25lO1wiPjwvaWZyYW1lPmA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblJlc3BvbnNlTW9kYWwocmVjb3JkKSB7XHJcblxyXG4gICAgICAgIHRoaXMuYnVpbGRGb3JtKHJlY29yZCk7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvclJlc3BvbnNlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZEZvcm0ocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUmVzcG9uc2UgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgaWQ6IHJlY29yZC5pZCxcclxuICAgICAgICAgICAgaW52b2ljZVVVSUQ6IHJlY29yZC51dUlkLFxyXG4gICAgICAgICAgICBpc0FjY2VwdGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNSZWplY3RlZDogZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kSW52b2ljZVJlc3BvbnNlKHJlc3BvbnNlOiBib29sZWFuKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm1SZXNwb25zZS5pbnZhbGlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLmZvcm1SZXNwb25zZS52YWx1ZVxyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2VuZEludm9pY2VSZXNwb25zZShyZXN1bHQuaW52b2ljZVVVSUQsIHJlc3BvbnNlLCByZXN1bHQuaWQpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvclJlc3BvbnNlID0gZmFsc2U7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUGFydG5lck1vZGFsKHJlY29yZCkge1xyXG5cclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJNdWhhdGFwIGtvbnRyb2zDvCB5YXDEsWzEsXlvciwgbMO8dGZlbiBiZWtsZXlpbml6LlwiKVxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jaGVja0J1c2luZXNzUGFydG5lckV4aXN0KHJlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZEZvcm1Gb3JQYXJ0bmVyKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihyZWNvcmQuYWNjb3VudGluZ0N1c3RvbWVyUGFydHlWa25UY2tuICsgXCIgbnVtYXJhbMSxIHNhdMSxY8SxIHphdGVuIG1ldmN1dC5cIilcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0ZXMoKSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdTdGF0ZXMgPSB0cnVlO1xyXG4gICAgICAgIC8vIMOWbmNlIG1ldmN1dCBzdGF0ZSBzZcOnaW1pbmkgdGVtaXpsZVxyXG4gICAgICAgIHRoaXMuZm9ybVBhcnRuZXIuY29udHJvbHMucGFydG5lclN0YXRlLnNldFZhbHVlKCcnKTtcclxuICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVTdGF0ZXMgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFN0YXRlcyh0aGlzLmZvcm1QYXJ0bmVyLmNvbnRyb2xzLnBhcnRuZXJDb3VudHJ5LnZhbHVlKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ1N0YXRlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJ0bmVyQXZhaWxhYmxlU3RhdGVzID0gbGlzdDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIsSwbC9leWFsZXQgYmlsZ2lsZXJpIHnDvGtsZW5pcmtlbiBiaXIgaGF0YSBvbHXFn3R1LlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHN0YXRlczonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGVGb3JtUGFydG5lcigpIHtcclxuICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yUGFydG5lciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFydG5lci5yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUJ1c2luZXNzUGFydG5lcigpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtUGFydG5lci5pbnZhbGlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JQYXJ0bmVyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgbGV0IHJlcXVlc3REdG9BZGRyZXNzZXM6IEJwQWRkcmVzc1tdID0gW11cclxuICAgICAgICByZXF1ZXN0RHRvQWRkcmVzc2VzLnB1c2goe1xyXG4gICAgICAgICAgICBhZGRyZXNzTmFtZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJBZGRyZXNzPy52YWx1ZSxcclxuICAgICAgICAgICAgc3RyZWV0OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lclN0cmVldD8udmFsdWUsXHJcbiAgICAgICAgICAgIGJsb2NrOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckJsb2NrPy52YWx1ZSxcclxuICAgICAgICAgICAgemlwQ29kZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJaaXBDb2RlPy52YWx1ZSxcclxuICAgICAgICAgICAgY2l0eTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJDaXR5Py52YWx1ZSxcclxuICAgICAgICAgICAgY291bnR5OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckNvdW50eT8udmFsdWUsXHJcbiAgICAgICAgICAgIGNvdW50cnk6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQ291bnRyeT8udmFsdWUsXHJcbiAgICAgICAgICAgIHN0YXRlOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lclN0YXRlPy52YWx1ZSxcclxuICAgICAgICAgICAgYWRkcmVzc1R5cGU6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQWRkcmVzc1R5cGU/LnZhbHVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCByZXF1ZXN0RHRvOiBDcmVhdGVCdXNpbmVzc1BhcnRuZXJTdXBwbGllckR0byA9IHtcclxuICAgICAgICAgICAgY2FyZENvZGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHVuaWZpZWRGZWRlcmFsVGF4SUQ6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy52a24/LnZhbHVlLFxyXG4gICAgICAgICAgICBjYXJkTmFtZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/Lm5hbWU/LnZhbHVlLFxyXG4gICAgICAgICAgICBjYXJkVHlwZTogXCJTXCIsXHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckN1cnJlbmN5Py52YWx1ZSxcclxuICAgICAgICAgICAgZGViaXRvckFjY291bnQ6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQWNjb3VudD8udmFsdWUsXHJcbiAgICAgICAgICAgIHNlcmllczogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJTZXJpZXM/LnZhbHVlLFxyXG4gICAgICAgICAgICBncm91cENvZGU6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyR3JvdXA/LnZhbHVlLFxyXG4gICAgICAgICAgICB3ZWJzaXRlOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lcldlYlNpdGVVUkk/LnZhbHVlLFxyXG4gICAgICAgICAgICBhZGRpdGlvbmFsSUQ6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQWRkSWQ/LnZhbHVlLFxyXG4gICAgICAgICAgICBicEFkZHJlc3NlczogcmVxdWVzdER0b0FkZHJlc3Nlc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVCdXNpbmVzc1BhcnRuZXJGb3JTdXBwbGllcihyZXF1ZXN0RHRvKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVGb3JtUGFydG5lcigpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MocmVzdWx0LmNhcmRDb2RlICsgXCIga29kbHUgbXVoYXRhcCBiYcWfYXLEsXlsYSBvbHXFn3R1cnVsZHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiTXVoYXRhcCBvbHXFn3R1cnVsdXJrZW4gYmlyIGhhdGEgb2x1xZ90dS5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignTXVoYXRhcCBvbHXFn3R1cnVsdXJrZW4gYmlyIGhhdGEgb2x1xZ90dTonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkRm9ybUZvclBhcnRuZXIocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFBhcnRuZXJEZXRhaWxzKHJlY29yZC5pZCkuc3Vic2NyaWJlKGludm9pY2UgPT4ge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFydG5lciA9IHRoaXMuZm9ybUJ1aWxkZXJGb3JQYXJ0bmVyLmdyb3VwKHtcclxuICAgICAgICAgICAgICAgIHZrbjogW3JlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24gPz8gXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIG5hbWU6IFtyZWNvcmQuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlOYW1lID8/IFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgICAgICBwYXJ0bmVyQ3VycmVuY3k6IFtyZWNvcmQuZG9jdW1lbnRDdXJyZW5jeUNvZGUgPz8gXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJBY2NvdW50OiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJTZXJpZXM6IFtcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckdyb3VwOiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJFbWFpbDogW2ludm9pY2U/LmFjY291bnRpbmdTdXBwbGllclBhcnR5Py5wYXJ0eT8uY29udGFjdD8uZWxlY3Ryb25pY01haWw/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lcldlYlNpdGVVUkk6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LndlYnNpdGVVUkk/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckFkZElkOiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wYXJ0eVRheFNjaGVtZT8udGF4U2NoZW1lPy5uYW1lPy52YWx1ZSA/PyBcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckFkZHJlc3NUeXBlOiBcIkJcIixcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJBZGRyZXNzOiBcIkZhdHVyYSBBZHJlc2lcIixcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJTdHJlZXQ6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LnBvc3RhbEFkZHJlc3M/LnN0cmVldE5hbWU/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckJsb2NrOiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wb3N0YWxBZGRyZXNzPy5ibG9ja05hbWU/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckNpdHk6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LnBvc3RhbEFkZHJlc3M/LmNpdHlOYW1lPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJaaXBDb2RlOiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wb3N0YWxBZGRyZXNzPy5wb3N0YWxab25lPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJDb3VudHk6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LnBvc3RhbEFkZHJlc3M/LmNpdHlTdWJkaXZpc2lvbk5hbWU/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lclN0YXRlOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckNvdW50cnk6IFwiXCJcclxuXHJcbiAgICAgICAgICAgICAgICAvL3BhcnRuZXJDaXR5OiBpbnZvaWNlRGV0YWlscy5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdBY2NvdW50cyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldEJhbmtBY2NvdW50QnlDdXJyZW5jeShyZWNvcmQuZG9jdW1lbnRDdXJyZW5jeUNvZGUpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQWNjb3VudHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFydG5lckF2YWlsYWJsZUFjY291bnRzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVBY2NvdW50cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmFjY3RDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogZWxlbWVudC5hY2N0Q29kZSArIFwiIFwiICsgZWxlbWVudC5hY2N0TmFtZS50b1VwcGVyQ2FzZSgpICsgXCIgXCIgKyBlbGVtZW50LmFjdEN1cnIudG9VcHBlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIkJhbmthIGhlc2FwbGFyxLEgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgYWNjb3VudHM6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdTZXJpZXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRQYXJ0bmVyTnVtYmVyaW5nU2VyaWVzKClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdTZXJpZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFydG5lckF2YWlsYWJsZVNlcmllcyA9IGxpc3Q7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJTZXJpIG51bWFyYWxhcsSxIHnDvGtsZW5pcmtlbiBiaXIgaGF0YSBvbHXFn3R1LlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHNlcmllczonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVTdGF0ZXMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRHJhZnRGb3JtKHJlY29yZCkge1xyXG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbyhcIk11aGF0YXAga29udHJvbMO8IHlhcMSxbMSxeW9yLCBsw7x0ZmVuIGJla2xleWluaXouXCIpXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNoZWNrQnVzaW5lc3NQYXJ0bmVyRXhpc3QocmVjb3JkLmFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbikuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwixLBsZ2lsaSBWS04neWUgYWl0IChcIiArIHJlY29yZC5hY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eVZrblRja24gKyBcIikgbXVoYXRhcCBidWx1bmFtYWTEsSwgbMO8dGZlbiDDtm5jZSBtdWhhdGFwIG9sdcWfdHVydW4uXCIpXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlID0gcmVjb3JkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvckRyYWZ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5PcGVuRG9jdW1lbnRzRm9ybSgpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJBw6fEsWsgYmVsZ2Ugc2F0xLFybGFyxLEgc29yZ3VsYW7EsXlvciwgbMO8dGZlbiBiZWtsZXlpbml6LlwiKVxyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0T3BlbkRvY3VtZW50cyh0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbkRvY3VtZW50c0ZvclBhcnRuZXIgPSBsaXN0O1xyXG5cclxuICAgICAgICAgICAgaWYgKGxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wdXJjaGFzZU9yZGVyRG9jdW1lbnRzID0gbGlzdC5maWx0ZXIoZG9jID0+IGRvYy5vYmpUeXBlID09PSAyMik7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2F0xLFuIGFsbWEgc2lwYXJpxZ9sZXJpIChPYmpUeXBlPTIyKTonLCB0aGlzLnB1cmNoYXNlT3JkZXJEb2N1bWVudHMpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIE9ialR5cGU9MjAgb2xhbmxhcsSxIHNhdMSxbiBhbG1hIGlyc2FsaXllc2kgdGFixLFuYSBmaWx0cmVsZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzID0gbGlzdC5maWx0ZXIoZG9jID0+IGRvYy5vYmpUeXBlID09PSAyMCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2F0xLFuIGFsbWEgaXJzYWxpeWVsZXJpIChPYmpUeXBlPTIwKTonLCB0aGlzLnB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgLy8gT2JqVHlwZT0yMiBvbGFubGFyxLEgc2F0xLFuIGFsbWEgc2lwYXJpxZ9pIHRhYsSxbmEgZmlsdHJlbGVcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yT3BlbkRvY3MgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS53YXJuKFwixLBsZ2lsaSBtdWhhdGFwIGnDp2luIGHDp8SxayBiZWxnZSBzYXTEsXLEsSBidWx1bmFtYWTEsS5cIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdE9wZW5Eb2N1bWVudHMoKSB7XHJcbiAgICAgICAgbGV0IHB1cmNoYXNlRGVzcGF0Y2hlcyA9IHRoaXMuZHhQdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzLmluc3RhbmNlLmdldFNlbGVjdGVkUm93c0RhdGEoKVxyXG4gICAgICAgIGxldCBwdXJjaGFzZU9yZGVycyA9IHRoaXMuZHhQdXJjaGFzZU9yZGVyRG9jdW1lbnRzLmluc3RhbmNlLmdldFNlbGVjdGVkUm93c0RhdGEoKVxyXG4gICAgICAgIGxldCByZWZlcmVuY2VEb2NzID0gW107XHJcbiAgICAgICAgaWYgKHB1cmNoYXNlT3JkZXJzLmxlbmd0aCA+IDAgJiYgcHVyY2hhc2VEZXNwYXRjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIlJlZmVyYW5zIG9sYXJhayB5YWxuxLF6Y2EgYmlyIGJlbGdlIHTDvHLDvCBzZcOnaWxlYmlsaXIuXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocHVyY2hhc2VPcmRlcnMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgcmVmZXJlbmNlRG9jcyA9IHB1cmNoYXNlT3JkZXJzO1xyXG4gICAgICAgIGlmIChwdXJjaGFzZURlc3BhdGNoZXMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgcmVmZXJlbmNlRG9jcyA9IHB1cmNoYXNlRGVzcGF0Y2hlcztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZnREb2N1bWVudExpbmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHJlZmVyZW5jZURvY3Muc29tZShlID0+ICF0aGlzLmRyYWZ0RG9jdW1lbnRMaW5lcy5zb21lKGQgPT4gZC5vYmpUeXBlID09PSBlLm9ialR5cGUpKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIlJlZmVyYW5zIG9sYXJhayB5YWxuxLF6Y2EgYmlyIGJlbGdlIHTDvHLDvCBzZcOnaWxlYmlsaXIuXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWZlcmVuY2VEb2NzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICF0aGlzLmRyYWZ0RG9jdW1lbnRMaW5lcy5zb21lKGRyYWZ0ID0+XHJcbiAgICAgICAgICAgICAgICBkcmFmdC5vYmpUeXBlID09PSBlbGVtZW50Lm9ialR5cGUgJiZcclxuICAgICAgICAgICAgICAgIGRyYWZ0LmRvY0VudHJ5ID09PSBlbGVtZW50LmRvY0VudHJ5ICYmXHJcbiAgICAgICAgICAgICAgICBkcmFmdC5saW5lTnVtID09PSBlbGVtZW50LmxpbmVOdW1cclxuICAgICAgICAgICAgKSAmJiB0aGlzLmRyYWZ0RG9jdW1lbnRMaW5lcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG9wZW5RdHk6IGVsZW1lbnQub3BlblF0eSxcclxuICAgICAgICAgICAgICAgIG9ialR5cGU6IGVsZW1lbnQub2JqVHlwZSxcclxuICAgICAgICAgICAgICAgIGRvY0VudHJ5OiBlbGVtZW50LmRvY0VudHJ5LFxyXG4gICAgICAgICAgICAgICAgbGluZU51bTogZWxlbWVudC5saW5lTnVtLFxyXG4gICAgICAgICAgICAgICAgZG9jRGF0ZTogZWxlbWVudC5kb2NEYXRlLFxyXG4gICAgICAgICAgICAgICAgZG9jRHVlRGF0ZTogZWxlbWVudC5kb2NEdWVEYXRlLFxyXG4gICAgICAgICAgICAgICAgaXRlbUNvZGU6IGVsZW1lbnQuaXRlbUNvZGUsXHJcbiAgICAgICAgICAgICAgICBjYXJkQ29kZTogZWxlbWVudC5jYXJkQ29kZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5oaWRlRm9ybU9wZW5Eb2N1bWVudHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlRm9ybU9wZW5Eb2N1bWVudHMoKSB7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvck9wZW5Eb2NzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsQnVzeUZvck9wZW5Eb2NzID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGhpZGVGb3JtRHJhZnQoKSB7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsQnVzeUZvckRyYWZ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvckRyYWZ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kcmFmdERvY3VtZW50TGluZXMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVEcmFmdERvY3VtZW50KCkge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JEcmFmdCA9IHRydWU7XHJcblxyXG4gICAgICAgIGxldCBkcmFmdEdyaWRMaW5lcyA9IHRoaXMuZHhEcmFmdERvY3VtZW50TGluZXMuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKVxyXG5cclxuICAgICAgICBsZXQgcmVxdWVzdER0b0RvY3VtZW50TGluZXM6IENvbm5lY3RvckRyYWZ0RG9jdW1lbnRMaW5lRHRvW10gPSBbXTtcclxuXHJcbiAgICAgICAgZHJhZnRHcmlkTGluZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgcmVxdWVzdER0b0RvY3VtZW50TGluZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogZWxlbWVudC5kYXRhLm9wZW5RdHksXHJcbiAgICAgICAgICAgICAgICBiYXNlVHlwZTogZWxlbWVudC5kYXRhLm9ialR5cGUsXHJcbiAgICAgICAgICAgICAgICBiYXNlRW50cnk6IGVsZW1lbnQuZGF0YS5kb2NFbnRyeSxcclxuICAgICAgICAgICAgICAgIGJhc2VMaW5lOiBlbGVtZW50LmRhdGEubGluZU51bVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICBsZXQgcmVxdWVzdER0bzogQ29ubmVjdG9yRHJhZnREb2N1bWVudER0byA9IHtcclxuICAgICAgICAgICAgZG9jRW50cnk6IG51bGwsXHJcbiAgICAgICAgICAgIGRvY051bTogbnVsbCxcclxuICAgICAgICAgICAgZG9jQ3VycmVuY3k6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uZG9jdW1lbnRDdXJyZW5jeUNvZGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGRvY09iamVjdENvZGU6IFwib1B1cmNoYXNlSW52b2ljZXNcIixcclxuICAgICAgICAgICAgZG9jRGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICB0YXhEYXRlOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmlzc3VlRGF0ZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgZG9jRHVlRGF0ZTogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5wYXltZW50VGVybXNQYXltZW50RHVlRGF0ZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgZG9jUmF0ZTogKHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZSA8PSAxIHx8IGlzTnVsbE9yRW1wdHkodGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5wcmljaW5nRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlKSkgPyAxIDogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLnByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUsXHJcbiAgICAgICAgICAgIGNhcmRDb2RlOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LmFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbj8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgbnVtQXRDYXJkOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmludm9pY2VJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9FRkFUTk86IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaW52b2ljZUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICB1X1VVSUQ6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8udXVJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9TRU5EOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmludm9pY2VUeXBlQ29kZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9Qcm9maWxlSWQ6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJvZmlsZUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBkb2N1bWVudExpbmVzOiByZXF1ZXN0RHRvRG9jdW1lbnRMaW5lc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVEcmFmdERvY3VtZW50KHJlcXVlc3REdG8sIHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5pZClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlRm9ybURyYWZ0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MocmVzdWx0LmRvY0VudHJ5ICsgXCIgbnVtYXJhbMSxIHRhc2xhayBiZWxnZSBiYcWfYXLEsXlsYSBvbHXFn3R1cnVsZHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiVGFzbGFrIGJlbGdlIG9sdcWfdHVydWx1cmtlbiBiaXIgaGF0YSBvbHXFn3R1OlwiICsgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm9jZXNzTWFudWFsKHJlY29yZCl7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnByb2Nlc3NNYW51YWwocmVjb3JkLmlkKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgaWYocmVzdWx0KXtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcyhcIkJlbGdlIGJhxZ9hcsSxeWxhIG1hbnVlbCBpxZ9sZW5kaS5cIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmR4SW5ib3VuZEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0JveENoYW5nZWQoZXZlbnQpIHtcclxuXHJcbiAgICAgICAgbGV0IGZvcm1Db250cm9scyA9IHRoaXMuZm9ybVJlc3BvbnNlLmNvbnRyb2xzXHJcbiAgICAgICAgdmFyIGlkID0gZXZlbnQudGFyZ2V0LmlkO1xyXG4gICAgICAgIHZhciBjaGVja2JveGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3Jlc3BvbnNlQ2hlY2snKSBhcyBOb2RlTGlzdE9mPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gICAgICAgIGNoZWNrYm94ZXMuZm9yRWFjaChjaGVja2JveCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGVja2JveC5pZCAhPT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIGNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sc1tjaGVja2JveC5hdHRyaWJ1dGVzW1wiZm9ybWNvbnRyb2xuYW1lXCJdLnZhbHVlXS5zZXRWYWx1ZShjaGVja2JveC5jaGVja2VkKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlUm93c0NvbG9yKGUpIHtcclxuXHJcbiAgICAgICAgaWYgKGUucm93VHlwZSA9PSBcImRhdGFcIikge1xyXG5cclxuICAgICAgICAgICAgaWYgKGUuZGF0YS5yZWNlaXZlclJlc3BvbnNlICE9IDApXHJcbiAgICAgICAgICAgICAgICBlLnJvd0VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gZS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gMSA/IFwiIzNlYmQ2MFwiIDogXCIjY2M0ZjQ1XCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFJlY2VpdmVyUmVzcG9uc2VOYW1lKHJlc3BvbnNlSWQpIHtcclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMuaW5ib3VuZEludm9pY2VSZWNlaXZlclJlc3BvbnNlTG9va3VwLmZpbmQoKHgpID0+IHguaWQgPT09IHJlc3BvbnNlSWQpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGlzcGxheU5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEljb25DbGFzcyhyZXNwb25zZUlkKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlSWQgPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtY2xvY2tcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1jaGVjay1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS10aW1lcy1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RG9jT2JqZWN0TmFtZShkYXRhKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgbGV0IG9iak5hbWUgPSAoKGRhdGEuaXNEcmFmdCA/IFwiVGFzbGFrIFwiIDogXCJcIikgKyB0aGlzLmludm9pY2VPYmplY3RzRW51bUxvb2t1cC5maW5kKCh4KSA9PiB4LmlkID09IChkYXRhLmlzRHJhZnQgPyBkYXRhLnJlc291cmNlU3ViRG9jVHlwZSA6IGRhdGEucmVzb3VyY2VEb2NUeXBlKSk/LmRpc3BsYXlOYW1lKTtcclxuICAgICAgICBpZihvYmpOYW1lID09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBvYmpOYW1lO1xyXG4gICAgfVxyXG59IiwiPGFicC1wYWdlIFt0aXRsZV09XCInZURvbnVzdW06OkluYm91bmRJbnZvaWNlcycgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uSW52b2ljZXMuQ3JlYXRlJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCIgKGNsaWNrKT1cImdldEluYm91bmRJbnZvaWNlKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpDaGVja0luYm91bmRJbnZvaWNlcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG4gIDxwPkVudGVncmF0w7ZyZGVuIGFsxLFuYW4gZmF0dXJhbGFyxLEgbGlzdGVsZXllbiBla3JhbjwvcD5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeEluYm91bmRJbnZvaWNlSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiaW5ib3VuZEludm9pY2VzRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIiBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIlxyXG4gICAgICAgIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIiBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNzV2aDtcIj5cclxuICAgICAgICA8ZHhvLXBhZ2VyIFt2aXNpYmxlXT1cInRydWVcIiBbc2hvd0luZm9dPVwidHJ1ZVwiIFthbGxvd2VkUGFnZVNpemVzXT1cIls1MCwxMDAsMjAwXVwiIFtzaG93TmF2aWdhdGlvbkJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc2hvd1BhZ2VTaXplU2VsZWN0b3JdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHhvLXBhZ2VyPlxyXG4gICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCI1MFwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwibXVsdGlwbGVcIiBzZWxlY3RBbGxNb2RlPVwicGFnZVwiIHNob3dDaGVja0JveGVzTW9kZT1cImFsd2F5c1wiPlxyXG4gICAgICAgIDwvZHhvLXNlbGVjdGlvbj5cclxuICAgICAgICA8ZHhvLWNvbHVtbi1jaG9vc2VyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW2VuYWJsZWRdPVwidHJ1ZVwiIG1vZGU9XCJzZWxlY3RcIj48L2R4by1jb2x1bW4tY2hvb3Nlcj5cclxuICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgPGR4by1ncm91cC1wYW5lbCBbdmlzaWJsZV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uRHJhZ2dpbmddPVwidHJ1ZVwiPjwvZHhvLWdyb3VwLXBhbmVsPlxyXG4gICAgICAgIDxkeG8tZ3JvdXBpbmcgI2V4cGFuZCBbYXV0b0V4cGFuZEFsbF09XCJmYWxzZVwiIFthbGxvd0NvbGxhcHNpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbY29udGV4dE1lbnVFbmFibGVkXT1cInRydWVcIj48L2R4by1ncm91cGluZz5cclxuICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgPGR4by1leHBvcnQgW2VuYWJsZWRdPVwidHJ1ZVwiIFthbGxvd0V4cG9ydFNlbGVjdGVkRGF0YV09XCJmYWxzZVwiPjwvZHhvLWV4cG9ydD5cclxuICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgPGR4by1maWx0ZXItYnVpbGRlciBbYWxsb3dIaWVyYXJjaGljYWxGaWVsZHNdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1idWlsZGVyPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXBhbmVsIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcGFuZWw+XHJcbiAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBbZml4ZWRdPVwidHJ1ZVwiIGRhdGFGaWVsZD1cImlkXCIgd2lkdGg9XCIxMjBcIiBbYWxsb3dHcm91cGluZ109XCJmYWxzZVwiIFthbGxvd0ZpbHRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBbYWxsb3dIZWFkZXJGaWx0ZXJpbmddPVwiZmFsc2VcIiBbYWxsb3dIaWRpbmddPVwiZmFsc2VcIiBbYWxsb3dSZW9yZGVyaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCIgY2FwdGlvbj1cInt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj5cclxuICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRJZENvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb2cgbXItMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInVwZGF0ZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJkZWxldGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXRJbnZvaWNlUHJldmlldyhyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNjUwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3NTAgfHwgcm93LmRhdGEuc3RhdHVzID09IDY4MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzgwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkdldFZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJvcGVuUmVzcG9uc2VNb2RhbChyb3cuZGF0YSlcIiBzXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEucHJvZmlsZUlkID09ICdUSUNBUklGQVRVUkEnICYmIHJvdy5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlJlc3BvbnNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwib3BlblBhcnRuZXJNb2RhbChyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLmludm9pY2VUeXBlQ29kZSAhPSAnSUFERScgJiYgKHJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMClcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS11c2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkNyZWF0ZUJ1c2luZXNzUGFydG5lcicgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cIm9wZW5EcmFmdEZvcm0ocm93LmRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3cuZGF0YS5pbnZvaWNlVHlwZUNvZGUgIT0gJ0lBREUnICYmIHJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZpbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6Q3JlYXRlRHJhZnREb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwicHJvY2Vzc01hbnVhbChyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWhhbmQtcGFwZXItb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpQcm9jZXNzTWFudWFsJyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzc3VlRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06Oklzc3VlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGF5bWVudFRlcm1zUGF5bWVudER1ZURhdGVcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpQYXltZW50RHVlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidXVJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6VXVJZCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaW52b2ljZUlkXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJbnZvaWNlSWQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImFjY291bnRpbmdTdXBwbGllclBhcnR5TmFtZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdTdXBwbGllclBhcnR5TmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6QWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuJ3xhYnBMb2NhbGl6YXRpb259fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzdGF0dXNcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlN0YXR1cyd8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImluYm91bmRJbnZvaWNlU3RhdHVzTG9va3VwXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+XHJcbiAgICAgICAgICA8L2R4by1sb29rdXA+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInJlc291cmNlRG9jRW50cnlcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBjZWxsVGVtcGxhdGU9XCJkb2NUeXBlVGVtcGxhdGVcIiBkYXRhRmllbGQ9XCJyZXNvdXJjZURvY1R5cGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZXNvdXJjZURvY1R5cGUnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2RvY1R5cGVUZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAge3tnZXREb2NPYmplY3ROYW1lKGRhdGEuZGF0YSl9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJyZWNlaXZlclJlc3BvbnNlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZWNlaXZlclJlc3BvbnNlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJpY29uVGVtcGxhdGVcIj5cclxuICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImluYm91bmRJbnZvaWNlUmVjZWl2ZXJSZXNwb25zZUxvb2t1cFwiIHZhbHVlRXhwcj1cImlkXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2ljb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cImdldEljb25DbGFzcyhkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSlcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2NvbG9yJzpkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSA9PSAnMScgPyAnZ3JlZW4nIDogZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzInID8gJ3JlZCcgOiAnZ3JheSd9XCI+PC9pPlxyXG4gICAgICAgICAge3tnZXRSZWNlaXZlclJlc3BvbnNlTmFtZShkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSl9fVxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwcm9maWxlSWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlByb2ZpbGVJZCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaW52b2ljZVR5cGVDb2RlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJbnZvaWNlVHlwZUNvZGUnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImxlZ2FsTW9uZXRhcnlUb3RhbFBheWFibGVBbW91bnRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlBheWFibGVBbW91bnQnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIGRhdGFUeXBlPVwibnVtYmVyXCIgZm9ybWF0PVwiIywjIzAuMDBcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jdW1lbnRDdXJyZW5jeUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0N1cnJlbmN5J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwcmljaW5nRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NSYXRlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBkYXRhVHlwZT1cIm51bWJlclwiIGZvcm1hdD1cIiMsIyMwLjAwXCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeUZvclJlc3BvbnNlXCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlbkZvclJlc3BvbnNlXCIgW29wdGlvbnNdPVwieyBzaXplOiAnbScgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlNlbmRSZXNwb25zZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtUmVzcG9uc2VcIiBpZD1cImludm9pY2UtcmVzcG9uc2VcIiB2YWxpZGF0ZU9uU3VibWl0PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmFkZS1pbi10b3BcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6MjBweFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtaWRcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OklkJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtaWRcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaWRcIiBtYXhsZW5ndGg9XCIyNTZcIiBhdXRvZm9jdXM+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLXV1aWRcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlV1SWQnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImludm9pY2UtcmVzcG9uc2UtaW52b2ljZS11dWlkXCIgW2Rpc2FibGVkXT1cInRydWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludm9pY2VVVUlEXCIgbWF4bGVuZ3RoPVwiMjU2XCIgYXV0b2ZvY3VzPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImludm9pY2UtcmVzcG9uc2UtaW52b2ljZS1hY2NlcHRcIiBmb3JtQ29udHJvbE5hbWU9XCJpc0FjY2VwdGVkXCJcclxuICAgICAgICAgICAgICAgICAgbmFtZT1cInJlc3BvbnNlQ2hlY2tcIiAoY2hhbmdlKT1cImNoZWNrQm94Q2hhbmdlZCgkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLWFjY2VwdFwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkFjY2VwdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLXJlamVjdFwiIGZvcm1Db250cm9sTmFtZT1cImlzUmVqZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICBuYW1lPVwicmVzcG9uc2VDaGVja1wiIChjaGFuZ2UpPVwiY2hlY2tCb3hDaGFuZ2VkKCRldmVudClcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtcmVqZWN0XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UmVqZWN0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiIGZvcm1OYW1lPVwiaW52b2ljZS1yZXNwb25zZVwiXHJcbiAgICAgIChjbGljayk9XCJzZW5kSW52b2ljZVJlc3BvbnNlKGZhbHNlKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlJlamVjdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIGZvcm1OYW1lPVwiaW52b2ljZS1yZXNwb25zZVwiXHJcbiAgICAgIChjbGljayk9XCJzZW5kSW52b2ljZVJlc3BvbnNlKHRydWUpXCI+XHJcbiAgICAgIHt7ICdlRG9udXN1bTo6QWNjZXB0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzTW9kYWxCdXN5Rm9yUGFydG5lclwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyXCIgW29wdGlvbnNdPVwieyBzaXplOiAneGwnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAge3sgJ2VEb251c3VtOjpDcmVhdGVCdXNpbmVzc1BhcnRuZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVBhcnRuZXJcIiBpZD1cImNyZWF0ZS1wYXJ0bmVyXCIgKG5nU3VibWl0KT1cImNyZWF0ZUJ1c2luZXNzUGFydG5lcigpXCIgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOjIwcHhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyTmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1uYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIG1heGxlbmd0aD1cIjI1NlwiIGF1dG9mb2N1cz48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci12a25cIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJWS04nfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItdmtuXCIgW2Rpc2FibGVkXT1cInRydWVcIiBmb3JtQ29udHJvbE5hbWU9XCJ2a25cIlxyXG4gICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1wYXJ0bmVyLWFkZC1pZFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckFkZGl0aW9uYWxJZCd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1wYXJ0bmVyLWFkZC1pZFwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckFkZElkXCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItY3VycmVuY3lcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJDdXJyZW5jeSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1jdXJyZW5jeVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckN1cnJlbmN5XCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCIgYXV0b2ZvY3VzPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLXdlYi1zaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyV2ViU2l0ZSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci13ZWItc2l0ZVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJXZWJTaXRlVVJJXCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItc2VyaWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyU2VyaWVzJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLXNlcmllc1wiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVTZXJpZXNcIiB2YWx1ZUV4cHI9XCJzZXJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwibmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lclNlcmllc1wiIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1Nlcmllc1wiIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBhdXRvZm9jdXM+PC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nU2VyaWVzXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgc3RhcnQtNTAgdHJhbnNsYXRlLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2VEb251c3VtOjpMb2FkaW5nJ3xhYnBMb2NhbGl6YXRpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyR3JvdXAnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItZ3JvdXBzXCIgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZUdyb3Vwc1wiIHZhbHVlRXhwcj1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwibmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckdyb3VwXCIgbWF4bGVuZ3RoPVwiMjU2XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nR3JvdXBzXCIgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiIGF1dG9mb2N1cz48L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdHcm91cHNcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBzdGFydC01MCB0cmFuc2xhdGUtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snZURvbnVzdW06OkxvYWRpbmcnfGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1hY2NvdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyQmFua0FjY291bnQnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItYWNjb3VudFwiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVBY2NvdW50c1wiIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJBY2NvdW50XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nQWNjb3VudHNcIiBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nQWNjb3VudHNcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBzdGFydC01MCB0cmFuc2xhdGUtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snZURvbnVzdW06OkxvYWRpbmcnfGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLW1haWxcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJNYWlsJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLW1haWxcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyRW1haWxcIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItY291bnRyeVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckNvdW50cnknfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLWNvdW50cnlcIiBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlQ291bnRyaWVzXCIgdmFsdWVFeHByPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJuYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQ291bnRyeVwiIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImdldFN0YXRlcygpXCIgW2Rpc2FibGVkXT1cImlzTG9hZGluZ0NvdW50cmllc1wiIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1cz48L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdDb3VudHJpZXNcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBzdGFydC01MCB0cmFuc2xhdGUtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snZURvbnVzdW06OkxvYWRpbmcnfGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1zdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lclN0YXRlJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1zdGF0ZVwiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVTdGF0ZXNcIiB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cIm5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJTdGF0ZVwiIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1N0YXRlc1wiIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBhdXRvZm9jdXM+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1N0YXRlc1wiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIHN0YXJ0LTUwIHRyYW5zbGF0ZS1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20gdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eydlRG9udXN1bTo6TG9hZGluZyd8YWJwTG9jYWxpemF0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLXppcGNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJaaXBjb2RlJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLXppcGNvZGVcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyWmlwQ29kZVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJDaXR5J3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLWNpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQ2l0eVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWNvdW50eVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckNvdW50eSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1jb3VudHlcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQ291bnR5XCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItc3RyZWV0XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyU3RyZWV0J3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLXN0cmVldFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJTdHJlZXRcIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckJsb2NrJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLWJsb2NrXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckJsb2NrXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeUZvclBhcnRuZXJcIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiXHJcbiAgICAgIGZvcm09XCJjcmVhdGUtcGFydG5lclwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OkNyZWF0ZUJ1c2luZXNzUGFydG5lcicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeUZvckRyYWZ0XCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlbkZvckRyYWZ0XCIgW29wdGlvbnNdPVwieyBzaXplOiAneGwnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAge3sgKHNlbGVjdGVkID8gJ0FicFVpOjpFZGl0JyA6ICdlRG9udXN1bTo6Q3JlYXRlRHJhZnQnKSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8Zm9ybSBpZD1cImRyYWZ0LWRvY3VtZW50XCI+XHJcbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmRcIj4gLS0+XHJcbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPiAtLT5cclxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXQtM1wiPiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLWxhYmVsXCI+IHt7J2VEb251c3VtOjpQYXJ0bmVyVktOJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLWRyYWZ0LXZrblwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja25cIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC1sYWJlbFwiPiB7eydlRG9udXN1bTo6SXNzdWVEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94IGlkPVwiY3JlYXRlLWRyYWZ0LWlzc3VlLWRhdGVcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UuaXNzdWVEYXRlXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC1sYWJlbFwiPiB7eydlRG9udXN1bTo6UGFydG5lck5hbWUnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtZHJhZnQtcGFydG5lci1uYW1lXCIgW2Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLmFjY291bnRpbmdTdXBwbGllclBhcnR5TmFtZVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtbGFiZWxcIj4ge3snZURvbnVzdW06Okludm9pY2VJZCd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1kcmFmdC1pbnZvaWNlLWlkXCIgW2Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLmludm9pY2VJZFwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeERyYWZ0RG9jdW1lbnRMaW5lcyBbZGF0YVNvdXJjZV09XCJkcmFmdERvY3VtZW50TGluZXNcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3JlbW90ZU9wZXJhdGlvbnNdPVwiZmFsc2VcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICA8ZHhvLWVkaXRpbmcgW2FsbG93VXBkYXRpbmddPVwidHJ1ZVwiIFthbGxvd0FkZGluZ109XCJmYWxzZVwiIFthbGxvd0RlbGV0aW5nXT1cInRydWVcIiBtb2RlPVwiY2VsbFwiIFt1c2VJY29uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keG8tZWRpdGluZz5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJvYmpUeXBlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpPYmplY3RUeXBlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PGR4by1sb29rdXAgW2RhdGFTb3VyY2VdPVwib2JqZWN0VHlwZXNMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwidGV4dFwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NFbnRyeVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibGluZU51bVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6TGluZU51bSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgICAgPCEtLSA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjYXJkQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6Q2FyZENvZGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+IC0tPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0RhdGVcIiBkYXRhVHlwZT1cImRhdGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0RhdGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jRHVlRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRHVlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXRlbUNvZGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwib3BlblF0eVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6T3BlblF0eSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJ0cnVlXCI+PC9keGktY29sdW1uPlxyXG5cclxuICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICA8IS0tIDwvZGl2PlxyXG4gICAgICA8L2Rpdj4gLS0+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiIChjbGljayk9XCJvcGVuT3BlbkRvY3VtZW50c0Zvcm0oKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlJlc291cmNlRG9jdW1lbnRzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeUZvckRyYWZ0XCIgKGNsaWNrKT1cImNyZWF0ZURyYWZ0RG9jdW1lbnQoKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OkNyZWF0ZURvY3VtZW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzTW9kYWxCdXN5Rm9yT3BlbkRvY3NcIiBbKHZpc2libGUpXT1cImlzTW9kYWxPcGVuRm9yT3BlbkRvY3NcIiBbb3B0aW9uc109XCJ7IHNpemU6ICd4bCcgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAoc2VsZWN0ZWQgPyAnQWJwVWk6OkVkaXQnIDogJ2VEb251c3VtOjpPcGVuRG9jcycpIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGZvcm0gaWQ9XCJvcGVuLWRvY3VtZW50c1wiPlxyXG4gICAgICA8IS0tIERldkV4dHJlbWUgVGFiIFBhbmVsIC0tPlxyXG4gICAgICA8ZHgtdGFiLXBhbmVsIFthbmltYXRpb25FbmFibGVkXT1cInRydWVcIiBbc3dpcGVFbmFibGVkXT1cInRydWVcIiBbbG9vcF09XCJmYWxzZVwiICN0YWJQYW5lbD5cclxuICAgICAgICA8ZHhpLWl0ZW0gdGl0bGU9XCJ7eyAnZURvbnVzdW06OlB1cmNoYXNlT3JkZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS1zaG9wcGluZy1jYXJ0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2R4UHVyY2hhc2VPcmRlckRvY3VtZW50cyBbZGF0YVNvdXJjZV09XCJwdXJjaGFzZU9yZGVyRG9jdW1lbnRzXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJmYWxzZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIiBzaG93Q2hlY2tCb3hlc01vZGU9XCJhbHdheXNcIj5cclxuICAgICAgICAgICAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWVkaXRpbmcgW2FsbG93VXBkYXRpbmddPVwiZmFsc2VcIiBbYWxsb3dBZGRpbmddPVwiZmFsc2VcIiBbYWxsb3dEZWxldGluZ109XCJmYWxzZVwiIG1vZGU9XCJjZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHhvLWVkaXRpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0VudHJ5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NFbnRyeSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImxpbmVOdW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkxpbmVOdW0nfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY2FyZENvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkNhcmRDb2RlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0R1ZURhdGVcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRHVlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXRlbUNvZGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJvcGVuUXR5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpPcGVuUXR5J3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG5cclxuICAgICAgICA8ZHhpLWl0ZW0gdGl0bGU9XCJ7eyAnZURvbnVzdW06OlB1cmNoYXNlRGVzcGF0Y2gnIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS10cnVja1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeFB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHMgW2RhdGFTb3VyY2VdPVwicHVyY2hhc2VEZXNwYXRjaERvY3VtZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwiZmFsc2VcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxyXG4gICAgICAgICAgICAgICAgICBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDUwdmg7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWVkaXRpbmcgW2FsbG93VXBkYXRpbmddPVwiZmFsc2VcIiBbYWxsb3dBZGRpbmddPVwiZmFsc2VcIiBbYWxsb3dEZWxldGluZ109XCJmYWxzZVwiIG1vZGU9XCJjZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHhvLWVkaXRpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIiBzaG93Q2hlY2tCb3hlc01vZGU9XCJhbHdheXNcIj5cclxuICAgICAgICAgICAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NFbnRyeVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJsaW5lTnVtXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpMaW5lTnVtJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNhcmRDb2RlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpDYXJkQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0RhdGVcIiBkYXRhVHlwZT1cImRhdGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0RhdGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NEdWVEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0R1ZURhdGUnfGFicExvY2FsaXphdGlvbn19XCIgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXRlbUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Okl0ZW1Db2RlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwib3BlblF0eVwiIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6T3BlblF0eSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG4gICAgICA8L2R4LXRhYi1wYW5lbD5cclxuICAgIDwvZm9ybT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lGb3JPcGVuRG9jc1wiIChjbGljayk9XCJzZWxlY3RPcGVuRG9jdW1lbnRzKClcIj5cclxuICAgICAge3sgJ2VEb251c3VtOjpTZWxlY3REb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPiJdfQ==
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWluYm91bmQtaW52b2ljZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1pbmJvdW5kLWludm9pY2VzL2hpdC1pbmJvdW5kLWludm9pY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtaW5ib3VuZC1pbnZvaWNlcy9oaXQtaW5ib3VuZC1pbnZvaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxhQUFhLEVBQXFCLFdBQVcsRUFBa0IsTUFBTSxjQUFjLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJNUQsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtwRSxPQUFPLEVBQUUsUUFBUSxFQUFPLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFTckMsTUFBTSxPQUFPLDBCQUEwQjtJQTRDbkMsWUFDb0IsSUFBaUIsRUFDaEIsT0FBaUMsRUFDakMsY0FBaUMsRUFDakMsV0FBd0IsRUFDeEIscUJBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLDJCQUEyRDtRQU41RCxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQWE7UUFDbEMsbUJBQWMs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bUJDLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBQ2QsdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO3VTQUtsQix3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0ssMkJBQTJCO3NCQUF2RixTQUFTO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDTCxvQkFBb0I7c0JBQXpFLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNWLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgaXNOdWxsT3JFbXB0eSwgaXNOdWxsT3JVbmRlZmluZWQsIExpc3RTZXJ2aWNlLCBQYWdlZFJlc3VsdER0byB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQsIER4VGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBIaXRJbmJvdW5kSW52b2ljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWluYm91bmQtaW52b2ljZXMvaGl0LWluYm91bmQtaW52b2ljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0SW52b2ljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWludm9pY2VzL2hpdC1pbnZvaWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgZm9ybWF0RGF0ZSwgZ2V0TG9jYWxlRGF0ZUZvcm1hdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEhpdEJ1c2luZXNzUGFydG5lckdyb3VwU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtYnVzaW5lc3MtcGFydG5lci1ncm91cHMvaGl0LWJ1c2luZXNzLXBhcnRuZXItZ3JvdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IEJwQWRkcmVzcywgQ29ubmVjdG9yRHJhZnREb2N1bWVudER0bywgQ29ubmVjdG9yRHJhZnREb2N1bWVudExpbmVEdG8sIENyZWF0ZUJ1c2luZXNzUGFydG5lclN1cHBsaWVyRHRvLCBPcGVuRG9jdW1lbnREdG8gfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWluYm91bmQtaW52b2ljZXMvbW9kZWxzJztcclxuaW1wb3J0IHsgZmluYWxpemUsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1pbmJvdW5kLWludm9pY2UnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gICAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9oaXQtaW5ib3VuZC1pbnZvaWNlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRJbmJvdW5kSW52b2ljZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkeEluYm91bmRJbnZvaWNlSW5zdGFuY2UnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeFB1cmNoYXNlT3JkZXJEb2N1bWVudHMnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhQdXJjaGFzZU9yZGVyRG9jdW1lbnRzOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeFB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHMnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHhQdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzOiBEeERhdGFHcmlkQ29tcG9uZW50XHJcbiAgICBAVmlld0NoaWxkKCdkeERyYWZ0RG9jdW1lbnRMaW5lcycsIHsgc3RhdGljOiBmYWxzZSB9KSBkeERyYWZ0RG9jdW1lbnRMaW5lczogRHhEYXRhR3JpZENvbXBvbmVudFxyXG4gICAgQFZpZXdDaGlsZCgndGFiUGFuZWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGFiUGFuZWw6IER4VGFiUGFuZWxDb21wb25lbnRcclxuXHJcbiAgICBpbmJvdW5kSW52b2ljZXNEYXRhU291cmNlOiBhbnlcclxuICAgIGluYm91bmRJbnZvaWNlU3RhdHVzTG9va3VwOiBhbnlcclxuICAgIGluYm91bmRJbnZvaWNlUmVjZWl2ZXJSZXNwb25zZUxvb2t1cDogYW55XHJcblxyXG4gICAgcGFydG5lckF2YWlsYWJsZUFjY291bnRzOiBBcnJheTx7IGlkOiBzdHJpbmcsIHRleHQ6IHN0cmluZyB9PiA9IFtdO1xyXG4gICAgb2JqZWN0VHlwZXNMb29rdXA6IEFycmF5PHsgaWQ6IHN0cmluZywgdGV4dDogc3RyaW5nIH0+ID0gW1xyXG4gICAgICAgIHsgaWQ6IFwiMjBcIiwgdGV4dDogXCJTYXTEsW4gQWxtYSDEsHJzYWxpeWVzaVwiIH0sXHJcbiAgICAgICAgeyBpZDogXCIyMlwiLCB0ZXh0OiBcIlNhdMSxbiBBbG1hIFNpcGFyacWfaVwiIH1cclxuICAgIF07IHBhcnRuZXJBdmFpbGFibGVTZXJpZXM6IFtdO1xyXG4gICAgcGFydG5lckF2YWlsYWJsZUdyb3VwczogW107XHJcbiAgICBwYXJ0bmVyQXZhaWxhYmxlQ291bnRyaWVzOiBbXTtcclxuICAgIHBhcnRuZXJBdmFpbGFibGVTdGF0ZXM6IFtdO1xyXG4gICAgb3BlbkRvY3VtZW50c0ZvclBhcnRuZXI6IFtdO1xyXG4gICAgaW52b2ljZU9iamVjdHNFbnVtTG9va3VwOiBhbnk7XHJcbiAgICBwdXJjaGFzZU9yZGVyRG9jdW1lbnRzOiBbXTtcclxuICAgIGRyYWZ0RG9jdW1lbnRMaW5lczogT3BlbkRvY3VtZW50RHRvW10gPSBbXTtcclxuICAgIHB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHM6IFtdO1xyXG4gICAgaXNNb2RhbEJ1c3lGb3JSZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgaXNNb2RhbE9wZW5Gb3JSZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgaXNNb2RhbEJ1c3lGb3JQYXJ0bmVyID0gZmFsc2U7XHJcbiAgICBpc01vZGFsT3BlbkZvclBhcnRuZXIgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yT3BlbkRvY3MgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxPcGVuRm9yT3BlbkRvY3MgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxCdXN5Rm9yRHJhZnQgPSBmYWxzZTtcclxuICAgIGlzTW9kYWxPcGVuRm9yRHJhZnQgPSBmYWxzZTtcclxuICAgIGlzTG9hZGluZ1N0YXRlcyA9IGZhbHNlO1xyXG4gICAgaXNMb2FkaW5nU2VyaWVzID0gZmFsc2U7XHJcbiAgICBpc0xvYWRpbmdHcm91cHMgPSBmYWxzZTtcclxuICAgIGlzTG9hZGluZ0FjY291bnRzID0gZmFsc2U7XHJcbiAgICBpc0xvYWRpbmdDb3VudHJpZXMgPSBmYWxzZTtcclxuXHJcbiAgICBmYXR1cmFPbml6bGVtZTogYW55O1xyXG4gICAgZm9ybVJlc3BvbnNlOiBGb3JtR3JvdXA7XHJcbiAgICBmb3JtUGFydG5lcjogRm9ybUdyb3VwO1xyXG5cclxuICAgIHNlbGVjdGVkSW5ib3VuZEludm9pY2U6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBIaXRJbmJvdW5kSW52b2ljZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnZvaWNlU2VydmljZTogSGl0SW52b2ljZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlckZvclBhcnRuZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RlclNlcnZpY2U6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYnVzaW5lc3NQYXJ0bmVyR3JvdXBTZXJ2aWNlOiBIaXRCdXNpbmVzc1BhcnRuZXJHcm91cFNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbmJvdW5kSW52b2ljZXNEYXRhU291cmNlID0gdGhpcy5zZXJ2aWNlLkxvYWRJbmJvdW5kSW52b2ljZXM7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRTdGF0dXNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbmJvdW5kSW52b2ljZVN0YXR1c0xvb2t1cCA9IGxpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRSZWNlaXZlclJlc3BvbnNlcygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbmJvdW5kSW52b2ljZVJlY2VpdmVyUmVzcG9uc2VMb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0NvdW50cmllcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldENvdW50cmllcygpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQ291bnRyaWVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVDb3VudHJpZXMgPSBsaXN0O1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiw5xsa2VsZXIgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY291bnRyaWVzOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nR3JvdXBzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmJ1c2luZXNzUGFydG5lckdyb3VwU2VydmljZS5nZXRTdXBwbGllckdyb3VwcygpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nR3JvdXBzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVHcm91cHMgPSBsaXN0O1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiUGFydG5lciBncnVwbGFyxLEgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZ3JvdXBzOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0U2FwT2JqZWN0cygpLnN1YnNjcmliZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlT2JqZWN0c0VudW1Mb29rdXAgPSBsaXN0O1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldEluYm91bmRJbnZvaWNlKCkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRJbmJvdW5kSW52b2ljZShuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKSlcclxuICAgIH1cclxuXHJcbiAgICBnZXRJbnZvaWNlUHJldmlldyhyZWNvcmQpIHtcclxuICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldEludm9pY2VQcmV2aWV3KHJlY29yZC5pZCwgMTAwMDAwMCkuc3Vic2NyaWJlKGZhdHVyYSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGBkYXRhOnRleHQvaHRtbDtiYXNlNjQsJHtmYXR1cmEucHJldmlld0hUTUx9YDtcclxuICAgICAgICAgICAgY29uc3QgbmV3VGFiID0gd2luZG93Lm9wZW4oKTtcclxuICAgICAgICAgICAgbmV3VGFiLmRvY3VtZW50LnRpdGxlID0gcmVjb3JkLmlkXHJcbiAgICAgICAgICAgIG5ld1RhYi5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IGA8aWZyYW1lIHNyYz1cIiR7c291cmNlfVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBzdHlsZT1cImJvcmRlcjpub25lO1wiPjwvaWZyYW1lPmA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblJlc3BvbnNlTW9kYWwocmVjb3JkKSB7XHJcblxyXG4gICAgICAgIHRoaXMuYnVpbGRGb3JtKHJlY29yZCk7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvclJlc3BvbnNlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZEZvcm0ocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUmVzcG9uc2UgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgaWQ6IHJlY29yZC5pZCxcclxuICAgICAgICAgICAgaW52b2ljZVVVSUQ6IHJlY29yZC51dUlkLFxyXG4gICAgICAgICAgICBpc0FjY2VwdGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNSZWplY3RlZDogZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kSW52b2ljZVJlc3BvbnNlKHJlc3BvbnNlOiBib29sZWFuKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm1SZXNwb25zZS5pbnZhbGlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLmZvcm1SZXNwb25zZS52YWx1ZVxyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2VuZEludm9pY2VSZXNwb25zZShyZXN1bHQuaW52b2ljZVVVSUQsIHJlc3BvbnNlLCByZXN1bHQuaWQpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZHhJbmJvdW5kSW52b2ljZUluc3RhbmNlLmluc3RhbmNlLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvclJlc3BvbnNlID0gZmFsc2U7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUGFydG5lck1vZGFsKHJlY29yZCkge1xyXG5cclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJNdWhhdGFwIGtvbnRyb2zDvCB5YXDEsWzEsXlvciwgbMO8dGZlbiBiZWtsZXlpbml6LlwiKVxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jaGVja0J1c2luZXNzUGFydG5lckV4aXN0KHJlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZEZvcm1Gb3JQYXJ0bmVyKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihyZWNvcmQuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuICsgXCIgbnVtYXJhbMSxIHNhdMSxY8SxIHphdGVuIG1ldmN1dC5cIilcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0ZXMoKSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdTdGF0ZXMgPSB0cnVlO1xyXG4gICAgICAgIC8vIMOWbmNlIG1ldmN1dCBzdGF0ZSBzZcOnaW1pbmkgdGVtaXpsZVxyXG4gICAgICAgIHRoaXMuZm9ybVBhcnRuZXIuY29udHJvbHMucGFydG5lclN0YXRlLnNldFZhbHVlKCcnKTtcclxuICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVTdGF0ZXMgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFN0YXRlcyh0aGlzLmZvcm1QYXJ0bmVyLmNvbnRyb2xzLnBhcnRuZXJDb3VudHJ5LnZhbHVlKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ1N0YXRlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJ0bmVyQXZhaWxhYmxlU3RhdGVzID0gbGlzdDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIsSwbC9leWFsZXQgYmlsZ2lsZXJpIHnDvGtsZW5pcmtlbiBiaXIgaGF0YSBvbHXFn3R1LlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHN0YXRlczonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGVGb3JtUGFydG5lcigpIHtcclxuICAgICAgICB0aGlzLmlzTW9kYWxCdXN5Rm9yUGFydG5lciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFydG5lci5yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUJ1c2luZXNzUGFydG5lcigpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtUGFydG5lci5pbnZhbGlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JQYXJ0bmVyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgbGV0IHJlcXVlc3REdG9BZGRyZXNzZXM6IEJwQWRkcmVzc1tdID0gW11cclxuICAgICAgICByZXF1ZXN0RHRvQWRkcmVzc2VzLnB1c2goe1xyXG4gICAgICAgICAgICBhZGRyZXNzTmFtZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJBZGRyZXNzPy52YWx1ZSxcclxuICAgICAgICAgICAgc3RyZWV0OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lclN0cmVldD8udmFsdWUsXHJcbiAgICAgICAgICAgIGJsb2NrOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckJsb2NrPy52YWx1ZSxcclxuICAgICAgICAgICAgemlwQ29kZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJaaXBDb2RlPy52YWx1ZSxcclxuICAgICAgICAgICAgY2l0eTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJDaXR5Py52YWx1ZSxcclxuICAgICAgICAgICAgY291bnR5OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckNvdW50eT8udmFsdWUsXHJcbiAgICAgICAgICAgIGNvdW50cnk6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQ291bnRyeT8udmFsdWUsXHJcbiAgICAgICAgICAgIHN0YXRlOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lclN0YXRlPy52YWx1ZSxcclxuICAgICAgICAgICAgYWRkcmVzc1R5cGU6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQWRkcmVzc1R5cGU/LnZhbHVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCByZXF1ZXN0RHRvOiBDcmVhdGVCdXNpbmVzc1BhcnRuZXJTdXBwbGllckR0byA9IHtcclxuICAgICAgICAgICAgY2FyZENvZGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHVuaWZpZWRGZWRlcmFsVGF4SUQ6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy52a24/LnZhbHVlLFxyXG4gICAgICAgICAgICBjYXJkTmFtZTogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/Lm5hbWU/LnZhbHVlLFxyXG4gICAgICAgICAgICBjYXJkVHlwZTogXCJTXCIsXHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lckN1cnJlbmN5Py52YWx1ZSxcclxuICAgICAgICAgICAgZGViaXRvckFjY291bnQ6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQWNjb3VudD8udmFsdWUsXHJcbiAgICAgICAgICAgIHNlcmllczogdGhpcy5mb3JtUGFydG5lcj8uY29udHJvbHM/LnBhcnRuZXJTZXJpZXM/LnZhbHVlLFxyXG4gICAgICAgICAgICBncm91cENvZGU6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyR3JvdXA/LnZhbHVlLFxyXG4gICAgICAgICAgICB3ZWJzaXRlOiB0aGlzLmZvcm1QYXJ0bmVyPy5jb250cm9scz8ucGFydG5lcldlYlNpdGVVUkk/LnZhbHVlLFxyXG4gICAgICAgICAgICBhZGRpdGlvbmFsSUQ6IHRoaXMuZm9ybVBhcnRuZXI/LmNvbnRyb2xzPy5wYXJ0bmVyQWRkSWQ/LnZhbHVlLFxyXG4gICAgICAgICAgICBicEFkZHJlc3NlczogcmVxdWVzdER0b0FkZHJlc3Nlc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVCdXNpbmVzc1BhcnRuZXJGb3JTdXBwbGllcihyZXF1ZXN0RHRvKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVGb3JtUGFydG5lcigpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MocmVzdWx0LmNhcmRDb2RlICsgXCIga29kbHUgbXVoYXRhcCBiYcWfYXLEsXlsYSBvbHXFn3R1cnVsZHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiTXVoYXRhcCBvbHXFn3R1cnVsdXJrZW4gYmlyIGhhdGEgb2x1xZ90dS5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignTXVoYXRhcCBvbHXFn3R1cnVsdXJrZW4gYmlyIGhhdGEgb2x1xZ90dTonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkRm9ybUZvclBhcnRuZXIocmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldFBhcnRuZXJEZXRhaWxzKHJlY29yZC5pZCkuc3Vic2NyaWJlKGludm9pY2UgPT4ge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFydG5lciA9IHRoaXMuZm9ybUJ1aWxkZXJGb3JQYXJ0bmVyLmdyb3VwKHtcclxuICAgICAgICAgICAgICAgIHZrbjogW3JlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24gPz8gXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIG5hbWU6IFtyZWNvcmQuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlOYW1lID8/IFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgICAgICBwYXJ0bmVyQ3VycmVuY3k6IFtyZWNvcmQuZG9jdW1lbnRDdXJyZW5jeUNvZGUgPz8gXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJBY2NvdW50OiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJTZXJpZXM6IFtcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckdyb3VwOiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJFbWFpbDogW2ludm9pY2U/LmFjY291bnRpbmdTdXBwbGllclBhcnR5Py5wYXJ0eT8uY29udGFjdD8uZWxlY3Ryb25pY01haWw/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lcldlYlNpdGVVUkk6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LndlYnNpdGVVUkk/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckFkZElkOiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wYXJ0eVRheFNjaGVtZT8udGF4U2NoZW1lPy5uYW1lPy52YWx1ZSA/PyBcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckFkZHJlc3NUeXBlOiBcIkJcIixcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJBZGRyZXNzOiBcIkZhdHVyYSBBZHJlc2lcIixcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJTdHJlZXQ6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LnBvc3RhbEFkZHJlc3M/LnN0cmVldE5hbWU/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckJsb2NrOiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wb3N0YWxBZGRyZXNzPy5ibG9ja05hbWU/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckNpdHk6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LnBvc3RhbEFkZHJlc3M/LmNpdHlOYW1lPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJaaXBDb2RlOiBbaW52b2ljZT8uYWNjb3VudGluZ1N1cHBsaWVyUGFydHk/LnBhcnR5Py5wb3N0YWxBZGRyZXNzPy5wb3N0YWxab25lPy52YWx1ZSA/PyBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHBhcnRuZXJDb3VudHk6IFtpbnZvaWNlPy5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT8ucGFydHk/LnBvc3RhbEFkZHJlc3M/LmNpdHlTdWJkaXZpc2lvbk5hbWU/LnZhbHVlID8/IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lclN0YXRlOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgcGFydG5lckNvdW50cnk6IFwiXCJcclxuXHJcbiAgICAgICAgICAgICAgICAvL3BhcnRuZXJDaXR5OiBpbnZvaWNlRGV0YWlscy5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdBY2NvdW50cyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldEJhbmtBY2NvdW50QnlDdXJyZW5jeShyZWNvcmQuZG9jdW1lbnRDdXJyZW5jeUNvZGUpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQWNjb3VudHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFydG5lckF2YWlsYWJsZUFjY291bnRzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVBY2NvdW50cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlbGVtZW50LmFjY3RDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogZWxlbWVudC5hY2N0Q29kZSArIFwiIFwiICsgZWxlbWVudC5hY2N0TmFtZS50b1VwcGVyQ2FzZSgpICsgXCIgXCIgKyBlbGVtZW50LmFjdEN1cnIudG9VcHBlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIkJhbmthIGhlc2FwbGFyxLEgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgYWNjb3VudHM6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdTZXJpZXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5nZXRQYXJ0bmVyTnVtYmVyaW5nU2VyaWVzKClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdTZXJpZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFydG5lckF2YWlsYWJsZVNlcmllcyA9IGxpc3Q7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXCJTZXJpIG51bWFyYWxhcsSxIHnDvGtsZW5pcmtlbiBiaXIgaGF0YSBvbHXFn3R1LlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHNlcmllczonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnBhcnRuZXJBdmFpbGFibGVTdGF0ZXMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRHJhZnRGb3JtKHJlY29yZCkge1xyXG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbyhcIk11aGF0YXAga29udHJvbMO8IHlhcMSxbMSxeW9yLCBsw7x0ZmVuIGJla2xleWluaXouXCIpXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNoZWNrQnVzaW5lc3NQYXJ0bmVyRXhpc3QocmVjb3JkLmFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbikuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwixLBsZ2lsaSBWS04neWUgYWl0IChcIiArIHJlY29yZC5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja24gKyBcIikgbXVoYXRhcCBidWx1bmFtYWTEsSwgbMO8dGZlbiDDtm5jZSBtdWhhdGFwIG9sdcWfdHVydW4uXCIpXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlID0gcmVjb3JkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvckRyYWZ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5PcGVuRG9jdW1lbnRzRm9ybSgpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oXCJBw6fEsWsgYmVsZ2Ugc2F0xLFybGFyxLEgc29yZ3VsYW7EsXlvciwgbMO8dGZlbiBiZWtsZXlpbml6LlwiKVxyXG5cclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0T3BlbkRvY3VtZW50cyh0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UuYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuKS5zdWJzY3JpYmUobGlzdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbkRvY3VtZW50c0ZvclBhcnRuZXIgPSBsaXN0O1xyXG5cclxuICAgICAgICAgICAgaWYgKGxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wdXJjaGFzZU9yZGVyRG9jdW1lbnRzID0gbGlzdC5maWx0ZXIoZG9jID0+IGRvYy5vYmpUeXBlID09PSAyMik7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2F0xLFuIGFsbWEgc2lwYXJpxZ9sZXJpIChPYmpUeXBlPTIyKTonLCB0aGlzLnB1cmNoYXNlT3JkZXJEb2N1bWVudHMpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIE9ialR5cGU9MjAgb2xhbmxhcsSxIHNhdMSxbiBhbG1hIGlyc2FsaXllc2kgdGFixLFuYSBmaWx0cmVsZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzID0gbGlzdC5maWx0ZXIoZG9jID0+IGRvYy5vYmpUeXBlID09PSAyMCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2F0xLFuIGFsbWEgaXJzYWxpeWVsZXJpIChPYmpUeXBlPTIwKTonLCB0aGlzLnB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgLy8gT2JqVHlwZT0yMiBvbGFubGFyxLEgc2F0xLFuIGFsbWEgc2lwYXJpxZ9pIHRhYsSxbmEgZmlsdHJlbGVcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9kYWxPcGVuRm9yT3BlbkRvY3MgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS53YXJuKFwixLBsZ2lsaSBtdWhhdGFwIGnDp2luIGHDp8SxayBiZWxnZSBzYXTEsXLEsSBidWx1bmFtYWTEsS5cIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdE9wZW5Eb2N1bWVudHMoKSB7XHJcbiAgICAgICAgbGV0IHB1cmNoYXNlRGVzcGF0Y2hlcyA9IHRoaXMuZHhQdXJjaGFzZURlc3BhdGNoRG9jdW1lbnRzLmluc3RhbmNlLmdldFNlbGVjdGVkUm93c0RhdGEoKVxyXG4gICAgICAgIGxldCBwdXJjaGFzZU9yZGVycyA9IHRoaXMuZHhQdXJjaGFzZU9yZGVyRG9jdW1lbnRzLmluc3RhbmNlLmdldFNlbGVjdGVkUm93c0RhdGEoKVxyXG4gICAgICAgIGxldCByZWZlcmVuY2VEb2NzID0gW107XHJcbiAgICAgICAgaWYgKHB1cmNoYXNlT3JkZXJzLmxlbmd0aCA+IDAgJiYgcHVyY2hhc2VEZXNwYXRjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIlJlZmVyYW5zIG9sYXJhayB5YWxuxLF6Y2EgYmlyIGJlbGdlIHTDvHLDvCBzZcOnaWxlYmlsaXIuXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocHVyY2hhc2VPcmRlcnMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgcmVmZXJlbmNlRG9jcyA9IHB1cmNoYXNlT3JkZXJzO1xyXG4gICAgICAgIGlmIChwdXJjaGFzZURlc3BhdGNoZXMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgcmVmZXJlbmNlRG9jcyA9IHB1cmNoYXNlRGVzcGF0Y2hlcztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZnREb2N1bWVudExpbmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHJlZmVyZW5jZURvY3Muc29tZShlID0+ICF0aGlzLmRyYWZ0RG9jdW1lbnRMaW5lcy5zb21lKGQgPT4gZC5vYmpUeXBlID09PSBlLm9ialR5cGUpKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihcIlJlZmVyYW5zIG9sYXJhayB5YWxuxLF6Y2EgYmlyIGJlbGdlIHTDvHLDvCBzZcOnaWxlYmlsaXIuXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWZlcmVuY2VEb2NzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICF0aGlzLmRyYWZ0RG9jdW1lbnRMaW5lcy5zb21lKGRyYWZ0ID0+XHJcbiAgICAgICAgICAgICAgICBkcmFmdC5vYmpUeXBlID09PSBlbGVtZW50Lm9ialR5cGUgJiZcclxuICAgICAgICAgICAgICAgIGRyYWZ0LmRvY0VudHJ5ID09PSBlbGVtZW50LmRvY0VudHJ5ICYmXHJcbiAgICAgICAgICAgICAgICBkcmFmdC5saW5lTnVtID09PSBlbGVtZW50LmxpbmVOdW1cclxuICAgICAgICAgICAgKSAmJiB0aGlzLmRyYWZ0RG9jdW1lbnRMaW5lcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG9wZW5RdHk6IGVsZW1lbnQub3BlblF0eSxcclxuICAgICAgICAgICAgICAgIG9ialR5cGU6IGVsZW1lbnQub2JqVHlwZSxcclxuICAgICAgICAgICAgICAgIGRvY0VudHJ5OiBlbGVtZW50LmRvY0VudHJ5LFxyXG4gICAgICAgICAgICAgICAgbGluZU51bTogZWxlbWVudC5saW5lTnVtLFxyXG4gICAgICAgICAgICAgICAgZG9jRGF0ZTogZWxlbWVudC5kb2NEYXRlLFxyXG4gICAgICAgICAgICAgICAgZG9jRHVlRGF0ZTogZWxlbWVudC5kb2NEdWVEYXRlLFxyXG4gICAgICAgICAgICAgICAgaXRlbUNvZGU6IGVsZW1lbnQuaXRlbUNvZGUsXHJcbiAgICAgICAgICAgICAgICBjYXJkQ29kZTogZWxlbWVudC5jYXJkQ29kZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5oaWRlRm9ybU9wZW5Eb2N1bWVudHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlRm9ybU9wZW5Eb2N1bWVudHMoKSB7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvck9wZW5Eb2NzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsQnVzeUZvck9wZW5Eb2NzID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGhpZGVGb3JtRHJhZnQoKSB7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsQnVzeUZvckRyYWZ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsT3BlbkZvckRyYWZ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kcmFmdERvY3VtZW50TGluZXMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVEcmFmdERvY3VtZW50KCkge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbEJ1c3lGb3JEcmFmdCA9IHRydWU7XHJcblxyXG4gICAgICAgIGxldCBkcmFmdEdyaWRMaW5lcyA9IHRoaXMuZHhEcmFmdERvY3VtZW50TGluZXMuaW5zdGFuY2UuZ2V0VmlzaWJsZVJvd3MoKVxyXG5cclxuICAgICAgICBsZXQgcmVxdWVzdER0b0RvY3VtZW50TGluZXM6IENvbm5lY3RvckRyYWZ0RG9jdW1lbnRMaW5lRHRvW10gPSBbXTtcclxuXHJcbiAgICAgICAgZHJhZnRHcmlkTGluZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgcmVxdWVzdER0b0RvY3VtZW50TGluZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogZWxlbWVudC5kYXRhLm9wZW5RdHksXHJcbiAgICAgICAgICAgICAgICBiYXNlVHlwZTogZWxlbWVudC5kYXRhLm9ialR5cGUsXHJcbiAgICAgICAgICAgICAgICBiYXNlRW50cnk6IGVsZW1lbnQuZGF0YS5kb2NFbnRyeSxcclxuICAgICAgICAgICAgICAgIGJhc2VMaW5lOiBlbGVtZW50LmRhdGEubGluZU51bVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICBsZXQgcmVxdWVzdER0bzogQ29ubmVjdG9yRHJhZnREb2N1bWVudER0byA9IHtcclxuICAgICAgICAgICAgZG9jRW50cnk6IG51bGwsXHJcbiAgICAgICAgICAgIGRvY051bTogbnVsbCxcclxuICAgICAgICAgICAgZG9jQ3VycmVuY3k6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uZG9jdW1lbnRDdXJyZW5jeUNvZGU/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGRvY09iamVjdENvZGU6IFwib1B1cmNoYXNlSW52b2ljZXNcIixcclxuICAgICAgICAgICAgZG9jRGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICB0YXhEYXRlOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmlzc3VlRGF0ZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgZG9jRHVlRGF0ZTogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5wYXltZW50VGVybXNQYXltZW50RHVlRGF0ZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgZG9jUmF0ZTogKHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJpY2luZ0V4Y2hhbmdlUmF0ZUNhbGN1bGF0aW9uUmF0ZSA8PSAxIHx8IGlzTnVsbE9yRW1wdHkodGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlPy5wcmljaW5nRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlKSkgPyAxIDogdGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLnByaWNpbmdFeGNoYW5nZVJhdGVDYWxjdWxhdGlvblJhdGUsXHJcbiAgICAgICAgICAgIGNhcmRDb2RlOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/LmFjY291bnRpbmdTdXBwbGllclBhcnR5VmtuVGNrbj8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgbnVtQXRDYXJkOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmludm9pY2VJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9FRkFUTk86IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8uaW52b2ljZUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICB1X1VVSUQ6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8udXVJZD8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9TRU5EOiB0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2U/Lmludm9pY2VUeXBlQ29kZT8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgdV9Qcm9maWxlSWQ6IHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZT8ucHJvZmlsZUlkPy50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBkb2N1bWVudExpbmVzOiByZXF1ZXN0RHRvRG9jdW1lbnRMaW5lc1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVEcmFmdERvY3VtZW50KHJlcXVlc3REdG8sIHRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5pZClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlRm9ybURyYWZ0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5keEluYm91bmRJbnZvaWNlSW5zdGFuY2UuaW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MocmVzdWx0LmRvY0VudHJ5ICsgXCIgbnVtYXJhbMSxIHRhc2xhayBiZWxnZSBiYcWfYXLEsXlsYSBvbHXFn3R1cnVsZHUuXCIpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKFwiVGFzbGFrIGJlbGdlIG9sdcWfdHVydWx1cmtlbiBiaXIgaGF0YSBvbHXFn3R1OlwiICsgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm9jZXNzTWFudWFsKHJlY29yZCl7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnByb2Nlc3NNYW51YWwocmVjb3JkLmlkKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgaWYocmVzdWx0KXtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcyhcIkJlbGdlIGJhxZ9hcsSxeWxhIG1hbnVlbCBpxZ9sZW5kaS5cIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmR4SW5ib3VuZEludm9pY2VJbnN0YW5jZS5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0JveENoYW5nZWQoZXZlbnQpIHtcclxuXHJcbiAgICAgICAgbGV0IGZvcm1Db250cm9scyA9IHRoaXMuZm9ybVJlc3BvbnNlLmNvbnRyb2xzXHJcbiAgICAgICAgdmFyIGlkID0gZXZlbnQudGFyZ2V0LmlkO1xyXG4gICAgICAgIHZhciBjaGVja2JveGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3Jlc3BvbnNlQ2hlY2snKSBhcyBOb2RlTGlzdE9mPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gICAgICAgIGNoZWNrYm94ZXMuZm9yRWFjaChjaGVja2JveCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGVja2JveC5pZCAhPT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIGNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sc1tjaGVja2JveC5hdHRyaWJ1dGVzW1wiZm9ybWNvbnRyb2xuYW1lXCJdLnZhbHVlXS5zZXRWYWx1ZShjaGVja2JveC5jaGVja2VkKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlUm93c0NvbG9yKGUpIHtcclxuXHJcbiAgICAgICAgaWYgKGUucm93VHlwZSA9PSBcImRhdGFcIikge1xyXG5cclxuICAgICAgICAgICAgaWYgKGUuZGF0YS5yZWNlaXZlclJlc3BvbnNlICE9IDApXHJcbiAgICAgICAgICAgICAgICBlLnJvd0VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gZS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gMSA/IFwiIzNlYmQ2MFwiIDogXCIjY2M0ZjQ1XCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFJlY2VpdmVyUmVzcG9uc2VOYW1lKHJlc3BvbnNlSWQpIHtcclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMuaW5ib3VuZEludm9pY2VSZWNlaXZlclJlc3BvbnNlTG9va3VwLmZpbmQoKHgpID0+IHguaWQgPT09IHJlc3BvbnNlSWQpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGlzcGxheU5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEljb25DbGFzcyhyZXNwb25zZUlkKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlSWQgPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJmYXMgZmEtY2xvY2tcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS1jaGVjay1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJZCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcImZhcyBmYS10aW1lcy1jaXJjbGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RG9jT2JqZWN0TmFtZShkYXRhKSB7XHJcbiAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgbGV0IG9iak5hbWUgPSAoKGRhdGEuaXNEcmFmdCA/IFwiVGFzbGFrIFwiIDogXCJcIikgKyB0aGlzLmludm9pY2VPYmplY3RzRW51bUxvb2t1cC5maW5kKCh4KSA9PiB4LmlkID09IChkYXRhLmlzRHJhZnQgPyBkYXRhLnJlc291cmNlU3ViRG9jVHlwZSA6IGRhdGEucmVzb3VyY2VEb2NUeXBlKSk/LmRpc3BsYXlOYW1lKTtcclxuICAgICAgICBpZihvYmpOYW1lID09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBvYmpOYW1lO1xyXG4gICAgfVxyXG59IiwiPGFicC1wYWdlIFt0aXRsZV09XCInZURvbnVzdW06OkluYm91bmRJbnZvaWNlcycgfCBhYnBMb2NhbGl6YXRpb25cIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxidXR0b24gKmFicFBlcm1pc3Npb249XCInZURvbnVzdW0uSW52b2ljZXMuQ3JlYXRlJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCIgKGNsaWNrKT1cImdldEluYm91bmRJbnZvaWNlKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlIG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ2VEb251c3VtOjpDaGVja0luYm91bmRJbnZvaWNlcycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG4gIDxwPkVudGVncmF0w7ZyZGVuIGFsxLFuYW4gZmF0dXJhbGFyxLEgbGlzdGVsZXllbiBla3JhbjwvcD5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeEluYm91bmRJbnZvaWNlSW5zdGFuY2UgW2RhdGFTb3VyY2VdPVwiaW5ib3VuZEludm9pY2VzRGF0YVNvdXJjZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJ0cnVlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIiBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIlxyXG4gICAgICAgIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIiBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNzV2aDtcIj5cclxuICAgICAgICA8ZHhvLXBhZ2VyIFt2aXNpYmxlXT1cInRydWVcIiBbc2hvd0luZm9dPVwidHJ1ZVwiIFthbGxvd2VkUGFnZVNpemVzXT1cIls1MCwxMDAsMjAwXVwiIFtzaG93TmF2aWdhdGlvbkJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc2hvd1BhZ2VTaXplU2VsZWN0b3JdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHhvLXBhZ2VyPlxyXG4gICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCI1MFwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwibXVsdGlwbGVcIiBzZWxlY3RBbGxNb2RlPVwicGFnZVwiIHNob3dDaGVja0JveGVzTW9kZT1cImFsd2F5c1wiPlxyXG4gICAgICAgIDwvZHhvLXNlbGVjdGlvbj5cclxuICAgICAgICA8ZHhvLWNvbHVtbi1jaG9vc2VyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW2VuYWJsZWRdPVwidHJ1ZVwiIG1vZGU9XCJzZWxlY3RcIj48L2R4by1jb2x1bW4tY2hvb3Nlcj5cclxuICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgPGR4by1ncm91cC1wYW5lbCBbdmlzaWJsZV09XCJ0cnVlXCIgW2FsbG93Q29sdW1uRHJhZ2dpbmddPVwidHJ1ZVwiPjwvZHhvLWdyb3VwLXBhbmVsPlxyXG4gICAgICAgIDxkeG8tZ3JvdXBpbmcgI2V4cGFuZCBbYXV0b0V4cGFuZEFsbF09XCJmYWxzZVwiIFthbGxvd0NvbGxhcHNpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbY29udGV4dE1lbnVFbmFibGVkXT1cInRydWVcIj48L2R4by1ncm91cGluZz5cclxuICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgPGR4by1leHBvcnQgW2VuYWJsZWRdPVwidHJ1ZVwiIFthbGxvd0V4cG9ydFNlbGVjdGVkRGF0YV09XCJmYWxzZVwiPjwvZHhvLWV4cG9ydD5cclxuICAgICAgICA8ZHhvLWNvbHVtbi1maXhpbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWNvbHVtbi1maXhpbmc+XHJcbiAgICAgICAgPGR4by1maWx0ZXItYnVpbGRlciBbYWxsb3dIaWVyYXJjaGljYWxGaWVsZHNdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1idWlsZGVyPlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXBhbmVsIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcGFuZWw+XHJcbiAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBbZml4ZWRdPVwidHJ1ZVwiIGRhdGFGaWVsZD1cImlkXCIgd2lkdGg9XCIxMjBcIiBbYWxsb3dHcm91cGluZ109XCJmYWxzZVwiIFthbGxvd0ZpbHRlcmluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBbYWxsb3dIZWFkZXJGaWx0ZXJpbmddPVwiZmFsc2VcIiBbYWxsb3dIaWRpbmddPVwiZmFsc2VcIiBbYWxsb3dSZW9yZGVyaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgIGNlbGxUZW1wbGF0ZT1cIm9wZXJhdGlvblRlbXBsYXRlXCIgY2FwdGlvbj1cInt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cIj5cclxuICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgcm93IG9mICdvcGVyYXRpb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGRyb3Bkb3duLXRvZ2dsZVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRJZENvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb2cgbXItMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInVwZGF0ZShyb3cuZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVkaXRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJkZWxldGUocm93LmRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJnZXRJbnZvaWNlUHJldmlldyhyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNjUwIHx8IHJvdy5kYXRhLnN0YXR1cyA9PSA3NTAgfHwgcm93LmRhdGEuc3RhdHVzID09IDY4MCB8fCByb3cuZGF0YS5zdGF0dXMgPT0gNzgwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkdldFZpZXcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJvcGVuUmVzcG9uc2VNb2RhbChyb3cuZGF0YSlcIiBzXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmRhdGEucHJvZmlsZUlkID09ICdUSUNBUklGQVRVUkEnICYmIHJvdy5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OlJlc3BvbnNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwib3BlblBhcnRuZXJNb2RhbChyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLmludm9pY2VUeXBlQ29kZSAhPSAnSUFERScgJiYgKHJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMClcIj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS11c2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZURvbnVzdW06OkNyZWF0ZUJ1c2luZXNzUGFydG5lcicgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cIm9wZW5EcmFmdEZvcm0ocm93LmRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3cuZGF0YS5pbnZvaWNlVHlwZUNvZGUgIT0gJ0lBREUnICYmIHJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZpbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdlRG9udXN1bTo6Q3JlYXRlRHJhZnREb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwicHJvY2Vzc01hbnVhbChyb3cuZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvdy5kYXRhLnN0YXR1cyA9PSA2MDAgfHwgcm93LmRhdGEuc3RhdHVzID09IDcwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWhhbmQtcGFwZXItb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2VEb251c3VtOjpQcm9jZXNzTWFudWFsJyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzc3VlRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06Oklzc3VlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGF5bWVudFRlcm1zUGF5bWVudER1ZURhdGVcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpQYXltZW50RHVlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidXVJZFwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6VXVJZCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaW52b2ljZUlkXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJbnZvaWNlSWQnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImFjY291bnRpbmdTdXBwbGllclBhcnR5TmFtZVwiXHJcbiAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkFjY291bnRpbmdTdXBwbGllclBhcnR5TmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuXCJcclxuICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6QWNjb3VudGluZ1N1cHBsaWVyUGFydHlWa25UY2tuJ3xhYnBMb2NhbGl6YXRpb259fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzdGF0dXNcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlN0YXR1cyd8YWJwTG9jYWxpemF0aW9ufX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImluYm91bmRJbnZvaWNlU3RhdHVzTG9va3VwXCIgdmFsdWVFeHByPVwiaWRcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCI+XHJcbiAgICAgICAgICA8L2R4by1sb29rdXA+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInJlc291cmNlRG9jRW50cnlcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlJlc291cmNlRG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBjZWxsVGVtcGxhdGU9XCJkb2NUeXBlVGVtcGxhdGVcIiBkYXRhRmllbGQ9XCJyZXNvdXJjZURvY1R5cGVcIlxyXG4gICAgICAgICAgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZXNvdXJjZURvY1R5cGUnfGFicExvY2FsaXphdGlvbn19XCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2RvY1R5cGVUZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAge3tnZXREb2NPYmplY3ROYW1lKGRhdGEuZGF0YSl9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9keGktY29sdW1uPlxyXG5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJyZWNlaXZlclJlc3BvbnNlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpSZWNlaXZlclJlc3BvbnNlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBjZWxsVGVtcGxhdGU9XCJpY29uVGVtcGxhdGVcIj5cclxuICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cImluYm91bmRJbnZvaWNlUmVjZWl2ZXJSZXNwb25zZUxvb2t1cFwiIHZhbHVlRXhwcj1cImlkXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPlxyXG4gICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2ljb25UZW1wbGF0ZSdcIj5cclxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cImdldEljb25DbGFzcyhkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSlcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2NvbG9yJzpkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSA9PSAnMScgPyAnZ3JlZW4nIDogZGF0YS5kYXRhLnJlY2VpdmVyUmVzcG9uc2UgPT0gJzInID8gJ3JlZCcgOiAnZ3JheSd9XCI+PC9pPlxyXG4gICAgICAgICAge3tnZXRSZWNlaXZlclJlc3BvbnNlTmFtZShkYXRhLmRhdGEucmVjZWl2ZXJSZXNwb25zZSl9fVxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwcm9maWxlSWRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlByb2ZpbGVJZCd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaW52b2ljZVR5cGVDb2RlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpJbnZvaWNlVHlwZUNvZGUnfGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImxlZ2FsTW9uZXRhcnlUb3RhbFBheWFibGVBbW91bnRcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OlBheWFibGVBbW91bnQnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIGRhdGFUeXBlPVwibnVtYmVyXCIgZm9ybWF0PVwiIywjIzAuMDBcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jdW1lbnRDdXJyZW5jeUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0N1cnJlbmN5J3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwcmljaW5nRXhjaGFuZ2VSYXRlQ2FsY3VsYXRpb25SYXRlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NSYXRlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBkYXRhVHlwZT1cIm51bWJlclwiIGZvcm1hdD1cIiMsIyMwLjAwXCI+PC9keGktY29sdW1uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeUZvclJlc3BvbnNlXCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlbkZvclJlc3BvbnNlXCIgW29wdGlvbnNdPVwieyBzaXplOiAnbScgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlNlbmRSZXNwb25zZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtUmVzcG9uc2VcIiBpZD1cImludm9pY2UtcmVzcG9uc2VcIiB2YWxpZGF0ZU9uU3VibWl0PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmFkZS1pbi10b3BcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6MjBweFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtaWRcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OklkJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtaWRcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaWRcIiBtYXhsZW5ndGg9XCIyNTZcIiBhdXRvZm9jdXM+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLXV1aWRcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlV1SWQnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImludm9pY2UtcmVzcG9uc2UtaW52b2ljZS11dWlkXCIgW2Rpc2FibGVkXT1cInRydWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludm9pY2VVVUlEXCIgbWF4bGVuZ3RoPVwiMjU2XCIgYXV0b2ZvY3VzPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImludm9pY2UtcmVzcG9uc2UtaW52b2ljZS1hY2NlcHRcIiBmb3JtQ29udHJvbE5hbWU9XCJpc0FjY2VwdGVkXCJcclxuICAgICAgICAgICAgICAgICAgbmFtZT1cInJlc3BvbnNlQ2hlY2tcIiAoY2hhbmdlKT1cImNoZWNrQm94Q2hhbmdlZCgkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLWFjY2VwdFwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkFjY2VwdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwiaW52b2ljZS1yZXNwb25zZS1pbnZvaWNlLXJlamVjdFwiIGZvcm1Db250cm9sTmFtZT1cImlzUmVqZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICBuYW1lPVwicmVzcG9uc2VDaGVja1wiIChjaGFuZ2UpPVwiY2hlY2tCb3hDaGFuZ2VkKCRldmVudClcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpbnZvaWNlLXJlc3BvbnNlLWludm9pY2UtcmVqZWN0XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UmVqZWN0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiIGZvcm1OYW1lPVwiaW52b2ljZS1yZXNwb25zZVwiXHJcbiAgICAgIChjbGljayk9XCJzZW5kSW52b2ljZVJlc3BvbnNlKGZhbHNlKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlJlamVjdCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIGZvcm1OYW1lPVwiaW52b2ljZS1yZXNwb25zZVwiXHJcbiAgICAgIChjbGljayk9XCJzZW5kSW52b2ljZVJlc3BvbnNlKHRydWUpXCI+XHJcbiAgICAgIHt7ICdlRG9udXN1bTo6QWNjZXB0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzTW9kYWxCdXN5Rm9yUGFydG5lclwiIFsodmlzaWJsZSldPVwiaXNNb2RhbE9wZW5Gb3JQYXJ0bmVyXCIgW29wdGlvbnNdPVwieyBzaXplOiAneGwnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAge3sgJ2VEb251c3VtOjpDcmVhdGVCdXNpbmVzc1BhcnRuZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVBhcnRuZXJcIiBpZD1cImNyZWF0ZS1wYXJ0bmVyXCIgKG5nU3VibWl0KT1cImNyZWF0ZUJ1c2luZXNzUGFydG5lcigpXCIgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOjIwcHhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyTmFtZSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1uYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIG1heGxlbmd0aD1cIjI1NlwiIGF1dG9mb2N1cz48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci12a25cIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJWS04nfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItdmtuXCIgW2Rpc2FibGVkXT1cInRydWVcIiBmb3JtQ29udHJvbE5hbWU9XCJ2a25cIlxyXG4gICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1wYXJ0bmVyLWFkZC1pZFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckFkZGl0aW9uYWxJZCd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1wYXJ0bmVyLWFkZC1pZFwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckFkZElkXCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItY3VycmVuY3lcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJDdXJyZW5jeSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1jdXJyZW5jeVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckN1cnJlbmN5XCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCIgYXV0b2ZvY3VzPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLXdlYi1zaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyV2ViU2l0ZSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci13ZWItc2l0ZVwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJXZWJTaXRlVVJJXCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItc2VyaWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyU2VyaWVzJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLXNlcmllc1wiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVTZXJpZXNcIiB2YWx1ZUV4cHI9XCJzZXJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwibmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lclNlcmllc1wiIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1Nlcmllc1wiIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBhdXRvZm9jdXM+PC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nU2VyaWVzXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgc3RhcnQtNTAgdHJhbnNsYXRlLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2VEb251c3VtOjpMb2FkaW5nJ3xhYnBMb2NhbGl6YXRpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyR3JvdXAnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItZ3JvdXBzXCIgW2RhdGFTb3VyY2VdPVwicGFydG5lckF2YWlsYWJsZUdyb3Vwc1wiIHZhbHVlRXhwcj1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwibmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckdyb3VwXCIgbWF4bGVuZ3RoPVwiMjU2XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nR3JvdXBzXCIgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiIGF1dG9mb2N1cz48L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdHcm91cHNcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBzdGFydC01MCB0cmFuc2xhdGUtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snZURvbnVzdW06OkxvYWRpbmcnfGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1hY2NvdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyQmFua0FjY291bnQnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwiY3JlYXRlLXBhcnRuZXItYWNjb3VudFwiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVBY2NvdW50c1wiIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJBY2NvdW50XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nQWNjb3VudHNcIiBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nQWNjb3VudHNcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBzdGFydC01MCB0cmFuc2xhdGUtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snZURvbnVzdW06OkxvYWRpbmcnfGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLW1haWxcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJNYWlsJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLW1haWxcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyRW1haWxcIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItY291bnRyeVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckNvdW50cnknfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLWNvdW50cnlcIiBbZGF0YVNvdXJjZV09XCJwYXJ0bmVyQXZhaWxhYmxlQ291bnRyaWVzXCIgdmFsdWVFeHByPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJuYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQ291bnRyeVwiIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImdldFN0YXRlcygpXCIgW2Rpc2FibGVkXT1cImlzTG9hZGluZ0NvdW50cmllc1wiIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1cz48L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdDb3VudHJpZXNcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBzdGFydC01MCB0cmFuc2xhdGUtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snZURvbnVzdW06OkxvYWRpbmcnfGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1zdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lclN0YXRlJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1zdGF0ZVwiIFtkYXRhU291cmNlXT1cInBhcnRuZXJBdmFpbGFibGVTdGF0ZXNcIiB2YWx1ZUV4cHI9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cIm5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJTdGF0ZVwiIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1N0YXRlc1wiIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIiBhdXRvZm9jdXM+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1N0YXRlc1wiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIHN0YXJ0LTUwIHRyYW5zbGF0ZS1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20gdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eydlRG9udXN1bTo6TG9hZGluZyd8YWJwTG9jYWxpemF0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLXppcGNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJaaXBjb2RlJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLXppcGNvZGVcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyWmlwQ29kZVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAge3snZURvbnVzdW06OlBhcnRuZXJDaXR5J3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLWNpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQ2l0eVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNyZWF0ZS1wYXJ0bmVyLWNvdW50eVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckNvdW50eSd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtcGFydG5lci1jb3VudHlcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0bmVyQ291bnR5XCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3JlYXRlLXBhcnRuZXItc3RyZWV0XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J2VEb251c3VtOjpQYXJ0bmVyU3RyZWV0J3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLXN0cmVldFwiIGZvcm1Db250cm9sTmFtZT1cInBhcnRuZXJTdHJlZXRcIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjcmVhdGUtcGFydG5lci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eydlRG9udXN1bTo6UGFydG5lckJsb2NrJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1wYXJ0bmVyLWJsb2NrXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFydG5lckJsb2NrXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeUZvclBhcnRuZXJcIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiXHJcbiAgICAgIGZvcm09XCJjcmVhdGUtcGFydG5lclwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OkNyZWF0ZUJ1c2luZXNzUGFydG5lcicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPGFicC1tb2RhbCBbYnVzeV09XCJpc01vZGFsQnVzeUZvckRyYWZ0XCIgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlbkZvckRyYWZ0XCIgW29wdGlvbnNdPVwieyBzaXplOiAneGwnIH1cIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz5cclxuICAgICAge3sgKHNlbGVjdGVkID8gJ0FicFVpOjpFZGl0JyA6ICdlRG9udXN1bTo6Q3JlYXRlRHJhZnQnKSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8Zm9ybSBpZD1cImRyYWZ0LWRvY3VtZW50XCI+XHJcbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmRcIj4gLS0+XHJcbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPiAtLT5cclxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXQtM1wiPiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLWxhYmVsXCI+IHt7J2VEb251c3VtOjpQYXJ0bmVyVktOJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IGlkPVwiY3JlYXRlLWRyYWZ0LXZrblwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRoaXMuc2VsZWN0ZWRJbmJvdW5kSW52b2ljZS5hY2NvdW50aW5nU3VwcGxpZXJQYXJ0eVZrblRja25cIiBtYXhsZW5ndGg9XCIyNTZcIj48L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC1sYWJlbFwiPiB7eydlRG9udXN1bTo6SXNzdWVEYXRlJ3xhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94IGlkPVwiY3JlYXRlLWRyYWZ0LWlzc3VlLWRhdGVcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0aGlzLnNlbGVjdGVkSW5ib3VuZEludm9pY2UuaXNzdWVEYXRlXCIgbWF4bGVuZ3RoPVwiMjU2XCI+PC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkeC1maWVsZC1sYWJlbFwiPiB7eydlRG9udXN1bTo6UGFydG5lck5hbWUnfGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggaWQ9XCJjcmVhdGUtZHJhZnQtcGFydG5lci1uYW1lXCIgW2Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLmFjY291bnRpbmdTdXBwbGllclBhcnR5TmFtZVwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtbGFiZWxcIj4ge3snZURvbnVzdW06Okludm9pY2VJZCd8YWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBpZD1cImNyZWF0ZS1kcmFmdC1pbnZvaWNlLWlkXCIgW2Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidGhpcy5zZWxlY3RlZEluYm91bmRJbnZvaWNlLmludm9pY2VJZFwiIG1heGxlbmd0aD1cIjI1NlwiPjwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZHgtZGF0YS1ncmlkICNkeERyYWZ0RG9jdW1lbnRMaW5lcyBbZGF0YVNvdXJjZV09XCJkcmFmdERvY3VtZW50TGluZXNcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3JlbW90ZU9wZXJhdGlvbnNdPVwiZmFsc2VcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1MHZoO1wiPlxyXG4gICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuICAgICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICA8ZHhvLWVkaXRpbmcgW2FsbG93VXBkYXRpbmddPVwidHJ1ZVwiIFthbGxvd0FkZGluZ109XCJmYWxzZVwiIFthbGxvd0RlbGV0aW5nXT1cInRydWVcIiBtb2RlPVwiY2VsbFwiIFt1c2VJY29uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keG8tZWRpdGluZz5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJvYmpUeXBlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpPYmplY3RUeXBlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PGR4by1sb29rdXAgW2RhdGFTb3VyY2VdPVwib2JqZWN0VHlwZXNMb29rdXBcIiB2YWx1ZUV4cHI9XCJpZFwiIGRpc3BsYXlFeHByPVwidGV4dFwiPlxyXG4gICAgICAgICAgPC9keG8tbG9va3VwPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NFbnRyeVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibGluZU51bVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6TGluZU51bSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgICAgPCEtLSA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjYXJkQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6Q2FyZENvZGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+IC0tPlxyXG4gICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0RhdGVcIiBkYXRhVHlwZT1cImRhdGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0RhdGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jRHVlRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRHVlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXRlbUNvZGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwib3BlblF0eVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6T3BlblF0eSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgW2FsbG93RWRpdGluZ109XCJ0cnVlXCI+PC9keGktY29sdW1uPlxyXG5cclxuICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICA8IS0tIDwvZGl2PlxyXG4gICAgICA8L2Rpdj4gLS0+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBVaTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiIChjbGljayk9XCJvcGVuT3BlbkRvY3VtZW50c0Zvcm0oKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OlJlc291cmNlRG9jdW1lbnRzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIFtkaXNhYmxlZF09XCJpc01vZGFsQnVzeUZvckRyYWZ0XCIgKGNsaWNrKT1cImNyZWF0ZURyYWZ0RG9jdW1lbnQoKVwiPlxyXG4gICAgICB7eyAnZURvbnVzdW06OkNyZWF0ZURvY3VtZW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcblxyXG48YWJwLW1vZGFsIFtidXN5XT1cImlzTW9kYWxCdXN5Rm9yT3BlbkRvY3NcIiBbKHZpc2libGUpXT1cImlzTW9kYWxPcGVuRm9yT3BlbkRvY3NcIiBbb3B0aW9uc109XCJ7IHNpemU6ICd4bCcgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPlxyXG4gICAgICB7eyAoc2VsZWN0ZWQgPyAnQWJwVWk6OkVkaXQnIDogJ2VEb251c3VtOjpPcGVuRG9jcycpIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2gzPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPGZvcm0gaWQ9XCJvcGVuLWRvY3VtZW50c1wiPlxyXG4gICAgICA8IS0tIERldkV4dHJlbWUgVGFiIFBhbmVsIC0tPlxyXG4gICAgICA8ZHgtdGFiLXBhbmVsIFthbmltYXRpb25FbmFibGVkXT1cInRydWVcIiBbc3dpcGVFbmFibGVkXT1cInRydWVcIiBbbG9vcF09XCJmYWxzZVwiICN0YWJQYW5lbD5cclxuICAgICAgICA8ZHhpLWl0ZW0gdGl0bGU9XCJ7eyAnZURvbnVzdW06OlB1cmNoYXNlT3JkZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS1zaG9wcGluZy1jYXJ0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2R4UHVyY2hhc2VPcmRlckRvY3VtZW50cyBbZGF0YVNvdXJjZV09XCJwdXJjaGFzZU9yZGVyRG9jdW1lbnRzXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbcmVtb3RlT3BlcmF0aW9uc109XCJmYWxzZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3JlcGFpbnRDaGFuZ2VzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiIFthbGxvd0NvbHVtblJlb3JkZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtjb2x1bW5IaWRpbmdFbmFibGVkXT1cInRydWVcIiBzdHlsZT1cImhlaWdodDogNTB2aDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1jb2x1bW4tZml4aW5nIFtlbmFibGVkXT1cInRydWVcIj48L2R4by1jb2x1bW4tZml4aW5nPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW2FsbG93U2VhcmNoXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8taGVhZGVyLWZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLXNvcnRpbmcgbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIiBzaG93Q2hlY2tCb3hlc01vZGU9XCJhbHdheXNcIj5cclxuICAgICAgICAgICAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWVkaXRpbmcgW2FsbG93VXBkYXRpbmddPVwiZmFsc2VcIiBbYWxsb3dBZGRpbmddPVwiZmFsc2VcIiBbYWxsb3dEZWxldGluZ109XCJmYWxzZVwiIG1vZGU9XCJjZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHhvLWVkaXRpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0VudHJ5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpEb2NFbnRyeSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImxpbmVOdW1cIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkxpbmVOdW0nfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY2FyZENvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkNhcmRDb2RlJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZG9jRGF0ZVwiIGRhdGFUeXBlPVwiZGF0ZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0R1ZURhdGVcIiBkYXRhVHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRHVlRGF0ZSd8YWJwTG9jYWxpemF0aW9ufX1cIiBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6SXRlbUNvZGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJvcGVuUXR5XCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpPcGVuUXR5J3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG5cclxuICAgICAgICA8ZHhpLWl0ZW0gdGl0bGU9XCJ7eyAnZURvbnVzdW06OlB1cmNoYXNlRGVzcGF0Y2gnIHwgYWJwTG9jYWxpemF0aW9uIH19XCIgaWNvbj1cImZhcyBmYS10cnVja1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHgtZGF0YS1ncmlkICNkeFB1cmNoYXNlRGVzcGF0Y2hEb2N1bWVudHMgW2RhdGFTb3VyY2VdPVwicHVyY2hhc2VEZXNwYXRjaERvY3VtZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3JlbW90ZU9wZXJhdGlvbnNdPVwiZmFsc2VcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtyZXBhaW50Q2hhbmdlc09ubHldPVwidHJ1ZVwiIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIiBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxyXG4gICAgICAgICAgICAgICAgICBbYWxsb3dDb2x1bW5SZW9yZGVyaW5nXT1cInRydWVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDUwdmg7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tY29sdW1uLWZpeGluZyBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tY29sdW1uLWZpeGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhvLWVkaXRpbmcgW2FsbG93VXBkYXRpbmddPVwiZmFsc2VcIiBbYWxsb3dBZGRpbmddPVwiZmFsc2VcIiBbYWxsb3dEZWxldGluZ109XCJmYWxzZVwiIG1vZGU9XCJjZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZHhvLWVkaXRpbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIiBzaG93Q2hlY2tCb3hlc01vZGU9XCJhbHdheXNcIj5cclxuICAgICAgICAgICAgICAgICAgPC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NFbnRyeVwiIGNhcHRpb249XCJ7eydlRG9udXN1bTo6RG9jRW50cnknfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJsaW5lTnVtXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpMaW5lTnVtJ3xhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNhcmRDb2RlXCIgY2FwdGlvbj1cInt7J2VEb251c3VtOjpDYXJkQ29kZSd8YWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY0RhdGVcIiBkYXRhVHlwZT1cImRhdGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0RhdGUnfGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NEdWVEYXRlXCIgZGF0YVR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snZURvbnVzdW06OkRvY0R1ZURhdGUnfGFicExvY2FsaXphdGlvbn19XCIgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXRlbUNvZGVcIiBjYXB0aW9uPVwie3snZURvbnVzdW06Okl0ZW1Db2RlJ3xhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwib3BlblF0eVwiIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNhcHRpb249XCJ7eydlRG9udXN1bTo6T3BlblF0eSd8YWJwTG9jYWxpemF0aW9ufX1cIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG4gICAgICA8L2R4LXRhYi1wYW5lbD5cclxuICAgIDwvZm9ybT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiBbZGlzYWJsZWRdPVwiaXNNb2RhbEJ1c3lGb3JPcGVuRG9jc1wiIChjbGljayk9XCJzZWxlY3RPcGVuRG9jdW1lbnRzKClcIj5cclxuICAgICAge3sgJ2VEb251c3VtOjpTZWxlY3REb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPiJdfQ==