@sunbird-cb/cbp-ai 0.1.2 → 0.1.4

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 (41) hide show
  1. package/esm2022/lib/ai-cbp-routing.module.mjs +5 -1
  2. package/esm2022/lib/ai-cbp.module.mjs +10 -5
  3. package/esm2022/lib/components/approval-request-form/approval-request-form.component.mjs +2 -2
  4. package/esm2022/lib/components/dashboard/dashboard.component.mjs +3 -3
  5. package/esm2022/lib/components/designation-approval-request-form/designation-approval-request-form.component.mjs +392 -0
  6. package/esm2022/lib/components/review-request/review-request.component.mjs +7 -1
  7. package/esm2022/lib/components/role-mapping-generation/role-mapping-generation.component.mjs +3 -4
  8. package/esm2022/lib/components/role-mapping-list/role-mapping-list.component.mjs +45 -20
  9. package/esm2022/lib/components/view-final-cbp-plan/view-final-cbp-plan.component.mjs +2 -1
  10. package/esm2022/lib/modules/shared/services/init.service.mjs +2 -2
  11. package/esm2022/lib/modules/shared/services/shared.service.mjs +12 -2
  12. package/esm2022/lib/modules/upload-document-page/upload-document-page.component.mjs +3 -1
  13. package/esm2022/lib/resolver/init-resolver.sevice.mjs +20 -0
  14. package/esm2022/public-api.mjs +19 -1
  15. package/fesm2022/sunbird-cb-cbp-ai.mjs +476 -33
  16. package/fesm2022/sunbird-cb-cbp-ai.mjs.map +1 -1
  17. package/lib/ai-cbp-routing.module.d.ts.map +1 -1
  18. package/lib/ai-cbp.module.d.ts +37 -36
  19. package/lib/ai-cbp.module.d.ts.map +1 -1
  20. package/lib/components/designation-approval-request-form/designation-approval-request-form.component.d.ts +47 -0
  21. package/lib/components/designation-approval-request-form/designation-approval-request-form.component.d.ts.map +1 -0
  22. package/lib/components/review-request/review-request.component.d.ts +2 -0
  23. package/lib/components/review-request/review-request.component.d.ts.map +1 -1
  24. package/lib/components/role-mapping-generation/role-mapping-generation.component.d.ts.map +1 -1
  25. package/lib/components/role-mapping-list/role-mapping-list.component.d.ts +5 -2
  26. package/lib/components/role-mapping-list/role-mapping-list.component.d.ts.map +1 -1
  27. package/lib/components/view-final-cbp-plan/view-final-cbp-plan.component.d.ts +1 -0
  28. package/lib/components/view-final-cbp-plan/view-final-cbp-plan.component.d.ts.map +1 -1
  29. package/lib/modules/shared/services/init.service.d.ts +1 -1
  30. package/lib/modules/shared/services/init.service.d.ts.map +1 -1
  31. package/lib/modules/shared/services/shared.service.d.ts +1 -0
  32. package/lib/modules/shared/services/shared.service.d.ts.map +1 -1
  33. package/lib/modules/upload-document-page/upload-document-page.component.d.ts +1 -0
  34. package/lib/modules/upload-document-page/upload-document-page.component.d.ts.map +1 -1
  35. package/lib/resolver/init-resolver.sevice.d.ts +11 -0
  36. package/lib/resolver/init-resolver.sevice.d.ts.map +1 -0
  37. package/package.json +1 -1
  38. package/public-api.d.ts +18 -0
  39. package/public-api.d.ts.map +1 -1
  40. package/sunbird-cb-cbp-ai-0.1.4.tgz +0 -0
  41. package/sunbird-cb-cbp-ai-0.1.2.tgz +0 -0
@@ -45,6 +45,7 @@ export class ViewFinalCbpPlanComponent {
45
45
  this.recommended_course_id = '';
46
46
  this.expandedCompetencies = {};
47
47
  this.competenciesCount = { total: 0, public_courses: 0, igot: 0 };
48
+ this.isPDFDownload = false;
48
49
  this.filterForm = this.fb.group({
49
50
  language: ['en']
50
51
  });
@@ -880,4 +881,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
880
881
  type: ViewChild,
881
882
  args: ['dialogContent']
882
883
  }] } });
