@sunbird-cb/cbp-ai 0.1.19 → 0.1.21

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.
@@ -84,8 +84,8 @@ export class EditCbpPlanComponent {
84
84
  if (this.portalData && this.portalData?.parentAppData && this.portalData?.parentAppData?.fromPortal &&
85
85
  this.portalData?.parentAppData?.fromPortal === 'mdo') {
86
86
  this.requestData = this.portalData?.parentAppData.requestRowData;
87
- this.sharedService.baseUrl = this.portalData?.parentAppData?.configDetails?.karmYogiPath;
88
- this.sharedService.configDetails = this.portalData?.parentAppData?.configDetails;
87
+ this.sharedService.baseUrl = this.portalData?.configDetails?.karmYogiPath + "/";
88
+ this.sharedService.configDetails = this.portalData?.configDetails;
89
89
  }
90
90
  }
91
91
  loadCompetenciesData() {
@@ -707,4 +707,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
707
707
  type: ViewChild,
708
708
  args: ['designation', { read: ElementRef }]
709
709
  }] } });
710
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1jYnAtcGxhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9saWIvY29tcG9uZW50cy9lZGl0LWNicC1wbGFuL2VkaXQtY2JwLXBsYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvZWRpdC1jYnAtcGxhbi9lZGl0LWNicC1wbGFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFxQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFlLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFRLENBQUMsTUFBTSxRQUFRLENBQUE7Ozs7Ozs7Ozs7Ozs7OztBQVF2QixNQUFNLE9BQU8sb0JBQW9CO0lBMEMvQixZQUNTLFNBQTZDLEVBQ3BCLElBQVMsRUFDakMsRUFBZSxFQUNmLEtBQXdCLEVBQ3hCLGFBQTJCLEVBQzNCLFFBQXFCLEVBQ3JCLElBQWdCLEVBQ2pCLEtBQXFCO1FBUHJCLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FB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QUFDLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsNkJBQTZCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyw2QkFBNkIsRUFBRTs0QkFDN0gsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQTs0QkFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQTs0QkFDekYsd0RBQXdEOzRCQUN4RCxJQUFJLENBQUMsd0JBQXdCLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFBOzRCQUNqRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTt5QkFDdkQ7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQWdCLENBQUM7SUFDOUQsQ0FBQzsrR0Ezd0JRLG9CQUFvQiw4Q0E0Q3JCLGVBQWU7bUdBNUNkLG9CQUFvQixvUEFxQ0csVUFBVSw2QkNuRDlDLDZvaUJBNFNNOzs0RkQ5Uk8sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLG1CQUFtQjs7MEJBZ0QxQixNQUFNOzJCQUFDLGVBQWU7a05BUkcsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUNzQixjQUFjO3NCQUE3RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIFZhbGlkYXRvcnMsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICBfIGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZWRpdC1jYnAtcGxhbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LWNicC1wbGFuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdC1jYnAtcGxhbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRDYnBQbGFuQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0e1xuXG4gIHNlbGVjdGVkVmFsdWUgPSAnJ1xuICBzZWFyY2hUZXh0ID0gJydcbiAgcGxhbkRhdGE6YW55XG4gIGNvbXBldGVuY2llc0NvdW50ID0ge3RvdGFsOjAsIGJlaGF2aW9yYWw6MCwgZnVuY3Rpb25hbDowLCBkb21haW46MH1cbiAgY2JwRm9ybTogRm9ybUdyb3VwO1xuICBsb2FkaW5nPSBmYWxzZVxuICBcbiAgLy8gRW5oYW5jZWQgY29tcGV0ZW5jeSBzZWxlY3Rpb24gcHJvcGVydGllc1xuICBjb21wZXRlbmNpZXNEYXRhOiBhbnlbXSA9IFtdO1xuICBhdmFpbGFibGVUaGVtZXM6IGFueVtdID0gW107XG4gIGF2YWlsYWJsZVN1YlRoZW1lczogYW55W10gPSBbXTtcbiAgZmlsdGVyZWRUaGVtZXM6IGFueVtdID0gW107XG4gIGZpbHRlcmVkU3ViVGhlbWVzOiBzdHJpbmdbXSA9IFtdO1xuICBzZWxlY3RlZENvbXBldGVuY3lUeXBlID0gJyc7XG4gIHNlbGVjdGVkVGhlbWUgPSAnJztcbiAgc2VsZWN0ZWRTdWJUaGVtZSA9ICcnO1xuICBtYW51YWxUaGVtZSA9ICcnO1xuICBtYW51YWxTdWJUaGVtZSA9ICcnO1xuICB0aGVtZVNlYXJjaFRleHQgPSAnJztcbiAgc3ViVGhlbWVTZWFyY2hUZXh0ID0gJyc7XG4gIGVkaXREb21haW5Db21wZXRlbmN5RmxhZyA9IGZhbHNlXG4gIGVkaXRDb21wZXRlbmN5SW5kZXggPSAtMVxuICBvcmlnaW5hbENvbXBldGVuY3lWYWx1ZUFycjphbnkgPSBbXVxuICBkZXNpZ2FudGlvbkZpbHRlckVuYWJsZSA9IGZhbHNlXG4gIGlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSBmYWxzZTtcbiAgZGVzaWduYXRpb25PZmZzZXQgPSAwXG4gIG9kY3NEZXNpZ25hdGlvbkNvdW50ID0gMFxuICBkZWZhdWx0U2VhcmNoRGVzaWduYXRpb25Db3VudCA9IDBcbiAgZGVzaWduYXRpb25MaXN0TG9hZENvdW50ID0gNTBcbiAgZGVzaWduYXRpb25EZWZhdWx0TG9hZENvdW50ID0gNTBcbiAgbm9Nb3JlTGVnYWN5RGVzaWduYXRpb25zID0gZmFsc2VcbiAgZGVzaWduYXRpb25TZWFyY2hUZXh0ID0gJydcbiAgZGVzaWduYXRpb25Jbml0SW5Qcm9ncmVzcyA9IGZhbHNlXG4gIHNjcm9sbExpc3RlbmVyQXR0YWNoZWQgPSBmYWxzZVxuICBAVmlld0NoaWxkKCdkaWFsb2dDb250ZW50JykgZGlhbG9nQ29udGVudCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Rlc2lnbmF0aW9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGRlc2lnbmF0aW9uUmVmPzogRWxlbWVudFJlZlxuICBtYXN0ZXJEYXRhOiBhbnkgPSB7fVxuICBwb3J0YWxEYXRhOiBhbnlcbiAgYWN0aXZlUm93RWxlbWVudDogYW55XG4gIHJlcXVlc3REYXRhOmFueVxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RWRpdENicFBsYW5Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc2hhcmVkU2VydmljZTpTaGFyZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMucGxhbkRhdGEgPSBkYXRhXG4gICAgY29uc29sZS5sb2coJ1JlY2VpdmVkIGRhdGE6JywgZGF0YSk7XG4gICAgLy8gdGhpcy5wbGFuRGF0YS5jb21wZXRlbmNpZXMubWFwKChjb21wZXRlbmNpZXM6YW55KT0+e1xuICAgIC8vICAgdGhpcy5jb21wZXRlbmNpZXNDb3VudFsndG90YWwnXSA9IHRoaXMuY29tcGV0ZW5jaWVzQ291bnRbJ3RvdGFsJ10gKyAxIFxuICAgIC8vICAgaWYoY29tcGV0ZW5jaWVzLnR5cGUgPT09ICdCZWhhdmlvcmFsJykge1xuICAgIC8vICAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50WydiZWhhdmlvcmFsJ10gPSB0aGlzLmNvbXBldGVuY2llc0NvdW50WydiZWhhdmlvcmFsJ10gKzFcbiAgICAvLyAgIH1cbiAgICAvLyAgIGlmKGNvbXBldGVuY2llcy50eXBlID09PSAnRnVuY3Rpb25hbCcpIHtcbiAgICAvLyAgICAgdGhpcy5jb21wZXRlbmNpZXNDb3VudFsnZnVuY3Rpb25hbCddID0gdGhpcy5jb21wZXRlbmNpZXNDb3VudFsnZnVuY3Rpb25hbCddICsxXG4gICAgLy8gICB9XG4gICAgLy8gICBpZihjb21wZXRlbmNpZXMudHlwZSA9PT0gJ0RvbWFpbicpIHtcbiAgICAvLyAgICAgdGhpcy5jb21wZXRlbmNpZXNDb3VudFsnZG9tYWluJ10gPSB0aGlzLmNvbXBldGVuY2llc0NvdW50Wydkb21haW4nXSArMVxuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gIH1cblxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZENvbXBldGVuY2llc0RhdGEoKTtcbiAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XG4gICAgdGhpcy51cGRhdGVDb21wZXRlbmN5Q291bnRzKClcblxuICAgIHRoaXMucG9ydGFsRGF0YSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YVsncGFyZW50RGF0YSddXG4gICAgY29uc29sZS5sb2coJ3Jlc29sdmVyIHBhcmVudERhdGEnLCB0aGlzLnBvcnRhbERhdGEpXG4gICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ3JlcXVlc3RfaWQnKTtcbiAgICBcbiAgICBpZiAodGhpcy5wb3J0YWxEYXRhICYmIHRoaXMucG9ydGFsRGF0YT8ucGFyZW50QXBwRGF0YSAmJiB0aGlzLnBvcnRhbERhdGE/LnBhcmVudEFwcERhdGE/LmZyb21Qb3J0YWwgJiZcbiAgICAgIHRoaXMucG9ydGFsRGF0YT8ucGFyZW50QXBwRGF0YT8uZnJvbVBvcnRhbCA9PT0gJ21kbydcbiAgICAgIFxuICAgICkge1xuICAgICAgdGhpcy5yZXF1ZXN0RGF0YSA9IHRoaXMucG9ydGFsRGF0YT8ucGFyZW50QXBwRGF0YS5yZXF1ZXN0Um93RGF0YVxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmJhc2VVcmwgPSB0aGlzLnBvcnRhbERhdGE/LnBhcmVudEFwcERhdGE/LmNvbmZpZ0RldGFpbHM/Lmthcm1Zb2dpUGF0aFxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmNvbmZpZ0RldGFpbHMgPSB0aGlzLnBvcnRhbERhdGE/LnBhcmVudEFwcERhdGE/LmNvbmZpZ0RldGFpbHNcbiAgICB9IFxuICB9XG5cbiAgbG9hZENvbXBldGVuY2llc0RhdGEoKSB7XG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldENvbXBldGVuY3lKc29uKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuY29tcGV0ZW5jaWVzRGF0YSA9IGRhdGE7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDb21wZXRlbmNpZXMgZGF0YSBsb2FkZWQ6JywgdGhpcy5jb21wZXRlbmNpZXNEYXRhKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY29tcGV0ZW5jaWVzIGRhdGE6JywgZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlQ29tcGV0ZW5jeUNvdW50cygpIHtcbiAgICBjb25zdCBjb21wcyA9IHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkudmFsdWU7XG4gICAgdGhpcy5jb21wZXRlbmNpZXNDb3VudCA9IHt0b3RhbDogMCwgYmVoYXZpb3JhbDogMCwgZnVuY3Rpb25hbDogMCwgZG9tYWluOiAwfTtcbiAgICBjb21wcy5mb3JFYWNoKGMgPT4ge1xuICAgICAgdGhpcy5jb21wZXRlbmNpZXNDb3VudC50b3RhbCsrO1xuICAgICAgaWYgKGMudHlwZS50b0xvd2VyQ2FzZSgpID09PSAnYmVoYXZpb3JhbCcpIHRoaXMuY29tcGV0ZW5jaWVzQ291bnQuYmVoYXZpb3JhbCsrO1xuICAgICAgaWYgKGMudHlwZS50b0xvd2VyQ2FzZSgpID09PSAnZnVuY3Rpb25hbCcpIHRoaXMuY29tcGV0ZW5jaWVzQ291bnQuZnVuY3Rpb25hbCsrO1xuICAgICAgaWYgKGMudHlwZS50b0xvd2VyQ2FzZSgpID09PSAnZG9tYWluJykgdGhpcy5jb21wZXRlbmNpZXNDb3VudC5kb21haW4rKztcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRpYWxpemVGb3JtKCkge1xuICAgIHRoaXMuY2JwRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZGVzaWduYXRpb25fbmFtZTogW3RoaXMucGxhbkRhdGE/LmRlc2lnbmF0aW9uX25hbWUgfHwgJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgd2luZ19kaXZpc2lvbl9zZWN0aW9uOiBbdGhpcy5wbGFuRGF0YT8ud2luZ19kaXZpc2lvbl9zZWN0aW9uIHx8ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHJvbGVfcmVzcG9uc2liaWxpdGllc190ZXh0OiBbdGhpcy5wbGFuRGF0YT8ucm9sZV9yZXNwb25zaWJpbGl0aWVzPy5qb2luKCdcXG4nKSB8fCAnJ10sXG4gICAgICBhY3Rpdml0aWVzX3RleHQ6IFt0aGlzLnBsYW5EYXRhPy5hY3Rpdml0aWVzPy5qb2luKCdcXG4nKSB8fCAnJ10sXG4gICAgICBjb21wZXRlbmN5U2VhcmNoVGV4dDogWycnXSxcbiAgICAgIGNvbXBldGVuY3lUeXBlOiBbJyddLFxuICAgICAgY29tcGV0ZW5jeVRoZW1lOiBbJyddLFxuICAgICAgY29tcGV0ZW5jeVN1YlRoZW1lOiBbJyddLFxuICAgICAgbWFudWFsVGhlbWVJbnB1dDogWycnXSxcbiAgICAgIG1hbnVhbFN1YlRoZW1lSW5wdXQ6IFsnJ10sXG4gICAgICB0aGVtZVNlYXJjaDogWycnXSxcbiAgICAgIHN1YlRoZW1lU2VhcmNoOiBbJyddLFxuICAgICAgY29tcGV0ZW5jaWVzOiB0aGlzLmZiLmFycmF5KHRoaXMucGxhbkRhdGE/LmNvbXBldGVuY2llcyB8fCBbXSksIC8vIG9wdGlvbmFsIGN1c3RvbWl6YXRpb24sXG4gICAgICBzZWFyY2hEZXNpZ25hdGlvbjogWycnXVxuICAgIH0pO1xuXG4gICAgIGlmICghdGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbkJhY2t1cCddKSB7XG4gICAgICB0aGlzLmdldERlc2lnbmF0aW9uU2FmZSgpXG4gICAgfVxuICB9XG5cbiAgIHByaXZhdGUgZ2V0RGVzaWduYXRpb25TYWZlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlc2lnbmF0aW9uSW5pdEluUHJvZ3Jlc3MgfHwgdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5kZXNpZ25hdGlvbkluaXRJblByb2dyZXNzID0gdHJ1ZVxuICAgIHRoaXMuZ2V0RGVzaWduYXRpb24oKVxuICB9XG5cblxuICBnZXQgcm9sZVJlc3BvbnNpYmlsaXRpZXMoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5jYnBGb3JtLmdldCgncm9sZV9yZXNwb25zaWJpbGl0aWVzJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgc2VhcmNoRGF0YSgpIHtcblxuICB9XG5cbiAgYXBwbHlGaWx0ZXIoKSB7XG4gICBcbiAgfVxuXG4gIGdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgcmV0dXJuICh0aGlzLmNicEZvcm0/LmdldCgnY29tcGV0ZW5jaWVzJyk/LnZhbHVlIHx8IFtdKS5maWx0ZXIoYyA9PiBjLnR5cGUgPT09IHR5cGUpO1xuICB9XG5cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTsgXG4gIH1cblxuICBzYXZlUm9sZU1hcHBpbmcoKSB7XG4gICAgaWYgKHRoaXMuY2JwRm9ybS5pbnZhbGlkKSByZXR1cm47XG5cbiAgY29uc3QgZm9ybURhdGEgPSB0aGlzLmNicEZvcm0udmFsdWU7XG4gIGNvbnNvbGUubG9nKCdTdWJtaXR0ZWQgRGF0YTonLCBmb3JtRGF0YSk7XG4gIGxldCBjYnBQbGFuRGF0YTphbnkgPSB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqO1xuICBjb25zb2xlLmxvZygnY2JwUGxhbkRhdGEnLGNicFBsYW5EYXRhKVxuICBjb25zdCByb2xlUmVzcG9uc2liaWxpdGllc0FycmF5ID0gdGhpcy5jYnBGb3JtLnZhbHVlLnJvbGVfcmVzcG9uc2liaWxpdGllc190ZXh0XG4gIC5zcGxpdCgnXFxuJylcbiAgLm1hcChsaW5lID0+IGxpbmUudHJpbSgpKVxuICAuZmlsdGVyKGxpbmUgPT4gbGluZSk7IFxuICBjb25zdCBhY3Rpdml0aWVzID0gdGhpcy5jYnBGb3JtLnZhbHVlLmFjdGl2aXRpZXNfdGV4dFxuICAuc3BsaXQoJ1xcbicpXG4gIC5tYXAobGluZSA9PiBsaW5lLnRyaW0oKSlcbiAgLmZpbHRlcihsaW5lID0+IGxpbmUpOyBcbiAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICBsZXQgcmVxID0gXG4gICAge1xuICAgICAgXCJzZWN0b3JfbmFtZVwiOmNicFBsYW5EYXRhPy5zZWN0b3JzPy5qb2luKFwiLFwiKSxcbiAgICAgIFwiaW5zdHJ1Y3Rpb25cIjogY2JwUGxhbkRhdGE/Lmluc3RydWN0aW9uID8gY2JwUGxhbkRhdGEuaW5zdHJ1Y3Rpb246JycsXG4gICAgICBcImRlc2lnbmF0aW9uX25hbWVcIjogZm9ybURhdGE/LmRlc2lnbmF0aW9uX25hbWUgPyBmb3JtRGF0YS5kZXNpZ25hdGlvbl9uYW1lIDogJycsXG4gICAgICBcIndpbmdfZGl2aXNpb25fc2VjdGlvblwiOiBmb3JtRGF0YT8ud2luZ19kaXZpc2lvbl9zZWN0aW9uLFxuICAgICAgXCJyb2xlX3Jlc3BvbnNpYmlsaXRpZXNcIjpyb2xlUmVzcG9uc2liaWxpdGllc0FycmF5LFxuICAgICAgXCJhY3Rpdml0aWVzXCI6IGFjdGl2aXRpZXMsXG4gICAgICBcImNvbXBldGVuY2llc1wiOiBmb3JtRGF0YS5jb21wZXRlbmNpZXNcbiAgICB9XG4gICAgbGV0IHJvbGVfbWFwcGluZ19pZCA9IHRoaXMucGxhbkRhdGEuaWRcbiAgICBcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2UudXBkYXRlUm9sZU1hcHBpbmcocm9sZV9tYXBwaW5nX2lkLHJlcSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgLy8gU3VjY2VzcyBoYW5kbGluZ1xuICAgICAgICBjb25zb2xlLmxvZygnU3VjY2VzczonLCByZXMpO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgnc2F2ZWQnKVxuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1JvbGUgTWFwcGluZyBTYXZlZCBTdWNjZXNzZnVsbHknLCAnWCcsIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLXN1Y2Nlc3MnXVxuICAgICAgICB9KTtcbiAgICAgICAgLy90aGlzLnN1Y2Nlc3NSb2xlTWFwcGluZy5lbWl0KHRoaXMucm9sZU1hcHBpbmdGb3JtKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yJywgZXJyb3IpXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcbiAgICAgICAgICAvLyBIYW5kbGUgNDA5IENvbmZsaWN0IGhlcmVcbiAgICAgICAgICAvLyBhbGVydCgnQ29uZmxpY3QgZGV0ZWN0ZWQ6IFRoZSByZXNvdXJjZSBhbHJlYWR5IGV4aXN0cyBvciBhY3Rpb24gY29uZmxpY3RzLicpO1xuICAgICAgICAgIC8vdGhpcy5nZXRcbiAgICAgICAgICAvLyBPciB5b3UgY2FuIHNldCBhIFVJIGVycm9yIG1lc3NhZ2UgdmFyaWFibGVcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZXJyb3I/LmVycm9yPy5kZXRhaWwsICdYJywge1xuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgIC8vdGhpcy5hbHJlYWR5QXZhaWxhYmxlUm9sZU1hcHBpbmcuZW1pdCh0aGlzLnJvbGVNYXBwaW5nRm9ybSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbEZvcm0oKSB7XG4gICAgLy8gTWFyayBhbGwgY29udHJvbHMgYXMgcHJpc3RpbmUgYW5kIHVudG91Y2hlZCB3aXRob3V0IGNoYW5naW5nIHRoZSB2YWx1ZXNcbiAgICB0aGlzLmNicEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICB0aGlzLmNicEZvcm0ubWFya0FzVW50b3VjaGVkKCk7XG4gICAvLyB0aGlzLmNvbXBldGVuY2llc0FycmF5LnZhbHVlID0gdGhpcy5vcmlnaW5hbENvbXBldGVuY3lWYWx1ZUFyclxuICAgLy8gY29uc29sZS5sb2coJ3RoaXMuY29tcGV0ZW5jaWVzQXJyYXknLHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkpXG4gICAgLy8gQWxzbywgaWYgeW91IHdhbnQgdG8gbWFyayBhbGwgY2hpbGQgY29udHJvbHMgKEZvcm1Db250cm9scyAvIEZvcm1BcnJheXMgLyBGb3JtR3JvdXBzKSBhcyBwcmlzdGluZSBhbmQgdW50b3VjaGVkXG4gICAgdGhpcy5tYXJrRm9ybUdyb3VwUHJpc3RpbmVVbnRvdWNoZWQodGhpcy5jYnBGb3JtKTtcbiAgICAvLyBpZih0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXggPiAtMSkge1xuICAgIC8vICAgdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZVt0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXhdWyd0eXBlJ10gPSB0aGlzLm9yaWdpbmFsQ29tcGV0ZW5jeVZhbHVlQXJyW3RoaXMuZWRpdENvbXBldGVuY3lJbmRleF1bJ3R5cGUnXVxuICAgIC8vICAgdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZVt0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXhdWyd0aGVtZSddID0gdGhpcy5vcmlnaW5hbENvbXBldGVuY3lWYWx1ZUFyclt0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXhdWyd0aGVtZSddXG4gICAgLy8gICB0aGlzLmNvbXBldGVuY2llc0FycmF5LnZhbHVlW3RoaXMuZWRpdENvbXBldGVuY3lJbmRleF1bJ3N1Yl90aGVtZSddID0gdGhpcy5vcmlnaW5hbENvbXBldGVuY3lWYWx1ZUFyclt0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXhdWydzdWJfdGhlbWUnXVxuICAgIC8vIH1cbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXG4gIH1cbiAgXG4gIHByaXZhdGUgbWFya0Zvcm1Hcm91cFByaXN0aW5lVW50b3VjaGVkKGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgRm9ybUFycmF5KSB7XG4gICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmNvbnRyb2xzW2tleV07XG4gICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XG4gICAgICAgIGNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgY29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCB8fCBjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICAgIHRoaXMubWFya0Zvcm1Hcm91cFByaXN0aW5lVW50b3VjaGVkKGNvbnRyb2wpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGNvbXBldGVuY2llc0FycmF5KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuY2JwRm9ybS5nZXQoJ2NvbXBldGVuY2llcycpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIG9uQ29tcGV0ZW5jeVR5cGVDaGFuZ2UodHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWxlY3RlZENvbXBldGVuY3lUeXBlID0gdHlwZTtcbiAgICB0aGlzLnNlbGVjdGVkVGhlbWUgPSAnJztcbiAgICB0aGlzLnNlbGVjdGVkU3ViVGhlbWUgPSAnJztcbiAgICB0aGlzLm1hbnVhbFRoZW1lID0gJyc7XG4gICAgdGhpcy5tYW51YWxTdWJUaGVtZSA9ICcnO1xuICAgIHRoaXMuYXZhaWxhYmxlVGhlbWVzID0gW107XG4gICAgdGhpcy5hdmFpbGFibGVTdWJUaGVtZXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcmVkVGhlbWVzID0gW107XG4gICAgdGhpcy5maWx0ZXJlZFN1YlRoZW1lcyA9IFtdO1xuICAgIHRoaXMudGhlbWVTZWFyY2hUZXh0ID0gJyc7XG4gICAgdGhpcy5zdWJUaGVtZVNlYXJjaFRleHQgPSAnJztcbiAgICBcbiAgICAvLyBSZXNldCBmb3JtIGNvbnRyb2xzXG4gICAgdGhpcy5jYnBGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgY29tcGV0ZW5jeVRoZW1lOiAnJyxcbiAgICAgIGNvbXBldGVuY3lTdWJUaGVtZTogJycsXG4gICAgICBtYW51YWxUaGVtZUlucHV0OiAnJyxcbiAgICAgIG1hbnVhbFN1YlRoZW1lSW5wdXQ6ICcnLFxuICAgICAgdGhlbWVTZWFyY2g6ICcnLFxuICAgICAgc3ViVGhlbWVTZWFyY2g6ICcnXG4gICAgfSk7XG4gICAgXG4gICAgaWYgKHR5cGUgPT09ICdCZWhhdmlvcmFsJyB8fCB0eXBlID09PSAnRnVuY3Rpb25hbCcpIHtcbiAgICAgIC8vIExvYWQgdGhlbWVzIGZyb20gSlNPTiBmb3IgQmVoYXZpb3JhbCBhbmQgRnVuY3Rpb25hbFxuICAgICAgY29uc3QgY29tcGV0ZW5jeUNhdGVnb3J5ID0gdGhpcy5jb21wZXRlbmNpZXNEYXRhLmZpbmQoY2F0ID0+IFxuICAgICAgICBjYXQubmFtZS50b0xvd2VyQ2FzZSgpID09PSB0eXBlLnRvTG93ZXJDYXNlKCkgfHwgXG4gICAgICAgICh0eXBlID09PSAnQmVoYXZpb3JhbCcgJiYgY2F0Lm5hbWUgPT09ICdCZWhhdmlvdXJhbCcpXG4gICAgICApO1xuICAgICAgXG4gICAgICBpZiAoY29tcGV0ZW5jeUNhdGVnb3J5KSB7XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlVGhlbWVzID0gY29tcGV0ZW5jeUNhdGVnb3J5LmNvbXBldGVuY3lfdGhlbWUgfHwgW107XG4gICAgICAgIHRoaXMuZmlsdGVyZWRUaGVtZXMgPSBbLi4udGhpcy5hdmFpbGFibGVUaGVtZXNdO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBGb3IgRG9tYWluLCBubyB0aGVtZXMgYXJlIGxvYWRlZCAtIHVzZXIgd2lsbCBlbnRlciBtYW51YWxseVxuICB9XG4gIFxuICBvblRoZW1lQ2hhbmdlKHRoZW1lTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWxlY3RlZFRoZW1lID0gdGhlbWVOYW1lO1xuICAgIHRoaXMuc2VsZWN0ZWRTdWJUaGVtZSA9ICcnO1xuICAgIHRoaXMuYXZhaWxhYmxlU3ViVGhlbWVzID0gW107XG4gICAgdGhpcy5maWx0ZXJlZFN1YlRoZW1lcyA9IFtdO1xuICAgIHRoaXMuc3ViVGhlbWVTZWFyY2hUZXh0ID0gJyc7XG4gICAgXG4gICAgdGhpcy5jYnBGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgY29tcGV0ZW5jeVN1YlRoZW1lOiAnJyxcbiAgICAgIHN1YlRoZW1lU2VhcmNoOiAnJ1xuICAgIH0pO1xuICAgIFxuICAgIC8vIEZpbmQgdGhlIHNlbGVjdGVkIHRoZW1lIGFuZCBsb2FkIGl0cyBzdWItdGhlbWVzXG4gICAgY29uc3Qgc2VsZWN0ZWRUaGVtZU9iaiA9IHRoaXMuYXZhaWxhYmxlVGhlbWVzLmZpbmQodGhlbWUgPT4gdGhlbWUubmFtZSA9PT0gdGhlbWVOYW1lKTtcbiAgICBpZiAoc2VsZWN0ZWRUaGVtZU9iaikge1xuICAgICAgdGhpcy5hdmFpbGFibGVTdWJUaGVtZXMgPSBzZWxlY3RlZFRoZW1lT2JqLmNvbXBldGVuY3lfc3ViX3RoZW1lIHx8IFtdO1xuICAgICAgdGhpcy5maWx0ZXJlZFN1YlRoZW1lcyA9IFsuLi50aGlzLmF2YWlsYWJsZVN1YlRoZW1lc107XG4gICAgfVxuICB9XG4gIFxuICBvblN1YlRoZW1lQ2hhbmdlKHN1YlRoZW1lTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWxlY3RlZFN1YlRoZW1lID0gc3ViVGhlbWVOYW1lO1xuICB9XG4gIFxuICBhZGRDb21wZXRlbmN5KCkge1xuICAgIGxldCB0eXBlID0gdGhpcy5zZWxlY3RlZENvbXBldGVuY3lUeXBlO1xuICAgIGxldCB0aGVtZSA9ICcnO1xuICAgIGxldCBzdWJUaGVtZSA9ICcnO1xuICAgIFxuICAgIGlmICh0eXBlID09PSAnRG9tYWluJykge1xuICAgICAgLy8gRm9yIERvbWFpbiwgdXNlIG1hbnVhbCBpbnB1dFxuICAgICAgdGhlbWUgPSB0aGlzLmNicEZvcm0udmFsdWUubWFudWFsVGhlbWVJbnB1dD8udHJpbSgpO1xuICAgICAgc3ViVGhlbWUgPSB0aGlzLmNicEZvcm0udmFsdWUubWFudWFsU3ViVGhlbWVJbnB1dD8udHJpbSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3IgQmVoYXZpb3JhbC9GdW5jdGlvbmFsLCB1c2UgZHJvcGRvd24gc2VsZWN0aW9uc1xuICAgICAgdGhlbWUgPSB0aGlzLnNlbGVjdGVkVGhlbWU7XG4gICAgICBzdWJUaGVtZSA9IHRoaXMuc2VsZWN0ZWRTdWJUaGVtZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHR5cGUgJiYgdGhlbWUgJiYgc3ViVGhlbWUpIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkudmFsdWUuc29tZShjID0+IFxuICAgICAgICBjLnRoZW1lID09PSB0aGVtZSAmJiBjLnN1Yl90aGVtZSA9PT0gc3ViVGhlbWUgJiYgYy50eXBlID09PSB0eXBlXG4gICAgICApO1xuICAgICAgXG4gICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICBjb25zdCBuZXdDb21wID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgdHlwZTogW3R5cGVdLFxuICAgICAgICAgIHRoZW1lOiBbdGhlbWVdLFxuICAgICAgICAgIHN1Yl90aGVtZTogW3N1YlRoZW1lXVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb21wZXRlbmNpZXNBcnJheS5wdXNoKG5ld0NvbXApO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDbGVhciBpbnB1dCBmaWVsZHMgYWZ0ZXIgYWRkaW5nXG4gICAgICB0aGlzLnJlc2V0Q29tcGV0ZW5jeUZvcm0oKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgY3VycmVudFZhbHVlcyA9IHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkudmFsdWU7XG4gICAgdGhpcy5jYnBGb3JtLnBhdGNoVmFsdWUoeyBjb21wZXRlbmNpZXM6IFsuLi5jdXJyZW50VmFsdWVzXSB9KTtcbiAgICBcbiAgICB0aGlzLnVwZGF0ZUNvbXBldGVuY3lDb3VudHMoKTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNicEZvcm0/LmdldCgnY29tcGV0ZW5jaWVzJyk/LnZhbHVlKTtcbiAgfVxuICBcbiAgcmVzZXRDb21wZXRlbmN5Rm9ybSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29tcGV0ZW5jeVR5cGUgPSAnJztcbiAgICB0aGlzLnNlbGVjdGVkVGhlbWUgPSAnJztcbiAgICB0aGlzLnNlbGVjdGVkU3ViVGhlbWUgPSAnJztcbiAgICB0aGlzLm1hbnVhbFRoZW1lID0gJyc7XG4gICAgdGhpcy5tYW51YWxTdWJUaGVtZSA9ICcnO1xuICAgIHRoaXMuYXZhaWxhYmxlVGhlbWVzID0gW107XG4gICAgdGhpcy5hdmFpbGFibGVTdWJUaGVtZXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcmVkVGhlbWVzID0gW107XG4gICAgdGhpcy5maWx0ZXJlZFN1YlRoZW1lcyA9IFtdO1xuICAgIHRoaXMudGhlbWVTZWFyY2hUZXh0ID0gJyc7XG4gICAgdGhpcy5zdWJUaGVtZVNlYXJjaFRleHQgPSAnJztcbiAgICBcbiAgICB0aGlzLmNicEZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBjb21wZXRlbmN5VHlwZTogJycsXG4gICAgICBjb21wZXRlbmN5VGhlbWU6ICcnLFxuICAgICAgY29tcGV0ZW5jeVN1YlRoZW1lOiAnJyxcbiAgICAgIG1hbnVhbFRoZW1lSW5wdXQ6ICcnLFxuICAgICAgbWFudWFsU3ViVGhlbWVJbnB1dDogJycsXG4gICAgICB0aGVtZVNlYXJjaDogJycsXG4gICAgICBzdWJUaGVtZVNlYXJjaDogJydcbiAgICB9KTtcbiAgfVxuICBcbiAgZmlsdGVyVGhlbWVzKHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgIHRoaXMudGhlbWVTZWFyY2hUZXh0ID0gc2VhcmNoVGV4dDtcbiAgICBpZiAoIXNlYXJjaFRleHQudHJpbSgpKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkVGhlbWVzID0gWy4uLnRoaXMuYXZhaWxhYmxlVGhlbWVzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZFRoZW1lcyA9IHRoaXMuYXZhaWxhYmxlVGhlbWVzLmZpbHRlcih0aGVtZSA9PiBcbiAgICAgICAgdGhlbWUubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSlcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIFxuICBmaWx0ZXJTdWJUaGVtZXMoc2VhcmNoVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdWJUaGVtZVNlYXJjaFRleHQgPSBzZWFyY2hUZXh0O1xuICAgIGlmICghc2VhcmNoVGV4dC50cmltKCkpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRTdWJUaGVtZXMgPSBbLi4udGhpcy5hdmFpbGFibGVTdWJUaGVtZXNdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkU3ViVGhlbWVzID0gdGhpcy5hdmFpbGFibGVTdWJUaGVtZXMuZmlsdGVyKHN1YlRoZW1lID0+IFxuICAgICAgICBzdWJUaGVtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSlcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIFxuICBjYW5BZGRDb21wZXRlbmN5KCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZENvbXBldGVuY3lUeXBlKSByZXR1cm4gZmFsc2U7XG4gICAgXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb21wZXRlbmN5VHlwZSA9PT0gJ0RvbWFpbicpIHtcbiAgICAgIGNvbnN0IHRoZW1lID0gdGhpcy5jYnBGb3JtLnZhbHVlLm1hbnVhbFRoZW1lSW5wdXQ/LnRyaW0oKTtcbiAgICAgIGNvbnN0IHN1YlRoZW1lID0gdGhpcy5jYnBGb3JtLnZhbHVlLm1hbnVhbFN1YlRoZW1lSW5wdXQ/LnRyaW0oKTtcbiAgICAgIHJldHVybiAhISh0aGVtZSAmJiBzdWJUaGVtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAhISh0aGlzLnNlbGVjdGVkVGhlbWUgJiYgdGhpcy5zZWxlY3RlZFN1YlRoZW1lKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVDb21wZXRlbmN5KGNvbXApIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkuY29udHJvbHMuZmluZEluZGV4KFxuICAgICAgY29udHJvbCA9PiBjb250cm9sLnZhbHVlLnRoZW1lID09PSBjb21wLnRoZW1lICYmIGNvbnRyb2wudmFsdWUudHlwZSA9PT0gY29tcC50eXBlXG4gICAgKTtcbiAgXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5jb21wZXRlbmNpZXNBcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlQ29tcGV0ZW5jeUNvdW50cygpO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZWRpdENvbXBldGVuY3koY29tcCkge1xuICAgIHRoaXMuZWRpdERvbWFpbkNvbXBldGVuY3lGbGFnID0gdHJ1ZVxuICAgIHRoaXMuZWRpdENvbXBldGVuY3lJbmRleCA9IC0xXG4gICAgdGhpcy5jYnBGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgY29tcGV0ZW5jeVR5cGU6ICdEb21haW4nLFxuICAgICAgbWFudWFsVGhlbWVJbnB1dDogY29tcD8udGhlbWUsXG4gICAgICBtYW51YWxTdWJUaGVtZUlucHV0OiBjb21wPy5zdWJfdGhlbWVcbiAgICB9KTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkudmFsdWUuZmluZEluZGV4KGMgPT4gXG4gICAgICBjLnRoZW1lID09PSBjb21wPy50aGVtZSAmJlxuICAgICAgYy5zdWJfdGhlbWUgPT09IGNvbXA/LnN1Yl90aGVtZSAmJlxuICAgICAgYy50eXBlID09PSBcIkRvbWFpblwiXG4gICAgKTtcbiAgICBpZihpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXggPSBpbmRleFxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQ29tcGV0ZW5jeVR5cGUgPSAnRG9tYWluJ1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kaWFsb2dDb250ZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG8oe1xuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgfSk7XG4gICAgfSwgNTAwKVxuICB9XG5cbiAgY2FuY2VsVXBkYXRlKCkge1xuICAgIHRoaXMuZWRpdERvbWFpbkNvbXBldGVuY3lGbGFnID0gZmFsc2VcbiAgICB0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXggPSAtMVxuICAgIHRoaXMucmVzZXRDb21wZXRlbmN5Rm9ybSgpXG4gIH1cblxuICB1cGRhdGVDb21wZXRlbmN5KCkge1xuICAgIGxldCB0eXBlID0gdGhpcy5zZWxlY3RlZENvbXBldGVuY3lUeXBlO1xuICAgIGxldCB0aGVtZSA9ICcnO1xuICAgIGxldCBzdWJUaGVtZSA9ICcnO1xuICAgIFxuICAgIGlmICh0eXBlID09PSAnRG9tYWluJykge1xuICAgICAgLy8gRm9yIERvbWFpbiwgdXNlIG1hbnVhbCBpbnB1dFxuICAgICAgdGhlbWUgPSB0aGlzLmNicEZvcm0udmFsdWUubWFudWFsVGhlbWVJbnB1dD8udHJpbSgpO1xuICAgICAgc3ViVGhlbWUgPSB0aGlzLmNicEZvcm0udmFsdWUubWFudWFsU3ViVGhlbWVJbnB1dD8udHJpbSgpO1xuICAgICAgdGhpcy5vcmlnaW5hbENvbXBldGVuY3lWYWx1ZUFyciA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZSkpXG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCcgdGhpcy5jb21wZXRlbmNpZXNBcnJheScsICB0aGlzLmNvbXBldGVuY2llc0FycmF5KVxuICAgIGlmICh0eXBlICYmIHRoZW1lICYmIHN1YlRoZW1lKSB7XG4gICAgICBcbiAgICAgIGNvbnNvbGUubG9nKCd0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXgtLScsdGhpcy5lZGl0Q29tcGV0ZW5jeUluZGV4KVxuICAgICAgaWYodGhpcy5lZGl0Q29tcGV0ZW5jeUluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZVt0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXhdWyd0eXBlJ10gPSB0eXBlXG4gICAgICAgIHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkudmFsdWVbdGhpcy5lZGl0Q29tcGV0ZW5jeUluZGV4XVsndGhlbWUnXSA9IHRoZW1lXG4gICAgICAgIHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkudmFsdWVbdGhpcy5lZGl0Q29tcGV0ZW5jeUluZGV4XVsnc3ViX3RoZW1lJ10gPSBzdWJUaGVtZVxuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBpZiAoIWV4aXN0cykge1xuICAgICAgLy8gICBjb25zdCBuZXdDb21wID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAvLyAgICAgdHlwZTogW3R5cGVdLFxuICAgICAgLy8gICAgIHRoZW1lOiBbdGhlbWVdLFxuICAgICAgLy8gICAgIHN1Yl90aGVtZTogW3N1YlRoZW1lXVxuICAgICAgLy8gICB9KTtcbiAgICAgIC8vICAgdGhpcy5jb21wZXRlbmNpZXNBcnJheS5wdXNoKG5ld0NvbXApO1xuICAgICAgLy8gfVxuICAgICAgXG4gICAgICAvLyBDbGVhciBpbnB1dCBmaWVsZHMgYWZ0ZXIgYWRkaW5nXG4gICAgICB0aGlzLnJlc2V0Q29tcGV0ZW5jeUZvcm0oKTtcbiAgICAgIGNvbnNvbGUubG9nKCd0aGlzLm9yaWdpbmFsQ29tcGV0ZW5jeVZhbHVlQXJyJywgdGhpcy5vcmlnaW5hbENvbXBldGVuY3lWYWx1ZUFycilcbiAgICB9XG4gICAgXG4gICAgY29uc3QgY3VycmVudFZhbHVlcyA9IHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkudmFsdWU7XG4gICAgdGhpcy5jYnBGb3JtLnBhdGNoVmFsdWUoeyBjb21wZXRlbmNpZXM6IFsuLi5jdXJyZW50VmFsdWVzXSB9KTtcbiAgICBcbiAgICB0aGlzLnVwZGF0ZUNvbXBldGVuY3lDb3VudHMoKTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNicEZvcm0/LmdldCgnY29tcGV0ZW5jaWVzJyk/LnZhbHVlKTtcbiAgfVxuXG4gIGdldERlc2lnbmF0aW9uKHNlYXJjaFRleHQ/OiBzdHJpbmcsIG9mZnNldD86IG51bWJlcik6IHZvaWQge1xuICBcbiAgICAgIC8vIGNsZWFyIGFueSBwcmV2aW91cyBkZWJ1ZyBob29rc1xuICAgICAgaWYgKCFzZWFyY2hUZXh0IHx8IHNlYXJjaFRleHQ/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBub29wXG4gICAgICB9XG4gIFxuICAgICAgY29uc3QgcmVxT2Zmc2V0ID0gKHR5cGVvZiBvZmZzZXQgPT09ICdudW1iZXInKSA/IG9mZnNldCA6IHRoaXMuZGVzaWduYXRpb25PZmZzZXRcbiAgICAgIGxldCByZXFMaW1pdCA9IHRoaXMuZGVzaWduYXRpb25EZWZhdWx0TG9hZENvdW50XG4gICAgICBjb25zdCBwYWdlSW5kZXggPSByZXFMaW1pdCA+IDAgPyBNYXRoLmZsb29yKHJlcU9mZnNldCAvIHJlcUxpbWl0KSA6IDBcbiAgICAgIC8vIGlmIHdlJ3JlIHJlcXVlc3RpbmcgZnJvbSBmaXJzdCBwYWdlLCBjbGVhciB0aGUgbm8tbW9yZS1kYXRhIGd1YXJkXG4gICAgICBpZiAocGFnZUluZGV4ID09PSAwKSB7XG4gICAgICAgIHRoaXMubm9Nb3JlTGVnYWN5RGVzaWduYXRpb25zID0gZmFsc2VcbiAgICAgICAgcmVxTGltaXQgPSA1MFxuICAgICAgfVxuICAgICAgY29uc3QgcmVxdWVzdEJvZHk6IGFueSA9IHtcbiAgICAgICAgZmlsdGVyQ3JpdGVyaWFNYXA6IHtcbiAgICAgICAgICBzdGF0dXM6ICdBY3RpdmUnXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3RlZEZpZWxkczogW10sXG4gICAgICAgIHBhZ2VOdW1iZXI6IHBhZ2VJbmRleCxcbiAgICAgICAgcGFnZVNpemU6IHJlcUxpbWl0LFxuICAgICAgfVxuICAgICAgaWYgKHNlYXJjaFRleHQ/Lmxlbmd0aCkge1xuICAgICAgICByZXF1ZXN0Qm9keVsnc2VhcmNoU3RyaW5nJ10gPSBzZWFyY2hUZXh0XG4gICAgICAgIC8vIHdoZW4gc2VhcmNoaW5nLCBzdGFydCBmcm9tIGZpcnN0IHBhZ2VcbiAgICAgICAgcmVxdWVzdEJvZHkucGFnZU51bWJlciA9IDBcbiAgICAgICAgLy8gYWxsb3cgbGFyZ2VyIHBhZ2UgZm9yIHNlYXJjaCBpZiBuZWVkZWRcbiAgICAgICAgcmVxdWVzdEJvZHkucGFnZVNpemUgPSBwYWdlSW5kZXggPT09IDAgPyA1MCA6IHRoaXMuZGVzaWduYXRpb25MaXN0TG9hZENvdW50XG4gICAgICAgIC8vIHJlc2V0IGd1YXJkIHdoZW4gcGVyZm9ybWluZyBhIGZyZXNoIHNlYXJjaFxuICAgICAgICB0aGlzLm5vTW9yZUxlZ2FjeURlc2lnbmF0aW9ucyA9IGZhbHNlXG4gICAgICB9XG4gIFxuICAgICAgLy8gaW5kaWNhdGUgbG9hZGluZyBzdGF0ZSBzbyBzY3JvbGwgaGFuZGxlcnMgZG9uJ3QgdHJpZ2dlciBwYXJhbGxlbCBjYWxsc1xuICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zID0gdHJ1ZVxuICBcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5zZWFyY2hQdWJsaWNEZXNpZ25hdGlvbihyZXF1ZXN0Qm9keSkucGlwZShmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyA9IGZhbHNlXG4gICAgICAgIHRoaXMuZGVzaWduYXRpb25Jbml0SW5Qcm9ncmVzcyA9IGZhbHNlXG4gICAgICB9KSlcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gXy5nZXQocmVzLCAncmVzdWx0LnJlc3VsdC5kYXRhJywgW10pXG4gICAgICAgICAgICBjb25zdCBtYXBwZWQgPSBjb250ZW50Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5kZXNpZ25hdGlvbiB8fCAnJyxcbiAgICAgICAgICAgICAgc3RhdHVzOiBpdGVtPy5zdGF0dXMgfHwgJ0FjdGl2ZScsXG4gICAgICAgICAgICB9KSlcbiAgXG4gICAgICAgICAgICAvLyB0b3RhbCBjb3VudCBtYXkgYmUgcHJlc2VudCBpbiBkaWZmZXJlbnQga2V5cyBkZXBlbmRpbmcgb24gQVBJIHZlcnNpb24uXG4gICAgICAgICAgICAvLyBQcmVmZXIgJ3Jlc3VsdC5yZXN1bHQudG90YWxjb3VudCcgKGxlZ2FjeSBsb3dlci1jYXNlKSB0aGVuIGRhdGEudG90YWxDb3VudCwgdGhlbiB0b3RhbENvdW50XG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IF8uZ2V0KHJlcywgJ3Jlc3VsdC5yZXN1bHQudG90YWxjb3VudCcsIF8uZ2V0KHJlcywgJ3Jlc3VsdC5yZXN1bHQuZGF0YS50b3RhbENvdW50JywgXy5nZXQocmVzLCAncmVzdWx0LnJlc3VsdC50b3RhbENvdW50JywgMCkpKVxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0U2VhcmNoRGVzaWduYXRpb25Db3VudCA9IHRvdGFsXG4gIFxuICAgICAgICAgICAgLy8gSWYgb2Zmc2V0IGlzIHplcm8gKGZpcnN0IHBhZ2UpIHJlcGxhY2UgYmFja3VwLCBvdGhlcndpc2UgYXBwZW5kICsgZGVkdXBlXG4gICAgICAgICAgICBpZiAoIXRoaXMubWFzdGVyRGF0YVsnZGVzaWduYXRpb25CYWNrdXAnXSB8fCByZXFPZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbkJhY2t1cCddID0gbWFwcGVkXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBjb21iaW5lZCA9ICh0aGlzLm1hc3RlckRhdGFbJ2Rlc2lnbmF0aW9uQmFja3VwJ10gfHwgW10pLmNvbmNhdChtYXBwZWQpXG4gICAgICAgICAgICAgIHRoaXMubWFzdGVyRGF0YVsnZGVzaWduYXRpb25CYWNrdXAnXSA9IF8udW5pcUJ5KGNvbWJpbmVkLCAoaXQ6IGFueSkgPT4gKGl0Py5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgfVxuICBcbiAgICAgICAgICAgIC8vIElmIHNlcnZlciByZXR1cm5lZCBubyBuZXcgaXRlbXMsIG1hcmsgYXMgbm8tbW9yZS1kYXRhIHRvIHN0b3AgZnVydGhlciBzY3JvbGwgcmVxdWVzdHNcbiAgICAgICAgICAgIGlmICghbWFwcGVkIHx8IG1hcHBlZD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIHRoaXMubm9Nb3JlTGVnYWN5RGVzaWduYXRpb25zID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICBcbiAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGxvYWRlZCBhdCBsZWFzdCB0aGUgdG90YWwgY291bnQsIG1hcmsgbm8tbW9yZS1kYXRhXG4gICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0U2VhcmNoRGVzaWduYXRpb25Db3VudCAmJiAodGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbkJhY2t1cCddIHx8IFtdKS5sZW5ndGggPj0gdGhpcy5kZWZhdWx0U2VhcmNoRGVzaWduYXRpb25Db3VudCkge1xuICAgICAgICAgICAgICB0aGlzLm5vTW9yZUxlZ2FjeURlc2lnbmF0aW9ucyA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgICAvLyBFbnN1cmUgdmlzaWJsZSBsaXN0IG1hdGNoZXMgdGhlIHJlcXVlc3RlZCBkaXNwbGF5IGNvdW50XG4gICAgICAgICAgICB0aGlzLm1hc3RlckRhdGFbJ2Rlc2lnbmF0aW9uJ10gPSAodGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbkJhY2t1cCddIHx8IFtdKS5zbGljZSgwLCB0aGlzLmRlc2lnbmF0aW9uTGlzdExvYWRDb3VudClcbiAgICAgICAgICAgIC8vIGxvYWRpbmcgZmxhZyBjbGVhcmVkIGluIGZpbmFsaXplKClcbiAgICAgICAgICAgICB0aGlzLmVuc3VyZVNlbGVjdGVkRGVzaWduYXRpb25FeGlzdHMoKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tDdXJyZW50RGVzaWduYXRpb25QcmVzZW50KClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAvLyBTdG9wIGZ1cnRoZXIgYXV0b21hdGljIGNhbGxzIG9uIHJlcGVhdGVkIGVycm9ycyB0byBhdm9pZCB0aWdodCBsb29wc1xuICAgICAgICAgICAgLy8gbG9hZGluZyBmbGFnIGNsZWFyZWQgaW4gZmluYWxpemUoKVxuICAgICAgICAgICAgdGhpcy5ub01vcmVMZWdhY3lEZXNpZ25hdGlvbnMgPSB0cnVlXG4gICAgICAgICAgICAvLyB0aGlzLm1hdFNuYWNrQmFyLm9wZW4oJ1VuYWJsZSB0byBmZXRjaCBkZXNpZ25hdGlvbiBkZXRhaWxzLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyIScpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMuY2JwRm9ybS5nZXQoJ2Rlc2lnbmF0aW9uX25hbWUnKT8uc2V0VmFsdWUoXG4gICAgICAgICAgdGhpcy5wbGFuRGF0YT8uZGVzaWduYXRpb25fbmFtZSB8fCAnJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGVuc3VyZVNlbGVjdGVkRGVzaWduYXRpb25FeGlzdHMoKSB7XG4gIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5wbGFuRGF0YT8uZGVzaWduYXRpb25fbmFtZTtcblxuICBpZiAoIXNlbGVjdGVkKSByZXR1cm47XG5cbiAgY29uc3QgZXhpc3RzID0gdGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbkJhY2t1cCddPy5zb21lKFxuICAgIChkOiBhbnkpID0+IGQubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWQudG9Mb3dlckNhc2UoKVxuICApO1xuXG4gIGlmICghZXhpc3RzKSB7XG4gICAgY29uc3QgY3VzdG9tT2JqID0ge1xuICAgICAgbmFtZTogc2VsZWN0ZWQsXG4gICAgICBzdGF0dXM6ICdBY3RpdmUnLFxuICAgICAgaWdvdF9kZXNpZ25hdGlvbl9uYW1lOiBcIlByaW5jaXBhbCBTZWNyZXRhcnlcIixcbiAgICAgIGlnb3RfZGVzaWduYXRpb25faWQ6IFwiREVTRy0wMDIzMTRcIixcbiAgICB9O1xuXG4gICAgLy8g4pyFIEFkZCBhdCBUT1Agc28gaXQncyB2aXNpYmxlIGltbWVkaWF0ZWx5XG4gICAgdGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbkJhY2t1cCddID0gW1xuICAgICAgY3VzdG9tT2JqLFxuICAgICAgLi4uKHRoaXMubWFzdGVyRGF0YVsnZGVzaWduYXRpb25CYWNrdXAnXSB8fCBbXSlcbiAgICBdO1xuXG4gICAgdGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbiddID0gW1xuICAgICAgY3VzdG9tT2JqLFxuICAgICAgLi4uKHRoaXMubWFzdGVyRGF0YVsnZGVzaWduYXRpb24nXSB8fCBbXSlcbiAgICBdO1xuICB9XG59XG5cbiAgICBjaGVja0N1cnJlbnREZXNpZ25hdGlvblByZXNlbnQoKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZERlc2lnbmF0aW9uczogc3RyaW5nW10gPVxuICAgICAgICB0aGlzLmNicEZvcm0uZ2V0KCdkZXNpZ25hdGlvbl9uYW1lJyk/LnZhbHVlIHx8IFtdO1xuICBcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShzZWxlY3RlZERlc2lnbmF0aW9ucykgfHwgIXNlbGVjdGVkRGVzaWduYXRpb25zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gIFxuICAgICAgaWYgKCF0aGlzLm1hc3RlckRhdGE/LmRlc2lnbmF0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgXG4gICAgICBzZWxlY3RlZERlc2lnbmF0aW9ucy5mb3JFYWNoKChzZWxlY3RlZE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBleGlzdHMgPSB0aGlzLm1hc3RlckRhdGEuZGVzaWduYXRpb24uc29tZShcbiAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWROYW1lPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICk7XG4gIFxuICAgICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICAgIGNvbnN0IG5ld0Rlc2lnbmF0aW9uID0ge1xuICAgICAgICAgICAgbmFtZTogc2VsZWN0ZWROYW1lLFxuICAgICAgICAgICAgc3RhdHVzOiAnQWN0aXZlJyxcbiAgICAgICAgICAgIGlkOiAnY3VzdG9tLScgKyBEYXRlLm5vdygpICsgJy0nICsgTWF0aC5yYW5kb20oKVxuICAgICAgICAgIH07XG4gIFxuICAgICAgICAgIC8vIEFkZCB0byBiYWNrdXAgbGlzdCBhcyB3ZWxsXG4gICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhLmRlc2lnbmF0aW9uQmFja3VwID1cbiAgICAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5kZXNpZ25hdGlvbkJhY2t1cCB8fCBbXTtcbiAgXG4gICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhLmRlc2lnbmF0aW9uQmFja3VwLnVuc2hpZnQobmV3RGVzaWduYXRpb24pO1xuICBcbiAgICAgICAgICAvLyBBbHNvIHVwZGF0ZSB2aXNpYmxlIGxpc3RcbiAgICAgICAgICB0aGlzLm1hc3RlckRhdGEuZGVzaWduYXRpb24udW5zaGlmdChuZXdEZXNpZ25hdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBvbkRlc2lnbmF0aW9uRHJvcGRvd25DbG9zZWQoKTogdm9pZCB7XG4gICAgICAvLyBLZWVwIHRoZSBkZXNpZ25hdGlvbiB2YWx1ZSBidXQgY2xlYXIgdGhlIHNlYXJjaCBpbnB1dFxuICAgICAgY29uc3QgY3VycmVudERlc2lnbmF0aW9uID0gdGhpcy5jYnBGb3JtLmdldCgnZGVzaWduYXRpb25fbmFtZScpIS52YWx1ZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNicEZvcm0uZ2V0KCdzZWFyY2hEZXNpZ25hdGlvbicpKSB7XG4gICAgICAgICAgdGhpcy5jYnBGb3JtLmdldCgnc2VhcmNoRGVzaWduYXRpb24nKSEuc2V0VmFsdWUoJycpXG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBkZXNpZ25hdGlvbiB2YWx1ZSByZW1haW5zIHNlbGVjdGVkXG4gICAgICAgIGlmIChjdXJyZW50RGVzaWduYXRpb24pIHtcbiAgICAgICAgICBjb25zdCBkZXNpZ25hdGlvbkNvbnRyb2wgPSB0aGlzLmNicEZvcm0uZ2V0KCdkZXNpZ25hdGlvbl9uYW1lJyk7XG4gICAgICAgICAgaWYgKGRlc2lnbmF0aW9uQ29udHJvbCkge1xuICAgICAgICAgICAgZGVzaWduYXRpb25Db250cm9sLnNldFZhbHVlKGN1cnJlbnREZXNpZ25hdGlvbilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMClcbiAgICB9XG4gIFxuICAgIGRlc2lnbmF0aW9uU2VhcmNoKGV2dDogYW55KSB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZ0Py50YXJnZXQ/LnZhbHVlXG4gICAgICBjb25zdCB0eHQgPSAoc2VhcmNoVGV4dCB8fCAnJykudG9TdHJpbmcoKS50cmltKClcbiAgICAgIGlmICh0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMpIHJldHVyblxuICBcbiAgICAgIHRoaXMuZGVzaWduYXRpb25TZWFyY2hUZXh0ID0gdHh0XG4gICAgICBpZiAodHh0Py5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5kZXNpZ2FudGlvbkZpbHRlckVuYWJsZSA9IHRydWVcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zID0gdHJ1ZVxuICAgICAgICB0aGlzLmdldERlc2lnbmF0aW9uKHR4dCwgMClcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXN0ZXJEYXRhICYmIHRoaXMubWFzdGVyRGF0YT8uZGVzaWduYXRpb25CYWNrdXApIHtcbiAgICAgICAgdGhpcy5tYXN0ZXJEYXRhLmRlc2lnbmF0aW9uID0gdGhpcy5tYXN0ZXJEYXRhPy5kZXNpZ25hdGlvbkJhY2t1cC5zbGljZSgwLCB0aGlzLmRlc2lnbmF0aW9uRGVmYXVsdExvYWRDb3VudClcbiAgICAgICAgdGhpcy5kZXNpZ2FudGlvbkZpbHRlckVuYWJsZSA9IGZhbHNlXG4gICAgICAgIHRoaXMuY2hlY2tDdXJyZW50RGVzaWduYXRpb25QcmVzZW50KClcbiAgICAgIH1cbiAgICB9XG4gICAgc2V0dXBTY3JvbGxMaXN0ZW5lcihvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbExpc3RlbmVyQXR0YWNoZWQpIHtcbiAgICAgICAgICB0aGlzLnNjcm9sbExpc3RlbmVyQXR0YWNoZWQgPSB0cnVlXG4gIFxuICAgICAgICAgIHRoaXMuZGVzaWdhbnRpb25GaWx0ZXJFbmFibGUgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25MaXN0TG9hZENvdW50ID0gdGhpcy5kZXNpZ25hdGlvbkRlZmF1bHRMb2FkQ291bnRcbiAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uT2Zmc2V0ID0gMFxuICBcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSB0cnVlXG4gICAgICAgICAgdGhpcy5nZXREZXNpZ25hdGlvbih1bmRlZmluZWQsIDApXG4gIFxuICAgICAgICAgIC8vIENsZWFyIHNlYXJjaCBib3ggb25jZVxuICAgICAgICAgIGlmICh0aGlzLmNicEZvcm0uZ2V0KCdzZWFyY2hEZXNpZ25hdGlvbicpKSB7XG4gICAgICAgICAgICB0aGlzLmNicEZvcm0uZ2V0KCdzZWFyY2hEZXNpZ25hdGlvbicpIS5zZXRWYWx1ZSgnJylcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VhcmNoLWlucHV0JykgYXMgSFRNTElucHV0RWxlbWVudFxuICAgICAgICAgICAgaWYgKHNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICAgIHNlYXJjaElucHV0LmZvY3VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCAxMDApXG4gIFxuICAgICAgICAgIC8vIEF0dGFjaCBzY3JvbGwgbGlzdGVuZXIgc2FmZWx5XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXQtc2VsZWN0LXBhbmVsLnNlYXJjaC1wYW5lbCcpIGFzIEhUTUxFbGVtZW50IHwgbnVsbFxuICAgICAgICAgICAgaWYgKHBhbmVsKSB7XG4gICAgICAgICAgICAgIC8vIGFsaWduIHBhbmVsIHdpZHRoIHRvIHRyaWdnZXJcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmlnZ2VyRWwgPSB0aGlzLmRlc2lnbmF0aW9uUmVmICYmIHRoaXMuZGVzaWduYXRpb25SZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudFxuICAgICAgICAgICAgICAgIGlmICh0cmlnZ2VyRWwpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0cmlnZ2VyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgICAgICAgIC8vIHNldCB3aWR0aCBhbmQgbGVmdCBzbyBwYW5lbCBhbGlnbnMgZXhhY3RseSBiZWxvdyB0aGUgdHJpZ2dlclxuICAgICAgICAgICAgICAgICAgcGFuZWwuc3R5bGUud2lkdGggPSBgJHtNYXRoLnJvdW5kKHJlY3Qud2lkdGgpfXB4YFxuICAgICAgICAgICAgICAgICAgLy8gbGVhdmUgbGVmdCB0byBvdmVybGF5IHBvc2l0aW9uaW5nIGJ1dCBudWRnZSBpZiBuZWNlc3NhcnlcbiAgICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgbGVmdCByZWxhdGl2ZSB0byB2aWV3cG9ydCBhbmQgYXBwbHkgdG8gcGFuZWxcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG92ZXJsYXlMZWZ0ID0gcmVjdC5sZWZ0XG4gICAgICAgICAgICAgICAgICBwYW5lbC5zdHlsZS5sZWZ0ID0gYCR7TWF0aC5yb3VuZChvdmVybGF5TGVmdCl9cHhgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy8gaWdub3JlIERPTSBlcnJvcnMgaW4gU1NSIG9yIHVuZXhwZWN0ZWQgY2FzZXNcbiAgICAgICAgICAgICAgfVxuICBcbiAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsSGFuZGxlciA9IHRoaXMub25EZXNpZ25hdGlvblNlbGVjdFNjcm9sbC5iaW5kKHRoaXMpXG4gICAgICAgICAgICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHNjcm9sbEhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIDE1MClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRHJvcGRvd24gY2xvc2VkIOKAlCByZXNldCBzY3JvbGwgZmxhZyBzbyBpdCBjYW4gcmVhdHRhY2ggbmV4dCB0aW1lXG4gICAgICAgIHRoaXMuc2Nyb2xsTGlzdGVuZXJBdHRhY2hlZCA9IGZhbHNlXG4gICAgICB9XG4gICAgfVxuICBcbiAgICBvbkRlc2lnbmF0aW9uU2VsZWN0U2Nyb2xsKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudD8udGFyZ2V0XG4gICAgICBpZiAoIXRoaXMuZGVzaWdhbnRpb25GaWx0ZXJFbmFibGUpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgc2Nyb2xsZWQgdG8gdGhlIGJvdHRvbSAod2l0aCBhIHNtYWxsIHRocmVzaG9sZClcbiAgICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsVG9wICsgZWxlbWVudD8uY2xpZW50SGVpZ2h0ID49IGVsZW1lbnQ/LnNjcm9sbEhlaWdodCAtIDUpIHtcbiAgICAgICAgICAvLyBPbmx5IGxvYWQgbW9yZSBpZiBub3QgYWxyZWFkeSBsb2FkaW5nIGFuZCBpZiB0aGVyZSBhcmUgcG90ZW50aWFsbHkgbW9yZSBpdGVtc1xuICAgICAgICAgIGlmICghdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zKSB7XG4gICAgICAgICAgICAvLyBJZiBvcmcgdXNlcyBJR09UIGRlc2lnbmF0aW9uIHRheG9ub215LCByZXF1ZXN0IG1vcmUgZnJvbSB0aGUgQVBJIGJ5IGluY3JlYXNpbmcgdGhlIGxpbWl0XG4gICAgICAgICAgICBpZiAodGhpcy5tYXN0ZXJEYXRhPy5kZXNpZ25hdGlvbkJhY2t1cD8ubGVuZ3RoID4gdGhpcy5tYXN0ZXJEYXRhPy5kZXNpZ25hdGlvbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIC8vIExvY2FsIHBhZ2luYXRpb246IGV4cGFuZCB0aGUgc2xpY2VkIGxpc3RcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zID0gdHJ1ZVxuICAgICAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uTGlzdExvYWRDb3VudCArPSB0aGlzLmRlc2lnbmF0aW9uRGVmYXVsdExvYWRDb3VudFxuICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGZpbHRlcmVkIGxpc3Qgd2l0aCBtb3JlIGl0ZW1zXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5kZXNpZ25hdGlvbiA9IHRoaXMubWFzdGVyRGF0YT8uZGVzaWduYXRpb25CYWNrdXA/LnNsaWNlKDAsIHRoaXMuZGVzaWduYXRpb25MaXN0TG9hZENvdW50KVxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tDdXJyZW50RGVzaWduYXRpb25QcmVzZW50KClcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSBmYWxzZVxuICAgICAgICAgICAgICB9LCA1MDApIC8vIFNtYWxsIHRpbWVvdXQgdG8gc2ltdWxhdGUgbG9hZGluZyBhbmQgcHJldmVudCBtdWx0aXBsZSB0cmlnZ2Vyc1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gTGVnYWN5IChzZXJ2ZXIpIHBhZ2luYXRpb246IHJlcXVlc3QgbmV4dCBwYWdlIGlmIHRvdGFsIG5vdCByZWFjaGVkXG4gICAgICAgICAgICAgIGNvbnN0IGxvYWRlZExlZ2FjeSA9ICh0aGlzLm1hc3RlckRhdGE/LmRlc2lnbmF0aW9uQmFja3VwIHx8IFtdKS5sZW5ndGhcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLm5vTW9yZUxlZ2FjeURlc2lnbmF0aW9ucyAmJiB0aGlzLmRlZmF1bHRTZWFyY2hEZXNpZ25hdGlvbkNvdW50ICYmIGxvYWRlZExlZ2FjeSA8IHRoaXMuZGVmYXVsdFNlYXJjaERlc2lnbmF0aW9uQ291bnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSB0cnVlXG4gICAgICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbk9mZnNldCA9ICh0aGlzLmRlc2lnbmF0aW9uT2Zmc2V0IHx8IDApICsgdGhpcy5kZXNpZ25hdGlvbkRlZmF1bHRMb2FkQ291bnRcbiAgICAgICAgICAgICAgICAvLyBpbmNyZWFzZSBkaXNwbGF5IGNvdW50IHRvIGluY2x1ZGUgbmV3bHkgZmV0Y2hlZCBpdGVtc1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25MaXN0TG9hZENvdW50ICs9IHRoaXMuZGVzaWduYXRpb25EZWZhdWx0TG9hZENvdW50XG4gICAgICAgICAgICAgICAgdGhpcy5nZXREZXNpZ25hdGlvbih1bmRlZmluZWQsIHRoaXMuZGVzaWduYXRpb25PZmZzZXQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIFxuICAgIGdldCBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2woKTogRm9ybUNvbnRyb2wge1xuICAgICAgcmV0dXJuIHRoaXMuY2JwRm9ybS5nZXQoJ3NlYXJjaERlc2lnbmF0aW9uJykgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJ2aWV3LWNicC1wbGFuXCIgI2RpYWxvZ0NvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+RWRpdCBSb2xlIE1hcHBpbmc8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1jb250YWluZXJcIiBbZm9ybUdyb3VwXT1cImNicEZvcm1cIj5cblxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXIgbXQtNFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2lnbmF0aW9uX25hbWVcIiBbdmFsdWVdPVwicGxhbkRhdGE/LmRlc2lnbmF0aW9uX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDI1cHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDhweCAxMnB4OyB3aWR0aDogMTAwJTtmb250LXNpemU6IDE0cHg7Zm9udC1mYW1pbHk6ICdMYXRvJztcIj5cblxuXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibXQtNCBtYXJnaW4tdG9wLXMgdy1mdWxsIHJlcXVpcmVkLXNlbGVjdFwiICBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDI1cHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDhweCAxMnB4OyB3aWR0aDogMTAwJTtmb250LXNpemU6IDE0cHg7Zm9udC1mYW1pbHk6ICdMYXRvJztcIj5cbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCAjcG9zaXRpb24gZm9ybUNvbnRyb2xOYW1lPVwiZGVzaWduYXRpb25fbmFtZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGRlc2lnbmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsb3NlZCk9XCJvbkRlc2lnbmF0aW9uRHJvcGRvd25DbG9zZWQoKVwiIHBhbmVsQ2xhc3M9XCJzZWFyY2gtcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgICAob3BlbmVkQ2hhbmdlKT1cInNldHVwU2Nyb2xsTGlzdGVuZXIoJGV2ZW50KVwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RpY2t5IHNlYXJjaCBpbnB1dCBjb250YWluZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGlja3ktc2VhcmNoLWNvbnRhaW5lclwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGRlc2lnbmF0aW9uXCIgc3R5bGU9XCJ3aWR0aDoxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoRGVzaWduYXRpb25cIiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwiZGVzaWduYXRpb25TZWFyY2goJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2w/LnZhbHVlXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xlYXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wuc2V0VmFsdWUoJycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gT3B0aW9ucyBsaXN0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZGVzaWduYXRpb24/Lm5hbWVcIiAqbmdGb3I9XCJsZXQgZGVzaWduYXRpb24gb2YgbWFzdGVyRGF0YT8uZGVzaWduYXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24/Lm5hbWV9fVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTG9hZGluZyBpbmRpY2F0b3IgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zXCIgY2xhc3M9XCJsb2FkaW5nLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgTG9hZCBNb3JlLi4uXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIE5vIHJlc3VsdHMgbWVzc2FnZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIobWFzdGVyRGF0YT8uZGVzaWduYXRpb24pPy5sZW5ndGggPT09IDBcIiBkaXNhYmxlZCBjbGFzcz1cIm5vLWRhdGEtb3B0aW9uXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIERlc2lnbmF0aW9uIE5vdCBGb3VuZC5cblxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1lcnJvciBjbGFzcz1cInRleHQteHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGVzaWduYXRpb25Gb3JtPy5nZXQoJ2Rlc2lnbmF0aW9uX25hbWUnKT8udG91Y2hlZCAmJiBkZXNpZ25hdGlvbkZvcm0/LmdldCgnZGVzaWduYXRpb25fbmFtZScpPy5pbnZhbGlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgZGVzaWduYXRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj4gLS0+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1jb250YWluZXIgbXQtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRzaWRlLWxheWVyLXRvdGFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnNpZGUtbGF5ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIENvbXBldGVuY2llc1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbXBldGVuY2llc0NvdW50Py50b3RhbH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRzaWRlLWxheWVyLWJlaGF2aW9yYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluc2lkZS1sYXllclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3JhbCBDb21wZXRlbmNpZXNcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21wZXRlbmNpZXNDb3VudD8uYmVoYXZpb3JhbH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRzaWRlLWxheWVyLWZ1bmN0aW9uYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluc2lkZS1sYXllclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25hbCBDb21wZXRlbmNpZXNcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21wZXRlbmNpZXNDb3VudD8uZnVuY3Rpb25hbH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRzaWRlLWxheWVyLWRvbWFpblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5zaWRlLWxheWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEb21haW4gQ29tcGV0ZW5jaWVzXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tcGV0ZW5jaWVzQ291bnQ/LmRvbWFpbn19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPldpbmcvRGl2aXNpb248L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwid2luZ19kaXZpc2lvbl9zZWN0aW9uXCIgW3ZhbHVlXT1cInBsYW5EYXRhPy53aW5nX2RpdmlzaW9uX3NlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAyNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOiA4cHggMTJweDsgd2lkdGg6MTAwJTtmb250LXNpemU6IDE0cHg7Zm9udC1mYW1pbHk6ICdMYXRvJztcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8cD5Sb2xlcyAmIFJlc3BvbnNpYmlsaXRpZXM8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgYWRkaXRpb25hbC1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImN1c3RvbS10ZXh0YXJlYVwiIGZvcm1Db250cm9sTmFtZT1cInJvbGVfcmVzcG9uc2liaWxpdGllc190ZXh0XCIgcm93cz1cIjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJSb2xlcyAmIFJlc3BvbnNpYmlsaXRpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBsYW5EYXRhPy5yb2xlX3Jlc3BvbnNpYmlsaXRpZXM/LmpvaW4oJ1xcbicpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8cD5BY3Rpdml0aWVzPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00IGFkZGl0aW9uYWwtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJjdXN0b20tdGV4dGFyZWFcIiBmb3JtQ29udHJvbE5hbWU9XCJhY3Rpdml0aWVzX3RleHRcIiByb3dzPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFjdGl2aXRpZXNcIiBbdmFsdWVdPVwicGxhbkRhdGE/LmFjdGl2aXRpZXM/LmpvaW4oJ1xcbicpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8cD5Db21wZXRlbmN5PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbmhhbmNlZC1jb21wZXRlbmN5LXNlY3Rpb24gbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN0ZXAgMTogU2VsZWN0IENvbXBldGVuY3kgVHlwZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktc3RlcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3RlcC1sYWJlbFwiPjEuIFNlbGVjdCBDb3JlIENvbXBldGVuY3kgVHlwZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1kcm9wZG93bi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cImNvbXBldGVuY3ktZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY29tcGV0ZW5jeVR5cGVcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBDb21wZXRlbmN5IFR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkNvbXBldGVuY3lUeXBlQ2hhbmdlKCRldmVudC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiQmVoYXZpb3JhbFwiPkJlaGF2aW9yYWw8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIkZ1bmN0aW9uYWxcIj5GdW5jdGlvbmFsPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJEb21haW5cIj5Eb21haW48L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RlcCAyOiBUaGVtZSBTZWxlY3Rpb24gKEJlaGF2aW9yYWwvRnVuY3Rpb25hbCBmcm9tIEpTT04sIERvbWFpbiBtYW51YWwpIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1zdGVwXCIgKm5nSWY9XCJzZWxlY3RlZENvbXBldGVuY3lUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzdGVwLWxhYmVsXCI+Mi4gU2VsZWN0L0VudGVyIFRoZW1lPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb3IgQmVoYXZpb3JhbCBhbmQgRnVuY3Rpb25hbDogU2VhcmNoYWJsZSBEcm9wZG93biBmcm9tIEpTT04gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1kcm9wZG93bi1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRDb21wZXRlbmN5VHlwZSA9PT0gJ0JlaGF2aW9yYWwnIHx8IHNlbGVjdGVkQ29tcGV0ZW5jeVR5cGUgPT09ICdGdW5jdGlvbmFsJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwiY29tcGV0ZW5jeS1kcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJjb21wZXRlbmN5VGhlbWVcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhbmQgc2VsZWN0IHRoZW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25UaGVtZUNoYW5nZSgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlYXJjaCBpbnB1dCBpbnNpZGUgZHJvcGRvd24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlYXJjaC1vcHRpb25cIiBkaXNhYmxlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInNlYXJjaC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJTZWFyY2ggdGhlbWVzLi4uXCIgZm9ybUNvbnRyb2xOYW1lPVwidGhlbWVTZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImZpbHRlclRoZW1lcygkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUaGVtZSBvcHRpb25zIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHRoZW1lIG9mIGZpbHRlcmVkVGhlbWVzXCIgW3ZhbHVlXT1cInRoZW1lLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3RoZW1lLm5hbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE5vIHJlc3VsdHMgbWVzc2FnZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiZmlsdGVyZWRUaGVtZXMubGVuZ3RoID09PSAwICYmIHRoZW1lU2VhcmNoVGV4dFwiIGRpc2FibGVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHRoZW1lcyBmb3VuZCBtYXRjaGluZyBcInt7dGhlbWVTZWFyY2hUZXh0fX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvciBEb21haW46IE1hbnVhbCBpbnB1dCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYW51YWwtaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJzZWxlY3RlZENvbXBldGVuY3lUeXBlID09PSAnRG9tYWluJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIm1hbnVhbFRoZW1lSW5wdXRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIFRoZW1lIG1hbnVhbGx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYW51YWwtaW5wdXRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RlcCAzOiBTdWItdGhlbWUgU2VsZWN0aW9uIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1zdGVwXCIgKm5nSWY9XCJzZWxlY3RlZFRoZW1lIHx8IChzZWxlY3RlZENvbXBldGVuY3lUeXBlID09PSAnRG9tYWluJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN0ZXAtbGFiZWxcIj4zLiBTZWxlY3QvRW50ZXIgU3ViLXRoZW1lPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb3IgQmVoYXZpb3JhbCBhbmQgRnVuY3Rpb25hbDogU2VhcmNoYWJsZSBEcm9wZG93biBiYXNlZCBvbiBzZWxlY3RlZCB0aGVtZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LWRyb3Bkb3duLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZENvbXBldGVuY3lUeXBlID09PSAnQmVoYXZpb3JhbCcgfHwgc2VsZWN0ZWRDb21wZXRlbmN5VHlwZSA9PT0gJ0Z1bmN0aW9uYWwnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJjb21wZXRlbmN5LWRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNvbXBldGVuY3lTdWJUaGVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhbmQgc2VsZWN0IHN1Yi10aGVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU3ViVGhlbWVDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggaW5wdXQgaW5zaWRlIGRyb3Bkb3duIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWFyY2gtb3B0aW9uXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJzZWFyY2gtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiU2VhcmNoIHN1Yi10aGVtZXMuLi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3ViVGhlbWVTZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImZpbHRlclN1YlRoZW1lcygkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTdWItdGhlbWUgb3B0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzdWJUaGVtZSBvZiBmaWx0ZXJlZFN1YlRoZW1lc1wiIFt2YWx1ZV09XCJzdWJUaGVtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3ViVGhlbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE5vIHJlc3VsdHMgbWVzc2FnZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiZmlsdGVyZWRTdWJUaGVtZXMubGVuZ3RoID09PSAwICYmIHN1YlRoZW1lU2VhcmNoVGV4dFwiIGRpc2FibGVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHN1Yi10aGVtZXMgZm91bmQgbWF0Y2hpbmcgXCJ7e3N1YlRoZW1lU2VhcmNoVGV4dH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb3IgRG9tYWluOiBNYW51YWwgaW5wdXQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFudWFsLWlucHV0LWNvbnRhaW5lclwiICpuZ0lmPVwic2VsZWN0ZWRDb21wZXRlbmN5VHlwZSA9PT0gJ0RvbWFpbidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJtYW51YWxTdWJUaGVtZUlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBTdWItdGhlbWUgbWFudWFsbHlcIiBjbGFzcz1cIm1hbnVhbC1pbnB1dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBZGQgQnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLWJ1dHRvbi1zZWN0aW9uXCIgKm5nSWY9XCJzZWxlY3RlZENvbXBldGVuY3lUeXBlIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCIhZWRpdERvbWFpbkNvbXBldGVuY3lGbGFnXCIgY2xhc3M9XCJhZGQtY29tcGV0ZW5jeS1idG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQWRkQ29tcGV0ZW5jeSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjYW5BZGRDb21wZXRlbmN5KCkgPyAnYnRuLWFjdGl2ZScgOiAnYnRuLWRpc2FibGUnXCIgKGNsaWNrKT1cImFkZENvbXBldGVuY3koKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBDb21wZXRlbmN5XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZWRpdERvbWFpbkNvbXBldGVuY3lGbGFnXCIgY2xhc3M9XCJhZGQtY29tcGV0ZW5jeS1idG4gYnRuLWFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUNvbXBldGVuY3koKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwZGF0ZSBDb21wZXRlbmN5XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZWRpdERvbWFpbkNvbXBldGVuY3lGbGFnXCIgY2xhc3M9XCJhZGQtY29tcGV0ZW5jeS1idG4gYnRuLWFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4O1wiIChjbGljayk9XCJjYW5jZWxVcGRhdGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbCA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktc3ViLWhlYWRpbmcgbXQtMlwiICpuZ0lmPVwiZ2V0Q29tcGV0ZW5jaWVzQnlUeXBlKCdCZWhhdmlvcmFsJyk/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3JhbCBDb21wZXRlbmNpZXNcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktZ3JpZCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1pdGVtIGJlaGF2aW91cmFsLXBpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21wIG9mIGdldENvbXBldGVuY2llc0J5VHlwZSgnQmVoYXZpb3JhbCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wZXRlbmN5LXRleHQtYmVoYXZpb3JhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21wLnRoZW1lIH19IC0ge3sgY29tcC5zdWJfdGhlbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBjbG9zZVwiIChjbGljayk9XCJkZWxldGVDb21wZXRlbmN5KGNvbXApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LXN1Yi1oZWFkaW5nIG10LTJcIiAqbmdJZj1cImdldENvbXBldGVuY2llc0J5VHlwZSgnRnVuY3Rpb25hbCcpPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LWdyaWQgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktaXRlbSBmdW5jdGlvbmFsLXBpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21wIG9mIGdldENvbXBldGVuY2llc0J5VHlwZSgnRnVuY3Rpb25hbCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wZXRlbmN5LXRleHQtZnVuY3Rpb25hbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21wLnRoZW1lIH19IC0ge3sgY29tcC5zdWJfdGhlbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBjbG9zZVwiIChjbGljayk9XCJkZWxldGVDb21wZXRlbmN5KGNvbXApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LXN1Yi1oZWFkaW5nIG10LTJcIj5Eb21haW4gQ29tcGV0ZW5jaWVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LWdyaWQgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktaXRlbSBkb21haW4tcGlsbFwiICpuZ0Zvcj1cImxldCBjb21wIG9mIGdldENvbXBldGVuY2llc0J5VHlwZSgnRG9tYWluJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBldGVuY3ktdGV4dC1kb21haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tcC50aGVtZSB9fSAtIHt7IGNvbXAuc3ViX3RoZW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZWRpdFwiIChjbGljayk9XCJlZGl0Q29tcGV0ZW5jeShjb21wKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgY2xvc2VcIiAoY2xpY2spPVwiZGVsZXRlQ29tcGV0ZW5jeShjb21wKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiQ2FuY2VsXCIgKGNsaWNrKT1cImNhbmNlbEZvcm0oKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLWFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIlNhdmVcIiAoY2xpY2spPVwic2F2ZVJvbGVNYXBwaW5nKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvdmVybGF5LWxvYWRlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbjwvZGl2PiJdfQ==
710
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1jYnAtcGxhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9saWIvY29tcG9uZW50cy9lZGl0LWNicC1wbGFuL2VkaXQtY2JwLXBsYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvZWRpdC1jYnAtcGxhbi9lZGl0LWNicC1wbGFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFxQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFlLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFRLENBQUMsTUFBTSxRQUFRLENBQUE7Ozs7Ozs7Ozs7Ozs7OztBQVF2QixNQUFNLE9BQU8sb0JBQW9CO0lBMEMvQixZQUNTLFNBQTZDLEVBQ3BCLElBQVMsRUFDakMsRUFBZSxFQUNmLEtBQXdCLEVBQ3hCLGFBQTJCLEVBQzNCLFFBQXFCLEVBQ3JCLElBQWdCLEVBQ2pCLEtBQXFCO1FBUHJCLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FB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QUFDLHdCQUF3QixJQUFJLElBQUksQ0FBQyw2QkFBNkIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixFQUFFOzRCQUM3SCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFBOzRCQUNyQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFBOzRCQUN6Rix3REFBd0Q7NEJBQ3hELElBQUksQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsMkJBQTJCLENBQUE7NEJBQ2pFLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO3lCQUN2RDtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBZ0IsQ0FBQztJQUM5RCxDQUFDOytHQTN3QlEsb0JBQW9CLDhDQTRDckIsZUFBZTttR0E1Q2Qsb0JBQW9CLG9QQXFDRyxVQUFVLDZCQ25EOUMsNm9pQkE0U007OzRGRDlSTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsbUJBQW1COzswQkFnRDFCLE1BQU07MkJBQUMsZUFBZTtrTkFSRyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ3NCLGNBQWM7c0JBQTdELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1BcnJheSwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgIF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4uLy4uL21vZHVsZXMvc2hhcmVkL3NlcnZpY2VzL3NoYXJlZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1lZGl0LWNicC1wbGFuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtY2JwLXBsYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0LWNicC1wbGFuLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRWRpdENicFBsYW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XG5cbiAgc2VsZWN0ZWRWYWx1ZSA9ICcnXG4gIHNlYXJjaFRleHQgPSAnJ1xuICBwbGFuRGF0YTphbnlcbiAgY29tcGV0ZW5jaWVzQ291bnQgPSB7dG90YWw6MCwgYmVoYXZpb3JhbDowLCBmdW5jdGlvbmFsOjAsIGRvbWFpbjowfVxuICBjYnBGb3JtOiBGb3JtR3JvdXA7XG4gIGxvYWRpbmc9IGZhbHNlXG4gIFxuICAvLyBFbmhhbmNlZCBjb21wZXRlbmN5IHNlbGVjdGlvbiBwcm9wZXJ0aWVzXG4gIGNvbXBldGVuY2llc0RhdGE6IGFueVtdID0gW107XG4gIGF2YWlsYWJsZVRoZW1lczogYW55W10gPSBbXTtcbiAgYXZhaWxhYmxlU3ViVGhlbWVzOiBhbnlbXSA9IFtdO1xuICBmaWx0ZXJlZFRoZW1lczogYW55W10gPSBbXTtcbiAgZmlsdGVyZWRTdWJUaGVtZXM6IHN0cmluZ1tdID0gW107XG4gIHNlbGVjdGVkQ29tcGV0ZW5jeVR5cGUgPSAnJztcbiAgc2VsZWN0ZWRUaGVtZSA9ICcnO1xuICBzZWxlY3RlZFN1YlRoZW1lID0gJyc7XG4gIG1hbnVhbFRoZW1lID0gJyc7XG4gIG1hbnVhbFN1YlRoZW1lID0gJyc7XG4gIHRoZW1lU2VhcmNoVGV4dCA9ICcnO1xuICBzdWJUaGVtZVNlYXJjaFRleHQgPSAnJztcbiAgZWRpdERvbWFpbkNvbXBldGVuY3lGbGFnID0gZmFsc2VcbiAgZWRpdENvbXBldGVuY3lJbmRleCA9IC0xXG4gIG9yaWdpbmFsQ29tcGV0ZW5jeVZhbHVlQXJyOmFueSA9IFtdXG4gIGRlc2lnYW50aW9uRmlsdGVyRW5hYmxlID0gZmFsc2VcbiAgaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyA9IGZhbHNlO1xuICBkZXNpZ25hdGlvbk9mZnNldCA9IDBcbiAgb2Rjc0Rlc2lnbmF0aW9uQ291bnQgPSAwXG4gIGRlZmF1bHRTZWFyY2hEZXNpZ25hdGlvbkNvdW50ID0gMFxuICBkZXNpZ25hdGlvbkxpc3RMb2FkQ291bnQgPSA1MFxuICBkZXNpZ25hdGlvbkRlZmF1bHRMb2FkQ291bnQgPSA1MFxuICBub01vcmVMZWdhY3lEZXNpZ25hdGlvbnMgPSBmYWxzZVxuICBkZXNpZ25hdGlvblNlYXJjaFRleHQgPSAnJ1xuICBkZXNpZ25hdGlvbkluaXRJblByb2dyZXNzID0gZmFsc2VcbiAgc2Nyb2xsTGlzdGVuZXJBdHRhY2hlZCA9IGZhbHNlXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ0NvbnRlbnQnKSBkaWFsb2dDb250ZW50ITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZGVzaWduYXRpb24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZGVzaWduYXRpb25SZWY/OiBFbGVtZW50UmVmXG4gIG1hc3RlckRhdGE6IGFueSA9IHt9XG4gIHBvcnRhbERhdGE6IGFueVxuICBhY3RpdmVSb3dFbGVtZW50OiBhbnlcbiAgcmVxdWVzdERhdGE6YW55XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxFZGl0Q2JwUGxhbkNvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzaGFyZWRTZXJ2aWNlOlNoYXJlZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHB1YmxpYyByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy5wbGFuRGF0YSA9IGRhdGFcbiAgICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgZGF0YTonLCBkYXRhKTtcbiAgICAvLyB0aGlzLnBsYW5EYXRhLmNvbXBldGVuY2llcy5tYXAoKGNvbXBldGVuY2llczphbnkpPT57XG4gICAgLy8gICB0aGlzLmNvbXBldGVuY2llc0NvdW50Wyd0b3RhbCddID0gdGhpcy5jb21wZXRlbmNpZXNDb3VudFsndG90YWwnXSArIDEgXG4gICAgLy8gICBpZihjb21wZXRlbmNpZXMudHlwZSA9PT0gJ0JlaGF2aW9yYWwnKSB7XG4gICAgLy8gICAgIHRoaXMuY29tcGV0ZW5jaWVzQ291bnRbJ2JlaGF2aW9yYWwnXSA9IHRoaXMuY29tcGV0ZW5jaWVzQ291bnRbJ2JlaGF2aW9yYWwnXSArMVxuICAgIC8vICAgfVxuICAgIC8vICAgaWYoY29tcGV0ZW5jaWVzLnR5cGUgPT09ICdGdW5jdGlvbmFsJykge1xuICAgIC8vICAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50WydmdW5jdGlvbmFsJ10gPSB0aGlzLmNvbXBldGVuY2llc0NvdW50WydmdW5jdGlvbmFsJ10gKzFcbiAgICAvLyAgIH1cbiAgICAvLyAgIGlmKGNvbXBldGVuY2llcy50eXBlID09PSAnRG9tYWluJykge1xuICAgIC8vICAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50Wydkb21haW4nXSA9IHRoaXMuY29tcGV0ZW5jaWVzQ291bnRbJ2RvbWFpbiddICsxXG4gICAgLy8gICB9XG4gICAgLy8gfSlcbiAgfVxuXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2FkQ29tcGV0ZW5jaWVzRGF0YSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICB0aGlzLnVwZGF0ZUNvbXBldGVuY3lDb3VudHMoKVxuXG4gICAgdGhpcy5wb3J0YWxEYXRhID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydwYXJlbnREYXRhJ11cbiAgICBjb25zb2xlLmxvZygncmVzb2x2ZXIgcGFyZW50RGF0YScsIHRoaXMucG9ydGFsRGF0YSlcbiAgICBjb25zdCByZXF1ZXN0SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgncmVxdWVzdF9pZCcpO1xuICAgIFxuICAgIGlmICh0aGlzLnBvcnRhbERhdGEgJiYgdGhpcy5wb3J0YWxEYXRhPy5wYXJlbnRBcHBEYXRhICYmIHRoaXMucG9ydGFsRGF0YT8ucGFyZW50QXBwRGF0YT8uZnJvbVBvcnRhbCAmJlxuICAgICAgdGhpcy5wb3J0YWxEYXRhPy5wYXJlbnRBcHBEYXRhPy5mcm9tUG9ydGFsID09PSAnbWRvJ1xuICAgICAgXG4gICAgKSB7XG4gICAgICB0aGlzLnJlcXVlc3REYXRhID0gdGhpcy5wb3J0YWxEYXRhPy5wYXJlbnRBcHBEYXRhLnJlcXVlc3RSb3dEYXRhXG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuYmFzZVVybCA9IHRoaXMucG9ydGFsRGF0YT8uY29uZmlnRGV0YWlscz8ua2FybVlvZ2lQYXRoK1wiL1wiXG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuY29uZmlnRGV0YWlscyA9IHRoaXMucG9ydGFsRGF0YT8uY29uZmlnRGV0YWlsc1xuICAgIH0gXG4gIH1cblxuICBsb2FkQ29tcGV0ZW5jaWVzRGF0YSgpIHtcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0Q29tcGV0ZW5jeUpzb24oKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5jb21wZXRlbmNpZXNEYXRhID0gZGF0YTtcbiAgICAgICAgY29uc29sZS5sb2coJ0NvbXBldGVuY2llcyBkYXRhIGxvYWRlZDonLCB0aGlzLmNvbXBldGVuY2llc0RhdGEpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBjb21wZXRlbmNpZXMgZGF0YTonLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVDb21wZXRlbmN5Q291bnRzKCkge1xuICAgIGNvbnN0IGNvbXBzID0gdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZTtcbiAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50ID0ge3RvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDB9O1xuICAgIGNvbXBzLmZvckVhY2goYyA9PiB7XG4gICAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50LnRvdGFsKys7XG4gICAgICBpZiAoYy50eXBlLnRvTG93ZXJDYXNlKCkgPT09ICdiZWhhdmlvcmFsJykgdGhpcy5jb21wZXRlbmNpZXNDb3VudC5iZWhhdmlvcmFsKys7XG4gICAgICBpZiAoYy50eXBlLnRvTG93ZXJDYXNlKCkgPT09ICdmdW5jdGlvbmFsJykgdGhpcy5jb21wZXRlbmNpZXNDb3VudC5mdW5jdGlvbmFsKys7XG4gICAgICBpZiAoYy50eXBlLnRvTG93ZXJDYXNlKCkgPT09ICdkb21haW4nKSB0aGlzLmNvbXBldGVuY2llc0NvdW50LmRvbWFpbisrO1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUZvcm0oKSB7XG4gICAgdGhpcy5jYnBGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBkZXNpZ25hdGlvbl9uYW1lOiBbdGhpcy5wbGFuRGF0YT8uZGVzaWduYXRpb25fbmFtZSB8fCAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB3aW5nX2RpdmlzaW9uX3NlY3Rpb246IFt0aGlzLnBsYW5EYXRhPy53aW5nX2RpdmlzaW9uX3NlY3Rpb24gfHwgJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcm9sZV9yZXNwb25zaWJpbGl0aWVzX3RleHQ6IFt0aGlzLnBsYW5EYXRhPy5yb2xlX3Jlc3BvbnNpYmlsaXRpZXM/LmpvaW4oJ1xcbicpIHx8ICcnXSxcbiAgICAgIGFjdGl2aXRpZXNfdGV4dDogW3RoaXMucGxhbkRhdGE/LmFjdGl2aXRpZXM/LmpvaW4oJ1xcbicpIHx8ICcnXSxcbiAgICAgIGNvbXBldGVuY3lTZWFyY2hUZXh0OiBbJyddLFxuICAgICAgY29tcGV0ZW5jeVR5cGU6IFsnJ10sXG4gICAgICBjb21wZXRlbmN5VGhlbWU6IFsnJ10sXG4gICAgICBjb21wZXRlbmN5U3ViVGhlbWU6IFsnJ10sXG4gICAgICBtYW51YWxUaGVtZUlucHV0OiBbJyddLFxuICAgICAgbWFudWFsU3ViVGhlbWVJbnB1dDogWycnXSxcbiAgICAgIHRoZW1lU2VhcmNoOiBbJyddLFxuICAgICAgc3ViVGhlbWVTZWFyY2g6IFsnJ10sXG4gICAgICBjb21wZXRlbmNpZXM6IHRoaXMuZmIuYXJyYXkodGhpcy5wbGFuRGF0YT8uY29tcGV0ZW5jaWVzIHx8IFtdKSwgLy8gb3B0aW9uYWwgY3VzdG9taXphdGlvbixcbiAgICAgIHNlYXJjaERlc2lnbmF0aW9uOiBbJyddXG4gICAgfSk7XG5cbiAgICAgaWYgKCF0aGlzLm1hc3RlckRhdGFbJ2Rlc2lnbmF0aW9uQmFja3VwJ10pIHtcbiAgICAgIHRoaXMuZ2V0RGVzaWduYXRpb25TYWZlKClcbiAgICB9XG4gIH1cblxuICAgcHJpdmF0ZSBnZXREZXNpZ25hdGlvblNhZmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGVzaWduYXRpb25Jbml0SW5Qcm9ncmVzcyB8fCB0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmRlc2lnbmF0aW9uSW5pdEluUHJvZ3Jlc3MgPSB0cnVlXG4gICAgdGhpcy5nZXREZXNpZ25hdGlvbigpXG4gIH1cblxuXG4gIGdldCByb2xlUmVzcG9uc2liaWxpdGllcygpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmNicEZvcm0uZ2V0KCdyb2xlX3Jlc3BvbnNpYmlsaXRpZXMnKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBzZWFyY2hEYXRhKCkge1xuXG4gIH1cblxuICBhcHBseUZpbHRlcigpIHtcbiAgIFxuICB9XG5cbiAgZ2V0Q29tcGV0ZW5jaWVzQnlUeXBlKHR5cGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICByZXR1cm4gKHRoaXMuY2JwRm9ybT8uZ2V0KCdjb21wZXRlbmNpZXMnKT8udmFsdWUgfHwgW10pLmZpbHRlcihjID0+IGMudHlwZSA9PT0gdHlwZSk7XG4gIH1cblxuICBjbG9zZURpYWxvZygpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpOyBcbiAgfVxuXG4gIHNhdmVSb2xlTWFwcGluZygpIHtcbiAgICBpZiAodGhpcy5jYnBGb3JtLmludmFsaWQpIHJldHVybjtcblxuICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuY2JwRm9ybS52YWx1ZTtcbiAgY29uc29sZS5sb2coJ1N1Ym1pdHRlZCBEYXRhOicsIGZvcm1EYXRhKTtcbiAgbGV0IGNicFBsYW5EYXRhOmFueSA9IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmo7XG4gIGNvbnNvbGUubG9nKCdjYnBQbGFuRGF0YScsY2JwUGxhbkRhdGEpXG4gIGNvbnN0IHJvbGVSZXNwb25zaWJpbGl0aWVzQXJyYXkgPSB0aGlzLmNicEZvcm0udmFsdWUucm9sZV9yZXNwb25zaWJpbGl0aWVzX3RleHRcbiAgLnNwbGl0KCdcXG4nKVxuICAubWFwKGxpbmUgPT4gbGluZS50cmltKCkpXG4gIC5maWx0ZXIobGluZSA9PiBsaW5lKTsgXG4gIGNvbnN0IGFjdGl2aXRpZXMgPSB0aGlzLmNicEZvcm0udmFsdWUuYWN0aXZpdGllc190ZXh0XG4gIC5zcGxpdCgnXFxuJylcbiAgLm1hcChsaW5lID0+IGxpbmUudHJpbSgpKVxuICAuZmlsdGVyKGxpbmUgPT4gbGluZSk7IFxuICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gIGxldCByZXEgPSBcbiAgICB7XG4gICAgICBcInNlY3Rvcl9uYW1lXCI6Y2JwUGxhbkRhdGE/LnNlY3RvcnM/LmpvaW4oXCIsXCIpLFxuICAgICAgXCJpbnN0cnVjdGlvblwiOiBjYnBQbGFuRGF0YT8uaW5zdHJ1Y3Rpb24gPyBjYnBQbGFuRGF0YS5pbnN0cnVjdGlvbjonJyxcbiAgICAgIFwiZGVzaWduYXRpb25fbmFtZVwiOiBmb3JtRGF0YT8uZGVzaWduYXRpb25fbmFtZSA/IGZvcm1EYXRhLmRlc2lnbmF0aW9uX25hbWUgOiAnJyxcbiAgICAgIFwid2luZ19kaXZpc2lvbl9zZWN0aW9uXCI6IGZvcm1EYXRhPy53aW5nX2RpdmlzaW9uX3NlY3Rpb24sXG4gICAgICBcInJvbGVfcmVzcG9uc2liaWxpdGllc1wiOnJvbGVSZXNwb25zaWJpbGl0aWVzQXJyYXksXG4gICAgICBcImFjdGl2aXRpZXNcIjogYWN0aXZpdGllcyxcbiAgICAgIFwiY29tcGV0ZW5jaWVzXCI6IGZvcm1EYXRhLmNvbXBldGVuY2llc1xuICAgIH1cbiAgICBsZXQgcm9sZV9tYXBwaW5nX2lkID0gdGhpcy5wbGFuRGF0YS5pZFxuICAgIFxuICAgIHRoaXMuc2hhcmVkU2VydmljZS51cGRhdGVSb2xlTWFwcGluZyhyb2xlX21hcHBpbmdfaWQscmVxKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAvLyBTdWNjZXNzIGhhbmRsaW5nXG4gICAgICAgIGNvbnNvbGUubG9nKCdTdWNjZXNzOicsIHJlcyk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCdzYXZlZCcpXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignUm9sZSBNYXBwaW5nIFNhdmVkIFN1Y2Nlc3NmdWxseScsICdYJywge1xuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItc3VjY2VzcyddXG4gICAgICAgIH0pO1xuICAgICAgICAvL3RoaXMuc3VjY2Vzc1JvbGVNYXBwaW5nLmVtaXQodGhpcy5yb2xlTWFwcGluZ0Zvcm0pXG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnZXJyb3InLCBlcnJvcilcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICAgICAgICAgIC8vIEhhbmRsZSA0MDkgQ29uZmxpY3QgaGVyZVxuICAgICAgICAgIC8vIGFsZXJ0KCdDb25mbGljdCBkZXRlY3RlZDogVGhlIHJlc291cmNlIGFscmVhZHkgZXhpc3RzIG9yIGFjdGlvbiBjb25mbGljdHMuJyk7XG4gICAgICAgICAgLy90aGlzLmdldFxuICAgICAgICAgIC8vIE9yIHlvdSBjYW4gc2V0IGEgVUkgZXJyb3IgbWVzc2FnZSB2YXJpYWJsZVxuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihlcnJvcj8uZXJyb3I/LmRldGFpbCwgJ1gnLCB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgLy90aGlzLmFscmVhZHlBdmFpbGFibGVSb2xlTWFwcGluZy5lbWl0KHRoaXMucm9sZU1hcHBpbmdGb3JtKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2FuY2VsRm9ybSgpIHtcbiAgICAvLyBNYXJrIGFsbCBjb250cm9scyBhcyBwcmlzdGluZSBhbmQgdW50b3VjaGVkIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHZhbHVlc1xuICAgIHRoaXMuY2JwRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICAgIHRoaXMuY2JwRm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgIC8vIHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkudmFsdWUgPSB0aGlzLm9yaWdpbmFsQ29tcGV0ZW5jeVZhbHVlQXJyXG4gICAvLyBjb25zb2xlLmxvZygndGhpcy5jb21wZXRlbmNpZXNBcnJheScsdGhpcy5jb21wZXRlbmNpZXNBcnJheSlcbiAgICAvLyBBbHNvLCBpZiB5b3Ugd2FudCB0byBtYXJrIGFsbCBjaGlsZCBjb250cm9scyAoRm9ybUNvbnRyb2xzIC8gRm9ybUFycmF5cyAvIEZvcm1Hcm91cHMpIGFzIHByaXN0aW5lIGFuZCB1bnRvdWNoZWRcbiAgICB0aGlzLm1hcmtGb3JtR3JvdXBQcmlzdGluZVVudG91Y2hlZCh0aGlzLmNicEZvcm0pO1xuICAgIC8vIGlmKHRoaXMuZWRpdENvbXBldGVuY3lJbmRleCA+IC0xKSB7XG4gICAgLy8gICB0aGlzLmNvbXBldGVuY2llc0FycmF5LnZhbHVlW3RoaXMuZWRpdENvbXBldGVuY3lJbmRleF1bJ3R5cGUnXSA9IHRoaXMub3JpZ2luYWxDb21wZXRlbmN5VmFsdWVBcnJbdGhpcy5lZGl0Q29tcGV0ZW5jeUluZGV4XVsndHlwZSddXG4gICAgLy8gICB0aGlzLmNvbXBldGVuY2llc0FycmF5LnZhbHVlW3RoaXMuZWRpdENvbXBldGVuY3lJbmRleF1bJ3RoZW1lJ10gPSB0aGlzLm9yaWdpbmFsQ29tcGV0ZW5jeVZhbHVlQXJyW3RoaXMuZWRpdENvbXBldGVuY3lJbmRleF1bJ3RoZW1lJ11cbiAgICAvLyAgIHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkudmFsdWVbdGhpcy5lZGl0Q29tcGV0ZW5jeUluZGV4XVsnc3ViX3RoZW1lJ10gPSB0aGlzLm9yaWdpbmFsQ29tcGV0ZW5jeVZhbHVlQXJyW3RoaXMuZWRpdENvbXBldGVuY3lJbmRleF1bJ3N1Yl90aGVtZSddXG4gICAgLy8gfVxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcbiAgfVxuICBcbiAgcHJpdmF0ZSBtYXJrRm9ybUdyb3VwUHJpc3RpbmVVbnRvdWNoZWQoZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXkpIHtcbiAgICBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNba2V5XTtcbiAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgY29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgdGhpcy5tYXJrRm9ybUdyb3VwUHJpc3RpbmVVbnRvdWNoZWQoY29udHJvbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXQgY29tcGV0ZW5jaWVzQXJyYXkoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5jYnBGb3JtLmdldCgnY29tcGV0ZW5jaWVzJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgb25Db21wZXRlbmN5VHlwZUNoYW5nZSh0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29tcGV0ZW5jeVR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc2VsZWN0ZWRUaGVtZSA9ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRTdWJUaGVtZSA9ICcnO1xuICAgIHRoaXMubWFudWFsVGhlbWUgPSAnJztcbiAgICB0aGlzLm1hbnVhbFN1YlRoZW1lID0gJyc7XG4gICAgdGhpcy5hdmFpbGFibGVUaGVtZXMgPSBbXTtcbiAgICB0aGlzLmF2YWlsYWJsZVN1YlRoZW1lcyA9IFtdO1xuICAgIHRoaXMuZmlsdGVyZWRUaGVtZXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcmVkU3ViVGhlbWVzID0gW107XG4gICAgdGhpcy50aGVtZVNlYXJjaFRleHQgPSAnJztcbiAgICB0aGlzLnN1YlRoZW1lU2VhcmNoVGV4dCA9ICcnO1xuICAgIFxuICAgIC8vIFJlc2V0IGZvcm0gY29udHJvbHNcbiAgICB0aGlzLmNicEZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBjb21wZXRlbmN5VGhlbWU6ICcnLFxuICAgICAgY29tcGV0ZW5jeVN1YlRoZW1lOiAnJyxcbiAgICAgIG1hbnVhbFRoZW1lSW5wdXQ6ICcnLFxuICAgICAgbWFudWFsU3ViVGhlbWVJbnB1dDogJycsXG4gICAgICB0aGVtZVNlYXJjaDogJycsXG4gICAgICBzdWJUaGVtZVNlYXJjaDogJydcbiAgICB9KTtcbiAgICBcbiAgICBpZiAodHlwZSA9PT0gJ0JlaGF2aW9yYWwnIHx8IHR5cGUgPT09ICdGdW5jdGlvbmFsJykge1xuICAgICAgLy8gTG9hZCB0aGVtZXMgZnJvbSBKU09OIGZvciBCZWhhdmlvcmFsIGFuZCBGdW5jdGlvbmFsXG4gICAgICBjb25zdCBjb21wZXRlbmN5Q2F0ZWdvcnkgPSB0aGlzLmNvbXBldGVuY2llc0RhdGEuZmluZChjYXQgPT4gXG4gICAgICAgIGNhdC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHR5cGUudG9Mb3dlckNhc2UoKSB8fCBcbiAgICAgICAgKHR5cGUgPT09ICdCZWhhdmlvcmFsJyAmJiBjYXQubmFtZSA9PT0gJ0JlaGF2aW91cmFsJylcbiAgICAgICk7XG4gICAgICBcbiAgICAgIGlmIChjb21wZXRlbmN5Q2F0ZWdvcnkpIHtcbiAgICAgICAgdGhpcy5hdmFpbGFibGVUaGVtZXMgPSBjb21wZXRlbmN5Q2F0ZWdvcnkuY29tcGV0ZW5jeV90aGVtZSB8fCBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZFRoZW1lcyA9IFsuLi50aGlzLmF2YWlsYWJsZVRoZW1lc107XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEZvciBEb21haW4sIG5vIHRoZW1lcyBhcmUgbG9hZGVkIC0gdXNlciB3aWxsIGVudGVyIG1hbnVhbGx5XG4gIH1cbiAgXG4gIG9uVGhlbWVDaGFuZ2UodGhlbWVOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkVGhlbWUgPSB0aGVtZU5hbWU7XG4gICAgdGhpcy5zZWxlY3RlZFN1YlRoZW1lID0gJyc7XG4gICAgdGhpcy5hdmFpbGFibGVTdWJUaGVtZXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcmVkU3ViVGhlbWVzID0gW107XG4gICAgdGhpcy5zdWJUaGVtZVNlYXJjaFRleHQgPSAnJztcbiAgICBcbiAgICB0aGlzLmNicEZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBjb21wZXRlbmN5U3ViVGhlbWU6ICcnLFxuICAgICAgc3ViVGhlbWVTZWFyY2g6ICcnXG4gICAgfSk7XG4gICAgXG4gICAgLy8gRmluZCB0aGUgc2VsZWN0ZWQgdGhlbWUgYW5kIGxvYWQgaXRzIHN1Yi10aGVtZXNcbiAgICBjb25zdCBzZWxlY3RlZFRoZW1lT2JqID0gdGhpcy5hdmFpbGFibGVUaGVtZXMuZmluZCh0aGVtZSA9PiB0aGVtZS5uYW1lID09PSB0aGVtZU5hbWUpO1xuICAgIGlmIChzZWxlY3RlZFRoZW1lT2JqKSB7XG4gICAgICB0aGlzLmF2YWlsYWJsZVN1YlRoZW1lcyA9IHNlbGVjdGVkVGhlbWVPYmouY29tcGV0ZW5jeV9zdWJfdGhlbWUgfHwgW107XG4gICAgICB0aGlzLmZpbHRlcmVkU3ViVGhlbWVzID0gWy4uLnRoaXMuYXZhaWxhYmxlU3ViVGhlbWVzXTtcbiAgICB9XG4gIH1cbiAgXG4gIG9uU3ViVGhlbWVDaGFuZ2Uoc3ViVGhlbWVOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkU3ViVGhlbWUgPSBzdWJUaGVtZU5hbWU7XG4gIH1cbiAgXG4gIGFkZENvbXBldGVuY3koKSB7XG4gICAgbGV0IHR5cGUgPSB0aGlzLnNlbGVjdGVkQ29tcGV0ZW5jeVR5cGU7XG4gICAgbGV0IHRoZW1lID0gJyc7XG4gICAgbGV0IHN1YlRoZW1lID0gJyc7XG4gICAgXG4gICAgaWYgKHR5cGUgPT09ICdEb21haW4nKSB7XG4gICAgICAvLyBGb3IgRG9tYWluLCB1c2UgbWFudWFsIGlucHV0XG4gICAgICB0aGVtZSA9IHRoaXMuY2JwRm9ybS52YWx1ZS5tYW51YWxUaGVtZUlucHV0Py50cmltKCk7XG4gICAgICBzdWJUaGVtZSA9IHRoaXMuY2JwRm9ybS52YWx1ZS5tYW51YWxTdWJUaGVtZUlucHV0Py50cmltKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBCZWhhdmlvcmFsL0Z1bmN0aW9uYWwsIHVzZSBkcm9wZG93biBzZWxlY3Rpb25zXG4gICAgICB0aGVtZSA9IHRoaXMuc2VsZWN0ZWRUaGVtZTtcbiAgICAgIHN1YlRoZW1lID0gdGhpcy5zZWxlY3RlZFN1YlRoZW1lO1xuICAgIH1cbiAgICBcbiAgICBpZiAodHlwZSAmJiB0aGVtZSAmJiBzdWJUaGVtZSkge1xuICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZS5zb21lKGMgPT4gXG4gICAgICAgIGMudGhlbWUgPT09IHRoZW1lICYmIGMuc3ViX3RoZW1lID09PSBzdWJUaGVtZSAmJiBjLnR5cGUgPT09IHR5cGVcbiAgICAgICk7XG4gICAgICBcbiAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICB0eXBlOiBbdHlwZV0sXG4gICAgICAgICAgdGhlbWU6IFt0aGVtZV0sXG4gICAgICAgICAgc3ViX3RoZW1lOiBbc3ViVGhlbWVdXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbXBldGVuY2llc0FycmF5LnB1c2gobmV3Q29tcCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIENsZWFyIGlucHV0IGZpZWxkcyBhZnRlciBhZGRpbmdcbiAgICAgIHRoaXMucmVzZXRDb21wZXRlbmN5Rm9ybSgpO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBjdXJyZW50VmFsdWVzID0gdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZTtcbiAgICB0aGlzLmNicEZvcm0ucGF0Y2hWYWx1ZSh7IGNvbXBldGVuY2llczogWy4uLmN1cnJlbnRWYWx1ZXNdIH0pO1xuICAgIFxuICAgIHRoaXMudXBkYXRlQ29tcGV0ZW5jeUNvdW50cygpO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuY2JwRm9ybT8uZ2V0KCdjb21wZXRlbmNpZXMnKT8udmFsdWUpO1xuICB9XG4gIFxuICByZXNldENvbXBldGVuY3lGb3JtKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDb21wZXRlbmN5VHlwZSA9ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRUaGVtZSA9ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRTdWJUaGVtZSA9ICcnO1xuICAgIHRoaXMubWFudWFsVGhlbWUgPSAnJztcbiAgICB0aGlzLm1hbnVhbFN1YlRoZW1lID0gJyc7XG4gICAgdGhpcy5hdmFpbGFibGVUaGVtZXMgPSBbXTtcbiAgICB0aGlzLmF2YWlsYWJsZVN1YlRoZW1lcyA9IFtdO1xuICAgIHRoaXMuZmlsdGVyZWRUaGVtZXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcmVkU3ViVGhlbWVzID0gW107XG4gICAgdGhpcy50aGVtZVNlYXJjaFRleHQgPSAnJztcbiAgICB0aGlzLnN1YlRoZW1lU2VhcmNoVGV4dCA9ICcnO1xuICAgIFxuICAgIHRoaXMuY2JwRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIGNvbXBldGVuY3lUeXBlOiAnJyxcbiAgICAgIGNvbXBldGVuY3lUaGVtZTogJycsXG4gICAgICBjb21wZXRlbmN5U3ViVGhlbWU6ICcnLFxuICAgICAgbWFudWFsVGhlbWVJbnB1dDogJycsXG4gICAgICBtYW51YWxTdWJUaGVtZUlucHV0OiAnJyxcbiAgICAgIHRoZW1lU2VhcmNoOiAnJyxcbiAgICAgIHN1YlRoZW1lU2VhcmNoOiAnJ1xuICAgIH0pO1xuICB9XG4gIFxuICBmaWx0ZXJUaGVtZXMoc2VhcmNoVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy50aGVtZVNlYXJjaFRleHQgPSBzZWFyY2hUZXh0O1xuICAgIGlmICghc2VhcmNoVGV4dC50cmltKCkpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRUaGVtZXMgPSBbLi4udGhpcy5hdmFpbGFibGVUaGVtZXNdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkVGhlbWVzID0gdGhpcy5hdmFpbGFibGVUaGVtZXMuZmlsdGVyKHRoZW1lID0+IFxuICAgICAgICB0aGVtZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgXG4gIGZpbHRlclN1YlRoZW1lcyhzZWFyY2hUZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1YlRoZW1lU2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XG4gICAgaWYgKCFzZWFyY2hUZXh0LnRyaW0oKSkge1xuICAgICAgdGhpcy5maWx0ZXJlZFN1YlRoZW1lcyA9IFsuLi50aGlzLmF2YWlsYWJsZVN1YlRoZW1lc107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRTdWJUaGVtZXMgPSB0aGlzLmF2YWlsYWJsZVN1YlRoZW1lcy5maWx0ZXIoc3ViVGhlbWUgPT4gXG4gICAgICAgIHN1YlRoZW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgXG4gIGNhbkFkZENvbXBldGVuY3koKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkQ29tcGV0ZW5jeVR5cGUpIHJldHVybiBmYWxzZTtcbiAgICBcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbXBldGVuY3lUeXBlID09PSAnRG9tYWluJykge1xuICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLmNicEZvcm0udmFsdWUubWFudWFsVGhlbWVJbnB1dD8udHJpbSgpO1xuICAgICAgY29uc3Qgc3ViVGhlbWUgPSB0aGlzLmNicEZvcm0udmFsdWUubWFudWFsU3ViVGhlbWVJbnB1dD8udHJpbSgpO1xuICAgICAgcmV0dXJuICEhKHRoZW1lICYmIHN1YlRoZW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICEhKHRoaXMuc2VsZWN0ZWRUaGVtZSAmJiB0aGlzLnNlbGVjdGVkU3ViVGhlbWUpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUNvbXBldGVuY3koY29tcCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jb21wZXRlbmNpZXNBcnJheS5jb250cm9scy5maW5kSW5kZXgoXG4gICAgICBjb250cm9sID0+IGNvbnRyb2wudmFsdWUudGhlbWUgPT09IGNvbXAudGhlbWUgJiYgY29udHJvbC52YWx1ZS50eXBlID09PSBjb21wLnR5cGVcbiAgICApO1xuICBcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmNvbXBldGVuY2llc0FycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVDb21wZXRlbmN5Q291bnRzKCk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBlZGl0Q29tcGV0ZW5jeShjb21wKSB7XG4gICAgdGhpcy5lZGl0RG9tYWluQ29tcGV0ZW5jeUZsYWcgPSB0cnVlXG4gICAgdGhpcy5lZGl0Q29tcGV0ZW5jeUluZGV4ID0gLTFcbiAgICB0aGlzLmNicEZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBjb21wZXRlbmN5VHlwZTogJ0RvbWFpbicsXG4gICAgICBtYW51YWxUaGVtZUlucHV0OiBjb21wPy50aGVtZSxcbiAgICAgIG1hbnVhbFN1YlRoZW1lSW5wdXQ6IGNvbXA/LnN1Yl90aGVtZVxuICAgIH0pO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZS5maW5kSW5kZXgoYyA9PiBcbiAgICAgIGMudGhlbWUgPT09IGNvbXA/LnRoZW1lICYmXG4gICAgICBjLnN1Yl90aGVtZSA9PT0gY29tcD8uc3ViX3RoZW1lICYmXG4gICAgICBjLnR5cGUgPT09IFwiRG9tYWluXCJcbiAgICApO1xuICAgIGlmKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuZWRpdENvbXBldGVuY3lJbmRleCA9IGluZGV4XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRDb21wZXRlbmN5VHlwZSA9ICdEb21haW4nXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRpYWxvZ0NvbnRlbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7XG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICB9KTtcbiAgICB9LCA1MDApXG4gIH1cblxuICBjYW5jZWxVcGRhdGUoKSB7XG4gICAgdGhpcy5lZGl0RG9tYWluQ29tcGV0ZW5jeUZsYWcgPSBmYWxzZVxuICAgIHRoaXMuZWRpdENvbXBldGVuY3lJbmRleCA9IC0xXG4gICAgdGhpcy5yZXNldENvbXBldGVuY3lGb3JtKClcbiAgfVxuXG4gIHVwZGF0ZUNvbXBldGVuY3koKSB7XG4gICAgbGV0IHR5cGUgPSB0aGlzLnNlbGVjdGVkQ29tcGV0ZW5jeVR5cGU7XG4gICAgbGV0IHRoZW1lID0gJyc7XG4gICAgbGV0IHN1YlRoZW1lID0gJyc7XG4gICAgXG4gICAgaWYgKHR5cGUgPT09ICdEb21haW4nKSB7XG4gICAgICAvLyBGb3IgRG9tYWluLCB1c2UgbWFudWFsIGlucHV0XG4gICAgICB0aGVtZSA9IHRoaXMuY2JwRm9ybS52YWx1ZS5tYW51YWxUaGVtZUlucHV0Py50cmltKCk7XG4gICAgICBzdWJUaGVtZSA9IHRoaXMuY2JwRm9ybS52YWx1ZS5tYW51YWxTdWJUaGVtZUlucHV0Py50cmltKCk7XG4gICAgICB0aGlzLm9yaWdpbmFsQ29tcGV0ZW5jeVZhbHVlQXJyID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNvbXBldGVuY2llc0FycmF5LnZhbHVlKSlcbiAgICB9XG4gICAgY29uc29sZS5sb2coJyB0aGlzLmNvbXBldGVuY2llc0FycmF5JywgIHRoaXMuY29tcGV0ZW5jaWVzQXJyYXkpXG4gICAgaWYgKHR5cGUgJiYgdGhlbWUgJiYgc3ViVGhlbWUpIHtcbiAgICAgIFxuICAgICAgY29uc29sZS5sb2coJ3RoaXMuZWRpdENvbXBldGVuY3lJbmRleC0tJyx0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXgpXG4gICAgICBpZih0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXggPiAtMSkge1xuICAgICAgICB0aGlzLmNvbXBldGVuY2llc0FycmF5LnZhbHVlW3RoaXMuZWRpdENvbXBldGVuY3lJbmRleF1bJ3R5cGUnXSA9IHR5cGVcbiAgICAgICAgdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZVt0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXhdWyd0aGVtZSddID0gdGhlbWVcbiAgICAgICAgdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZVt0aGlzLmVkaXRDb21wZXRlbmN5SW5kZXhdWydzdWJfdGhlbWUnXSA9IHN1YlRoZW1lXG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIGlmICghZXhpc3RzKSB7XG4gICAgICAvLyAgIGNvbnN0IG5ld0NvbXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIC8vICAgICB0eXBlOiBbdHlwZV0sXG4gICAgICAvLyAgICAgdGhlbWU6IFt0aGVtZV0sXG4gICAgICAvLyAgICAgc3ViX3RoZW1lOiBbc3ViVGhlbWVdXG4gICAgICAvLyAgIH0pO1xuICAgICAgLy8gICB0aGlzLmNvbXBldGVuY2llc0FycmF5LnB1c2gobmV3Q29tcCk7XG4gICAgICAvLyB9XG4gICAgICBcbiAgICAgIC8vIENsZWFyIGlucHV0IGZpZWxkcyBhZnRlciBhZGRpbmdcbiAgICAgIHRoaXMucmVzZXRDb21wZXRlbmN5Rm9ybSgpO1xuICAgICAgY29uc29sZS5sb2coJ3RoaXMub3JpZ2luYWxDb21wZXRlbmN5VmFsdWVBcnInLCB0aGlzLm9yaWdpbmFsQ29tcGV0ZW5jeVZhbHVlQXJyKVxuICAgIH1cbiAgICBcbiAgICBjb25zdCBjdXJyZW50VmFsdWVzID0gdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZTtcbiAgICB0aGlzLmNicEZvcm0ucGF0Y2hWYWx1ZSh7IGNvbXBldGVuY2llczogWy4uLmN1cnJlbnRWYWx1ZXNdIH0pO1xuICAgIFxuICAgIHRoaXMudXBkYXRlQ29tcGV0ZW5jeUNvdW50cygpO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuY2JwRm9ybT8uZ2V0KCdjb21wZXRlbmNpZXMnKT8udmFsdWUpO1xuICB9XG5cbiAgZ2V0RGVzaWduYXRpb24oc2VhcmNoVGV4dD86IHN0cmluZywgb2Zmc2V0PzogbnVtYmVyKTogdm9pZCB7XG4gIFxuICAgICAgLy8gY2xlYXIgYW55IHByZXZpb3VzIGRlYnVnIGhvb2tzXG4gICAgICBpZiAoIXNlYXJjaFRleHQgfHwgc2VhcmNoVGV4dD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIG5vb3BcbiAgICAgIH1cbiAgXG4gICAgICBjb25zdCByZXFPZmZzZXQgPSAodHlwZW9mIG9mZnNldCA9PT0gJ251bWJlcicpID8gb2Zmc2V0IDogdGhpcy5kZXNpZ25hdGlvbk9mZnNldFxuICAgICAgbGV0IHJlcUxpbWl0ID0gdGhpcy5kZXNpZ25hdGlvbkRlZmF1bHRMb2FkQ291bnRcbiAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IHJlcUxpbWl0ID4gMCA/IE1hdGguZmxvb3IocmVxT2Zmc2V0IC8gcmVxTGltaXQpIDogMFxuICAgICAgLy8gaWYgd2UncmUgcmVxdWVzdGluZyBmcm9tIGZpcnN0IHBhZ2UsIGNsZWFyIHRoZSBuby1tb3JlLWRhdGEgZ3VhcmRcbiAgICAgIGlmIChwYWdlSW5kZXggPT09IDApIHtcbiAgICAgICAgdGhpcy5ub01vcmVMZWdhY3lEZXNpZ25hdGlvbnMgPSBmYWxzZVxuICAgICAgICByZXFMaW1pdCA9IDUwXG4gICAgICB9XG4gICAgICBjb25zdCByZXF1ZXN0Qm9keTogYW55ID0ge1xuICAgICAgICBmaWx0ZXJDcml0ZXJpYU1hcDoge1xuICAgICAgICAgIHN0YXR1czogJ0FjdGl2ZSdcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWVzdGVkRmllbGRzOiBbXSxcbiAgICAgICAgcGFnZU51bWJlcjogcGFnZUluZGV4LFxuICAgICAgICBwYWdlU2l6ZTogcmVxTGltaXQsXG4gICAgICB9XG4gICAgICBpZiAoc2VhcmNoVGV4dD8ubGVuZ3RoKSB7XG4gICAgICAgIHJlcXVlc3RCb2R5WydzZWFyY2hTdHJpbmcnXSA9IHNlYXJjaFRleHRcbiAgICAgICAgLy8gd2hlbiBzZWFyY2hpbmcsIHN0YXJ0IGZyb20gZmlyc3QgcGFnZVxuICAgICAgICByZXF1ZXN0Qm9keS5wYWdlTnVtYmVyID0gMFxuICAgICAgICAvLyBhbGxvdyBsYXJnZXIgcGFnZSBmb3Igc2VhcmNoIGlmIG5lZWRlZFxuICAgICAgICByZXF1ZXN0Qm9keS5wYWdlU2l6ZSA9IHBhZ2VJbmRleCA9PT0gMCA/IDUwIDogdGhpcy5kZXNpZ25hdGlvbkxpc3RMb2FkQ291bnRcbiAgICAgICAgLy8gcmVzZXQgZ3VhcmQgd2hlbiBwZXJmb3JtaW5nIGEgZnJlc2ggc2VhcmNoXG4gICAgICAgIHRoaXMubm9Nb3JlTGVnYWN5RGVzaWduYXRpb25zID0gZmFsc2VcbiAgICAgIH1cbiAgXG4gICAgICAvLyBpbmRpY2F0ZSBsb2FkaW5nIHN0YXRlIHNvIHNjcm9sbCBoYW5kbGVycyBkb24ndCB0cmlnZ2VyIHBhcmFsbGVsIGNhbGxzXG4gICAgICB0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSB0cnVlXG4gIFxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLnNlYXJjaFB1YmxpY0Rlc2lnbmF0aW9uKHJlcXVlc3RCb2R5KS5waXBlKGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zID0gZmFsc2VcbiAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkluaXRJblByb2dyZXNzID0gZmFsc2VcbiAgICAgIH0pKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBfLmdldChyZXMsICdyZXN1bHQucmVzdWx0LmRhdGEnLCBbXSlcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IGNvbnRlbnQubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0/LmRlc2lnbmF0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICBzdGF0dXM6IGl0ZW0/LnN0YXR1cyB8fCAnQWN0aXZlJyxcbiAgICAgICAgICAgIH0pKVxuICBcbiAgICAgICAgICAgIC8vIHRvdGFsIGNvdW50IG1heSBiZSBwcmVzZW50IGluIGRpZmZlcmVudCBrZXlzIGRlcGVuZGluZyBvbiBBUEkgdmVyc2lvbi5cbiAgICAgICAgICAgIC8vIFByZWZlciAncmVzdWx0LnJlc3VsdC50b3RhbGNvdW50JyAobGVnYWN5IGxvd2VyLWNhc2UpIHRoZW4gZGF0YS50b3RhbENvdW50LCB0aGVuIHRvdGFsQ291bnRcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gXy5nZXQocmVzLCAncmVzdWx0LnJlc3VsdC50b3RhbGNvdW50JywgXy5nZXQocmVzLCAncmVzdWx0LnJlc3VsdC5kYXRhLnRvdGFsQ291bnQnLCBfLmdldChyZXMsICdyZXN1bHQucmVzdWx0LnRvdGFsQ291bnQnLCAwKSkpXG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRTZWFyY2hEZXNpZ25hdGlvbkNvdW50ID0gdG90YWxcbiAgXG4gICAgICAgICAgICAvLyBJZiBvZmZzZXQgaXMgemVybyAoZmlyc3QgcGFnZSkgcmVwbGFjZSBiYWNrdXAsIG90aGVyd2lzZSBhcHBlbmQgKyBkZWR1cGVcbiAgICAgICAgICAgIGlmICghdGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbkJhY2t1cCddIHx8IHJlcU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICB0aGlzLm1hc3RlckRhdGFbJ2Rlc2lnbmF0aW9uQmFja3VwJ10gPSBtYXBwZWRcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbWJpbmVkID0gKHRoaXMubWFzdGVyRGF0YVsnZGVzaWduYXRpb25CYWNrdXAnXSB8fCBbXSkuY29uY2F0KG1hcHBlZClcbiAgICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbkJhY2t1cCddID0gXy51bmlxQnkoY29tYmluZWQsIChpdDogYW55KSA9PiAoaXQ/Lm5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICB9XG4gIFxuICAgICAgICAgICAgLy8gSWYgc2VydmVyIHJldHVybmVkIG5vIG5ldyBpdGVtcywgbWFyayBhcyBuby1tb3JlLWRhdGEgdG8gc3RvcCBmdXJ0aGVyIHNjcm9sbCByZXF1ZXN0c1xuICAgICAgICAgICAgaWYgKCFtYXBwZWQgfHwgbWFwcGVkPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5ub01vcmVMZWdhY3lEZXNpZ25hdGlvbnMgPSB0cnVlXG4gICAgICAgICAgICB9XG4gIFxuICAgICAgICAgICAgLy8gSWYgd2UndmUgbG9hZGVkIGF0IGxlYXN0IHRoZSB0b3RhbCBjb3VudCwgbWFyayBuby1tb3JlLWRhdGFcbiAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRTZWFyY2hEZXNpZ25hdGlvbkNvdW50ICYmICh0aGlzLm1hc3RlckRhdGFbJ2Rlc2lnbmF0aW9uQmFja3VwJ10gfHwgW10pLmxlbmd0aCA+PSB0aGlzLmRlZmF1bHRTZWFyY2hEZXNpZ25hdGlvbkNvdW50KSB7XG4gICAgICAgICAgICAgIHRoaXMubm9Nb3JlTGVnYWN5RGVzaWduYXRpb25zID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICBcbiAgICAgICAgICAgIC8vIEVuc3VyZSB2aXNpYmxlIGxpc3QgbWF0Y2hlcyB0aGUgcmVxdWVzdGVkIGRpc3BsYXkgY291bnRcbiAgICAgICAgICAgIHRoaXMubWFzdGVyRGF0YVsnZGVzaWduYXRpb24nXSA9ICh0aGlzLm1hc3RlckRhdGFbJ2Rlc2lnbmF0aW9uQmFja3VwJ10gfHwgW10pLnNsaWNlKDAsIHRoaXMuZGVzaWduYXRpb25MaXN0TG9hZENvdW50KVxuICAgICAgICAgICAgLy8gbG9hZGluZyBmbGFnIGNsZWFyZWQgaW4gZmluYWxpemUoKVxuICAgICAgICAgICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWREZXNpZ25hdGlvbkV4aXN0cygpO1xuICAgICAgICAgICAgdGhpcy5jaGVja0N1cnJlbnREZXNpZ25hdGlvblByZXNlbnQoKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIC8vIFN0b3AgZnVydGhlciBhdXRvbWF0aWMgY2FsbHMgb24gcmVwZWF0ZWQgZXJyb3JzIHRvIGF2b2lkIHRpZ2h0IGxvb3BzXG4gICAgICAgICAgICAvLyBsb2FkaW5nIGZsYWcgY2xlYXJlZCBpbiBmaW5hbGl6ZSgpXG4gICAgICAgICAgICB0aGlzLm5vTW9yZUxlZ2FjeURlc2lnbmF0aW9ucyA9IHRydWVcbiAgICAgICAgICAgIC8vIHRoaXMubWF0U25hY2tCYXIub3BlbignVW5hYmxlIHRvIGZldGNoIGRlc2lnbmF0aW9uIGRldGFpbHMsIHBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIhJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5jYnBGb3JtLmdldCgnZGVzaWduYXRpb25fbmFtZScpPy5zZXRWYWx1ZShcbiAgICAgICAgICB0aGlzLnBsYW5EYXRhPy5kZXNpZ25hdGlvbl9uYW1lIHx8ICcnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZW5zdXJlU2VsZWN0ZWREZXNpZ25hdGlvbkV4aXN0cygpIHtcbiAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnBsYW5EYXRhPy5kZXNpZ25hdGlvbl9uYW1lO1xuXG4gIGlmICghc2VsZWN0ZWQpIHJldHVybjtcblxuICBjb25zdCBleGlzdHMgPSB0aGlzLm1hc3RlckRhdGFbJ2Rlc2lnbmF0aW9uQmFja3VwJ10/LnNvbWUoXG4gICAgKGQ6IGFueSkgPT4gZC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZC50b0xvd2VyQ2FzZSgpXG4gICk7XG5cbiAgaWYgKCFleGlzdHMpIHtcbiAgICBjb25zdCBjdXN0b21PYmogPSB7XG4gICAgICBuYW1lOiBzZWxlY3RlZCxcbiAgICAgIHN0YXR1czogJ0FjdGl2ZScsXG4gICAgICBpZ290X2Rlc2lnbmF0aW9uX25hbWU6IFwiUHJpbmNpcGFsIFNlY3JldGFyeVwiLFxuICAgICAgaWdvdF9kZXNpZ25hdGlvbl9pZDogXCJERVNHLTAwMjMxNFwiLFxuICAgIH07XG5cbiAgICAvLyDinIUgQWRkIGF0IFRPUCBzbyBpdCdzIHZpc2libGUgaW1tZWRpYXRlbHlcbiAgICB0aGlzLm1hc3RlckRhdGFbJ2Rlc2lnbmF0aW9uQmFja3VwJ10gPSBbXG4gICAgICBjdXN0b21PYmosXG4gICAgICAuLi4odGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbkJhY2t1cCddIHx8IFtdKVxuICAgIF07XG5cbiAgICB0aGlzLm1hc3RlckRhdGFbJ2Rlc2lnbmF0aW9uJ10gPSBbXG4gICAgICBjdXN0b21PYmosXG4gICAgICAuLi4odGhpcy5tYXN0ZXJEYXRhWydkZXNpZ25hdGlvbiddIHx8IFtdKVxuICAgIF07XG4gIH1cbn1cblxuICAgIGNoZWNrQ3VycmVudERlc2lnbmF0aW9uUHJlc2VudCgpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGVzaWduYXRpb25zOiBzdHJpbmdbXSA9XG4gICAgICAgIHRoaXMuY2JwRm9ybS5nZXQoJ2Rlc2lnbmF0aW9uX25hbWUnKT8udmFsdWUgfHwgW107XG4gIFxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHNlbGVjdGVkRGVzaWduYXRpb25zKSB8fCAhc2VsZWN0ZWREZXNpZ25hdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgXG4gICAgICBpZiAoIXRoaXMubWFzdGVyRGF0YT8uZGVzaWduYXRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICBcbiAgICAgIHNlbGVjdGVkRGVzaWduYXRpb25zLmZvckVhY2goKHNlbGVjdGVkTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMubWFzdGVyRGF0YS5kZXNpZ25hdGlvbi5zb21lKFxuICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICBpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZE5hbWU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgKTtcbiAgXG4gICAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgICAgY29uc3QgbmV3RGVzaWduYXRpb24gPSB7XG4gICAgICAgICAgICBuYW1lOiBzZWxlY3RlZE5hbWUsXG4gICAgICAgICAgICBzdGF0dXM6ICdBY3RpdmUnLFxuICAgICAgICAgICAgaWQ6ICdjdXN0b20tJyArIERhdGUubm93KCkgKyAnLScgKyBNYXRoLnJhbmRvbSgpXG4gICAgICAgICAgfTtcbiAgXG4gICAgICAgICAgLy8gQWRkIHRvIGJhY2t1cCBsaXN0IGFzIHdlbGxcbiAgICAgICAgICB0aGlzLm1hc3RlckRhdGEuZGVzaWduYXRpb25CYWNrdXAgPVxuICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhLmRlc2lnbmF0aW9uQmFja3VwIHx8IFtdO1xuICBcbiAgICAgICAgICB0aGlzLm1hc3RlckRhdGEuZGVzaWduYXRpb25CYWNrdXAudW5zaGlmdChuZXdEZXNpZ25hdGlvbik7XG4gIFxuICAgICAgICAgIC8vIEFsc28gdXBkYXRlIHZpc2libGUgbGlzdFxuICAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5kZXNpZ25hdGlvbi51bnNoaWZ0KG5ld0Rlc2lnbmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIG9uRGVzaWduYXRpb25Ecm9wZG93bkNsb3NlZCgpOiB2b2lkIHtcbiAgICAgIC8vIEtlZXAgdGhlIGRlc2lnbmF0aW9uIHZhbHVlIGJ1dCBjbGVhciB0aGUgc2VhcmNoIGlucHV0XG4gICAgICBjb25zdCBjdXJyZW50RGVzaWduYXRpb24gPSB0aGlzLmNicEZvcm0uZ2V0KCdkZXNpZ25hdGlvbl9uYW1lJykhLnZhbHVlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2JwRm9ybS5nZXQoJ3NlYXJjaERlc2lnbmF0aW9uJykpIHtcbiAgICAgICAgICB0aGlzLmNicEZvcm0uZ2V0KCdzZWFyY2hEZXNpZ25hdGlvbicpIS5zZXRWYWx1ZSgnJylcbiAgICAgICAgfVxuICAgICAgICAvLyBFbnN1cmUgdGhlIGRlc2lnbmF0aW9uIHZhbHVlIHJlbWFpbnMgc2VsZWN0ZWRcbiAgICAgICAgaWYgKGN1cnJlbnREZXNpZ25hdGlvbikge1xuICAgICAgICAgIGNvbnN0IGRlc2lnbmF0aW9uQ29udHJvbCA9IHRoaXMuY2JwRm9ybS5nZXQoJ2Rlc2lnbmF0aW9uX25hbWUnKTtcbiAgICAgICAgICBpZiAoZGVzaWduYXRpb25Db250cm9sKSB7XG4gICAgICAgICAgICBkZXNpZ25hdGlvbkNvbnRyb2wuc2V0VmFsdWUoY3VycmVudERlc2lnbmF0aW9uKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgMTAwKVxuICAgIH1cbiAgXG4gICAgZGVzaWduYXRpb25TZWFyY2goZXZ0OiBhbnkpIHtcbiAgICAgIGNvbnN0IHNlYXJjaFRleHQgPSBldnQ/LnRhcmdldD8udmFsdWVcbiAgICAgIGNvbnN0IHR4dCA9IChzZWFyY2hUZXh0IHx8ICcnKS50b1N0cmluZygpLnRyaW0oKVxuICAgICAgaWYgKHRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucykgcmV0dXJuXG4gIFxuICAgICAgdGhpcy5kZXNpZ25hdGlvblNlYXJjaFRleHQgPSB0eHRcbiAgICAgIGlmICh0eHQ/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmRlc2lnYW50aW9uRmlsdGVyRW5hYmxlID0gdHJ1ZVxuICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSB0cnVlXG4gICAgICAgIHRoaXMuZ2V0RGVzaWduYXRpb24odHh0LCAwKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLm1hc3RlckRhdGEgJiYgdGhpcy5tYXN0ZXJEYXRhPy5kZXNpZ25hdGlvbkJhY2t1cCkge1xuICAgICAgICB0aGlzLm1hc3RlckRhdGEuZGVzaWduYXRpb24gPSB0aGlzLm1hc3RlckRhdGE/LmRlc2lnbmF0aW9uQmFja3VwLnNsaWNlKDAsIHRoaXMuZGVzaWduYXRpb25EZWZhdWx0TG9hZENvdW50KVxuICAgICAgICB0aGlzLmRlc2lnYW50aW9uRmlsdGVyRW5hYmxlID0gZmFsc2VcbiAgICAgICAgdGhpcy5jaGVja0N1cnJlbnREZXNpZ25hdGlvblByZXNlbnQoKVxuICAgICAgfVxuICAgIH1cbiAgICBzZXR1cFNjcm9sbExpc3RlbmVyKG9wZW5lZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsTGlzdGVuZXJBdHRhY2hlZCkge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsTGlzdGVuZXJBdHRhY2hlZCA9IHRydWVcbiAgXG4gICAgICAgICAgdGhpcy5kZXNpZ2FudGlvbkZpbHRlckVuYWJsZSA9IGZhbHNlXG4gICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkxpc3RMb2FkQ291bnQgPSB0aGlzLmRlc2lnbmF0aW9uRGVmYXVsdExvYWRDb3VudFxuICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25PZmZzZXQgPSAwXG4gIFxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyA9IHRydWVcbiAgICAgICAgICB0aGlzLmdldERlc2lnbmF0aW9uKHVuZGVmaW5lZCwgMClcbiAgXG4gICAgICAgICAgLy8gQ2xlYXIgc2VhcmNoIGJveCBvbmNlXG4gICAgICAgICAgaWYgKHRoaXMuY2JwRm9ybS5nZXQoJ3NlYXJjaERlc2lnbmF0aW9uJykpIHtcbiAgICAgICAgICAgIHRoaXMuY2JwRm9ybS5nZXQoJ3NlYXJjaERlc2lnbmF0aW9uJykhLnNldFZhbHVlKCcnKVxuICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWFyY2gtaW5wdXQnKSBhcyBIVE1MSW5wdXRFbGVtZW50XG4gICAgICAgICAgICBpZiAoc2VhcmNoSW5wdXQpIHtcbiAgICAgICAgICAgICAgc2VhcmNoSW5wdXQuZm9jdXMoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIDEwMClcbiAgXG4gICAgICAgICAgLy8gQXR0YWNoIHNjcm9sbCBsaXN0ZW5lciBzYWZlbHlcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhbmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1hdC1zZWxlY3QtcGFuZWwuc2VhcmNoLXBhbmVsJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsXG4gICAgICAgICAgICBpZiAocGFuZWwpIHtcbiAgICAgICAgICAgICAgLy8gYWxpZ24gcGFuZWwgd2lkdGggdG8gdHJpZ2dlclxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJFbCA9IHRoaXMuZGVzaWduYXRpb25SZWYgJiYgdGhpcy5kZXNpZ25hdGlvblJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgICAgICAgaWYgKHRyaWdnZXJFbCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRyaWdnZXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICAgICAgICAgICAgLy8gc2V0IHdpZHRoIGFuZCBsZWZ0IHNvIHBhbmVsIGFsaWducyBleGFjdGx5IGJlbG93IHRoZSB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICBwYW5lbC5zdHlsZS53aWR0aCA9IGAke01hdGgucm91bmQocmVjdC53aWR0aCl9cHhgXG4gICAgICAgICAgICAgICAgICAvLyBsZWF2ZSBsZWZ0IHRvIG92ZXJsYXkgcG9zaXRpb25pbmcgYnV0IG51ZGdlIGlmIG5lY2Vzc2FyeVxuICAgICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBsZWZ0IHJlbGF0aXZlIHRvIHZpZXdwb3J0IGFuZCBhcHBseSB0byBwYW5lbFxuICAgICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxheUxlZnQgPSByZWN0LmxlZnRcbiAgICAgICAgICAgICAgICAgIHBhbmVsLnN0eWxlLmxlZnQgPSBgJHtNYXRoLnJvdW5kKG92ZXJsYXlMZWZ0KX1weGBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUgRE9NIGVycm9ycyBpbiBTU1Igb3IgdW5leHBlY3RlZCBjYXNlc1xuICAgICAgICAgICAgICB9XG4gIFxuICAgICAgICAgICAgICBjb25zdCBzY3JvbGxIYW5kbGVyID0gdGhpcy5vbkRlc2lnbmF0aW9uU2VsZWN0U2Nyb2xsLmJpbmQodGhpcylcbiAgICAgICAgICAgICAgcGFuZWwuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgMTUwKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEcm9wZG93biBjbG9zZWQg4oCUIHJlc2V0IHNjcm9sbCBmbGFnIHNvIGl0IGNhbiByZWF0dGFjaCBuZXh0IHRpbWVcbiAgICAgICAgdGhpcy5zY3JvbGxMaXN0ZW5lckF0dGFjaGVkID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIFxuICAgIG9uRGVzaWduYXRpb25TZWxlY3RTY3JvbGwoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGV2ZW50Py50YXJnZXRcbiAgICAgIGlmICghdGhpcy5kZXNpZ2FudGlvbkZpbHRlckVuYWJsZSkge1xuICAgICAgICAvLyBDaGVjayBpZiB1c2VyIGhhcyBzY3JvbGxlZCB0byB0aGUgYm90dG9tICh3aXRoIGEgc21hbGwgdGhyZXNob2xkKVxuICAgICAgICBpZiAoZWxlbWVudC5zY3JvbGxUb3AgKyBlbGVtZW50Py5jbGllbnRIZWlnaHQgPj0gZWxlbWVudD8uc2Nyb2xsSGVpZ2h0IC0gNSkge1xuICAgICAgICAgIC8vIE9ubHkgbG9hZCBtb3JlIGlmIG5vdCBhbHJlYWR5IGxvYWRpbmcgYW5kIGlmIHRoZXJlIGFyZSBwb3RlbnRpYWxseSBtb3JlIGl0ZW1zXG4gICAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMpIHtcbiAgICAgICAgICAgIC8vIElmIG9yZyB1c2VzIElHT1QgZGVzaWduYXRpb24gdGF4b25vbXksIHJlcXVlc3QgbW9yZSBmcm9tIHRoZSBBUEkgYnkgaW5jcmVhc2luZyB0aGUgbGltaXRcbiAgICAgICAgICAgIGlmICh0aGlzLm1hc3RlckRhdGE/LmRlc2lnbmF0aW9uQmFja3VwPy5sZW5ndGggPiB0aGlzLm1hc3RlckRhdGE/LmRlc2lnbmF0aW9uPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgLy8gTG9jYWwgcGFnaW5hdGlvbjogZXhwYW5kIHRoZSBzbGljZWQgbGlzdFxuICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSB0cnVlXG4gICAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25MaXN0TG9hZENvdW50ICs9IHRoaXMuZGVzaWduYXRpb25EZWZhdWx0TG9hZENvdW50XG4gICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZmlsdGVyZWQgbGlzdCB3aXRoIG1vcmUgaXRlbXNcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhLmRlc2lnbmF0aW9uID0gdGhpcy5tYXN0ZXJEYXRhPy5kZXNpZ25hdGlvbkJhY2t1cD8uc2xpY2UoMCwgdGhpcy5kZXNpZ25hdGlvbkxpc3RMb2FkQ291bnQpXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0N1cnJlbnREZXNpZ25hdGlvblByZXNlbnQoKVxuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyA9IGZhbHNlXG4gICAgICAgICAgICAgIH0sIDUwMCkgLy8gU21hbGwgdGltZW91dCB0byBzaW11bGF0ZSBsb2FkaW5nIGFuZCBwcmV2ZW50IG11bHRpcGxlIHRyaWdnZXJzXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBMZWdhY3kgKHNlcnZlcikgcGFnaW5hdGlvbjogcmVxdWVzdCBuZXh0IHBhZ2UgaWYgdG90YWwgbm90IHJlYWNoZWRcbiAgICAgICAgICAgICAgY29uc3QgbG9hZGVkTGVnYWN5ID0gKHRoaXMubWFzdGVyRGF0YT8uZGVzaWduYXRpb25CYWNrdXAgfHwgW10pLmxlbmd0aFxuICAgICAgICAgICAgICBpZiAoIXRoaXMubm9Nb3JlTGVnYWN5RGVzaWduYXRpb25zICYmIHRoaXMuZGVmYXVsdFNlYXJjaERlc2lnbmF0aW9uQ291bnQgJiYgbG9hZGVkTGVnYWN5IDwgdGhpcy5kZWZhdWx0U2VhcmNoRGVzaWduYXRpb25Db3VudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyA9IHRydWVcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uT2Zmc2V0ID0gKHRoaXMuZGVzaWduYXRpb25PZmZzZXQgfHwgMCkgKyB0aGlzLmRlc2lnbmF0aW9uRGVmYXVsdExvYWRDb3VudFxuICAgICAgICAgICAgICAgIC8vIGluY3JlYXNlIGRpc3BsYXkgY291bnQgdG8gaW5jbHVkZSBuZXdseSBmZXRjaGVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkxpc3RMb2FkQ291bnQgKz0gdGhpcy5kZXNpZ25hdGlvbkRlZmF1bHRMb2FkQ291bnRcbiAgICAgICAgICAgICAgICB0aGlzLmdldERlc2lnbmF0aW9uKHVuZGVmaW5lZCwgdGhpcy5kZXNpZ25hdGlvbk9mZnNldClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgXG4gICAgZ2V0IHNlYXJjaERlc2lnbmF0aW9uQ29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgICByZXR1cm4gdGhpcy5jYnBGb3JtLmdldCgnc2VhcmNoRGVzaWduYXRpb24nKSBhcyBGb3JtQ29udHJvbDtcbiAgICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXctY2JwLXBsYW5cIiAjZGlhbG9nQ29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5FZGl0IFJvbGUgTWFwcGluZzwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiY2JwRm9ybVwiPlxuXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlciBtdC00XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzaWduYXRpb25fbmFtZVwiIFt2YWx1ZV09XCJwbGFuRGF0YT8uZGVzaWduYXRpb25fbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMjVweDsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgcGFkZGluZzogOHB4IDEycHg7IHdpZHRoOiAxMDAlO2ZvbnQtc2l6ZTogMTRweDtmb250LWZhbWlseTogJ0xhdG8nO1wiPlxuXG5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJtdC00IG1hcmdpbi10b3AtcyB3LWZ1bGwgcmVxdWlyZWQtc2VsZWN0XCIgIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMjVweDsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgcGFkZGluZzogOHB4IDEycHg7IHdpZHRoOiAxMDAlO2ZvbnQtc2l6ZTogMTRweDtmb250LWZhbWlseTogJ0xhdG8nO1wiPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0ICNwb3NpdGlvbiBmb3JtQ29udHJvbE5hbWU9XCJkZXNpZ25hdGlvbl9uYW1lXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGVzaWduYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xvc2VkKT1cIm9uRGVzaWduYXRpb25Ecm9wZG93bkNsb3NlZCgpXCIgcGFuZWxDbGFzcz1cInNlYXJjaC1wYW5lbFwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuZWRDaGFuZ2UpPVwic2V0dXBTY3JvbGxMaXN0ZW5lcigkZXZlbnQpXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdGlja3kgc2VhcmNoIGlucHV0IGNvbnRhaW5lciAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0aWNreS1zZWFyY2gtY29udGFpbmVyXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZGVzaWduYXRpb25cIiBzdHlsZT1cIndpZHRoOjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hEZXNpZ25hdGlvblwiIGNsYXNzPVwic2VhcmNoLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJkZXNpZ25hdGlvblNlYXJjaCgkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaERlc2lnbmF0aW9uQ29udHJvbD8udmFsdWVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbGVhci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaERlc2lnbmF0aW9uQ29udHJvbC5zZXRWYWx1ZSgnJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBPcHRpb25zIGxpc3QgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJkZXNpZ25hdGlvbj8ubmFtZVwiICpuZ0Zvcj1cImxldCBkZXNpZ25hdGlvbiBvZiBtYXN0ZXJEYXRhPy5kZXNpZ25hdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tkZXNpZ25hdGlvbj8ubmFtZX19XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBMb2FkaW5nIGluZGljYXRvciAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnNcIiBjbGFzcz1cImxvYWRpbmctaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2FkIE1vcmUuLi5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTm8gcmVzdWx0cyBtZXNzYWdlIC0tPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIihtYXN0ZXJEYXRhPy5kZXNpZ25hdGlvbik/Lmxlbmd0aCA9PT0gMFwiIGRpc2FibGVkIGNsYXNzPVwibm8tZGF0YS1vcHRpb25cIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgRGVzaWduYXRpb24gTm90IEZvdW5kLlxuXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPCEtLSA8bWF0LWVycm9yIGNsYXNzPVwidGV4dC14c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkZXNpZ25hdGlvbkZvcm0/LmdldCgnZGVzaWduYXRpb25fbmFtZScpPy50b3VjaGVkICYmIGRlc2lnbmF0aW9uRm9ybT8uZ2V0KCdkZXNpZ25hdGlvbl9uYW1lJyk/LmludmFsaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBkZXNpZ25hdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPiAtLT5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LWNvbnRhaW5lciBtdC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItdG90YWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluc2lkZS1sYXllclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgQ29tcGV0ZW5jaWVzXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tcGV0ZW5jaWVzQ291bnQ/LnRvdGFsfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItYmVoYXZpb3JhbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5zaWRlLWxheWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBCZWhhdmlvcmFsIENvbXBldGVuY2llc1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbXBldGVuY2llc0NvdW50Py5iZWhhdmlvcmFsfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItZnVuY3Rpb25hbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5zaWRlLWxheWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbmFsIENvbXBldGVuY2llc1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbXBldGVuY2llc0NvdW50Py5mdW5jdGlvbmFsfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItZG9tYWluXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnNpZGUtbGF5ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERvbWFpbiBDb21wZXRlbmNpZXNcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21wZXRlbmNpZXNDb3VudD8uZG9tYWlufX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00IHNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHA+V2luZy9EaXZpc2lvbjwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ3aW5nX2RpdmlzaW9uX3NlY3Rpb25cIiBbdmFsdWVdPVwicGxhbkRhdGE/LndpbmdfZGl2aXNpb25fc2VjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDI1cHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDhweCAxMnB4OyB3aWR0aDoxMDAlO2ZvbnQtc2l6ZTogMTRweDtmb250LWZhbWlseTogJ0xhdG8nO1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPlJvbGVzICYgUmVzcG9uc2liaWxpdGllczwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBhZGRpdGlvbmFsLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiY3VzdG9tLXRleHRhcmVhXCIgZm9ybUNvbnRyb2xOYW1lPVwicm9sZV9yZXNwb25zaWJpbGl0aWVzX3RleHRcIiByb3dzPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlJvbGVzICYgUmVzcG9uc2liaWxpdGllc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicGxhbkRhdGE/LnJvbGVfcmVzcG9uc2liaWxpdGllcz8uam9pbignXFxuJylcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPkFjdGl2aXRpZXM8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgYWRkaXRpb25hbC1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImN1c3RvbS10ZXh0YXJlYVwiIGZvcm1Db250cm9sTmFtZT1cImFjdGl2aXRpZXNfdGV4dFwiIHJvd3M9XCI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQWN0aXZpdGllc1wiIFt2YWx1ZV09XCJwbGFuRGF0YT8uYWN0aXZpdGllcz8uam9pbignXFxuJylcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPkNvbXBldGVuY3k8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVuaGFuY2VkLWNvbXBldGVuY3ktc2VjdGlvbiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RlcCAxOiBTZWxlY3QgQ29tcGV0ZW5jeSBUeXBlIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1zdGVwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzdGVwLWxhYmVsXCI+MS4gU2VsZWN0IENvcmUgQ29tcGV0ZW5jeSBUeXBlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LWRyb3Bkb3duLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwiY29tcGV0ZW5jeS1kcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJjb21wZXRlbmN5VHlwZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IENvbXBldGVuY3kgVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ29tcGV0ZW5jeVR5cGVDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJCZWhhdmlvcmFsXCI+QmVoYXZpb3JhbDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiRnVuY3Rpb25hbFwiPkZ1bmN0aW9uYWw8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIkRvbWFpblwiPkRvbWFpbjwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdGVwIDI6IFRoZW1lIFNlbGVjdGlvbiAoQmVoYXZpb3JhbC9GdW5jdGlvbmFsIGZyb20gSlNPTiwgRG9tYWluIG1hbnVhbCkgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LXN0ZXBcIiAqbmdJZj1cInNlbGVjdGVkQ29tcGV0ZW5jeVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN0ZXAtbGFiZWxcIj4yLiBTZWxlY3QvRW50ZXIgVGhlbWU8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvciBCZWhhdmlvcmFsIGFuZCBGdW5jdGlvbmFsOiBTZWFyY2hhYmxlIERyb3Bkb3duIGZyb20gSlNPTiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LWRyb3Bkb3duLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZENvbXBldGVuY3lUeXBlID09PSAnQmVoYXZpb3JhbCcgfHwgc2VsZWN0ZWRDb21wZXRlbmN5VHlwZSA9PT0gJ0Z1bmN0aW9uYWwnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJjb21wZXRlbmN5LWRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNvbXBldGVuY3lUaGVtZVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGFuZCBzZWxlY3QgdGhlbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblRoZW1lQ2hhbmdlKCRldmVudC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2VhcmNoIGlucHV0IGluc2lkZSBkcm9wZG93biAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VhcmNoLW9wdGlvblwiIGRpc2FibGVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwic2VhcmNoLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIlNlYXJjaCB0aGVtZXMuLi5cIiBmb3JtQ29udHJvbE5hbWU9XCJ0aGVtZVNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiZmlsdGVyVGhlbWVzKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRoZW1lIG9wdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdGhlbWUgb2YgZmlsdGVyZWRUaGVtZXNcIiBbdmFsdWVdPVwidGhlbWUubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dGhlbWUubmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTm8gcmVzdWx0cyBtZXNzYWdlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJmaWx0ZXJlZFRoZW1lcy5sZW5ndGggPT09IDAgJiYgdGhlbWVTZWFyY2hUZXh0XCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gdGhlbWVzIGZvdW5kIG1hdGNoaW5nIFwie3t0aGVtZVNlYXJjaFRleHR9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRm9yIERvbWFpbjogTWFudWFsIGlucHV0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hbnVhbC1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cInNlbGVjdGVkQ29tcGV0ZW5jeVR5cGUgPT09ICdEb21haW4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwibWFudWFsVGhlbWVJbnB1dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgVGhlbWUgbWFudWFsbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hbnVhbC1pbnB1dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdGVwIDM6IFN1Yi10aGVtZSBTZWxlY3Rpb24gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LXN0ZXBcIiAqbmdJZj1cInNlbGVjdGVkVGhlbWUgfHwgKHNlbGVjdGVkQ29tcGV0ZW5jeVR5cGUgPT09ICdEb21haW4nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3RlcC1sYWJlbFwiPjMuIFNlbGVjdC9FbnRlciBTdWItdGhlbWU8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvciBCZWhhdmlvcmFsIGFuZCBGdW5jdGlvbmFsOiBTZWFyY2hhYmxlIERyb3Bkb3duIGJhc2VkIG9uIHNlbGVjdGVkIHRoZW1lIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktZHJvcGRvd24tY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkQ29tcGV0ZW5jeVR5cGUgPT09ICdCZWhhdmlvcmFsJyB8fCBzZWxlY3RlZENvbXBldGVuY3lUeXBlID09PSAnRnVuY3Rpb25hbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cImNvbXBldGVuY3ktZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY29tcGV0ZW5jeVN1YlRoZW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGFuZCBzZWxlY3Qgc3ViLXRoZW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TdWJUaGVtZUNoYW5nZSgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlYXJjaCBpbnB1dCBpbnNpZGUgZHJvcGRvd24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlYXJjaC1vcHRpb25cIiBkaXNhYmxlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInNlYXJjaC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJTZWFyY2ggc3ViLXRoZW1lcy4uLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdWJUaGVtZVNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiZmlsdGVyU3ViVGhlbWVzKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFN1Yi10aGVtZSBvcHRpb25zIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHN1YlRoZW1lIG9mIGZpbHRlcmVkU3ViVGhlbWVzXCIgW3ZhbHVlXT1cInN1YlRoZW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdWJUaGVtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTm8gcmVzdWx0cyBtZXNzYWdlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJmaWx0ZXJlZFN1YlRoZW1lcy5sZW5ndGggPT09IDAgJiYgc3ViVGhlbWVTZWFyY2hUZXh0XCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gc3ViLXRoZW1lcyBmb3VuZCBtYXRjaGluZyBcInt7c3ViVGhlbWVTZWFyY2hUZXh0fX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvciBEb21haW46IE1hbnVhbCBpbnB1dCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYW51YWwtaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJzZWxlY3RlZENvbXBldGVuY3lUeXBlID09PSAnRG9tYWluJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIm1hbnVhbFN1YlRoZW1lSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIFN1Yi10aGVtZSBtYW51YWxseVwiIGNsYXNzPVwibWFudWFsLWlucHV0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFkZCBCdXR0b24gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtYnV0dG9uLXNlY3Rpb25cIiAqbmdJZj1cInNlbGVjdGVkQ29tcGV0ZW5jeVR5cGUgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIiFlZGl0RG9tYWluQ29tcGV0ZW5jeUZsYWdcIiBjbGFzcz1cImFkZC1jb21wZXRlbmN5LWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5BZGRDb21wZXRlbmN5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNhbkFkZENvbXBldGVuY3koKSA/ICdidG4tYWN0aXZlJyA6ICdidG4tZGlzYWJsZSdcIiAoY2xpY2spPVwiYWRkQ29tcGV0ZW5jeSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkIENvbXBldGVuY3lcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJlZGl0RG9tYWluQ29tcGV0ZW5jeUZsYWdcIiBjbGFzcz1cImFkZC1jb21wZXRlbmN5LWJ0biBidG4tYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlQ29tcGV0ZW5jeSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBkYXRlIENvbXBldGVuY3lcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJlZGl0RG9tYWluQ29tcGV0ZW5jeUZsYWdcIiBjbGFzcz1cImFkZC1jb21wZXRlbmN5LWJ0biBidG4tYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7XCIgKGNsaWNrKT1cImNhbmNlbFVwZGF0ZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1zdWItaGVhZGluZyBtdC0yXCIgKm5nSWY9XCJnZXRDb21wZXRlbmNpZXNCeVR5cGUoJ0JlaGF2aW9yYWwnKT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBCZWhhdmlvcmFsIENvbXBldGVuY2llc1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1ncmlkIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LWl0ZW0gYmVoYXZpb3VyYWwtcGlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbXAgb2YgZ2V0Q29tcGV0ZW5jaWVzQnlUeXBlKCdCZWhhdmlvcmFsJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBldGVuY3ktdGV4dC1iZWhhdmlvcmFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbXAudGhlbWUgfX0gLSB7eyBjb21wLnN1Yl90aGVtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGNsb3NlXCIgKGNsaWNrKT1cImRlbGV0ZUNvbXBldGVuY3koY29tcClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktc3ViLWhlYWRpbmcgbXQtMlwiICpuZ0lmPVwiZ2V0Q29tcGV0ZW5jaWVzQnlUeXBlKCdGdW5jdGlvbmFsJyk/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25hbCBDb21wZXRlbmNpZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktZ3JpZCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1pdGVtIGZ1bmN0aW9uYWwtcGlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbXAgb2YgZ2V0Q29tcGV0ZW5jaWVzQnlUeXBlKCdGdW5jdGlvbmFsJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBldGVuY3ktdGV4dC1mdW5jdGlvbmFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbXAudGhlbWUgfX0gLSB7eyBjb21wLnN1Yl90aGVtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGNsb3NlXCIgKGNsaWNrKT1cImRlbGV0ZUNvbXBldGVuY3koY29tcClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktc3ViLWhlYWRpbmcgbXQtMlwiPkRvbWFpbiBDb21wZXRlbmNpZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktZ3JpZCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1pdGVtIGRvbWFpbi1waWxsXCIgKm5nRm9yPVwibGV0IGNvbXAgb2YgZ2V0Q29tcGV0ZW5jaWVzQnlUeXBlKCdEb21haW4nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGV0ZW5jeS10ZXh0LWRvbWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21wLnRoZW1lIH19IC0ge3sgY29tcC5zdWJfdGhlbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBlZGl0XCIgKGNsaWNrKT1cImVkaXRDb21wZXRlbmN5KGNvbXApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBjbG9zZVwiIChjbGljayk9XCJkZWxldGVDb21wZXRlbmN5KGNvbXApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1hY3RpdmVcIiB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJDYW5jZWxcIiAoY2xpY2spPVwiY2FuY2VsRm9ybSgpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiU2F2ZVwiIChjbGljayk9XCJzYXZlUm9sZU1hcHBpbmcoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm92ZXJsYXktbG9hZGVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiNTBcIj48L21hdC1zcGlubmVyPlxuPC9kaXY+Il19