883
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1maW5hbC1jYnAtcGxhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9saWIvY29tcG9uZW50cy92aWV3LWZpbmFsLWNicC1wbGFuL3ZpZXctZmluYWwtY2JwLXBsYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvdmlldy1maW5hbC1jYnAtcGxhbi92aWV3LWZpbmFsLWNicC1wbGFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBMkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVFuSCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQ1MsU0FBa0QsRUFDekIsSUFBUyxFQUNqQyxNQUFpQixFQUNqQixHQUFzQixFQUN2QixhQUE0QixFQUMzQixRQUFxQixFQUNyQixFQUFlO1FBTmhCLGNBQVMsR0FBVCxTQUFTLENBQXlDO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixhQUFRLEdBQVIs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QWpnQ1UseUJBQXlCLDhDQUcxQixlQUFlO21HQUhkLHlCQUF5QiwwUUNmdEMsbWkzQ0E0bUJVOzs0RkQ3bEJHLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx5QkFBeUI7OzBCQU9oQyxNQUFNOzJCQUFDLGVBQWU7b0xBd0JtQixVQUFVO3NCQUFyRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBWWQsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgSW5qZWN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IGh0bWwycGRmIGZyb20gJ2h0bWwycGRmLmpzJztcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSAnaHRtbDJjYW52YXMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmltcG9ydCB7IERlbGV0ZVJvbGVNYXBwaW5nUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9kZWxldGUtcm9sZS1tYXBwaW5nLXBvcHVwL2RlbGV0ZS1yb2xlLW1hcHBpbmctcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kdWxlcy9zaGFyZWQvc2VydmljZXMvc2hhcmVkLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZpZXctZmluYWwtY2JwLXBsYW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1maW5hbC1jYnAtcGxhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctZmluYWwtY2JwLXBsYW4uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3RmluYWxDYnBQbGFuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFZpZXdGaW5hbENicFBsYW5Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXG4gICkge1xuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbGFuZ3VhZ2U6IFsnZW4nXVxuICAgIH0pO1xuICAgIHRoaXMub3BlbmVkRnJvbSA9IGRhdGE/Lm9wZW5lZEZyb207XG4gICAgdGhpcy5nZXRNYXBwaW5nRGF0YSgpXG4gIH1cbiAgZmlsdGVyRm9ybSE6IEZvcm1Hcm91cDtcbiAgbGFuZ3VhZ2VzID0gW3sgXCJjb2RlXCI6IFwiZW5cIiwgbGFiZWw6IFwiRW5nbGlzaFwiIH0sXG4gIHsgXCJjb2RlXCI6IFwiaGlcIiwgbGFiZWw6IFwiSGluZGlcIiB9LFxuICB7IFwiY29kZVwiOiBcInRlXCIsIGxhYmVsOiBcIlRlbHVndVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwia25cIiwgbGFiZWw6IFwiS2FubmFkYVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwibXJcIiwgbGFiZWw6IFwiTWFyYXRoaVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwidGFcIiwgbGFiZWw6IFwiVGFtaWxcIiB9LFxuICB7IFwiY29kZVwiOiBcImd1XCIsIGxhYmVsOiBcIkd1amFyYXRpXCIgfSxcbiAgeyBcImNvZGVcIjogXCJtbFwiLCBsYWJlbDogXCJNYWxheWFsYW1cIiB9LFxuICB7IFwiY29kZVwiOiBcImJuXCIsIGxhYmVsOiBcIkJlbmdhbGlcIiB9LF07XG4gIGZpbHRlcmVkTGFuZ3VhZ2VzID0gWy4uLnRoaXMubGFuZ3VhZ2VzXTtcbiAgQFZpZXdDaGlsZCgncGRmQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwZGZDb250ZW50ITogRWxlbWVudFJlZjtcbiAgbG9hZGluZyA9IGZhbHNlXG4gIGRlc2lnbmF0aW9uRGF0YTogYW55ID0gW11cbiAgdG90YWxDb21wZXRlbmNpZU9iaiA9IHsgdG90YWw6IDAsIGJlaGF2aW9yYWw6IDAsIGZ1bmN0aW9uYWw6IDAsIGRvbWFpbjogMCB9XG4gIHBkZlRyaWdnZXIgPSBmYWxzZVxuICBqc29uRGF0YSA9IFtdXG4gIGZpbHRlcmRDb3Vyc2VzID0gW107XG4gIHBsYW5EYXRhOiBhbnlcbiAgcmVjb21tZW5kZWRfY291cnNlX2lkID0gJydcbiAgZXhwYW5kZWRDb21wZXRlbmNpZXM6IGFueSA9IHt9O1xuICBjb21wZXRlbmNpZXNDb3VudCA9IHsgdG90YWw6IDAsIHB1YmxpY19jb3Vyc2VzOiAwLCBpZ290OiAwIH07XG4gIG9wZW5lZEZyb20hOiBzdHJpbmc7XG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ0NvbnRlbnQnKSBkaWFsb2dDb250ZW50ITogRWxlbWVudFJlZjtcbiAgLy8gZGVzaWduYXRpb25EYXRhID0gW1xuICAvLyAgIHtcbiAgLy8gICAgIGRlc2lnbmF0aW9uOiBcIlNlY3JldGFyeSAoV0NEKVwiLFxuICAvLyAgICAgd2luZzogXCJNaW5pc3RyeSBMZWFkZXJzaGlwXCIsXG4gIC8vICAgICB1cGRhdGVkOiBcIjEwLzA5LzIwMjVcIixcbiAgLy8gICAgIHJvbGVzUmVzcG9uc2liaWxpdGllczogW1xuICAvLyAgICAgICBcIlByb3ZpZGUgb3ZlcmFsbCBzdXBlcnZpc2lvbiBvZiBtaW5pc3RyeSBwcm9ncmFtbWVzIGFuZCBzY2hlbWVzXCIsXG4gIC8vICAgICAgIFwiRW5zdXJlIGVmZmVjdGl2ZSBjb29yZGluYXRpb24gd2l0aCBTdGF0ZSBHb3Zlcm5tZW50cyBmb3Igc2NoZW1lIGltcGxlbWVudGF0aW9uXCIsXG4gIC8vICAgICAgIFwiU3RyYXRlZ2ljIHBvbGljeSBmb3JtdWxhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24gb3ZlcnNpZ2h0XCIsXG4gIC8vICAgICAgIFwiSW50ZXItbWluaXN0ZXJpYWwgY29vcmRpbmF0aW9uIGFuZCBsaWFpc29uXCIsXG4gIC8vICAgICAgIFwiUGFybGlhbWVudGFyeSBhZmZhaXJzIG1hbmFnZW1lbnRcIixcbiAgLy8gICAgICAgXCJTZW5pb3IgbGVhZGVyc2hpcCBnb3Zlcm5hbmNlIGFuZCBvdmVyc2lnaHRcIixcbiAgLy8gICAgICAgXCJOYXRpb25hbCBwcm9ncmFtbWUgc3RyYXRlZ2ljIGRpcmVjdGlvblwiLFxuICAvLyAgICAgICBcIkNhYmluZXQgbm90ZSB3cml0aW5nIGFuZCBwb2xpY3kgYnJpZWZzXCJcbiAgLy8gICAgIF0sXG4gIC8vICAgICBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzOiBbXG4gIC8vICAgICAgIFwiU3RyYXRlZ2ljIExlYWRlcnNoaXBcIiwgXCJFeGVjdXRpdmUgUHJlc2VuY2VcIiwgXCJJbmZsdWVuY2luZyBhbmQgTmVnb3RpYXRpb25cIixcbiAgLy8gICAgICAgXCJSZWxhdGlvbnNoaXAgTWFuYWdlbWVudFwiLCBcIlZlcmJhbCAmIE5vbi1WZXJiYWwgRmx1ZW5jeVwiLCBcIlBsYW5uaW5nICYgUHJpb3JpdGl6YXRpb25cIixcbiAgLy8gICAgICAgXCJBY2NvdW50YWJpbGl0eVwiLCBcIkNvbmZsaWN0IE1hbmFnZW1lbnRcIlxuICAvLyAgICAgXSxcbiAgLy8gICAgIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXM6IFtcbiAgLy8gICAgICAgXCJSdWxlcyBvZiBidXNpbmVzcyAoQW9CL1RvQilcIiwgXCJDYWJpbmV0IG5vdGUgd3JpdGluZ1wiLCBcIlN1Ym1pc3Npb24gb2YgYnJpZWZzLCBzdXBwbHkgb2YgaW5mb3JtYXRpb25cIixcbiAgLy8gICAgICAgXCJQb2xpY3kgZGVzaWduLyBhbWVuZG1lbnRcIiwgXCJQb2xpY3kgaW1wbGVtZW50YXRpb25cIiwgXCJQb2xpY3kgbW9uaXRvcmluZyAmIGltcGFjdCBhc3Nlc3NtZW50XCIsXG4gIC8vICAgICAgIFwiUHJvamVjdCBQbGFubmluZ1wiLCBcIlByb2plY3QgRXZhbHVhdGlvbiAmIE1vbml0b3JpbmdcIiwgXCJDcmVhdGlvbiBvZiBNJkUgRnJhbWV3b3JrXCIsXG4gIC8vICAgICAgIFwiQ2l0aXplbiBQYXJ0bmVyaW5nICYgQ29sbGFib3JhdGlvblwiLCBcIlB1YmxpYyBHcmlldmFuY2UgSGFuZGxpbmdcIlxuICAvLyAgICAgXSxcbiAgLy8gICAgIGRvbWFpbkNvbXBldGVuY2llczogW1xuICAvLyAgICAgICBcIlN0cmF0ZWdpYyBQb2xpY3kgRm9ybXVsYXRpb25cIiwgXCJJbnRlci1taW5pc3RlcmlhbCAmIFN0YXRlIEdvdmVybm1lbnQgQ29vcmRpbmF0aW9uXCIsXG4gIC8vICAgICAgIFwiU2VuaW9yIExlYWRlcnNoaXAgR292ZXJuYW5jZSAmIE92ZXJzaWdodFwiLCBcIkxlZ2lzbGF0aXZlICYgUGFybGlhbWVudGFyeSBBZmZhaXJzIE1hbmFnZW1lbnRcIixcbiAgLy8gICAgICAgXCJOYXRpb25hbCBQcm9ncmFtbWUgU3RyYXRlZ2ljIERpcmVjdGlvblwiXG4gIC8vICAgICBdLFxuICAvLyAgICAgY29tcGxldGlvblJhdGU6IHsgYmVoYXZpb3JhbDogODUsIGZ1bmN0aW9uYWw6IDc4LCBkb21haW46IDkyIH1cbiAgLy8gICB9XG4gIC8vIF07XG5cbiAgLy8gLy8gQ2FsY3VsYXRlIHRoZSB0b3RhbHMgZHluYW1pY2FsbHlcbiAgLy8gcHJpdmF0ZSBiZWhhdmlvcmFsVG90YWwgPSB0aGlzLmRlc2lnbmF0aW9uRGF0YS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgaXRlbS5iZWhhdmlvcmFsQ29tcGV0ZW5jaWVzLmxlbmd0aCwgMCk7XG4gIC8vIHByaXZhdGUgZnVuY3Rpb25hbFRvdGFsID0gdGhpcy5kZXNpZ25hdGlvbkRhdGEucmVkdWNlKChhY2MsIGl0ZW0pID0+IGFjYyArIGl0ZW0uZnVuY3Rpb25hbENvbXBldGVuY2llcy5sZW5ndGgsIDApO1xuICAvLyBwcml2YXRlIGRvbWFpblRvdGFsID0gdGhpcy5kZXNpZ25hdGlvbkRhdGEucmVkdWNlKChhY2MsIGl0ZW0pID0+IGFjYyArIGl0ZW0uZG9tYWluQ29tcGV0ZW5jaWVzLmxlbmd0aCwgMCk7XG5cbiAgLy8gLy8gQ2FsY3VsYXRlIHRoZSBhdmVyYWdlcyBkeW5hbWljYWxseVxuICAvLyBwcml2YXRlIGJlaGF2aW9yYWxBdmcgPSBNYXRoLnJvdW5kKHRoaXMuZGVzaWduYXRpb25EYXRhLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLmNvbXBsZXRpb25SYXRlLmJlaGF2aW9yYWwsIDApIC8gdGhpcy5kZXNpZ25hdGlvbkRhdGEubGVuZ3RoKTtcbiAgLy8gcHJpdmF0ZSBmdW5jdGlvbmFsQXZnID0gTWF0aC5yb3VuZCh0aGlzLmRlc2lnbmF0aW9uRGF0YS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgaXRlbS5jb21wbGV0aW9uUmF0ZS5mdW5jdGlvbmFsLCAwKSAvIHRoaXMuZGVzaWduYXRpb25EYXRhLmxlbmd0aCk7XG4gIC8vIHByaXZhdGUgZG9tYWluQXZnID0gTWF0aC5yb3VuZCh0aGlzLmRlc2lnbmF0aW9uRGF0YS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgaXRlbS5jb21wbGV0aW9uUmF0ZS5kb21haW4sIDApIC8gdGhpcy5kZXNpZ25hdGlvbkRhdGEubGVuZ3RoKTtcblxuICAvLyBvdmVyYWxsS1BJcyA9IFtcbiAgLy8gICB7XG4gIC8vICAgICBuYW1lOiAnQmVoYXZpb3JhbCBDb21wZXRlbmNpZXMnLFxuICAvLyAgICAgdG90YWw6IHRoaXMuYmVoYXZpb3JhbFRvdGFsLFxuICAvLyAgICAgYXZnQ29tcGxldGlvbjogdGhpcy5iZWhhdmlvcmFsQXZnLFxuICAvLyAgICAgY29sb3I6ICcjM0I4MkY2JyxcbiAgLy8gICAgIGJnQ29sb3I6ICdiZy1ibHVlLTUwJyxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIG5hbWU6ICdGdW5jdGlvbmFsIENvbXBldGVuY2llcycsXG4gIC8vICAgICB0b3RhbDogdGhpcy5mdW5jdGlvbmFsVG90YWwsXG4gIC8vICAgICBhdmdDb21wbGV0aW9uOiB0aGlzLmZ1bmN0aW9uYWxBdmcsXG4gIC8vICAgICBjb2xvcjogJyMxMEI5ODEnLFxuICAvLyAgICAgYmdDb2xvcjogJ2JnLWdyZWVuLTUwJyxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIG5hbWU6ICdEb21haW4gQ29tcGV0ZW5jaWVzJyxcbiAgLy8gICAgIHRvdGFsOiB0aGlzLmRvbWFpblRvdGFsLFxuICAvLyAgICAgYXZnQ29tcGxldGlvbjogdGhpcy5kb21haW5BdmcsXG4gIC8vICAgICBjb2xvcjogJyM4QjVDRjYnLFxuICAvLyAgICAgYmdDb2xvcjogJ2JnLXB1cnBsZS01MCcsXG4gIC8vICAgfSxcbiAgLy8gICB7XG4gIC8vICAgICBuYW1lOiAnVG90YWwgQ29tcGV0ZW5jaWVzJyxcbiAgLy8gICAgIHRvdGFsOiB0aGlzLmJlaGF2aW9yYWxUb3RhbCArIHRoaXMuZnVuY3Rpb25hbFRvdGFsICsgdGhpcy5kb21haW5Ub3RhbCxcbiAgLy8gICAgIGF2Z0NvbXBsZXRpb246IE1hdGgucm91bmQoKHRoaXMuYmVoYXZpb3JhbEF2ZyArIHRoaXMuZnVuY3Rpb25hbEF2ZyArIHRoaXMuZG9tYWluQXZnKSAvIDMpLFxuICAvLyAgICAgY29sb3I6ICcjNEI1NTYzJyxcbiAgLy8gICAgIGJnQ29sb3I6ICdiZy1ncmF5LTIwMCcsXG4gIC8vICAgfVxuICAvLyBdO1xuXG4gIGNsb3NlRGlhbG9nKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcbiAgfVxuXG4gIGNhbmNlbEZvcm0oKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICB9XG5cbiAgc2F2ZVJvbGVNYXBwaW5nKCkge1xuXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc29sZS5sb2coJ3RoaXMuZGF0YScsIHRoaXMuZGF0YSlcbiAgICB0aGlzLmpzb25EYXRhID0gdGhpcy5kYXRhPy5wYXlsb2FkXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5kaWFsb2dDb250ZW50KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kaWFsb2dDb250ZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG8oe1xuICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgICAgfSk7XG4gICAgICB9LCA1MDApXG5cbiAgICB9XG4gIH1cblxuICBnZXRNYXBwaW5nRGF0YSgpIHtcbiAgICBjb25zb2xlLmxvZygnaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmonLCB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0Q2JwUGxhbnNXaXRoU2VsZWN0ZWRDb3Vyc2VzKCkpXG4gICAgaWYgKHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LnNiT3JnVHlwZSA9PT0gJ21pbmlzdHJ5Jykge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgICAgbGV0IHN0YXRlX2NlbnRlcl9pZCA9IHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXJcblxuICAgICAgaWYgKHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzPy5sZW5ndGgpIHtcblxuICAgICAgICBsZXQgZGVwYXJ0bWVudF9pZCA9IHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzXG4gICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5nZXRSb2xlTWFwcGluZ0J5U3RhdGVDZW50ZXJBbmREZXBhcnRtZW50KHN0YXRlX2NlbnRlcl9pZCwgZGVwYXJ0bWVudF9pZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqID0geyB0b3RhbDogMCwgYmVoYXZpb3JhbDogMCwgZnVuY3Rpb25hbDogMCwgZG9tYWluOiAwIH07XG4gICAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uRGF0YSA9IFtdO1xuXG4gICAgICAgICAgICAvLyDinIUgR0xPQkFMIFVOSVFVRSBTRVRTIChmb3Igb3ZlcmFsbCB1bmlxdWUgY291bnQpXG4gICAgICAgICAgICBjb25zdCBnbG9iYWxUb3RhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZ2xvYmFsQmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZ2xvYmFsRnVuY3Rpb25hbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZ2xvYmFsRG9tYWluU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgICAgLy8g4pyFIExPQ0FMIFVOSVFVRSBTRVRTIChwZXIgZGVzaWduYXRpb24pXG4gICAgICAgICAgICAgIGNvbnN0IHRvdGFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICAgIGNvbnN0IGJlaGF2aW9yYWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25hbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgICBjb25zdCBkb21haW5TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAgICAgICBsZXQgY29tcGV0ZW5jaWVzT2JqID0geyB0b3RhbDogMCwgYmVoYXZpb3JhbDogMCwgZnVuY3Rpb25hbDogMCwgZG9tYWluOiAwIH07XG5cbiAgICAgICAgICAgICAgcmVzW2ldPy5jb21wZXRlbmNpZXM/LmZvckVhY2goYyA9PiB7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0aGVtZSA9IChjPy50aGVtZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViVGhlbWUgPSAoYz8uc3ViX3RoZW1lIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gKGM/LnR5cGUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGVtZSAmJiAhc3ViVGhlbWUpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGAke3RoZW1lfS0ke3N1YlRoZW1lfWA7XG5cbiAgICAgICAgICAgICAgICAvLyDinIUgUEVSIERFU0lHTkFUSU9OIFVOSVFVRVxuICAgICAgICAgICAgICAgIGlmICghdG90YWxTZXQuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgIHRvdGFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLnRvdGFsKys7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdiZWhhdmlvcmFsJyAmJiAhYmVoYXZpb3JhbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgYmVoYXZpb3JhbFNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai5iZWhhdmlvcmFsKys7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdmdW5jdGlvbmFsJyAmJiAhZnVuY3Rpb25hbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbFNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai5mdW5jdGlvbmFsKys7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkb21haW4nICYmICFkb21haW5TZXQuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgIGRvbWFpblNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai5kb21haW4rKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDinIUgR0xPQkFMIFVOSVFVRSBUUkFDS0lOR1xuICAgICAgICAgICAgICAgIGdsb2JhbFRvdGFsU2V0LmFkZChrZXkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdiZWhhdmlvcmFsJykgZ2xvYmFsQmVoYXZpb3JhbFNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uYWwnKSBnbG9iYWxGdW5jdGlvbmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZG9tYWluJykgZ2xvYmFsRG9tYWluU2V0LmFkZChrZXkpO1xuXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgIGRlc2lnbmF0aW9uOiByZXNbaV0uZGVzaWduYXRpb25fbmFtZSxcbiAgICAgICAgICAgICAgICB3aW5nOiByZXNbaV0ud2luZ19kaXZpc2lvbl9zZWN0aW9uLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWQ6IHJlc1tpXS51cGRhdGVkX2F0LFxuICAgICAgICAgICAgICAgIHJvbGVzUmVzcG9uc2liaWxpdGllczogcmVzW2ldLnJvbGVfcmVzcG9uc2liaWxpdGllcyxcbiAgICAgICAgICAgICAgICBhY3Rpdml0aWVzOiByZXNbaV0uYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmosXG4gICAgICAgICAgICAgICAgYmVoYXZpb3JhbENvbXBldGVuY2llczogWy4uLmJlaGF2aW9yYWxTZXRdLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXM6IFsuLi5mdW5jdGlvbmFsU2V0XSxcbiAgICAgICAgICAgICAgICBkb21haW5Db21wZXRlbmNpZXM6IFsuLi5kb21haW5TZXRdLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291cnNlczogcmVzW2ldPy5jYnBfcGxhbnM/LmF0KC0xKT8uc2VsZWN0ZWRfY291cnNlcyB8fCBbXVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDinIUgU0VUIEdMT0JBTCBDT1VOVFMgQUZURVIgTE9PUFxuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLnRvdGFsID0gZ2xvYmFsVG90YWxTZXQuc2l6ZTtcbiAgICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5iZWhhdmlvcmFsID0gZ2xvYmFsQmVoYXZpb3JhbFNldC5zaXplO1xuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmZ1bmN0aW9uYWwgPSBnbG9iYWxGdW5jdGlvbmFsU2V0LnNpemU7XG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZG9tYWluID0gZ2xvYmFsRG9tYWluU2V0LnNpemU7XG5cbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKClcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3RoaXMuZGVzaWduYXRpb25EYXRhJywgdGhpcy5kZXNpZ25hdGlvbkRhdGEpXG4gICAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy50b3RhbENvbXBldGVuY2llT2JqJywgdGhpcy50b3RhbENvbXBldGVuY2llT2JqKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihlcnJvcj8uZXJyb3I/LmRldGFpbCwgJ1gnLCB7XG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5nZXRSb2xlTWFwcGluZ0J5U3RhdGVDZW50ZXIoc3RhdGVfY2VudGVyX2lkKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICBjb25zb2xlLmxvZygncmVzJywgcmVzKVxuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqID0geyB0b3RhbDogMCwgYmVoYXZpb3JhbDogMCwgZnVuY3Rpb25hbDogMCwgZG9tYWluOiAwIH07XG4gICAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uRGF0YSA9IFtdO1xuXG4gICAgICAgICAgICAvLyDinIUgR0xPQkFMIFVOSVFVRSBTRVRTIChmb3Igb3ZlcmFsbCB1bmlxdWUgY291bnQpXG4gICAgICAgICAgICBjb25zdCBnbG9iYWxUb3RhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZ2xvYmFsQmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZ2xvYmFsRnVuY3Rpb25hbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZ2xvYmFsRG9tYWluU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgICAgLy8g4pyFIExPQ0FMIFVOSVFVRSBTRVRTIChwZXIgZGVzaWduYXRpb24pXG4gICAgICAgICAgICAgIGNvbnN0IHRvdGFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICAgIGNvbnN0IGJlaGF2aW9yYWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25hbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgICBjb25zdCBkb21haW5TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAgICAgICBsZXQgY29tcGV0ZW5jaWVzT2JqID0geyB0b3RhbDogMCwgYmVoYXZpb3JhbDogMCwgZnVuY3Rpb25hbDogMCwgZG9tYWluOiAwIH07XG5cbiAgICAgICAgICAgICAgcmVzW2ldPy5jb21wZXRlbmNpZXM/LmZvckVhY2goYyA9PiB7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0aGVtZSA9IChjPy50aGVtZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViVGhlbWUgPSAoYz8uc3ViX3RoZW1lIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gKGM/LnR5cGUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGVtZSAmJiAhc3ViVGhlbWUpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGAke3RoZW1lfS0ke3N1YlRoZW1lfWA7XG5cbiAgICAgICAgICAgICAgICAvLyDinIUgUEVSIERFU0lHTkFUSU9OIFVOSVFVRVxuICAgICAgICAgICAgICAgIGlmICghdG90YWxTZXQuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgIHRvdGFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLnRvdGFsKys7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdiZWhhdmlvcmFsJyAmJiAhYmVoYXZpb3JhbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgYmVoYXZpb3JhbFNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai5iZWhhdmlvcmFsKys7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdmdW5jdGlvbmFsJyAmJiAhZnVuY3Rpb25hbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbFNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai5mdW5jdGlvbmFsKys7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkb21haW4nICYmICFkb21haW5TZXQuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgIGRvbWFpblNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai5kb21haW4rKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDinIUgR0xPQkFMIFVOSVFVRSBUUkFDS0lOR1xuICAgICAgICAgICAgICAgIGdsb2JhbFRvdGFsU2V0LmFkZChrZXkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdiZWhhdmlvcmFsJykgZ2xvYmFsQmVoYXZpb3JhbFNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uYWwnKSBnbG9iYWxGdW5jdGlvbmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZG9tYWluJykgZ2xvYmFsRG9tYWluU2V0LmFkZChrZXkpO1xuXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgIGRlc2lnbmF0aW9uOiByZXNbaV0uZGVzaWduYXRpb25fbmFtZSxcbiAgICAgICAgICAgICAgICB3aW5nOiByZXNbaV0ud2luZ19kaXZpc2lvbl9zZWN0aW9uLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWQ6IHJlc1tpXS51cGRhdGVkX2F0LFxuICAgICAgICAgICAgICAgIHJvbGVzUmVzcG9uc2liaWxpdGllczogcmVzW2ldLnJvbGVfcmVzcG9uc2liaWxpdGllcyxcbiAgICAgICAgICAgICAgICBhY3Rpdml0aWVzOiByZXNbaV0uYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmosXG4gICAgICAgICAgICAgICAgYmVoYXZpb3JhbENvbXBldGVuY2llczogWy4uLmJlaGF2aW9yYWxTZXRdLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXM6IFsuLi5mdW5jdGlvbmFsU2V0XSxcbiAgICAgICAgICAgICAgICBkb21haW5Db21wZXRlbmNpZXM6IFsuLi5kb21haW5TZXRdLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291cnNlczogcmVzW2ldPy5jYnBfcGxhbnM/LmF0KC0xKT8uc2VsZWN0ZWRfY291cnNlcyB8fCBbXVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDinIUgU0VUIEdMT0JBTCBDT1VOVFMgQUZURVIgTE9PUFxuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLnRvdGFsID0gZ2xvYmFsVG90YWxTZXQuc2l6ZTtcbiAgICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5iZWhhdmlvcmFsID0gZ2xvYmFsQmVoYXZpb3JhbFNldC5zaXplO1xuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmZ1bmN0aW9uYWwgPSBnbG9iYWxGdW5jdGlvbmFsU2V0LnNpemU7XG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZG9tYWluID0gZ2xvYmFsRG9tYWluU2V0LnNpemU7XG5cbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKClcbiAgICAgICAgICAgIH0sIDEwMDApO1xuXG4gICAgICAgICAgfSxcblxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZXJyb3I/LmVycm9yPy5kZXRhaWwsICdYJywge1xuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1lcnJvciddXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG5cblxuICAgIH1cbiAgICBpZiAodGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuc2JPcmdUeXBlID09PSAnc3RhdGUnKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgICBjb25zb2xlLmxvZygndGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmonLCB0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iailcbiAgICAgIGxldCBzdGF0ZV9jZW50ZXJfaWQgPSB0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5pZGVudGlmaWVyXG4gICAgICBsZXQgZGVwYXJ0bWVudF9pZCA9IHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzXG4gICAgICAvLyB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0Um9sZU1hcHBpbmdCeVN0YXRlQ2VudGVyQW5kRGVwYXJ0bWVudChzdGF0ZV9jZW50ZXJfaWQsIGRlcGFydG1lbnRfaWQpLnN1YnNjcmliZSgocmVzKT0+e1xuICAgICAgLy8gICBjb25zb2xlLmxvZygncmVzJywgcmVzKVxuICAgICAgLy8gICBsZXQgYmVoYXZpb3JhbENvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgbGV0IGZ1bmN0aW9uYWxDb21wZXRlbmNpZXMgPVtdXG4gICAgICAvLyAgIGxldCBkb21haW5Db21wZXRlbmNpZXMgPVtdXG4gICAgICAvLyAgIGZvcihsZXQgaT0wOyBpPHJlcy5sZW5ndGg7aSsrKSB7XG4gICAgICAvLyAgICBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzID0gW11cbiAgICAgIC8vICAgIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXMgPVtdXG4gICAgICAvLyAgICBkb21haW5Db21wZXRlbmNpZXMgPVtdXG4gICAgICAvLyAgICBsZXQgY29tcGV0ZW5jaWVzT2JqID0ge3RvdGFsOjAsIGJlaGF2aW9yYWw6MCwgZnVuY3Rpb25hbDowLCBkb21haW46MH1cbiAgICAgIC8vICAgcmVzW2ldLmNvbXBldGVuY2llcy5mb3JFYWNoKGMgPT4ge1xuICAgICAgLy8gICAgY29tcGV0ZW5jaWVzT2JqLnRvdGFsKys7XG4gICAgICAvLyAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmoudG90YWwrK1xuICAgICAgLy8gICAgIGlmIChjLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ2JlaGF2aW9yYWwnKSB7IFxuXG4gICAgICAvLyAgICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXMucHVzaChgJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YClcbiAgICAgIC8vICAgICAgY29tcGV0ZW5jaWVzT2JqLmJlaGF2aW9yYWwrKztcbiAgICAgIC8vICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmJlaGF2aW9yYWwrK1xuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgICBpZiAoYy50eXBlLnRvTG93ZXJDYXNlKCkgPT09ICdmdW5jdGlvbmFsJykge1xuICAgICAgLy8gICAgICBmdW5jdGlvbmFsQ29tcGV0ZW5jaWVzLnB1c2goYCR7Yy50aGVtZX0gLSAke2Muc3ViX3RoZW1lfWApXG4gICAgICAvLyAgICAgIGNvbXBldGVuY2llc09iai5mdW5jdGlvbmFsKys7XG4gICAgICAvLyAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5mdW5jdGlvbmFsKytcbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgICAgaWYgKGMudHlwZS50b0xvd2VyQ2FzZSgpID09PSAnZG9tYWluJykgeyBcbiAgICAgIC8vICAgICAgZG9tYWluQ29tcGV0ZW5jaWVzLnB1c2goYCR7Yy50aGVtZX0gLSAke2Muc3ViX3RoZW1lfWApXG4gICAgICAvLyAgICAgIGNvbXBldGVuY2llc09iai5kb21haW4rKztcbiAgICAgIC8vICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmRvbWFpbisrXG5cbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgIH0pO1xuICAgICAgLy8gICAgbGV0IG9iajphbnkgPSAge1xuICAgICAgLy8gICAgICBkZXNpZ25hdGlvbjogcmVzW2ldLmRlc2lnbmF0aW9uX25hbWUsXG4gICAgICAvLyAgICAgIHdpbmc6IHJlc1tpXS53aW5nX2RpdmlzaW9uX3NlY3Rpb24sXG4gICAgICAvLyAgICAgIHVwZGF0ZWQ6IHJlc1tpXS51cGRhdGVkX2F0LFxuICAgICAgLy8gICAgICByb2xlc1Jlc3BvbnNpYmlsaXRpZXM6IHJlc1tpXS5yb2xlX3Jlc3BvbnNpYmlsaXRpZXMsXG4gICAgICAvLyAgICAgIGFjdGl2aXRpZXM6cmVzW2ldLmFjdGl2aXRpZXMsXG4gICAgICAvLyAgICAgIGNvbXBldGVuY2llc09iajogY29tcGV0ZW5jaWVzT2JqLFxuICAgICAgLy8gICAgICBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzOiBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzLFxuICAgICAgLy8gICAgICBmdW5jdGlvbmFsQ29tcGV0ZW5jaWVzOiBmdW5jdGlvbmFsQ29tcGV0ZW5jaWVzLFxuICAgICAgLy8gICAgICBkb21haW5Db21wZXRlbmNpZXM6IGRvbWFpbkNvbXBldGVuY2llc1xuICAgICAgLy8gICAgICAvLyBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzOiBbXG4gICAgICAvLyAgICAgIC8vICAgXCJTdHJhdGVnaWMgTGVhZGVyc2hpcFwiLCBcIkV4ZWN1dGl2ZSBQcmVzZW5jZVwiLCBcIkluZmx1ZW5jaW5nIGFuZCBOZWdvdGlhdGlvblwiLFxuICAgICAgLy8gICAgICAvLyAgIFwiUmVsYXRpb25zaGlwIE1hbmFnZW1lbnRcIiwgXCJWZXJiYWwgJiBOb24tVmVyYmFsIEZsdWVuY3lcIiwgXCJQbGFubmluZyAmIFByaW9yaXRpemF0aW9uXCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJBY2NvdW50YWJpbGl0eVwiLCBcIkNvbmZsaWN0IE1hbmFnZW1lbnRcIlxuICAgICAgLy8gICAgICAvLyBdLFxuICAgICAgLy8gICAgICAvLyBmdW5jdGlvbmFsQ29tcGV0ZW5jaWVzOiBbXG4gICAgICAvLyAgICAgIC8vICAgXCJSdWxlcyBvZiBidXNpbmVzcyAoQW9CL1RvQilcIiwgXCJDYWJpbmV0IG5vdGUgd3JpdGluZ1wiLCBcIlN1Ym1pc3Npb24gb2YgYnJpZWZzLCBzdXBwbHkgb2YgaW5mb3JtYXRpb25cIixcbiAgICAgIC8vICAgICAgLy8gICBcIlBvbGljeSBkZXNpZ24vIGFtZW5kbWVudFwiLCBcIlBvbGljeSBpbXBsZW1lbnRhdGlvblwiLCBcIlBvbGljeSBtb25pdG9yaW5nICYgaW1wYWN0IGFzc2Vzc21lbnRcIixcbiAgICAgIC8vICAgICAgLy8gICBcIlByb2plY3QgUGxhbm5pbmdcIiwgXCJQcm9qZWN0IEV2YWx1YXRpb24gJiBNb25pdG9yaW5nXCIsIFwiQ3JlYXRpb24gb2YgTSZFIEZyYW1ld29ya1wiLFxuICAgICAgLy8gICAgICAvLyAgIFwiQ2l0aXplbiBQYXJ0bmVyaW5nICYgQ29sbGFib3JhdGlvblwiLCBcIlB1YmxpYyBHcmlldmFuY2UgSGFuZGxpbmdcIlxuICAgICAgLy8gICAgICAvLyBdLFxuICAgICAgLy8gICAgICAvLyBkb21haW5Db21wZXRlbmNpZXM6IFtcbiAgICAgIC8vICAgICAgLy8gICBcIlN0cmF0ZWdpYyBQb2xpY3kgRm9ybXVsYXRpb25cIiwgXCJJbnRlci1taW5pc3RlcmlhbCAmIFN0YXRlIEdvdmVybm1lbnQgQ29vcmRpbmF0aW9uXCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJTZW5pb3IgTGVhZGVyc2hpcCBHb3Zlcm5hbmNlICYgT3ZlcnNpZ2h0XCIsIFwiTGVnaXNsYXRpdmUgJiBQYXJsaWFtZW50YXJ5IEFmZmFpcnMgTWFuYWdlbWVudFwiLFxuICAgICAgLy8gICAgICAvLyAgIFwiTmF0aW9uYWwgUHJvZ3JhbW1lIFN0cmF0ZWdpYyBEaXJlY3Rpb25cIlxuICAgICAgLy8gICAgICAvLyBdLFxuICAgICAgLy8gICAgICAvLyBjb21wbGV0aW9uUmF0ZTogeyBiZWhhdmlvcmFsOiA4NSwgZnVuY3Rpb25hbDogNzgsIGRvbWFpbjogOTIgfVxuICAgICAgLy8gICAgfVxuXG5cbiAgICAgIC8vICAgdGhpcy5kZXNpZ25hdGlvbkRhdGEucHVzaChvYmopXG4gICAgICAvLyAgIH1cbiAgICAgIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgLy8gICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKVxuICAgICAgLy8gICB9LCAxMDAwKTtcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3RoaXMuZGVzaWduYXRpb25EYXRhJywgdGhpcy5kZXNpZ25hdGlvbkRhdGEpXG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCd0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmonLCB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmogKVxuXG4gICAgICAvLyAgfSlcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5nZXRSb2xlTWFwcGluZ0J5U3RhdGVDZW50ZXJBbmREZXBhcnRtZW50KHN0YXRlX2NlbnRlcl9pZCwgZGVwYXJ0bWVudF9pZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgY29uc29sZS5sb2coJ3JlcycsIHJlcylcbiAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcbiAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uRGF0YSA9IFtdO1xuXG4gICAgICAgICAgLy8g4pyFIEdMT0JBTCBVTklRVUUgU0VUUyAoZm9yIG92ZXJhbGwgdW5pcXVlIGNvdW50KVxuICAgICAgICAgIGNvbnN0IGdsb2JhbFRvdGFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsQmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgIGNvbnN0IGdsb2JhbEZ1bmN0aW9uYWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICBjb25zdCBnbG9iYWxEb21haW5TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIC8vIOKchSBMT0NBTCBVTklRVUUgU0VUUyAocGVyIGRlc2lnbmF0aW9uKVxuICAgICAgICAgICAgY29uc3QgdG90YWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgIGNvbnN0IGJlaGF2aW9yYWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uYWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgIGNvbnN0IGRvbWFpblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgICAgICBsZXQgY29tcGV0ZW5jaWVzT2JqID0geyB0b3RhbDogMCwgYmVoYXZpb3JhbDogMCwgZnVuY3Rpb25hbDogMCwgZG9tYWluOiAwIH07XG5cbiAgICAgICAgICAgIHJlc1tpXT8uY29tcGV0ZW5jaWVzPy5mb3JFYWNoKGMgPT4ge1xuXG4gICAgICAgICAgICAgIGNvbnN0IHRoZW1lID0gKGM/LnRoZW1lIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgY29uc3Qgc3ViVGhlbWUgPSAoYz8uc3ViX3RoZW1lIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IChjPy50eXBlIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgICBpZiAoIXRoZW1lICYmICFzdWJUaGVtZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGtleSA9IGAke3RoZW1lfS0ke3N1YlRoZW1lfWA7XG5cbiAgICAgICAgICAgICAgLy8g4pyFIFBFUiBERVNJR05BVElPTiBVTklRVUVcbiAgICAgICAgICAgICAgaWYgKCF0b3RhbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHRvdGFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai50b3RhbCsrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdiZWhhdmlvcmFsJyAmJiAhYmVoYXZpb3JhbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGJlaGF2aW9yYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmJlaGF2aW9yYWwrKztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZnVuY3Rpb25hbCcgJiYgIWZ1bmN0aW9uYWxTZXQuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai5mdW5jdGlvbmFsKys7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RvbWFpbicgJiYgIWRvbWFpblNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGRvbWFpblNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmouZG9tYWluKys7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyDinIUgR0xPQkFMIFVOSVFVRSBUUkFDS0lOR1xuICAgICAgICAgICAgICBnbG9iYWxUb3RhbFNldC5hZGQoa2V5KTtcblxuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnKSBnbG9iYWxCZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uYWwnKSBnbG9iYWxGdW5jdGlvbmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RvbWFpbicpIGdsb2JhbERvbWFpblNldC5hZGQoa2V5KTtcblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhLnB1c2goe1xuICAgICAgICAgICAgICBkZXNpZ25hdGlvbjogcmVzW2ldLmRlc2lnbmF0aW9uX25hbWUsXG4gICAgICAgICAgICAgIHdpbmc6IHJlc1tpXS53aW5nX2RpdmlzaW9uX3NlY3Rpb24sXG4gICAgICAgICAgICAgIHVwZGF0ZWQ6IHJlc1tpXS51cGRhdGVkX2F0LFxuICAgICAgICAgICAgICByb2xlc1Jlc3BvbnNpYmlsaXRpZXM6IHJlc1tpXS5yb2xlX3Jlc3BvbnNpYmlsaXRpZXMsXG4gICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHJlc1tpXS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmosXG4gICAgICAgICAgICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXM6IFsuLi5iZWhhdmlvcmFsU2V0XSxcbiAgICAgICAgICAgICAgZnVuY3Rpb25hbENvbXBldGVuY2llczogWy4uLmZ1bmN0aW9uYWxTZXRdLFxuICAgICAgICAgICAgICBkb21haW5Db21wZXRlbmNpZXM6IFsuLi5kb21haW5TZXRdLFxuICAgICAgICAgICAgICBzZWxlY3RlZENvdXJzZXM6IHJlc1tpXT8uY2JwX3BsYW5zPy5hdCgtMSk/LnNlbGVjdGVkX2NvdXJzZXMgfHwgW11cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8g4pyFIFNFVCBHTE9CQUwgQ09VTlRTIEFGVEVSIExPT1BcbiAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmoudG90YWwgPSBnbG9iYWxUb3RhbFNldC5zaXplO1xuICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5iZWhhdmlvcmFsID0gZ2xvYmFsQmVoYXZpb3JhbFNldC5zaXplO1xuICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5mdW5jdGlvbmFsID0gZ2xvYmFsRnVuY3Rpb25hbFNldC5zaXplO1xuICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5kb21haW4gPSBnbG9iYWxEb21haW5TZXQuc2l6ZTtcblxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpXG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgY29uc29sZS5sb2coJ3RoaXMuZGVzaWduYXRpb25EYXRhJywgdGhpcy5kZXNpZ25hdGlvbkRhdGEpXG4gICAgICAgICAgY29uc29sZS5sb2coJ3RoaXMudG90YWxDb21wZXRlbmNpZU9iaicsIHRoaXMudG90YWxDb21wZXRlbmNpZU9iailcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGVycm9yPy5lcnJvcj8uZGV0YWlsLCAnWCcsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1lcnJvciddXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgfVxuICBnZXRDb21wZXRlbmNpZXNCeVR5cGUodHlwZTogc3RyaW5nLCBjb3Vyc2U6IGFueSk6IGFueVtdIHtcbiAgICBpZiAoIWNvdXJzZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGxldCBjb21wZXRlbmNpZXM6IGFueVtdID0gW107XG5cbiAgICAvLyBBSSBSZWNvbW1lbmRlZCAvIFB1YmxpYyAvIFVzZXIgQWRkZWRcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb3Vyc2UuY29tcGV0ZW5jaWVzKSkge1xuICAgICAgY29tcGV0ZW5jaWVzID0gY291cnNlLmNvbXBldGVuY2llcztcbiAgICB9XG4gICAgLy8gTWFudWFsbHkgU3VnZ2VzdGVkIC0gaUdPVCAodjYpXG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjb3Vyc2UuY29tcGV0ZW5jaWVzX3Y2KSkge1xuICAgICAgY29tcGV0ZW5jaWVzID0gY291cnNlLmNvbXBldGVuY2llc192NjtcbiAgICB9XG5cbiAgICBpZiAoIWNvbXBldGVuY2llcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkVHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cbiAgICByZXR1cm4gY29tcGV0ZW5jaWVzLmZpbHRlcihjID0+IHtcbiAgICAgIGlmICghYz8uY29tcGV0ZW5jeUFyZWFOYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJlYSA9IGMuY29tcGV0ZW5jeUFyZWFOYW1lLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuXG4gICAgICAvLyBoYW5kbGUgYmVoYXZpb3VyYWwgLyBiZWhhdmlvcmFsXG4gICAgICBpZiAobm9ybWFsaXplZFR5cGUgPT09ICdiZWhhdmlvdXJhbCcgfHwgbm9ybWFsaXplZFR5cGUgPT09ICdiZWhhdmlvcmFsJykge1xuICAgICAgICByZXR1cm4gYXJlYSA9PT0gJ2JlaGF2aW91cmFsJyB8fCBhcmVhID09PSAnYmVoYXZpb3JhbCc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhcmVhID09PSBub3JtYWxpemVkVHlwZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldERpc3BsYXllZENvbXBldGVuY2llcyh0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBhbnlbXSB7XG4gICAgY29uc3QgY29tcGV0ZW5jaWVzID0gdGhpcy5nZXRDb21wZXRlbmNpZXNCeVR5cGUodHlwZSwgaW5kZXgpO1xuICAgIGNvbnN0IGtleSA9IGAke2luZGV4fS0ke3R5cGV9YDtcblxuICAgIGlmICh0aGlzLmV4cGFuZGVkQ29tcGV0ZW5jaWVzW2tleV0pIHtcbiAgICAgIHJldHVybiBjb21wZXRlbmNpZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBldGVuY2llcy5zbGljZSgwLCAyKTtcbiAgfVxuXG4gIHRvZ2dsZUNvbXBldGVuY2llcyh0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBgJHtpbmRleH0tJHt0eXBlfWA7XG4gICAgdGhpcy5leHBhbmRlZENvbXBldGVuY2llc1trZXldID0gIXRoaXMuZXhwYW5kZWRDb21wZXRlbmNpZXNba2V5XTtcbiAgfVxuXG4gIGlzRXhwYW5kZWQodHlwZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qga2V5ID0gYCR7aW5kZXh9LSR7dHlwZX1gO1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkQ29tcGV0ZW5jaWVzW2tleV0gfHwgZmFsc2U7XG4gIH1cblxuICBoYXNNb3JlVGhhblR3byh0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDb21wZXRlbmNpZXNCeVR5cGUodHlwZSwgaW5kZXgpLmxlbmd0aCA+IDI7XG4gIH1cbiAgZ2V0UmVtYWluaW5nQ291bnQodHlwZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB0b3RhbENvdW50ID0gdGhpcy5nZXRDb21wZXRlbmNpZXNCeVR5cGUodHlwZSwgaW5kZXgpLmxlbmd0aDtcbiAgICByZXR1cm4gdG90YWxDb3VudCAtIDI7XG4gIH1cbiAgdXBkYXRlQ29tcGV0ZW5jeUNvdW50cygpIHtcbiAgICAvLyBjb25zdCBjb21wcyA9IHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkudmFsdWU7XG4gICAgdGhpcy5jb21wZXRlbmNpZXNDb3VudCA9IHsgdG90YWw6IDAsIHB1YmxpY19jb3Vyc2VzOiAwLCBpZ290OiAwIH07XG4gICAgdGhpcy5maWx0ZXJkQ291cnNlcy5mb3JFYWNoKGMgPT4ge1xuICAgICAgdGhpcy5jb21wZXRlbmNpZXNDb3VudC50b3RhbCsrO1xuICAgICAgaWYgKGMuaXNfcHVibGljKSB0aGlzLmNvbXBldGVuY2llc0NvdW50LnB1YmxpY19jb3Vyc2VzKys7XG4gICAgICBpZiAoIWMuaXNfcHVibGljKSB0aGlzLmNvbXBldGVuY2llc0NvdW50Lmlnb3QrKztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbmZpcm1EZWxldGVDb3Vyc2UoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3Qgcm9sZU1hcHBpbmdJZCA9IHRoaXMucmVjb21tZW5kZWRfY291cnNlX2lkO1xuICAgIGNvbnN0IGNvdXJzZUlkZW50aWZpZXIgPVxuICAgICAgaXRlbT8uY291cnNlX2lkZW50aWZpZXIgfHwgaXRlbT8uaWQgfHwgaXRlbT8uaWRlbnRpZmllcjtcblxuICAgIGlmICghcm9sZU1hcHBpbmdJZCB8fCAhY291cnNlSWRlbnRpZmllcikge1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdVbmFibGUgdG8gZGVsZXRlIGNvdXJzZScsICdYJywge1xuICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1lcnJvciddXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVjb21tZW5kZWRDb3Vyc2Uocm9sZU1hcHBpbmdJZCwgY291cnNlSWRlbnRpZmllcilcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgLy8gUmVtb3ZlIGZyb20gVUlcbiAgICAgICAgICB0aGlzLmZpbHRlcmRDb3Vyc2VzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgICAvLyBVcGRhdGUgY291bnRzXG4gICAgICAgICAgdGhpcy51cGRhdGVDb21wZXRlbmN5Q291bnRzKCk7XG5cbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignQ291cnNlIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5JywgJ1gnLCB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItc3VjY2VzcyddXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcbiAgICAgICAgICAgIGVycm9yPy5lcnJvcj8uZGV0YWlsIHx8ICdGYWlsZWQgdG8gZGVsZXRlIGNvdXJzZScsXG4gICAgICAgICAgICAnWCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZUNhcmQoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc29sZS5sb2coXCJpdGVtLCBpbmRleFwiLCBpdGVtLCBpbmRleClcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERlbGV0ZVJvbGVNYXBwaW5nUG9wdXBDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNjAwcHgnLFxuICAgICAgZGF0YToge1xuICAgICAgICBwbGFuSWQ6IHRoaXMucGxhbkRhdGE/LmlkLCAgIC8vIHJvbGUgbWFwcGluZyBpZFxuICAgICAgICBjb3Vyc2U6IGl0ZW0sICAgICAgICAgICAgICAgIC8vIGNvdXJzZSBvYmplY3RcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICBmcm9tOiAndmlld0NvdXJzZScgICAgICAgICAgICAgICAgIC8vIGluZGV4IGZvciBVSSByZW1vdmFsXG4gICAgICB9LFxuICAgICAgcGFuZWxDbGFzczogJ3ZpZXctY2JwLXBsYW4tcG9wdXAnLFxuICAgICAgbWluSGVpZ2h0OiAnMzAwcHgnLFxuICAgICAgbWF4SGVpZ2h0OiAnOTB2aCcsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCA9PT0gJ3NhdmVkJykge1xuICAgICAgICB0aGlzLmNvbmZpcm1EZWxldGVDb3Vyc2UoaXRlbSwgaW5kZXgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHNjcm9sbFRvVG9wKCk6IHZvaWQge1xuXG4gICAgLy8gaWYgKHRoaXMucGRmQ29udGVudCAmJiB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudCAmJiB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vICAgdGhpcy5wZGZDb250ZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICAvLyB9IGVsc2Uge1xuICAgIC8vICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgLy8gfVxuICAgIC8vIGNvbnN0IGRpYWxvZ0NvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21hdC1kaWFsb2ctY29udGFpbmVyJyk7XG4gICAgLy8gaWYgKGRpYWxvZ0NvbnRhaW5lcikge1xuICAgIC8vICAgZGlhbG9nQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7XG4gICAgLy8gfVxuICB9XG5cbiAgZG93bmxvYWRQREYoKSB7XG4gICAgdGhpcy5wZGZUcmlnZ2VyID0gdHJ1ZVxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgLy8gICBjb25zdCBlbGVtZW50ID0gdGhpcy5wZGZDb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvLyAvLyBXYWl0IGZvciBpbWFnZXMgdG8gbG9hZFxuICAgIC8vIGNvbnN0IGltYWdlcyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW1nJyk7XG4gICAgLy8gY29uc3QgcHJvbWlzZXMgPSBBcnJheS5mcm9tKGltYWdlcykubWFwKChpbWc6IEhUTUxJbWFnZUVsZW1lbnQpID0+IHtcbiAgICAvLyAgIGlmIChpbWcuY29tcGxldGUpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGltZy5vbmxvYWQgPSByZXNvbHZlKTtcbiAgICAvLyB9KTtcblxuICAgIC8vIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgLy8gICAgIG1hcmdpbjogMC41LFxuICAgIC8vICAgICBmaWxlbmFtZTogJ0ZpbmFsIENCUCBQbGFuLnBkZicsXG4gICAgLy8gICAgIGltYWdlOiB7IHR5cGU6ICdqcGVnJywgcXVhbGl0eTogMC45OCB9LFxuICAgIC8vICAgICBodG1sMmNhbnZhczoge1xuICAgIC8vICAgICAgIHNjYWxlOiAyLFxuICAgIC8vICAgICAgIHVzZUNPUlM6IHRydWUsXG4gICAgLy8gICAgICAgc2Nyb2xsWTogMCxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAganNQREY6IHtcbiAgICAvLyAgICAgICB1bml0OiAnaW4nLFxuICAgIC8vICAgICAgIGZvcm1hdDogJ2E0JyxcbiAgICAvLyAgICAgICBvcmllbnRhdGlvbjogJ3BvcnRyYWl0J1xuICAgIC8vICAgICB9LFxuICAgIC8vICAgICBwYWdlYnJlYWs6IHtcbiAgICAvLyAgICAgICBtb2RlOiBbJ2NzcycsICdsZWdhY3knLCAnYXZvaWQtYWxsJ11cbiAgICAvLyAgICAgfVxuICAgIC8vICAgfTtcblxuICAgIC8vICAgaHRtbDJwZGYoKS5mcm9tKGVsZW1lbnQpLnNldChvcHRpb25zKS5zYXZlKCk7XG4gICAgLy8gfSk7XG4gICAgLy9jb25zdCBlbGVtZW50ID0gdGhpcy5wZGZDb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudDtcbiAgICBodG1sMmNhbnZhcyhlbGVtZW50LCB7XG4gICAgICBzY2FsZTogMS4yNSxcbiAgICAgIHVzZUNPUlM6IHRydWUsXG4gICAgICBzY3JvbGxZOiAwLFxuICAgICAgbG9nZ2luZzogdHJ1ZSxcbiAgICB9KS50aGVuKChjYW52YXMpID0+IHtcbiAgICAgIGNvbnN0IHBkZiA9IG5ldyBqc1BERigncCcsICdtbScsICdhNCcpO1xuICAgICAgY29uc3QgcGRmV2lkdGggPSBwZGYuaW50ZXJuYWwucGFnZVNpemUuZ2V0V2lkdGgoKTtcbiAgICAgIGNvbnN0IHBkZkhlaWdodCA9IHBkZi5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRIZWlnaHQoKTtcblxuICAgICAgLy8gTWFyZ2luc1xuICAgICAgY29uc3QgbWFyZ2luTGVmdCA9IDU7XG4gICAgICBjb25zdCBtYXJnaW5Ub3AgPSAxNTtcbiAgICAgIGNvbnN0IG1hcmdpblJpZ2h0ID0gNTtcbiAgICAgIGNvbnN0IG1hcmdpbkJvdHRvbSA9IDE1O1xuXG4gICAgICBjb25zdCB1c2FibGVXaWR0aCA9IHBkZldpZHRoIC0gbWFyZ2luTGVmdCAtIG1hcmdpblJpZ2h0O1xuICAgICAgY29uc3QgdXNhYmxlSGVpZ2h0ID0gcGRmSGVpZ2h0IC0gbWFyZ2luVG9wIC0gbWFyZ2luQm90dG9tO1xuXG4gICAgICBjb25zdCBjYW52YXNXaWR0aCA9IGNhbnZhcy53aWR0aDtcbiAgICAgIGNvbnN0IGNhbnZhc0hlaWdodCA9IGNhbnZhcy5oZWlnaHQ7XG5cbiAgICAgIGNvbnN0IHJhdGlvID0gY2FudmFzV2lkdGggLyB1c2FibGVXaWR0aDtcbiAgICAgIGNvbnN0IHBhZ2VIZWlnaHRQeCA9IHVzYWJsZUhlaWdodCAqIHJhdGlvO1xuXG4gICAgICBjb25zdCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKGNhbnZhc0hlaWdodCAvIHBhZ2VIZWlnaHRQeCk7XG5cbiAgICAgIGZvciAobGV0IHBhZ2UgPSAwOyBwYWdlIDwgdG90YWxQYWdlczsgcGFnZSsrKSB7XG4gICAgICAgIGNvbnN0IGNhbnZhc1BhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgY2FudmFzUGFnZS53aWR0aCA9IGNhbnZhc1dpZHRoO1xuICAgICAgICBjYW52YXNQYWdlLmhlaWdodCA9IE1hdGgubWluKHBhZ2VIZWlnaHRQeCwgY2FudmFzSGVpZ2h0IC0gcGFnZSAqIHBhZ2VIZWlnaHRQeCk7XG5cbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzUGFnZS5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBpZiAoY3R4KSB7XG4gICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICcjZmZmZmZmJztcbiAgICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzUGFnZS53aWR0aCwgY2FudmFzUGFnZS5oZWlnaHQpO1xuXG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShcbiAgICAgICAgICAgIGNhbnZhcyxcbiAgICAgICAgICAgIDAsIHBhZ2UgKiBwYWdlSGVpZ2h0UHgsXG4gICAgICAgICAgICBjYW52YXNXaWR0aCwgY2FudmFzUGFnZS5oZWlnaHQsXG4gICAgICAgICAgICAwLCAwLFxuICAgICAgICAgICAgY2FudmFzV2lkdGgsIGNhbnZhc1BhZ2UuaGVpZ2h0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGltZ0RhdGEgPSBjYW52YXNQYWdlLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJywgMSk7XG4gICAgICAgIGlmIChwYWdlID4gMCkgcGRmLmFkZFBhZ2UoKTtcbiAgICAgICAgY29uc3QgaW1nSGVpZ2h0TU0gPSBjYW52YXNQYWdlLmhlaWdodCAvIHJhdGlvO1xuICAgICAgICBwZGYuYWRkSW1hZ2UoaW1nRGF0YSwgJ1BORycsIG1hcmdpbkxlZnQsIG1hcmdpblRvcCwgdXNhYmxlV2lkdGgsIGltZ0hlaWdodE1NKTtcbiAgICAgIH1cblxuICAgICAgcGRmLnNhdmUoJ0ZpbmFsX0NCUC5wZGYnKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignUERGIGdlbmVyYXRpb24gZXJyb3I6JywgZXJyb3IpO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG5cblxuXG5cblxuXG5cbiAgfVxuXG4gIGRvd25sb2FkUERGTmV3KCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5wZGZDb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCBvcHQgPSB7XG4gICAgICBtYXJnaW46IFsxMCwgNSwgNSwgMTBdLCAvLyB0b3AsIGxlZnQsIGJvdHRvbSwgcmlnaHQgaW4gbW1cbiAgICAgIGZpbGVuYW1lOiAnQ0JQX1BsYW4ucGRmJyxcbiAgICAgIGltYWdlOiB7IHR5cGU6ICdqcGVnJywgcXVhbGl0eTogMC44NSB9LFxuICAgICAgaHRtbDJjYW52YXM6IHsgc2NhbGU6IDEuNSwgdXNlQ09SUzogdHJ1ZSwgbG9nZ2luZzogZmFsc2UgfSxcbiAgICAgIGpzUERGOiB7IHVuaXQ6ICdtbScsIGZvcm1hdDogJ2E0Jywgb3JpZW50YXRpb246ICdsYW5kc2NhcGUnIH0sXG4gICAgICBwYWdlYnJlYWs6IHsgbW9kZTogWydhdm9pZC1hbGwnLCAnY3NzJywgJ2xlZ2FjeSddIH0gLy8gYXZvaWQgY3V0dGluZyB0ZXh0XG4gICAgfTtcblxuICAgIGh0bWwycGRmKClcbiAgICAgIC5zZXQob3B0KVxuICAgICAgLmZyb20oZWxlbWVudClcbiAgICAgIC5zYXZlKClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gUERGIGRvd25sb2FkIGZpbmlzaGVkXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIC8vIEhhbmRsZSBlcnJvcnMgYW5kIHN0b3AgbG9hZGluZ1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9LCAyMDAwKTtcblxuXG5cbiAgfVxuXG5cblxuICBnZW5lcmF0ZUV4Y2VsKGpzb25BcnJheTogYW55W10sIGZpbGVuYW1lOiBzdHJpbmcgPSBcImZpbmFsLnhsc3hcIikge1xuICAgIGNvbnNvbGUubG9nKCdqc29uQXJyYXknLCBqc29uQXJyYXkpXG5cbiAgICBpZiAoIWpzb25BcnJheSB8fCBqc29uQXJyYXkubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAvLyAtLS0tLS0tLSBNQUlOIEhFQURFUiBGUk9NIEZJUlNUIE9CSkVDVCAtLS0tLS0tLS1cbiAgICBjb25zdCBmaXJzdE9iaiA9IGpzb25BcnJheVswXTtcbiAgICBsZXQgdGl0bGUgPSBmaXJzdE9iai5zdGF0ZV9jZW50ZXJfbmFtZSB8fCBcIlwiO1xuICAgIGlmIChmaXJzdE9iai5kZXBhcnRtZW50X25hbWUpIHRpdGxlICs9IFwiIC8gXCIgKyBmaXJzdE9iai5kZXBhcnRtZW50X25hbWU7XG5cbiAgICAvLyAtLS0tLS0tLSBDT0xVTU4gSEVBREVSUyAtLS0tLS0tLS1cbiAgICBjb25zdCBoZWFkZXJzID0gW1xuICAgICAgXCJEZXNpZ25hdGlvblwiLFxuICAgICAgXCJSb2xlICYgUmVzcG9uc2liaWxpdGllc1wiLFxuICAgICAgXCJBY3Rpdml0aWVzXCIsXG4gICAgICBcIkJlaGF2aW9yYWwgQ29tcGV0ZW5jaWVzXCIsXG4gICAgICBcIkZ1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzXCIsXG4gICAgICBcIkRvbWFpbiBDb21wZXRlbmNpZXNcIixcbiAgICAgICdjb3Vyc2VEZXRhaWxzJ1xuICAgIF07XG5cbiAgICAvLyAtLS0tLS0tLSBEQVRBIFJPV1MgLS0tLS0tLS0tXG4gICAgY29uc3QgZGF0YVJvd3MgPSBqc29uQXJyYXkubWFwKGpzb24gPT4ge1xuICAgICAgY29uc3QgY291cnNlcyA9XG4gICAgICAgIGpzb24/LmNicF9wbGFucz8ubGVuZ3RoXG4gICAgICAgICAgPyBqc29uLmNicF9wbGFuc1tqc29uLmNicF9wbGFucy5sZW5ndGggLSAxXT8uc2VsZWN0ZWRfY291cnNlcyB8fCBbXVxuICAgICAgICAgIDogW107XG5cbiAgICAgIGNvbnN0IGNvdXJzZURldGFpbHMgPSBjb3Vyc2VzLm1hcCgoYzogYW55LCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgY29tcGV0ZW5jaWVzID0gKGMuY29tcGV0ZW5jaWVzIHx8IFtdKVxuICAgICAgICAgIC5tYXAoKGNjOiBhbnkpID0+XG4gICAgICAgICAgICBgJHtjYy5jb21wZXRlbmN5QXJlYU5hbWV9IOKGkiAke2NjLmNvbXBldGVuY3lUaGVtZU5hbWV9IOKGkiAke2NjLmNvbXBldGVuY3lTdWJUaGVtZU5hbWV9YFxuICAgICAgICAgIClcbiAgICAgICAgICAuam9pbihcIiB8IFwiKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGAke2kgKyAxfS4gQ291cnNlIE5hbWU6ICR7Yy5jb3Vyc2V9XFxuYCArXG4gICAgICAgICAgYCAgIElkZW50aWZpZXI6ICR7Yy5pZGVudGlmaWVyfVxcbmAgK1xuICAgICAgICAgIGAgICBEdXJhdGlvbiAobWlucyk6ICR7TWF0aC5yb3VuZCgrYy5kdXJhdGlvbiAvIDYwKX1cXG5gICtcbiAgICAgICAgICBgICAgUmVsZXZhbmN5OiAke2MucmVsZXZhbmN5fSVcXG5gICtcbiAgICAgICAgICBgICAgUmF0aW9uYWxlOiAke2MucmF0aW9uYWxlfVxcbmAgK1xuICAgICAgICAgIGAgICBPcmdhbmlzYXRpb246ICR7KGMub3JnYW5pc2F0aW9uIHx8IFtdKS5qb2luKFwiLCBcIil9XFxuYCArXG4gICAgICAgICAgYCAgIENvbXBldGVuY2llczogJHtjb21wZXRlbmNpZXN9YFxuICAgICAgICApO1xuICAgICAgfSkuam9pbihcIlxcblxcblwiKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFwiRGVzaWduYXRpb25cIjogYCR7anNvbi5kZXNpZ25hdGlvbl9uYW1lfSA6IFdpbmcvRGl2aXNpb24gLSAke2pzb24ud2luZ19kaXZpc2lvbl9zZWN0aW9ufWAsXG4gICAgICAgIFwiUm9sZSAmIFJlc3BvbnNpYmlsaXRpZXNcIjogKGpzb24ucm9sZV9yZXNwb25zaWJpbGl0aWVzIHx8IFtdKVxuICAgICAgICAgIC5tYXAoKHY6IHN0cmluZywgaTogbnVtYmVyKSA9PiBgJHtpICsgMX0uICR7dn1gKS5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgICBcIkFjdGl2aXRpZXNcIjogKGpzb24uYWN0aXZpdGllcyB8fCBbXSlcbiAgICAgICAgICAubWFwKCh2OiBzdHJpbmcsIGk6IG51bWJlcikgPT4gYCR7aSArIDF9LiAke3Z9YCkuam9pbihcIlxcblxcblwiKSxcbiAgICAgICAgXCJCZWhhdmlvcmFsIENvbXBldGVuY2llc1wiOiAoanNvbi5jb21wZXRlbmNpZXMgfHwgW10pXG4gICAgICAgICAgLmZpbHRlcigoYzogYW55KSA9PiBjLnR5cGUgPT09IFwiQmVoYXZpb3JhbFwiKVxuICAgICAgICAgIC5tYXAoKGM6IGFueSwgaTogbnVtYmVyKSA9PiBgJHtpICsgMX0uICR7Yy50aGVtZX0gLSAke2Muc3ViX3RoZW1lfWApLmpvaW4oXCJcXG5cXG5cIiksXG4gICAgICAgIFwiRnVuY3Rpb25hbCBDb21wZXRlbmNpZXNcIjogKGpzb24uY29tcGV0ZW5jaWVzIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGM6IGFueSkgPT4gYy50eXBlID09PSBcIkZ1bmN0aW9uYWxcIilcbiAgICAgICAgICAubWFwKChjOiBhbnksIGk6IG51bWJlcikgPT4gYCR7aSArIDF9LiAke2MudGhlbWV9IC0gJHtjLnN1Yl90aGVtZX1gKS5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgICBcIkRvbWFpbiBDb21wZXRlbmNpZXNcIjogKGpzb24uY29tcGV0ZW5jaWVzIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGM6IGFueSkgPT4gYy50eXBlID09PSBcIkRvbWFpblwiKVxuICAgICAgICAgIC5tYXAoKGM6IGFueSwgaTogbnVtYmVyKSA9PiBgJHtpICsgMX0uICR7Yy50aGVtZX0gLSAke2Muc3ViX3RoZW1lfWApLmpvaW4oXCJcXG5cXG5cIiksXG4gICAgICAgIFwiQ291cnNlIERldGFpbHNcIjogY291cnNlRGV0YWlsc1xuICAgICAgfTtcbiAgICB9KTtcblxuXG4gICAgLy8gLS0tLS0tLS0gQ1JFQVRFIFdPUktTSEVFVCAtLS0tLS0tLS1cbiAgICBjb25zdCB3cyA9IFhMU1gudXRpbHMuYW9hX3RvX3NoZWV0KFtdKTtcblxuICAgIC8vIE1haW4gaGVhZGVyIChtZXJnZWQpXG4gICAgWExTWC51dGlscy5zaGVldF9hZGRfYW9hKHdzLCBbW3RpdGxlXV0sIHsgb3JpZ2luOiBcIkExXCIgfSk7XG4gICAgd3NbJyFtZXJnZXMnXSA9IFt7XG4gICAgICBzOiB7IHI6IDAsIGM6IDAgfSxcbiAgICAgIGU6IHsgcjogMCwgYzogaGVhZGVycy5sZW5ndGggLSAxIH1cbiAgICB9XTtcblxuICAgIC8vIENvbHVtbiBoZWFkZXJzIGF0IHJvdyAyXG4gICAgWExTWC51dGlscy5zaGVldF9hZGRfYW9hKHdzLCBbaGVhZGVyc10sIHsgb3JpZ2luOiBcIkEyXCIgfSk7XG5cbiAgICAvLyBTdHlsZSBjb2x1bW4gaGVhZGVyc1xuICAgIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY2VsbEFkZHJlc3MgPSBYTFNYLnV0aWxzLmVuY29kZV9jZWxsKHsgcjogMSwgYzogaW5kZXggfSk7XG4gICAgICBpZiAod3NbY2VsbEFkZHJlc3NdKSB7XG4gICAgICAgIHdzW2NlbGxBZGRyZXNzXS5zID0ge1xuICAgICAgICAgIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9LFxuICAgICAgICAgIGZpbGw6IHsgcGF0dGVyblR5cGU6IFwic29saWRcIiwgZmdDb2xvcjogeyByZ2I6IFwiRkZGRjAwXCIgfSB9LFxuICAgICAgICAgIGFsaWdubWVudDogeyBob3Jpem9udGFsOiBcImNlbnRlclwiLCB2ZXJ0aWNhbDogXCJjZW50ZXJcIiwgd3JhcFRleHQ6IHRydWUgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gSW5zZXJ0IGRhdGEgcm93cyBzdGFydGluZyBmcm9tIHJvdyAzXG4gICAgWExTWC51dGlscy5zaGVldF9hZGRfanNvbih3cywgZGF0YVJvd3MsIHsgb3JpZ2luOiBcIkEzXCIsIHNraXBIZWFkZXI6IHRydWUgfSk7XG5cbiAgICAvLyBBdXRvIGNvbHVtbiB3aWR0aHMgYmFzZWQgb24gbG9uZ2VzdCBsaW5lIGluIGVhY2ggY29sdW1uXG4gICAgY29uc3QgY29sV2lkdGhzID0gaGVhZGVycy5tYXAoKGhlYWRlciwgaWR4KSA9PiB7XG4gICAgICBjb25zdCBtYXhMZW4gPSBNYXRoLm1heChcbiAgICAgICAgaGVhZGVyLmxlbmd0aCxcbiAgICAgICAgLi4uZGF0YVJvd3MubWFwKHJvdyA9PiAocm93W2hlYWRlcl0gfHwgXCJcIikuc3BsaXQoXCJcXG5cIikucmVkdWNlKChhLCBiKSA9PiBNYXRoLm1heChhLCBiLmxlbmd0aCksIDApKVxuICAgICAgKTtcbiAgICAgIHJldHVybiB7IHdjaDogTWF0aC5taW4oTWF0aC5tYXgobWF4TGVuICsgNSwgMjApLCA4MCkgfTsgLy8gbWluIDIwLCBtYXggODBcbiAgICB9KTtcbiAgICB3c1snIWNvbHMnXSA9IGNvbFdpZHRocztcblxuICAgIC8vIFdyYXAgdGV4dCBpbiBkYXRhIHJvd3NcbiAgICBkYXRhUm93cy5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goKGhlYWRlciwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgY2VsbEFkZHJlc3MgPSBYTFNYLnV0aWxzLmVuY29kZV9jZWxsKHsgcjogcm93SW5kZXggKyAyLCBjOiBjb2xJbmRleCB9KTtcbiAgICAgICAgaWYgKHdzW2NlbGxBZGRyZXNzXSkge1xuICAgICAgICAgIHdzW2NlbGxBZGRyZXNzXS5zID0geyBhbGlnbm1lbnQ6IHsgd3JhcFRleHQ6IHRydWUsIHZlcnRpY2FsOiBcInRvcFwiIH0gfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBTdHlsZSBtYWluIGhlYWRlclxuICAgIGlmICh3c1tcIkExXCJdKSB7XG4gICAgICB3c1tcIkExXCJdLnMgPSB7XG4gICAgICAgIGZvbnQ6IHsgYm9sZDogdHJ1ZSwgc3o6IDE2IH0sXG4gICAgICAgIGFsaWdubWVudDogeyBob3Jpem9udGFsOiBcImNlbnRlclwiLCB2ZXJ0aWNhbDogXCJjZW50ZXJcIiB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tIENSRUFURSBXT1JLQk9PSyAtLS0tLS0tLS1cbiAgICBjb25zdCB3YiA9IFhMU1gudXRpbHMuYm9va19uZXcoKTtcbiAgICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdiLCB3cywgXCJTaGVldDFcIik7XG5cbiAgICAvLyBFeHBvcnQgRXhjZWxcbiAgICBYTFNYLndyaXRlRmlsZSh3YiwgZmlsZW5hbWUpO1xuICB9XG5cblxuXG5cbiAgZG93bmxvYWRDU1YoKSB7XG4gICAgbGV0IGZpbGVOYW1lID0gJydcbiAgICBpZiAoIXRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzKSB7XG4gICAgICBmaWxlTmFtZSA9IGBDQlBfUmVwb3J0XyR7dGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllcn1fJHt0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50c30ueGxzeGBcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZU5hbWUgPSBgQ0JQX1JlcG9ydF8ke3RoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXJ9Lnhsc3hgXG4gICAgfVxuICAgIHRoaXMuZ2VuZXJhdGVFeGNlbCh0aGlzLmpzb25EYXRhLCBmaWxlTmFtZSk7XG4gIH1cblxuICBkb3dubG9hZFBkZkZyb21CRShjb250ZXh0OiBzdHJpbmcpIHtcbiAgICBsZXQgc2VsZWN0ZWRMYW5ndWFnZSA9IHRoaXMuZmlsdGVyRm9ybS5nZXQoJ2xhbmd1YWdlJyk/LnZhbHVlIHx8ICdlbic7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgIC8vICB0aGlzLnNoYXJlZFNlcnZpY2UuZG93bmxvYWRQZGYodGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllcilcbiAgICBpZiAoIXRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzKSB7XG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZG93bmxvYWRQZGYodGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllciwgY29udGV4dCwgc2VsZWN0ZWRMYW5ndWFnZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmRvd25sb2FkUGRmRm9yRGVwYXJ0bWVudCh0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5pZGVudGlmaWVyLCB0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50cywgY29udGV4dCwgc2VsZWN0ZWRMYW5ndWFnZSlcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgfSwgNTAwMClcbiAgfVxuICBnZXRTZWxlY3RlZENvdXJzZXMoZGVwYXJ0bWVudDogYW55KTogYW55W10ge1xuICAgIGlmICghZGVwYXJ0bWVudD8uY2JwX3BsYW5zPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvLyB0YWtlIGxhdGVzdCBDQlAgcGxhbiAob3IgYWRqdXN0IGxvZ2ljIGlmIG5lZWRlZClcbiAgICBjb25zdCBsYXRlc3RQbGFuID0gZGVwYXJ0bWVudC5jYnBfcGxhbnNbZGVwYXJ0bWVudC5jYnBfcGxhbnMubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gbGF0ZXN0UGxhbj8uc2VsZWN0ZWRfY291cnNlcyB8fCBbXTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVycygpIHtcblxuICB9XG5cbiAgZmlsdGVyTGlzdCh2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWFyY2ggPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG5cbiAgICAgIGNhc2UgJ2xhbmd1YWdlJzpcbiAgICAgICAgdGhpcy5maWx0ZXJlZExhbmd1YWdlcyA9IHRoaXMubGFuZ3VhZ2VzLmZpbHRlcih2ID0+IHYubGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG59IiwiPGRpdiBjbGFzcz1cInZpZXctY2JwLXBsYW5cIiAjZGlhbG9nQ29udGVudCBzdHlsZT1cIm1heC1oZWlnaHQ6IDgwdmg7IG92ZXJmbG93OiBhdXRvO1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPlZpZXcgRmluYWwgPHNwYW4gKm5nSWY9XCJvcGVuZWRGcm9tID09PSAnY2JwJ1wiPkNCUDwvc3Bhbj48c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3BlbmVkRnJvbSA9PT0gJ2FjYnAnXCI+QUNCUDwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtc2lkZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1hbmQtYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibGFuZ3VhZ2Utc2VsZWN0XCIgc3R5bGU9XCIgaGVpZ2h0OiAzNHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBzdHlsZT1cImZvbnQtd2VpZ2h0OiBub3JtYWw7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyRm9ybS5nZXQoJ2xhbmd1YWdlJyk/LnZhbHVlID8gJycgOiAnU2VsZWN0IExhbmd1YWdlJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImxhbmd1YWdlXCIgcGFuZWxDbGFzcz1cInNlbGVjdC1zZWFyY2gtcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiYXBwbHlGaWx0ZXJzKClcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2VhcmNoIGJveCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDVweDt3aWR0aDogOTIlO21hcmdpbjogNXB4O1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiU2VhcmNoIExhbmd1YWdlc1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwiZmlsdGVyTGlzdCgkYW55KCRldmVudC50YXJnZXQpLnZhbHVlLCAnbGFuZ3VhZ2UnKVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFZhbHVlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgciBvZiBmaWx0ZXJlZExhbmd1YWdlc1wiIFt2YWx1ZV09XCJyPy5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHI/LmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuXG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWNvbnRhaW5lclwiICNwZGZDb250ZW50PlxuICAgICAgICAgICAgPGhlYWRlciBjbGFzcz1cImJnLXdoaXRlIGhlYWRlci1ib3JkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWZsZXgganVzdGlmeS1iZXR3ZWVuXCIgc3R5bGU9XCJ3aWR0aDoxMDAlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTRcIiBzdHlsZT1cIndpZHRoOjUwJVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2RvcHQtbG9nby5wbmdcIiBhbHQ9XCJEZXBhcnRtZW50IG9mIFBlcnNvbm5lbCAmIFRyYWluaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvQ0JDX2xvZ28uc3ZnXCIgYWx0PVwiQ2FwYWNpdHkgQnVpbGRpbmcgQ29tbWlzc2lvbiBMb2dvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMva2FybWF5b2dpTG9nby1taW4ucG5nXCIgYWx0PVwiS2FybWF5b2dpIEJoYXJhdCBMb2dvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgc3R5bGU9XCJ3aWR0aDo1MCVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmo/Lm1pbmlzdHJ5Py5zYk9yZ1R5cGUgPT09ICdzdGF0ZSdcIj57e3NoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/Lm9yZ05hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/LnNiT3JnVHlwZSA9PT0gJ21pbmlzdHJ5J1wiPnt7c2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8ub3JnTmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqPy5kZXBhcnRtZW50X25hbWVcIj4ve3tzaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmo/LmRlcGFydG1lbnRfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gQ2FwYWNpdHkgQnVpbGRpbmcgUGxhblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1ncmF5LTYwMFwiPkNvbXByZWhlbnNpdmUgUm9sZS1CYXNlZCBDb21wZXRlbmN5IEFuYWx5c2lzPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvaGVhZGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbi1oLXNjcmVlbiBiZy1ncmFkaWVudC10by1iciBmcm9tLXNsYXRlLTUwIHZpYS1ibHVlLTUwIHRvLWluZGlnby0xMDBcIj5cbiAgICAgICAgICAgICAgICA8IS0tIEhlYWRlciAtLT5cblxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1heC13LTd4bCBteC1hdXRvIHB4LTYgcHktOCBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gS1BJIERhc2hib2FyZCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktY29udGFpbmVyIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRzaWRlLWxheWVyLXRvdGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZmxleCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMnY2aDZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMTNIOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAxN0g4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDlIOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRcIj57e3RvdGFsQ29tcGV0ZW5jaWVPYmo/LnRvdGFsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRvdGFsIENvbXBldGVuY2llczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXItZmlsbFwiIHN0eWxlPVwid2lkdGg6IDYwJTtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5Ub3RhbCBDb21wZXRlbmNpZXM6IHt7dG90YWxDb21wZXRlbmNpZU9iaj8udG90YWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHt7Y29tcGV0ZW5jaWVzQ291bnQ/LnRvdGFsfX0gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRzaWRlLWxheWVyLWJlaGF2aW9yYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1mbGV4IG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTggdy04IGljb24tc21cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjUgMTdhNCA0IDAgMCAxLTUgMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAxNGguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMTFoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3IDE0aC4wMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAxMGguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgMThoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDZoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3IDE4aC4wMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNyA2aC4wMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMSAxMmE5IDkgMCAwIDEtOSA5YTkgOSAwIDAgMS05LTlhOSA5IDAgMCAxIDktOWE5IDkgMCAwIDEgOSA5elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRcIj57e3RvdGFsQ29tcGV0ZW5jaWVPYmo/LmJlaGF2aW9yYWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+QmVoYXZpb3JhbCBDb21wZXRlbmNpZXM8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyLWZpbGwtYmVoYXZpb3VyYWxcIiBzdHlsZT1cIndpZHRoOiA2MCU7XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+QmVoYXZpb3JhbCBDb21wZXRlbmNpZXM6IHt7dG90YWxDb21wZXRlbmNpZU9iaj8uYmVoYXZpb3JhbH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRzaWRlLWxheWVyLWZ1bmN0aW9uYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1mbGV4IG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTggdy04IGljb24tc21cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIgM2g2YTQgNCAwIDAgMSA0IDR2MTRhMyAzIDAgMCAwLTMtM0gyelwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMiAzaC02YTQgNCAwIDAgMC00IDR2MTRhMyAzIDAgMCAxIDMtM2g3elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRcIj57e3RvdGFsQ29tcGV0ZW5jaWVPYmo/LmZ1bmN0aW9uYWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+RnVuY3Rpb25hbCBDb21wZXRlbmNpZXM8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyLWZpbGwtZnVuY3Rpb25hbFwiIHN0eWxlPVwid2lkdGg6IDYwJTtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5GdW5jdGlvbmFsIENvbXBldGVuY2llczoge3t0b3RhbENvbXBldGVuY2llT2JqPy5mdW5jdGlvbmFsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRzaWRlLWxheWVyLWRvbWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWZsZXggbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPnt7dG90YWxDb21wZXRlbmNpZU9iaj8uZG9tYWlufX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkRvbWFpbiBDb21wZXRlbmNpZXM8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyLWZpbGwtZG9tYWluXCIgc3R5bGU9XCJ3aWR0aDogNjAlO1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkRvbWFpbiBDb21wZXRlbmNpZXM6IHt7dG90YWxDb21wZXRlbmNpZU9iaj8uZG9tYWlufX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtYi04XCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDAgbWItNm5oZWFkaW5nXCI+Q29tcGV0ZW5jeSBPdmVydmlldzwvaDI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQga3BpIG9mIG92ZXJhbGxLUElzO1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcm91bmRlZC14bCAgb3V0c2lkZS1sYXllci10b3RhbCBwLTYgYm9yZGVyLWwtNCBob3ZlcjpzaGFkb3cteGwgdHJhbnNpdGlvbi1zaGFkb3dcIiBbc3R5bGUuYm9yZGVyLWxlZnQtY29sb3JdPVwia3BpLmNvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00IGluc2lkZS1sYXllclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ3AtMyByb3VuZGVkLWxnICcgKyBrcGkuYmdDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJrcGkubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidCZWhhdmlvcmFsIENvbXBldGVuY2llcydcIiBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjUgMTdhNCA0IDAgMCAxLTUgMFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgMTRoLjAxXCIvPjxwYXRoIGQ9XCJNMTEgMTFoLjAxXCIvPjxwYXRoIGQ9XCJNMTcgMTRoLjAxXCIvPjxwYXRoIGQ9XCJNMTMgMTBoLjAxXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAxOGguMDFcIi8+PHBhdGggZD1cIk0xMyA2aC4wMVwiLz48cGF0aCBkPVwiTTE3IDE4aC4wMVwiLz48cGF0aCBkPVwiTTE3IDZoLjAxXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMSAxMmE5IDkgMCAwIDEtOSA5YTkgOSAwIDAgMS05LTlhOSA5IDAgMCAxIDktOWE5IDkgMCAwIDEgOSA5elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInRnVuY3Rpb25hbCBDb21wZXRlbmNpZXMnXCIgY2xhc3M9XCJoLTggdy04IGljb24tc21cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDNoNmE0IDQgMCAwIDEgNCA0djE0YTMgMyAwIDAgMC0zLTNIMnpcIi8+PHBhdGggZD1cIk0yMiAzaC02YTQgNCAwIDAgMC00IDR2MTRhMyAzIDAgMCAxIDMtM2g3elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInRG9tYWluIENvbXBldGVuY2llcydcIiBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIvPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiNlwiLz48Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ1RvdGFsIENvbXBldGVuY2llcydcIiBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMnY2aDZcIi8+PHBhdGggZD1cIk0xNiAxM0g4XCIvPjxwYXRoIGQ9XCJNMTYgMTdIOFwiLz48cGF0aCBkPVwiTTEwIDlIOFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPnt7a3BpLnRvdGFsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtZ3JheS05MDAgZm9udC1zZW1pYm9sZCBtYi0yIGhlYWRpbmdcIj57e2twaS5uYW1lfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgYmctZ3JheS0yMDAgcm91bmRlZC1mdWxsIGgtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMyByb3VuZGVkLWZ1bGwgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwia3BpLmF2Z0NvbXBsZXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJrcGkuY29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwIG10LTJcIj5Ub3RhbCBDb21wZXRlbmNpZXM6IHt7a3BpLnRvdGFsfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIERlc2lnbmF0aW9uIFJlcG9ydHMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTggbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDAgbWItNiBoZWFkaW5nXCI+RGV0YWlsZWQgQ29tcGV0ZW5jeSBGcmFtZXdvcmsgYnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNpZ25hdGlvbjwvaDI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRlc2lnbmF0aW9uIG9mIGRlc2lnbmF0aW9uRGF0YTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcm91bmRlZC14bCAgb3ZlcmZsb3ctaGlkZGVuIHNlY3Rpb24tc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLWdyYWRpZW50LXRvLXIgZnJvbS1pbmRpZ28tNjAwIHRvLWJsdWUtNjAwIHRleHQtd2hpdGUgcC02IGhlYWRpbmctd2l0aC1iZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCBtYi0yIGhlYWRpbmctYmdcIj57e2Rlc2lnbmF0aW9uLmRlc2lnbmF0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWluZGlnby0xMDAgbWItMVwiPldpbmcvRGl2aXNpb246IHt7ZGVzaWduYXRpb24ud2luZ319PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTQgY29tcGV0ZW5jeS1jb3VudC1ieS1kZXNpZ25hdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbVwiPkJlaGF2aW9yYWw6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rlc2lnbmF0aW9uLmJlaGF2aW9yYWxDb21wZXRlbmNpZXMubGVuZ3RofX0gdG90YWw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtXCI+RnVuY3Rpb25hbDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uZnVuY3Rpb25hbENvbXBldGVuY2llcy5sZW5ndGh9fSB0b3RhbDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc21cIj5Eb21haW46XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rlc2lnbmF0aW9uLmRvbWFpbkNvbXBldGVuY2llcy5sZW5ndGh9fSB0b3RhbDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJvZHkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgc2VjdGlvbi1zaGFkb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUm9sZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIG1iLTMgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTUgbXItMiB0ZXh0LWluZGlnby02MDAgaWNvbi1zbVwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYgN2E0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6TTEyIDE0YTcgNyAwIDAwLTcgN2gxNGE3IDcgMCAwMC03LTd6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbGVzICYgUmVzcG9uc2liaWxpdGllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm9sZSBvZiBkZXNpZ25hdGlvbi5yb2xlc1Jlc3BvbnNpYmlsaXRpZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5LTUwIHAtMiByb3VuZGVkIGJvcmRlci1sLTMgYm9yZGVyLWluZGlnby01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNzAwIGxlYWRpbmctcmVsYXhlZFwiPnt7cm9sZX19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpdml0aWVzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTYgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIG1iLTMgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTUgbXItMiB0ZXh0LWluZGlnby02MDAgaWNvbi1zbVwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYgN2E0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6TTEyIDE0YTcgNyAwIDAwLTcgN2gxNGE3IDcgMCAwMC03LTd6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvbGUgb2YgZGVzaWduYXRpb24uYWN0aXZpdGllczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLWdyYXktNTAgcC0yIHJvdW5kZWQgYm9yZGVyLWwtMyBib3JkZXItaW5kaWdvLTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS03MDAgbGVhZGluZy1yZWxheGVkXCI+e3tyb2xlfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1icmVha1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDb21wZXRlbmNpZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jaXMtZ3JpZCBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCZWhhdmlvcmFsIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ibHVlLTUwIHJvdW5kZWQtbGcgcC0zIGNvbXBldGVuY2llcy1ncmlkLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWJsdWUtODAwIHRleHQtYmFzZSBtYi0yXCI+QmVoYXZpb3JhbDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTEgZ3JpZC1saXN0LWl0ZW0gZ3JpZC1saXN0LWl0ZW0tYmVoYXZpb3JhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29tcCBvZiBkZXNpZ25hdGlvbi5iZWhhdmlvcmFsQ29tcGV0ZW5jaWVzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLXdoaXRlIHAtMS41IHJvdW5kZWQgdGV4dC1zbSB0ZXh0LWdyYXktNzAwIGJvcmRlci1sLTIgYm9yZGVyLWJsdWUtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21wfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LWJsdWUtNjAwIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rlc2lnbmF0aW9uLmJlaGF2aW9yYWxDb21wZXRlbmNpZXMubGVuZ3RofX0gdG90YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZ1bmN0aW9uYWwgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLWdyZWVuLTUwIHJvdW5kZWQtbGcgcC0zIGNvbXBldGVuY2llcy1ncmlkLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWdyZWVuLTgwMCB0ZXh0LWJhc2UgbWItMlwiPkZ1bmN0aW9uYWw8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS0xIGdyaWQtbGlzdC1pdGVtIGdyaWQtbGlzdC1pdGVtLWZ1bmN0aW9uYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbXAgb2YgZGVzaWduYXRpb24uZnVuY3Rpb25hbENvbXBldGVuY2llczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy13aGl0ZSBwLTEuNSByb3VuZGVkIHRleHQtc20gdGV4dC1ncmF5LTcwMCBib3JkZXItbC0yIGJvcmRlci1ncmVlbi00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbXB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiB0ZXh0LXNtIHRleHQtZ3JlZW4tNjAwIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rlc2lnbmF0aW9uLmZ1bmN0aW9uYWxDb21wZXRlbmNpZXMubGVuZ3RofX0gdG90YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERvbWFpbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctcHVycGxlLTUwIHJvdW5kZWQtbGcgcC0zIGNvbXBldGVuY2llcy1ncmlkLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXB1cnBsZS04MDAgdGV4dC1iYXNlIG1iLTJcIj5Eb21haW48L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS0xIGdyaWQtbGlzdC1pdGVtIGdyaWQtbGlzdC1pdGVtLWRvbWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29tcCBvZiBkZXNpZ25hdGlvbi5kb21haW5Db21wZXRlbmNpZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctd2hpdGUgcC0xLjUgcm91bmRlZCB0ZXh0LXNtIHRleHQtZ3JheS03MDAgYm9yZGVyLWwtMiBib3JkZXItcHVycGxlLTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tcH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIHRleHQtc20gdGV4dC1wdXJwbGUtNjAwIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rlc2lnbmF0aW9uLmRvbWFpbkNvbXBldGVuY2llcy5sZW5ndGh9fSB0b3RhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBZGRpbmcgY291cnNlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYnAgbXQtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkZXNpZ25hdGlvbi5zZWxlY3RlZENvdXJzZXM/Lmxlbmd0aCAmJiBvcGVuZWRGcm9tID09PSAnYWNicCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0zIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01IG1yLTIgdGV4dC1pbmRpZ28tNjAwIGljb24tc21cIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3Vyc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cnNlLWxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3Vyc2UtbGlzdC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRlc2lnbmF0aW9uLnNlbGVjdGVkQ291cnNlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tlZC1jb3Vyc2UtY29udGFpbmVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3Vyc2UtcGlsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3Vyc2UtcGlsbC10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvY291cnNlLnN2Z1wiPjwvc3Bhbj4mbmJzcDs8c3Bhbj5Db3Vyc2U8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8ucmF0aW9uYWxlICYmICFpdGVtPy5pc19wdWJsaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1ncmVlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1ncmVlbi10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QUkgUmVjb21tZW5kZWQgLSBpR09UIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZSBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8ucGxhdGZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIFtocmVmXT1cIml0ZW0/LnB1YmxpY19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+PHNwYW4+UGxhdGZvcm0gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5wbGF0Zm9ybX19PC9zcGFuPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UgbXQtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/Lm9yZ2FuaXNhdGlvbj8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlByb3ZpZGVyIC0ge3tpdGVtPy5vcmdhbmlzYXRpb25bMF19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8ucmF0aW9uYWxlICYmIGl0ZW0/LmlzX3B1YmxpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLXB1YmxpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1wdWJsaWMtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFJIFJlY29tbWVuZGVkIC0gUHVibGljIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZSBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8ucGxhdGZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIFtocmVmXT1cIml0ZW0/LnB1YmxpY19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+PHNwYW4+UGxhdGZvcm0gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5wbGF0Zm9ybX19PC9zcGFuPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UgbXQtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/Lm9yZ2FuaXNhdGlvbj8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlByb3ZpZGVyIC0ge3tpdGVtPy5vcmdhbmlzYXRpb25bMF19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWl0ZW0/LnJhdGlvbmFsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLWdyYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtZ3JheS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TWFudWFsbHkgU3VnZ2VzdGVkIC0gaUdPVCA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UgbXQtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LnBsYXRmb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBbaHJlZl09XCJpdGVtPy5wdWJsaWNfbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPjxzcGFuPlBsYXRmb3JtIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8ucGxhdGZvcm19fTwvc3Bhbj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlIG10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5vcmdhbmlzYXRpb24/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Qcm92aWRlciAtIHt7aXRlbT8ub3JnYW5pc2F0aW9uWzBdfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3Vyc2UtdGl0bGUgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5jb3Vyc2VcIj57e2l0ZW0/LmNvdXJzZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5uYW1lXCI+e3tpdGVtPy5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS1kZXNjIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNQREZEb3dubG9hZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7aXRlbT8ucmF0aW9uYWxlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0Q29tcGV0ZW5jaWVzQnlUeXBlKCdCZWhhdmlvdXJhbCcsaXRlbSk/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LXN1Yi1oZWFkaW5nXCI+QmVoYXZpb3JhbCBDb21wZXRlbmNpZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJjb21wZXRlbmN5LWxpc3QgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJiZWhhdmlvdXJhbC1waWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21wIG9mIGdldERpc3BsYXllZENvbXBldGVuY2llcygnQmVoYXZpb3VyYWwnLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBldGVuY3ktdGV4dFwiPiB7eyBjb21wLmNvbXBldGVuY3lUaGVtZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmNvbXBldGVuY3lTdWJUaGVtZU5hbWUgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJoYXNNb3JlVGhhblR3bygnQmVoYXZpb3VyYWwnLGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2hvdy1tb3JlLWNvbXBldGVuY3lcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2hvdy1tb3JlLWxpbmsgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb21wZXRlbmNpZXMoJ0JlaGF2aW91cmFsJyxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGlzRXhwYW5kZWQoJ0JlaGF2aW91cmFsJyxpdGVtKSA/ICdTaG93IExlc3MnIDogJysnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZW1haW5pbmdDb3VudCgnQmVoYXZpb3VyYWwnLGl0ZW0pICsgJyBNb3JlJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldENvbXBldGVuY2llc0J5VHlwZSgnRnVuY3Rpb25hbCcsaXRlbSk/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LXN1Yi1oZWFkaW5nXCI+RnVuY3Rpb25hbCBDb21wZXRlbmNpZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJjb21wZXRlbmN5LWxpc3QgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJmdW5jdGlvbmFsLXBpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbXAgb2YgZ2V0RGlzcGxheWVkQ29tcGV0ZW5jaWVzKCdGdW5jdGlvbmFsJyxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wZXRlbmN5LXRleHRcIj4ge3sgY29tcC5jb21wZXRlbmN5VGhlbWVOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5jb21wZXRlbmN5U3ViVGhlbWVOYW1lIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiaGFzTW9yZVRoYW5Ud28oJ0Z1bmN0aW9uYWwnLGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2hvdy1tb3JlLWNvbXBldGVuY3lcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2hvdy1tb3JlLWxpbmsgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb21wZXRlbmNpZXMoJ0Z1bmN0aW9uYWwnLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNFeHBhbmRlZCgnRnVuY3Rpb25hbCcsaXRlbSkgPyAnU2hvdyBMZXNzJyA6ICcrJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVtYWluaW5nQ291bnQoJ0Z1bmN0aW9uYWwnLGl0ZW0pICsgJyBNb3JlJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCIgKm5nSWY9XCJnZXRDb21wZXRlbmNpZXNCeVR5cGUoJ0RvbWFpbicsaXRlbSk/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LXN1Yi1oZWFkaW5nXCI+RG9tYWluIENvbXBldGVuY2llczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNvbXBldGVuY3ktbGlzdCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRvbWFpbi1waWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21wIG9mIGdldERpc3BsYXllZENvbXBldGVuY2llcygnRG9tYWluJyxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wZXRlbmN5LXRleHRcIj4ge3sgY29tcC5jb21wZXRlbmN5VGhlbWVOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5jb21wZXRlbmN5U3ViVGhlbWVOYW1lIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiaGFzTW9yZVRoYW5Ud28oJ0RvbWFpbicsaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaG93LW1vcmUtY29tcGV0ZW5jeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaG93LW1vcmUtbGluayBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbXBldGVuY2llcygnRG9tYWluJyxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGlzRXhwYW5kZWQoJ0RvbWFpbicsaXRlbSkgPyAnU2hvdyBMZXNzJyA6ICcrJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVtYWluaW5nQ291bnQoJ0RvbWFpbicsaXRlbSkgKyAnIE1vcmUnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsZXZhbmN5LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsZXZhbmN5XCI+UmVsZXZhbmN5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoXCI+LTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyY2VudGFnZVwiICpuZ0lmPVwiaXRlbT8ucmVsZXZhbmN5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LnJlbGV2YW5jeX19JTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyY2VudGFnZVwiICpuZ0lmPVwiIWl0ZW0/LnJlbGV2YW5jeVwiPk4vQTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYWRkaW5nIGNvdXJzZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBGb290ZXIgLS0+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGZvb3RlciBjbGFzcz1cIm9yZy1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNiBmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNCBtYi00IG10LTQgbWQ6bWItMCBmb290ZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWxvZ28tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMva2FybWF5b2dpTG9nby1taW4ucG5nXCIgYWx0PVwiS2FybWF5b2dpIEJoYXJhdCBMb2dvXCIgY2xhc3M9XCJoLTEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDoyMHB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMDBweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9rYXJtYXlvZ2liaGFyYXQuZ292LmluXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthcm1heW9naWJoYXJhdC5nb3YuaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSB0ZXh0LWNlbnRlciBtZDp0ZXh0LXJpZ2h0IG1iLTRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMDBweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPiZjb3B5OyAyMDI1IEFsbCBSaWdodHMgUmVzZXJ2ZWQuPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiRG93bmxvYWQgYXMgRXhjZWxcIiAoY2xpY2spPVwiZG93bmxvYWRDU1YoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLWFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIkRvd25sb2FkIGFzIFBERlwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFBkZkZyb21CRShvcGVuZWRGcm9tKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLWFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIkNhbmNlbFwiIChjbGljayk9XCJjYW5jZWxGb3JtKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LWxvYWRlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCI1MFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgPC9kaXY+Il19
884
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1maW5hbC1jYnAtcGxhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9saWIvY29tcG9uZW50cy92aWV3LWZpbmFsLWNicC1wbGFuL3ZpZXctZmluYWwtY2JwLXBsYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvdmlldy1maW5hbC1jYnAtcGxhbi92aWV3LWZpbmFsLWNicC1wbGFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBMkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVFuSCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQ1MsU0FBa0QsRUFDekIsSUFBUyxFQUNqQyxNQUFpQixFQUNqQixHQUFzQixFQUN2QixhQUE0QixFQUMzQixRQUFxQixFQUNyQixFQUFlO1FBTmhCLGNBQVMsR0FBVCxTQUFTLENBQXlDO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFTekIsY0FBUyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDL0MsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDaEMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDakMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDbEMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDbEMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDaEMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDbkMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDcEMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDO1FBQ3JDLHNCQUFpQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEMsWUFBTyxHQUFHLEtBQUssQ0FBQTtRQUNmLG9CQUFlLEdBQVEsRUFBRSxDQUFBO1FBQ3pCLHdCQUFtQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQzNFLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFDbEIsYUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNiLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBRXBCLDBCQUFxQixHQUFHLEVBQUUsQ0FBQTtRQUMxQix5QkFBb0IsR0FBUSxFQUFFLENBQUM7UUFDL0Isc0JBQWlCLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTdELGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBN0JwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQztTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUEwQkQsc0JBQXNCO0lBQ3RCLE1BQU07SUFDTixzQ0FBc0M7SUFDdEMsbUNBQW1DO0lBQ25DLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0IsMEVBQTBFO0lBQzFFLDBGQUEwRjtJQUMxRixxRUFBcUU7SUFDckUsc0RBQXNEO0lBQ3RELDRDQUE0QztJQUM1QyxzREFBc0Q7SUFDdEQsa0RBQWtEO0lBQ2xELGlEQUFpRDtJQUNqRCxTQUFTO0lBQ1QsZ0NBQWdDO0lBQ2hDLHFGQUFxRjtJQUNyRiwrRkFBK0Y7SUFDL0YsZ0RBQWdEO0lBQ2hELFNBQVM7SUFDVCxnQ0FBZ0M7SUFDaEMsOEdBQThHO0lBQzlHLHNHQUFzRztJQUN0Ryw0RkFBNEY7SUFDNUYsMEVBQTBFO0lBQzFFLFNBQVM7SUFDVCw0QkFBNEI7SUFDNUIsNkZBQTZGO0lBQzdGLHNHQUFzRztJQUN0RyxpREFBaUQ7SUFDakQsU0FBUztJQUNULHFFQUFxRTtJQUNyRSxNQUFNO0lBQ04sS0FBSztJQUVMLHNDQUFzQztJQUN0QyxxSEFBcUg7SUFDckgscUhBQXFIO0lBQ3JILDZHQUE2RztJQUU3Ryx3Q0FBd0M7SUFDeEMseUpBQXlKO0lBQ3pKLHlKQUF5SjtJQUN6SixpSkFBaUo7SUFFakosa0JBQWtCO0lBQ2xCLE1BQU07SUFDTix1Q0FBdUM7SUFDdkMsbUNBQW1DO0lBQ25DLHlDQUF5QztJQUN6Qyx3QkFBd0I7SUFDeEIsNkJBQTZCO0lBQzdCLE9BQU87SUFDUCxNQUFNO0lBQ04sdUNBQXVDO0lBQ3ZDLG1DQUFtQztJQUNuQyx5Q0FBeUM7SUFDekMsd0JBQXdCO0lBQ3hCLDhCQUE4QjtJQUM5QixPQUFPO0lBQ1AsTUFBTTtJQUNOLG1DQUFtQztJQUNuQywrQkFBK0I7SUFDL0IscUNBQXFDO0lBQ3JDLHdCQUF3QjtJQUN4QiwrQkFBK0I7SUFDL0IsT0FBTztJQUNQLE1BQU07SUFDTixrQ0FBa0M7SUFDbEMsNkVBQTZFO0lBQzdFLGlHQUFpRztJQUNqRyx3QkFBd0I7SUFDeEIsOEJBQThCO0lBQzlCLE1BQU07SUFDTixLQUFLO0lBRUwsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxlQUFlO0lBRWYsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQTtRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXpCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7b0JBQ3hDLEdBQUcsRUFBRSxDQUFDO29CQUNOLFFBQVEsRUFBRSxRQUFRO2lCQUNuQixDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7U0FFUjtJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQTtRQUNqRyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO1lBQ3pFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUE7WUFFN0UsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFO2dCQUUzRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUE7Z0JBQ25FLElBQUksQ0FBQyxhQUFhLENBQUMsd0NBQXdDLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDcEcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7d0JBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7d0JBQ3BCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQzt3QkFDakYsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7d0JBRTFCLGtEQUFrRDt3QkFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzt3QkFDekMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO3dCQUM5QyxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7d0JBQzlDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7d0JBRTFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUVuQyx3Q0FBd0M7NEJBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7NEJBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7NEJBQ3hDLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7NEJBQ3hDLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7NEJBRXBDLElBQUksZUFBZSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDOzRCQUU1RSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQ0FFaEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dDQUNwRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7Z0NBQzNELE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQ0FFbEQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVE7b0NBQUUsT0FBTztnQ0FFaEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7Z0NBRW5DLDJCQUEyQjtnQ0FDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7b0NBQ3RCLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0NBQ2xCLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQ0FDekI7Z0NBRUQsSUFBSSxJQUFJLEtBQUssWUFBWSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQ0FDcEQsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FDdkIsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO2lDQUM5QjtnQ0FFRCxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29DQUNwRCxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29DQUN2QixlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7aUNBQzlCO2dDQUVELElBQUksSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7b0NBQzVDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0NBQ25CLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQ0FDMUI7Z0NBRUQsMkJBQTJCO2dDQUMzQixjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dDQUV4QixJQUFJLElBQUksS0FBSyxZQUFZO29DQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQ0FDeEQsSUFBSSxJQUFJLEtBQUssWUFBWTtvQ0FBRSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQ3hELElBQUksSUFBSSxLQUFLLFFBQVE7b0NBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFFbEQsQ0FBQyxDQUFDLENBQUM7NEJBRUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7Z0NBQ3hCLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO2dDQUNwQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtnQ0FDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVO2dDQUMxQixxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCO2dDQUNuRCxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVU7Z0NBQzdCLGVBQWU7Z0NBQ2Ysc0JBQXNCLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztnQ0FDMUMsc0JBQXNCLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztnQ0FDMUMsa0JBQWtCLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztnQ0FDbEMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLElBQUksRUFBRTs2QkFDbkUsQ0FBQyxDQUFDO3lCQUVKO3dCQUVELGlDQUFpQzt3QkFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO3dCQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQzt3QkFDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7d0JBQy9ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQzt3QkFFdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDekIsVUFBVSxDQUFDLEdBQUcsRUFBRTs0QkFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7d0JBQ3BCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTt3QkFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtvQkFDbkUsQ0FBQztvQkFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTt3QkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFOzRCQUM1QyxRQUFRLEVBQUUsSUFBSTs0QkFDZCxVQUFVLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQzt5QkFDL0IsQ0FBQyxDQUFDO29CQUNMLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBRUwsSUFBSSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ3hFLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO3dCQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTt3QkFDdkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUNqRixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQzt3QkFFMUIsa0RBQWtEO3dCQUNsRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO3dCQUN6QyxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7d0JBQzlDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzt3QkFDOUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzt3QkFFMUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBRW5DLHdDQUF3Qzs0QkFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzs0QkFDbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzs0QkFDeEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzs0QkFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzs0QkFFcEMsSUFBSSxlQUFlLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7NEJBRTVFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dDQUVoQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7Z0NBQ3BELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQ0FDM0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dDQUVsRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUTtvQ0FBRSxPQUFPO2dDQUVoQyxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztnQ0FFbkMsMkJBQTJCO2dDQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQ0FDdEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FDbEIsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO2lDQUN6QjtnQ0FFRCxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29DQUNwRCxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29DQUN2QixlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7aUNBQzlCO2dDQUVELElBQUksSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7b0NBQ3BELGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0NBQ3ZCLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztpQ0FDOUI7Z0NBRUQsSUFBSSxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQ0FDNUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FDbkIsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lDQUMxQjtnQ0FFRCwyQkFBMkI7Z0NBQzNCLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBRXhCLElBQUksSUFBSSxLQUFLLFlBQVk7b0NBQUUsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dDQUN4RCxJQUFJLElBQUksS0FBSyxZQUFZO29DQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQ0FDeEQsSUFBSSxJQUFJLEtBQUssUUFBUTtvQ0FBRSxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUVsRCxDQUFDLENBQUMsQ0FBQzs0QkFFSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztnQ0FDeEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7Z0NBQ3BDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCO2dDQUNsQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVU7Z0NBQzFCLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7Z0NBQ25ELFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVTtnQ0FDN0IsZUFBZTtnQ0FDZixzQkFBc0IsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDO2dDQUMxQyxzQkFBc0IsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDO2dDQUMxQyxrQkFBa0IsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO2dDQUNsQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsSUFBSSxFQUFFOzZCQUNuRSxDQUFDLENBQUM7eUJBRUo7d0JBRUQsaUNBQWlDO3dCQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7d0JBQ3JELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDO3dCQUMvRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQzt3QkFDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO3dCQUV2RCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFOzRCQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTt3QkFDcEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUVYLENBQUM7b0JBRUQsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7d0JBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTs0QkFDNUMsUUFBUSxFQUFFLElBQUk7NEJBQ2QsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7eUJBQy9CLENBQUMsQ0FBQztvQkFDTCxDQUFDO2lCQUNGLENBQUMsQ0FBQzthQUNKO1NBSUY7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssT0FBTyxFQUFFO1lBQ3RFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQTtZQUN2RixJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFBO1lBQzdFLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLFdBQVcsQ0FBQTtZQUNuRSxpSEFBaUg7WUFDakgsNEJBQTRCO1lBQzVCLG1DQUFtQztZQUNuQyxtQ0FBbUM7WUFDbkMsK0JBQStCO1lBQy9CLHFDQUFxQztZQUNyQyxpQ0FBaUM7WUFDakMsZ0NBQWdDO1lBQ2hDLDRCQUE0QjtZQUM1QiwyRUFBMkU7WUFDM0UsdUNBQXVDO1lBQ3ZDLDhCQUE4QjtZQUM5QixzQ0FBc0M7WUFDdEMsb0RBQW9EO1lBRXBELGtFQUFrRTtZQUNsRSxxQ0FBcUM7WUFDckMsNkNBQTZDO1lBQzdDLFFBQVE7WUFDUixtREFBbUQ7WUFDbkQsa0VBQWtFO1lBQ2xFLHFDQUFxQztZQUNyQyw2Q0FBNkM7WUFDN0MsUUFBUTtZQUNSLGdEQUFnRDtZQUNoRCw4REFBOEQ7WUFDOUQsaUNBQWlDO1lBQ2pDLHlDQUF5QztZQUV6QyxRQUFRO1lBQ1IsUUFBUTtZQUNSLHNCQUFzQjtZQUN0Qiw2Q0FBNkM7WUFDN0MsMkNBQTJDO1lBQzNDLG1DQUFtQztZQUNuQyw0REFBNEQ7WUFDNUQscUNBQXFDO1lBQ3JDLHlDQUF5QztZQUN6Qyx1REFBdUQ7WUFDdkQsdURBQXVEO1lBQ3ZELDhDQUE4QztZQUM5QyxvQ0FBb0M7WUFDcEMseUZBQXlGO1lBQ3pGLG1HQUFtRztZQUNuRyxvREFBb0Q7WUFDcEQsYUFBYTtZQUNiLG9DQUFvQztZQUNwQyxrSEFBa0g7WUFDbEgsMEdBQTBHO1lBQzFHLGdHQUFnRztZQUNoRyw4RUFBOEU7WUFDOUUsYUFBYTtZQUNiLGdDQUFnQztZQUNoQyxpR0FBaUc7WUFDakcsMEdBQTBHO1lBQzFHLHFEQUFxRDtZQUNyRCxhQUFhO1lBQ2IseUVBQXlFO1lBQ3pFLE9BQU87WUFHUCxtQ0FBbUM7WUFDbkMsTUFBTTtZQUNOLDhCQUE4QjtZQUM5Qix1QkFBdUI7WUFDdkIsd0JBQXdCO1lBQ3hCLGNBQWM7WUFDZCw4REFBOEQ7WUFDOUQsdUVBQXVFO1lBRXZFLE1BQU07WUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLHdDQUF3QyxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ3BHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO29CQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtvQkFDdkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUNqRixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztvQkFFMUIsa0RBQWtEO29CQUNsRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO29CQUN6QyxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7b0JBQzlDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztvQkFDOUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztvQkFFMUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBRW5DLHdDQUF3Qzt3QkFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzt3QkFDbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzt3QkFDeEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzt3QkFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzt3QkFFcEMsSUFBSSxlQUFlLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7d0JBRTVFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFOzRCQUVoQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7NEJBQ3BELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQzs0QkFDM0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDOzRCQUVsRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUTtnQ0FBRSxPQUFPOzRCQUVoQyxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQzs0QkFFbkMsMkJBQTJCOzRCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDdEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQ0FDbEIsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDOzZCQUN6Qjs0QkFFRCxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dDQUNwRCxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dDQUN2QixlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7NkJBQzlCOzRCQUVELElBQUksSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0NBQ3BELGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQ3ZCLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzs2QkFDOUI7NEJBRUQsSUFBSSxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDNUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQ0FDbkIsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDOzZCQUMxQjs0QkFFRCwyQkFBMkI7NEJBQzNCLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBRXhCLElBQUksSUFBSSxLQUFLLFlBQVk7Z0NBQUUsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUN4RCxJQUFJLElBQUksS0FBSyxZQUFZO2dDQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDeEQsSUFBSSxJQUFJLEtBQUssUUFBUTtnQ0FBRSxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUVsRCxDQUFDLENBQUMsQ0FBQzt3QkFFSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQzs0QkFDeEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7NEJBQ3BDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCOzRCQUNsQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVU7NEJBQzFCLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7NEJBQ25ELFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVTs0QkFDN0IsZUFBZTs0QkFDZixzQkFBc0IsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDOzRCQUMxQyxzQkFBc0IsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDOzRCQUMxQyxrQkFBa0IsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDOzRCQUNsQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsSUFBSSxFQUFFO3lCQUNuRSxDQUFDLENBQUM7cUJBRUo7b0JBRUQsaUNBQWlDO29CQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQ3JELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDO29CQUMvRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQztvQkFDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO29CQUV2RCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUd6QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtvQkFDcEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO29CQUN6RCxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO2dCQUNuRSxDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO29CQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUU7d0JBQzVDLFFBQVEsRUFBRSxJQUFJO3dCQUNkLFVBQVUsRUFBRSxDQUFDLGdCQUFnQixDQUFDO3FCQUMvQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQzthQUNGLENBQUMsQ0FBQztTQUNKO0lBSUgsQ0FBQztJQUNELHFCQUFxQixDQUFDLElBQVksRUFBRSxNQUFXO1FBQzdDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsSUFBSSxZQUFZLEdBQVUsRUFBRSxDQUFDO1FBRTdCLHVDQUF1QztRQUN2QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3RDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1NBQ3BDO1FBQ0QsaUNBQWlDO2FBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDOUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7U0FDdkM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN4QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpELE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFO2dCQUMxQixPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXZELGtDQUFrQztZQUNsQyxJQUFJLGNBQWMsS0FBSyxhQUFhLElBQUksY0FBYyxLQUFLLFlBQVksRUFBRTtnQkFDdkUsT0FBTyxJQUFJLEtBQUssYUFBYSxJQUFJLElBQUksS0FBSyxZQUFZLENBQUM7YUFDeEQ7WUFFRCxPQUFPLElBQUksS0FBSyxjQUFjLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDbEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RCxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUUvQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsQyxPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUVELE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVksRUFBRSxLQUFhO1FBQzVDLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3BDLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNsRSxPQUFPLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNELHNCQUFzQjtRQUNwQiw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLENBQUMsU0FBUztnQkFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFTLEVBQUUsS0FBYTtRQUMxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDakQsTUFBTSxnQkFBZ0IsR0FDcEIsSUFBSSxFQUFFLGlCQUFpQixJQUFJLElBQUksRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQztRQUUxRCxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO2dCQUNqRCxRQUFRLEVBQUUsSUFBSTtnQkFDZCxVQUFVLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQzthQUMvQixDQUFDLENBQUM7WUFDSCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixJQUFJLENBQUMsYUFBYTthQUNmLHVCQUF1QixDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQzthQUN4RCxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULGlCQUFpQjtnQkFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUVyQyxnQkFBZ0I7Z0JBQ2hCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUU5QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFFckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO29CQUNyRCxRQUFRLEVBQUUsSUFBSTtvQkFDZCxVQUFVLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDakMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUVyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUkseUJBQXlCLEVBQ2pELEdBQUcsRUFDSDtvQkFDRSxRQUFRLEVBQUUsSUFBSTtvQkFDZCxVQUFVLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDL0IsQ0FDRixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUyxFQUFFLEtBQWE7UUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFO1lBQ2xFLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3pCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUksRUFBRSxZQUFZLENBQWlCLHVCQUF1QjthQUMzRDtZQUNELFVBQVUsRUFBRSxxQkFBcUI7WUFDakMsU0FBUyxFQUFFLE9BQU87WUFDbEIsU0FBUyxFQUFFLE1BQU07WUFDakIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QyxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDdkM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXO1FBRVQsbUhBQW1IO1FBQ25ILGlEQUFpRDtRQUNqRCxXQUFXO1FBQ1gscURBQXFEO1FBQ3JELElBQUk7UUFDSiwwRUFBMEU7UUFDMUUseUJBQXlCO1FBQ3pCLG1DQUFtQztRQUNuQyxJQUFJO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixtREFBbUQ7UUFFbkQsNkJBQTZCO1FBQzdCLGtEQUFrRDtRQUNsRCx1RUFBdUU7UUFDdkUsZ0RBQWdEO1FBQ2hELHlEQUF5RDtRQUN6RCxNQUFNO1FBRU4scUNBQXFDO1FBQ3JDLHNCQUFzQjtRQUN0QixtQkFBbUI7UUFDbkIsc0NBQXNDO1FBQ3RDLDhDQUE4QztRQUM5QyxxQkFBcUI7UUFDckIsa0JBQWtCO1FBQ2xCLHVCQUF1QjtRQUN2QixvQkFBb0I7UUFDcEIsU0FBUztRQUNULGVBQWU7UUFDZixvQkFBb0I7UUFDcEIsc0JBQXNCO1FBQ3RCLGdDQUFnQztRQUNoQyxTQUFTO1FBQ1QsbUJBQW1CO1FBQ25CLDZDQUE2QztRQUM3QyxRQUFRO1FBQ1IsT0FBTztRQUVQLGtEQUFrRDtRQUNsRCxNQUFNO1FBQ04sZ0RBQWdEO1FBRWhELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzlDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDbkIsS0FBSyxFQUFFLElBQUk7WUFDWCxPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxDQUFDO1lBQ1YsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2QyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVwRCxVQUFVO1lBQ1YsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNyQixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDdEIsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBRXhCLE1BQU0sV0FBVyxHQUFHLFFBQVEsR0FBRyxVQUFVLEdBQUcsV0FBVyxDQUFDO1lBQ3hELE1BQU0sWUFBWSxHQUFHLFNBQVMsR0FBRyxTQUFTLEdBQUcsWUFBWSxDQUFDO1lBRTFELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDakMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUVuQyxNQUFNLEtBQUssR0FBRyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQ3hDLE1BQU0sWUFBWSxHQUFHLFlBQVksR0FBRyxLQUFLLENBQUM7WUFFMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLENBQUM7WUFFMUQsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDNUMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEQsVUFBVSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7Z0JBQy9CLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxHQUFHLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQztnQkFFL0UsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxHQUFHLEVBQUU7b0JBQ1AsR0FBRyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7b0JBQzFCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFFeEQsR0FBRyxDQUFDLFNBQVMsQ0FDWCxNQUFNLEVBQ04sQ0FBQyxFQUFFLElBQUksR0FBRyxZQUFZLEVBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUM5QixDQUFDLEVBQUUsQ0FBQyxFQUNKLFdBQVcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUMvQixDQUFDO2lCQUNIO2dCQUVELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLElBQUksR0FBRyxDQUFDO29CQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQzlDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUMvRTtZQUVELEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQVFMLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFFOUMsTUFBTSxHQUFHLEdBQUc7WUFDVixNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEIsUUFBUSxFQUFFLGNBQWM7WUFDeEIsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO1lBQ3RDLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1lBQzFELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFO1lBQzdELFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUI7U0FDMUUsQ0FBQztRQUVGLFFBQVEsRUFBRTthQUNQLEdBQUcsQ0FBQyxHQUFHLENBQUM7YUFDUixJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2IsSUFBSSxFQUFFO2FBQ04sSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULHdCQUF3QjtZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1YsaUNBQWlDO1lBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUwsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUlYLENBQUM7SUFJRCxhQUFhLENBQUMsU0FBZ0IsRUFBRSxXQUFtQixZQUFZO1FBQzdELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBRW5DLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUVqRCxtREFBbUQ7UUFDbkQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDN0MsSUFBSSxRQUFRLENBQUMsZUFBZTtZQUFFLEtBQUssSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztRQUV4RSxvQ0FBb0M7UUFDcEMsTUFBTSxPQUFPLEdBQUc7WUFDZCxhQUFhO1lBQ2IseUJBQXlCO1lBQ3pCLFlBQVk7WUFDWix5QkFBeUI7WUFDekIseUJBQXlCO1lBQ3pCLHFCQUFxQjtZQUNyQixlQUFlO1NBQ2hCLENBQUM7UUFFRiwrQkFBK0I7UUFDL0IsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwQyxNQUFNLE9BQU8sR0FDWCxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU07Z0JBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixJQUFJLEVBQUU7Z0JBQ25FLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFVCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQVMsRUFBRSxFQUFFO2dCQUN0RCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO3FCQUN4QyxHQUFHLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUNmLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixNQUFNLEVBQUUsQ0FBQyxtQkFBbUIsTUFBTSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsQ0FDdEY7cUJBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVmLE9BQU8sQ0FDTCxHQUFHLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxJQUFJO29CQUN0QyxrQkFBa0IsQ0FBQyxDQUFDLFVBQVUsSUFBSTtvQkFDbEMsdUJBQXVCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJO29CQUN2RCxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsS0FBSztvQkFDakMsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLElBQUk7b0JBQ2hDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO29CQUN6RCxvQkFBb0IsWUFBWSxFQUFFLENBQ25DLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEIsT0FBTztnQkFDTCxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLHNCQUFzQixJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQ3pGLHlCQUF5QixFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixJQUFJLEVBQUUsQ0FBQztxQkFDMUQsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDL0QsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7cUJBQ2xDLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQy9ELHlCQUF5QixFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7cUJBQ2pELE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUM7cUJBQzNDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ25GLHlCQUF5QixFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7cUJBQ2pELE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUM7cUJBQzNDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ25GLHFCQUFxQixFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7cUJBQzdDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7cUJBQ3ZDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ25GLGdCQUFnQixFQUFFLGFBQWE7YUFDaEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBR0gsc0NBQXNDO1FBQ3RDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZDLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRCxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztnQkFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ2pCLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2FBQ25DLENBQUMsQ0FBQztRQUVILDBCQUEwQjtRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTFELHVCQUF1QjtRQUN2QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMvRCxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDbkIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRztvQkFDbEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtvQkFDcEIsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUU7b0JBQzFELFNBQVMsRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2lCQUN4RSxDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILHVDQUF1QztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU1RSwwREFBMEQ7UUFDMUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUNyQixNQUFNLENBQUMsTUFBTSxFQUNiLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDbkcsQ0FBQztZQUNGLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQjtRQUMzRSxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxTQUFTLENBQUM7UUFFeEIseUJBQXlCO1FBQ3pCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDakMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUU7b0JBQ25CLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2lCQUN4RTtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxvQkFBb0I7UUFDcEIsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDWixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO2dCQUNYLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtnQkFDNUIsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO2FBQ3hELENBQUM7U0FDSDtRQUVELHFDQUFxQztRQUNyQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUvQyxlQUFlO1FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUtELFdBQVc7UUFDVCxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLFdBQVcsRUFBRTtZQUNwRCxRQUFRLEdBQUcsY0FBYyxJQUFJLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLFdBQVcsT0FBTyxDQUFBO1NBQzNJO2FBQU07WUFDTCxRQUFRLEdBQUcsY0FBYyxJQUFJLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxPQUFPLENBQUE7U0FDeEY7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQWU7UUFDL0IsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDO1FBQ3RFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1FBQ25CLDJGQUEyRjtRQUMzRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsV0FBVyxFQUFFO1lBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUE7U0FDbkg7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUE7U0FDakw7UUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7UUFDdEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUNELGtCQUFrQixDQUFDLFVBQWU7UUFDaEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO1lBQ2xDLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxtREFBbUQ7UUFDbkQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV6RSxPQUFPLFVBQVUsRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQVk7SUFFWixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxJQUFZO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQyxRQUFRLElBQUksRUFBRTtZQUVaLEtBQUssVUFBVTtnQkFDYixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM3RixNQUFNO1NBQ1Q7SUFDSCxDQUFDOytHQWxnQ1UseUJBQXlCLDhDQUcxQixlQUFlO21HQUhkLHlCQUF5QiwwUUNmdEMsbWkzQ0E0bUJVOzs0RkQ3bEJHLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx5QkFBeUI7OzBCQU9oQyxNQUFNOzJCQUFDLGVBQWU7b0xBd0JtQixVQUFVO3NCQUFyRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBYWQsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgSW5qZWN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IGh0bWwycGRmIGZyb20gJ2h0bWwycGRmLmpzJztcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSAnaHRtbDJjYW52YXMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmltcG9ydCB7IERlbGV0ZVJvbGVNYXBwaW5nUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9kZWxldGUtcm9sZS1tYXBwaW5nLXBvcHVwL2RlbGV0ZS1yb2xlLW1hcHBpbmctcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kdWxlcy9zaGFyZWQvc2VydmljZXMvc2hhcmVkLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZpZXctZmluYWwtY2JwLXBsYW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1maW5hbC1jYnAtcGxhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctZmluYWwtY2JwLXBsYW4uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3RmluYWxDYnBQbGFuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFZpZXdGaW5hbENicFBsYW5Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXG4gICkge1xuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbGFuZ3VhZ2U6IFsnZW4nXVxuICAgIH0pO1xuICAgIHRoaXMub3BlbmVkRnJvbSA9IGRhdGE/Lm9wZW5lZEZyb207XG4gICAgdGhpcy5nZXRNYXBwaW5nRGF0YSgpXG4gIH1cbiAgZmlsdGVyRm9ybSE6IEZvcm1Hcm91cDtcbiAgbGFuZ3VhZ2VzID0gW3sgXCJjb2RlXCI6IFwiZW5cIiwgbGFiZWw6IFwiRW5nbGlzaFwiIH0sXG4gIHsgXCJjb2RlXCI6IFwiaGlcIiwgbGFiZWw6IFwiSGluZGlcIiB9LFxuICB7IFwiY29kZVwiOiBcInRlXCIsIGxhYmVsOiBcIlRlbHVndVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwia25cIiwgbGFiZWw6IFwiS2FubmFkYVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwibXJcIiwgbGFiZWw6IFwiTWFyYXRoaVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwidGFcIiwgbGFiZWw6IFwiVGFtaWxcIiB9LFxuICB7IFwiY29kZVwiOiBcImd1XCIsIGxhYmVsOiBcIkd1amFyYXRpXCIgfSxcbiAgeyBcImNvZGVcIjogXCJtbFwiLCBsYWJlbDogXCJNYWxheWFsYW1cIiB9LFxuICB7IFwiY29kZVwiOiBcImJuXCIsIGxhYmVsOiBcIkJlbmdhbGlcIiB9LF07XG4gIGZpbHRlcmVkTGFuZ3VhZ2VzID0gWy4uLnRoaXMubGFuZ3VhZ2VzXTtcbiAgQFZpZXdDaGlsZCgncGRmQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwZGZDb250ZW50ITogRWxlbWVudFJlZjtcbiAgbG9hZGluZyA9IGZhbHNlXG4gIGRlc2lnbmF0aW9uRGF0YTogYW55ID0gW11cbiAgdG90YWxDb21wZXRlbmNpZU9iaiA9IHsgdG90YWw6IDAsIGJlaGF2aW9yYWw6IDAsIGZ1bmN0aW9uYWw6IDAsIGRvbWFpbjogMCB9XG4gIHBkZlRyaWdnZXIgPSBmYWxzZVxuICBqc29uRGF0YSA9IFtdXG4gIGZpbHRlcmRDb3Vyc2VzID0gW107XG4gIHBsYW5EYXRhOiBhbnlcbiAgcmVjb21tZW5kZWRfY291cnNlX2lkID0gJydcbiAgZXhwYW5kZWRDb21wZXRlbmNpZXM6IGFueSA9IHt9O1xuICBjb21wZXRlbmNpZXNDb3VudCA9IHsgdG90YWw6IDAsIHB1YmxpY19jb3Vyc2VzOiAwLCBpZ290OiAwIH07XG4gIG9wZW5lZEZyb20hOiBzdHJpbmc7XG4gIGlzUERGRG93bmxvYWQgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udGVudCcpIGRpYWxvZ0NvbnRlbnQhOiBFbGVtZW50UmVmO1xuICAvLyBkZXNpZ25hdGlvbkRhdGEgPSBbXG4gIC8vICAge1xuICAvLyAgICAgZGVzaWduYXRpb246IFwiU2VjcmV0YXJ5IChXQ0QpXCIsXG4gIC8vICAgICB3aW5nOiBcIk1pbmlzdHJ5IExlYWRlcnNoaXBcIixcbiAgLy8gICAgIHVwZGF0ZWQ6IFwiMTAvMDkvMjAyNVwiLFxuICAvLyAgICAgcm9sZXNSZXNwb25zaWJpbGl0aWVzOiBbXG4gIC8vICAgICAgIFwiUHJvdmlkZSBvdmVyYWxsIHN1cGVydmlzaW9uIG9mIG1pbmlzdHJ5IHByb2dyYW1tZXMgYW5kIHNjaGVtZXNcIixcbiAgLy8gICAgICAgXCJFbnN1cmUgZWZmZWN0aXZlIGNvb3JkaW5hdGlvbiB3aXRoIFN0YXRlIEdvdmVybm1lbnRzIGZvciBzY2hlbWUgaW1wbGVtZW50YXRpb25cIixcbiAgLy8gICAgICAgXCJTdHJhdGVnaWMgcG9saWN5IGZvcm11bGF0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBvdmVyc2lnaHRcIixcbiAgLy8gICAgICAgXCJJbnRlci1taW5pc3RlcmlhbCBjb29yZGluYXRpb24gYW5kIGxpYWlzb25cIixcbiAgLy8gICAgICAgXCJQYXJsaWFtZW50YXJ5IGFmZmFpcnMgbWFuYWdlbWVudFwiLFxuICAvLyAgICAgICBcIlNlbmlvciBsZWFkZXJzaGlwIGdvdmVybmFuY2UgYW5kIG92ZXJzaWdodFwiLFxuICAvLyAgICAgICBcIk5hdGlvbmFsIHByb2dyYW1tZSBzdHJhdGVnaWMgZGlyZWN0aW9uXCIsXG4gIC8vICAgICAgIFwiQ2FiaW5ldCBub3RlIHdyaXRpbmcgYW5kIHBvbGljeSBicmllZnNcIlxuICAvLyAgICAgXSxcbiAgLy8gICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXM6IFtcbiAgLy8gICAgICAgXCJTdHJhdGVnaWMgTGVhZGVyc2hpcFwiLCBcIkV4ZWN1dGl2ZSBQcmVzZW5jZVwiLCBcIkluZmx1ZW5jaW5nIGFuZCBOZWdvdGlhdGlvblwiLFxuICAvLyAgICAgICBcIlJlbGF0aW9uc2hpcCBNYW5hZ2VtZW50XCIsIFwiVmVyYmFsICYgTm9uLVZlcmJhbCBGbHVlbmN5XCIsIFwiUGxhbm5pbmcgJiBQcmlvcml0aXphdGlvblwiLFxuICAvLyAgICAgICBcIkFjY291bnRhYmlsaXR5XCIsIFwiQ29uZmxpY3QgTWFuYWdlbWVudFwiXG4gIC8vICAgICBdLFxuICAvLyAgICAgZnVuY3Rpb25hbENvbXBldGVuY2llczogW1xuICAvLyAgICAgICBcIlJ1bGVzIG9mIGJ1c2luZXNzIChBb0IvVG9CKVwiLCBcIkNhYmluZXQgbm90ZSB3cml0aW5nXCIsIFwiU3VibWlzc2lvbiBvZiBicmllZnMsIHN1cHBseSBvZiBpbmZvcm1hdGlvblwiLFxuICAvLyAgICAgICBcIlBvbGljeSBkZXNpZ24vIGFtZW5kbWVudFwiLCBcIlBvbGljeSBpbXBsZW1lbnRhdGlvblwiLCBcIlBvbGljeSBtb25pdG9yaW5nICYgaW1wYWN0IGFzc2Vzc21lbnRcIixcbiAgLy8gICAgICAgXCJQcm9qZWN0IFBsYW5uaW5nXCIsIFwiUHJvamVjdCBFdmFsdWF0aW9uICYgTW9uaXRvcmluZ1wiLCBcIkNyZWF0aW9uIG9mIE0mRSBGcmFtZXdvcmtcIixcbiAgLy8gICAgICAgXCJDaXRpemVuIFBhcnRuZXJpbmcgJiBDb2xsYWJvcmF0aW9uXCIsIFwiUHVibGljIEdyaWV2YW5jZSBIYW5kbGluZ1wiXG4gIC8vICAgICBdLFxuICAvLyAgICAgZG9tYWluQ29tcGV0ZW5jaWVzOiBbXG4gIC8vICAgICAgIFwiU3RyYXRlZ2ljIFBvbGljeSBGb3JtdWxhdGlvblwiLCBcIkludGVyLW1pbmlzdGVyaWFsICYgU3RhdGUgR292ZXJubWVudCBDb29yZGluYXRpb25cIixcbiAgLy8gICAgICAgXCJTZW5pb3IgTGVhZGVyc2hpcCBHb3Zlcm5hbmNlICYgT3ZlcnNpZ2h0XCIsIFwiTGVnaXNsYXRpdmUgJiBQYXJsaWFtZW50YXJ5IEFmZmFpcnMgTWFuYWdlbWVudFwiLFxuICAvLyAgICAgICBcIk5hdGlvbmFsIFByb2dyYW1tZSBTdHJhdGVnaWMgRGlyZWN0aW9uXCJcbiAgLy8gICAgIF0sXG4gIC8vICAgICBjb21wbGV0aW9uUmF0ZTogeyBiZWhhdmlvcmFsOiA4NSwgZnVuY3Rpb25hbDogNzgsIGRvbWFpbjogOTIgfVxuICAvLyAgIH1cbiAgLy8gXTtcblxuICAvLyAvLyBDYWxjdWxhdGUgdGhlIHRvdGFscyBkeW5hbWljYWxseVxuICAvLyBwcml2YXRlIGJlaGF2aW9yYWxUb3RhbCA9IHRoaXMuZGVzaWduYXRpb25EYXRhLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLmJlaGF2aW9yYWxDb21wZXRlbmNpZXMubGVuZ3RoLCAwKTtcbiAgLy8gcHJpdmF0ZSBmdW5jdGlvbmFsVG90YWwgPSB0aGlzLmRlc2lnbmF0aW9uRGF0YS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgaXRlbS5mdW5jdGlvbmFsQ29tcGV0ZW5jaWVzLmxlbmd0aCwgMCk7XG4gIC8vIHByaXZhdGUgZG9tYWluVG90YWwgPSB0aGlzLmRlc2lnbmF0aW9uRGF0YS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgaXRlbS5kb21haW5Db21wZXRlbmNpZXMubGVuZ3RoLCAwKTtcblxuICAvLyAvLyBDYWxjdWxhdGUgdGhlIGF2ZXJhZ2VzIGR5bmFtaWNhbGx5XG4gIC8vIHByaXZhdGUgYmVoYXZpb3JhbEF2ZyA9IE1hdGgucm91bmQodGhpcy5kZXNpZ25hdGlvbkRhdGEucmVkdWNlKChhY2MsIGl0ZW0pID0+IGFjYyArIGl0ZW0uY29tcGxldGlvblJhdGUuYmVoYXZpb3JhbCwgMCkgLyB0aGlzLmRlc2lnbmF0aW9uRGF0YS5sZW5ndGgpO1xuICAvLyBwcml2YXRlIGZ1bmN0aW9uYWxBdmcgPSBNYXRoLnJvdW5kKHRoaXMuZGVzaWduYXRpb25EYXRhLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLmNvbXBsZXRpb25SYXRlLmZ1bmN0aW9uYWwsIDApIC8gdGhpcy5kZXNpZ25hdGlvbkRhdGEubGVuZ3RoKTtcbiAgLy8gcHJpdmF0ZSBkb21haW5BdmcgPSBNYXRoLnJvdW5kKHRoaXMuZGVzaWduYXRpb25EYXRhLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLmNvbXBsZXRpb25SYXRlLmRvbWFpbiwgMCkgLyB0aGlzLmRlc2lnbmF0aW9uRGF0YS5sZW5ndGgpO1xuXG4gIC8vIG92ZXJhbGxLUElzID0gW1xuICAvLyAgIHtcbiAgLy8gICAgIG5hbWU6ICdCZWhhdmlvcmFsIENvbXBldGVuY2llcycsXG4gIC8vICAgICB0b3RhbDogdGhpcy5iZWhhdmlvcmFsVG90YWwsXG4gIC8vICAgICBhdmdDb21wbGV0aW9uOiB0aGlzLmJlaGF2aW9yYWxBdmcsXG4gIC8vICAgICBjb2xvcjogJyMzQjgyRjYnLFxuICAvLyAgICAgYmdDb2xvcjogJ2JnLWJsdWUtNTAnLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgbmFtZTogJ0Z1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzJyxcbiAgLy8gICAgIHRvdGFsOiB0aGlzLmZ1bmN0aW9uYWxUb3RhbCxcbiAgLy8gICAgIGF2Z0NvbXBsZXRpb246IHRoaXMuZnVuY3Rpb25hbEF2ZyxcbiAgLy8gICAgIGNvbG9yOiAnIzEwQjk4MScsXG4gIC8vICAgICBiZ0NvbG9yOiAnYmctZ3JlZW4tNTAnLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgbmFtZTogJ0RvbWFpbiBDb21wZXRlbmNpZXMnLFxuICAvLyAgICAgdG90YWw6IHRoaXMuZG9tYWluVG90YWwsXG4gIC8vICAgICBhdmdDb21wbGV0aW9uOiB0aGlzLmRvbWFpbkF2ZyxcbiAgLy8gICAgIGNvbG9yOiAnIzhCNUNGNicsXG4gIC8vICAgICBiZ0NvbG9yOiAnYmctcHVycGxlLTUwJyxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIG5hbWU6ICdUb3RhbCBDb21wZXRlbmNpZXMnLFxuICAvLyAgICAgdG90YWw6IHRoaXMuYmVoYXZpb3JhbFRvdGFsICsgdGhpcy5mdW5jdGlvbmFsVG90YWwgKyB0aGlzLmRvbWFpblRvdGFsLFxuICAvLyAgICAgYXZnQ29tcGxldGlvbjogTWF0aC5yb3VuZCgodGhpcy5iZWhhdmlvcmFsQXZnICsgdGhpcy5mdW5jdGlvbmFsQXZnICsgdGhpcy5kb21haW5BdmcpIC8gMyksXG4gIC8vICAgICBjb2xvcjogJyM0QjU1NjMnLFxuICAvLyAgICAgYmdDb2xvcjogJ2JnLWdyYXktMjAwJyxcbiAgLy8gICB9XG4gIC8vIF07XG5cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICB9XG5cbiAgY2FuY2VsRm9ybSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXG4gIH1cblxuICBzYXZlUm9sZU1hcHBpbmcoKSB7XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zb2xlLmxvZygndGhpcy5kYXRhJywgdGhpcy5kYXRhKVxuICAgIHRoaXMuanNvbkRhdGEgPSB0aGlzLmRhdGE/LnBheWxvYWRcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmRpYWxvZ0NvbnRlbnQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmRpYWxvZ0NvbnRlbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7XG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgICB9KTtcbiAgICAgIH0sIDUwMClcblxuICAgIH1cbiAgfVxuXG4gIGdldE1hcHBpbmdEYXRhKCkge1xuICAgIGNvbnNvbGUubG9nKCdoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaicsIHRoaXMuc2hhcmVkU2VydmljZS5nZXRDYnBQbGFuc1dpdGhTZWxlY3RlZENvdXJzZXMoKSlcbiAgICBpZiAodGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuc2JPcmdUeXBlID09PSAnbWluaXN0cnknKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgICBsZXQgc3RhdGVfY2VudGVyX2lkID0gdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllclxuXG4gICAgICBpZiAodGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHM/Lmxlbmd0aCkge1xuXG4gICAgICAgIGxldCBkZXBhcnRtZW50X2lkID0gdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHNcbiAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlckFuZERlcGFydG1lbnQoc3RhdGVfY2VudGVyX2lkLCBkZXBhcnRtZW50X2lkKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcbiAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhID0gW107XG5cbiAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFNFVFMgKGZvciBvdmVyYWxsIHVuaXF1ZSBjb3VudClcbiAgICAgICAgICAgIGNvbnN0IGdsb2JhbFRvdGFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxCZWhhdmlvcmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxGdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxEb21haW5TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAvLyDinIUgTE9DQUwgVU5JUVVFIFNFVFMgKHBlciBkZXNpZ25hdGlvbilcbiAgICAgICAgICAgICAgY29uc3QgdG90YWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgY29uc3QgYmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICAgIGNvbnN0IGRvbWFpblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgICAgICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcblxuICAgICAgICAgICAgICByZXNbaV0/LmNvbXBldGVuY2llcz8uZm9yRWFjaChjID0+IHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRoZW1lID0gKGM/LnRoZW1lIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJUaGVtZSA9IChjPy5zdWJfdGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAoYz8udHlwZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoZW1lICYmICFzdWJUaGVtZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9LSR7c3ViVGhlbWV9YDtcblxuICAgICAgICAgICAgICAgIC8vIOKchSBQRVIgREVTSUdOQVRJT04gVU5JUVVFXG4gICAgICAgICAgICAgICAgaWYgKCF0b3RhbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgdG90YWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmoudG90YWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnICYmICFiZWhhdmlvcmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBiZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmJlaGF2aW9yYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uYWwnICYmICFmdW5jdGlvbmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RvbWFpbicgJiYgIWRvbWFpblNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgZG9tYWluU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmRvbWFpbisrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFRSQUNLSU5HXG4gICAgICAgICAgICAgICAgZ2xvYmFsVG90YWxTZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnKSBnbG9iYWxCZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZnVuY3Rpb25hbCcpIGdsb2JhbEZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkb21haW4nKSBnbG9iYWxEb21haW5TZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkRhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAgZGVzaWduYXRpb246IHJlc1tpXS5kZXNpZ25hdGlvbl9uYW1lLFxuICAgICAgICAgICAgICAgIHdpbmc6IHJlc1tpXS53aW5nX2RpdmlzaW9uX3NlY3Rpb24sXG4gICAgICAgICAgICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgICAgICAgcm9sZXNSZXNwb25zaWJpbGl0aWVzOiByZXNbaV0ucm9sZV9yZXNwb25zaWJpbGl0aWVzLFxuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHJlc1tpXS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iaixcbiAgICAgICAgICAgICAgICBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzOiBbLi4uYmVoYXZpb3JhbFNldF0sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25hbENvbXBldGVuY2llczogWy4uLmZ1bmN0aW9uYWxTZXRdLFxuICAgICAgICAgICAgICAgIGRvbWFpbkNvbXBldGVuY2llczogWy4uLmRvbWFpblNldF0sXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3Vyc2VzOiByZXNbaV0/LmNicF9wbGFucz8uYXQoLTEpPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBTRVQgR0xPQkFMIENPVU5UUyBBRlRFUiBMT09QXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmoudG90YWwgPSBnbG9iYWxUb3RhbFNldC5zaXplO1xuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmJlaGF2aW9yYWwgPSBnbG9iYWxCZWhhdmlvcmFsU2V0LnNpemU7XG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZnVuY3Rpb25hbCA9IGdsb2JhbEZ1bmN0aW9uYWxTZXQuc2l6ZTtcbiAgICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5kb21haW4gPSBnbG9iYWxEb21haW5TZXQuc2l6ZTtcblxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKVxuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy5kZXNpZ25hdGlvbkRhdGEnLCB0aGlzLmRlc2lnbmF0aW9uRGF0YSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmonLCB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmopXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGVycm9yPy5lcnJvcj8uZGV0YWlsLCAnWCcsIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlcihzdGF0ZV9jZW50ZXJfaWQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZXMnLCByZXMpXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcbiAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhID0gW107XG5cbiAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFNFVFMgKGZvciBvdmVyYWxsIHVuaXF1ZSBjb3VudClcbiAgICAgICAgICAgIGNvbnN0IGdsb2JhbFRvdGFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxCZWhhdmlvcmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxGdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxEb21haW5TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAvLyDinIUgTE9DQUwgVU5JUVVFIFNFVFMgKHBlciBkZXNpZ25hdGlvbilcbiAgICAgICAgICAgICAgY29uc3QgdG90YWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgY29uc3QgYmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICAgIGNvbnN0IGRvbWFpblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgICAgICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcblxuICAgICAgICAgICAgICByZXNbaV0/LmNvbXBldGVuY2llcz8uZm9yRWFjaChjID0+IHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRoZW1lID0gKGM/LnRoZW1lIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJUaGVtZSA9IChjPy5zdWJfdGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAoYz8udHlwZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoZW1lICYmICFzdWJUaGVtZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9LSR7c3ViVGhlbWV9YDtcblxuICAgICAgICAgICAgICAgIC8vIOKchSBQRVIgREVTSUdOQVRJT04gVU5JUVVFXG4gICAgICAgICAgICAgICAgaWYgKCF0b3RhbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgdG90YWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmoudG90YWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnICYmICFiZWhhdmlvcmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBiZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmJlaGF2aW9yYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uYWwnICYmICFmdW5jdGlvbmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RvbWFpbicgJiYgIWRvbWFpblNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgZG9tYWluU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmRvbWFpbisrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFRSQUNLSU5HXG4gICAgICAgICAgICAgICAgZ2xvYmFsVG90YWxTZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnKSBnbG9iYWxCZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZnVuY3Rpb25hbCcpIGdsb2JhbEZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkb21haW4nKSBnbG9iYWxEb21haW5TZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkRhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAgZGVzaWduYXRpb246IHJlc1tpXS5kZXNpZ25hdGlvbl9uYW1lLFxuICAgICAgICAgICAgICAgIHdpbmc6IHJlc1tpXS53aW5nX2RpdmlzaW9uX3NlY3Rpb24sXG4gICAgICAgICAgICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgICAgICAgcm9sZXNSZXNwb25zaWJpbGl0aWVzOiByZXNbaV0ucm9sZV9yZXNwb25zaWJpbGl0aWVzLFxuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHJlc1tpXS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iaixcbiAgICAgICAgICAgICAgICBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzOiBbLi4uYmVoYXZpb3JhbFNldF0sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25hbENvbXBldGVuY2llczogWy4uLmZ1bmN0aW9uYWxTZXRdLFxuICAgICAgICAgICAgICAgIGRvbWFpbkNvbXBldGVuY2llczogWy4uLmRvbWFpblNldF0sXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3Vyc2VzOiByZXNbaV0/LmNicF9wbGFucz8uYXQoLTEpPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBTRVQgR0xPQkFMIENPVU5UUyBBRlRFUiBMT09QXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmoudG90YWwgPSBnbG9iYWxUb3RhbFNldC5zaXplO1xuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmJlaGF2aW9yYWwgPSBnbG9iYWxCZWhhdmlvcmFsU2V0LnNpemU7XG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZnVuY3Rpb25hbCA9IGdsb2JhbEZ1bmN0aW9uYWxTZXQuc2l6ZTtcbiAgICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5kb21haW4gPSBnbG9iYWxEb21haW5TZXQuc2l6ZTtcblxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKVxuICAgICAgICAgICAgfSwgMTAwMCk7XG5cbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihlcnJvcj8uZXJyb3I/LmRldGFpbCwgJ1gnLCB7XG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cblxuXG4gICAgfVxuICAgIGlmICh0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5zYk9yZ1R5cGUgPT09ICdzdGF0ZScpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaicsIHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqKVxuICAgICAgbGV0IHN0YXRlX2NlbnRlcl9pZCA9IHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXJcbiAgICAgIGxldCBkZXBhcnRtZW50X2lkID0gdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHNcbiAgICAgIC8vIHRoaXMuc2hhcmVkU2VydmljZS5nZXRSb2xlTWFwcGluZ0J5U3RhdGVDZW50ZXJBbmREZXBhcnRtZW50KHN0YXRlX2NlbnRlcl9pZCwgZGVwYXJ0bWVudF9pZCkuc3Vic2NyaWJlKChyZXMpPT57XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCdyZXMnLCByZXMpXG4gICAgICAvLyAgIGxldCBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzID1bXVxuICAgICAgLy8gICBsZXQgZnVuY3Rpb25hbENvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgbGV0IGRvbWFpbkNvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgZm9yKGxldCBpPTA7IGk8cmVzLmxlbmd0aDtpKyspIHtcbiAgICAgIC8vICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXMgPSBbXVxuICAgICAgLy8gICAgZnVuY3Rpb25hbENvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgIGRvbWFpbkNvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7dG90YWw6MCwgYmVoYXZpb3JhbDowLCBmdW5jdGlvbmFsOjAsIGRvbWFpbjowfVxuICAgICAgLy8gICByZXNbaV0uY29tcGV0ZW5jaWVzLmZvckVhY2goYyA9PiB7XG4gICAgICAvLyAgICBjb21wZXRlbmNpZXNPYmoudG90YWwrKztcbiAgICAgIC8vICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai50b3RhbCsrXG4gICAgICAvLyAgICAgaWYgKGMudHlwZS50b0xvd2VyQ2FzZSgpID09PSAnYmVoYXZpb3JhbCcpIHsgXG5cbiAgICAgIC8vICAgICAgYmVoYXZpb3JhbENvbXBldGVuY2llcy5wdXNoKGAke2MudGhlbWV9IC0gJHtjLnN1Yl90aGVtZX1gKVxuICAgICAgLy8gICAgICBjb21wZXRlbmNpZXNPYmouYmVoYXZpb3JhbCsrO1xuICAgICAgLy8gICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouYmVoYXZpb3JhbCsrXG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICAgIGlmIChjLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ2Z1bmN0aW9uYWwnKSB7XG4gICAgICAvLyAgICAgIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXMucHVzaChgJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YClcbiAgICAgIC8vICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgIC8vICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmZ1bmN0aW9uYWwrK1xuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgICBpZiAoYy50eXBlLnRvTG93ZXJDYXNlKCkgPT09ICdkb21haW4nKSB7IFxuICAgICAgLy8gICAgICBkb21haW5Db21wZXRlbmNpZXMucHVzaChgJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YClcbiAgICAgIC8vICAgICAgY29tcGV0ZW5jaWVzT2JqLmRvbWFpbisrO1xuICAgICAgLy8gICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZG9tYWluKytcblxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgfSk7XG4gICAgICAvLyAgICBsZXQgb2JqOmFueSA9ICB7XG4gICAgICAvLyAgICAgIGRlc2lnbmF0aW9uOiByZXNbaV0uZGVzaWduYXRpb25fbmFtZSxcbiAgICAgIC8vICAgICAgd2luZzogcmVzW2ldLndpbmdfZGl2aXNpb25fc2VjdGlvbixcbiAgICAgIC8vICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAvLyAgICAgIHJvbGVzUmVzcG9uc2liaWxpdGllczogcmVzW2ldLnJvbGVfcmVzcG9uc2liaWxpdGllcyxcbiAgICAgIC8vICAgICAgYWN0aXZpdGllczpyZXNbaV0uYWN0aXZpdGllcyxcbiAgICAgIC8vICAgICAgY29tcGV0ZW5jaWVzT2JqOiBjb21wZXRlbmNpZXNPYmosXG4gICAgICAvLyAgICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXM6IGJlaGF2aW9yYWxDb21wZXRlbmNpZXMsXG4gICAgICAvLyAgICAgIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXM6IGZ1bmN0aW9uYWxDb21wZXRlbmNpZXMsXG4gICAgICAvLyAgICAgIGRvbWFpbkNvbXBldGVuY2llczogZG9tYWluQ29tcGV0ZW5jaWVzXG4gICAgICAvLyAgICAgIC8vIGJlaGF2aW9yYWxDb21wZXRlbmNpZXM6IFtcbiAgICAgIC8vICAgICAgLy8gICBcIlN0cmF0ZWdpYyBMZWFkZXJzaGlwXCIsIFwiRXhlY3V0aXZlIFByZXNlbmNlXCIsIFwiSW5mbHVlbmNpbmcgYW5kIE5lZ290aWF0aW9uXCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJSZWxhdGlvbnNoaXAgTWFuYWdlbWVudFwiLCBcIlZlcmJhbCAmIE5vbi1WZXJiYWwgRmx1ZW5jeVwiLCBcIlBsYW5uaW5nICYgUHJpb3JpdGl6YXRpb25cIixcbiAgICAgIC8vICAgICAgLy8gICBcIkFjY291bnRhYmlsaXR5XCIsIFwiQ29uZmxpY3QgTWFuYWdlbWVudFwiXG4gICAgICAvLyAgICAgIC8vIF0sXG4gICAgICAvLyAgICAgIC8vIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXM6IFtcbiAgICAgIC8vICAgICAgLy8gICBcIlJ1bGVzIG9mIGJ1c2luZXNzIChBb0IvVG9CKVwiLCBcIkNhYmluZXQgbm90ZSB3cml0aW5nXCIsIFwiU3VibWlzc2lvbiBvZiBicmllZnMsIHN1cHBseSBvZiBpbmZvcm1hdGlvblwiLFxuICAgICAgLy8gICAgICAvLyAgIFwiUG9saWN5IGRlc2lnbi8gYW1lbmRtZW50XCIsIFwiUG9saWN5IGltcGxlbWVudGF0aW9uXCIsIFwiUG9saWN5IG1vbml0b3JpbmcgJiBpbXBhY3QgYXNzZXNzbWVudFwiLFxuICAgICAgLy8gICAgICAvLyAgIFwiUHJvamVjdCBQbGFubmluZ1wiLCBcIlByb2plY3QgRXZhbHVhdGlvbiAmIE1vbml0b3JpbmdcIiwgXCJDcmVhdGlvbiBvZiBNJkUgRnJhbWV3b3JrXCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJDaXRpemVuIFBhcnRuZXJpbmcgJiBDb2xsYWJvcmF0aW9uXCIsIFwiUHVibGljIEdyaWV2YW5jZSBIYW5kbGluZ1wiXG4gICAgICAvLyAgICAgIC8vIF0sXG4gICAgICAvLyAgICAgIC8vIGRvbWFpbkNvbXBldGVuY2llczogW1xuICAgICAgLy8gICAgICAvLyAgIFwiU3RyYXRlZ2ljIFBvbGljeSBGb3JtdWxhdGlvblwiLCBcIkludGVyLW1pbmlzdGVyaWFsICYgU3RhdGUgR292ZXJubWVudCBDb29yZGluYXRpb25cIixcbiAgICAgIC8vICAgICAgLy8gICBcIlNlbmlvciBMZWFkZXJzaGlwIEdvdmVybmFuY2UgJiBPdmVyc2lnaHRcIiwgXCJMZWdpc2xhdGl2ZSAmIFBhcmxpYW1lbnRhcnkgQWZmYWlycyBNYW5hZ2VtZW50XCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJOYXRpb25hbCBQcm9ncmFtbWUgU3RyYXRlZ2ljIERpcmVjdGlvblwiXG4gICAgICAvLyAgICAgIC8vIF0sXG4gICAgICAvLyAgICAgIC8vIGNvbXBsZXRpb25SYXRlOiB7IGJlaGF2aW9yYWw6IDg1LCBmdW5jdGlvbmFsOiA3OCwgZG9tYWluOiA5MiB9XG4gICAgICAvLyAgICB9XG5cblxuICAgICAgLy8gICB0aGlzLmRlc2lnbmF0aW9uRGF0YS5wdXNoKG9iailcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAvLyAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gICAgdGhpcy5zY3JvbGxUb1RvcCgpXG4gICAgICAvLyAgIH0sIDEwMDApO1xuICAgICAgLy8gICBjb25zb2xlLmxvZygndGhpcy5kZXNpZ25hdGlvbkRhdGEnLCB0aGlzLmRlc2lnbmF0aW9uRGF0YSlcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3RoaXMudG90YWxDb21wZXRlbmNpZU9iaicsIHRoaXMudG90YWxDb21wZXRlbmNpZU9iaiApXG5cbiAgICAgIC8vICB9KVxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlckFuZERlcGFydG1lbnQoc3RhdGVfY2VudGVyX2lkLCBkZXBhcnRtZW50X2lkKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICBjb25zb2xlLmxvZygncmVzJywgcmVzKVxuICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iaiA9IHsgdG90YWw6IDAsIGJlaGF2aW9yYWw6IDAsIGZ1bmN0aW9uYWw6IDAsIGRvbWFpbjogMCB9O1xuICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhID0gW107XG5cbiAgICAgICAgICAvLyDinIUgR0xPQkFMIFVOSVFVRSBTRVRTIChmb3Igb3ZlcmFsbCB1bmlxdWUgY291bnQpXG4gICAgICAgICAgY29uc3QgZ2xvYmFsVG90YWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICBjb25zdCBnbG9iYWxCZWhhdmlvcmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsRnVuY3Rpb25hbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgIGNvbnN0IGdsb2JhbERvbWFpblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgLy8g4pyFIExPQ0FMIFVOSVFVRSBTRVRTIChwZXIgZGVzaWduYXRpb24pXG4gICAgICAgICAgICBjb25zdCB0b3RhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgYmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25hbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZG9tYWluU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgICAgICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcblxuICAgICAgICAgICAgcmVzW2ldPy5jb21wZXRlbmNpZXM/LmZvckVhY2goYyA9PiB7XG5cbiAgICAgICAgICAgICAgY29uc3QgdGhlbWUgPSAoYz8udGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBjb25zdCBzdWJUaGVtZSA9IChjPy5zdWJfdGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBjb25zdCB0eXBlID0gKGM/LnR5cGUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAgIGlmICghdGhlbWUgJiYgIXN1YlRoZW1lKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9LSR7c3ViVGhlbWV9YDtcblxuICAgICAgICAgICAgICAvLyDinIUgUEVSIERFU0lHTkFUSU9OIFVOSVFVRVxuICAgICAgICAgICAgICBpZiAoIXRvdGFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgdG90YWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLnRvdGFsKys7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnICYmICFiZWhhdmlvcmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgYmVoYXZpb3JhbFNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmouYmVoYXZpb3JhbCsrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdmdW5jdGlvbmFsJyAmJiAhZnVuY3Rpb25hbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZG9tYWluJyAmJiAhZG9tYWluU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgZG9tYWluU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai5kb21haW4rKztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFRSQUNLSU5HXG4gICAgICAgICAgICAgIGdsb2JhbFRvdGFsU2V0LmFkZChrZXkpO1xuXG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnYmVoYXZpb3JhbCcpIGdsb2JhbEJlaGF2aW9yYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZnVuY3Rpb25hbCcpIGdsb2JhbEZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZG9tYWluJykgZ2xvYmFsRG9tYWluU2V0LmFkZChrZXkpO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkRhdGEucHVzaCh7XG4gICAgICAgICAgICAgIGRlc2lnbmF0aW9uOiByZXNbaV0uZGVzaWduYXRpb25fbmFtZSxcbiAgICAgICAgICAgICAgd2luZzogcmVzW2ldLndpbmdfZGl2aXNpb25fc2VjdGlvbixcbiAgICAgICAgICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgICAgIHJvbGVzUmVzcG9uc2liaWxpdGllczogcmVzW2ldLnJvbGVfcmVzcG9uc2liaWxpdGllcyxcbiAgICAgICAgICAgICAgYWN0aXZpdGllczogcmVzW2ldLmFjdGl2aXRpZXMsXG4gICAgICAgICAgICAgIGNvbXBldGVuY2llc09iaixcbiAgICAgICAgICAgICAgYmVoYXZpb3JhbENvbXBldGVuY2llczogWy4uLmJlaGF2aW9yYWxTZXRdLFxuICAgICAgICAgICAgICBmdW5jdGlvbmFsQ29tcGV0ZW5jaWVzOiBbLi4uZnVuY3Rpb25hbFNldF0sXG4gICAgICAgICAgICAgIGRvbWFpbkNvbXBldGVuY2llczogWy4uLmRvbWFpblNldF0sXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ291cnNlczogcmVzW2ldPy5jYnBfcGxhbnM/LmF0KC0xKT8uc2VsZWN0ZWRfY291cnNlcyB8fCBbXVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyDinIUgU0VUIEdMT0JBTCBDT1VOVFMgQUZURVIgTE9PUFxuICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai50b3RhbCA9IGdsb2JhbFRvdGFsU2V0LnNpemU7XG4gICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmJlaGF2aW9yYWwgPSBnbG9iYWxCZWhhdmlvcmFsU2V0LnNpemU7XG4gICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmZ1bmN0aW9uYWwgPSBnbG9iYWxGdW5jdGlvbmFsU2V0LnNpemU7XG4gICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmRvbWFpbiA9IGdsb2JhbERvbWFpblNldC5zaXplO1xuXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG5cbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKClcbiAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy5kZXNpZ25hdGlvbkRhdGEnLCB0aGlzLmRlc2lnbmF0aW9uRGF0YSlcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy50b3RhbENvbXBldGVuY2llT2JqJywgdGhpcy50b3RhbENvbXBldGVuY2llT2JqKVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZXJyb3I/LmVycm9yPy5kZXRhaWwsICdYJywge1xuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICB9XG4gIGdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlOiBzdHJpbmcsIGNvdXJzZTogYW55KTogYW55W10ge1xuICAgIGlmICghY291cnNlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IGNvbXBldGVuY2llczogYW55W10gPSBbXTtcblxuICAgIC8vIEFJIFJlY29tbWVuZGVkIC8gUHVibGljIC8gVXNlciBBZGRlZFxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvdXJzZS5jb21wZXRlbmNpZXMpKSB7XG4gICAgICBjb21wZXRlbmNpZXMgPSBjb3Vyc2UuY29tcGV0ZW5jaWVzO1xuICAgIH1cbiAgICAvLyBNYW51YWxseSBTdWdnZXN0ZWQgLSBpR09UICh2NilcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvdXJzZS5jb21wZXRlbmNpZXNfdjYpKSB7XG4gICAgICBjb21wZXRlbmNpZXMgPSBjb3Vyc2UuY29tcGV0ZW5jaWVzX3Y2O1xuICAgIH1cblxuICAgIGlmICghY29tcGV0ZW5jaWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRUeXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcblxuICAgIHJldHVybiBjb21wZXRlbmNpZXMuZmlsdGVyKGMgPT4ge1xuICAgICAgaWYgKCFjPy5jb21wZXRlbmN5QXJlYU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhcmVhID0gYy5jb21wZXRlbmN5QXJlYU5hbWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cbiAgICAgIC8vIGhhbmRsZSBiZWhhdmlvdXJhbCAvIGJlaGF2aW9yYWxcbiAgICAgIGlmIChub3JtYWxpemVkVHlwZSA9PT0gJ2JlaGF2aW91cmFsJyB8fCBub3JtYWxpemVkVHlwZSA9PT0gJ2JlaGF2aW9yYWwnKSB7XG4gICAgICAgIHJldHVybiBhcmVhID09PSAnYmVoYXZpb3VyYWwnIHx8IGFyZWEgPT09ICdiZWhhdmlvcmFsJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFyZWEgPT09IG5vcm1hbGl6ZWRUeXBlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGlzcGxheWVkQ29tcGV0ZW5jaWVzKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGFueVtdIHtcbiAgICBjb25zdCBjb21wZXRlbmNpZXMgPSB0aGlzLmdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlLCBpbmRleCk7XG4gICAgY29uc3Qga2V5ID0gYCR7aW5kZXh9LSR7dHlwZX1gO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRDb21wZXRlbmNpZXNba2V5XSkge1xuICAgICAgcmV0dXJuIGNvbXBldGVuY2llcztcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGV0ZW5jaWVzLnNsaWNlKDAsIDIpO1xuICB9XG5cbiAgdG9nZ2xlQ29tcGV0ZW5jaWVzKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IGAke2luZGV4fS0ke3R5cGV9YDtcbiAgICB0aGlzLmV4cGFuZGVkQ29tcGV0ZW5jaWVzW2tleV0gPSAhdGhpcy5leHBhbmRlZENvbXBldGVuY2llc1trZXldO1xuICB9XG5cbiAgaXNFeHBhbmRlZCh0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXkgPSBgJHtpbmRleH0tJHt0eXBlfWA7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDb21wZXRlbmNpZXNba2V5XSB8fCBmYWxzZTtcbiAgfVxuXG4gIGhhc01vcmVUaGFuVHdvKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlLCBpbmRleCkubGVuZ3RoID4gMjtcbiAgfVxuICBnZXRSZW1haW5pbmdDb3VudCh0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsQ291bnQgPSB0aGlzLmdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlLCBpbmRleCkubGVuZ3RoO1xuICAgIHJldHVybiB0b3RhbENvdW50IC0gMjtcbiAgfVxuICB1cGRhdGVDb21wZXRlbmN5Q291bnRzKCkge1xuICAgIC8vIGNvbnN0IGNvbXBzID0gdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZTtcbiAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50ID0geyB0b3RhbDogMCwgcHVibGljX2NvdXJzZXM6IDAsIGlnb3Q6IDAgfTtcbiAgICB0aGlzLmZpbHRlcmRDb3Vyc2VzLmZvckVhY2goYyA9PiB7XG4gICAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50LnRvdGFsKys7XG4gICAgICBpZiAoYy5pc19wdWJsaWMpIHRoaXMuY29tcGV0ZW5jaWVzQ291bnQucHVibGljX2NvdXJzZXMrKztcbiAgICAgIGlmICghYy5pc19wdWJsaWMpIHRoaXMuY29tcGV0ZW5jaWVzQ291bnQuaWdvdCsrO1xuICAgIH0pO1xuICB9XG5cbiAgY29uZmlybURlbGV0ZUNvdXJzZShpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCByb2xlTWFwcGluZ0lkID0gdGhpcy5yZWNvbW1lbmRlZF9jb3Vyc2VfaWQ7XG4gICAgY29uc3QgY291cnNlSWRlbnRpZmllciA9XG4gICAgICBpdGVtPy5jb3Vyc2VfaWRlbnRpZmllciB8fCBpdGVtPy5pZCB8fCBpdGVtPy5pZGVudGlmaWVyO1xuXG4gICAgaWYgKCFyb2xlTWFwcGluZ0lkIHx8ICFjb3Vyc2VJZGVudGlmaWVyKSB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1VuYWJsZSB0byBkZWxldGUgY291cnNlJywgJ1gnLCB7XG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLnNoYXJlZFNlcnZpY2VcbiAgICAgIC5kZWxldGVSZWNvbW1lbmRlZENvdXJzZShyb2xlTWFwcGluZ0lkLCBjb3Vyc2VJZGVudGlmaWVyKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBSZW1vdmUgZnJvbSBVSVxuICAgICAgICAgIHRoaXMuZmlsdGVyZENvdXJzZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSBjb3VudHNcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBldGVuY3lDb3VudHMoKTtcblxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdDb3Vyc2UgZGVsZXRlZCBzdWNjZXNzZnVsbHknLCAnWCcsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1zdWNjZXNzJ11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFxuICAgICAgICAgICAgZXJyb3I/LmVycm9yPy5kZXRhaWwgfHwgJ0ZhaWxlZCB0byBkZWxldGUgY291cnNlJyxcbiAgICAgICAgICAgICdYJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlQ2FyZChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zb2xlLmxvZyhcIml0ZW0sIGluZGV4XCIsIGl0ZW0sIGluZGV4KVxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlUm9sZU1hcHBpbmdQb3B1cENvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc2MDBweCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHBsYW5JZDogdGhpcy5wbGFuRGF0YT8uaWQsICAgLy8gcm9sZSBtYXBwaW5nIGlkXG4gICAgICAgIGNvdXJzZTogaXRlbSwgICAgICAgICAgICAgICAgLy8gY291cnNlIG9iamVjdFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGZyb206ICd2aWV3Q291cnNlJyAgICAgICAgICAgICAgICAgLy8gaW5kZXggZm9yIFVJIHJlbW92YWxcbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiAndmlldy1jYnAtcGxhbi1wb3B1cCcsXG4gICAgICBtaW5IZWlnaHQ6ICczMDBweCcsXG4gICAgICBtYXhIZWlnaHQ6ICc5MHZoJyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0ID09PSAnc2F2ZWQnKSB7XG4gICAgICAgIHRoaXMuY29uZmlybURlbGV0ZUNvdXJzZShpdGVtLCBpbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG5cbiAgICAvLyBpZiAodGhpcy5wZGZDb250ZW50ICYmIHRoaXMucGRmQ29udGVudC5uYXRpdmVFbGVtZW50ICYmIHRoaXMucGRmQ29udGVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gICB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAvLyB9XG4gICAgLy8gY29uc3QgZGlhbG9nQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWF0LWRpYWxvZy1jb250YWluZXInKTtcbiAgICAvLyBpZiAoZGlhbG9nQ29udGFpbmVyKSB7XG4gICAgLy8gICBkaWFsb2dDb250YWluZXIuc2Nyb2xsVG9wID0gMDtcbiAgICAvLyB9XG4gIH1cblxuICBkb3dubG9hZFBERigpIHtcbiAgICB0aGlzLnBkZlRyaWdnZXIgPSB0cnVlXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAvLyAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgIC8vIC8vIFdhaXQgZm9yIGltYWdlcyB0byBsb2FkXG4gICAgLy8gY29uc3QgaW1hZ2VzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbWcnKTtcbiAgICAvLyBjb25zdCBwcm9taXNlcyA9IEFycmF5LmZyb20oaW1hZ2VzKS5tYXAoKGltZzogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xuICAgIC8vICAgaWYgKGltZy5jb21wbGV0ZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIC8vICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gaW1nLm9ubG9hZCA9IHJlc29sdmUpO1xuICAgIC8vIH0pO1xuXG4gICAgLy8gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgIC8vICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAvLyAgICAgbWFyZ2luOiAwLjUsXG4gICAgLy8gICAgIGZpbGVuYW1lOiAnRmluYWwgQ0JQIFBsYW4ucGRmJyxcbiAgICAvLyAgICAgaW1hZ2U6IHsgdHlwZTogJ2pwZWcnLCBxdWFsaXR5OiAwLjk4IH0sXG4gICAgLy8gICAgIGh0bWwyY2FudmFzOiB7XG4gICAgLy8gICAgICAgc2NhbGU6IDIsXG4gICAgLy8gICAgICAgdXNlQ09SUzogdHJ1ZSxcbiAgICAvLyAgICAgICBzY3JvbGxZOiAwLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgICBqc1BERjoge1xuICAgIC8vICAgICAgIHVuaXQ6ICdpbicsXG4gICAgLy8gICAgICAgZm9ybWF0OiAnYTQnLFxuICAgIC8vICAgICAgIG9yaWVudGF0aW9uOiAncG9ydHJhaXQnXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHBhZ2VicmVhazoge1xuICAgIC8vICAgICAgIG1vZGU6IFsnY3NzJywgJ2xlZ2FjeScsICdhdm9pZC1hbGwnXVxuICAgIC8vICAgICB9XG4gICAgLy8gICB9O1xuXG4gICAgLy8gICBodG1sMnBkZigpLmZyb20oZWxlbWVudCkuc2V0KG9wdGlvbnMpLnNhdmUoKTtcbiAgICAvLyB9KTtcbiAgICAvL2NvbnN0IGVsZW1lbnQgPSB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMucGRmQ29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgIGh0bWwyY2FudmFzKGVsZW1lbnQsIHtcbiAgICAgIHNjYWxlOiAxLjI1LFxuICAgICAgdXNlQ09SUzogdHJ1ZSxcbiAgICAgIHNjcm9sbFk6IDAsXG4gICAgICBsb2dnaW5nOiB0cnVlLFxuICAgIH0pLnRoZW4oKGNhbnZhcykgPT4ge1xuICAgICAgY29uc3QgcGRmID0gbmV3IGpzUERGKCdwJywgJ21tJywgJ2E0Jyk7XG4gICAgICBjb25zdCBwZGZXaWR0aCA9IHBkZi5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRXaWR0aCgpO1xuICAgICAgY29uc3QgcGRmSGVpZ2h0ID0gcGRmLmludGVybmFsLnBhZ2VTaXplLmdldEhlaWdodCgpO1xuXG4gICAgICAvLyBNYXJnaW5zXG4gICAgICBjb25zdCBtYXJnaW5MZWZ0ID0gNTtcbiAgICAgIGNvbnN0IG1hcmdpblRvcCA9IDE1O1xuICAgICAgY29uc3QgbWFyZ2luUmlnaHQgPSA1O1xuICAgICAgY29uc3QgbWFyZ2luQm90dG9tID0gMTU7XG5cbiAgICAgIGNvbnN0IHVzYWJsZVdpZHRoID0gcGRmV2lkdGggLSBtYXJnaW5MZWZ0IC0gbWFyZ2luUmlnaHQ7XG4gICAgICBjb25zdCB1c2FibGVIZWlnaHQgPSBwZGZIZWlnaHQgLSBtYXJnaW5Ub3AgLSBtYXJnaW5Cb3R0b207XG5cbiAgICAgIGNvbnN0IGNhbnZhc1dpZHRoID0gY2FudmFzLndpZHRoO1xuICAgICAgY29uc3QgY2FudmFzSGVpZ2h0ID0gY2FudmFzLmhlaWdodDtcblxuICAgICAgY29uc3QgcmF0aW8gPSBjYW52YXNXaWR0aCAvIHVzYWJsZVdpZHRoO1xuICAgICAgY29uc3QgcGFnZUhlaWdodFB4ID0gdXNhYmxlSGVpZ2h0ICogcmF0aW87XG5cbiAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwoY2FudmFzSGVpZ2h0IC8gcGFnZUhlaWdodFB4KTtcblxuICAgICAgZm9yIChsZXQgcGFnZSA9IDA7IHBhZ2UgPCB0b3RhbFBhZ2VzOyBwYWdlKyspIHtcbiAgICAgICAgY29uc3QgY2FudmFzUGFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjYW52YXNQYWdlLndpZHRoID0gY2FudmFzV2lkdGg7XG4gICAgICAgIGNhbnZhc1BhZ2UuaGVpZ2h0ID0gTWF0aC5taW4ocGFnZUhlaWdodFB4LCBjYW52YXNIZWlnaHQgLSBwYWdlICogcGFnZUhlaWdodFB4KTtcblxuICAgICAgICBjb25zdCBjdHggPSBjYW52YXNQYWdlLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICBjdHguZmlsbFN0eWxlID0gJyNmZmZmZmYnO1xuICAgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBjYW52YXNQYWdlLndpZHRoLCBjYW52YXNQYWdlLmhlaWdodCk7XG5cbiAgICAgICAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgICAgICAgY2FudmFzLFxuICAgICAgICAgICAgMCwgcGFnZSAqIHBhZ2VIZWlnaHRQeCxcbiAgICAgICAgICAgIGNhbnZhc1dpZHRoLCBjYW52YXNQYWdlLmhlaWdodCxcbiAgICAgICAgICAgIDAsIDAsXG4gICAgICAgICAgICBjYW52YXNXaWR0aCwgY2FudmFzUGFnZS5oZWlnaHRcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW1nRGF0YSA9IGNhbnZhc1BhZ2UudG9EYXRhVVJMKCdpbWFnZS9wbmcnLCAxKTtcbiAgICAgICAgaWYgKHBhZ2UgPiAwKSBwZGYuYWRkUGFnZSgpO1xuICAgICAgICBjb25zdCBpbWdIZWlnaHRNTSA9IGNhbnZhc1BhZ2UuaGVpZ2h0IC8gcmF0aW87XG4gICAgICAgIHBkZi5hZGRJbWFnZShpbWdEYXRhLCAnUE5HJywgbWFyZ2luTGVmdCwgbWFyZ2luVG9wLCB1c2FibGVXaWR0aCwgaW1nSGVpZ2h0TU0pO1xuICAgICAgfVxuXG4gICAgICBwZGYuc2F2ZSgnRmluYWxfQ0JQLnBkZicpO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdQREYgZ2VuZXJhdGlvbiBlcnJvcjonLCBlcnJvcik7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuXG5cblxuXG5cblxuICB9XG5cbiAgZG93bmxvYWRQREZOZXcoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IG9wdCA9IHtcbiAgICAgIG1hcmdpbjogWzEwLCA1LCA1LCAxMF0sIC8vIHRvcCwgbGVmdCwgYm90dG9tLCByaWdodCBpbiBtbVxuICAgICAgZmlsZW5hbWU6ICdDQlBfUGxhbi5wZGYnLFxuICAgICAgaW1hZ2U6IHsgdHlwZTogJ2pwZWcnLCBxdWFsaXR5OiAwLjg1IH0sXG4gICAgICBodG1sMmNhbnZhczogeyBzY2FsZTogMS41LCB1c2VDT1JTOiB0cnVlLCBsb2dnaW5nOiBmYWxzZSB9LFxuICAgICAganNQREY6IHsgdW5pdDogJ21tJywgZm9ybWF0OiAnYTQnLCBvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScgfSxcbiAgICAgIHBhZ2VicmVhazogeyBtb2RlOiBbJ2F2b2lkLWFsbCcsICdjc3MnLCAnbGVnYWN5J10gfSAvLyBhdm9pZCBjdXR0aW5nIHRleHRcbiAgICB9O1xuXG4gICAgaHRtbDJwZGYoKVxuICAgICAgLnNldChvcHQpXG4gICAgICAuZnJvbShlbGVtZW50KVxuICAgICAgLnNhdmUoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAvLyBQREYgZG93bmxvYWQgZmluaXNoZWRcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIGVycm9ycyBhbmQgc3RvcCBsb2FkaW5nXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0sIDIwMDApO1xuXG5cblxuICB9XG5cblxuXG4gIGdlbmVyYXRlRXhjZWwoanNvbkFycmF5OiBhbnlbXSwgZmlsZW5hbWU6IHN0cmluZyA9IFwiZmluYWwueGxzeFwiKSB7XG4gICAgY29uc29sZS5sb2coJ2pzb25BcnJheScsIGpzb25BcnJheSlcblxuICAgIGlmICghanNvbkFycmF5IHx8IGpzb25BcnJheS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIC8vIC0tLS0tLS0tIE1BSU4gSEVBREVSIEZST00gRklSU1QgT0JKRUNUIC0tLS0tLS0tLVxuICAgIGNvbnN0IGZpcnN0T2JqID0ganNvbkFycmF5WzBdO1xuICAgIGxldCB0aXRsZSA9IGZpcnN0T2JqLnN0YXRlX2NlbnRlcl9uYW1lIHx8IFwiXCI7XG4gICAgaWYgKGZpcnN0T2JqLmRlcGFydG1lbnRfbmFtZSkgdGl0bGUgKz0gXCIgLyBcIiArIGZpcnN0T2JqLmRlcGFydG1lbnRfbmFtZTtcblxuICAgIC8vIC0tLS0tLS0tIENPTFVNTiBIRUFERVJTIC0tLS0tLS0tLVxuICAgIGNvbnN0IGhlYWRlcnMgPSBbXG4gICAgICBcIkRlc2lnbmF0aW9uXCIsXG4gICAgICBcIlJvbGUgJiBSZXNwb25zaWJpbGl0aWVzXCIsXG4gICAgICBcIkFjdGl2aXRpZXNcIixcbiAgICAgIFwiQmVoYXZpb3JhbCBDb21wZXRlbmNpZXNcIixcbiAgICAgIFwiRnVuY3Rpb25hbCBDb21wZXRlbmNpZXNcIixcbiAgICAgIFwiRG9tYWluIENvbXBldGVuY2llc1wiLFxuICAgICAgJ2NvdXJzZURldGFpbHMnXG4gICAgXTtcblxuICAgIC8vIC0tLS0tLS0tIERBVEEgUk9XUyAtLS0tLS0tLS1cbiAgICBjb25zdCBkYXRhUm93cyA9IGpzb25BcnJheS5tYXAoanNvbiA9PiB7XG4gICAgICBjb25zdCBjb3Vyc2VzID1cbiAgICAgICAganNvbj8uY2JwX3BsYW5zPy5sZW5ndGhcbiAgICAgICAgICA/IGpzb24uY2JwX3BsYW5zW2pzb24uY2JwX3BsYW5zLmxlbmd0aCAtIDFdPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdXG4gICAgICAgICAgOiBbXTtcblxuICAgICAgY29uc3QgY291cnNlRGV0YWlscyA9IGNvdXJzZXMubWFwKChjOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBjb21wZXRlbmNpZXMgPSAoYy5jb21wZXRlbmNpZXMgfHwgW10pXG4gICAgICAgICAgLm1hcCgoY2M6IGFueSkgPT5cbiAgICAgICAgICAgIGAke2NjLmNvbXBldGVuY3lBcmVhTmFtZX0g4oaSICR7Y2MuY29tcGV0ZW5jeVRoZW1lTmFtZX0g4oaSICR7Y2MuY29tcGV0ZW5jeVN1YlRoZW1lTmFtZX1gXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKFwiIHwgXCIpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgYCR7aSArIDF9LiBDb3Vyc2UgTmFtZTogJHtjLmNvdXJzZX1cXG5gICtcbiAgICAgICAgICBgICAgSWRlbnRpZmllcjogJHtjLmlkZW50aWZpZXJ9XFxuYCArXG4gICAgICAgICAgYCAgIER1cmF0aW9uIChtaW5zKTogJHtNYXRoLnJvdW5kKCtjLmR1cmF0aW9uIC8gNjApfVxcbmAgK1xuICAgICAgICAgIGAgICBSZWxldmFuY3k6ICR7Yy5yZWxldmFuY3l9JVxcbmAgK1xuICAgICAgICAgIGAgICBSYXRpb25hbGU6ICR7Yy5yYXRpb25hbGV9XFxuYCArXG4gICAgICAgICAgYCAgIE9yZ2FuaXNhdGlvbjogJHsoYy5vcmdhbmlzYXRpb24gfHwgW10pLmpvaW4oXCIsIFwiKX1cXG5gICtcbiAgICAgICAgICBgICAgQ29tcGV0ZW5jaWVzOiAke2NvbXBldGVuY2llc31gXG4gICAgICAgICk7XG4gICAgICB9KS5qb2luKFwiXFxuXFxuXCIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgXCJEZXNpZ25hdGlvblwiOiBgJHtqc29uLmRlc2lnbmF0aW9uX25hbWV9IDogV2luZy9EaXZpc2lvbiAtICR7anNvbi53aW5nX2RpdmlzaW9uX3NlY3Rpb259YCxcbiAgICAgICAgXCJSb2xlICYgUmVzcG9uc2liaWxpdGllc1wiOiAoanNvbi5yb2xlX3Jlc3BvbnNpYmlsaXRpZXMgfHwgW10pXG4gICAgICAgICAgLm1hcCgodjogc3RyaW5nLCBpOiBudW1iZXIpID0+IGAke2kgKyAxfS4gJHt2fWApLmpvaW4oXCJcXG5cXG5cIiksXG4gICAgICAgIFwiQWN0aXZpdGllc1wiOiAoanNvbi5hY3Rpdml0aWVzIHx8IFtdKVxuICAgICAgICAgIC5tYXAoKHY6IHN0cmluZywgaTogbnVtYmVyKSA9PiBgJHtpICsgMX0uICR7dn1gKS5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgICBcIkJlaGF2aW9yYWwgQ29tcGV0ZW5jaWVzXCI6IChqc29uLmNvbXBldGVuY2llcyB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChjOiBhbnkpID0+IGMudHlwZSA9PT0gXCJCZWhhdmlvcmFsXCIpXG4gICAgICAgICAgLm1hcCgoYzogYW55LCBpOiBudW1iZXIpID0+IGAke2kgKyAxfS4gJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YCkuam9pbihcIlxcblxcblwiKSxcbiAgICAgICAgXCJGdW5jdGlvbmFsIENvbXBldGVuY2llc1wiOiAoanNvbi5jb21wZXRlbmNpZXMgfHwgW10pXG4gICAgICAgICAgLmZpbHRlcigoYzogYW55KSA9PiBjLnR5cGUgPT09IFwiRnVuY3Rpb25hbFwiKVxuICAgICAgICAgIC5tYXAoKGM6IGFueSwgaTogbnVtYmVyKSA9PiBgJHtpICsgMX0uICR7Yy50aGVtZX0gLSAke2Muc3ViX3RoZW1lfWApLmpvaW4oXCJcXG5cXG5cIiksXG4gICAgICAgIFwiRG9tYWluIENvbXBldGVuY2llc1wiOiAoanNvbi5jb21wZXRlbmNpZXMgfHwgW10pXG4gICAgICAgICAgLmZpbHRlcigoYzogYW55KSA9PiBjLnR5cGUgPT09IFwiRG9tYWluXCIpXG4gICAgICAgICAgLm1hcCgoYzogYW55LCBpOiBudW1iZXIpID0+IGAke2kgKyAxfS4gJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YCkuam9pbihcIlxcblxcblwiKSxcbiAgICAgICAgXCJDb3Vyc2UgRGV0YWlsc1wiOiBjb3Vyc2VEZXRhaWxzXG4gICAgICB9O1xuICAgIH0pO1xuXG5cbiAgICAvLyAtLS0tLS0tLSBDUkVBVEUgV09SS1NIRUVUIC0tLS0tLS0tLVxuICAgIGNvbnN0IHdzID0gWExTWC51dGlscy5hb2FfdG9fc2hlZXQoW10pO1xuXG4gICAgLy8gTWFpbiBoZWFkZXIgKG1lcmdlZClcbiAgICBYTFNYLnV0aWxzLnNoZWV0X2FkZF9hb2Eod3MsIFtbdGl0bGVdXSwgeyBvcmlnaW46IFwiQTFcIiB9KTtcbiAgICB3c1snIW1lcmdlcyddID0gW3tcbiAgICAgIHM6IHsgcjogMCwgYzogMCB9LFxuICAgICAgZTogeyByOiAwLCBjOiBoZWFkZXJzLmxlbmd0aCAtIDEgfVxuICAgIH1dO1xuXG4gICAgLy8gQ29sdW1uIGhlYWRlcnMgYXQgcm93IDJcbiAgICBYTFNYLnV0aWxzLnNoZWV0X2FkZF9hb2Eod3MsIFtoZWFkZXJzXSwgeyBvcmlnaW46IFwiQTJcIiB9KTtcblxuICAgIC8vIFN0eWxlIGNvbHVtbiBoZWFkZXJzXG4gICAgaGVhZGVycy5mb3JFYWNoKChoZWFkZXIsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBjZWxsQWRkcmVzcyA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoeyByOiAxLCBjOiBpbmRleCB9KTtcbiAgICAgIGlmICh3c1tjZWxsQWRkcmVzc10pIHtcbiAgICAgICAgd3NbY2VsbEFkZHJlc3NdLnMgPSB7XG4gICAgICAgICAgZm9udDogeyBib2xkOiB0cnVlIH0sXG4gICAgICAgICAgZmlsbDogeyBwYXR0ZXJuVHlwZTogXCJzb2xpZFwiLCBmZ0NvbG9yOiB7IHJnYjogXCJGRkZGMDBcIiB9IH0sXG4gICAgICAgICAgYWxpZ25tZW50OiB7IGhvcml6b250YWw6IFwiY2VudGVyXCIsIHZlcnRpY2FsOiBcImNlbnRlclwiLCB3cmFwVGV4dDogdHJ1ZSB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBJbnNlcnQgZGF0YSByb3dzIHN0YXJ0aW5nIGZyb20gcm93IDNcbiAgICBYTFNYLnV0aWxzLnNoZWV0X2FkZF9qc29uKHdzLCBkYXRhUm93cywgeyBvcmlnaW46IFwiQTNcIiwgc2tpcEhlYWRlcjogdHJ1ZSB9KTtcblxuICAgIC8vIEF1dG8gY29sdW1uIHdpZHRocyBiYXNlZCBvbiBsb25nZXN0IGxpbmUgaW4gZWFjaCBjb2x1bW5cbiAgICBjb25zdCBjb2xXaWR0aHMgPSBoZWFkZXJzLm1hcCgoaGVhZGVyLCBpZHgpID0+IHtcbiAgICAgIGNvbnN0IG1heExlbiA9IE1hdGgubWF4KFxuICAgICAgICBoZWFkZXIubGVuZ3RoLFxuICAgICAgICAuLi5kYXRhUm93cy5tYXAocm93ID0+IChyb3dbaGVhZGVyXSB8fCBcIlwiKS5zcGxpdChcIlxcblwiKS5yZWR1Y2UoKGEsIGIpID0+IE1hdGgubWF4KGEsIGIubGVuZ3RoKSwgMCkpXG4gICAgICApO1xuICAgICAgcmV0dXJuIHsgd2NoOiBNYXRoLm1pbihNYXRoLm1heChtYXhMZW4gKyA1LCAyMCksIDgwKSB9OyAvLyBtaW4gMjAsIG1heCA4MFxuICAgIH0pO1xuICAgIHdzWychY29scyddID0gY29sV2lkdGhzO1xuXG4gICAgLy8gV3JhcCB0ZXh0IGluIGRhdGEgcm93c1xuICAgIGRhdGFSb3dzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBjb2xJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjZWxsQWRkcmVzcyA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoeyByOiByb3dJbmRleCArIDIsIGM6IGNvbEluZGV4IH0pO1xuICAgICAgICBpZiAod3NbY2VsbEFkZHJlc3NdKSB7XG4gICAgICAgICAgd3NbY2VsbEFkZHJlc3NdLnMgPSB7IGFsaWdubWVudDogeyB3cmFwVGV4dDogdHJ1ZSwgdmVydGljYWw6IFwidG9wXCIgfSB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIFN0eWxlIG1haW4gaGVhZGVyXG4gICAgaWYgKHdzW1wiQTFcIl0pIHtcbiAgICAgIHdzW1wiQTFcIl0ucyA9IHtcbiAgICAgICAgZm9udDogeyBib2xkOiB0cnVlLCBzejogMTYgfSxcbiAgICAgICAgYWxpZ25tZW50OiB7IGhvcml6b250YWw6IFwiY2VudGVyXCIsIHZlcnRpY2FsOiBcImNlbnRlclwiIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0gQ1JFQVRFIFdPUktCT09LIC0tLS0tLS0tLVxuICAgIGNvbnN0IHdiID0gWExTWC51dGlscy5ib29rX25ldygpO1xuICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQod2IsIHdzLCBcIlNoZWV0MVwiKTtcblxuICAgIC8vIEV4cG9ydCBFeGNlbFxuICAgIFhMU1gud3JpdGVGaWxlKHdiLCBmaWxlbmFtZSk7XG4gIH1cblxuXG5cblxuICBkb3dubG9hZENTVigpIHtcbiAgICBsZXQgZmlsZU5hbWUgPSAnJ1xuICAgIGlmICghdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHMpIHtcbiAgICAgIGZpbGVOYW1lID0gYENCUF9SZXBvcnRfJHt0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5pZGVudGlmaWVyfV8ke3RoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzfS54bHN4YFxuICAgIH0gZWxzZSB7XG4gICAgICBmaWxlTmFtZSA9IGBDQlBfUmVwb3J0XyR7dGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllcn0ueGxzeGBcbiAgICB9XG4gICAgdGhpcy5nZW5lcmF0ZUV4Y2VsKHRoaXMuanNvbkRhdGEsIGZpbGVOYW1lKTtcbiAgfVxuXG4gIGRvd25sb2FkUGRmRnJvbUJFKGNvbnRleHQ6IHN0cmluZykge1xuICAgIGxldCBzZWxlY3RlZExhbmd1YWdlID0gdGhpcy5maWx0ZXJGb3JtLmdldCgnbGFuZ3VhZ2UnKT8udmFsdWUgfHwgJ2VuJztcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgLy8gIHRoaXMuc2hhcmVkU2VydmljZS5kb3dubG9hZFBkZih0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5pZGVudGlmaWVyKVxuICAgIGlmICghdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHMpIHtcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5kb3dubG9hZFBkZih0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5pZGVudGlmaWVyLCBjb250ZXh0LCBzZWxlY3RlZExhbmd1YWdlKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZG93bmxvYWRQZGZGb3JEZXBhcnRtZW50KHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXIsIHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzLCBjb250ZXh0LCBzZWxlY3RlZExhbmd1YWdlKVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICB9LCA1MDAwKVxuICB9XG4gIGdldFNlbGVjdGVkQ291cnNlcyhkZXBhcnRtZW50OiBhbnkpOiBhbnlbXSB7XG4gICAgaWYgKCFkZXBhcnRtZW50Py5jYnBfcGxhbnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8vIHRha2UgbGF0ZXN0IENCUCBwbGFuIChvciBhZGp1c3QgbG9naWMgaWYgbmVlZGVkKVxuICAgIGNvbnN0IGxhdGVzdFBsYW4gPSBkZXBhcnRtZW50LmNicF9wbGFuc1tkZXBhcnRtZW50LmNicF9wbGFucy5sZW5ndGggLSAxXTtcblxuICAgIHJldHVybiBsYXRlc3RQbGFuPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCkge1xuXG4gIH1cblxuICBmaWx0ZXJMaXN0KHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IHNlYXJjaCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcblxuICAgICAgY2FzZSAnbGFuZ3VhZ2UnOlxuICAgICAgICB0aGlzLmZpbHRlcmVkTGFuZ3VhZ2VzID0gdGhpcy5sYW5ndWFnZXMuZmlsdGVyKHYgPT4gdi5sYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbn0iLCI8ZGl2IGNsYXNzPVwidmlldy1jYnAtcGxhblwiICNkaWFsb2dDb250ZW50IHN0eWxlPVwibWF4LWhlaWdodDogODB2aDsgb3ZlcmZsb3c6IGF1dG87XCI+XG4gICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+VmlldyBGaW5hbCA8c3BhbiAqbmdJZj1cIm9wZW5lZEZyb20gPT09ICdjYnAnXCI+Q0JQPC9zcGFuPjxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcGVuZWRGcm9tID09PSAnYWNicCdcIj5BQ0JQPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1zaWRlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWFuZC1idXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJsYW5ndWFnZS1zZWxlY3RcIiBzdHlsZT1cIiBoZWlnaHQ6IDM0cHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIHN0eWxlPVwiZm9udC13ZWlnaHQ6IG5vcm1hbDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXJGb3JtLmdldCgnbGFuZ3VhZ2UnKT8udmFsdWUgPyAnJyA6ICdTZWxlY3QgTGFuZ3VhZ2UnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibGFuZ3VhZ2VcIiBwYW5lbENsYXNzPVwic2VsZWN0LXNlYXJjaC1wYW5lbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJhcHBseUZpbHRlcnMoKVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggYm94IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzsgcGFkZGluZzogNXB4O3dpZHRoOiA5MiU7bWFyZ2luOiA1cHg7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJTZWFyY2ggTGFuZ3VhZ2VzXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJmaWx0ZXJMaXN0KCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUsICdsYW5ndWFnZScpXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVmFsdWVzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByIG9mIGZpbHRlcmVkTGFuZ3VhZ2VzXCIgW3ZhbHVlXT1cInI/LmNvZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcj8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tY29udGFpbmVyXCIgI3BkZkNvbnRlbnQ+XG4gICAgICAgICAgICA8aGVhZGVyIGNsYXNzPVwiYmctd2hpdGUgaGVhZGVyLWJvcmRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItZmxleCBqdXN0aWZ5LWJldHdlZW5cIiBzdHlsZT1cIndpZHRoOjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiIHN0eWxlPVwid2lkdGg6NTAlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZG9wdC1sb2dvLnBuZ1wiIGFsdD1cIkRlcGFydG1lbnQgb2YgUGVyc29ubmVsICYgVHJhaW5pbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTE1XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9DQkNfbG9nby5zdmdcIiBhbHQ9XCJDYXBhY2l0eSBCdWlsZGluZyBDb21taXNzaW9uIExvZ29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9rYXJtYXlvZ2lMb2dvLW1pbi5wbmdcIiBhbHQ9XCJLYXJtYXlvZ2kgQmhhcmF0IExvZ29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIiBzdHlsZT1cIndpZHRoOjUwJVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/LnNiT3JnVHlwZSA9PT0gJ3N0YXRlJ1wiPnt7c2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8ub3JnTmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8uc2JPcmdUeXBlID09PSAnbWluaXN0cnknXCI+e3tzaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmo/Lm1pbmlzdHJ5Py5vcmdOYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmo/LmRlcGFydG1lbnRfbmFtZVwiPi97e3NoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaj8uZGVwYXJ0bWVudF9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBDYXBhY2l0eSBCdWlsZGluZyBQbGFuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWdyYXktNjAwXCI+Q29tcHJlaGVuc2l2ZSBSb2xlLUJhc2VkIENvbXBldGVuY3kgQW5hbHlzaXM8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWluLWgtc2NyZWVuIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tc2xhdGUtNTAgdmlhLWJsdWUtNTAgdG8taW5kaWdvLTEwMFwiPlxuICAgICAgICAgICAgICAgIDwhLS0gSGVhZGVyIC0tPlxuXG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNiBweS04IG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBLUEkgRGFzaGJvYXJkIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1jb250YWluZXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItdG90YWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1mbGV4IG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTggdy04IGljb24tc21cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAydjZoNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAxM0g4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDE3SDhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgOUg4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPnt7dG90YWxDb21wZXRlbmNpZU9iaj8udG90YWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG90YWwgQ29tcGV0ZW5jaWVzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhci1maWxsXCIgc3R5bGU9XCJ3aWR0aDogNjAlO1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPlRvdGFsIENvbXBldGVuY2llczoge3t0b3RhbENvbXBldGVuY2llT2JqPy50b3RhbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0ge3tjb21wZXRlbmNpZXNDb3VudD8udG90YWx9fSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItYmVoYXZpb3JhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWZsZXggbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuNSAxN2E0IDQgMCAwIDEtNSAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDE0aC4wMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxMWguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcgMTRoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDEwaC4wMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAxOGguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgNmguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcgMThoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3IDZoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxIDEyYTkgOSAwIDAgMS05IDlhOSA5IDAgMCAxLTktOWE5IDkgMCAwIDEgOS05YTkgOSAwIDAgMSA5IDl6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPnt7dG90YWxDb21wZXRlbmNpZU9iaj8uYmVoYXZpb3JhbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5CZWhhdmlvcmFsIENvbXBldGVuY2llczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXItZmlsbC1iZWhhdmlvdXJhbFwiIHN0eWxlPVwid2lkdGg6IDYwJTtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5CZWhhdmlvcmFsIENvbXBldGVuY2llczoge3t0b3RhbENvbXBldGVuY2llT2JqPy5iZWhhdmlvcmFsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItZnVuY3Rpb25hbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWZsZXggbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiAzaDZhNCA0IDAgMCAxIDQgNHYxNGEzIDMgMCAwIDAtMy0zSDJ6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIyIDNoLTZhNCA0IDAgMCAwLTQgNHYxNGEzIDMgMCAwIDEgMy0zaDd6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPnt7dG90YWxDb21wZXRlbmNpZU9iaj8uZnVuY3Rpb25hbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5GdW5jdGlvbmFsIENvbXBldGVuY2llczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXItZmlsbC1mdW5jdGlvbmFsXCIgc3R5bGU9XCJ3aWR0aDogNjAlO1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkZ1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzOiB7e3RvdGFsQ29tcGV0ZW5jaWVPYmo/LmZ1bmN0aW9uYWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItZG9tYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZmxleCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCI2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+e3t0b3RhbENvbXBldGVuY2llT2JqPy5kb21haW59fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+RG9tYWluIENvbXBldGVuY2llczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXItZmlsbC1kb21haW5cIiBzdHlsZT1cIndpZHRoOiA2MCU7XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+RG9tYWluIENvbXBldGVuY2llczoge3t0b3RhbENvbXBldGVuY2llT2JqPy5kb21haW59fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1iLThcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMCBtYi02bmhlYWRpbmdcIj5Db21wZXRlbmN5IE92ZXJ2aWV3PC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1ncmlkXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrcGkgb2Ygb3ZlcmFsbEtQSXM7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSByb3VuZGVkLXhsICBvdXRzaWRlLWxheWVyLXRvdGFsIHAtNiBib3JkZXItbC00IGhvdmVyOnNoYWRvdy14bCB0cmFuc2l0aW9uLXNoYWRvd1wiIFtzdHlsZS5ib3JkZXItbGVmdC1jb2xvcl09XCJrcGkuY29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTQgaW5zaWRlLWxheWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCIncC0zIHJvdW5kZWQtbGcgJyArIGtwaS5iZ0NvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImtwaS5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ0JlaGF2aW9yYWwgQ29tcGV0ZW5jaWVzJ1wiIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuNSAxN2E0IDQgMCAwIDEtNSAwXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAxNGguMDFcIi8+PHBhdGggZD1cIk0xMSAxMWguMDFcIi8+PHBhdGggZD1cIk0xNyAxNGguMDFcIi8+PHBhdGggZD1cIk0xMyAxMGguMDFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDE4aC4wMVwiLz48cGF0aCBkPVwiTTEzIDZoLjAxXCIvPjxwYXRoIGQ9XCJNMTcgMThoLjAxXCIvPjxwYXRoIGQ9XCJNMTcgNmguMDFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxIDEyYTkgOSAwIDAgMS05IDlhOSA5IDAgMCAxLTktOWE5IDkgMCAwIDEgOS05YTkgOSAwIDAgMSA5IDl6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidGdW5jdGlvbmFsIENvbXBldGVuY2llcydcIiBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIgM2g2YTQgNCAwIDAgMSA0IDR2MTRhMyAzIDAgMCAwLTMtM0gyelwiLz48cGF0aCBkPVwiTTIyIDNoLTZhNCA0IDAgMCAwLTQgNHYxNGEzIDMgMCAwIDEgMy0zaDd6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidEb21haW4gQ29tcGV0ZW5jaWVzJ1wiIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIi8+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCI2XCIvPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInVG90YWwgQ29tcGV0ZW5jaWVzJ1wiIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAydjZoNlwiLz48cGF0aCBkPVwiTTE2IDEzSDhcIi8+PHBhdGggZD1cIk0xNiAxN0g4XCIvPjxwYXRoIGQ9XCJNMTAgOUg4XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3trcGkudG90YWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1ncmF5LTkwMCBmb250LXNlbWlib2xkIG1iLTIgaGVhZGluZ1wiPnt7a3BpLm5hbWV9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGwgaC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0zIHJvdW5kZWQtZnVsbCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGguJV09XCJrcGkuYXZnQ29tcGxldGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImtwaS5jb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDAgbXQtMlwiPlRvdGFsIENvbXBldGVuY2llczoge3trcGkudG90YWx9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGVzaWduYXRpb24gUmVwb3J0cyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktOCBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMCBtYi02IGhlYWRpbmdcIj5EZXRhaWxlZCBDb21wZXRlbmN5IEZyYW1ld29yayBieVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2lnbmF0aW9uPC9oMj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGVzaWduYXRpb24gb2YgZGVzaWduYXRpb25EYXRhO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSByb3VuZGVkLXhsICBvdmVyZmxvdy1oaWRkZW4gc2VjdGlvbi1zaGFkb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWluZGlnby02MDAgdG8tYmx1ZS02MDAgdGV4dC13aGl0ZSBwLTYgaGVhZGluZy13aXRoLWJnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIG1iLTIgaGVhZGluZy1iZ1wiPnt7ZGVzaWduYXRpb24uZGVzaWduYXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtaW5kaWdvLTEwMCBtYi0xXCI+V2luZy9EaXZpc2lvbjoge3tkZXNpZ25hdGlvbi53aW5nfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNCBjb21wZXRlbmN5LWNvdW50LWJ5LWRlc2lnbmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtXCI+QmVoYXZpb3JhbDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uYmVoYXZpb3JhbENvbXBldGVuY2llcy5sZW5ndGh9fSB0b3RhbDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc21cIj5GdW5jdGlvbmFsOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkZXNpZ25hdGlvbi5mdW5jdGlvbmFsQ29tcGV0ZW5jaWVzLmxlbmd0aH19IHRvdGFsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbVwiPkRvbWFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uZG9tYWluQ29tcGV0ZW5jaWVzLmxlbmd0aH19IHRvdGFsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQm9keSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNCBzZWN0aW9uLXNoYWRvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSb2xlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgbWItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSBtci0yIHRleHQtaW5kaWdvLTYwMCBpY29uLXNtXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNiA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMTIgMTRhNyA3IDAgMDAtNyA3aDE0YTcgNyAwIDAwLTctN3pcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9sZXMgJiBSZXNwb25zaWJpbGl0aWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb2xlIG9mIGRlc2lnbmF0aW9uLnJvbGVzUmVzcG9uc2liaWxpdGllczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLWdyYXktNTAgcC0yIHJvdW5kZWQgYm9yZGVyLWwtMyBib3JkZXItaW5kaWdvLTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS03MDAgbGVhZGluZy1yZWxheGVkXCI+e3tyb2xlfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2aXRpZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNiBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgbWItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSBtci0yIHRleHQtaW5kaWdvLTYwMCBpY29uLXNtXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNiA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMTIgMTRhNyA3IDAgMDAtNyA3aDE0YTcgNyAwIDAwLTctN3pcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdGllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm9sZSBvZiBkZXNpZ25hdGlvbi5hY3Rpdml0aWVzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheS01MCBwLTIgcm91bmRlZCBib3JkZXItbC0zIGJvcmRlci1pbmRpZ28tNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTcwMCBsZWFkaW5nLXJlbGF4ZWRcIj57e3JvbGV9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWJyZWFrXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBldGVuY2llcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmNpcy1ncmlkIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJlaGF2aW9yYWwgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLWJsdWUtNTAgcm91bmRlZC1sZyBwLTMgY29tcGV0ZW5jaWVzLWdyaWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtYmx1ZS04MDAgdGV4dC1iYXNlIG1iLTJcIj5CZWhhdmlvcmFsPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktMSBncmlkLWxpc3QtaXRlbSBncmlkLWxpc3QtaXRlbS1iZWhhdmlvcmFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb21wIG9mIGRlc2lnbmF0aW9uLmJlaGF2aW9yYWxDb21wZXRlbmNpZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctd2hpdGUgcC0xLjUgcm91bmRlZCB0ZXh0LXNtIHRleHQtZ3JheS03MDAgYm9yZGVyLWwtMiBib3JkZXItYmx1ZS00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbXB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiB0ZXh0LXNtIHRleHQtYmx1ZS02MDAgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uYmVoYXZpb3JhbENvbXBldGVuY2llcy5sZW5ndGh9fSB0b3RhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRnVuY3Rpb25hbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JlZW4tNTAgcm91bmRlZC1sZyBwLTMgY29tcGV0ZW5jaWVzLWdyaWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtZ3JlZW4tODAwIHRleHQtYmFzZSBtYi0yXCI+RnVuY3Rpb25hbDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTEgZ3JpZC1saXN0LWl0ZW0gZ3JpZC1saXN0LWl0ZW0tZnVuY3Rpb25hbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29tcCBvZiBkZXNpZ25hdGlvbi5mdW5jdGlvbmFsQ29tcGV0ZW5jaWVzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLXdoaXRlIHAtMS41IHJvdW5kZWQgdGV4dC1zbSB0ZXh0LWdyYXktNzAwIGJvcmRlci1sLTIgYm9yZGVyLWdyZWVuLTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tcH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIHRleHQtc20gdGV4dC1ncmVlbi02MDAgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uZnVuY3Rpb25hbENvbXBldGVuY2llcy5sZW5ndGh9fSB0b3RhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRG9tYWluIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1wdXJwbGUtNTAgcm91bmRlZC1sZyBwLTMgY29tcGV0ZW5jaWVzLWdyaWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtcHVycGxlLTgwMCB0ZXh0LWJhc2UgbWItMlwiPkRvbWFpbjwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTEgZ3JpZC1saXN0LWl0ZW0gZ3JpZC1saXN0LWl0ZW0tZG9tYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb21wIG9mIGRlc2lnbmF0aW9uLmRvbWFpbkNvbXBldGVuY2llczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy13aGl0ZSBwLTEuNSByb3VuZGVkIHRleHQtc20gdGV4dC1ncmF5LTcwMCBib3JkZXItbC0yIGJvcmRlci1wdXJwbGUtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21wfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LXB1cnBsZS02MDAgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uZG9tYWluQ29tcGV0ZW5jaWVzLmxlbmd0aH19IHRvdGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFkZGluZyBjb3Vyc2VzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNicCBtdC00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRlc2lnbmF0aW9uLnNlbGVjdGVkQ291cnNlcz8ubGVuZ3RoICYmIG9wZW5lZEZyb20gPT09ICdhY2JwJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIG1iLTMgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTUgbXItMiB0ZXh0LWluZGlnby02MDAgaWNvbi1zbVwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYgN2E0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6TTEyIDE0YTcgNyAwIDAwLTcgN2gxNGE3IDcgMCAwMC03LTd6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdXJzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3Vyc2UtbGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS1saXN0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGVzaWduYXRpb24uc2VsZWN0ZWRDb3Vyc2VzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cnNlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2VkLWNvdXJzZS1jb250YWluZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS1waWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS1waWxsLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9jb3Vyc2Uuc3ZnXCI+PC9zcGFuPiZuYnNwOzxzcGFuPkNvdXJzZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5yYXRpb25hbGUgJiYgIWl0ZW0/LmlzX3B1YmxpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLWdyZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLWdyZWVuLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BSSBSZWNvbW1lbmRlZCAtIGlHT1QgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlIG10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5wbGF0Zm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgW2hyZWZdPVwiaXRlbT8ucHVibGljX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIj48c3Bhbj5QbGF0Zm9ybSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LnBsYXRmb3JtfX08L3NwYW4+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZSBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8ub3JnYW5pc2F0aW9uPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UHJvdmlkZXIgLSB7e2l0ZW0/Lm9yZ2FuaXNhdGlvblswXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5yYXRpb25hbGUgJiYgaXRlbT8uaXNfcHVibGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtcHVibGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLXB1YmxpYy10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QUkgUmVjb21tZW5kZWQgLSBQdWJsaWMgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlIG10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5wbGF0Zm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgW2hyZWZdPVwiaXRlbT8ucHVibGljX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIj48c3Bhbj5QbGF0Zm9ybSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LnBsYXRmb3JtfX08L3NwYW4+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZSBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8ub3JnYW5pc2F0aW9uPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UHJvdmlkZXIgLSB7e2l0ZW0/Lm9yZ2FuaXNhdGlvblswXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXRlbT8ucmF0aW9uYWxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtZ3JheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1ncmF5LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5NYW51YWxseSBTdWdnZXN0ZWQgLSBpR09UIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZSBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8ucGxhdGZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIFtocmVmXT1cIml0ZW0/LnB1YmxpY19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+PHNwYW4+UGxhdGZvcm0gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5wbGF0Zm9ybX19PC9zcGFuPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UgbXQtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/Lm9yZ2FuaXNhdGlvbj8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlByb3ZpZGVyIC0ge3tpdGVtPy5vcmdhbmlzYXRpb25bMF19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS10aXRsZSBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/LmNvdXJzZVwiPnt7aXRlbT8uY291cnNlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/Lm5hbWVcIj57e2l0ZW0/Lm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cnNlLWRlc2MgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1BERkRvd25sb2FkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtPy5yYXRpb25hbGV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRDb21wZXRlbmNpZXNCeVR5cGUoJ0JlaGF2aW91cmFsJyxpdGVtKT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktc3ViLWhlYWRpbmdcIj5CZWhhdmlvcmFsIENvbXBldGVuY2llczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNvbXBldGVuY3ktbGlzdCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImJlaGF2aW91cmFsLXBpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbXAgb2YgZ2V0RGlzcGxheWVkQ29tcGV0ZW5jaWVzKCdCZWhhdmlvdXJhbCcsaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGV0ZW5jeS10ZXh0XCI+IHt7IGNvbXAuY29tcGV0ZW5jeVRoZW1lTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuY29tcGV0ZW5jeVN1YlRoZW1lTmFtZSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImhhc01vcmVUaGFuVHdvKCdCZWhhdmlvdXJhbCcsaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaG93LW1vcmUtY29tcGV0ZW5jeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaG93LW1vcmUtbGluayBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbXBldGVuY2llcygnQmVoYXZpb3VyYWwnLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNFeHBhbmRlZCgnQmVoYXZpb3VyYWwnLGl0ZW0pID8gJ1Nob3cgTGVzcycgOiAnKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlbWFpbmluZ0NvdW50KCdCZWhhdmlvdXJhbCcsaXRlbSkgKyAnIE1vcmUnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0Q29tcGV0ZW5jaWVzQnlUeXBlKCdGdW5jdGlvbmFsJyxpdGVtKT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktc3ViLWhlYWRpbmdcIj5GdW5jdGlvbmFsIENvbXBldGVuY2llczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNvbXBldGVuY3ktbGlzdCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImZ1bmN0aW9uYWwtcGlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tcCBvZiBnZXREaXNwbGF5ZWRDb21wZXRlbmNpZXMoJ0Z1bmN0aW9uYWwnLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBldGVuY3ktdGV4dFwiPiB7eyBjb21wLmNvbXBldGVuY3lUaGVtZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmNvbXBldGVuY3lTdWJUaGVtZU5hbWUgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJoYXNNb3JlVGhhblR3bygnRnVuY3Rpb25hbCcsaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaG93LW1vcmUtY29tcGV0ZW5jeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaG93LW1vcmUtbGluayBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbXBldGVuY2llcygnRnVuY3Rpb25hbCcsaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpc0V4cGFuZGVkKCdGdW5jdGlvbmFsJyxpdGVtKSA/ICdTaG93IExlc3MnIDogJysnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZW1haW5pbmdDb3VudCgnRnVuY3Rpb25hbCcsaXRlbSkgKyAnIE1vcmUnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cImdldENvbXBldGVuY2llc0J5VHlwZSgnRG9tYWluJyxpdGVtKT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktc3ViLWhlYWRpbmdcIj5Eb21haW4gQ29tcGV0ZW5jaWVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiY29tcGV0ZW5jeS1saXN0IG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZG9tYWluLXBpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbXAgb2YgZ2V0RGlzcGxheWVkQ29tcGV0ZW5jaWVzKCdEb21haW4nLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBldGVuY3ktdGV4dFwiPiB7eyBjb21wLmNvbXBldGVuY3lUaGVtZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmNvbXBldGVuY3lTdWJUaGVtZU5hbWUgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJoYXNNb3JlVGhhblR3bygnRG9tYWluJyxpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNob3ctbW9yZS1jb21wZXRlbmN5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNob3ctbW9yZS1saW5rIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29tcGV0ZW5jaWVzKCdEb21haW4nLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNFeHBhbmRlZCgnRG9tYWluJyxpdGVtKSA/ICdTaG93IExlc3MnIDogJysnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZW1haW5pbmdDb3VudCgnRG9tYWluJyxpdGVtKSArICcgTW9yZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxldmFuY3ktY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxldmFuY3lcIj5SZWxldmFuY3k8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhc2hcIj4tPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJjZW50YWdlXCIgKm5nSWY9XCJpdGVtPy5yZWxldmFuY3lcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8ucmVsZXZhbmN5fX0lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJjZW50YWdlXCIgKm5nSWY9XCIhaXRlbT8ucmVsZXZhbmN5XCI+Ti9BPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBhZGRpbmcgY291cnNlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciAtLT5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Zm9vdGVyIGNsYXNzPVwib3JnLWZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXgtdy03eGwgbXgtYXV0byBweC02IGZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00IG1iLTQgbXQtNCBtZDptYi0wIGZvb3Rlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItbG9nby1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9rYXJtYXlvZ2lMb2dvLW1pbi5wbmdcIiBhbHQ9XCJLYXJtYXlvZ2kgQmhhcmF0IExvZ29cIiBjbGFzcz1cImgtMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OjIwcHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2thcm1heW9naWJoYXJhdC5nb3YuaW5cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdHJhbnNpdGlvbi1jb2xvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FybWF5b2dpYmhhcmF0Lmdvdi5pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtY2VudGVyIG1kOnRleHQtcmlnaHQgbWItNFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+JmNvcHk7IDIwMjUgQWxsIFJpZ2h0cyBSZXNlcnZlZC48L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1hY3RpdmVcIiB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJEb3dubG9hZCBhcyBFeGNlbFwiIChjbGljayk9XCJkb3dubG9hZENTVigpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiRG93bmxvYWQgYXMgUERGXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkUGRmRnJvbUJFKG9wZW5lZEZyb20pXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiQ2FuY2VsXCIgKGNsaWNrKT1cImNhbmNlbEZvcm0oKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktbG9hZGVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8L2Rpdj4iXX0=